⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search.inc.php.svn-base

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 SVN-BASE
📖 第 1 页 / 共 2 页
字号:
		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 + -