Пример #1
0
 /**
  * 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;
 }
Пример #2
0
 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");
     }
 }
Пример #3
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;
 }
Пример #4
0
 /**
  * Delete Cache
  *
  * @param string $key Cache key
  * @return void
  */
 public function delete($key)
 {
     return Rhymix\Framework\Cache::delete($key);
 }
Пример #5
0
 /**
  * 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}");
 }
Пример #6
0
 /**
  * @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;
 }
Пример #7
0
 /**
  * @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;
 }
Пример #8
0
 /**
  * @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);
 }
Пример #9
0
 /**
  * @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;
         }
     }
 }
Пример #10
0
 /**
  * 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');
 }
Пример #11
0
 /**
  * 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');
 }