Make menu cache files more readable for human debugging

This commit is contained in:
Kijin Sung 2020-10-31 01:42:10 +09:00
parent 417e4d15b0
commit d41b8369d0
2 changed files with 61 additions and 46 deletions

View file

@ -138,7 +138,7 @@ class admin extends ModuleObject
$args->name = '{$lang->menu_gnb[\'' . $value . '\']}'; $args->name = '{$lang->menu_gnb[\'' . $value . '\']}';
if($value == 'dashboard') if($value == 'dashboard')
{ {
$args->url = 'index.php?module=admin'; $args->url = getUrl('', 'module', 'admin');
} }
else else
{ {
@ -228,7 +228,7 @@ class admin extends ModuleObject
$args->menu_item_srl = getNextSequence(); $args->menu_item_srl = getNextSequence();
$args->parent_srl = $gnbDBList["'" . $key . "'"]; $args->parent_srl = $gnbDBList["'" . $key . "'"];
$args->name = '{$lang->menu_gnb_sub[\'' . $menu_name . '\']}'; $args->name = '{$lang->menu_gnb_sub[\'' . $menu_name . '\']}';
$args->url = 'index.php?module=admin&act=' . $moduleActionInfo[$module_name]->menu->{$menu_name}->index; $args->url = getUrl('', 'module', 'admin', 'act', $moduleActionInfo[$module_name]->menu->{$menu_name}->index);
$args->listorder = -1 * $args->menu_item_srl; $args->listorder = -1 * $args->menu_item_srl;
$output = executeQuery('menu.insertMenuItem', $args); $output = executeQuery('menu.insertMenuItem', $args);
} }

View file

@ -1814,41 +1814,40 @@ class menuAdminController extends menu
} }
// A common header to set permissions of the cache file and groups // A common header to set permissions of the cache file and groups
$header_script = $header_script =
'$lang_type = Context::getLangType(); '. '$lang_type = Context::getLangType();' . PHP_EOL .
'$is_logged = Context::get(\'is_logged\'); '. '$is_logged = Context::get(\'is_logged\');' . PHP_EOL .
'$logged_info = Context::get(\'logged_info\'); '. '$logged_info = Context::get(\'logged_info\');' . PHP_EOL .
'$site_srl = '.$site_srl.';'. '$site_srl = '.$site_srl.';' . PHP_EOL .
'$site_admin = false;'. '$site_admin = false;' . PHP_EOL .
'if($site_srl) { '. 'if($site_srl) {' . PHP_EOL .
'$oModuleModel = getModel(\'module\');'. ' $oModuleModel = getModel(\'module\');' . PHP_EOL .
'$site_module_info = $oModuleModel->getSiteInfo($site_srl); '. ' $site_module_info = $oModuleModel->getSiteInfo($site_srl);' . PHP_EOL .
'if($site_module_info) Context::set(\'site_module_info\',$site_module_info);'. ' if($site_module_info) Context::set(\'site_module_info\',$site_module_info);' . PHP_EOL .
'else $site_module_info = Context::get(\'site_module_info\');'. ' else $site_module_info = Context::get(\'site_module_info\');' . PHP_EOL .
'$grant = $oModuleModel->getGrant($site_module_info, $logged_info); '. ' $grant = $oModuleModel->getGrant($site_module_info, $logged_info);' . PHP_EOL .
'if($grant->manager ==1) $site_admin = true;'. ' if($grant->manager ==1) $site_admin = true;' . PHP_EOL .
'}'. '}' . PHP_EOL .
'if($is_logged) {'. 'if($is_logged) {' . PHP_EOL .
'if($logged_info->is_admin=="Y") $is_admin = true; '. ' if($logged_info->is_admin=="Y") $is_admin = true;' . PHP_EOL .
'else $is_admin = false; '. ' else $is_admin = false;' . PHP_EOL .
'$group_srls = array_keys($logged_info->group_list); '. ' $group_srls = array_keys($logged_info->group_list);' . PHP_EOL .
'} else { '. '} else {' . PHP_EOL .
'$is_admin = false; '. ' $is_admin = false;' . PHP_EOL .
'$group_srls = array(); '. ' $group_srls = array();' . PHP_EOL .
'}'; '}';
// Create the xml cache file (a separate session is needed for xml cache) // Create the xml cache file (a separate session is needed for xml cache)
$xml_buff = sprintf( $xml_buff = sprintf(
'<?php '. '<?php ' . PHP_EOL .
'require_once(\''.FileHandler::getRealPath('./common/autoload.php').'\'); '. 'require_once('.var_export(FileHandler::getRealPath('./common/autoload.php'), true) . ');' . PHP_EOL .
'Context::init(); '. 'Context::init(); ' . PHP_EOL .
'header("Content-Type: text/xml; charset=UTF-8"); '. 'header("Content-Type: text/xml; charset=UTF-8");' . PHP_EOL .
'header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); '. 'header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");' . PHP_EOL .
'header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); '. 'header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");' . PHP_EOL .
'header("Cache-Control: no-store, no-cache, must-revalidate"); '. 'header("Cache-Control: no-store, no-cache, must-revalidate");' . PHP_EOL .
'header("Cache-Control: post-check=0, pre-check=0", false); '. 'header("Cache-Control: post-check=0, pre-check=0", false);' . PHP_EOL .
'header("Pragma: no-cache"); '. 'header("Pragma: no-cache");' . PHP_EOL .
'%s '. '%s' . PHP_EOL .
'$oContext->close(); '. '$oContext->close();' . PHP_EOL .
'?>'.
'<root>%s</root>', '<root>%s</root>',
$header_script, $header_script,
$this->getXmlTree($tree[0], $tree, $site_srl, $domain) $this->getXmlTree($tree[0], $tree, $site_srl, $domain)
@ -1856,15 +1855,15 @@ class menuAdminController extends menu
// Create php cache file // Create php cache file
$php_output = $this->getPhpCacheCode($tree[0], $tree, $site_srl, $domain); $php_output = $this->getPhpCacheCode($tree[0], $tree, $site_srl, $domain);
$php_buff = sprintf( $php_buff = sprintf(
'<?php '. '<?php ' . PHP_EOL .
'if(!defined("__XE__")) exit(); '. 'if(!defined("__XE__")) exit();' . PHP_EOL .
'$menu = new stdClass();' . '$menu = new stdClass();' . PHP_EOL .
'%s; '. '$_menu_names = $_menu_names ?? [];' . PHP_EOL .
'%s; '. '%s; ' . PHP_EOL .
'$menu->list = array(%s); '. '%s; ' . PHP_EOL .
'if(!$is_admin) { recurciveExposureCheck($menu->list); }'. '$menu->list = array(%s); ' . PHP_EOL .
'Context::set("included_menu", $menu); '. 'if(!$is_admin) { recurciveExposureCheck($menu->list); }' . PHP_EOL .
'?>', 'Context::set("included_menu", $menu); ' . PHP_EOL,
$header_script, $header_script,
$php_output['name'], $php_output['name'],
$php_output['buff'] $php_output['buff']
@ -2081,8 +2080,24 @@ class menuAdminController extends menu
$link_active = $link = sprintf('$_menu_names[%d][$lang_type]', $node->menu_item_srl); $link_active = $link = sprintf('$_menu_names[%d][$lang_type]', $node->menu_item_srl);
} }
// Create properties (check if it belongs to the menu node by url_list. It looks a trick but fast and powerful) // Create properties (check if it belongs to the menu node by url_list. It looks a trick but fast and powerful)
$attribute = sprintf( $attribute = sprintf('
'"node_srl" => %d, "parent_srl" => %d, "menu_name_key" => %s, "isShow" => (%s ? true : false), "text" => (%s ? $_menu_names[%d][$lang_type] : ""), "href" => (%s ? %s : ""), "url" => (%s ? %s : ""), "is_shortcut" => %s, "desc" => %s, "open_window" => %s, "normal_btn" => %s, "hover_btn" => %s, "active_btn" => %s, "selected" => (array(%s) && in_array(Context::get("mid"), array(%s)) ? 1 : 0), "expand" => %s, "list" => array(%s), "link" => (%s ? (array(%s) && in_array(Context::get("mid"), array(%s)) ? %s : %s) : ""),', "node_srl" => %d,
"parent_srl" => %d,
"menu_name_key" => %s,
"isShow" => (%s ? true : false),
"text" => (%s ? $_menu_names[%d][$lang_type] : ""),
"href" => (%s ? %s : ""),
"url" => (%s ? %s : ""),
"is_shortcut" => %s,
"desc" => %s,
"open_window" => %s,
"normal_btn" => %s,
"hover_btn" => %s,
"active_btn" => %s,
"selected" => (array(%s) && in_array(Context::get("mid"), array(%s)) ? 1 : 0),
"expand" => %s,
"list" => array(%s),
"link" => (%s ? (array(%s) && in_array(Context::get("mid"), array(%s)) ? %s : %s) : "")' . PHP_EOL,
$node->menu_item_srl, $node->menu_item_srl,
$node->parent_srl, $node->parent_srl,
var_export(strip_tags($node->name), true), var_export(strip_tags($node->name), true),
@ -2111,7 +2126,7 @@ class menuAdminController extends menu
); );
// Generate buff data // Generate buff data
$output['buff'] .= sprintf('%d=>array(%s),', $node->menu_item_srl, $attribute); $output['buff'] .= sprintf('%d => array(%s),', $node->menu_item_srl, $attribute) . PHP_EOL;
$output['name'] .= $name_str; $output['name'] .= $name_str;
} }
return $output; return $output;