📄 search.inc.php.svn-base
字号:
foreach($rs as $folder) { $fobj = Folder::get($folder['id']); if (Permission::userHasFolderReadPermission($fobj)) { $folders[] = $folder; } } return $folders; } public static function getFields($fieldsetID) { if ($fieldsetID < 0) { $documentTypeID = sanitizeForSQL(-$fieldsetID); $sql = "SELECT df.id, df.name, df.data_type, df.has_lookup, df.has_lookuptree, df.description FROM document_type_fields_link dtfl INNER JOIN document_fields df on dtfl.field_id=df.id WHERE dtfl.document_type_id=$documentTypeID ORDER BY df.name"; } else { $fieldsetID = sanitizeForSQL($fieldsetID); $sql = "SELECT id, name, data_type, has_lookup, has_lookuptree, description FROM document_fields WHERE parent_fieldset=$fieldsetID ORDER BY name"; } $rs = DBUtil::getResultArray($sql); if (PEAR::isError($rs)) { return $rs; } if (count($rs) == 0) { return new PEAR_Error(_kt('Fieldset was not found')); } $result=array(); foreach($rs as $item) { $fieldid=$item['id']; $type='normal'; $options = array(); $haslookup =$item['has_lookup'] + 0 > 0; $hastree = ($item['has_lookuptree']+0 > 1); if ($haslookup || $hastree) { $type = 'lookup'; $sql = "select id, name from metadata_lookup where document_field_id=$fieldid"; $options = DBUtil::getResultArray($sql); } /*if ($hastree) { $type = 'lookup'; $sql = "select id, name, metadata_lookup_tree_parent as parent from metadata_lookup_tree where document_field_id=$fieldid"; $options = DBUtil::getResultArray($sql); }*/ if ($item['data_type'] == 'USERLIST') { $type = 'lookup'; $sql = "SELECT id, name from users WHERE disabled=0"; $options = DBUtil::getResultArray($sql); } $ritem = array( 'id'=>$fieldid, 'name'=>$item['name'], 'description'=>$item['description'], 'datatype'=>$item['data_type'], 'control'=>$type, 'options'=>$options ); $result[]= $ritem; } return $result; } public static function getFieldsets() { $sql = "SELECT id, name, description FROM fieldsets WHERE disabled=0 ORDER BY name"; $rs = DBUtil::getResultArray($sql); return $rs; } public static function getDocumentTypeFieldsets($documentTypeID) { $documentTypeID = sanitizeForSQL($documentTypeID); $sql = "SELECT fs.id, fs.name, fs.description FROM fieldsets fs LEFT JOIN document_type_fieldsets_link dtfl ON dtfl.fieldset_id=fs.id WHERE fs.disabled=0 AND (dtfl.document_type_id=$documentTypeID OR fs.is_generic=1)"; $rs = DBUtil::getResultArray($sql); return $rs; } public static function getDocumentTypes() { $sql = "SELECT id, name from document_types_lookup WHERE disabled=0 ORDER BY name"; $rs = DBUtil::getResultArray($sql); return $rs; } public static function getMimeTypes() { $sql = "SELECT DISTINCT mimetypes as name FROM mime_types ORDER BY mimetypes "; $rs = DBUtil::getResultArray($sql); return $rs; } public static function getWorkflows() { $sql = "SELECT id, human_name as name FROM workflows WHERE enabled=1 ORDER BY human_name"; $rs = DBUtil::getResultArray($sql); return $rs; } public static function getUsers() { $sql = "SELECT id, name FROM users WHERE disabled=0 ORDER BY name"; $rs = DBUtil::getResultArray($sql); return $rs; } public static function getWorkflowStates($workflowid) { $sql = "SELECT id,human_name as name FROM workflow_states WHERE workflow_id=$workflowid ORDER BY id"; $rs = DBUtil::getResultArray($sql); return $rs; }}function getExpressionLocalityString($expr_str, $locality, $length, $start_offset=10){ if ($locality - $start_offset < 0) { $locality = 0; } else { $locality -= $start_offset; } return substr($expr_str, $locality, $length);}/** * This parses a query. * * @param OpExpr $expr_str * @return array of MatchResult */function parseExpression($expr_str){ $parser = new SearchCommandParser(); $lexer = new SearchCommandLexer($expr_str);// $parser->PrintTrace(); $use_internal=false; try { while ($lexer->yylex()) { //print "\n" . $lexer->value . "\n"; $parser->doParse($lexer->token, $lexer->value); if (!$parser->isExprOk()) { $use_internal=true; $expr_str=getExpressionLocalityString($expr_str, $lexer->offset, 20); throw new Exception(sprintf(_kt("Parsing problem near '%s' in '%s' of expression."),$lexer->value,$expr_str)); } } // we are now done $parser->doParse(0, 0); if (!$parser->isExprOk()) { $use_internal=true; $expr_str=getExpressionLocalityString($expr_str, $lexer->offset, 20); throw new Exception(sprintf(_kt("There is a problem parsing the expression '%s'"),$expr_str)); } } catch(ResolutionException $e) { throw $e; } catch(Exception $e) { if ($use_internal) { throw $e; } $expr_str=getExpressionLocalityString($expr_str, $lexer->offset, 20); throw new Exception(sprintf(_kt("Parsing problem near '%s' of expression '%s'."), $lexer->value, $expr_str)); } return $parser->getExprResult();}function processSearchExpression($query){ try { $expr = parseExpression($query); $rs = $expr->evaluate(ExprContext::DOCUMENT); $rs = $rs['docs']; usort($rs, 'rank_compare'); $results = array(); foreach($rs as $hit) { $item = array( 'document_id' => (int) $hit->DocumentID, 'custom_document_no' => 'n/a', 'oem_document_no' => (string) $hit->OemDocumentNo, 'relevance' => (float) $hit->Rank, 'text' => (string) $noText?'':$hit->Text, 'title' => (string) $hit->Title, 'document_type'=> $hit->DocumentType, 'fullpath' => (string) $hit->FullPath, 'filename' => (string) $hit->Filename, 'filesize' => (int) $hit->Filesize, 'folder_id' => (int) $hit->FolderId, 'created_by' => (string) $hit->CreatedBy, 'created_date' => (string) $hit->DateCreated, 'modified_by' => (string) $hit->ModifiedBy, 'modified_date' => (string) $hit->DateModified, 'checked_out_by' => (string) $hit->CheckedOutUser, 'checked_out_date' => (string) $hit->DateCheckedOut, 'owned_by' => (string) $hit->Owner, 'version' => (float) $hit->Version, 'is_immutable'=> (bool) $hit->Immutable, 'permissions'=> $hit->Permissions, 'workflow' => (string) $hit->WorkflowOnly, 'workflow_state' => (string) $hit->WorkflowStateOnly, 'mime_type' => (string) $hit->MimeType, 'mime_icon_path' => (string) $hit->MimeIconPath, 'mime_display' => (string) $hit->MimeDisplay, 'storage_path' => (string) $hit->StoragePath, 'status' => (string) $hit->Status, 'is_available' => (bool) $hit->IsAvailable, ); $results[] = $item; } return $results; } catch(Exception $e) { return new PEAR_Error(_kt('Could not process query.') . $e->getMessage()); }}function resolveSearchShortcuts($result){ $oPermission =& KTPermission::getByName('ktcore.permissions.read'); $permId = $oPermission->getID(); $oUser = User::get($_SESSION['userID']); $aPermissionDescriptors = KTPermissionUtil::getPermissionDescriptorsForUser($oUser); $sPermissionDescriptors = empty($aPermissionDescriptors)? -1: implode(',', $aPermissionDescriptors); $documentIds = implode(',',array_keys($result['docs'])); $linkedDocuments = array(); if (!empty($documentIds)) { $sql = "SELECT d.id, d.linked_document_id from documents d "; $sql .= 'INNER JOIN permission_lookups AS PL ON d.permission_lookup_id = PL.id '. "\n"; $sql .= 'INNER JOIN permission_lookup_assignments AS PLA ON PL.id = PLA.permission_lookup_id AND PLA.permission_id = '.$permId. " \n"; $sql .= " WHERE d.linked_document_id in ($documentIds) AND PLA.permission_descriptor_id IN ($sPermissionDescriptors)"; $rs = DBUtil::getResultArray($sql); foreach($rs as $row) { $id = $row['id']; $linked_id = $row['linked_document_id']; $result['shortdocs'][$id] = new DocumentShortcutResultItem($id, $result['docs'][$linked_id]); } } $folderIds = implode(',',array_keys($result['folders'])); $linkedFolders = array(); if (!empty($folderIds)) { $sql = "SELECT f.id, f.linked_folder_id from folders f "; $sql .= 'INNER JOIN permission_lookups AS PL ON f.permission_lookup_id = PL.id '. "\n"; $sql .= 'INNER JOIN permission_lookup_assignments AS PLA ON PL.id = PLA.permission_lookup_id AND PLA.permission_id = '.$permId. " \n"; $sql .= " WHERE f.linked_folder_id in ($folderIds) AND PLA.permission_descriptor_id IN ($sPermissionDescriptors)"; $rs = DBUtil::getResultArray($sql); foreach($rs as $row) { $id = $row['id']; $linked_id = $row['linked_folder_id']; $result['shortfolders'][$id] = new FolderShortcutResultItem($id, $result['folders'][$linked_id]); } } return $result;}?>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -