/Quản lý website trường trung học phổ thông PHP/lc1/admin/modules/modules/show.php
PHP | 247 lines | 206 code | 30 blank | 11 comment | 27 complexity | 7910e21154f31885c2c82aca9bf4e3a8 MD5 | raw file
- <?php
- /**
- * @Project NUKEVIET 3.0
- * @Author VINADES.,JSC (contact@vinades.vn)
- * @Copyright (C) 2010 VINADES., JSC. All rights reserved
- * @Createdate 3-5-2010 8:49
- */
- if ( ! defined( 'NV_IS_FILE_MODULES' ) ) die( 'Stop!!!' );
- /**
- * nv_show_funcs()
- *
- * @return void
- */
- function nv_show_funcs ( )
- {
- global $db, $nv_Request, $lang_module, $client_info, $module_name, $global_config, $site_mods;
-
- $mod = filter_text_input( 'mod', 'get', '' );
-
- if ( empty( $mod ) or ! preg_match( $global_config['check_module'], $mod ) ) die();
-
- $query = "SELECT `module_file`, `custom_title`, `admin_file` FROM `" . NV_MODULES_TABLE . "` WHERE `title`=" . $db->dbescape( $mod );
- $result = $db->sql_query( $query );
- $numrows = $db->sql_numrows( $result );
-
- if ( $numrows != 1 ) die();
-
- $row = $db->sql_fetchrow( $result );
- $custom_title = $row['custom_title'];
- $module_file = $row['module_file'];
- $admin_file = ( file_exists( NV_ROOTDIR . "/modules/" . $module_file . "/admin.functions.php" ) and file_exists( NV_ROOTDIR . "/modules/" . $module_file . "/admin/main.php" ) ) ? 1 : 0;
- $is_delCache = false;
- if ( $admin_file != intval( $row['admin_file'] ) )
- {
- $sql = "UPDATE `" . NV_MODULES_TABLE . "` SET `admin_file`=" . $admin_file . " WHERE `title`=" . $db->dbescape( $mod );
- $db->sql_query( $sql );
- $is_delCache = true;
- }
-
- $local_funcs = nv_scandir( NV_ROOTDIR . '/modules/' . $module_file . '/funcs', $global_config['check_op_file'] );
- if ( ! empty( $local_funcs ) )
- {
- $local_funcs = preg_replace( $global_config['check_op_file'], "\\1", $local_funcs );
- $local_funcs = array_flip( $local_funcs );
- }
-
- $module_version = array();
- $version_file = NV_ROOTDIR . "/modules/" . $module_file . "/version.php";
- if ( file_exists( $version_file ) )
- {
- require_once ( $version_file );
- }
- if ( empty( $module_version ) )
- {
- $timestamp = NV_CURRENTTIME - date( 'Z', NV_CURRENTTIME );
- $module_version = array(
- "name" => $mod, //
- "modfuncs" => "main", //
- "is_sysmod" => 0, //
- "virtual" => 0, //
- "version" => "3.0.01", //
- "date" => date( 'D, j M Y H:i:s', $timestamp ) . ' GMT', //
- "author" => "", //
- "note" => ""
- );
- }
- $module_version['submenu'] = isset( $module_version['submenu'] ) ? trim( $module_version['submenu'] ) : "";
- $modfuncs = array_map( "trim", explode( ",", $module_version['modfuncs'] ) );
- $arr_in_submenu = array_map( "trim", explode( ",", $module_version['submenu'] ) );
-
- $data_funcs = array();
- $weight_list = array();
- $query = "SELECT * FROM `" . NV_MODFUNCS_TABLE . "` WHERE `in_module`=" . $db->dbescape( $mod ) . " ORDER BY `subweight` ASC";
- $result = $db->sql_query( $query );
- while ( $row = $db->sql_fetchrow( $result ) )
- {
- $func = $row['func_name'];
- $show_func = in_array( $func, $modfuncs ) ? 1 : 0;
- if ( $row['show_func'] != $show_func )
- {
- $row['show_func'] = $show_func;
- $sql = "UPDATE `" . NV_MODFUNCS_TABLE . "` SET `show_func`=" . $show_func . " WHERE `func_id`=" . $row['func_id'];
- $db->sql_query( $sql );
- $is_delCache = true;
- }
- $data_funcs[$func]['func_id'] = $row['func_id'];
- $data_funcs[$func]['layout'] = $row['layout'];
- $data_funcs[$func]['show_func'] = $row['show_func'];
- $data_funcs[$func]['func_custom_name'] = $row['func_custom_name'];
- $data_funcs[$func]['in_submenu'] = $row['in_submenu'];
- $data_funcs[$func]['subweight'] = $row['subweight'];
- if ( $show_func )
- {
- $weight_list[] = $row['subweight'];
- }
- }
-
- $act_funcs = array_intersect_key( $data_funcs, $local_funcs );
- $old_funcs = array_diff_key( $data_funcs, $local_funcs );
- $new_funcs = array_diff_key( $local_funcs, $data_funcs );
-
- $is_refresh = false;
- if ( ! empty( $old_funcs ) )
- {
- foreach ( $old_funcs as $func => $values )
- {
- $query = "DELETE FROM `" . NV_BLOCKS_TABLE . "_weight` WHERE `func_id` = " . $values['func_id'];
- $db->sql_query( $query );
- $query = "DELETE FROM `" . NV_MODFUNCS_TABLE . "` WHERE `func_id` = " . $values['func_id'];
- $db->sql_query( $query );
- $is_delCache = true;
- }
- $db->sql_query( "OPTIMIZE TABLE `" . NV_BLOCKS_TABLE . "_weight`" );
- $db->sql_query( "OPTIMIZE TABLE `" . NV_MODFUNCS_TABLE . "`" );
- $is_refresh = true;
- }
-
- if ( ! empty( $new_funcs ) )
- {
- $mod_theme = "default";
- if ( ! empty( $site_mods[$mod]['theme'] ) and file_exists( NV_ROOTDIR . '/themes/' . $site_mods[$mod]['theme'] . '/config.ini' ) )
- {
- $mod_theme = $site_mods[$mod]['theme'];
- }
- if ( ! empty( $global_config['site_theme'] ) and file_exists( NV_ROOTDIR . '/themes/' . $global_config['site_theme'] . '/config.ini' ) )
- {
- $mod_theme = $global_config['site_theme'];
- }
- $xml = simplexml_load_file( NV_ROOTDIR . '/themes/' . $mod_theme . '/config.ini' );
- $layoutdefault = ( string )$xml->layoutdefault;
-
- foreach ( array_keys( $new_funcs ) as $func )
- {
- $show_func = in_array( $func, $modfuncs ) ? 1 : 0;
- $sql = "INSERT INTO `" . NV_MODFUNCS_TABLE . "` (`func_id`, `func_name`, `func_custom_name`, `in_module`, `show_func`, `in_submenu`, `subweight`, `layout`, `setting`) VALUES (NULL, " . $db->dbescape( $func ) . ", " . $db->dbescape( ucfirst( $func ) ) . ", " . $db->dbescape( $mod ) . ", " . $show_func . ", 0, 0, " . $db->dbescape( $layoutdefault ) . ", '')";
- $func_id = $db->sql_query_insert_id( $sql );
- nv_setup_block_module( $mod, $func_id );
- }
- $is_refresh = true;
- $is_delCache = true;
- }
-
- if ( $is_refresh )
- {
- nv_fix_subweight( $mod );
- $act_funcs = array();
- $weight_list = array();
- $query = "SELECT * FROM `" . NV_MODFUNCS_TABLE . "` WHERE `in_module`=" . $db->dbescape( $mod ) . " AND `show_func`='1' ORDER BY `subweight` ASC";
- $result = $db->sql_query( $query );
- while ( $row = $db->sql_fetchrow( $result ) )
- {
- $func = $row['func_name'];
- $act_funcs[$func]['func_id'] = $row['func_id'];
- $act_funcs[$func]['layout'] = $row['layout'];
- $act_funcs[$func]['show_func'] = $row['show_func'];
- $act_funcs[$func]['func_custom_name'] = $row['func_custom_name'];
- $act_funcs[$func]['in_submenu'] = $row['in_submenu'];
- $act_funcs[$func]['subweight'] = $row['subweight'];
- $weight_list[] = $row['subweight'];
- }
- }
- if ( $is_delCache )
- {
- nv_del_moduleCache( 'modules' );
- nv_del_moduleCache( 'themes' );
- }
-
- $contents = array();
- $contents['caption'] = sprintf( $lang_module['funcs_list'], $custom_title );
- $contents['thead'] = array(
- $lang_module['funcs_subweight'], $lang_module['funcs_in_submenu'], $lang_module['funcs_title'], $lang_module['custom_title'], $lang_module['funcs_layout']
- );
- $contents['weight_list'] = $weight_list;
- foreach ( $act_funcs as $funcs => $values )
- {
- if ( $values['show_func'] )
- {
- $func_id = $values['func_id'];
- $contents['rows'][$func_id]['weight'] = array(
- $values['subweight'], "nv_chang_func_weight(" . $func_id . ");"
- );
- $contents['rows'][$func_id]['name'] = array(
- $funcs, $values['func_custom_name'], "nv_change_custom_name(" . $values['func_id'] . ",'action');"
- );
- $contents['rows'][$func_id]['layout'] = array(
- $values['layout'], "nv_chang_func_layout(" . $func_id . ");"
- );
- $contents['rows'][$func_id]['in_submenu'] = array(
- $values['in_submenu'], "nv_chang_func_in_submenu(" . $func_id . ");"
- );
- $contents['rows'][$func_id]['disabled'] = ( in_array( $funcs, $arr_in_submenu ) ) ? "" : " disabled";
- }
- }
-
- include ( NV_ROOTDIR . "/includes/header.php" );
- echo aj_show_funcs_theme( $contents );
- include ( NV_ROOTDIR . "/includes/footer.php" );
- }
- if ( $nv_Request->isset_request( 'aj', 'get' ) )
- {
- if ( filter_text_input( 'aj', 'get' ) == 'show_funcs' )
- {
- nv_show_funcs();
- die();
- }
- }
- $mod = filter_text_input( 'mod', 'get', '' );
- if ( empty( $mod ) or ! preg_match( $global_config['check_module'], $mod ) )
- {
- Header( "Location: " . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name );
- die();
- }
- $query = "SELECT `custom_title` FROM `" . NV_MODULES_TABLE . "` WHERE `title`=" . $db->dbescape( $mod );
- $result = $db->sql_query( $query );
- $numrows = $db->sql_numrows( $result );
- if ( $numrows != 1 )
- {
- Header( "Location: " . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name );
- die();
- }
- $row = $db->sql_fetchrow( $result );
- $page_title = sprintf( $lang_module['funcs_list'], $row['custom_title'] );
- $contents = array();
- $contents['div_id'][0] = "show_funcs";
- $contents['div_id'][1] = "action";
- $contents['ajax'][0] = "nv_show_funcs('show_funcs');";
- $contents['ajax'][1] = $nv_Request->isset_request( 'func_id,pos', 'get' ) ? "nv_bl_list(" . $nv_Request->get_int( 'func_id', 'get' ) . ",'" . filter_text_input( 'pos', 'get' ) . "','action');" : "";
- $contents = show_funcs_theme( $contents );
- include ( NV_ROOTDIR . "/includes/header.php" );
- echo nv_admin_theme( $contents );
- include ( NV_ROOTDIR . "/includes/footer.php" );
- ?>