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

📄 criteria.inc

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 INC
📖 第 1 页 / 共 3 页
字号:
    var $sSortField = null;
    var $bContains = true;
    var $sNamespace = 'ktcore.criteria.generalmetadata';
    var $sSearchTable = "DFL" ;
 	var $bHandleNot = false;
    function GeneralMetadataCriterion()
    {
    	$this->sDisplay = _kt('General Metadata');
    }

    function documentDisplay ($oDocument) {

        return 'General Metadata';
    }


    function getSearchField () {
        return $this->aLookup['field'];
    }


    function searchSQL ($aRequest) {
        $val = array('('.$this->getSearchTable() . "." .  $this->getSearchField() . " LIKE '%!%' OR DM.name LIKE '%!%'  )",
        array(DBUtil::escapeSimple($aRequest[$this->getWidgetBase()]),DBUtil::escapeSimple($aRequest[$this->getWidgetBase()])));

        return $val;
    }

    function searchJoinSQL () {
        global $default;
        return "LEFT JOIN $default->document_fields_link_table AS $this->sSearchTable ON $this->sSearchTable.metadata_version_id = D.metadata_version_id";
    }
}

class DateModifiedCriterion extends DateCreatedCriterion {
    var $sDocumentField = 'modified';
    var $sSortField = 'modified';
    var $sNamespace = 'ktcore.criteria.datemodified';

    function DateModifiedCriterion() {
	$this->sDisplay = _kt('Date Modified');
    }

    function getName() {
	return 'datemodified';
    }

    function documentDisplay ($oDocument) {
        return $oDocument->getLastModifiedDate();
    }
}

class SizeCriterion extends BrowseCriterion {
    var $sSearchTable = "DC";
    var $sDocumentField = 'size';
    var $sSortField = 'size';
    var $sNamespace = 'ktcore.criteria.size';

    var $aTypes = array('B'=>'Bytes',
			'KB'=>'Kilobytes',
			'M'=>'Megabytes');

    var $aTypeAssocs = array('B' => 1, 'KB' => 1024, 'M' => 1048576);

    var $aCmps = array();

    var $aCmpAssocs = array();

    function SizeCriterion() {
		$this->sDisplay = _kt('File Size');

		$this->aCmps = array('LT'=>_kt('Less than'),
		       'GT'=>_kt('Greater than'),
		       'EQ'=>_kt('Equal to'),
		       'NEQ'=>_kt('Not equal to'));

		$this->aCmpAssocs = array('LT' => '<', 'GT' => '>', 'EQ' => '=', 'NEQ' => '!=');

    }

    function documentDisplay ($oDocument) {
        return $oDocument->getFileSize();
    }

    function searchDisplay($aRequest) {
        return "";
    }

    function parameterDisplay($aData) {
	$sBase = $this->getWidgetBase();
	return sprintf("%s %s %s %s", $this->baseParameterDisplay(), $this->aCmps[$aData[$sBase.'_not']], htmlentities($aData[$sBase.'_num'],ENT_QUOTES,'UTF-8'), $this->aTypes[$aData[$sBase.'_type']]);
    }

    function searchWidget ($aRequest, $aPreValue = null) {
	$sBase = $this->getWidgetBase();
	$sCmpWidget = $sBase . '_not';
        $sNumWidget = $sBase . '_num';
        $sTypeWidget = $sBase . '_type';

	// build gt/lt/eq/neq widget
	$sCmpSelect = '<select name="'.$sCmpWidget.'">';
	$sCmpSelect .= KTUtil::buildSelectOptions($this->aCmps, KTUtil::arrayGet($aPreValue, $sCmpWidget, 'LT'));
	$sCmpSelect .= '</select>';

	// build number
	$sNumInput = sprintf('<input type="text" name="%s" value="%s"/>', $sNumWidget, KTUtil::arrayGet($aPreValue, $sNumWidget, ''));


	// build type selection widget
	$sTypeSelect = '<select name="'.$sTypeWidget.'">';
	$sTypeSelect .= KTUtil::buildSelectOptions($this->aTypes, KTUtil::arrayGet($aPreValue, $sTypeWidget, 'M'));
	$sTypeWidget .= '</select>';

	$sToRender = sprintf("%s %s %s", $sCmpSelect, $sNumInput, $sTypeSelect);
        return $sToRender;
    }

    function searchSQL ($aRequest) {
	$sCmp = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_not');
	$sNum = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_num');
	$sType = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_type');

	if(!is_numeric($sNum)) {
	    return null;
	}

	$sQry = sprintf("%s.%s %s ?", $this->getSearchTable(), $this->getSearchField(), $this->aCmpAssocs[$sCmp]);
	$val = array($sQry, (int)$sNum * $this->aTypeAssocs[$sType]);

        return $val;
    }

}

class WorkflowStateCriterion extends BrowseCriterion {
    var $sSearchTable = "DM";
    var $sDocumentField = 'state';
    var $sSortField = 'state';
    var $sNamespace = 'ktcore.criteria.workflowstate';

    function WorkflowStateCriterion() {
	$this->sDisplay = _kt('Workflow State');
    }

    function documentDisplay ($oDocument) {
        $oState =& KTWorkflowState::getByDocument($oDocument);
        if ($oState) {
            $oWorkflow = KTWorkflow::get($oState->getWorkflowId());
            return $oWorkflow->getName() . " - " . $oState->getName();
        }
        return "Not in workflow";
    }

    function parameterDisplay($aData) {
	$sId = $aData[$this->getWidgetBase()];

	if($sId == '-1') {
	    $sState = _kt('none');
	} else {
	    $oState =& KTWorkflowState::get((int)$sId);
	    if(!PEAR::isError($oState)) {
		$sState = $oState->getName();
	    } else {
		$sState = _kt('unknown state');
	    }
	}
	return $this->baseParameterDisplay() . $sState;
    }

    function getName() {
        return "state";
    }

    function searchSQL ($aRequest) {
        $p = array();
        $p[0] = "DM.workflow_state_id = ?";
        $p[1] = $aRequest[$this->getWidgetBase()];

        // handle the boolean "not" stuff.
        $want_invert = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_not');
        if (is_null($want_invert) || ($want_invert == "0")) {
            return $p;
        } else {
            $p[0] = '(NOT (' . $p[0] . '))';
        }
        return $p;
    }

    function searchWidget ($aRequest, $aPreValue = null) {
        $preval = null;
        if ($aPreValue != null) {
            // !#@&)*( (*&!@# *(&@NOT (*&!@#
            $k = array_keys($aPreValue);
            $k = $this->getWidgetBase();
            $preval = $aPreValue[$k];
        }
        $sRet = $this->getNotWidget($aPreValue);
        $sRet .= "<select size=\"1\" name=\"" . $this->getWidgetBase() . "\">\n";
        $aStates = KTWorkflowState::getList();
        $sRet .= "<option value=\"-1\">None</option>\n";
        foreach ($aStates as $oState) {
            $oWorkflow =& KTWorkflow::get($oState->getWorkflowId());
            $sSelStr = '';
            if ($preval == $oState->getId()) { $sSelStr = ' selected="true"'; }
            $sRet .= "<option value=\"" . $oState->getId() . "\"" . $sSelStr . ">" . $oWorkflow->getName() . " - " . $oState->getName() . "</option>\n";
        }
        $sRet .= "</select>\n";
        return $sRet;
    }
}

class TagCloudCriterion extends BrowseCriterion {
    var $bString = false;
	var $bContains = false;
    var $bHandleNot = false;
    var $sDocumentField = 'tag';// this is linked to the field
    var $sSortField = 'tag';
    var $sNamespace = 'ktcore.criteria.tagcloud';
    var $sSearchTable = "TWS" ;

    function TagCloudCriterion() {
	$this->sDisplay = _kt('Tag Cloud');
    }

    function documentDisplay ($oDocument) {
        return "Tag Cloud";
    }
    function getName() {
        return "tagcloud";
    }

    function searchSQL ($aRequest) {
         $p = parent::searchSQL($aRequest, false); // handle not ourselves.

        // handle the boolean "not" stuff.
        $want_invert = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_not');
        if (is_null($want_invert) || ($want_invert == "0")) {
            return $p;
        } else {
            $p[0] = '(NOT (' . $p[0] . '))';
        }

        return $p;
    }

    function searchJoinSQL () {
        global $default;
        return "INNER JOIN document_tags AS DTS ON DTS.document_id = D.id
        		INNER JOIN tag_words AS TWS ON TWS.id = DTS.tag_id";
    }
}

class DateCreatedDeltaCriterion extends DateCreatedCriterion {
    var $sDocumentField = 'created';
    var $sSortField = 'created';
	var $aTypes = array();
    var $sNamespace = 'ktcore.criteria.datecreateddelta';

    function DateCreatedDeltaCriterion() {
		$this->sDisplay = _kt('Date Created Delta');

		$this->aTypes = array('MINUTE'=>_kt('Minutes'),
			'HOUR'=>_kt('Hours'),
			'DAY'=>_kt('Days'),
			'MONTH'=>_kt('Months'),
			'YEAR'=>_kt('Years')
			);
    }

    function parameterDisplay($aData) {
	$sNum = KTUtil::arrayGet($aData, $this->getWidgetBase() . '_num');
	$sType = KTUtil::arrayGet($aData, $this->getWidgetBase() . '_type');
	return sprintf('%s %s %s', $this->baseParameterDisplay(), $sNum, $this->aTypes[$sType]);
    }

    function searchWidget ($aRequest, $aPreValue = null) {
        $sNumWidget = $this->getWidgetBase() . '_num';
        $sTypeWidget = $this->getWidgetBase() . '_type';

	// build type selection widget
	$sSelect = '<select name="'.$sTypeWidget.'">';
	foreach($this->aTypes as $k=>$v) {
	    $sSelect .= '<option value="'.$k.'"';
	    $t = KTUtil::arrayGet($aPreValue, $sTypeWidget, 'DAY');
	    if($k==$t) $sSelect .= ' selected="selected"';
	    $sSelect .= '>'.$v.'</option>';
	}
	$sSelect .= '</select>';

        $sToRender = $this->getNotWidget($aPreValue);

	$sToRender .= '<input name="'.$sNumWidget.'" value="'.$aPreValue[$sNumWidget].'"/>'.$sSelect._kt(' ago');
        return $sToRender;
    }

    function searchSQL ($aRequest) {
	$sNum = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_num');
	$sType = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_type');

	$val = array($this->getSearchTable() . "." . $this->getSearchField() . " > SUBDATE(NOW(), INTERVAL ? {$sType})", array($sNum));

        $want_invert = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_not');
        if (is_null($want_invert) || ($want_invert == "0")) {
            return $val;
        } else {
            $val[0] = '(NOT (' . $val[0] . '))';
        }
        return $val;
    }
}


class DateModifiedDeltaCriterion extends DateCreatedDeltaCriterion {
    var $sDocumentField = 'modified';
    var $sSortField = 'modified';
    var $sNamespace = 'ktcore.criteria.datemodifieddelta';

    function DateModifiedDeltaCriterion() {
	$this->sDisplay = _kt('Date Modified Delta');
    }

    function documentDisplay ($oDocument) {
        return $oDocument->getLastModifiedDate();
    }
    function getName() {
        return "datemodified";
    }
}






?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -