PageRenderTime 28ms CodeModel.GetById 1ms RepoModel.GetById 0ms app.codeStats 0ms

/nukeviet/admin/modules/language/read.php

http://nuke-viet.googlecode.com/
PHP | 262 lines | 214 code | 33 blank | 15 comment | 31 complexity | d549eb39c1f094628396f58f4818f1b9 MD5 | raw file
Possible License(s): BSD-3-Clause, LGPL-2.1, GPL-2.0
  1. <?php
  2. /**
  3. * @Project NUKEVIET 3.x
  4. * @Author VINADES.,JSC (contact@vinades.vn)
  5. * @Copyright (C) 2012 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_read_lang()
  11. *
  12. * @param mixed $dirlang
  13. * @param mixed $idfile
  14. * @return error read file
  15. */
  16. function nv_admin_read_lang( $dirlang, $module, $admin_file = 1 )
  17. {
  18. global $db, $global_config, $include_lang, $lang_module;
  19. $include_lang = "";
  20. $modules_exit = nv_scandir( NV_ROOTDIR . "/modules", $global_config['check_module'] );
  21. if( $module == "global" and preg_match( "/^block\.global\.([a-zA-Z0-9\-\_]+)\.php$/", $admin_file, $m ) )
  22. {
  23. $include_lang = NV_ROOTDIR . "/language/" . $dirlang . "/" . $admin_file;
  24. $admin_file = 'block.global.' . $m[1];
  25. }
  26. elseif( preg_match( "/^block\.(global|module)\.([a-zA-Z0-9\-\_]+)\_" . $dirlang . "\.php$/", $admin_file, $m ) )
  27. {
  28. $include_lang = NV_ROOTDIR . "/modules/" . $module . "/language/" . $admin_file;
  29. $admin_file = 'block.' . $m[1] . '.' . $m[2];
  30. }
  31. elseif( $module == "global" and $admin_file == 1 )
  32. {
  33. $include_lang = NV_ROOTDIR . "/language/" . $dirlang . "/admin_" . $module . ".php";
  34. }
  35. elseif( $module == "global" and $admin_file == 0 )
  36. {
  37. $include_lang = NV_ROOTDIR . "/language/" . $dirlang . "/" . $module . ".php";
  38. }
  39. elseif( $module == "install" and $admin_file == 0 )
  40. {
  41. $include_lang = NV_ROOTDIR . "/language/" . $dirlang . "/" . $module . ".php";
  42. }
  43. elseif( in_array( $module, $modules_exit ) and $admin_file == 1 )
  44. {
  45. $include_lang = NV_ROOTDIR . "/modules/" . $module . "/language/admin_" . $dirlang . ".php";
  46. }
  47. elseif( in_array( $module, $modules_exit ) and $admin_file == 0 )
  48. {
  49. $include_lang = NV_ROOTDIR . "/modules/" . $module . "/language/" . $dirlang . ".php";
  50. }
  51. elseif( file_exists( NV_ROOTDIR . "/language/" . $dirlang . "/admin_" . $module . ".php" ) )
  52. {
  53. $admin_file = 1;
  54. $include_lang = NV_ROOTDIR . "/language/" . $dirlang . "/admin_" . $module . ".php";
  55. }
  56. if( $include_lang != "" and file_exists( $include_lang ) )
  57. {
  58. $lang_module_temp = $lang_module;
  59. $lang_module = array();
  60. $lang_global = array();
  61. $lang_block = array();
  62. $lang_translator = array();
  63. include ( $include_lang );
  64. list( $idfile, $langtype ) = $db->sql_fetchrow( $db->sql_query( "SELECT idfile, langtype FROM `" . NV_LANGUAGE_GLOBALTABLE . "_file` WHERE `module` =" . $db->dbescape( $module ) . " AND `admin_file`=" . $db->dbescape( $admin_file ) ) );
  65. if( intval( $idfile ) == 0 )
  66. {
  67. $langtype = isset( $lang_translator['langtype'] ) ? strip_tags( $lang_translator['langtype'] ) : "lang_module";
  68. $lang_translator_save = array();
  69. $lang_translator_save['author'] = isset( $lang_translator['author'] ) ? strip_tags( $lang_translator['author'] ) : "VINADES.,JSC (contact@vinades.vn)";
  70. $lang_translator_save['createdate'] = isset( $lang_translator['createdate'] ) ? strip_tags( $lang_translator['createdate'] ) : date( "d/m/Y, H:i" );
  71. $lang_translator_save['copyright'] = isset( $lang_translator['copyright'] ) ? strip_tags( $lang_translator['copyright'] ) : "Copyright (C) 2010 VINADES.,JSC. All rights reserved";
  72. $lang_translator_save['info'] = isset( $lang_translator['info'] ) ? strip_tags( $lang_translator['info'] ) : "";
  73. $lang_translator_save['langtype'] = $langtype;
  74. //$author = base64_encode( serialize( $lang_translator_save ) );
  75. $author = var_export( $lang_translator_save, true );
  76. $idfile = $db->sql_query_insert_id( "INSERT INTO `" . NV_LANGUAGE_GLOBALTABLE . "_file` (`idfile`, `module`, `admin_file`, `langtype`, `author_" . $dirlang . "`) VALUES (NULL, " . $db->dbescape( $module ) . ", " . $db->dbescape( $admin_file ) . ", " . $db->dbescape( $langtype ) . ", '" . mysql_real_escape_string( $author ) . "')" );
  77. if( ! $idfile )
  78. {
  79. nv_info_die( $lang_global['error_404_title'], $lang_global['error_404_title'], "Error insert file: " . $filelang );
  80. }
  81. }
  82. else
  83. {
  84. $lang_translator_save = array();
  85. $langtype = isset( $lang_translator['langtype'] ) ? strip_tags( $lang_translator['langtype'] ) : "lang_module";
  86. $lang_translator_save['author'] = isset( $lang_translator['author'] ) ? strip_tags( $lang_translator['author'] ) : "VINADES.,JSC (contact@vinades.vn)";
  87. $lang_translator_save['createdate'] = isset( $lang_translator['createdate'] ) ? strip_tags( $lang_translator['createdate'] ) : date( "d/m/Y, H:i" );
  88. $lang_translator_save['copyright'] = isset( $lang_translator['copyright'] ) ? strip_tags( $lang_translator['copyright'] ) : "Copyright (C) 2010 VINADES.,JSC. All rights reserved";
  89. $lang_translator_save['info'] = isset( $lang_translator['info'] ) ? strip_tags( $lang_translator['info'] ) : "";
  90. $lang_translator_save['langtype'] = $langtype;
  91. //$author = base64_encode( serialize( $lang_translator_save ) );
  92. $author = var_export( $lang_translator_save, true );
  93. $sql = "UPDATE `" . NV_LANGUAGE_GLOBALTABLE . "_file` SET `author_" . $dirlang . "` = '" . mysql_real_escape_string( $author ) . "' WHERE `idfile` = '" . $idfile . "'";
  94. $db->sql_query( $sql );
  95. }
  96. $temp_lang = array();
  97. switch( $langtype )
  98. {
  99. case 'lang_global':
  100. $temp_lang = $lang_global;
  101. break;
  102. case 'lang_module':
  103. $temp_lang = $lang_module;
  104. break;
  105. case 'lang_block':
  106. $temp_lang = $lang_block;
  107. break;
  108. }
  109. $result = $db->sql_query( "SHOW COLUMNS FROM `" . NV_LANGUAGE_GLOBALTABLE . "_file`" );
  110. $add_field = true;
  111. $array_lang_key = array();
  112. $array_lang_value = array();
  113. while( $row = $db->sql_fetch_assoc( $result ) )
  114. {
  115. if( substr( $row['Field'], 0, 7 ) == "author_" and $row['Field'] != "author_" . $dirlang )
  116. {
  117. $array_lang_key[] = str_replace( "author_", "lang_", $row['Field'] );
  118. $array_lang_value[] = "";
  119. }
  120. }
  121. $string_lang_key = implode( "`, `", $array_lang_key );
  122. $string_lang_value = "";
  123. if( $string_lang_key != "" )
  124. {
  125. $string_lang_key = ", `" . $string_lang_key . "`";
  126. $string_lang_value = implode( "', '", $array_lang_value );
  127. $string_lang_value = ", '" . $string_lang_value . "'";
  128. }
  129. $read_type = intval( $global_config['read_type'] );
  130. while( list( $lang_key, $lang_value ) = each( $temp_lang ) )
  131. {
  132. $check_type_update = false;
  133. $lang_key = trim( $lang_key );
  134. $lang_value = nv_nl2br( $lang_value );
  135. $lang_value = str_replace( '<br />', '<br />', $lang_value );
  136. $lang_value = str_replace( '<br />', '<br />', $lang_value );
  137. if( $read_type == 0 or $read_type == 1 )
  138. {
  139. $sql = "INSERT INTO `" . NV_LANGUAGE_GLOBALTABLE . "` (`id`, `idfile`, `lang_key`, `lang_" . $dirlang . "`, `update_" . $dirlang . "` " . $string_lang_key . ") VALUES (NULL, '" . $idfile . "', '" . mysql_real_escape_string( $lang_key ) . "', '" . mysql_real_escape_string( $lang_value ) . "', UNIX_TIMESTAMP( ) " . $string_lang_value . ")";
  140. if( ! $db->sql_query_insert_id( $sql ) and $read_type == 0 )
  141. {
  142. $check_type_update = true;
  143. }
  144. }
  145. if( $read_type == 2 or $check_type_update )
  146. {
  147. $sql = "UPDATE `" . NV_LANGUAGE_GLOBALTABLE . "` SET `lang_" . $dirlang . "` = '" . mysql_real_escape_string( $lang_value ) . "', `update_" . $dirlang . "` = UNIX_TIMESTAMP( ) WHERE `idfile` = '" . $idfile . "' AND `lang_key` = '" . mysql_real_escape_string( $lang_key ) . "' LIMIT 1";
  148. $db->sql_query( $sql );
  149. }
  150. }
  151. $lang_module = $lang_module_temp;
  152. return "";
  153. }
  154. else
  155. {
  156. $include_lang = "";
  157. return $lang_module['nv_error_exit_module'] . " : " . $module;
  158. }
  159. }
  160. $dirlang = filter_text_input( 'dirlang', 'get', '' );
  161. $page_title = $language_array[$dirlang]['name'] . ": " . $lang_module['nv_admin_read'];
  162. if( $nv_Request->get_string( 'checksess', 'get' ) == md5( "readallfile" . session_id() ) )
  163. {
  164. if( ! empty( $dirlang ) and is_dir( NV_ROOTDIR . "/language/" . $dirlang ) )
  165. {
  166. $array_filename = array();
  167. nv_admin_add_field_lang( $dirlang );
  168. nv_admin_read_lang( $dirlang, "global", 0 );
  169. nv_admin_read_lang( $dirlang, "install", 0 );
  170. $array_filename[] = str_replace( NV_ROOTDIR, "", str_replace( '\\', '/', $include_lang ) );
  171. nv_admin_read_lang( $dirlang, "global", 1 );
  172. $array_filename[] = str_replace( NV_ROOTDIR, "", str_replace( '\\', '/', $include_lang ) );
  173. $dirs = nv_scandir( NV_ROOTDIR . "/" . NV_ADMINDIR . "/modules", $global_config['check_module'] );
  174. foreach( $dirs as $module )
  175. {
  176. nv_admin_read_lang( $dirlang, $module, 1 );
  177. $array_filename[] = str_replace( NV_ROOTDIR, "", str_replace( '\\', '/', $include_lang ) );
  178. }
  179. $dirs = nv_scandir( NV_ROOTDIR . "/language/" . $dirlang, "/^block\.global\.([a-zA-Z0-9\-\_]+)\.php$/" );
  180. foreach( $dirs as $file_i )
  181. {
  182. nv_admin_read_lang( $dirlang, 'global', $file_i );
  183. }
  184. $dirs = nv_scandir( NV_ROOTDIR . "/modules", $global_config['check_module'] );
  185. foreach( $dirs as $module )
  186. {
  187. nv_admin_read_lang( $dirlang, $module, 0 );
  188. $array_filename[] = str_replace( NV_ROOTDIR, "", str_replace( '\\', '/', $include_lang ) );
  189. nv_admin_read_lang( $dirlang, $module, 1 );
  190. $array_filename[] = str_replace( NV_ROOTDIR, "", str_replace( '\\', '/', $include_lang ) );
  191. $blocks = nv_scandir( NV_ROOTDIR . "/modules/" . $module . "/language/", "/^block\.(global|module)\.([a-zA-Z0-9\-\_]+)\_" . $dirlang . "\.php$/" );
  192. foreach( $blocks as $file_i )
  193. {
  194. nv_admin_read_lang( $dirlang, $module, $file_i );
  195. }
  196. }
  197. $nv_Request->set_Cookie( 'dirlang', $dirlang, NV_LIVE_COOKIE_TIME );
  198. $xtpl = new XTemplate( "read.tpl", NV_ROOTDIR . "/themes/" . $global_config['module_theme'] . "/modules/" . $module_file );
  199. $xtpl->assign( 'LANG', $lang_module );
  200. $xtpl->assign( 'GLANG', $lang_global );
  201. $xtpl->assign( 'URL', NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name . "&" . NV_OP_VARIABLE . "=interface" );
  202. foreach( $array_filename as $name )
  203. {
  204. if( ! $name ) continue;
  205. $xtpl->assign( 'NAME', $name );
  206. $xtpl->assign( 'CLASS', ++ $i % 2 ? ' class="second"' : '' );
  207. $xtpl->parse( 'main.loop' );
  208. }
  209. $xtpl->parse( 'main' );
  210. $contents = $xtpl->text( 'main' );
  211. include ( NV_ROOTDIR . "/includes/header.php" );
  212. echo nv_admin_theme( $contents );
  213. include ( NV_ROOTDIR . "/includes/footer.php" );
  214. }
  215. }
  216. Header( "Location: " . NV_BASE_ADMINURL . "index.php?" . NV_NAME_VARIABLE . "=" . $module_name );
  217. ?>