public function Load($sName, $bNotTestCacheValidity = false) { if (isset(self::$aStore[$sName])) { $aData = self::$aStore[$sName]; if (is_array($aData) && array_key_exists('data', $aData)) { return F::Unserialize($aData['data'], false); } } return false; }
/** * Checks cache for current asset pack * If cache is present then returns one * * @return int|array */ protected function _checkAssets() { $xResult = 0; $sFile = $this->GetAssetsCacheName(); $sTmpFile = $sFile . '.tmp'; if (is_file($sTmpFile)) { // tmp file cannot live more than 1 minutes $nTime = filectime($sTmpFile); if (!$nTime) { $nTime = F::File_GetContents($sTmpFile); } if (time() < $nTime + self::TMP_TIME) { $xResult = 1; } } elseif (is_file($sFile)) { if ($xData = F::File_GetContents($sFile)) { $xResult = F::Unserialize($xData); } } return $xResult; }
protected function _checkLimits() { $iLimitQueries = intval(C::Get('module.search.limit.queries')); $iLimitPeriod = F::ToSeconds(C::Get('module.search.limit.period')); $iLimitInterval = F::ToSeconds(C::Get('module.search.limit.interval')); if (!F::GetRequest('q') || !$iLimitQueries || !$iLimitPeriod) { return true; } $sLastSearchQueries = E::ModuleSession()->Get('last_search_queries'); if (empty($sLastSearchQueries)) { $aLastSearchQueries = array(); } else { $aLastSearchQueries = F::Unserialize($sLastSearchQueries); } $iCount = 0; if (!empty($aLastSearchQueries)) { $iTimeLimit = time() - $iLimitPeriod; //echo date('H:i:s', time()), '--', date('H:i:s', $iTimeLimit), '<br>'; foreach ($aLastSearchQueries as $iIndex => $aQuery) { //echo $iIndex, ' - ', date('H:i:s', $aQuery['time']); if ($aQuery['time'] >= $iTimeLimit) { $iCount += 1; //echo ' * '; } //echo '<br>'; } $aLastQuery = end($aLastSearchQueries); } else { $aLastQuery = null; } if (count($aLastSearchQueries) > $iLimitQueries) { $aLastSearchQueries = array_slice($aLastSearchQueries, -$iLimitQueries); } $aLastSearchQueries[] = array('time' => time(), 'query' => F::GetRequest('q')); E::ModuleSession()->Set('last_search_queries', F::Serialize($aLastSearchQueries)); //die('iCount:' . $iCount); if ($iCount > $iLimitQueries) { E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('search_err_frequency', array('num' => $iLimitQueries, 'sec' => $iLimitPeriod))); return false; } if (!empty($aLastQuery['time']) && $iLimitInterval && $aLastQuery['time'] > time() - $iLimitInterval) { E::ModuleMessage()->AddErrorSingle(E::ModuleLang()->Get('search_err_interval', array('sec' => $iLimitInterval))); return false; } return true; }
/** * Читает из файлового кеша кастомную конфигурацию * * @param string $sKeyPrefix * * @return array */ protected static function _getCustomCfg($sKeyPrefix = null) { if (($sFile = self::_checkCustomCfg()) && ($sData = F::File_GetContents($sFile))) { $aConfig = F::Unserialize($sData); if (is_array($aConfig)) { return $aConfig; } } $aConfig = array(); return $aConfig; }
/** * Запускает весь процесс :) * */ public function Exec() { $this->ParseUrl(); $this->DefineActionClass(); // Для возможности ДО инициализации модулей определить какой action/event запрошен $this->oEngine = E::getInstance(); $this->oEngine->Init(); // Подгружаем предыдущий URL, если он был $sData = E::ModuleSession()->GetCookie(static::BACKWARD_COOKIE); if ($sData) { $aData = F::Unserialize($sData); if (is_array($aData)) { $this->aBackwardUrl = $aData; } } // И сохраняем текущий, если это не ajax-запрос if (!F::AjaxRequest()) { E::ModuleSession()->SetCookie(static::BACKWARD_COOKIE, F::Serialize($this->aCurrentUrl, true)); } $this->ExecAction(); $this->Shutdown(false); }
/** * @return array */ protected function _statLoad() { if (C::Get('module.search.limit.check_ip')) { if (E::ModuleCache()->CacheTypeAvailable('memory')) { $sCacheType = 'memory'; } else { $sCacheType = 'file'; } $sData = E::ModuleCache()->Get($this->_statKey(), $sCacheType . ','); } else { $sData = E::ModuleSession()->Get('last_search_queries'); } if (false === $sData) { $aLastSearchQueries = array(); } else { $aLastSearchQueries = F::Unserialize($sData, array()); } return $aLastSearchQueries; }
/** * Читает из файлового кеша кастомную конфигурацию * * @return array */ protected static function _getFileCfg() { if (($sFile = self::_checkFileCfg()) && ($sData = F::File_GetContents($sFile))) { $aConfig = F::Unserialize($sData); if (is_array($aConfig)) { if (isset($aConfig['_alto_hash_']) && $aConfig['_alto_hash_'] == self::_getHash()) { return $aConfig; } } } return array(); }