PageRenderTime 27ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/01.Source/01.CORE/includes/rewrite.php

http://creative-portal.googlecode.com/
PHP | 234 lines | 204 code | 17 blank | 13 comment | 25 complexity | 23c89ba9bd3d0614327fcd5a2973d204 MD5 | raw file
Possible License(s): BSD-3-Clause
  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 31/05/2010, 00:36
  7. */
  8. if ( ! defined( 'NV_MAINFILE' ) ) die( 'Stop!!!' );
  9. if ( ! function_exists( 'nv_rewrite_change' ) )
  10. {
  11. /**
  12. * nv_rewrite_change()
  13. *
  14. * @param mixed $rewrite_optional
  15. * @return
  16. */
  17. function nv_rewrite_change ( $array_config_global )
  18. {
  19. global $sys_info, $lang_module;
  20. $reval = $filename = "";
  21. if ( $sys_info['supports_rewrite'] == "rewrite_mode_iis" )
  22. {
  23. $filename = "web.config";
  24. $reval = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
  25. $reval .= "<configuration>\n";
  26. $reval .= " <system.webServer>\n";
  27. $reval .= " <rewrite>\n";
  28. $reval .= " <rules>\n";
  29. if ( $array_config_global['rewrite_optional'] )
  30. {
  31. $reval .= " <rule name=\"Imported Rule 4\">\n";
  32. $reval .= " <match url=\"^([a-z0-9-]+)/([a-zA-Z0-9-/]+)/$\" ignoreCase=\"false\" />\n";
  33. $reval .= " <action type=\"Rewrite\" url=\"index.php?" . NV_NAME_VARIABLE . "={R:1}&amp;" . NV_OP_VARIABLE . "={R:2}\" appendQueryString=\"false\" />\n";
  34. $reval .= " </rule>\n";
  35. $reval .= " <rule name=\"Imported Rule 42\">\n";
  36. $reval .= " <match url=\"^([a-z0-9-]+)/([a-zA-Z0-9-/]+)$\" ignoreCase=\"false\" />\n";
  37. $reval .= " <action type=\"Rewrite\" url=\"index.php?" . NV_NAME_VARIABLE . "={R:1}&amp;" . NV_OP_VARIABLE . "={R:2}\" appendQueryString=\"false\" />\n";
  38. $reval .= " </rule>\n";
  39. $reval .= " <rule name=\"Imported Rule 3\">\n";
  40. $reval .= " <match url=\"" . NV_ADMINDIR . "[/]*$\" ignoreCase=\"false\" />\n";
  41. $reval .= " <action type=\"Rewrite\" url=\"" . NV_ADMINDIR . "/index.php\" appendQueryString=\"false\" />\n";
  42. $reval .= " </rule>\n";
  43. if ( defined( 'DIR_FORUM' ) and DIR_FORUM != "" and is_dir( NV_ROOTDIR . "/" . DIR_FORUM ) )
  44. {
  45. $reval .= " <rule name=\"Imported Rule 32\">\n";
  46. $reval .= " <match url=\"" . DIR_FORUM . "[/]*$\" ignoreCase=\"false\" />\n";
  47. $reval .= " <action type=\"Rewrite\" url=\"" . DIR_FORUM . "/index.php\" appendQueryString=\"false\" />\n";
  48. $reval .= " </rule>\n";
  49. }
  50. $reval .= " <rule name=\"Imported Rule 2\">\n";
  51. $reval .= " <match url=\"^([a-z0-9-]+)/$\" ignoreCase=\"false\" />\n";
  52. $reval .= " <action type=\"Rewrite\" url=\"index.php?" . NV_NAME_VARIABLE . "={R:1}\" appendQueryString=\"false\" />\n";
  53. $reval .= " </rule>\n";
  54. $reval .= " <rule name=\"Imported Rule 22\">\n";
  55. $reval .= " <match url=\"^([a-z0-9-]+)$\" ignoreCase=\"false\" />\n";
  56. $reval .= " <action type=\"Rewrite\" url=\"index.php?" . NV_NAME_VARIABLE . "={R:1}\" appendQueryString=\"false\" />\n";
  57. $reval .= " </rule>\n";
  58. }
  59. else
  60. {
  61. $reval .= " <rule name=\"Imported Rule 4\">\n";
  62. $reval .= " <match url=\"^([a-z-]+)/([a-z0-9-]+)/([a-zA-Z0-9-/]+)/$\" ignoreCase=\"false\" />\n";
  63. $reval .= " <action type=\"Rewrite\" url=\"index.php?" . NV_LANG_VARIABLE . "={R:1}&amp;" . NV_NAME_VARIABLE . "={R:2}&amp;" . NV_OP_VARIABLE . "={R:3}\" appendQueryString=\"false\" />\n";
  64. $reval .= " </rule>\n";
  65. $reval .= " <rule name=\"Imported Rule 42\">\n";
  66. $reval .= " <match url=\"^([a-z-]+)/([a-z0-9-]+)/([a-zA-Z0-9-/]+)$\" ignoreCase=\"false\" />\n";
  67. $reval .= " <action type=\"Rewrite\" url=\"index.php?" . NV_LANG_VARIABLE . "={R:1}&amp;" . NV_NAME_VARIABLE . "={R:2}&amp;" . NV_OP_VARIABLE . "={R:3}\" appendQueryString=\"false\" />\n";
  68. $reval .= " </rule>\n";
  69. $reval .= " <rule name=\"Imported Rule 3\">\n";
  70. $reval .= " <match url=\"^([a-z-]+)/([a-z0-9-]+)/$\" ignoreCase=\"false\" />\n";
  71. $reval .= " <action type=\"Rewrite\" url=\"index.php?" . NV_LANG_VARIABLE . "={R:1}&amp;" . NV_NAME_VARIABLE . "={R:2}\" appendQueryString=\"false\" />\n";
  72. $reval .= " </rule>\n";
  73. $reval .= " <rule name=\"Imported Rule 32\">\n";
  74. $reval .= " <match url=\"^([a-z-]+)/([a-z0-9-]+)$\" ignoreCase=\"false\" />\n";
  75. $reval .= " <action type=\"Rewrite\" url=\"index.php?" . NV_LANG_VARIABLE . "={R:1}&amp;" . NV_NAME_VARIABLE . "={R:2}\" appendQueryString=\"false\" />\n";
  76. $reval .= " </rule>\n";
  77. $reval .= " <rule name=\"Imported Rule 2\">\n";
  78. $reval .= " <match url=\"" . NV_ADMINDIR . "[/]*$\" ignoreCase=\"false\" />\n";
  79. $reval .= " <action type=\"Rewrite\" url=\"" . NV_ADMINDIR . "/index.php\" appendQueryString=\"false\" />\n";
  80. $reval .= " </rule>\n";
  81. if ( defined( 'DIR_FORUM' ) and DIR_FORUM != "" and is_dir( NV_ROOTDIR . "/" . DIR_FORUM ) )
  82. {
  83. $reval .= " <rule name=\"Imported Rule 22\">\n";
  84. $reval .= " <match url=\"" . DIR_FORUM . "[/]*$\" ignoreCase=\"false\" />\n";
  85. $reval .= " <action type=\"Rewrite\" url=\"" . DIR_FORUM . "/index.php\" appendQueryString=\"false\" />\n";
  86. $reval .= " </rule>\n";
  87. }
  88. $reval .= " <rule name=\"Imported Rule 1\">\n";
  89. $reval .= " <match url=\"^([a-z0-9-]+)/$\" ignoreCase=\"false\" />\n";
  90. $reval .= " <action type=\"Rewrite\" url=\"index.php?" . NV_LANG_VARIABLE . "={R:1}\" appendQueryString=\"false\" />\n";
  91. $reval .= " </rule>\n";
  92. $reval .= " <rule name=\"Imported Rule 12\">\n";
  93. $reval .= " <match url=\"^([a-z0-9-]+)$\" ignoreCase=\"false\" />\n";
  94. $reval .= " <action type=\"Rewrite\" url=\"index.php?" . NV_LANG_VARIABLE . "={R:1}\" appendQueryString=\"false\" />\n";
  95. $reval .= " </rule>\n";
  96. }
  97. $reval .= " <rule name=\"Imported Rule 0\">\n";
  98. $reval .= " <match url=\"^files/(.+)\" ignoreCase=\"false\" />\n";
  99. $reval .= " <action type=\"Rewrite\" url=\"index.php\" appendQueryString=\"false\" />\n";
  100. $reval .= " </rule>\n";
  101. $reval .= " </rules>\n";
  102. $reval .= " </rewrite>\n";
  103. $reval .= " </system.webServer>\n";
  104. $reval .= "</configuration>\n";
  105. }
  106. elseif ( $sys_info['supports_rewrite'] == "rewrite_mode_apache" )
  107. {
  108. // just rename .htaccess.sample to .htaccess file.
  109. $sample_filename = ".htaccess.sample";
  110. $filename = ".htaccess";
  111. $htaccess = "";
  112. if(!file_exists(NV_ROOTDIR . '/' .$sample_filename))
  113. {
  114. return "Missing sample file.";
  115. }
  116. if ( file_exists( NV_ROOTDIR . '/' . $filename ) )
  117. {
  118. unlink(NV_ROOTDIR.'/'.$filename);
  119. }
  120. copy(NV_ROOTDIR . '/' .$sample_filename, NV_ROOTDIR . '/' .$filename);
  121. return;
  122. $reval = "##################################################################################\n";
  123. $reval .= "#nukeviet_rewrite_start //Please do not change the contents of the following lines\n";
  124. $reval .= "##################################################################################\n\n";
  125. $reval .= "#Options +FollowSymLinks\n\n";
  126. $reval .= "<IfModule mod_rewrite.c>\n";
  127. $reval .= "RewriteEngine On\n";
  128. $reval .= "RewriteCond %{REQUEST_FILENAME} !-f\n";
  129. $reval .= "RewriteCond %{REQUEST_FILENAME} !-d\n";
  130. if ( $array_config_global['rewrite_optional'] )
  131. {
  132. $reval .= "RewriteRule ^([a-z0-9-]+)/([a-zA-Z0-9-/]+)/$ index.php?" . NV_NAME_VARIABLE . "=$1&" . NV_OP_VARIABLE . "=$2\n";
  133. $reval .= "RewriteRule ^([a-z0-9-]+)/([a-zA-Z0-9-/]+)$ index.php?" . NV_NAME_VARIABLE . "=$1&" . NV_OP_VARIABLE . "=$2\n";
  134. $reval .= "RewriteRule ^" . NV_ADMINDIR . "[/]*$ " . NV_ADMINDIR . "/index.php\n";
  135. if ( defined( 'DIR_FORUM' ) and DIR_FORUM != "" and is_dir( NV_ROOTDIR . "/" . DIR_FORUM ) )
  136. {
  137. $reval .= "RewriteRule ^" . DIR_FORUM . "[/]*$ " . DIR_FORUM . "/index.php\n";
  138. }
  139. $reval .= "RewriteRule ^([a-z0-9-]+)/$ index.php?" . NV_NAME_VARIABLE . "=$1\n";
  140. $reval .= "RewriteRule ^([a-z0-9-]+)$ index.php?" . NV_NAME_VARIABLE . "=$1\n";
  141. }
  142. else
  143. {
  144. $reval .= "RewriteRule ^([a-z-]+)/([a-z0-9-]+)/([a-zA-Z0-9-/]+)/$ index.php?" . NV_LANG_VARIABLE . "=$1&" . NV_NAME_VARIABLE . "=$2&" . NV_OP_VARIABLE . "=$3\n";
  145. $reval .= "RewriteRule ^([a-z-]+)/([a-z0-9-]+)/([a-zA-Z0-9-/]+)$ index.php?" . NV_LANG_VARIABLE . "=$1&" . NV_NAME_VARIABLE . "=$2&" . NV_OP_VARIABLE . "=$3\n";
  146. $reval .= "RewriteRule ^([a-z-]+)/([a-z0-9-]+)/$ index.php?" . NV_LANG_VARIABLE . "=$1&" . NV_NAME_VARIABLE . "=$2\n";
  147. $reval .= "RewriteRule ^([a-z-]+)/([a-z0-9-]+)$ index.php?" . NV_LANG_VARIABLE . "=$1&" . NV_NAME_VARIABLE . "=$2\n";
  148. $reval .= "RewriteRule ^" . NV_ADMINDIR . "[/]*$ " . NV_ADMINDIR . "/index.php\n";
  149. if ( defined( 'DIR_FORUM' ) and DIR_FORUM != "" and is_dir( NV_ROOTDIR . "/" . DIR_FORUM ) )
  150. {
  151. $reval .= "RewriteRule ^" . DIR_FORUM . "[/]*$ " . DIR_FORUM . "/index.php\n";
  152. }
  153. $reval .= "RewriteRule ^([a-z-]+)/$ index.php?" . NV_LANG_VARIABLE . "=$1\n";
  154. $reval .= "RewriteRule ^([a-z-]+)$ index.php?" . NV_LANG_VARIABLE . "=$1\n";
  155. }
  156. $reval .= "RewriteRule ^files/(.+) index.php\n";
  157. $reval .= "</IfModule>\n\n";
  158. $reval .= "#nukeviet_rewrite_end\n";
  159. $reval .= "##################################################################################\n\n";
  160. if ( file_exists( NV_ROOTDIR . '/' . $filename ) )
  161. {
  162. $htaccess = @file_get_contents( NV_ROOTDIR . '/' . $filename );
  163. if ( ! empty( $htaccess ) )
  164. {
  165. $htaccess = preg_replace( "/[\n]*[\#]+[\n]+\#nukeviet\_rewrite\_start(.*)\#nukeviet\_rewrite\_end[\n]+[\#]+[\n]*/s", "\n", $htaccess );
  166. $htaccess = trim( $htaccess );
  167. }
  168. }
  169. $htaccess .= "\n\n" . $reval;
  170. $reval = $htaccess;
  171. }
  172. $errormess = false;
  173. if ( ! empty( $filename ) and ! empty( $reval ) )
  174. {
  175. $savefile = true;
  176. try
  177. {
  178. file_put_contents( NV_ROOTDIR . "/" . $filename, $reval, LOCK_EX );
  179. if ( ! file_exists( NV_ROOTDIR . "/" . $filename ) or filesize( NV_ROOTDIR . "/" . $filename ) == 0 )
  180. {
  181. $errormess .= sprintf( $lang_module['err_writable'], NV_BASE_SITEURL . $filename );
  182. $savefile = false;
  183. }
  184. }
  185. catch ( Exception $e )
  186. {
  187. $savefile = false;
  188. }
  189. if ( ! $savefile )
  190. {
  191. $errormess .= sprintf( $lang_module['err_writable'], NV_BASE_SITEURL . $filename );
  192. }
  193. }
  194. return $errormess;
  195. }
  196. }
  197. $rewrite = array();
  198. if ( $global_config['rewrite_optional'] && $global_config['is_url_rewrite'] )
  199. {
  200. $rewrite["#([\"|\']" . NV_BASE_SITEURL . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*" . NV_NAME_VARIABLE . "=([a-zA-Z0-9-/]*)\&[amp;]*" . NV_OP_VARIABLE . "=([a-zA-Z0-9-/]*)([\"|\'])#"] = "\\1\\3/\\4/\\5";
  201. $rewrite["#([\"|\']" . NV_BASE_SITEURL . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*" . NV_NAME_VARIABLE . "=([a-zA-Z0-9-/]*)([\"|\'])#"] = "\\1\\3/\\4";
  202. $rewrite["#([\"|\']" . NV_BASE_SITEURL . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)([\"|\'])#"] = "\\1\\3";
  203. $rewrite["#([\"|\'|\>]" . $global_config['site_url'] . "/" . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*" . NV_NAME_VARIABLE . "=([a-zA-Z0-9-/]*)\&[amp;]*" . NV_OP_VARIABLE . "=([a-zA-Z0-9-/]*)([\"|\'|\<])#"] = "\\1\\3/\\4/\\5\\6";
  204. }
  205. else
  206. {
  207. $rewrite["#([\"|\']" . NV_BASE_SITEURL . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*" . NV_NAME_VARIABLE . "=([a-zA-Z0-9-/]*)\&[amp;]*" . NV_OP_VARIABLE . "=([a-zA-Z0-9-/]*)([\"|\'])#"] = "\\1\\2/\\3/\\4/\\5";
  208. $rewrite["#([\"|\']" . NV_BASE_SITEURL . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*" . NV_NAME_VARIABLE . "=([a-zA-Z0-9-/]*)([\"|\'])#"] = "\\1\\2/\\3/\\4";
  209. $rewrite["#([\"|\']" . NV_BASE_SITEURL . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)([\"|\'])#"] = "\\1\\2/\\3";
  210. $rewrite["#([\"|\'|\>]" . $global_config['site_url'] . "/" . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*" . NV_NAME_VARIABLE . "=([a-zA-Z0-9-/]*)\&[amp;]*" . NV_OP_VARIABLE . "=([a-zA-Z0-9-/]*)([\"|\'|\<])#"] = "\\1\\2/\\3/\\4/\\5\\6";
  211. $rewrite["#([\"|\']*" . NV_BASE_SITEURL . ")index.php*\?".NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*". NV_NAME_VARIABLE . "=([a-zA-Z0-9-/]*)\&[amp;]*". NV_OP_VARIABLE . "=([a-zA-Z0-9-/]*)\&[amp;]*"."f=([n])\&[amp;]*" ."r=([a-zA-Z0-9-]*)" ."([\"|\']*)#"] = "\\1\\2/\\3/\\4/\\5/\\6/\\7";
  212. $rewrite["#([\"|\']*" . NV_BASE_SITEURL . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*" . NV_NAME_VARIABLE . "=([a-zA-Z0-9-/]*)\&[amp;]*" . NV_OP_VARIABLE . "=([a-zA-Z0-9-/]*)\&[amp;]*f=([mn])([\"|\']*)#"] = "\\1\\2/\\3/\\4/\\5/\\6";
  213. $rewrite["#([\"|\']*" . NV_BASE_SITEURL . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*" . NV_NAME_VARIABLE . "=(banners)\&[amp;]*" . NV_OP_VARIABLE . "=([a-zA-Z0-9-/]*)\&[amp;]*id=([0-9]*[]^\s)([\"|\']*)#"] = "\\1\\2/\\3/\\4/\\5";
  214. $rewrite["#([\"|\']*" . NV_BASE_SITEURL . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*" . NV_NAME_VARIABLE . "=(news)\&[amp;]*" . NV_OP_VARIABLE . "=(search)\&[amp;]*q=(.*)\&[amp;]*mod=(all)([\"|\']*)$#"] = "\\1\\2/\\3/\\4/\\5/\\6";
  215. $rewrite["#([\"|\']*" . NV_BASE_SITEURL . ")index.php*\?" . NV_LANG_VARIABLE . "=([a-z-]*)\&[amp;]*" . NV_NAME_VARIABLE . "=(news)\&[amp;]*" . NV_OP_VARIABLE . "=(([\d\w-]+)/([\d\w-]+))([\"|\']*)$#"] = "\\1\\2/\\3/\\5/\\6";
  216. }
  217. ?>