📄 criteria.inc
字号:
function folderDisplay($oFolder) {
return $oFolder->getID();
}
}
class TitleCriterion extends BrowseCriterion {
var $bFolderCriterion = true;
var $bString = true;
var $sSearchTable = "DM";
var $bContains = true;
var $sDocumentField = 'name';
var $sSortField = 'name';
var $sNamespace = 'ktcore.criteria.title';
function TitleCriterion() {
$this->sDisplay = _kt('Document Title');
}
function documentDisplay ($oDocument) {
return $oDocument->getName();
}
function folderDisplay($oFolder) {
return $oFolder->getDescription();
}
function getFolderSortField() {
return 'description';
}
}
class CreatorCriterion extends BrowseCriterion {
var $sSearchTable = "D";
var $bFolderCriterion = true;
var $aLookup = array(
"table" => "users",
"field" => "name",
);
var $sDocumentField = 'creator_id';
var $sSortField = 'creator_id';
var $sNamespace = 'ktcore.criteria.creator';
function CreatorCriterion() {
$this->sDisplay = _kt('Creator');
}
function documentDisplay ($oDocument) {
$oCreator = User::get($oDocument->getCreatorID());
if ($oCreator) {
return $oCreator->getName();
}
return " ";
}
function folderDisplay($oFolder) {
return $this->documentDisplay($oFolder);
}
function parameterDisplay($aData) {
$sBase = $this->baseParameterDisplay();
$oUser =& User::get($aData[$this->getWidgetBase()]);
if(PEAR::isError($oUser)) {
return $sBase . 'unknown user';
}
return $sBase . $oUser->getName();
}
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) . "<select size=\"1\" name=\"" . $this->getWidgetBase() . "\">\n";
$aUsers = User::getList();/*ok*/
$sRet .= "<option value=\"-1\">None</option>\n";
foreach ($aUsers as $oUser) {
$sSelStr = '';
if ($preval == $oUser->getId()) { $sSelStr = ' selected="true"'; }
$sRet .= "<option value=\"" . $oUser->getID() . "\"" . $sSelStr . ">" . $oUser->getName() . "</option>\n";
}
$sRet .= "</select>\n";
return $sRet;
}
}
class DateCreatedCriterion extends BrowseCriterion {
var $sSearchTable = "D";
var $sDocumentField = 'created';
var $sSortField = 'created';
var $sNamespace = 'ktcore.criteria.datecreated';
function DateCreatedCriterion() {
$this->sDisplay = _kt('Date Created');
}
function documentDisplay ($oDocument) {
return $oDocument->getCreatedDateTime();
}
function parameterDisplay($aData) {
$sDisp = $this->baseParameterDisplay();
$sStart = KTUtil::arrayGet($aData, $this->getWidgetBase() . '_start', false);
$sEnd = KTUtil::arrayGet($aData, $this->getWidgetBase() . '_end', false);
if($sStart) {
$sDisp .= _kt('after ') .$sStart;
}
if($sStart && $sEnd) {
$sDisp .= _kt(' and ');
}
if($sEnd) {
$sDisp .= _kt('before ') .$sEnd;
}
return $sDisp;
}
function getName() {
return "created";
}
function searchWidget ($aRequest, $aPreValue = null) {
global $default;
// IMPORTANT: this requires the presence of kt3-calendar.js
$sStartWidget = $this->getWidgetBase() . "_start";
$sEndWidget = $this->getWidgetBase() . "_end";
/* // legacy code.
$sToRender = "After date: <input type=\"text\" size=\"10\" name=\"" . $sStartWidget . "\" />";
$sToRender .= " <a href=\"javascript:show_calendar('MainForm." . $sStartWidget . "',null,null,'YYYY-MM-DD', false);\" onmouseover=\"window.status='Date Picker';return true;\" onmouseout=\"window.status='';return true;\"><img src=\"$default->graphicsUrl/calendar/calendar.gif\" name=\"imgCalendar\" width=\"34\" height=\"21\" border=\"0\" alt=\"\"></a>";
$sToRender .= " Before date: <input type=\"text\" size=\"10\" name=\"" . $sEndWidget . "\" />";
$sToRender .= " <a href=\"javascript:show_calendar('MainForm." . $sEndWidget . "',null,null,'YYYY-MM-DD', false);\" onmouseover=\"window.status='Date Picker';return true;\" onmouseout=\"window.status='';return true;\"><img src=\"$default->graphicsUrl/calendar/calendar.gif\" name=\"imgCalendar\" width=\"34\" height=\"21\" border=\"0\" alt=\"\"></a>";
*/
$sToRender = $this->getNotWidget($aPreValue);
$sToRender .= _kt('after') . ': <span class="kt_calendar_holder"><strong class="kt_calendar_datetext">' . $aPreValue[$sStartWidget] . '</strong><input type="hidden" name="' . $sStartWidget . '" class="kt_calendar_value" value="' . $aPreValue[$sStartWidget] . '"/> <input type="button" onclick="init_kt_calendar(this);" value="select"></span> and/or ';
$sToRender .= _kt('before') . ': <span class="kt_calendar_holder"><strong class="kt_calendar_datetext">' . $aPreValue[$sEndWidget] . '</strong><input type="hidden" name="' . $sEndWidget . '" class="kt_calendar_value" value="' . $aPreValue[$sEndWidget] . '"/> <input type="button" onclick="init_kt_calendar(this);" value="select"></span><br />';
return $sToRender;
}
function searchSQL ($aRequest) {
$sStartWidget = $this->getWidgetBase() . "_start";
$sEndWidget = $this->getWidgetBase() . "_end";
// XXX: DateTimeFixup: Should be more intelligent with handling
// end date - should be end of day on that day.
if (!array_key_exists($this->getWidgetBase() . "_start", $aRequest)) {
$sStart = null;
} else {
$sStart = $aRequest[$this->getWidgetBase() . "_start"];
}
if (!array_key_exists($this->getWidgetBase() . "_end", $aRequest)) {
$sEnd = null;
} else {
$sEnd = $aRequest[$this->getWidgetBase() . "_end"];
}
$val = null;
if ($sStart && $sEnd) {
$val = array($this->getSearchTable() . "." . $this->getSearchField() . " BETWEEN ? AND ?", array($sStart, $sEnd));
} else if ($sStart) {
$val = array($this->getSearchTable() . "." . $this->getSearchField() . " > ?", array($sStart));
} else if ($sEnd) {
$val = array($this->getSearchTable() . "." . $this->getSearchField() . " < ?", array($sEnd));
} else {
return null;
}
// handle the boolean "not" stuff.
$want_invert = KTUtil::arrayGet($aRequest, $this->getWidgetBase() . '_not');
if (is_null($want_invert) || ($want_invert == "0")) {
return $val;
} else {
$val[0] = '(NOT (' . $val[0] . '))';
}
// finally
return $val;
}
}
class DocumentTypeCriterion extends BrowseCriterion {
var $sSearchTable = "DM";
var $aLookup = array(
"table" => "document_types_lookup",
"field" => "name"
);
var $sDocumentField = 'document_type_id';
var $sSortField = 'document_type_id';
var $sNamespace = 'ktcore.criteria.documenttype';
function DocumentTypeCriterion() {
$this->sDisplay = _kt('Document Type');
}
function documentDisplay ($oDocument) {
$oDocumentType = DocumentType::get($oDocument->getDocumentTypeID());
if ($oDocumentType) {
return $oDocumentType->getName();
}
return " ";
}
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";
$aUsers = DocumentType::getList();/*ok*/
$sRet .= "<option value=\"-1\">None</option>\n";
foreach ($aUsers as $oUser) {
$sSelStr = '';
if ($preval == $oUser->getId()) { $sSelStr = ' selected="true"'; }
$sRet .= "<option value=\"" . $oUser->getID() . "\"" . $sSelStr . ">" . $oUser->getName() . "</option>\n";
}
$sRet .= "</select>\n";
return $sRet;
}
}
class GenericMetadataCriterion extends BrowseCriterion {
var $aLookup = array(
"table" => "document_fields_link",
"field" => "value",
"joinColumn" => "document_id",
);
var $bString = true;
var $sDocumentField = null;
var $sSortField = null;
var $sNamespace = 'ktcore.criteria.generic';
function initialize($sDisplay, $sDocumentField, $sSortField, $iID, $sNamespace) {
$this->sDisplay = $sDisplay;
$this->sDocumentField = $sDocumentField;
$this->sSortField = $sSortField;
$this->iID = $iID;
$this->aLookup['whereClause'] = 'document_field_id = ' . $iID;
$this->oField = DocumentField::get($iID);
$this->sNamespace = $sNamespace;
$this->sSearchTable = "DFL" . $iID;
}
function getID() {
return $this->iID;
}
function documentDisplay ($oDocument) {
global $default;
$sQuery = "SELECT DFL.value as value " .
"FROM $default->document_fields_link_table AS DFL " .
"WHERE DFL.metadata_version_id = ? " .
"AND DFL.document_field_id = ?";
$aParams = array($oDocument->getMetadataVersionId(), $this->getID());
$res = DBUtil::getOneResultKey(array($sQuery, $aParams), 'value');
if (PEAR::isError($res)) {
// WARN: Add log warning
return " ";
}
return $res;
}
function getName() {
global $default;
$aQuery = array("SELECT name FROM $default->document_fields_table WHERE id = ?", array($this->getID())); /*ok*/
return "gmd_" . DBUtil::getOneResultKey($aQuery, 'name');
}
function getSearchField () {
return $this->aLookup['field'];
}
function searchWidget ($aRequest, $aPreValue = null) {
$preval = null;
if ($aPreValue != null) {
// !#@&)*( (*&!@# *(&@NOT (*&!@#
$k = array_keys($aPreValue);
$k = $this->getWidgetBase();
$preval = $aPreValue[$k];
}
// If there's no lookup, just use the standard text input
if ($this->oField->getHasLookup() == false) {
$this->bContains = true; // contains
return parent::searchWidget($aRequest, $aPreValue);
}
$this->bContains = false; // is
$sRet = $this->getNotWidget($aPreValue);
$sRet .= "<select size=\"1\" name=\"" . $this->getWidgetBase() . "\">\n";
$aSearch = array('document_field_id = ?', $this->getID());
$aMetaData = MetaData::getByDocumentField(DocumentField::get($this->getID()));/*ok*/
$sRet .= "<option value=\"-1\">None</option>\n";
foreach ($aMetaData as $oMetaData) {
$sSelStr = '';
if ($preval == $oMetaData->getName()) { $sSelStr = ' selected="true"'; }
$sRet .= "<option value=\"" . $oMetaData->getName() . "\" " . $sSelStr . ">" . $oMetaData->getName() . "</option>\n";
}
$sRet .= "</select>\n";
return $sRet;
}
function searchSQL ($aRequest) {
$p = parent::searchSQL($aRequest, false); // handle not ourselves.
$p[0] = join(' AND ', array($p[0], "$this->sSearchTable.document_field_id = ?"));
$p[1] = kt_array_merge($p[1], array($this->iID));
// 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 "LEFT JOIN $default->document_fields_link_table AS $this->sSearchTable ON $this->sSearchTable.metadata_version_id = D.metadata_version_id";
}
}
class GeneralMetadataCriterion extends BrowseCriterion {
var $aLookup = array(
"table" => "document_fields_link",
"field" => "value",
"joinColumn" => "document_id",
);
var $bString = true;
var $sDocumentField = 'value';
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -