function flushItemsByPlugin($pluginName) { global $databases; $xmls = new XMLStruct(); $manifest = @file_get_contents(ROOT . "/plugins/{$pluginName}/index.xml"); if ($manifest && $xmls->open($manifest)) { if ($xmls->doesExist('/plugin/binding/listener')) { //event listener가 있는 경우 foreach ($xmls->selectNodes('/plugin/binding/listener') as $listener) { if (!empty($listener['.attributes']['event']) && !empty($listener['.value'])) { // Event가 있는 경우 if (strpos(strtolower($listener['.attributes']['event']), 'view') !== false) { CacheControl::flushCategory(); } } } unset($listener); } if ($xmls->doesExist('/plugin/binding/tag')) { foreach ($xmls->selectNodes('/plugin/binding/tag') as $tag) { if (!empty($tag['.attributes']['name']) && !empty($tag['.attributes']['handler'])) { CacheControl::flushCategory(); CacheControl::flushTag(); } } unset($tag); } // if ($xmls->doesExist('/plugin/binding/sidebar')) { // TODO: 사이드바 캐시때 처리하도록 하지요. // } if ($xmls->doesExist('/plugin/binding/formatter[lang()]')) { CacheControl::flushCategory(); } } }
function deleteTagsWithEntryId($blogid, $entry) { global $database; $taglist = POD::queryColumn("SELECT tag FROM {$database['prefix']}TagRelations WHERE blogid = {$blogid} AND entry = {$entry}"); if (!is_null($taglist)) { $tagliststr = implode(',', $taglist); foreach ($taglist as $tagid) { CacheControl::flushTag($tagid); } POD::execute("DELETE FROM {$database['prefix']}TagRelations\n\t\t\t\tWHERE blogid = {$blogid} AND entry = {$entry}"); $nottargets = POD::queryColumn("SELECT DISTINCT tag FROM {$database['prefix']}TagRelations WHERE tag in ( {$tagliststr} )"); if (count($nottargets) > 0) { $nottargetstr = implode(', ', $nottargets); POD::execute("DELETE FROM {$database['prefix']}Tags WHERE id IN ( {$tagliststr} ) AND id NOT IN ( {$nottargetstr} )"); } else { POD::execute("DELETE FROM {$database['prefix']}Tags WHERE id IN ( {$tagliststr} )"); } } }
function useBlogSlogan($blogid, $useSloganOnPost, $useSloganOnCategory, $useSloganOnTag) { $ctx = Model_Context::getInstance(); $useSloganOnPost = $useSloganOnPost ? 1 : 0; $useSloganOnCategory = $useSloganOnCategory ? 1 : 0; $useSloganOnTag = $useSloganOnTag ? 1 : 0; if ($useSloganOnPost == $ctx->getProperty('blog.useSloganOnPost') && $useSloganOnCategory == $ctx->getProperty('blog.useSloganOnCategory') && $useSloganOnTag == $ctx->getProperty('blog.useSloganOnTag')) { return true; } /* if(Setting::setBlogSettingGlobal('useSloganOnPost',$useSlogan) === false || Setting::setBlogSettingGlobal('useSloganOnCategory',$useSlogan) === false || Setting::setBlogSettingGlobal('useSloganOnTag',$useSlogan) === false ) { return false; }*/ Setting::setBlogSettingGlobal('useSloganOnPost', $useSloganOnPost); Setting::setBlogSettingGlobal('useSloganOnCategory', $useSloganOnCategory); Setting::setBlogSettingGlobal('useSloganOnTag', $useSloganOnTag); $ctx->setProperty('blog.useSloganOnPost', $useSloganOnPost); $ctx->setProperty('blog.useSloganOnCategory', $useSloganOnCategory); $ctx->setProperty('blog.useSloganOnTag', $useSloganOnTag); requireModel('blog.feed'); CacheControl::flushCategory(); CacheControl::flushEntry(); CacheControl::flushTag(); fireEvent('ToggleBlogSlogan', null, $useSloganOnPost); clearFeed(); return true; }
function setSkinSetting($blogid, $setting) { global $skinSetting; // Legacy global support. TODO: DELETE THIS LINE AFTER CHECK EVERY REFERENCES IN WHOLE SOURCE importlib('blogskin'); $blogid = getBlogId(); if (strncmp($context->getProperty('skin.skin'), 'customize/', 10) == 0) { if (strcmp($context->getProperty('skin.skin'), "customize/{$blogid}") != 0) { return false; } } else { $skinSetting['skin'] = Path::getBaseName($context->getProperty('skin.skin')); // Legacy global support. TODO: DELETE THIS LINE AFTER CHECK EVERY REFERENCES IN WHOLE SOURCE $context->setProperty('skin.skin', $skinSetting['skin']); if ($context->getProperty('skin.skin') === '.' || $context->getProperty('skin.skin') === '..') { return _t('실패 했습니다'); } } $skinpath = getSkinPath($context->getProperty('skin.skin')); if (!is_dir($skinpath)) { return _t('실패 했습니다'); } foreach ($setting as $key => $value) { Setting::setSkinSetting($key, $value, $blogid); } Setting::setSkinSetting('skin', $context->getProperty('skin.skin'), $blogid); Setting::setBlogSetting('useMicroformat', $setting['useMicroformat'], true); Setting::setBlogSetting('useAjaxComment', $setting['useAjaxComment'], true); Setting::setBlogSetting('useFOAF', $setting['useFOAF'] == 1 ? 1 : 0, true); Setting::setBlogSetting('entriesOnPage', $setting['entriesOnPage'], true); Setting::setBlogSetting('entriesOnList', $setting['entriesOnList'], true); CacheControl::flushCategory(); CacheControl::flushTag(); CacheControl::flushSkin(); Setting::getSkinSettings($blogid, true); // refresh skin cache return true; }
function useBlogSlogan($blogid, $useSloganOnPost, $useSloganOnCategory, $useSloganOnTag) { global $blog; requireModel('blog.feed'); $useSloganOnPost = $useSloganOnPost ? 1 : 0; $useSloganOnCategory = $useSloganOnCategory ? 1 : 0; $useSloganOnTag = $useSloganOnTag ? 1 : 0; if ($useSloganOnPost == $blog['useSloganOnPost'] && $useSloganOnCategory == $blog['useSloganOnCategory'] && $useSloganOnTag == $blog['useSloganOnTag']) { return true; } /* if(Setting::setBlogSettingGlobal('useSloganOnPost',$useSlogan) === false || Setting::setBlogSettingGlobal('useSloganOnCategory',$useSlogan) === false || Setting::setBlogSettingGlobal('useSloganOnTag',$useSlogan) === false ) { return false; }*/ Setting::setBlogSettingGlobal('useSloganOnPost', $useSloganOnPost); Setting::setBlogSettingGlobal('useSloganOnCategory', $useSloganOnCategory); Setting::setBlogSettingGlobal('useSloganOnTag', $useSloganOnTag); $blog['useSloganOnPost'] = $useSloganOnPost; $blog['useSloganOnCategory'] = $useSloganOnCategory; $blog['useSloganOnTag'] = $useSloganOnTag; CacheControl::flushCategory(); CacheControl::flushEntry(); CacheControl::flushTag(); fireEvent('ToggleBlogSlogan', null, $blog['useSloganOnPost']); clearFeed(); return true; }
function setSkinSetting($blogid, $setting) { global $database; global $skinSetting; requireLibrary('blog.skin'); $blogid = getBlogId(); if (strncmp($skinSetting['skin'], 'customize/', 10) == 0) { if (strcmp($skinSetting['skin'], "customize/{$blogid}") != 0) { return false; } } else { $skinSetting['skin'] = Path::getBaseName($skinSetting['skin']); if ($skinSetting['skin'] === '.' || $skinSetting['skin'] === '..') { return _t('실패 했습니다'); } } $skinpath = ROOT . '/skin/blog/' . $skinSetting['skin']; if (!is_dir($skinpath)) { return _t('실패 했습니다'); } foreach ($setting as $key => $value) { Setting::setSkinSetting($key, $value, $blogid); } Setting::setSkinSetting('skin', $skinSetting['skin'], $blogid); Setting::setBlogSetting('useMicroformat', $setting['useMicroformat'], true); Setting::setBlogSetting('useAjaxComment', $setting['useAjaxComment'], true); Setting::setBlogSetting('useFOAF', $setting['useFOAF'] == 1 ? 1 : 0, true); Setting::setBlogSetting('entriesOnPage', $setting['entriesOnPage'], true); Setting::setBlogSetting('entriesOnList', $setting['entriesOnList'], true); CacheControl::flushCategory(); CacheControl::flushTag(); CacheControl::flushSkin(); Setting::getSkinSettings($blogid, true); // refresh skin cache return true; }