PageRenderTime 45ms CodeModel.GetById 16ms RepoModel.GetById 1ms app.codeStats 0ms

/NukeViet3.2/admin/modules/modules/setup.php

http://nuke-viet.googlecode.com/
PHP | 252 lines | 226 code | 18 blank | 8 comment | 44 complexity | 893173cb6090d729f39607190b787009 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1, GPL-2.0
  1. <?php
  2. /**
  3. * @Project NUKEVIET 3.0
  4. * @Author VINADES.,JSC (contact@vinades.vn)
  5. * @Copyright (C) 2010 VINADES.,JSC. All rights reserved
  6. * @Createdate 2-2-2010 12:55
  7. */
  8. if ( ! defined( 'NV_IS_FILE_MODULES' ) ) die( 'Stop!!!' );
  9. $setmodule = filter_text_input( 'setmodule', 'get', '', 1 );
  10. if ( ! empty( $setmodule ) )
  11. {
  12. if ( filter_text_input( 'checkss', 'get' ) == md5( "setmodule" . $setmodule . session_id() . $global_config['sitekey'] ) )
  13. {
  14. $query = "SELECT `module_file`, `module_data` FROM `" . $db_config['prefix'] . "_setup_modules` WHERE `title`=" . $db->dbescape( $setmodule );
  15. $result = $db->sql_query( $query );
  16. $numrows = $db->sql_numrows( $result );
  17. if ( $numrows == 1 )
  18. {
  19. list( $module_file, $module_data ) = $db->sql_fetchrow( $result );
  20. list( $weight ) = $db->sql_fetchrow( $db->sql_query( "SELECT max(weight) FROM `" . NV_MODULES_TABLE . "`" ) );
  21. $weight = intval( $weight ) + 1;
  22. $module_version = array();
  23. $version_file = NV_ROOTDIR . "/modules/" . $module_file . "/version.php";
  24. if ( file_exists( $version_file ) )
  25. {
  26. include ( $version_file );
  27. }
  28. $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;
  29. $custom_title = preg_replace( '/(\W+)/i', ' ', $setmodule );
  30. $in_menu = ( file_exists( NV_ROOTDIR . "/modules/" . $module_file . "/funcs/main.php" ) ) ? 1 : 0;
  31. $db->sql_query( "INSERT INTO `" . NV_MODULES_TABLE . "` (`title`, `module_file`, `module_data`, `custom_title`, `set_time`, `admin_file`, `theme`, `keywords`, `groups_view`, `in_menu`, `weight`, `submenu`, `act`, `admins`, `rss`) VALUES (" . $db->dbescape( $setmodule ) . ", " . $db->dbescape( $module_file ) . ", " . $db->dbescape( $module_data ) . ", " . $db->dbescape( $custom_title ) . ", " . $db->dbescape( NV_CURRENTTIME ) . ", " . $db->dbescape( $admin_file ) . ", '', '', '0', $in_menu, " . $weight . ", 1, 1, '',1)" );
  32. nv_del_moduleCache( 'modules' );
  33. $return = nv_setup_data_module( NV_LANG_DATA, $setmodule );
  34. if ( $return == "OK_" . $setmodule )
  35. {
  36. nv_setup_block_module( $setmodule );
  37. nv_del_moduleCache( 'themes' );
  38. nv_insert_logs( NV_LANG_DATA, $module_name, $lang_module['modules'] . ' ' . $setmodule . '"', '', $admin_info['userid'] );
  39. Header( "Location: " . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_VARIABLE . "=edit&mod=" . $setmodule );
  40. die();
  41. }
  42. }
  43. }
  44. Header( "Location: " . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_VARIABLE . "=" . $op );
  45. die();
  46. }
  47. $delmodule = filter_text_input( 'delmodule', 'get', '', 1 );
  48. if ( ! empty( $delmodule ) )
  49. {
  50. if ( filter_text_input( 'checkss', 'get' ) == md5( "delmodule" . $delmodule . session_id() . $global_config['sitekey'] ) )
  51. {
  52. $module_exit = array();
  53. $sql = "SELECT lang FROM `" . $db_config['prefix'] . "_setup_language` where setup='1'";
  54. $result = $db->sql_query( $sql );
  55. while ( list( $lang_i ) = $db->sql_fetchrow( $result ) )
  56. {
  57. list( $nmd ) = $db->sql_fetchrow( $db->sql_query( "SELECT count(*) FROM `" . $db_config['prefix'] . "_" . $lang_i . "_modules` WHERE `module_file`=" . $db->dbescape_string( $delmodule ) ) );
  58. if ( $nmd > 0 )
  59. {
  60. $module_exit[] = $lang_i;
  61. }
  62. }
  63. if ( empty( $module_exit ) )
  64. {
  65. list( $nmd ) = $db->sql_fetchrow( $db->sql_query( "SELECT count(*) FROM `" . $db_config['prefix'] . "_setup_modules` WHERE `module_file`=" . $db->dbescape_string( $delmodule ) . " AND `title`!=" . $db->dbescape_string( $delmodule ) ) );
  66. if ( $nmd > 0 )
  67. {
  68. $module_exit = 1;
  69. }
  70. }
  71. if ( empty( $module_exit ) )
  72. {
  73. $theme_list_site = nv_scandir( NV_ROOTDIR . "/themes/", $global_config['check_theme'] );
  74. $theme_list_admin = nv_scandir( NV_ROOTDIR . "/themes/", $global_config['check_theme_admin'] );
  75. $theme_list = array_merge( $theme_list_site, $theme_list_admin );
  76. foreach ( $theme_list as $theme )
  77. {
  78. if ( file_exists( NV_ROOTDIR . '/themes/' . $theme . '/css/' . $delmodule . '.css' ) )
  79. {
  80. nv_deletefile( NV_ROOTDIR . '/themes/' . $theme . '/css/' . $delmodule . '.css' );
  81. }
  82. if ( is_dir( NV_ROOTDIR . '/themes/' . $theme . '/images/' . $delmodule ) )
  83. {
  84. nv_deletefile( NV_ROOTDIR . '/themes/' . $theme . '/images/' . $delmodule, true );
  85. }
  86. if ( is_dir( NV_ROOTDIR . '/themes/' . $theme . '/modules/' . $delmodule ) )
  87. {
  88. nv_deletefile( NV_ROOTDIR . '/themes/' . $theme . '/modules/' . $delmodule, true );
  89. }
  90. }
  91. if ( is_dir( NV_ROOTDIR . '/modules/' . $delmodule . '/' ) )
  92. {
  93. nv_deletefile( NV_ROOTDIR . '/modules/' . $delmodule . '/', true );
  94. }
  95. Header( "Location: " . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_VARIABLE . "=" . $op );
  96. die();
  97. }
  98. }
  99. }
  100. $page_title = $lang_module['modules'];
  101. $modules_exit = array_flip( nv_scandir( NV_ROOTDIR . "/modules", $global_config['check_module'] ) );
  102. $modules_data = array();
  103. $sql_data = "SELECT * FROM `" . $db_config['prefix'] . "_setup_modules` ORDER BY `addtime` ASC";
  104. $result = $db->sql_query( $sql_data );
  105. $is_delCache = false;
  106. $module_virtual_setup = array();
  107. while ( $row = $db->sql_fetchrow( $result ) )
  108. {
  109. if ( array_key_exists( $row['module_file'], $modules_exit ) )
  110. {
  111. $modules_data[$row['title']] = $row;
  112. if ( $row['title'] != $row['module_file'] )
  113. {
  114. $module_virtual_setup[] = $row['module_file'];
  115. }
  116. }
  117. else
  118. {
  119. $db->sql_query( "DELETE FROM `" . $db_config['prefix'] . "_setup_modules` WHERE `title` = '" . $row['title'] . "'" );
  120. $db->sql_query( "UPDATE `" . NV_MODULES_TABLE . "` SET `act`=2 WHERE `title`='" . $row['title'] . "'" );
  121. $is_delCache = true;
  122. }
  123. }
  124. if ( $is_delCache )
  125. {
  126. nv_del_moduleCache( 'modules' );
  127. }
  128. $check_addnews_modules = false;
  129. $arr_module_news = array_diff_key( $modules_exit, $modules_data );
  130. foreach ( $arr_module_news as $module_name_i => $arr )
  131. {
  132. $check_file_main = NV_ROOTDIR . "/modules/" . $module_name_i . "/funcs/main.php";
  133. $check_file_functions = NV_ROOTDIR . "/modules/" . $module_name_i . "/functions.php";
  134. $check_admin_main = NV_ROOTDIR . "/modules/" . $module_name_i . "/admin/main.php";
  135. $check_admin_functions = NV_ROOTDIR . "/modules/" . $module_name_i . "/admin.functions.php";
  136. if ( ( file_exists( $check_file_main ) and filesize( $check_file_main ) != 0 and file_exists( $check_file_functions ) and filesize( $check_file_functions ) != 0 ) or ( file_exists( $check_admin_main ) and filesize( $check_admin_main ) != 0 and file_exists( $check_admin_functions ) and filesize( $check_admin_functions ) != 0 ) )
  137. {
  138. $check_addnews_modules = true;
  139. $module_version = array();
  140. $version_file = NV_ROOTDIR . "/modules/" . $module_name_i . "/version.php";
  141. if ( file_exists( $version_file ) )
  142. {
  143. require_once ( $version_file );
  144. }
  145. if ( empty( $module_version ) )
  146. {
  147. $timestamp = NV_CURRENTTIME - date( 'Z', NV_CURRENTTIME );
  148. $module_version = array( "name" => $module_name_i, //
  149. "modfuncs" => "main", //
  150. "is_sysmod" => 0, //
  151. "virtual" => 0, //
  152. "version" => "3.0.01", //
  153. "date" => date( 'D, j M Y H:i:s', $timestamp ) . ' GMT', //
  154. "author" => "", //
  155. "note" => "" );
  156. }
  157. $date_ver = intval( strtotime( $module_version['date'] ) );
  158. if ( $date_ver == 0 )
  159. {
  160. $date_ver = NV_CURRENTTIME;
  161. }
  162. $mod_version = $module_version['version'] . " " . $date_ver;
  163. $note = $module_version['note'];
  164. $author = $module_version['author'];
  165. $module_data = preg_replace( '/(\W+)/i', '_', $module_name_i );
  166. $db->sql_query( "INSERT INTO `" . $db_config['prefix'] . "_setup_modules` (`title`, `is_sysmod`, `virtual`, `module_file`, `module_data`, `mod_version`, `addtime`, `author`, `note`) VALUES (" . $db->dbescape( $module_name_i ) . ", " . $db->dbescape( $module_version['is_sysmod'] ) . ", " . $db->dbescape( $module_version['virtual'] ) . ", " . $db->dbescape( $module_name_i ) . ", " . $db->dbescape( $module_data ) . ", " . $db->dbescape( $mod_version ) . ", '" . NV_CURRENTTIME . "', " . $db->dbescape( $author ) . ", " . $db->dbescape( $note ) . ")" );
  167. }
  168. }
  169. if ( $check_addnews_modules )
  170. {
  171. $result = $db->sql_query( $sql_data );
  172. while ( $row = $db->sql_fetchrow( $result ) )
  173. {
  174. $modules_data[$row['title']] = $row;
  175. }
  176. }
  177. // Lay danh sach cac module co trong ngon ngu
  178. $modules_for_lang = array();
  179. $sql = "SELECT * FROM `" . NV_MODULES_TABLE . "` ORDER BY `weight` ASC";
  180. $result = $db->sql_query( $sql );
  181. while ( $row = $db->sql_fetchrow( $result ) )
  182. {
  183. $modules_for_lang[$row['title']] = $row;
  184. }
  185. // Kiem tra module moi
  186. $news_modules_for_lang = array_diff_key( $modules_data, $modules_for_lang );
  187. $array_modules = $array_virtual_modules = $mod_virtual = array();
  188. foreach ( $modules_data as $row )
  189. {
  190. if ( in_array( $row['title'], $modules_exit ) )
  191. {
  192. $mod = array();
  193. $mod['title'] = $row['title'];
  194. $mod['is_sysmod'] = $row['is_sysmod'];
  195. $mod['virtual'] = $row['virtual'];
  196. $mod['module_file'] = $row['module_file'];
  197. $mod['version'] = preg_replace_callback( "/^([0-9a-zA-Z]+\.[0-9a-zA-Z]+\.[0-9a-zA-Z]+)\s+(\d+)$/", "nv_parse_vers", $row['mod_version'] );
  198. $mod['addtime'] = nv_date( "H:i:s d/m/Y", $row['addtime'] );
  199. $mod['author'] = $row['author'];
  200. $mod['note'] = $row['note'];
  201. $mod['setup'] = "";
  202. $mod['delete'] = "";
  203. if ( array_key_exists( $row['title'], $news_modules_for_lang ) )
  204. {
  205. $url = NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "&amp;" . NV_OP_VARIABLE . "=" . $op . "&amp;setmodule=" . $row['title'] . "&amp;checkss=" . md5( "setmodule" . $row['title'] . session_id() . $global_config['sitekey'] );
  206. $mod['setup'] = "<span class=\"default_icon\"><a href=\"" . $url . "\">" . $lang_module['setup'] . "</a></span>";
  207. if ( ! in_array( $row['module_file'], $module_virtual_setup ) )
  208. {
  209. $url = NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "&amp;" . NV_OP_VARIABLE . "=" . $op . "&amp;delmodule=" . $row['title'] . "&amp;checkss=" . md5( "delmodule" . $row['title'] . session_id() . $global_config['sitekey'] );
  210. $mod['delete'] = " - <span class=\"delete_icon\"><a href=\"" . $url . "\" onclick=\"return confirm(nv_is_del_confirm[0]);\">" . $lang_global['delete'] . "</a></span>";
  211. }
  212. }
  213. if ( $mod['module_file'] == $mod['title'] )
  214. {
  215. $array_modules[] = $mod;
  216. if ( $row['virtual'] )
  217. {
  218. $mod_virtual[] = $mod['title'];
  219. }
  220. }
  221. else
  222. {
  223. $array_virtual_modules[] = $mod;
  224. }
  225. }
  226. }
  227. $contents['thead'] = array( $lang_module['weight'], $lang_module['module_name'], $lang_module['custom_title'], $lang_module['version'], $lang_module['in_menu'] . "(*)", $lang_module['submenu'] . "(**)", $lang_global['activate'], $lang_global['actions'] );
  228. $array_head = array( "caption" => $lang_module['module_sys'], "head" => array( $lang_module['weight'], $lang_module['module_name'], $lang_module['version'], $lang_module['settime'], $lang_module['author'], "" ) );
  229. $array_virtual_head = array( "caption" => $lang_module['vmodule'], "head" => array( $lang_module['weight'], $lang_module['module_name'], $lang_module['vmodule_file'], $lang_module['settime'], $lang_module['vmodule_note'], "" ) );
  230. $contents = call_user_func( "setup_modules", $array_head, $array_modules, $array_virtual_head, $array_virtual_modules );
  231. include ( NV_ROOTDIR . "/includes/header.php" );
  232. echo nv_admin_theme( $contents );
  233. include ( NV_ROOTDIR . "/includes/footer.php" );
  234. ?>