Ejemplo n.º 1
0
 /**
  * Make invalid group key (like delete group key)
  *
  * @param string $keyGroupName Group name
  * @return void
  */
 public function invalidateGroupKey($keyGroupName)
 {
     return Rhymix\Framework\Cache::clearGroup($keyGroupName);
 }
Ejemplo n.º 2
0
 /**
  * Delete cached group data
  * @return void
  */
 function _deleteMemberGroupCache($site_srl = 0)
 {
     //remove from cache
     Rhymix\Framework\Cache::clearGroup('member');
 }
Ejemplo n.º 3
0
 function updateModuleInSites($site_srls, $args)
 {
     $args = new stdClass();
     $args->site_srls = $site_srls;
     $output = executeQuery('module.updateModuleInSites', $args);
     Rhymix\Framework\Cache::clearGroup('site_and_module');
     return $output;
 }
Ejemplo n.º 4
0
 /**
  * Delete all comments of the specific module
  * @return object
  */
 function deleteModuleComments($module_srl)
 {
     $args = new stdClass();
     $args->module_srl = $module_srl;
     $output = executeQuery('comment.deleteModuleComments', $args);
     if (!$output->toBool()) {
         return $output;
     }
     $output = executeQuery('comment.deleteModuleCommentsList', $args);
     //remove from cache
     Rhymix\Framework\Cache::clearGroup('newestCommentsList');
     return $output;
 }
Ejemplo n.º 5
0
 /**
  * insert menu when not linked module.
  *
  * @param array $moduleInfos
  * @param int $menuSrl
  *
  * @return Object
  */
 function updateLinkModule($moduleInfos, $menuSrl)
 {
     if (!$moduleInfos || !is_array($moduleInfos) || count($moduleInfos) == 0 || $menuSrl == 0) {
         return new Object(-1, 'msg_invalid_request');
     }
     foreach ($moduleInfos as $moduleInfo) {
         // search menu.
         $args = new stdClass();
         $args->url = $moduleInfo->mid;
         $args->site_srl = $moduleInfo->site_srl;
         $args->is_shortcut = 'N';
         $output = executeQuery('menu.getMenuItemByUrl', $args);
         if ($output->toBool() && $output->data) {
             $moduleInfo->menu_srl = $output->data->menu_srl;
         } else {
             // create menu item.
             $item_args = new stdClass();
             $item_args->menu_srl = $menuSrl;
             $item_args->url = $moduleInfo->mid;
             $item_args->name = $moduleInfo->mid;
             $item_args->menu_item_srl = getNextSequence();
             $item_args->listorder = -1 * $item_args->menu_item_srl;
             $output = executeQuery('menu.insertMenuItem', $item_args);
             if (!$output->toBool()) {
                 return $output;
             }
             $moduleInfo->menu_srl = $menuSrl;
         }
         $output = executeQuery('module.updateModule', $moduleInfo);
         return $output;
     }
     Rhymix\Framework\Cache::clearGroup('site_and_module');
     $oMenuAdminController = getAdminController('menu');
     $oMenuAdminController->makeXmlFile($menuSrl);
     return new Object();
 }
Ejemplo n.º 6
0
 /**
  * @brief Reset points for each module
  */
 function procPointAdminReset()
 {
     $module_srl = Context::get('module_srls');
     if (!$module_srl) {
         return new Object(-1, 'msg_invalid_request');
     }
     // In case of batch configuration of several modules
     if (preg_match('/^([0-9,]+)$/', $module_srl)) {
         $module_srl = explode(',', $module_srl);
     } else {
         $module_srl = array($module_srl);
     }
     // Save configurations
     $oModuleController = getController('module');
     for ($i = 0; $i < count($module_srl); $i++) {
         $srl = trim($module_srl[$i]);
         if (!$srl) {
             continue;
         }
         $args = new stdClass();
         $args->module = 'point';
         $args->module_srl = $srl;
         executeQuery('module.deleteModulePartConfig', $args);
     }
     Rhymix\Framework\Cache::clearGroup('site_and_module');
     $this->setMessage('success_updated');
 }
Ejemplo n.º 7
0
 /**
  * Update layout information
  * Apply a title of the new layout and extra vars
  * @return Object
  */
 function procLayoutAdminUpdate()
 {
     // Consider the rest of items as extra vars, except module, act, layout_srl, layout, and title  .. Some gurida ..
     $extra_vars = Context::getRequestVars();
     unset($extra_vars->module);
     unset($extra_vars->act);
     unset($extra_vars->layout_srl);
     unset($extra_vars->layout);
     unset($extra_vars->title);
     unset($extra_vars->apply_layout);
     unset($extra_vars->apply_mobile_view);
     $is_sitemap = $extra_vars->is_sitemap;
     unset($extra_vars->is_sitemap);
     $args = Context::gets('layout_srl', 'title');
     // Get layout information
     $oLayoutModel = getModel('layout');
     $oMenuAdminModel = getAdminModel('menu');
     $layout_info = $oLayoutModel->getLayout($args->layout_srl);
     if ($layout_info->menu) {
         $menus = get_object_vars($layout_info->menu);
     }
     if (count($menus)) {
         foreach ($menus as $menu_id => $val) {
             $menu_srl = Context::get($menu_id);
             if (!$menu_srl) {
                 continue;
             }
             // if menu is -1, get default menu in site
             if ($menu_srl == -1) {
                 $oModuleModel = getModel('module');
                 $start_module = $oModuleModel->getSiteInfo(0, $columnList);
                 $tmpArgs = new stdClass();
                 $tmpArgs->url = $start_module->mid;
                 $tmpArgs->site_srl = 0;
                 $output = executeQuery('menu.getMenuItemByUrl', $tmpArgs);
                 if (!$output->toBool()) {
                     return new Object(-1, 'fail_to_update');
                 }
                 $menu_srl = $output->data->menu_srl;
             }
             $output = $oMenuAdminModel->getMenu($menu_srl);
             $menu_srl_list[] = $menu_srl;
             $menu_name_list[$menu_srl] = $output->title;
             $apply_layout = Context::get('apply_layout');
             $apply_mobile_view = Context::get('apply_mobile_view');
             if ($apply_layout == 'Y' || $apply_mobile_view == 'Y') {
                 $menu_args = new stdClass();
                 $menu_args->menu_srl = $menu_srl;
                 $menu_args->site_srl = $layout_info->site_srl;
                 $output = executeQueryArray('layout.getLayoutModules', $menu_args);
                 if ($output->data) {
                     $modules = array();
                     for ($i = 0; $i < count($output->data); $i++) {
                         $modules[] = $output->data[$i]->module_srl;
                     }
                     if (count($modules)) {
                         $update_args = new stdClass();
                         $update_args->module_srls = implode(',', $modules);
                         if ($apply_layout == "Y") {
                             $update_args->layout_srl = $args->layout_srl;
                         }
                         if ($layout_info->layout_type == "M") {
                             if (Context::get('apply_mobile_view') == "Y") {
                                 $update_args->use_mobile = "Y";
                             }
                             $output = executeQuery('layout.updateModuleMLayout', $update_args);
                         } else {
                             $output = executeQuery('layout.updateModuleLayout', $update_args);
                         }
                         Rhymix\Framework\Cache::clearGroup('site_and_module');
                     }
                 }
             }
         }
     }
     $tmpDir = sprintf('./files/attach/images/%s/tmp', $args->layout_srl);
     // Separately handle if a type of extra_vars is an image
     if ($layout_info->extra_var) {
         foreach ($layout_info->extra_var as $name => $vars) {
             if ($vars->type != 'image') {
                 continue;
             }
             $fileName = $extra_vars->{$name};
             if ($vars->value == $fileName) {
                 continue;
             }
             FileHandler::removeFile($vars->value);
             if (!$fileName) {
                 continue;
             }
             $pathInfo = pathinfo($fileName);
             $tmpFileName = sprintf('%s/tmp/%s', $pathInfo['dirname'], $pathInfo['basename']);
             if (!FileHandler::moveFile($tmpFileName, $fileName)) {
                 unset($extra_vars->{$name});
             }
         }
     }
     // Save header script into "config" of layout module
     $oModuleModel = getModel('module');
     $oModuleController = getController('module');
     $layout_config = new stdClass();
     $layout_config->header_script = Context::get('header_script');
     $oModuleController->insertModulePartConfig('layout', $args->layout_srl, $layout_config);
     // Save a title of the menu
     $extra_vars->menu_name_list = $menu_name_list;
     // Variable setting for DB insert
     $args->extra_vars = serialize($extra_vars);
     $output = $this->updateLayout($args);
     if (!$output->toBool()) {
         return $output;
     }
     FileHandler::removeDir($tmpDir);
     if (!$is_sitemap) {
         return $this->setRedirectUrl(Context::get('error_return_url'), $output);
     } else {
         $context = Context::getInstance();
         $context->setRequestMethod('JSON');
         $this->setMessage('success');
     }
 }
Ejemplo n.º 8
0
 /**
  * @brief Execute update
  */
 function moduleUpdate()
 {
     $oDB =& DB::getInstance();
     // 2008. 10. 27 module_part_config Add a multi-index to the table and check all information of module_configg
     if (!$oDB->isIndexExists("module_part_config", "idx_module_part_config")) {
         $oModuleModel = getModel('module');
         $oModuleController = getController('module');
         $modules = $oModuleModel->getModuleList();
         foreach ($modules as $key => $module_info) {
             $module = $module_info->module;
             if (!in_array($module, array('point', 'trackback', 'layout', 'rss', 'file', 'comment', 'editor'))) {
                 continue;
             }
             $config = $oModuleModel->getModuleConfig($module);
             $module_config = null;
             switch ($module) {
                 case 'point':
                     $module_config = $config->module_point;
                     unset($config->module_point);
                     break;
                 case 'trackback':
                 case 'rss':
                 case 'file':
                 case 'comment':
                 case 'editor':
                     $module_config = $config->module_config;
                     unset($config->module_config);
                     if (is_array($module_config) && count($module_config)) {
                         foreach ($module_config as $key => $val) {
                             if (isset($module_config[$key]->module_srl)) {
                                 unset($module_config[$key]->module_srl);
                             }
                         }
                     }
                     break;
                 case 'layout':
                     $tmp = $config->header_script;
                     if (is_array($tmp) && count($tmp)) {
                         foreach ($tmp as $k => $v) {
                             if (!$v && !trim($v)) {
                                 continue;
                             }
                             $module_config[$k]->header_script = $v;
                         }
                     }
                     $config = null;
                     break;
             }
             $oModuleController->insertModuleConfig($module, $config);
             if (is_array($module_config) && count($module_config)) {
                 foreach ($module_config as $module_srl => $module_part_config) {
                     $oModuleController->insertModulePartConfig($module, $module_srl, $module_part_config);
                 }
             }
         }
         $oDB->addIndex("module_part_config", "idx_module_part_config", array("module", "module_srl"));
     }
     // 2008. 11. 13 drop index(unique_mid). Add a column and index on site_srl and mid columns
     if (!$oDB->isIndexExists('modules', "idx_site_mid")) {
         $oDB->dropIndex("modules", "unique_mid", true);
         $oDB->addColumn('modules', 'site_srl', 'number', 11, 0, true);
         $oDB->addIndex("modules", "idx_site_mid", array("site_srl", "mid"), true);
     }
     // document extra vars
     if (!$oDB->isTableExists('document_extra_vars')) {
         $oDB->createTableByXmlFile('./modules/document/schemas/document_extra_vars.xml');
     }
     if (!$oDB->isTableExists('document_extra_keys')) {
         $oDB->createTableByXmlFile('./modules/document/schemas/document_extra_keys.xml');
     }
     // Move permission, skin info, extection info, admin ID of all modules to the table, grants
     if ($oDB->isColumnExists('modules', 'grants')) {
         $oModuleController = getController('module');
         $oDocumentController = getController('document');
         // Get a value of the current system language code
         $lang_code = Context::getLangType();
         // Get module_info of all modules
         $output = executeQueryArray('module.getModuleInfos');
         if (count($output->data)) {
             foreach ($output->data as $module_info) {
                 // Separate information about permission granted to the module, extra vars, skin vars, super-admin's authority
                 $module_srl = trim($module_info->module_srl);
                 // grant an authority
                 $grants = unserialize($module_info->grants);
                 if ($grants) {
                     $oModuleController->insertModuleGrants($module_srl, $grants);
                 }
                 // Insert skin vars
                 $skin_vars = unserialize($module_info->skin_vars);
                 if ($skin_vars) {
                     $oModuleController->insertModuleSkinVars($module_srl, $skin_vars);
                 }
                 // Insert super admin's ID
                 $admin_id = trim($module_info->admin_id);
                 if ($admin_id && $admin_id != 'Array') {
                     $admin_ids = explode(',', $admin_id);
                     if (count($admin_id)) {
                         foreach ($admin_ids as $admin_id) {
                             $oModuleController->insertAdminId($module_srl, $admin_id);
                         }
                     }
                 }
                 // Save extra configurations for each module(column data which doesn't exist in the defaut modules)
                 $extra_vars = unserialize($module_info->extra_vars);
                 $document_extra_keys = null;
                 if ($extra_vars->extra_vars && count($extra_vars->extra_vars)) {
                     $document_extra_keys = $extra_vars->extra_vars;
                     unset($extra_vars->extra_vars);
                 }
                 if ($extra_vars) {
                     $oModuleController->insertModuleExtraVars($module_srl, $extra_vars);
                 }
                 /**
                  * Move document extra vars(it should have conducted in the documents module however extra vars in modules table should be listed up in this module)
                  */
                 // Insert extra vars if planet module is
                 if ($module_info->module == 'planet') {
                     if (!$document_extra_keys || !is_array($document_extra_keys)) {
                         $document_extra_keys = array();
                     }
                     $planet_extra_keys->name = 'postscript';
                     $planet_extra_keys->type = 'text';
                     $planet_extra_keys->is_required = 'N';
                     $planet_extra_keys->search = 'N';
                     $planet_extra_keys->default = '';
                     $planet_extra_keys->desc = '';
                     $document_extra_keys[20] = $planet_extra_keys;
                 }
                 // Register keys for document extra vars
                 if (count($document_extra_keys)) {
                     foreach ($document_extra_keys as $var_idx => $val) {
                         $oDocumentController->insertDocumentExtraKey($module_srl, $var_idx, $val->name, $val->type, $val->is_required, $val->search, $val->default, $val->desc, 'extra_vars' . $var_idx);
                     }
                     // 2009-04-14 Fixed a bug that only 100 extra vars are moved
                     $oDocumentModel = getModel('document');
                     $total_count = $oDocumentModel->getDocumentCount($module_srl);
                     if ($total_count > 0) {
                         $per_page = 100;
                         $total_pages = (int) (($total_count - 1) / $per_page) + 1;
                         // Get extra vars if exist
                         $doc_args = new stdClass();
                         $doc_args->module_srl = $module_srl;
                         $doc_args->list_count = $per_page;
                         $doc_args->sort_index = 'list_order';
                         $doc_args->order_type = 'asc';
                         for ($doc_args->page = 1; $doc_args->page <= $total_pages; $doc_args->page++) {
                             $output = executeQueryArray('document.getDocumentList', $doc_args);
                             if ($output->toBool() && $output->data && count($output->data)) {
                                 foreach ($output->data as $document) {
                                     if (!$document) {
                                         continue;
                                     }
                                     foreach ($document as $key => $var) {
                                         if (strpos($key, 'extra_vars') !== 0 || !trim($var) || $var == 'N;') {
                                             continue;
                                         }
                                         $var_idx = str_replace('extra_vars', '', $key);
                                         $oDocumentController->insertDocumentExtraVar($module_srl, $document->document_srl, $var_idx, $var, 'extra_vars' . $var_idx, $lang_code);
                                     }
                                 }
                             }
                         }
                         // for total_pages
                     }
                     // if count
                 }
                 // Additional variables of the module, remove
                 $module_info->grant = null;
                 $module_info->extra_vars = null;
                 $module_info->skin_vars = null;
                 $module_info->admin_id = null;
                 executeQuery('module.updateModule', $module_info);
                 Rhymix\Framework\Cache::clearGroup('site_and_module');
             }
         }
         // Various column drop
         $oDB->dropColumn('modules', 'grants');
         $oDB->dropColumn('modules', 'admin_id');
         $oDB->dropColumn('modules', 'skin_vars');
         $oDB->dropColumn('modules', 'extra_vars');
     }
     // Rights of all modules/skins transferring the information into a table Update grants
     if (!$oDB->isColumnExists('sites', 'default_language')) {
         $oDB->addColumn('sites', 'default_language', 'varchar', 255, 0, false);
     }
     // extra_vars * Remove Column
     for ($i = 1; $i <= 20; $i++) {
         if (!$oDB->isColumnExists("documents", "extra_vars" . $i)) {
             continue;
         }
         $oDB->dropColumn('documents', 'extra_vars' . $i);
     }
     // Enter the main site information sites on the table
     $args = new stdClass();
     $args->site_srl = 0;
     $output = $oDB->executeQuery('module.getSite', $args);
     if (!$output->data) {
         // Basic mid, language Wanted
         $mid_output = $oDB->executeQuery('module.getDefaultMidInfo', $args);
         $domain = Context::getDefaultUrl();
         $url_info = parse_url($domain);
         $domain = $url_info['host'] . (!empty($url_info['port']) && $url_info['port'] != 80 ? ':' . $url_info['port'] : '') . $url_info['path'];
         $site_args = new stdClass();
         $site_args->site_srl = 0;
         $site_args->index_module_srl = $mid_output->data->module_srl;
         $site_args->domain = $domain;
         $site_args->default_language = config('locale.default_lang');
         $output = executeQuery('module.insertSite', $site_args);
         if (!$output->toBool()) {
             return $output;
         }
     }
     if ($oDB->isIndexExists('sites', 'idx_domain')) {
         $oDB->dropIndex('sites', 'idx_domain');
     }
     if (!$oDB->isIndexExists('sites', 'unique_domain')) {
         $this->updateForUniqueSiteDomain();
         $oDB->addIndex('sites', 'unique_domain', array('domain'), true);
     }
     if (!$oDB->isColumnExists("modules", "use_mobile")) {
         $oDB->addColumn('modules', 'use_mobile', 'char', 1, 'N');
     }
     if (!$oDB->isColumnExists("modules", "mlayout_srl")) {
         $oDB->addColumn('modules', 'mlayout_srl', 'number', 11, 0);
     }
     if (!$oDB->isColumnExists("modules", "mcontent")) {
         $oDB->addColumn('modules', 'mcontent', 'bigtext');
     }
     if (!$oDB->isColumnExists("modules", "mskin")) {
         $oDB->addColumn('modules', 'mskin', 'varchar', 250);
     }
     if (!$oDB->isColumnExists("modules", "is_skin_fix")) {
         $oDB->addColumn('modules', 'is_skin_fix', 'char', 1, 'N');
         $output = executeQuery('module.updateSkinFixModules');
     }
     if (!$oDB->isColumnExists("module_config", "site_srl")) {
         $oDB->addColumn('module_config', 'site_srl', 'number', 11, 0, true);
     }
     FileHandler::makeDir('./files/ruleset');
     $args->skin = '.';
     $output = executeQueryArray('module.getModuleSkinDotList', $args);
     if ($output->data && count($output->data) > 0) {
         foreach ($output->data as $item) {
             $skin_path = explode('.', $item->skin);
             if (count($skin_path) != 2) {
                 continue;
             }
             if (is_dir(sprintf(_XE_PATH_ . 'themes/%s/modules/%s', $skin_path[0], $skin_path[1]))) {
                 $args = new stdClass();
                 $args->skin = $item->skin;
                 $args->new_skin = implode('|@|', $skin_path);
                 $output = executeQuery('module.updateSkinAll', $args);
             }
         }
     }
     // XE 1.7
     if (!$oDB->isColumnExists("modules", "is_mskin_fix")) {
         $oDB->addColumn('modules', 'is_mskin_fix', 'char', 1, 'N');
         $output = executeQuery('module.updateMobileSkinFixModules');
     }
     $oModuleModel = getModel('module');
     $moduleConfig = $oModuleModel->getModuleConfig('module');
     if (!$moduleConfig->isUpdateFixedValue) {
         $output = executeQuery('module.updateSkinFixModules');
         $output = executeQuery('module.updateMobileSkinFixModules');
         $oModuleController = getController('module');
         if (!$moduleConfig) {
             $moduleConfig = new stdClass();
         }
         $moduleConfig->isUpdateFixedValue = TRUE;
         $output = $oModuleController->updateModuleConfig('module', $moduleConfig);
     }
     return new Object(0, 'success_updated');
 }