set_error();
if(! defined('CACHE_MEMCACHED'))
{
define('CACHE_MEMCACHED', false);
}
define("VERSION", "5.1");
define("D_UPDATE", 1340774040);
include_once ABSOLUTE_PATH.'includes/function.php';
include_once(ABSOLUTE_PATH.'includes/core.php');
include_once(ABSOLUTE_PATH.'includes/database.php');
DB::connect();
include_once ABSOLUTE_PATH.'includes/init.php';
$diafan = new Init();
$languages = array();
$langs = array();
$result = DB::query("SELECT * FROM {language}");
while ($row = DB::fetch_array($result))
{
$languages[] = $row["id"];
$langs[] = $row;
}
$modules = array();
$result = DB::query("SELECT name FROM {modules}");
while ($row = DB::fetch_array($result))
{
$modules[] = $row["name"];
}
DB::query("ALTER TABLE {users_role} ADD `registration` ENUM('0', '1') NOT NULL DEFAULT '0'");
foreach($languages as $lang_id)
{
if($lang_id != 1)
{
DB::query("ALTER TABLE {users_role} ADD name".$lang_id." VARCHAR(64) NOT NULL DEFAULT ''");
}
}
DB::query("CREATE TABLE {users_param_role_rel} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`role_id` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) CHARSET=utf8");
$result = DB::query("SELECT id FROM {users_param} WHERE trash='0'");
while($row = DB::fetch_array($result))
{
DB::query("INSERT INTO {users_param_role_rel} (element_id, role_id) VALUES (%d, 0)", $row["id"]);
}
if(in_array('banners', $modules))
{
DB::query("ALTER TABLE {banners_site_rel} ADD trash ENUM('0', '1') NOT NULL DEFAULT '0'");
}
// пользователь, создавший материал
DB::query("ALTER TABLE {site} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
if(in_array('clauses', $modules))
{
DB::query("ALTER TABLE {clauses} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
DB::query("ALTER TABLE {clauses_category} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
}
if(in_array('faq', $modules))
{
DB::query("ALTER TABLE {faq} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
DB::query("ALTER TABLE {faq_category} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
}
if(in_array('feedback', $modules))
{
DB::query("ALTER TABLE {feedback} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
}
if(in_array('files', $modules))
{
DB::query("ALTER TABLE {files} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
DB::query("ALTER TABLE {files_category} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
}
if(in_array('photo', $modules))
{
DB::query("ALTER TABLE {photo} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
DB::query("ALTER TABLE {photo_category} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
}
if(in_array('shop', $modules))
{
DB::query("ALTER TABLE {shop} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
DB::query("ALTER TABLE {shop_category} ADD admin_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
}
DB::query("ALTER TABLE {users_role} ADD `only_self` ENUM('0', '1') NOT NULL DEFAULT '0'");
// изменен модуль "Восстановление доступа"
DB::query("UPDATE {config} SET value='Восстановление доступа к сайту %%title (%%url).', lang_id=1 WHERE module_name='users' AND name='subject_reminding'");
DB::query("UPDATE {config} SET value='Здравствуйте, %%fio!
Вы запросили восстановление доступа к сайту %%title (%%url).
Для изменения пароля пройдите по ссылке: %%actlink', lang_id=1 WHERE module_name='users' AND name='message_reminding'");
DB::query("INSERT INTO {config} (`module_name`, `name`, `value`, lang_id) VALUES ('users', 'subject_reminding_new_pass', 'Новый пароль на сайте %%title (%%url).', 1)");
DB::query("INSERT INTO {config} (`module_name`, `name`, `value`, lang_id) VALUES ('users', 'message_reminding_new_pass', 'Здравствуйте, %%fio!
Вы изменили пароль на сайте %%title (%%url).
Логин: %%login
Пароль: %%password', 1)");
DB::query("UPDATE {config} SET value='На ваш e-mail отправлена ссылка на форму изменения пароля.', lang_id=1 WHERE module_name='users' AND name='mes_reminding'");
// переделана мультиязычность
DB::query("CREATE TABLE {languages_translate} (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
text TEXT NOT NULL DEFAULT '',
text_translate TEXT NOT NULL DEFAULT '',
lang_id TINYINT(2) UNSIGNED NOT NULL DEFAULT '0',
module_name VARCHAR(50) NOT NULL DEFAULT '',
type ENUM('admin', 'site') NOT NULL DEFAULT 'admin',
PRIMARY KEY (`id`)
) CHARSET=utf8");
DB::query("RENAME TABLE {language} TO {languages}");
DB::query("ALTER TABLE {languages} ADD base_admin ENUM('0', '1') NOT NULL DEFAULT '0', ADD base_site ENUM('0', '1') NOT NULL DEFAULT '0'");
DB::query("UPDATE {languages} SET base_admin='1', base_site='1' WHERE shortname='%h'", LANGUAGE_BASE);
DB::query("UPDATE {adminsite} SET rewrite='languages' WHERE rewrite='language'");
DB::query("ALTER TABLE {users} CHANGE `language` `lang_id` TINYINT( 2 ) UNSIGNED NOT NULL DEFAULT '0'");
if(in_array('feedback', $modules))
{
DB::query("ALTER TABLE {feedback} CHANGE `language` `lang_id` TINYINT( 2 ) UNSIGNED NOT NULL DEFAULT '0'");
}
$array_languages = array(
'banners' => array('alt', 'title', 'act'),
'site' => array('name', 'title', 'text', 'keywords', 'descr', 'title_meta', 'act'),
'clauses' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'clauses_category' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'comments_param' => array('name', 'text'),
'comments_param_select' => array('name'),
'faq' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'faq_category' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'feedback_param' => array('name', 'text'),
'feedback_param_select' => array('name'),
'files' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'files_category' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'images' => array('alt', 'title'),
'menu' => array('name', 'act'),
'menu_category' => array('name', 'act'),
'news' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'news_category' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'photo' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'photo_category' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'shop' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'shop_additional_cost' => array('name', 'act', 'text'),
'shop_category' => array('name', 'act', 'keywords', 'descr', 'title_meta', 'anons', 'text'),
'shop_delivery' => array('name', 'act', 'text'),
'shop_order_param' => array('name', 'text'),
'shop_order_param_select' => array('name'),
'shop_param' => array('name', 'text', 'measure_unit'),
'shop_param_element' => array('value'),
'shop_param_select' => array('name'),
'shop_payment' => array('name', 'act', 'text'),
'subscribtion' => array('name', 'text'),
'subscribtion_category' => array('name', 'text'),
'tags' => array('act'),
'tags_name' => array('name'),
'users_param' => array('name', 'text'),
'users_param_select' => array('name'),
'users_role' => array('name'),
'votes' => array('name'),
'votes_category' => array('name', 'act')
);
foreach ($array_languages as $tab => $filds)
{
$creattable = DB::fetch_array(DB::query("SHOW CREATE TABLE {".$tab."}"));
if ($creattable)
{
foreach ($filds as $f)
{
if (preg_match("/".$f."` ([^\n]+),\n/", $creattable['Create Table'], $ob))
{
DB::query("ALTER TABLE {".$tab."} CHANGE `".$f."` `".$f."1` ".$ob[1]);
}
}
}
}
DB::query("ALTER TABLE {modules} ADD `title` VARCHAR( 100 ) NOT NULL AFTER `name`, ADD site_page ENUM('0', '1') NOT NULL DEFAULT '0'");
DB::query("UPDATE {modules} SET site_page=site");
DB::query("UPDATE {modules} SET title='Страница пользователя' WHERE name='users'");
DB::query("UPDATE {modules} SET title='Регистрация' WHERE name='registration'");
DB::query("UPDATE {modules} SET title='Восстановление доступа' WHERE name='reminding'");
DB::query("UPDATE {modules} SET title='Личные сообщения' WHERE name='messages'");
DB::query("UPDATE {modules} SET title='Новости' WHERE name='news'");
DB::query("UPDATE {modules} SET title='Статьи' WHERE name='clauses'");
DB::query("UPDATE {modules} SET title='Обратная связь' WHERE name='feedback'");
DB::query("UPDATE {modules} SET title='Вопрос-Ответ' WHERE name='faq'");
DB::query("UPDATE {modules} SET title='Магазин' WHERE name='shop'");
DB::query("UPDATE {modules} SET title='Корзина' WHERE name='cart'");
DB::query("UPDATE {modules} SET title='Список пожеланий' WHERE name='wishlist'");
DB::query("UPDATE {modules} SET title='Файловый архив' WHERE name='files'");
DB::query("UPDATE {modules} SET title='Поиск' WHERE name='search'");
DB::query("UPDATE {modules} SET title='Баннеры' WHERE name='banners'");
DB::query("UPDATE {modules} SET title='Комментарии' WHERE name='comments'");
DB::query("UPDATE {modules} SET title='Рейтинг' WHERE name='rating'");
DB::query("UPDATE {modules} SET title='Теги' WHERE name='tags'");
DB::query("UPDATE {modules} SET title='Фотогалерея' WHERE name='photo'");
DB::query("UPDATE {modules} SET title='Опросы' WHERE name='votes'");
DB::query("UPDATE {modules} SET title='Рассылки' WHERE name='subscribtion'");
DB::query("UPDATE {modules} SET title='Форум' WHERE name='forum'");
DB::query("UPDATE {modules} SET title='Карта сайта' WHERE name='map'");
DB::query("UPDATE {modules} SET title='Рефералы' WHERE name='referals'");
DB::query("INSERT INTO {modules} (name, module_name, admin, title) VALUES ('adminsite', 'core', '1', 'Страницы админки')");
DB::query("INSERT INTO {modules} (name, module_name, admin, site, title) VALUES ('attachments', 'core', '1', '1', 'Прикрепленные файлы')");
DB::query("INSERT INTO {modules} (name, module_name, site, title) VALUES ('bbcode', 'core', '1', 'Bbcode')");
DB::query("INSERT INTO {modules} (name, module_name, site, title) VALUES ('captcha', 'core', '1', 'Защитный код')");
DB::query("INSERT INTO {modules} (name, module_name, admin, title) VALUES ('config', 'core', '1', 'Параметры сайта')");
DB::query("INSERT INTO {modules} (name, module_name, admin, site, title) VALUES ('images', 'core', '1', '1', 'Изображения')");
DB::query("INSERT INTO {modules} (name, module_name, admin, site, title) VALUES ('languages', 'core', '1', '1', 'Языки сайта')");
DB::query("INSERT INTO {modules} (name, module_name, admin, site, title) VALUES ('menu', 'core', '1', '1', 'Меню')");
DB::query("INSERT INTO {modules} (name, module_name, admin, site, title) VALUES ('paginator', 'core', '1', '1', 'Постраничная навигация')");
DB::query("INSERT INTO {modules} (name, module_name, admin, title) VALUES ('site', 'core', '1', 'Страницы сайта')");
DB::query("INSERT INTO {modules} (name, module_name, admin, title) VALUES ('trash', 'core', '1', 'Корзина')");
DB::query("INSERT INTO {modules} (name, module_name, admin, title) VALUES ('update', 'core', '1', 'Обновление')");
DB::query("INSERT INTO {modules} (name, module_name, admin, site, title) VALUES ('useradmin', 'core', '1', '1', 'Редактирование из пользовательской части')");
$row = DB::fetch_array(DB::query("SELECT * FROM {adminsite} WHERE rewrite='languages'"));
if($row)
{
DB::query("INSERT INTO {adminsite} (parent_id, group_id, name, rewrite, text, act, numrow, sort) VALUES (%d, '3', '%s', 'languages', '%s', '1', '3563', '1')", $row["id"], $row["name"], $row["text"]);
$id = DB::last_id("adminsite");
DB::query("INSERT INTO {adminsite} (parent_id, group_id, name, rewrite, text, act, numrow, sort) VALUES (%d, '3', 'Перевод интерфейса', 'languages/translate', '
Модуль мультиязычности: перевод интерфейса.
Полная документация и помощь
', '1', '3563', '1')", $row["id"], $row["name"], $row["text"]);
DB::query("INSERT INTO {adminsite_parents} (element_id, parent_id) VALUES (%d, %d)", $id, $row["id"]);
DB::query("INSERT INTO {adminsite_parents} (element_id, parent_id) VALUES (%d, %d)", $id + 1, $row["id"]);
DB::query("UPDATE {adminsite} SET count_children=2 WHERE id=%d", $row["id"]);
}
include_once(ABSOLUTE_PATH.'language/ru.php');
foreach($langs as $row)
{
if($row["shortname"] && $row["shortname"] != "ru")
{
$file = file_get_contents(ABSOLUTE_PATH.'language/'.$row["shortname"].'.php');
$strings = explode("\n", $file);
foreach($strings as $s)
{
if(preg_match('/define\(([\'\"]+)(_ADMIN_|_LANG_)([^\'\"]+)([\'\"]+),( )*([\'\"]+)([^\'\"]+)([\'\"]+)\);/', $s, $m))
{
$original = $m[2].$m[3];
$value = $m[7];
$type = $m[2] == '_ADMIN_' ? 'admin' : 'site';
if(defined($original))
{
$original = constant($original);
DB::query("INSERT INTO {languages_translate} (lang_id, module_name, text, text_translate, type) VALUES (%d, '', '%s', '%s', '%s')", $row["id"], $original, $value, $type);
}
}
}
}
}
// Поле “Период действия” с ... по ... для любого контента
DB::query("ALTER TABLE {site} ADD date_start INT(10) UNSIGNED NOT NULL DEFAULT '0', ADD date_finish INT(10) UNSIGNED NOT NULL DEFAULT '0'");
DB::query("ALTER TABLE {menu} ADD date_start INT(10) UNSIGNED NOT NULL DEFAULT '0', ADD date_finish INT(10) UNSIGNED NOT NULL DEFAULT '0'");
if(in_array('clauses', $modules))
{
DB::query("ALTER TABLE {clauses} ADD date_start INT(10) UNSIGNED NOT NULL DEFAULT '0', ADD date_finish INT(10) UNSIGNED NOT NULL DEFAULT '0'");
}
if(in_array('news', $modules))
{
DB::query("ALTER TABLE {news} ADD date_start INT(10) UNSIGNED NOT NULL DEFAULT '0', ADD date_finish INT(10) UNSIGNED NOT NULL DEFAULT '0'");
}
if(in_array('faq', $modules))
{
DB::query("ALTER TABLE {faq} ADD date_start INT(10) UNSIGNED NOT NULL DEFAULT '0', ADD date_finish INT(10) UNSIGNED NOT NULL DEFAULT '0'");
}
if(in_array('photo', $modules))
{
DB::query("ALTER TABLE {photo} ADD date_start INT(10) UNSIGNED NOT NULL DEFAULT '0', ADD date_finish INT(10) UNSIGNED NOT NULL DEFAULT '0'");
}
if(in_array('files', $modules))
{
DB::query("ALTER TABLE {files} ADD date_start INT(10) UNSIGNED NOT NULL DEFAULT '0', ADD date_finish INT(10) UNSIGNED NOT NULL DEFAULT '0'");
}
if(in_array('shop', $modules))
{
DB::query("ALTER TABLE {shop} ADD date_start INT(10) UNSIGNED NOT NULL DEFAULT '0', ADD date_finish INT(10) UNSIGNED NOT NULL DEFAULT '0'");
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/shop/imgs'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/shop/imgs', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/shop/imgs/small'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/shop/imgs/small', 0777);
}
}
//Примечание закрытых для обновления файлов
DB::query("ALTER TABLE {update} ADD `text` TEXT NOT NULL DEFAULT ''");
// в конструкторе полей тип поля "файлы"
DB::query("ALTER TABLE {attachments} ADD `param_id` INT(11) UNSIGNED NOT NULL DEFAULT '0'");
DB::query("ALTER TABLE {users_param} ADD `config` TEXT NOT NULL DEFAULT ''");
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/users'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/users', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/users/files'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/users/files', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/users/imgs'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/users/imgs', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/users/imgs/small'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/users/imgs/small', 0777);
}
$text = 'Options -Indexes
deny from all
';
$fp = fopen(ABSOLUTE_PATH.USERFILES.'/users/files/.htaccess', "w");
fwrite($fp, $text);
fclose($fp);
if(in_array('shop', $modules))
{
DB::query("ALTER TABLE {shop_order_param} ADD `config` TEXT NOT NULL DEFAULT ''");
DB::query("ALTER TABLE {shop_param} ADD `config` TEXT NOT NULL DEFAULT ''");
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/shop/imgs'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/shop/imgs', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/shop/imgs/small'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/shop/imgs/small', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/shop_order'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/shop_order', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/shop_order/files'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/shop_order/files', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/shop_order/imgs'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/shop_order/imgs', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/shop_order/imgs/small'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/shop_order/imgs/small', 0777);
}
$fp = fopen(ABSOLUTE_PATH.USERFILES.'/shop_order/files/.htaccess', "w");
fwrite($fp, $text);
fclose($fp);
}
if(in_array('feedback', $modules))
{
DB::query("ALTER TABLE {feedback_param} ADD `config` TEXT NOT NULL DEFAULT ''");
$result = DB::query("SELECT id FROM {site} WHERE addmodule='feedback' AND trash='0'");
while($row = DB::fetch_array($result))
{
if($diafan->configmodules("attachments", "feedback", $row["id"], 1))
{
$config = array(
'max_count_attachments' => $diafan->configmodules("max_count_attachments", "feedback", $row["id"], 1),
"attachment_extensions" => $diafan->configmodules("attachment_extensions", "feedback", $row["id"], 1),
"recognize_image" => $diafan->configmodules("recognize_image", "feedback", $row["id"], 1),
"attachments_access_admin" => $diafan->configmodules("attachments_access_admin", "feedback", $row["id"], 1),
"attach_big_width" => $diafan->configmodules("attach_big_width", "feedback", $row["id"], 1),
"attach_big_height" => $diafan->configmodules("attach_big_height", "feedback", $row["id"], 1),
"attach_big_quality" => $diafan->configmodules("attach_big_quality", "feedback", $row["id"], 1),
"attach_medium_width" => $diafan->configmodules("attach_medium_width", "feedback", $row["id"], 1),
"attach_medium_height" => $diafan->configmodules("attach_medium_height", "feedback", $row["id"], 1),
"attach_medium_quality" => $diafan->configmodules("attach_medium_quality", "feedback", $row["id"], 1),
);
$sort = DB::query_result("SELECT MAX(sort) FROM {feedback_param}") + 1;
DB::query("INSERT INTO {feedback_param} (name1, type, site_id, sort, config) VALUES ('Файлы', 'attachments', %d, %d, '%s')", $row["id"], $sort, serialize($config));
$id = DB::last_id("feedback_param");
DB::query("UPDATE {attachments} SET param_id=%d WHERE module_name='feedback' AND element_id IN (SELECT id FROM {feedback} WHERE site_id=%d)", $row["id"]);
}
}
}
if(in_array('comments', $modules))
{
DB::query("ALTER TABLE {comments_param} ADD `config` TEXT NOT NULL DEFAULT ''");
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/comments'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/comments', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/comments/files'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/comments/files', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/comments/imgs'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/comments/imgs', 0777);
}
if (! is_dir(ABSOLUTE_PATH.USERFILES.'/comments/imgs/small'))
{
mkdir(ABSOLUTE_PATH.USERFILES.'/comments/imgs/small', 0777);
}
$fp = fopen(ABSOLUTE_PATH.USERFILES.'/comments/files/.htaccess', "w");
fwrite($fp, $text);
fclose($fp);
}
// расположение страницы-блока
DB::query("CREATE TABLE {site_block_rel} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`site_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) CHARSET=utf8");
// заголовок страницы-блока
DB::query("UPDATE {site} SET title_no_show='1' WHERE block='1'");
$result = DB::query("SELECT id FROM {site} WHERE trash='0' AND block='1'");
while($row = DB::fetch_array($result))
{
DB::query("INSERT INTO {site_block_rel} (element_id, site_id) VALUES (%d, 0)", $row["id"]);
}
if(in_array('votes', $modules))
{
// расположение опроса на нескольких страницах сайта
DB::query("CREATE TABLE {votes_category_site_rel} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`site_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) CHARSET=utf8");
$result = DB::query("SELECT id, site_id FROM {votes_category} WHERE trash='0'");
while($row = DB::fetch_array($result))
{
DB::query("INSERT INTO {votes_category_site_rel} (element_id, site_id) VALUES (%d, %d)", $row["id"], $row["site_id"]);
}
DB::query("ALTER TABLE {votes_category} DROP `site_id`");
foreach($languages as $lang_id)
{
DB::query("ALTER TABLE {votes} ADD act".$lang_id." ENUM('0', '1') NOT NULL DEFAULT '0'");
DB::query("UPDATE {votes} SET act".$lang_id."='1'");
}
}
if(in_array('banners', $modules))
{
$result = DB::query("SELECT id, section FROM {banners} WHERE trash='0'");
while($row = DB::fetch_array($result))
{
switch($row["section"])
{
case 0:
case 3:
DB::query("INSERT INTO {banners_site_rel} (element_id, site_id) VALUES (%d, 0)", $row["id"]);
case 2:
DB::query("INSERT INTO {banners_site_rel} (element_id, site_id) VALUES (%d, 1)", $row["id"]);
}
}
DB::query("ALTER TABLE {banners} DROP `section`");
}
// Можно создавать пункты меню для разных разделов модуля
DB::query("ALTER TABLE {site} CHANGE `addmodule` `module_name` VARCHAR(30) NOT NULL DEFAULT ''");
// Экспорт/импорт БД
$adminsite_id = DB::query_result("SELECT id FROM {adminsite} WHERE rewrite='update/install'");
if($adminsite_id)
{
DB::query("UPDATE {adminsite} SET count_children=count_children+1 WHERE id=%d", $adminsite_id);
DB::query("INSERT INTO {adminsite} (name, rewrite, group_id, parent_id, text, numrow, sort, act) VALUES ('Экспорт/импорт БД', 'update/importexport', '3', %d, '', '633', '55', '1')", $adminsite_id);
$last_adminsite_id = DB::last_id("adminsite");
DB::query("INSERT INTO {adminsite_parents} (element_id, parent_id) VALUES (%d, %d)", $last_adminsite_id, $adminsite_id);
}
// Настройки и история поиска
if(in_array('search', $modules))
{
$adminsite_id = DB::query_result("SELECT id FROM {adminsite} WHERE rewrite='search'");
if($adminsite_id)
{
DB::query("UPDATE {adminsite} SET count_children=3 WHERE id=%d", $adminsite_id);
DB::query("INSERT INTO {adminsite} (name, rewrite, group_id, parent_id, text, numrow, sort, act) VALUES ('Индексация', 'search', '1', %d, '', '3456', '1', '1')", $adminsite_id);
$last_adminsite_id = DB::last_id("adminsite");
DB::query("INSERT INTO {adminsite} (name, rewrite, group_id, parent_id, text, numrow, sort, act) VALUES ('История поиска', 'search/history', '1', %d, '', '99', '2', '1')", $adminsite_id);
DB::query("INSERT INTO {adminsite} (name, rewrite, group_id, parent_id, text, numrow, sort, act) VALUES ('Настройки', 'search/config', '1', %d, '', '7', '3', '1')", $adminsite_id);
DB::query("INSERT INTO {adminsite_parents} (element_id, parent_id) VALUES (%d, %d)", $last_adminsite_id, $adminsite_id);
DB::query("INSERT INTO {adminsite_parents} (element_id, parent_id) VALUES (%d, %d)", $last_adminsite_id + 1, $adminsite_id);
DB::query("INSERT INTO {adminsite_parents} (element_id, parent_id) VALUES (%d, %d)", $last_adminsite_id + 2, $adminsite_id);
}
DB::query("INSERT INTO {config} (name, module_name, value) VALUES ('count_history', 'search', '100'), ('nastr', 'search', '30')");
DB::query("CREATE TABLE {search_history} (
`id` int(11) unsigned NOT NULL auto_increment,
`created` INT( 10 ) UNSIGNED NOT NULL DEFAULT '0',
`name` text NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8 ;");
}
// рейтинг можно прикреплять к категориям
if(in_array('rating', $modules))
{
DB::query("ALTER TABLE {rating} CHANGE `module_name` `module_name` VARCHAR(17) NOT NULL DEFAULT ''");
}
// похожие новости, статьи, файлы, фото, вопросы
if(in_array('faq', $modules))
{
DB::query("CREATE TABLE {faq_rel} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`rel_element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) CHARSET=utf8");
}
if(in_array('files', $modules))
{
DB::query("CREATE TABLE {files_rel} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`rel_element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) CHARSET=utf8");
}
if(in_array('news', $modules))
{
DB::query("CREATE TABLE {news_rel} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`rel_element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) CHARSET=utf8");
}
if(in_array('clauses', $modules))
{
DB::query("CREATE TABLE {clauses_rel} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`rel_element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) CHARSET=utf8");
}
if(in_array('photo', $modules))
{
DB::query("CREATE TABLE {photo_rel} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`rel_element_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) CHARSET=utf8");
}
if(in_array('shop', $modules))
{
DB::query("ALTER TABLE {shop_rel} CHANGE good_id element_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
DB::query("ALTER TABLE {shop_rel} CHANGE rel_good_id rel_element_id INT(11) UNSIGNED NOT NULL DEFAULT '0'");
DB::query("INSERT INTO {config} (name, module_name, value) VALUES ('rel_two_sided', 'shop', '1')");
}
// поиск
if(in_array('search', $modules))
{
DB::query("ALTER TABLE {search_results} CHANGE `module` `table_name` varchar(50) NOT NULL");
}
if(in_array('shop', $modules))
{
// корзина и список пожеланий не должны пропадать по окончанию сессии
DB::query("CREATE TABLE {shop_cart} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`good_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`user_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`price_id` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0',
`created` INT(12) UNSIGNED NOT NULL DEFAULT '0',
`count` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
`param` text NOT NULL DEFAULT '',
`is_file` ENUM('0', '1') NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY user_id (`user_id`)
) CHARSET=utf8");
DB::query("CREATE TABLE {shop_wishlist} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`good_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`user_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`session_id` VARCHAR( 64 ) NOT NULL DEFAULT '',
`created` INT(12) UNSIGNED NOT NULL DEFAULT '0',
`count` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
`param` text NOT NULL DEFAULT '',
`is_file` ENUM('0', '1') NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY user_id (`user_id`)
) CHARSET=utf8");
// административная часть списка пожеланий, список ожиданий
$adminsite_id = DB::query_result("SELECT id FROM {adminsite} WHERE rewrite='shop/order'");
if($adminsite_id)
{
DB::query("UPDATE {adminsite} SET count_children=count_children+3 WHERE id=%d", $adminsite_id);
DB::query("INSERT INTO {adminsite} (name, rewrite, group_id, parent_id, numrow, sort, act) VALUES ('Список пожеланий', 'shop/wishlist', '4', %d, '57', '3', '1')", $adminsite_id);
$last_adminsite_id = DB::last_id("adminsite");
DB::query("INSERT INTO {adminsite} (name, rewrite, group_id, parent_id, text, numrow, sort, act) VALUES ('Список ожиданий', 'shop/waitlist', '4', %d, '', '4', '4', '1')", $adminsite_id);
DB::query("INSERT INTO {adminsite} (name, rewrite, group_id, parent_id, text, numrow, sort, act) VALUES ('Статусы заказа', 'shop/orderstatus', '4', %d, '', '23', '5', '1')", $adminsite_id);
DB::query("INSERT INTO {adminsite_parents} (element_id, parent_id) VALUES (%d, %d)", $last_adminsite_id, $adminsite_id);
DB::query("INSERT INTO {adminsite_parents} (element_id, parent_id) VALUES (%d, %d)", $last_adminsite_id + 1, $adminsite_id);
DB::query("INSERT INTO {adminsite_parents} (element_id, parent_id) VALUES (%d, %d)", $last_adminsite_id + 2, $adminsite_id);
}
DB::query("INSERT INTO {config} (name, module_name, value, lang_id) VALUES ('subject_waitlist', 'shop', 'Товар поступил на склад', 1)");
DB::query("INSERT INTO {config} (name, module_name, value, lang_id) VALUES ('message_waitlist', 'shop', 'Здравствуйте!
Товар %%good поступил на склад.', 1)");
DB::query("CREATE TABLE {shop_waitlist} (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`good_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`user_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`lang_id` TINYINT(2) UNSIGNED NOT NULL DEFAULT '0',
`mail` VARCHAR( 64 ) NOT NULL DEFAULT '',
`created` INT(12) UNSIGNED NOT NULL DEFAULT '0',
`param` text NOT NULL DEFAULT '',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) CHARSET=utf8");
// накопительная скидка
DB::query("ALTER TABLE {shop_discount} ADD `threshold_cumulative` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0'");
DB::query("ALTER TABLE {shop_price} ADD `threshold_cumulative` INT( 11 ) UNSIGNED NOT NULL DEFAULT '0'");
// редактируемые статусы заказа
DB::query("ALTER TABLE {shop_order} ADD `status_id` TINYINT(3) NOT NULL DEFAULT '0'");
DB::query("CREATE TABLE {shop_order_status} (
`id` TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,
`name1` VARCHAR(50) NOT NULL DEFAULT '',
`status` ENUM('0', '1', '2', '3', '4') NOT NULL DEFAULT '0',
`sort` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`trash` ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) CHARSET=utf8");
foreach($languages as $lang_id)
{
if($lang_id == 1)
continue;
DB::query("ALTER TABLE {shop_order_status} ADD `name".$lang_id."` VARCHAR(50) NOT NULL DEFAULT ''");
}
DB::query("INSERT INTO {shop_order_status} (id, name1, status, sort) VALUES (1, 'Новый', '0', 1), (2, 'В обработке', '1', 2), (3, 'Отменен', '2', 3), (4, 'Выполнен', '3', 4)");
DB::query("UPDATE {shop_order} SET status_id=1 WHERE status='0'");
DB::query("UPDATE {shop_order} SET status_id=2 WHERE status='1'");
DB::query("UPDATE {shop_order} SET status_id=3 WHERE status='2'");
DB::query("UPDATE {shop_order} SET status_id=4 WHERE status='3'");
DB::query("INSERT INTO {config} (name, module_name, value, lang_id) VALUES ('subject_change_status', 'shop', 'Статус заказа изменен', 1)");
DB::query("INSERT INTO {config} (name, module_name, value, lang_id) VALUES ('message_change_status', 'shop', 'Здравствуйте!
Статус заказ №%%order изменен на \"%%status\".', 1)");
// экспорт товаров, доработан импорт
DB::query("UPDATE {adminsite} SET name='Импорт/экспорт', rewrite='shop/importexport' WHERE rewrite='shop/import'");
DB::query("ALTER TABLE {shop_import_category} ADD `count_part` SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
ADD `delimiter` VARCHAR(20) NOT NULL DEFAULT '',
ADD `end_string` VARCHAR(20) NOT NULL DEFAULT '',
ADD `encoding` VARCHAR(20) NOT NULL DEFAULT '',
ADD `sub_delimiter` VARCHAR(20) NOT NULL DEFAULT ''");
DB::query("UPDATE {shop_import_category} SET `count_part`=200, `delimiter`=';', `encoding`='cp1251', `sub_delimiter`='|'");
DB::query("ALTER TABLE {shop_import} CHANGE `type` `type` VARCHAR( 20 ) NOT NULL DEFAULT '',
ADD `params` text NOT NULL,
ADD `required` ENUM('0', '1') NOT NULL DEFAULT '0'");
$result = DB::query("SELECT id, type, param_id FROM {shop_import} WHERE type='param'");
while($row = DB::fetch_array($result))
{
$params = array("id" => $row["param_id"]);
DB::query("UPDATE {shop_import} SET params='%s' WHERE id=%d", $params, $row["id"]);
}
DB::query("ALTER TABLE {shop_import} DROP param_id");
$result = DB::query("SELECT id, type, cat_id FROM {shop_import} WHERE type='menu_id'");
while($row = DB::fetch_array($result))
{
$params = array("id" => DB::query("SELECT menu_id FROM {shop_import_category} WHERE id=%d", $row["cat_id"]));
DB::query("UPDATE {shop_import} SET type='menu', params='%s' WHERE id=%d", $params, $row["id"]);
}
$result = DB::query("SELECT id, type, cat_id FROM {shop_import} WHERE type='image'");
while($row = DB::fetch_array($result))
{
$params = array("directory" => DB::query("SELECT image_directory FROM {shop_import_category} WHERE id=%d", $row["cat_id"]));
DB::query("UPDATE {shop_import} SET type='images', params='%s' WHERE id=%d", $params, $row["id"]);
}
DB::query("ALTER TABLE {shop} CHANGE `import_id` `import_id` VARCHAR(100) NOT NULL DEFAULT ''");
DB::query("ALTER TABLE {shop_category} CHANGE `import_id` `import_id` VARCHAR(100) NOT NULL DEFAULT ''");
DB::query("ALTER TABLE {shop_price} ADD `import_id` VARCHAR(100) NOT NULL DEFAULT ''");
}
// изображения
DB::query("CREATE TABLE {images_variations} (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(250) NOT NULL DEFAULT '',
folder VARCHAR(20) NOT NULL DEFAULT '',
quality TINYINT( 2 ) UNSIGNED NOT NULL DEFAULT '0',
param TEXT NOT NULL DEFAULT '',
trash ENUM('0', '1') NOT NULL DEFAULT '0',
PRIMARY KEY (id)
) CHARSET=utf8");
DB::query("INSERT INTO {adminsite} (name, rewrite, group_id, numrow, sort, act) VALUES ('Изображения', 'images', '3', 67, 20, '1')");
if(! is_dir(ABSOLUTE_PATH.USERFILES."/original"))
{
mkdir(ABSOLUTE_PATH.USERFILES."/original", 0777);
$text = 'Options -Indexes
deny from all
';
$fp = fopen(ABSOLUTE_PATH.USERFILES.'/original/.htaccess', "w");
fwrite($fp, $text);
fclose($fp);
}
if(! is_dir(ABSOLUTE_PATH.USERFILES."/small"))
{
mkdir(ABSOLUTE_PATH.USERFILES."/small", 0777);
}
DB::query("ALTER TABLE {images} ADD `convert` VARCHAR(1) NOT NULL DEFAULT '0'");
$img_modules = array();
$big_size = '';
$medium_size = '';
$result = DB::query("SELECT * FROM {config} WHERE name IN ('big_width', 'big_height', 'medium_width', 'medium_height') ORDER BY site_id DESC");
while($row = DB::fetch_array($result))
{
if(in_array($row["module_name"].$row["site_id"], $img_modules))
continue;
$img_modules[] = $row["module_name"].$row["site_id"];
$big_width = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='big_width' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
$big_height = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='big_height' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
$big_quality = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='big_quality' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
if($big_size != $big_width.'.'.$big_height)
{
$param = array(0 => array('name' => 'resize', 'width' => $big_width, 'height' => $big_height, 'max' => 0));
if(! $big_size)
{
$name = 'Большой';
$big_folder = 'large';
}
else
{
$name = 'Большой '.$row["module_name"].($row["site_id"] ? ' '.$row["site_id"] : '');
$big_folder = 'large_'.$row["module_name"].($row["site_id"] ? ' '.$row["site_id"] : '');
}
DB::query("INSERT INTO {images_variations} (name, folder, param, quality) VALUES ('%s', '%s', '%s', %d)", $name, $big_folder, serialize($param), $big_quality);
$module_big_variation_id = DB::last_id("images_variations");
if(! $big_size)
{
$big_variation_id = $module_big_variation_id;
$big_size = $big_width.'.'.$big_height;
}
}
else
{
$module_big_variation_id = $big_variation_id;
$big_folder = 'big';
}
$medium_width = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='medium_width' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
$medium_height = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='medium_height' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
$medium_quality = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='medium_quality' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
if($medium_size != $medium_width.'.'.$medium_height)
{
$param = array(0 => array('name' => 'resize', 'width' => $medium_width, 'height' => $medium_height, 'max' => 0));
if(! $medium_size)
{
$name = 'Маленький';
$medium_folder = 'medium';
}
else
{
$name = 'Маленький '.$row["module_name"].($row["site_id"] ? ' '.$row["site_id"] : '');
$medium_folder = 'medium_'.$row["module_name"].($row["site_id"] ? ' '.$row["site_id"] : '');
}
DB::query("INSERT INTO {images_variations} (name, folder, param, quality) VALUES ('%s', '%s', '%s', %d)", $name, $medium_folder, serialize($param), $medium_quality);
$module_medium_variation_id = DB::last_id("images_variations");
if(! $medium_size)
{
$medium_variation_id = $module_medium_variation_id;
$medium_size = $medium_width.'.'.$medium_height;
}
}
else
{
$module_medium_variation_id = $medium_variation_id;
$medium_folder = 'medium';
}
$variations = serialize(array(0 => array('name' => 'large', 'id' => $module_big_variation_id), 1 => array('name' => 'medium', 'id' => $module_medium_variation_id)));
DB::query("INSERT INTO {config} (name, module_name, value, site_id) VALUES ('images_variations', '%s', '%s', %d)", $row["module_name"], $variations, $row["site_id"]);
if($row["site_id"])
{
$result_img = DB::query("SELECT i.id, i.name FROM {images} AS i INNER JOIN {".$row["module_name"]."} AS e ON i.element_id=e.id WHERE e.site_id=%d AND i.module_name='%s' AND i.`convert`='0'", $row["site_id"], $row["module_name"]);
}
else
{
$result_img = DB::query("SELECT id, name FROM {images} WHERE module_name='%s' AND `convert`='0'", $row["module_name"]);
}
while($row_img = DB::fetch_array($result_img))
{
if(! is_dir(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$big_folder))
{
mkdir(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$big_folder, 0777);
}
if(! is_dir(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$medium_folder))
{
mkdir(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$medium_folder, 0777);
}
copy(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/original/".$row_img["name"]);
copy(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$big_folder."/".$row_img["name"]);
copy(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/small/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/small/".$row_img["name"]);
unlink(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/small/".$row_img["name"]);
unlink(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$row_img["name"]);
if($medium_folder != 'medium')
{
copy(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/medium/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$medium_folder."/".$row_img["name"]);
unlink(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/medium/".$row_img["name"]);
}
DB::query("UPDATE {images} SET `convert`='1' WHERE id=%d", $row_img["id"]);
}
}
//изображения категорий
$img_modules = array();
$result = DB::query("SELECT * FROM {config} WHERE name IN ('big_width_cat', 'big_height_cat', 'medium_width_cat', 'medium_height_cat') ORDER BY site_id DESC");
while($row = DB::fetch_array($result))
{
if(in_array($row["module_name"].$row["site_id"], $img_modules))
continue;
$img_modules[] = $row["module_name"].$row["site_id"];
$big_width = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='big_width_cat' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
$big_height = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='big_height_cat' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
$big_quality = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='big_quality_cat' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
if(! $big_width || ! $big_height)
continue;
if($big_size != $big_width.'.'.$big_height)
{
$param = array(0 => array('name' => 'resize', 'width' => $big_width, 'height' => $big_height, 'max' => 0));
if(! $big_size)
{
$name = 'Большой';
$big_folder = 'big';
}
else
{
$name = 'Большой '.$row["module_name"].'cat'.($row["site_id"] ? ' '.$row["site_id"] : '');
$big_folder = 'big_'.$row["module_name"].'cat'.($row["site_id"] ? ' '.$row["site_id"] : '');
}
DB::query("INSERT INTO {images_variations} (name, folder, param, quality) VALUES ('%s', '%s', '%s', %d)", $name, $big_folder, serialize($param), $big_quality);
$module_big_variation_id = DB::last_id("images_variations");
if(! $big_size)
{
$big_variation_id = $module_big_variation_id;
$big_size = $big_width.'.'.$big_height;
}
}
else
{
$module_big_variation_id = $big_variation_id;
$big_folder = 'big';
}
$medium_width = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='medium_width_cat' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
$medium_height = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='medium_height_cat' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
$medium_quality = DB::query_result("SELECT value FROM {config} WHERE (site_id=%d".($row["site_id"] ? " OR site_id=0" : "").") AND module_name='%s' AND name='medium_quality_cat' ORDER BY site_id DESC LIMIT 1", $row["site_id"], $row["module_name"]);
if(! $medium_width || ! $medium_height)
continue;
if($medium_size != $medium_width.'.'.$medium_height)
{
$param = array(0 => array('name' => 'resize', 'width' => $medium_width, 'height' => $medium_height, 'max' => 0));
if(! $medium_size)
{
$name = 'Маленький';
$medium_folder = 'medium';
}
else
{
$name = 'Маленький '.$row["module_name"].'cat'.($row["site_id"] ? ' '.$row["site_id"] : '');
$medium_folder = 'medium_'.$row["module_name"].'cat'.($row["site_id"] ? ' '.$row["site_id"] : '');
}
DB::query("INSERT INTO {images_variations} (name, folder, param, quality) VALUES ('%s', '%s', '%s', %d)", $name, $medium_folder, serialize($param), $medium_quality);
$module_medium_variation_id = DB::last_id("images_variations");
if(! $medium_size)
{
$medium_variation_id = $module_medium_variation_id;
$medium_size = $medium_width.'.'.$medium_height;
}
}
else
{
$module_medium_variation_id = $medium_variation_id;
$medium_folder = 'medium';
}
$variations = serialize(array(0 => array('name' => 'big', 'id' => $module_big_variation_id), 1 => array('name' => 'medium', 'id' => $module_medium_variation_id)));
DB::query("INSERT INTO {config} (name, module_name, value, site_id) VALUES ('images_variations_cat', '%s', '%s', %d)", $row["module_name"], $variations, $row["site_id"]);
if($row["site_id"])
{
$result_img = DB::query("SELECT i.id, i.name FROM {images} AS i INNER JOIN {".$row["module_name"]."_category} AS e ON i.element_id=e.id WHERE e.site_id=%d AND i.module_name='%s' AND i.`convert`='0'", $row["site_id"], $row["module_name"].'cat');
}
else
{
$result_img = DB::query("SELECT id, name FROM {images} WHERE module_name='%s' AND `convert`='0'", $row["module_name"].'cat');
}
while($row_img = DB::fetch_array($result_img))
{
if(! is_dir(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$big_folder))
{
mkdir(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$big_folder, 0777);
}
if(! is_dir(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$medium_folder))
{
mkdir(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$medium_folder, 0777);
}
copy(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/original/".$row["name"]);
copy(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$big_folder."/".$row_img["name"]);
copy(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/small/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/small/".$row_img["name"]);
unlink(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/small/".$row_img["name"]);
unlink(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$row_img["name"]);
if($medium_folder != 'medium')
{
copy(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/medium/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/".$medium_folder."/".$row_img["name"]);
unlink(ABSOLUTE_PATH.USERFILES."/".$row["module_name"]."/medium/".$row_img["name"]);
}
DB::query("UPDATE {images} SET `convert`='1' WHERE id=%d", $row_img["id"]);
}
}
$result_img = DB::query("SELECT id, name FROM {images} WHERE module_name='menu'");
while($row_img = DB::fetch_array($result_img))
{
if(! is_dir(ABSOLUTE_PATH.USERFILES."/menu/big"))
{
mkdir(ABSOLUTE_PATH.USERFILES."/menu/big", 0777);
}
copy(ABSOLUTE_PATH.USERFILES."/menu/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/original/".$row["name"]);
copy(ABSOLUTE_PATH.USERFILES."/menu/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/menu/big/".$row_img["name"]);
copy(ABSOLUTE_PATH.USERFILES."/menu/small/".$row_img["name"], ABSOLUTE_PATH.USERFILES."/small/".$row_img["name"]);
@unlink(ABSOLUTE_PATH.USERFILES."/menu/small/".$row_img["name"]);
unlink(ABSOLUTE_PATH.USERFILES."/menu/".$row_img["name"]);
}
DB::query("INSERT INTO {config} (`module_name`, `name`, `value`) VALUES ('menu', 'images_variations', '%s')", serialize(array(0 => array('name' => 'big', 'id' => $big_variation_id))));
DB::query("ALTER TABLE {images} DROP `convert`");
$row = DB::fetch_array(DB::query("SELECT * FROM {adminsite} WHERE rewrite='menu'"));
if($row)
{
DB::query("INSERT INTO {adminsite} (parent_id, group_id, name, rewrite, act, numrow, sort) VALUES (%d, '1', 'Настройки', 'menu/config', '1', '90', '68')", $row["id"], $row["name"]);
$id = DB::last_id("adminsite");
DB::query("INSERT INTO {adminsite_parents} (element_id, parent_id) VALUES (%d, %d)", $id, $row["id"]);
DB::query("UPDATE {adminsite} SET count_children=3 WHERE id=%d", $row["id"]);
};
DB::query("CREATE TABLE {images_editor_folders} (
id SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id SMALLINT(5) UNSIGNED NOT NULL DEFAULT '0',
name VARCHAR(250) NOT NULL DEFAULT '',
PRIMARY KEY (id)
) CHARSET=utf8");
//редирект при завершении оформления заказа
if(in_array('shop', $modules))
{
DB::query("ALTER TABLE {shop_payment} ADD `redirect` VARCHAR(100) NOT NULL DEFAULT ''");
}
$diafan->_cache->delete("");
//////////////////////config
$new_values = array(
'VERSION_CMS' => VERSION,
'DATE_UPDATE' => D_UPDATE,
'TIT1' => TIT
);
include_once(ABSOLUTE_PATH.'includes/config.php');
Config::save($new_values, $langs);
echo 'Обновление успешно завершено!';