PageRenderTime 52ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/install/action.summary.php

https://github.com/good-web-master/modx.evo.custom
PHP | 304 lines | 261 code | 14 blank | 29 comment | 82 complexity | 557920ff7ac0df8ca326bd93f1d87fbe MD5 | raw file
Possible License(s): LGPL-2.1, AGPL-1.0, GPL-2.0, MIT, BSD-3-Clause
  1. <?php
  2. $installMode = intval($_POST['installmode']);
  3. echo "<h2>" . $_lang['preinstall_validation'] . "</h2>";
  4. echo "<h3>" . $_lang['summary_setup_check'] . "</h3>";
  5. $errors = 0;
  6. // check PHP version
  7. echo "<p>" . $_lang['checking_php_version'];
  8. $php_ver_comp = version_compare(phpversion(), "4.2.0");
  9. $php_ver_comp2 = version_compare(phpversion(), "4.3.8");
  10. // -1 if left is less, 0 if equal, +1 if left is higher
  11. if ($php_ver_comp < 0) {
  12. echo "<span class=\"notok\">" . $_lang['failed'] . "</span>".$_lang['you_running_php'] . phpversion() . $_lang["modx_requires_php"]."</p>";
  13. $errors += 1;
  14. } else {
  15. echo "<span class=\"ok\">" . $_lang['ok'] . "</span></p>";
  16. if ($php_ver_comp2 < 0) {
  17. echo "<fieldset>" . $_lang['php_security_notice'] . "</fieldset>";
  18. }
  19. }
  20. // check php register globals off
  21. echo "<p>" . $_lang['checking_registerglobals'];
  22. $register_globals = (int) ini_get('register_globals');
  23. if ($register_globals == '1'){
  24. echo "<span class=\"notok\">" . $_lang['failed']. "</span></p><p><strong>".$_lang['checking_registerglobals_note']."</strong></p>";
  25. // $errors += 1; // comment out for now so we still allow installs if folks are simply stubborn
  26. } else {
  27. echo "<span class=\"ok\">" . $_lang['ok'] . "</span></p>";
  28. }
  29. // check sessions
  30. echo "<p>" . $_lang['checking_sessions'];
  31. if ($_SESSION['test'] != 1) {
  32. echo "<span class=\"notok\">" . $_lang['failed']. "</span></p>";
  33. $errors += 1;
  34. } else {
  35. echo "<span class=\"ok\">" . $_lang['ok'] . "</span></p>";
  36. }
  37. // check directories
  38. // cache exists?
  39. echo "<p>" . $_lang['checking_if_cache_exist'];
  40. if (!file_exists("../assets/cache") || !file_exists("../assets/cache/rss")) {
  41. echo "<span class=\"notok\">" . $_lang['failed'] . "</span></p>";
  42. $errors += 1;
  43. } else {
  44. echo "<span class=\"ok\">" . $_lang['ok'] . "</span></p>";
  45. }
  46. // cache writable?
  47. echo "<p>" . $_lang['checking_if_cache_writable'];
  48. if (!is_writable("../assets/cache") || !file_exists("../assets/media")) {
  49. echo "<span class=\"notok\">" . $_lang['failed'] . "</span></p>";
  50. $errors += 1;
  51. } else {
  52. echo "<span class=\"ok\">" . $_lang['ok'] . "</span></p>";
  53. }
  54. // cache files writable?
  55. echo "<p>" . $_lang['checking_if_cache_file_writable'];
  56. if (!is_writable("../assets/cache/siteCache.idx.php")) {
  57. echo "<span class=\"notok\">" . $_lang['failed'] . "</span></p>";
  58. $errors += 1;
  59. } else {
  60. echo "<span class=\"ok\">".$_lang['ok']."</span></p>";
  61. }
  62. echo "<p>".$_lang['checking_if_cache_file2_writable'];
  63. if (!is_writable("../assets/cache/sitePublishing.idx.php")) {
  64. echo "<span class=\"notok\">".$_lang['failed']."</span></p>";
  65. $errors += 1;
  66. } else {
  67. echo "<span class=\"ok\">".$_lang['ok']."</span></p>";
  68. }
  69. // File Browser directories exists?
  70. echo "<p>".$_lang['checking_if_images_exist'];
  71. if (!file_exists("../assets/images") || !file_exists("../assets/files") || !file_exists("../assets/flash") || !file_exists("../assets/media")) {
  72. echo "<span class=\"notok\">".$_lang['failed']."</span></p>";
  73. $errors += 1;
  74. } else {
  75. echo "<span class=\"ok\">".$_lang['ok']."</span></p>";
  76. }
  77. // File Browser directories writable?
  78. echo "<p>".$_lang['checking_if_images_writable'];
  79. if (!is_writable("../assets/images") || !is_writable("../assets/files") || !is_writable("../assets/flash") || !is_writable("../assets/media")) {
  80. echo "<span class=\"notok\">".$_lang['failed']."</span></p>";
  81. $errors += 1;
  82. } else {
  83. echo "<span class=\"ok\">".$_lang['ok']."</span></p>";
  84. }
  85. // export exists?
  86. echo "<p>".$_lang['checking_if_export_exists'];
  87. if (!file_exists("../assets/export")) {
  88. echo "<span class=\"notok\">".$_lang['failed']."</span></p>";
  89. $errors += 1;
  90. } else {
  91. echo "<span class=\"ok\">".$_lang['ok']."</span></p>";
  92. }
  93. // export writable?
  94. echo "<p>".$_lang['checking_if_export_writable'];
  95. if (!is_writable("../assets/export")) {
  96. echo "<span class=\"notok\">".$_lang['failed']."</span></p>";
  97. $errors += 1;
  98. } else {
  99. echo "<span class=\"ok\">".$_lang['ok']."</span></p>";
  100. }
  101. // config.inc.php writable?
  102. echo "<p>".$_lang['checking_if_config_exist_and_writable'];
  103. if (!file_exists("../manager/includes/config.inc.php")) {
  104. // make an attempt to create the file
  105. @ $hnd = fopen("../manager/includes/config.inc.php", 'w');
  106. @ fwrite($hnd, "<?php //MODx configuration file ?>");
  107. @ fclose($hnd);
  108. }
  109. $isWriteable = is_writable("../manager/includes/config.inc.php");
  110. if (!$isWriteable) {
  111. echo "<span class=\"notok\">".$_lang['failed']."</span></p><p><strong>".$_lang['config_permissions_note']."</strong></p>";
  112. $errors += 1;
  113. } else {
  114. echo "<span class=\"ok\">".$_lang['ok']."</span></p>";
  115. }
  116. // connect to the database
  117. if ($installMode == 1) {
  118. include "../manager/includes/config.inc.php";
  119. } else {
  120. // get db info from post
  121. $database_server = $_POST['databasehost'];
  122. $database_user = $_SESSION['databaseloginname'];
  123. $database_password = $_SESSION['databaseloginpassword'];
  124. $database_collation = $_POST['database_collation'];
  125. $database_charset = substr($database_collation, 0, strpos($database_collation, '_') - 1);
  126. $database_connection_charset = $_POST['database_connection_charset'];
  127. $database_connection_method = $_POST['database_connection_method'];
  128. $dbase = $_POST['database_name'];
  129. $table_prefix = $_POST['tableprefix'];
  130. }
  131. echo "<p>".$_lang['creating_database_connection'];
  132. if (!@ $conn = mysql_connect($database_server, $database_user, $database_password)) {
  133. $errors += 1;
  134. echo "<span class=\"notok\">".$_lang['database_connection_failed']."</span><p />".$_lang['database_connection_failed_note']."</p>";
  135. } else {
  136. echo "<span class=\"ok\">".$_lang['ok']."</span></p>";
  137. }
  138. // make sure we can use the database
  139. if ($installMode > 0 && !@ mysql_query("USE {$dbase}")) {
  140. $errors += 1;
  141. echo "<span class=\"notok\">".$_lang['database_use_failed']."</span><p />".$_lang["database_use_failed_note"]."</p>";
  142. }
  143. // check the database collation if not specified in the configuration
  144. if (!isset ($database_connection_charset) || empty ($database_connection_charset)) {
  145. if (!$rs = @ mysql_query("show session variables like 'collation_database'")) {
  146. $rs = @ mysql_query("show session variables like 'collation_server'");
  147. }
  148. if ($rs && $collation = mysql_fetch_row($rs)) {
  149. $database_collation = $collation[1];
  150. }
  151. if (empty ($database_collation)) {
  152. $database_collation = 'utf8_unicode_ci';
  153. }
  154. $database_charset = substr($database_collation, 0, strpos($database_collation, '_') - 1);
  155. $database_connection_charset = $database_charset;
  156. }
  157. // determine the database connection method if not specified in the configuration
  158. if (!isset($database_connection_method) || empty($database_connection_method)) {
  159. $database_connection_method = 'SET CHARACTER SET';
  160. }
  161. // check table prefix
  162. if ($conn && $installMode == 0) {
  163. echo "<p>" . $_lang['checking_table_prefix'] . $table_prefix . "`: ";
  164. if ($rs= @ mysql_query("SELECT COUNT(*) FROM $dbase.`" . $table_prefix . "site_content`")) {
  165. echo "<span class=\"notok\">" . $_lang['failed'] . "</span></b>" . $_lang['table_prefix_already_inuse'] . "</p>";
  166. $errors += 1;
  167. echo "<p>" . $_lang['table_prefix_already_inuse_note'] . "</p>";
  168. } else {
  169. echo "<span class=\"ok\">" . $_lang['ok'] . "</span></p>";
  170. }
  171. } elseif ($conn && $installMode == 2) {
  172. echo "<p>" . $_lang['checking_table_prefix'] . $table_prefix . "`: ";
  173. if (!$rs = @ mysql_query("SELECT COUNT(*) FROM $dbase.`" . $table_prefix . "site_content`")) {
  174. echo "<span class=\"notok\">" . $_lang['failed'] . "</span></b>" . $_lang['table_prefix_not_exist'] . "</p>";
  175. $errors += 1;
  176. echo "<p>" . $_lang['table_prefix_not_exist_note'] . "</p>";
  177. } else {
  178. echo "<span class=\"ok\">" . $_lang['ok'] . "</span></p>";
  179. }
  180. }
  181. // check mysql version
  182. if ($conn) {
  183. echo "<p>" . $_lang['checking_mysql_version'];
  184. if ( version_compare(mysql_get_server_info(), '5.0.51', '=') ) {
  185. echo "<span class=\"notok\">" . $_lang['warning'] . "</span></b>&nbsp;&nbsp;<strong>". $_lang['mysql_5051'] . "</strong></p>";
  186. echo "<p><span class=\"notok\">" . $_lang['mysql_5051_warning'] . "</span></p>";
  187. } else {
  188. echo "<span class=\"ok\">" . $_lang['ok'] . "</span>&nbsp;&nbsp;<strong>" . $_lang['mysql_version_is'] . mysql_get_server_info() . "</strong></p>";
  189. }
  190. }
  191. // check for strict mode
  192. if ($conn) {
  193. echo "<p>". $_lang['checking_mysql_strict_mode'];
  194. $mysqlmode = @ mysql_query("SELECT @@global.sql_mode");
  195. if (@mysql_num_rows($mysqlmode) > 0){
  196. $modes = mysql_fetch_array($mysqlmode, MYSQL_NUM);
  197. //$modes = array("STRICT_TRANS_TABLES"); // for testing
  198. // print_r($modes);
  199. foreach ($modes as $mode) {
  200. if (stristr($mode, "STRICT_TRANS_TABLES") !== false || stristr($mode, "STRICT_ALL_TABLES") !== false) {
  201. echo "<span class=\"notok\">" . $_lang['warning'] . "</span></b> <strong>&nbsp;&nbsp;" . $_lang['strict_mode'] . "</strong></p>";
  202. echo "<p><span class=\"notok\">" . $_lang['strict_mode_error'] . "</span></p>";
  203. } else {
  204. echo "<span class=\"ok\">" . $_lang['ok'] . "</span></p>";
  205. }
  206. }
  207. } else {
  208. echo "<span class=\"ok\">" . $_lang['ok'] . "</span></p>";
  209. }
  210. }
  211. // Version and strict mode check end
  212. // andrazk 20070416 - add install flag and disable manager login
  213. // assets/cache writable?
  214. if (is_writable("../assets/cache")) {
  215. if (file_exists('../assets/cache/installProc.inc.php')) {
  216. @chmod('../assets/cache/installProc.inc.php', 0755);
  217. unlink('../assets/cache/installProc.inc.php');
  218. }
  219. // make an attempt to create the file
  220. @ $hnd = fopen("../assets/cache/installProc.inc.php", 'w');
  221. @ fwrite($hnd, '<?php $installStartTime = '.time().'; ?>');
  222. @ fclose($hnd);
  223. }
  224. if($installMode > 0 && $_POST['installdata'] == "1") {
  225. echo "<p class=\"notes\"><strong>{$_lang['sample_web_site']}:</strong> {$_lang['sample_web_site_note']}</p>\n";
  226. }
  227. if ($errors > 0) {
  228. ?>
  229. <p>
  230. <?php
  231. echo $_lang['setup_cannot_continue'];
  232. echo $errors > 1 ? $errors." " : "";
  233. if ($errors > 1) echo $_lang['errors'];
  234. else echo $_lang['error'];
  235. if ($errors > 1) echo $_lang['please_correct_errors'];
  236. else echo $_lang['please_correct_error'];
  237. if ($errors > 1) echo $_lang['and_try_again_plural'];
  238. else echo $_lang['and_try_again'];
  239. echo $_lang['visit_forum'];
  240. ?>
  241. </p>
  242. <?php
  243. }
  244. echo "<p>&nbsp;</p>";
  245. $nextAction= $errors > 0 ? 'summary' : 'install';
  246. $nextButton= $errors > 0 ? $_lang['retry'] : $_lang['install'];
  247. $nextVisibility= $errors > 0 || isset($_POST['chkagree']) ? 'visible' : 'hidden';
  248. $agreeToggle= $errors > 0 ? '' : ' onclick="if(document.getElementById(\'chkagree\').checked){document.getElementById(\'nextbutton\').style.visibility=\'visible\';}else{document.getElementById(\'nextbutton\').style.visibility=\'hidden\';}"';
  249. ?>
  250. <form name="install" id="install_form" action="index.php?action=<?php echo $nextAction ?>" method="post">
  251. <div>
  252. <input type="hidden" value="<?php echo $install_language?>" name="language" />
  253. <input type="hidden" value="<?php echo $manager_language?>" name="managerlanguage" />
  254. <input type="hidden" value="<?php echo $installMode ?>" name="installmode" />
  255. <input type="hidden" value="<?php echo trim($_POST['database_name'], '`'); ?>" name="database_name" />
  256. <input type="hidden" value="<?php echo $_POST['tableprefix'] ?>" name="tableprefix" />
  257. <input type="hidden" value="<?php echo $_POST['database_collation'] ?>" name="database_collation" />
  258. <input type="hidden" value="<?php echo $_POST['database_connection_charset'] ?>" name="database_connection_charset" />
  259. <input type="hidden" value="<?php echo $_POST['database_connection_method'] ?>" name="database_connection_method" />
  260. <input type="hidden" value="<?php echo $_POST['databasehost'] ?>" name="databasehost" />
  261. <input type="hidden" value="<?php echo $_POST['cmsadmin'] ?>" name="cmsadmin" />
  262. <input type="hidden" value="<?php echo $_POST['cmsadminemail'] ?>" name="cmsadminemail" />
  263. <input type="hidden" value="<?php echo $_POST['cmspassword'] ?>" name="cmspassword" />
  264. <input type="hidden" value="<?php echo $_POST['cmspasswordconfirm'] ?>" name="cmspasswordconfirm" />
  265. <input type="hidden" value="1" name="options_selected" />
  266. <input type="hidden" value="<?php echo $_POST['installdata'] ?>" name="installdata" />
  267. <?php
  268. $templates = isset ($_POST['template']) ? $_POST['template'] : array ();
  269. foreach ($templates as $i => $template) echo "<input type=\"hidden\" name=\"template[]\" value=\"$template\" />\n";
  270. $tvs = isset ($_POST['tv']) ? $_POST['tv'] : array ();
  271. foreach ($tvs as $i => $tv) echo "<input type=\"hidden\" name=\"tv[]\" value=\"$tv\" />\n";
  272. $chunks = isset ($_POST['chunk']) ? $_POST['chunk'] : array ();
  273. foreach ($chunks as $i => $chunk) echo "<input type=\"hidden\" name=\"chunk[]\" value=\"$chunk\" />\n";
  274. $snippets = isset ($_POST['snippet']) ? $_POST['snippet'] : array ();
  275. foreach ($snippets as $i => $snippet) echo "<input type=\"hidden\" name=\"snippet[]\" value=\"$snippet\" />\n";
  276. $plugins = isset ($_POST['plugin']) ? $_POST['plugin'] : array ();
  277. foreach ($plugins as $i => $plugin) echo "<input type=\"hidden\" name=\"plugin[]\" value=\"$plugin\" />\n";
  278. $modules = isset ($_POST['module']) ? $_POST['module'] : array ();
  279. foreach ($modules as $i => $module) echo "<input type=\"hidden\" name=\"module[]\" value=\"$module\" />\n";
  280. ?>
  281. </div>
  282. <h2><?php echo $_lang['agree_to_terms'];?></h2>
  283. <p>
  284. <input type="checkbox" value="1" id="chkagree" name="chkagree" style="line-height:18px" <?php echo isset($_POST['chkagree']) ? 'checked="checked" ':""; ?><?php echo $agreeToggle;?>/><label for="chkagree" style="display:inline;float:none;line-height:18px;"> <?php echo $_lang['iagree_box']?> </label>
  285. </p>
  286. <p class="buttonlinks">
  287. <a href="javascript:document.getElementById('install_form').action='index.php?action=options&language=<?php $install_language?>';document.getElementById('install_form').submit();" class="prev" title="<?php echo $_lang['btnback_value']?>"><span><?php echo $_lang['btnback_value']?></span></a>
  288. <a id="nextbutton" href="javascript:document.getElementById('install_form').submit();" title="<?php echo $nextButton ?>" style="visibility:<?php echo $nextVisibility;?>"><span><?php echo $nextButton ?></span></a>
  289. </p>
  290. </form>