📄 ktentity.inc.svn-base
字号:
$ret = $this->_set($sElement, $sValue); if (PEAR::isError($ret)) { return $ret; } } return true; } function _set (&$element, &$params) { $this->$element = $params; return array(true, true); } function &_getElementFromMethod ($sElement) { // The element is probably lower-case, for various reasons. Get // the correct case from the aFieldToSelect dictionary's keys. // // If the element isn't in the case array, the method doesn't // exist. $sClassName = get_class($this); $aCache = KTUtil::arrayGet($GLOBALS['_LCASECACHE'], $sClassName); $sLowerElement = strtolower($sElement); if ($aCache) { $r = KTUtil::arrayGet($aCache['fieldnames'], $sLowerElement); if ($r) { return $r; } } $array = array_keys($this->_aFieldToSelect); if (!$aCache) { $case = array(); foreach($array as $k) { $case[strtolower($k)] = $k; } foreach($case as $k => $v) { $case[substr($k, 1)] = $v; } } else { $case = $aCache['fieldnames']; } //var_dump($case); if (!$aCache) { $aCache = array(); $aCache['fieldnames'] = $case; } $GLOBALS['_LCASECACHE'][$sClassName] =& $aCache; if (array_key_exists($sLowerElement, $case)) { return $case[$sLowerElement]; } return PEAR::raiseError(_kt("No such element")); } function _fieldValues () { $aRet = array(); foreach ($this->_aFieldToSelect as $k => $v) { if ($k === 'iId') { continue; } $aRet[$v] = $this->$k; } return $aRet; } function updateFromArray ($aOptions) { $ret = $this->load(); if (PEAR::isError($ret)) { return $ret; } $ret = $this->loadFromArray($aOptions); if (PEAR::isError($ret)) { return $ret; } $ret = $this->update(); if (PEAR::isError($ret)) { return $ret; } if ($ret === false) { return PEAR::raiseError(sprintf(_kt("update for class %s failed"), $sClassName)); } return true; } function _ktentityOptions() { return array( 'orderby' => 'id', ); }}class KTEntityUtil { function &getList2($sClassName, $aWhereClause = null, $aOptions = null) { $sTable = call_user_func(array($sClassName, "_table")); return KTEntityUtil::getList($sTable, $sClassName, $aWhereClause, $aOptions); } function &getList($sTable, $sClassName, $aWhereClause = null, $aOptions = null) { global $default; if (is_null($aOptions)) { $aOptions = array(); } $aBaseOpts = call_user_func(array($sClassName, "_ktentityOptions")); $aOptions = KTUtil::meldOptions($aBaseOpts, $aOptions); $bIDs = false; $bIDs = KTUtil::arrayGet($aOptions, "ids", false); $sIDField = 'id'; $cache = KTUtil::arrayGet($aOptions, 'cache', false); if (!is_array($aWhereClause)) { $aWhereClause = array($aWhereClause, array()); } if (!$cache) { // && EVIL_CACHE_GRIND) { $cache = 'auto'; } if (isset($GLOBALS['_STOPCACHING'][$sClassName])) { if ($GLOBALS['_STOPCACHING'][$sClassName] > 5) { $cache = false; } } if (isset($aOptions['orderby'])) { $sOrderBy = $aOptions['orderby']; if (!empty($aWhereClause[0])) { $aWhereClause[0] .= " ORDER BY " . $sOrderBy; } else { $aWhereClause[0] = "ORDER BY " . $sOrderBy; } } $sIDField = KTUtil::arrayGet($aOptions, "idfield", 'id'); $aWhereClause[2] = $sIDField; if (isset($aOptions['limit'])) { if (isset($aOptions['offset'])) { $iOffset = $aOptions['offset']; } else { $iOffset = 0; } $iLimit = $aOptions['limit']; if ($iOffset) { $aWhereClause[0] .= " LIMIT $iOffset, $iLimit"; } else { $aWhereClause[0] .= " LIMIT $iLimit"; } } $fullselect = KTUtil::arrayGet($aOptions, 'fullselect', false); if ($cache) { if ($cache === 'auto') { $vals = serialize($aWhereClause); } else if (is_array($aWhereClause)) { $vals = serialize($aWhereClause[1]); } else { $vals = serialize($aWhereClause); } if (KTLOG_CACHE) $default->log->debug(sprintf("Trying list cache for class %s, %s: %s", $sClassName, $cache, $vals)); $oCache =& KTCache::getSingleton(); $suffix = ''; if ($fullselect) { $suffix = '_fullselect'; } $group = sprintf("%s/%s%s", $sClassName, $cache, $suffix); list($bCached, $mCached) = $oCache->get($group, $vals); } else { $bCached = false; } if ($cache && !$bCached) { global $default; if (KTLOG_CACHE) $default->log->debug(sprintf("No list cache for class %s, %s: %s", $sClassName, $cache, $vals)); } if ($bCached && EVIL_CACHE_GRIND) { if (!empty($fullselect)) { $oObject = new $sClassName; $select = $oObject->_getSqlSelection(); $sQuery = "SELECT $select FROM " . $sTable;/*ok*/ } else { $sIDField = KTUtil::arrayGet($aOptions, "idfield", 'id'); $sQuery = "SELECT $sIDField FROM " . $sTable;/*ok*/ } $aParams = array(); if (!empty($aWhereClause[0])) { if (is_string($aWhereClause)) { if (substr($aWhereClause, 0, 5) != 'WHERE') { if (substr($aWhereClause, 0, 5) != 'ORDER') { $sQuery .= ' WHERE'; } } $sQuery .= ' ' . $aWhereClause; } else if (is_array($aWhereClause)) { if (substr($aWhereClause[0], 0, 5) != 'WHERE') { if (substr($aWhereClause[0], 0, 5) != 'ORDER') { $sQuery .= ' WHERE'; } } $sQuery .= ' ' . $aWhereClause[0]; $aParams = $aWhereClause[1]; } else { return new PEAR_Error('Weird WhereClause passed'); } } if (!empty($fullselect)) { $aIDs = DBUtil::getResultArray(array($sQuery, $aParams)); } else { $aIDs = DBUtil::getResultArrayKey(array($sQuery, $aParams), $sIDField); } // compare mcached == $aIds if ($aIDs != $mCached) { /* print "==================\n\n\n\n\n"; var_dump($aIDs); print "------\n"; var_dump($mCached); */ $oCache->alertFailure($group, array('Stored IDS != Cache IDS')); } } else if ($bCached) { if (KTLOG_CACHE) $default->log->debug(sprintf("Using object cache for class %s, %s: %s", $sClassName, $cache, $vals)); $aIDs = $mCached; /* */ } else { if (!empty($fullselect)) { $oObject = new $sClassName; $select = $oObject->_getSqlSelection(); $sQuery = "SELECT $select FROM " . $sTable;/*ok*/ } else { $sIDField = KTUtil::arrayGet($aOptions, "idfield", 'id'); $sQuery = "SELECT $sIDField FROM " . $sTable;/*ok*/ } $aParams = array(); if (!is_null($aWhereClause[0])) { if (is_string($aWhereClause)) { if (substr($aWhereClause, 0, 5) != 'WHERE') { if (substr($aWhereClause, 0, 5) != 'ORDER') { $sQuery .= ' WHERE'; } } $sQuery .= ' ' . $aWhereClause; } else if (is_array($aWhereClause)) { if (substr($aWhereClause[0], 0, 5) != 'WHERE') { if (substr($aWhereClause[0], 0, 5) != 'ORDER') { $sQuery .= ' WHERE'; } } $sQuery .= ' ' . $aWhereClause[0]; $aParams = $aWhereClause[1]; } else { return new PEAR_Error('Weird WhereClause passed'); } } if (!empty($fullselect)) { $aIDs = DBUtil::getResultArray(array($sQuery, $aParams)); } else { $aIDs = DBUtil::getResultArrayKey(array($sQuery, $aParams), $sIDField); } } if (PEAR::isError($aIDs)) { return $aIDs; } if ($cache && !$bCached) { if (KTLOG_CACHE) $default->log->debug(sprintf("Setting object cache for class %s, %s, %s", $sClassName, $cache, $vals)); $oCache->set($group, $vals, $aIDs); } if ($bIDs === true) { return $aIDs; } if (!empty($fullselect)) { $aRet =& KTEntityUtil::loadFromArrayMulti($sClassName, $aIDs); return $aRet; } $aRet = array(); foreach ($aIDs as $iId) { $aRet[] = call_user_func(array($sClassName, 'get'), $iId); } return $aRet; } function &createFromArray ($sClassName, $aOptions) { $oObject = new $sClassName; $ret = $oObject->loadFromArray($aOptions); if (PEAR::isError($ret)) { return $ret; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -