📄 criteria.inc
字号:
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 + -