/** * Check if a row of today's counter status exists * * @param integer $site_srl Site_srl * @return bool */ function isInsertedTodayStatus($site_srl = 0) { $args = new stdClass(); $args->regdate = date('Ymd'); $cache_key = 'counter:insertedTodayStatus:' . $site_srl . '_' . $args->regdate; $insertedTodayStatus = Rhymix\Framework\Cache::get($cache_key); if (!$insertedTodayStatus) { if ($site_srl) { $args->site_srl = $site_srl; $output = executeQuery('counter.getSiteTodayStatus', $args); } else { $output = executeQuery('counter.getTodayStatus', $args); } $insertedTodayStatus = !!$output->data->count; if ($insertedTodayStatus) { Rhymix\Framework\Cache::set($cache_key, true, 0, true); $_old_date = date('Ymd', strtotime('-1 day')); Rhymix\Framework\Cache::delete('counter:insertedTodayStatus:' . $site_srl . '_' . $_old_date); } } return $insertedTodayStatus; }
function _clearMemberCache($member_srl, $site_srl = 0) { $member_srl = getNumberingPath($member_srl) . $member_srl; Rhymix\Framework\Cache::delete("member:member_info:{$member_srl}"); Rhymix\Framework\Cache::delete("member:member_groups:{$member_srl}:site:{$site_srl}"); if ($site_srl != 0) { Rhymix\Framework\Cache::delete("member:member_groups:{$member_srl}:site:0"); } }
/** * Delete a category * @param int $category_srl * @return object */ function deleteCategory($category_srl) { $args = new stdClass(); $args->category_srl = $category_srl; $oDocumentModel = getModel('document'); $category_info = $oDocumentModel->getCategory($category_srl); // Display an error that the category cannot be deleted if it has a child $output = executeQuery('document.getChildCategoryCount', $args); if (!$output->toBool()) { return $output; } if ($output->data->count > 0) { return new Object(-1, 'msg_cannot_delete_for_child'); } // Delete a category information $output = executeQuery('document.deleteCategory', $args); if (!$output->toBool()) { return $output; } $this->makeCategoryFile($category_info->module_srl); // remove cache $page = 0; while (true) { $args = new stdClass(); $args->category_srl = $category_srl; $args->list_count = 100; $args->page = ++$page; $output = executeQuery('document.getDocumentList', $args, array('document_srl')); if ($output->data == array()) { break; } foreach ($output->data as $val) { Rhymix\Framework\Cache::delete('document_item:' . getNumberingPath($val->document_srl) . $val->document_srl); } } // Update category_srl of the documents in the same category to 0 $args = new stdClass(); $args->target_category_srl = 0; $args->source_category_srl = $category_srl; $output = executeQuery('document.updateDocumentCategory', $args); return $output; }
/** * Delete Cache * * @param string $key Cache key * @return void */ public function delete($key) { return Rhymix\Framework\Cache::delete($key); }
/** * Control the order of extra variables * @return void|object */ function procDocumentAdminMoveExtraVar() { $type = Context::get('type'); $module_srl = Context::get('module_srl'); $var_idx = Context::get('var_idx'); if (!$type || !$module_srl || !$var_idx) { return new Object(-1, 'msg_invalid_request'); } $oModuleModel = getModel('module'); $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl); if (!$module_info->module_srl) { return new Object(-1, 'msg_invalid_request'); } $oDocumentModel = getModel('document'); $extra_keys = $oDocumentModel->getExtraKeys($module_srl); if (!$extra_keys[$var_idx]) { return new Object(-1, 'msg_invalid_request'); } if ($type == 'up') { $new_idx = $var_idx - 1; } else { $new_idx = $var_idx + 1; } if ($new_idx < 1) { return new Object(-1, 'msg_invalid_request'); } $args = new stdClass(); $args->module_srl = $module_srl; $args->var_idx = $new_idx; $output = executeQuery('document.getDocumentExtraKeys', $args); if (!$output->toBool()) { return $output; } if (!$output->data) { return new Object(-1, 'msg_invalid_request'); } unset($args); // update immediately if there is no idx to change if (!$extra_keys[$new_idx]) { $args = new stdClass(); $args->module_srl = $module_srl; $args->var_idx = $var_idx; $args->new_idx = $new_idx; $output = executeQuery('document.updateDocumentExtraKeyIdx', $args); if (!$output->toBool()) { return $output; } $output = executeQuery('document.updateDocumentExtraVarIdx', $args); if (!$output->toBool()) { return $output; } // replace if exists } else { $args = new stdClass(); $args->module_srl = $module_srl; $args->var_idx = $new_idx; $args->new_idx = -10000; $output = executeQuery('document.updateDocumentExtraKeyIdx', $args); if (!$output->toBool()) { return $output; } $output = executeQuery('document.updateDocumentExtraVarIdx', $args); if (!$output->toBool()) { return $output; } $args->var_idx = $var_idx; $args->new_idx = $new_idx; $output = executeQuery('document.updateDocumentExtraKeyIdx', $args); if (!$output->toBool()) { return $output; } $output = executeQuery('document.updateDocumentExtraVarIdx', $args); if (!$output->toBool()) { return $output; } $args->var_idx = -10000; $args->new_idx = $var_idx; $output = executeQuery('document.updateDocumentExtraKeyIdx', $args); if (!$output->toBool()) { return $output; } $output = executeQuery('document.updateDocumentExtraVarIdx', $args); if (!$output->toBool()) { return $output; } } Rhymix\Framework\Cache::delete("site_and_module:module_document_extra_keys:{$module_srl}"); }
/** * @brief Remove permission from the module */ function deleteModuleGrants($module_srl) { $args = new stdClass(); $args->module_srl = $module_srl; $output = executeQuery('module.deleteModuleGrants', $args); Rhymix\Framework\Cache::delete("site_and_module:module_grants:{$module_srl}"); return $output; }
/** * @brief request parameters and variables sort through the information widget */ function arrangeWidgetVars($widget, $request_vars, &$vars) { $oWidgetModel = getModel('widget'); $widget_info = $oWidgetModel->getWidgetInfo($widget); if (!$vars) { $vars = new stdClass(); } $widget = $vars->selected_widget; $vars->css_class = $request_vars->css_class; $vars->widgetstyle = $request_vars->widgetstyle; $vars->skin = trim($request_vars->skin); $vars->colorset = trim($request_vars->colorset); $vars->widget_sequence = (int) $request_vars->widget_sequence; $vars->widget_cache = (int) $request_vars->widget_cache; if ($request_vars->widget_cache_unit && in_array($request_vars->widget_cache_unit, array('s', 'm', 'h', 'd'))) { $vars->widget_cache .= $request_vars->widget_cache_unit; } $vars->style = trim($request_vars->style); $vars->widget_padding_left = trim($request_vars->widget_padding_left); $vars->widget_padding_right = trim($request_vars->widget_padding_right); $vars->widget_padding_top = trim($request_vars->widget_padding_top); $vars->widget_padding_bottom = trim($request_vars->widget_padding_bottom); $vars->document_srl = trim($request_vars->document_srl); if (count($widget_info->extra_var)) { foreach ($widget_info->extra_var as $key => $val) { $vars->{$key} = trim($request_vars->{$key}); } } // If the widget style if ($request_vars->widgetstyle) { $widgetStyle_info = $oWidgetModel->getWidgetStyleInfo($request_vars->widgetstyle); if (count($widgetStyle_info->extra_var)) { foreach ($widgetStyle_info->extra_var as $key => $val) { if ($val->type == 'color' || $val->type == 'text' || $val->type == 'select' || $val->type == 'filebox' || $val->type == 'textarea') { $vars->{$key} = trim($request_vars->{$key}); } } } } if ($vars->widget_sequence) { Rhymix\Framework\Cache::delete('widget_cache:' . $vars->widget_sequence); } if ($vars->widget_cache > 0) { $vars->widget_sequence = getNextSequence(); } $attribute = array(); foreach ($vars as $key => $val) { if (!$val) { unset($vars->{$key}); continue; } if (strpos($val, '|@|') > 0) { $val = str_replace('|@|', ',', $val); } $vars->{$key} = Context::convertEncodingStr($val); $attribute[] = sprintf('%s="%s"', $key, htmlspecialchars(Context::convertEncodingStr($val), ENT_COMPAT | ENT_HTML401, 'UTF-8', false)); } return $attribute; }
/** * @brief Clear widget cache files of the specified page */ function procPageAdminRemoveWidgetCache() { $module_srl = Context::get('module_srl'); if (!$module_srl) { return; } $oModuleModel = getModel('module'); $columnList = array('module_srl', 'content'); $module_info = $oModuleModel->getModuleInfoByModuleSrl($module_srl, $columnList); $content = $module_info->content; // widget controller re-run of the cache files $oWidgetController = getController('widget'); $oWidgetController->recompileWidget($content); if ($module_info->page_type == 'WIDGET') { $path = _XE_PATH_ . 'files/cache/page/'; $cache_files = FileHandler::readDir($path, '/^' . $module_info->module_srl . '\\./'); foreach ($cache_files as $file_name) { FileHandler::removeFile($path . $module_info->module_srl . '.' . $file_name); } } else { if ($module_info->page_type == 'OUTSIDE') { $path = _XE_PATH_ . 'files/cache/page/'; $cache_files = FileHandler::readDir($path, '/^' . $module_info->module_srl . './'); foreach ($cache_files as $file_name) { FileHandler::removeFile($path . $module_info->module_srl . '.' . $file_name); } } } Rhymix\Framework\Cache::delete('site_and_module:mid_info:' . $module_info->module_srl); }
/** * @brief List permissions of the module */ function procModuleAdminModuleGrantSetup() { $module_srls = Context::get('module_srls'); if (!$module_srls) { return new Object(-1, 'msg_invalid_request'); } $modules = explode(',', $module_srls); if (count($modules) < 1) { return new Object(-1, 'msg_invalid_request'); } $oModuleController = getController('module'); $oModuleModel = getModel('module'); $columnList = array('module_srl', 'module'); $module_info = $oModuleModel->getModuleInfoByModuleSrl($modules[0], $columnList); $xml_info = $oModuleModel->getModuleActionXml($module_info->module); $grant_list = $xml_info->grant; $grant_list->access = new stdClass(); $grant_list->access->default = 'guest'; $grant_list->manager = new stdClass(); $grant_list->manager->default = 'manager'; $grant = new stdClass(); foreach ($grant_list as $grant_name => $grant_info) { // Get the default value $default = Context::get($grant_name . '_default'); // -1 = Sign only, 0 = all users $grant->{$grant_name} = array(); if (strlen($default)) { $grant->{$grant_name}[] = $default; continue; // Users in a particular group } else { $group_srls = Context::get($grant_name); if ($group_srls) { if (!is_array($group_srls)) { if (strpos($group_srls, '|@|') !== false) { $group_srls = explode('|@|', $group_srls); } elseif (strpos($group_srls, ',') !== false) { $group_srls = explode(',', $group_srls); } else { $group_srls = array($group_srls); } } $grant->{$grant_name} = $group_srls; } continue; } $grant->{$group_srls} = array(); // dead code, too?? } // Stored in the DB foreach ($modules as $module_srl) { $args = new stdClass(); $args->module_srl = $module_srl; $output = executeQuery('module.deleteModuleGrants', $args); if (!$output->toBool()) { continue; } // Permissions stored in the DB foreach ($grant as $grant_name => $group_srls) { foreach ($group_srls as $val) { $args = new stdClass(); $args->module_srl = $module_srl; $args->name = $grant_name; $args->group_srl = $val; $output = executeQuery('module.insertModuleGrant', $args); if (!$output->toBool()) { return $output; } } } } Rhymix\Framework\Cache::delete("site_and_module:module_grants:{$module_srl}"); $this->setMessage('success_registed'); if (!in_array(Context::getRequestMethod(), array('XMLRPC', 'JSON'))) { if (Context::get('success_return_url')) { $this->setRedirectUrl(Context::get('success_return_url')); } else { global $lang; htmlHeader(); alertScript($lang->success_registed); closePopupScript(); htmlFooter(); Context::close(); exit; } } }
/** * Execute update * @return Object */ function moduleUpdate() { $oDB =& DB::getInstance(); // 2009. 02. 11 Add site_srl to menu table if (!$oDB->isColumnExists('layouts', 'site_srl')) { $oDB->addColumn('layouts', 'site_srl', 'number', 11, 0, true); } // 2009. 02. 26 Move the previous layout for faceoff $oLayoutModel = getModel('layout'); $files = FileHandler::readDir('./files/cache/layout'); for ($i = 0, $c = count($files); $i < $c; $i++) { $filename = $files[$i]; if (!preg_match('/([0-9]+)\\.html/i', $filename, $match)) { continue; } $layout_srl = $match[1]; if (!$layout_srl) { continue; } $path = $oLayoutModel->getUserLayoutPath($layout_srl); if (!is_dir($path)) { FileHandler::makeDir($path); } FileHandler::copyFile('./files/cache/layout/' . $filename, $path . 'layout.html'); @unlink('./files/cache/layout/' . $filename); } if (!$oDB->isColumnExists('layouts', 'layout_type')) { $oDB->addColumn('layouts', 'layout_type', 'char', 1, 'P', true); } $args = new stdClass(); $args->layout = '.'; $output = executeQueryArray('layout.getLayoutDotList', $args); if ($output->data && count($output->data) > 0) { foreach ($output->data as $layout) { $layout_path = explode('.', $layout->layout); if (count($layout_path) != 2) { continue; } if (is_dir(sprintf(_XE_PATH_ . 'themes/%s/layouts/%s', $layout_path[0], $layout_path[1]))) { $args->layout = implode('|@|', $layout_path); $args->layout_srl = $layout->layout_srl; $output = executeQuery('layout.updateLayout', $args); Rhymix\Framework\Cache::delete('layout:' . $args->layout_srl); } } } return new Object(0, 'success_updated'); }
/** * Delete layout xml cache file * @param int $layout_srl * @return Object */ function deleteLayout($layout_srl, $force = FALSE) { $oLayoutModel = getModel('layout'); if ($force) { $layoutInfo = $oLayoutModel->getLayout($layout_srl); if ($layoutInfo) { $layoutList = $oLayoutModel->getLayoutInstanceList($layoutInfo->site_srl, $layoutInfo->layout_type, $layoutInfo->layout, array('layout_srl', 'layout')); if (count($layoutList) <= 1) { // uninstall package $path = $layoutInfo->path; $oAutoinstallModel = getModel('autoinstall'); $packageSrl = $oAutoinstallModel->getPackageSrlByPath($path); $oAutoinstallAdminController = getAdminController('autoinstall'); if ($packageSrl) { $output = $oAutoinstallAdminController->uninstallPackageByPackageSrl($packageSrl); } else { $output = $oAutoinstallAdminController->uninstallPackageByPath($path); } if (!$output->toBool()) { return new Object(-1, $output->message); } } } } $path = $oLayoutModel->getUserLayoutPath($layout_srl); FileHandler::removeDir($path); $layout_file = $oLayoutModel->getUserLayoutHtml($layout_srl); FileHandler::removeFile($layout_file); // Delete Layout $args = new stdClass(); $args->layout_srl = $layout_srl; $output = executeQuery("layout.deleteLayout", $args); Rhymix\Framework\Cache::delete('layout:' . $args->layout_srl); if (!$output->toBool()) { return $output; } return new Object(0, 'success_deleted'); }