Косметика для JohnCMS 6.2.2

202
.
Smolenkov_BN
Инсталляция JohnCMS 6.2.2 обнаруживает неприятные моменты:
1) не все таблицы БД имеют префикс "cms_";
2) некоторые зарубежные хостинги не воспринимают "CHARSET=utf8mb4".
Поэтому пришлось сделать легкий ремонт. Ниже приведена последовательность выполнения косметических изменений.

1. Файлы install/install.sql и install/demo.sql
Изменяем коды:
CREATE TABLE IF NOT EXISTS >=> CREATE TABLE
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4; >=> ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

2. Файл install/index.php
Указанные изменения делают инсталлятор практически универсальным для префиксов таблиц БД.
Вставляем коды поблочно, заменяя предыдущие:
[code]
// Принимаем данные формы
$db_host = isset($_POST['dbhost']) ? htmlentities(trim($_POST['dbhost'])) : 'localhost';
$db_name = isset($_POST['dbname']) ? htmlentities(trim($_POST['dbname'])) : 'johncms';
$db_user = isset($_POST['dbuser']) ? htmlentities(trim($_POST['dbuser'])) : 'root';
$db_pass = isset($_POST['dbpass']) ? htmlentities(trim($_POST['dbpass'])) : '';
$db_pref = isset($_POST['dbpref']) ? htmlentities(trim($_POST['dbpref'])) : 'cms_';
$site_url = isset($_POST['siteurl']) ? preg_replace("#/$#", '', htmlentities(trim($_POST['siteurl']), ENT_QUOTES, 'UTF-8')) : 'http://' . $_SERVER["SERVER_NAME"];
$site_mail = isset($_POST['sitemail']) ? htmlentities(trim($_POST['sitemail']), ENT_QUOTES, 'UTF-8') : '@';
$admin_user = isset($_POST['admin']) ? trim($_POST['admin']) : 'admin';
$admin_pass = isset($_POST['password']) ? trim($_POST['password']) : '';
$demo = isset($_POST['demo']);
[/code]
[code]
// Создаем системный файл db.php
$dbfile = "<?php\r\n\r\n" .
"defined('_IN_JOHNCMS') or die ('Error: restricted access');\r\n\r\n" .
'$db_host = ' . "'$db_host';\r\n" .
'$db_name = ' . "'$db_name';\r\n" .
'$db_user = ' . "'$db_user';\r\n" .
'$db_pass = ' . "'$db_pass';\r\n" .
'$db_pref = ' . "'$db_pref';";
if (!file_put_contents('../incfiles/db.php', $dbfile)) {
echo 'ERROR: Can not write db.php</body></html>';
exit;
}
[/code]
[code]
// Записываем системные настройки
mysql_query("UPDATE `" . $db_pref . "settings` SET `val`='$language' WHERE `key`='lng'");
mysql_query("UPDATE `" . $db_pref . "settings` SET `val`='" . mysql_real_escape_string($site_url) . "' WHERE `key`='homeurl'");
mysql_query("UPDATE `" . $db_pref . "settings` SET `val`='" . mysql_real_escape_string($site_mail) . "' WHERE `key`='email'");
[/code]
[code]
// Создаем Администратора
mysql_query("INSERT INTO `" . $db_pref . "users` SET
`name` = '" . mysql_real_escape_string($admin_user) . "',
`name_lat` = '" . mysql_real_escape_string(mb_strtolower($admin_user)) . "',
`password` = '" . md5(md5($admin_pass)) . "',
`sex` = 'm',
`datereg` = '" . time() . "',
`lastdate` = '" . time() . "',
`mail` = '" . mysql_real_escape_string($site_mail) . "',
`www` = '" . mysql_real_escape_string($site_url) . "',
`about` = '',
`set_user` = '',
`set_forum` = '',
`set_mail` = '',
`smileys` = '',
`rights` = '9',
`ip` = '" . ip2long($_SERVER["REMOTE_ADDR"]) . "',
`browser` = '" . mysql_real_escape_string(htmlentities($_SERVER["HTTP_USER_AGENT"])) . "',
`preg` = '1'
") or die('ERROR: Administrator setup<br/>' . mysql_error() . '</body></html>');
[/code]
[code]
echo '<span class="gray">' . $lng['final'] . '</span>' .
'<hr />' .
'<form action="index.php?act=set" method="post">' .
show_errors($db_error) .
'<small class="blue"><b>MySQL Host:</b></small><br />' .
'<input type="text" name="dbhost" value="' . $db_host . '"' . ($db_check ? ' readonly="readonly" style="background-color: #CCFFCC"' : '') . (isset($db_error['host']) ? ' style="background-color: #FFCCCC"' : '') . '><br />' .
'<small class="blue"><b>MySQL Database:</b></small><br />' .
'<input type="text" name="dbname" value="' . $db_name . '"' . ($db_check ? ' readonly="readonly" style="background-color: #CCFFCC"' : '') . (isset($db_error['name']) ? ' style="background-color: #FFCCCC"' : '') . '><br />' .
'<small class="blue"><b>MySQL User:</b></small><br />' .
'<input type="text" name="dbuser" value="' . $db_user . '"' . ($db_check ? ' readonly="readonly" style="background-color: #CCFFCC"' : '') . (isset($db_error['access']) || isset($db_error['user']) ? ' style="background-color: #FFCCCC"' : '') . '><br />' .
'<small class="blue"><b>MySQL Password:</b></small><br />' .
'<input type="text" name="dbpass" value="' . $db_pass . '"' . ($db_check ? ' readonly="readonly" style="background-color: #CCFFCC"' : '') . (isset($db_error['access']) ? ' style="background-color: #FFCCCC"' : '') . '>';
'<small class="blue"><b>MySQL Prefix:</b></small><br />' .
'<input type="text" name="dbpref" value="' . $db_pref . '"' . ($db_check ? ' readonly="readonly" style="background-color: #CCFFCC"' : '') . (isset($db_error['access']) ? ' style="background-color: #FFCCCC"' : '') . '>';
[/code]

3. Все файлы, кроме файлов в папке install.
С помощью Вашего любимого приличного текстового редактора для программистов осуществляем автоматический мультифайловый поиск и замену текста:
download >=> cms_download
forum >=> cms_forum
gallery >=> cms_gallery
guest >=> cms_guest
karma_users >=> cms_karma_users
library_cats >=> cms_library_cats
library_texts >=> cms_library_texts
library_tags >=> cms_library_tags
news >=> cms_news
users >=> cms_users

И можете пользоваться. При этом строго выполняйте одно условие:
ни в коем случае не изменяйте префикс по умолчанию "cms_" во время инсталляции JohnCMS 6.2.2.
.
На сколько я помню, префикса cms_ не было у таблиц, которые планировались в будущем меняться на новые. Но это не точно.
.
Enter нажат, к чему теперь рыданья…
2) некоторые зарубежные хостинги не воспринимают "CHARSET=utf8mb4".

Если хостинг не воспринимает utf8mb4, это даже смешно, на сегодняшний день. В утиль такой хостинг, навсегда! Этому хостингу место на выставке раритетов в музее
.
Если JohnCMS не устанавливается на хостинг - меняйте срочно хостера
Рекомендую http://databor.ru
Там все и любые скрипты работают на ура
Всего: 4