本文整理匯總了PHP中E::ModuleCache方法的典型用法代碼示例。如果您正苦於以下問題:PHP E::ModuleCache方法的具體用法?PHP E::ModuleCache怎麽用?PHP E::ModuleCache使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類E
的用法示例。
在下文中一共展示了E::ModuleCache方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。
示例1: getPosts
/**
* @param int $iBlogId
* @param int $iPageNum
* @param int $iPageSize
*
* @return array
*/
public function getPosts($iBlogId, $iPageNum, $iPageSize)
{
$sCacheKey = 'api_blog_' . $iBlogId;
$oBlog = E::ModuleCache()->GetTmp($sCacheKey);
if (!$oBlog) {
$oBlog = E::ModuleBlog()->GetBlogById($iBlogId);
}
$oBlogType = $oBlog->GetBlogType();
if ($oBlogType) {
$bCloseBlog = !$oBlog->CanReadBy(E::User());
} else {
// if blog type not defined then it' open blog
$bCloseBlog = false;
}
if ($bCloseBlog) {
return array();
}
$aTopics = E::ModuleTopic()->GetTopicsByBlog($oBlog, $iPageNum, $iPageSize, 'newall', null);
$aResult = array('total' => $aTopics['count'], 'list' => array());
/** @var PluginAltoApi_ModuleApiPosts_EntityPost $oTopic */
foreach ($aTopics['collection'] as $oTopic) {
$aResult['list'][] = $oTopic->getApiData();
}
return $aResult;
}
示例2: getTopicsForSitemap
/**
* Список опубликованых топиков в открытых блогах (с кешированием)
*
* @param int $iPage
*
* @return array
*/
public function getTopicsForSitemap($iPage = 0)
{
$sCacheKey = "sitemap_topics_{$iPage}_" . C::Get('plugin.sitemap.items_per_page');
if (false === ($aData = E::ModuleCache()->Get($sCacheKey))) {
$aFilter = $this->GetNamedFilter('sitemap');
$aTopics = E::ModuleTopic()->GetTopicsByFilter($aFilter, $iPage, C::Get('plugin.sitemap.items_per_page'), array('blog' => array('owner' => array())));
$aData = array();
$iIndex = 0;
$aPriority = F::Array_Str2Array(C::Get('plugin.sitemap.type.topics.priority'));
$nPriority = sizeof($aPriority) ? reset($aPriority) : null;
$aChangeFreq = F::Array_Str2Array(C::Get('plugin.sitemap.type.topics.changefreq'));
$sChangeFreq = sizeof($aChangeFreq) ? reset($aChangeFreq) : null;
/** @var ModuleTopic_EntityTopic $oTopic */
foreach ($aTopics['collection'] as $oTopic) {
if ($aPriority) {
if (isset($aPriority[$iIndex])) {
$nPriority = $aPriority[$iIndex];
}
}
if ($aChangeFreq) {
if (isset($aChangeFreq[$iIndex])) {
$sChangeFreq = $aChangeFreq[$iIndex];
}
}
$aData[] = E::ModuleSitemap()->GetDataForSitemapRow($oTopic->getLink(), $oTopic->getDateLastMod(), $sChangeFreq, $nPriority);
$iIndex += 1;
}
// тег 'blog_update' т.к. при редактировании блога его тип может измениться
// с открытого на закрытый или наоборот
E::ModuleCache()->Set($aData, $sCacheKey, array('topic_new', 'topic_update', 'blog_update'), C::Get('plugin.sitemap.type.topics.cache_lifetime'));
}
return $aData;
}
示例3: getComments
public function getComments($iTopicId, $iPageNum, $iPageSize)
{
$sCacheKey = 'api_topic_' . $iTopicId;
$oTopic = E::ModuleCache()->GetTmp($sCacheKey);
if (!$oTopic) {
$oTopic = E::ModuleTopic()->GetTopicById($iTopicId);
}
if (!$oTopic || !($oBlog = $oTopic->getBlog())) {
return array();
}
$oBlogType = $oBlog->GetBlogType();
if ($oBlogType) {
$bCloseBlog = !$oBlog->CanReadBy(E::User());
} else {
// if blog type not defined then it' open blog
$bCloseBlog = false;
}
if ($bCloseBlog) {
return array();
}
$aComments = E::ModuleComment()->GetCommentsByTargetId($oTopic, 'topic', $iPageNum, $iPageSize);
$aResult = array('total' => $oTopic->getCountComment(), 'list' => array());
foreach ($aComments['comments'] as $oComment) {
$aResult['list'][] = $oComment->getApiData();
}
return $aResult;
}
示例4: Init
public static function Init($sFuncStats)
{
if (!self::IsAvailable()) {
return false;
}
$oCache = new Zend_Cache_Backend_File(array('cache_dir' => C::Get('sys.cache.dir'), 'file_name_prefix' => E::ModuleCache()->GetCachePrefix(), 'read_control_type' => 'crc32', 'hashed_directory_level' => C::Get('sys.cache.directory_level'), 'read_control' => true, 'file_locking' => true));
return new self($oCache, $sFuncStats);
}
示例5: GetBlogsIdByRegexp
/**
* Получает список блогов по регулярному выражению (поиск)
*
* @param $sRegexp
* @param $iPage
* @param $iPerPage
* @param array $aParams
*
* @return array
*/
public function GetBlogsIdByRegexp($sRegexp, $iPage, $iPerPage, $aParams = array())
{
$s = md5(serialize($sRegexp) . serialize($aParams));
$sCacheKey = 'search_blogs_' . $s . '_' . $iPage . '_' . $iPerPage;
if (false === ($data = E::ModuleCache()->Get($sCacheKey))) {
$data = array('collection' => $this->oMapper->GetBlogsIdByRegexp($sRegexp, $iCount, $iPage, $iPerPage, $aParams), 'count' => $iCount);
E::ModuleCache()->Set($data, $sCacheKey, array('blog_update', 'blog_new'), 'PT1H');
}
return $data;
}
示例6: GetBlogsForSitemap
/**
* Список коллективных блогов (с кешированием)
*
* @param integer $iPage
*
* @return array
*/
public function GetBlogsForSitemap($iPage = 1)
{
$sCacheKey = "sitemap_blogs_{$iPage}_" . C::Get('plugin.sitemap.items_per_page');
if (false === ($aData = E::ModuleCache()->Get($sCacheKey))) {
$aFilter = array('include_type' => $this->GetOpenBlogTypes());
$aBlogs = E::ModuleBlog()->GetBlogsByFilter($aFilter, $iPage, C::Get('plugin.sitemap.items_per_page'), array('owner' => array()));
$aData = array();
/** @var ModuleBlog_EntityBlog $oBlog */
foreach ($aBlogs['collection'] as $oBlog) {
// TODO временем последнего изменения блога должно быть время его обновления (публикация последнего топика),
$aData[] = E::ModuleSitemap()->GetDataForSitemapRow($oBlog->getLink(), null, C::Get('plugin.sitemap.type.blogs.changefreq'), C::Get('plugin.sitemap.type.blogs.priority'));
// @todo страницы блога разбиты на подстраницы. значит нужно генерировать
// ссылки на каждую из подстраниц
// т.е. тянуть количество топиков блога
}
E::ModuleCache()->Set($aData, $sCacheKey, array('blog_new'), C::Get('plugin.sitemap.type.blogs.cache_lifetime'));
}
return $aData;
}
示例7: getInfo
/**
* @param int|ModuleComment_EntityComment $xComment
*
* @return array
*/
public function getInfo($xComment)
{
/** @var ModuleComment_EntityComment $oComment */
if (!is_object($xComment)) {
$iCommentId = intval($xComment);
$sCacheKey = 'api_blog_' . $iCommentId;
$oComment = E::ModuleCache()->GetTmp($sCacheKey);
if (!$oComment) {
$oComment = E::ModuleComment()->GetCommentById($iCommentId);
}
} else {
$oComment = $xComment;
$sCacheKey = 'api_blog_' . $oComment->getid();
}
if (!$oComment) {
return array();
}
E::ModuleCache()->SetTmp($oComment, $sCacheKey);
return $oComment->getApiData();
}
示例8: getUsersForSitemap
/**
* Список пользователей (с кешированием)
*
* @param integer $iPage
*
* @return array
*/
public function getUsersForSitemap($iPage)
{
$iPerPage = C::Get('plugin.sitemap.users_per_page');
$sCacheKey = "sitemap_users_{$iPage}_{$iPerPage}";
if (false === ($aData = E::ModuleCache()->Get($sCacheKey))) {
$aFilter = array('activate' => 1);
$aUsers = E::ModuleUser()->GetUsersByFilter($aFilter, array(), $iPage, $iPerPage);
$aData = array();
/** @var ModuleUser_EntityUser $oUser */
foreach ($aUsers['collection'] as $oUser) {
// профиль пользователя
$aData[] = E::ModuleSitemap()->GetDataForSitemapRow($oUser->getProfileUrl(), $oUser->getDateLastMod(), C::Get('plugin.sitemap.type.users.profile.changefreq'), C::Get('plugin.sitemap.type.users.profile.priority'));
// публикации пользователя
$aData[] = E::ModuleSitemap()->GetDataForSitemapRow($oUser->getUserTopicsLink(), null, C::Get('plugin.sitemap.type.users.my.changefreq'), C::Get('plugin.sitemap.type.users.my.priority'));
// комментарии пользователя
$aData[] = E::ModuleSitemap()->GetDataForSitemapRow($oUser->getUserCommentsLink(), $oUser->getDateCommentLast(), C::Get('plugin.sitemap.type.users.comments.changefreq'), C::Get('plugin.sitemap.type.users.comments.priority'));
E::ModuleCache()->Set($aData, $sCacheKey, array('user_new', 'user_update'), C::Get('plugin.sitemap.type.users.cache_lifetime'));
}
}
return $aData;
}
示例9: CountMessages
/**
* Возвращает количество сообщений для пользователя
*
* @param bool $sTemplate
* @return int|mixed|string
*/
public function CountMessages($sTemplate = false)
{
if (!E::IsUser()) {
return '';
}
$sKeyString = 'menu_count_messages_' . E::UserId() . '_' . (string) $sTemplate;
if (FALSE === ($sData = E::ModuleCache()->GetTmp($sKeyString))) {
$iValue = (int) $this->CountTrack() + (int) $this->NewTalk();
if ($sTemplate && $iValue) {
$sData = str_replace('{{count_messages}}', $iValue, $sTemplate);
} else {
$sData = $iValue ? $iValue : '';
}
E::ModuleCache()->SetTmp($sData, $sKeyString);
}
return $sData;
}
示例10: _setCache
/**
* Save sitemap conten in cache
*
* @param $sType
* @param $sContent
* @param $sPeriod
*/
protected function _setCache($sType, $sContent, $sPeriod)
{
E::ModuleCache()->Set($sContent, 'plugin.sitemap.' . $sType, array(), $sPeriod, ',file');
}
示例11: clearSandboxCache
public function clearSandboxCache()
{
E::ModuleCache()->CleanByTags(array("comment_online_update_sandbox"));
}
示例12: UpdateTopic
/**
* @param ModuleTopic_EntityTopic $oTopic
*/
public function UpdateTopic($oTopic)
{
$bResult = parent::UpdateTopic($oTopic);
E::ModuleCache()->CleanByTags(array('comment_online_update_sandbox', 'comment_online_update_topic'));
return $bResult;
}
示例13: InitLang
/**
* Инициализирует языковой файл
*
*/
protected function InitLang($sLang = null)
{
if (!$sLang) {
$sLang = $this->sCurrentLang;
}
UserLocale::setLocale(Config::Get('lang.current'), array('locale' => Config::get('i18n.locale'), 'timezone' => Config::get('i18n.timezone')));
if (!is_array($this->aLangMsg)) {
$this->aLangMsg = array();
}
$this->aLangMsg[$sLang] = array();
// * Если используется кеширование через memcaсhed, то сохраняем данные языкового файла в кеш
if (Config::Get('sys.cache.type') == 'memory' && Config::Get('sys.cache.use')) {
$sCacheKey = 'lang_' . $sLang . '_' . Config::Get('view.skin');
if (false === ($this->aLangMsg[$sLang] = E::ModuleCache()->Get($sCacheKey))) {
// if false then empty array
$this->aLangMsg[$sLang] = array();
$this->LoadLangFiles($this->sDefaultLang, $sLang);
if ($sLang != $this->sDefaultLang) {
$this->LoadLangFiles($sLang, $sLang);
}
E::ModuleCache()->Set($this->aLangMsg[$sLang], $sCacheKey, array(), 60 * 60);
}
} else {
$this->LoadLangFiles($this->sDefaultLang, $sLang);
if ($sLang != $this->sDefaultLang) {
$this->LoadLangFiles($sLang, $sLang);
}
}
if ($sLang != Config::Get('lang.current')) {
//Config::Set('lang.current', $sLang);
}
$this->LoadLangJs();
}
示例14: increaseCountCommentNew
/**
* Увеличивает число новых комментов у юзеров
*
* @param int $nTalkId ID разговора
* @param array $aExcludeId Список ID пользователей для исключения
*
* @return int
*/
public function increaseCountCommentNew($nTalkId, $aExcludeId = null)
{
$xResult = $this->oMapper->increaseCountCommentNew($nTalkId, $aExcludeId);
E::ModuleCache()->Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array("update_talk_user_{$nTalkId}"));
E::ModuleCache()->Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG, array("update_talk_user"));
return $xResult;
}
示例15: GetUserVoteStats
/**
* Получить статистику по юзерам
* cnt_topics_p / cnt_topics_m - Количество голосований за топик +/-
* sum_topics_p / sum_topics_m - Количество голосований за топик +/-
* cnt_comments_p / cnt_comments_m - Количество голосований за комментарий +/-
* sum_comments_p / sum_comments_m - Количество голосований за комментарий +/-
* cnt_user_p / cnt_user_m - Количество голосований за пользователя +/-
* sum_user_p / sum_user_m - Количество голосований за пользователя +/-
*
* @param int $iUserId ID пользователя
*
* @return array
*/
public function GetUserVoteStats($iUserId)
{
$sCacheKey = 'user_vote_stats_' . $iUserId;
if (false === ($aResult = E::ModuleCache()->Get($sCacheKey))) {
$aResult = $this->oMapper->GetUserVoteStats($iUserId);
E::ModuleCache()->Set($aResult, $sCacheKey, array("vote_update_topic_{$iUserId}", "vote_update_comment_{$iUserId}", "vote_update_user_{$iUserId}"));
}
return $aResult;
}