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

📄 criteria.inc

📁 PHP 知识管理系统(基于树结构的知识管理系统), 英文原版的PHP源码。
💻 INC
📖 第 1 页 / 共 3 页
字号:
    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 .= "&nbsp;&nbsp;<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 .= " &nbsp; Before date: <input type=\"text\" size=\"10\" name=\"" . $sEndWidget . "\" />";
        $sToRender .= "&nbsp;&nbsp;<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 "&nbsp;";
    }
    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 "&nbsp;";
        }
        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 + -