PageRenderTime 41ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/NukeViet3.2/admin/modules/language/write.php

http://nuke-viet.googlecode.com/
PHP | 286 lines | 266 code | 7 blank | 13 comment | 25 complexity | 62f4a22207a7d5c37b483c2011f6f1c5 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-9-2010 14:43
  7. */
  8. if ( ! defined( 'NV_IS_FILE_LANG' ) ) die( 'Stop!!!' );
  9. /**
  10. * nv_admin_write_lang()
  11. *
  12. * @param mixed $dirlang
  13. * @param mixed $idfile
  14. * @return error write file
  15. */
  16. global $file_lang_tran_no_comp;
  17. $file_lang_tran_no_comp = array();
  18. $array_lang_no_check = array();
  19. $array_lang_exit = array();
  20. $result = $db->sql_query( "SHOW COLUMNS FROM `" . NV_LANGUAGE_GLOBALTABLE . "_file`" );
  21. while ( $row = $db->sql_fetch_assoc( $result ) )
  22. {
  23. if ( substr( $row['Field'], 0, 7 ) == "author_" )
  24. {
  25. $array_lang_exit[] .= trim( substr( $row['Field'], 7, 2 ) );
  26. }
  27. }
  28. function nv_admin_write_lang ( $dirlang, $idfile )
  29. {
  30. global $module_name, $db, $language_array, $global_config, $include_lang, $lang_module, $file_lang_tran_no_comp, $array_lang_exit, $array_lang_no_check;
  31. list( $module, $admin_file, $langtype, $author_lang ) = $db->sql_fetchrow( $db->sql_query( "SELECT `module`, `admin_file`, `langtype`, `author_" . $dirlang . "` FROM `" . NV_LANGUAGE_GLOBALTABLE . "_file` WHERE `idfile` ='" . intval( $idfile ) . "'" ) );
  32. if ( ! empty( $dirlang ) and ! empty( $module ) )
  33. {
  34. if ( empty( $author_lang ) )
  35. {
  36. $array_translator = array();
  37. $array_translator['author'] = "";
  38. $array_translator['createdate'] = "";
  39. $array_translator['copyright'] = "";
  40. $array_translator['info'] = "";
  41. $array_translator['langtype'] = $langtype;
  42. }
  43. else
  44. {
  45. eval( '$array_translator = ' . $author_lang . ';' );
  46. }
  47. $include_lang = "";
  48. $modules_exit = nv_scandir( NV_ROOTDIR . "/modules", $global_config['check_module'] );
  49. if ( $module == "global" and preg_match( "/^block\.global\.([a-zA-Z0-9\-\_]+)$/", $admin_file ) )
  50. {
  51. $include_lang = NV_ROOTDIR . "/language/" . $dirlang . "/" . $admin_file . ".php";
  52. }
  53. elseif ( in_array( $module, $modules_exit ) and preg_match( "/^block\.(global|module)\.([a-zA-Z0-9\-\_]+)$/", $admin_file ) )
  54. {
  55. $include_lang = NV_ROOTDIR . "/modules/" . $module . "/language/" . $admin_file . "_" . $dirlang . ".php";
  56. }
  57. elseif ( in_array( $module, $modules_exit ) and $admin_file == 1 )
  58. {
  59. $include_lang = NV_ROOTDIR . "/modules/" . $module . "/language/admin_" . $dirlang . ".php";
  60. }
  61. elseif ( in_array( $module, $modules_exit ) and $admin_file == 0 )
  62. {
  63. $include_lang = NV_ROOTDIR . "/modules/" . $module . "/language/" . $dirlang . ".php";
  64. }
  65. elseif ( $module == "global" and $admin_file == 1 )
  66. {
  67. $include_lang = NV_ROOTDIR . "/language/" . $dirlang . "/admin_" . $module . ".php";
  68. }
  69. elseif ( $module == "global" and $admin_file == 0 )
  70. {
  71. $include_lang = NV_ROOTDIR . "/language/" . $dirlang . "/" . $module . ".php";
  72. }
  73. elseif ( $module == "install" and $admin_file == 0 )
  74. {
  75. $include_lang = NV_ROOTDIR . "/language/" . $dirlang . "/" . $module . ".php";
  76. }
  77. else
  78. {
  79. $admin_file = 1;
  80. $include_lang = NV_ROOTDIR . "/language/" . $dirlang . "/admin_" . $module . ".php";
  81. }
  82. if ( $include_lang == "" )
  83. {
  84. return $lang_module['nv_error_write_module'] . " : " . $module;
  85. }
  86. else
  87. {
  88. if ( ! file_exists( $include_lang ) )
  89. {
  90. @file_put_contents( $include_lang, "", LOCK_EX );
  91. }
  92. if ( ! is_writable( $include_lang ) )
  93. {
  94. $errfile = str_replace( NV_ROOTDIR, "", str_replace( '\\', '/', $include_lang ) );
  95. return $lang_module['nv_error_write_file'] . " : " . $errfile;
  96. }
  97. $content_lang_no_tran = "";
  98. $content_lang = "<?php\n\n";
  99. $content_lang .= "/**\n";
  100. $content_lang .= "* @Project NUKEVIET 3.0\n";
  101. $content_lang .= "* @Author VINADES.,JSC (contact@vinades.vn)\n";
  102. $content_lang .= "* @Copyright (C) 2010 VINADES.,JSC. All rights reserved\n";
  103. $content_lang .= "* @Language " . $language_array[$dirlang]['name'] . "\n";
  104. $content_lang .= "* @Createdate " . date( "M d, Y, h:i:s A" ) . "\n";
  105. $content_lang .= "*/\n";
  106. if ( $admin_file )
  107. {
  108. $content_lang .= "\nif (! defined('NV_ADMIN') or ! defined('NV_MAINFILE')){\n";
  109. }
  110. else
  111. {
  112. $content_lang .= "\nif (!defined( 'NV_MAINFILE' )) {\n";
  113. }
  114. $content_lang .= " die('Stop!!!');\n";
  115. $content_lang .= "}\n";
  116. $content_lang .= "\n";
  117. $array_translator['info'] = ( isset( $array_translator['info'] ) ) ? $array_translator['info'] : "";
  118. $content_lang .= "\$lang_translator['author'] =\"$array_translator[author]\";\n";
  119. $content_lang .= "\$lang_translator['createdate'] =\"$array_translator[createdate]\";\n";
  120. $content_lang .= "\$lang_translator['copyright'] =\"$array_translator[copyright]\";\n";
  121. $content_lang .= "\$lang_translator['info'] =\"$array_translator[info]\";\n";
  122. $content_lang .= "\$lang_translator['langtype'] =\"$array_translator[langtype]\";\n";
  123. $content_lang .= "\n";
  124. $content_lang_no_check = "";
  125. if ( in_array( "vi", $array_lang_exit ) and in_array( "en", $array_lang_exit ) and $dirlang != "vi" and $dirlang != "en" )
  126. {
  127. $query = "SELECT `lang_key`, `lang_vi`, `lang_en`, `lang_" . $dirlang . "`, `update_" . $dirlang . "` FROM `" . NV_LANGUAGE_GLOBALTABLE . "` WHERE `idfile`='" . $idfile . "' ORDER BY `id` ASC";
  128. $result = $db->sql_query( $query );
  129. while ( list( $lang_key, $lang_value_vi, $lang_value_en, $lang_value, $update_time ) = $db->sql_fetchrow( $result ) )
  130. {
  131. if ( $lang_value != "" )
  132. {
  133. $lang_value = nv_unhtmlspecialchars( $lang_value );
  134. $lang_value = str_replace( '$', '\$', $lang_value );
  135. $lang_value = str_replace( '"', '\"', $lang_value );
  136. $lang_value = nv_nl2br( $lang_value );
  137. $lang_value = str_replace( '<br />', '<br />', $lang_value );
  138. $content_temp = "\$" . $langtype . "['" . $lang_key . "'] = \"$lang_value\";\n";
  139. $content_temp .= "/*\n";
  140. if ( $dirlang != "vi" and ! empty( $lang_value_vi ) )
  141. {
  142. $lang_value_vi = nv_unhtmlspecialchars( $lang_value_vi );
  143. $lang_value_vi = str_replace( '$', '\$', $lang_value_vi );
  144. $lang_value_vi = str_replace( '"', '\"', $lang_value_vi );
  145. $lang_value_vi = nv_nl2br( $lang_value_vi );
  146. $lang_value_vi = str_replace( '<br />', '<br />', $lang_value_vi );
  147. $content_temp .= "\t vietnam:\t " . $lang_value_vi . "\n";
  148. }
  149. if ( $dirlang != "en" and ! empty( $lang_value_en ) )
  150. {
  151. $lang_value_en = nv_unhtmlspecialchars( $lang_value_en );
  152. $lang_value_en = str_replace( '$', '\$', $lang_value_en );
  153. $lang_value_en = str_replace( '"', '\"', $lang_value_en );
  154. $lang_value_en = nv_nl2br( $lang_value_en );
  155. $lang_value_en = str_replace( '<br />', '<br />', $lang_value_en );
  156. $content_temp .= "\t english:\t " . $lang_value_en . "\n";
  157. }
  158. $content_temp .= "*/\n\n";
  159. if ( $update_time > 0 )
  160. {
  161. $content_lang .= $content_temp;
  162. }
  163. else
  164. {
  165. $content_lang_no_check .= $content_temp;
  166. }
  167. }
  168. }
  169. if ( ! empty( $content_lang_no_check ) )
  170. {
  171. $content_lang .= "\n\n/*---------------------------------------- language untested ----------------------------------------------*/\n";
  172. $content_lang .= $content_lang_no_check;
  173. $array_lang_no_check[] = $include_lang;
  174. }
  175. }
  176. else
  177. {
  178. $query = "SELECT `lang_key`, `lang_" . $dirlang . "` FROM `" . NV_LANGUAGE_GLOBALTABLE . "` WHERE `idfile`='" . $idfile . "' ORDER BY `id` ASC";
  179. $result = $db->sql_query( $query );
  180. while ( list( $lang_key, $lang_value ) = $db->sql_fetchrow( $result ) )
  181. {
  182. if ( $lang_value != "" )
  183. {
  184. $lang_value = nv_unhtmlspecialchars( $lang_value );
  185. $lang_value = str_replace( '$', '\$', $lang_value );
  186. $lang_value = str_replace( '"', '\"', $lang_value );
  187. $lang_value = nv_nl2br( $lang_value );
  188. $lang_value = str_replace( '<br />', '<br />', $lang_value );
  189. $content_lang .= "\$" . $langtype . "['" . $lang_key . "'] = \"$lang_value\";\n";
  190. }
  191. }
  192. }
  193. $content_lang .= "\n";
  194. $content_lang .= "?>";
  195. file_put_contents( $include_lang, $content_lang, LOCK_EX );
  196. }
  197. return "";
  198. }
  199. else
  200. {
  201. return $lang_module['nv_error_exit_module'] . " : " . $module;
  202. }
  203. }
  204. $include_lang = "";
  205. $page_title = $language_array[$dirlang]['name'];
  206. if ( $nv_Request->isset_request( 'idfile,checksess', 'get' ) and $nv_Request->get_string( 'checksess', 'get' ) == md5( $nv_Request->get_int( 'idfile', 'get' ) . session_id() ) )
  207. {
  208. $idfile = $nv_Request->get_int( 'idfile', 'get' );
  209. nv_mkdir( NV_ROOTDIR . "/language/", $dirlang );
  210. $contents = nv_admin_write_lang( $dirlang, $idfile );
  211. if ( empty( $contents ) )
  212. {
  213. $include_lang = str_replace( NV_ROOTDIR, "", str_replace( '\\', '/', $include_lang ) );
  214. $contents = $lang_module['nv_lang_wite_ok'] . ": " . $include_lang;
  215. $contents .= "<meta http-equiv=\"Refresh\" content=\"5;URL=" . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "&amp;" . NV_OP_VARIABLE . "=interface\" />";
  216. }
  217. include ( NV_ROOTDIR . "/includes/header.php" );
  218. echo nv_admin_theme( $contents );
  219. include ( NV_ROOTDIR . "/includes/footer.php" );
  220. }
  221. elseif ( $nv_Request->isset_request( 'checksess', 'get' ) and $nv_Request->get_string( 'checksess', 'get' ) == md5( "writeallfile" . session_id() ) )
  222. {
  223. $dirlang = $nv_Request->get_string( 'dirlang', 'get', '' );
  224. if ( $dirlang != "" )
  225. {
  226. nv_mkdir( NV_ROOTDIR . "/language/", $dirlang );
  227. $query = "SELECT `idfile`, `author_" . $dirlang . "` FROM `" . NV_LANGUAGE_GLOBALTABLE . "_file` ORDER BY `idfile` ASC";
  228. $result = $db->sql_query( $query );
  229. $contents = "";
  230. $array_filename = array();
  231. while ( list( $idfile, $author_lang ) = $db->sql_fetchrow( $result ) )
  232. {
  233. $contents = nv_admin_write_lang( $dirlang, $idfile );
  234. if ( ! empty( $contents ) )
  235. {
  236. break;
  237. }
  238. else
  239. {
  240. $array_filename[] = str_replace( NV_ROOTDIR, "", str_replace( '\\', '/', $include_lang ) );
  241. }
  242. }
  243. if ( empty( $contents ) )
  244. {
  245. $contents = "<br /><br /><p align=\"center\"><strong>" . $lang_module['nv_lang_wite_ok'] . "</strong></p>";
  246. $contents .= implode( "<br />", $array_filename );
  247. $array_lang_no_check = array_unique( $array_lang_no_check );
  248. //$contents .= "<br /><br /><b>file lang no check</b><br />";
  249. //$contents .= implode ( "<br />", $array_lang_no_check );
  250. $contents .= "<meta http-equiv=\"Refresh\" content=\"10;URL=" . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "&amp;" . NV_OP_VARIABLE . "=setting\" />";
  251. }
  252. }
  253. else
  254. {
  255. $contents = $lang_module['nv_error_write_file'];
  256. }
  257. include ( NV_ROOTDIR . "/includes/header.php" );
  258. echo nv_admin_theme( $contents );
  259. include ( NV_ROOTDIR . "/includes/footer.php" );
  260. }
  261. else
  262. {
  263. Header( "Location: " . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_VARIABLE . "=main&dirlang=" . $dirlang . "" );
  264. die();
  265. }
  266. ?>