function registration($login, $pass, $email, $name, $flag_email_approve) { $login = mysql_escape_string(killMagic($login)); $pass = mysql_escape_string(killMagic($pass)); $email = mysql_escape_string(killMagic($email)); $name = mysql_escape_string(killMagic($name)); $stor = new Storage(); $stor = $stor->storType(TE_STORTYPE); $hamster = $stor->make('hamster'); $hamster->setProperty('login', $login); $data = $hamster->getList(); $hamster = $stor->make('hamster'); $hamster->setProperty('email', $email); $e_data = $hamster->getList(); if ($name == "") { $name = $login; } if (count($data) > 0) { $regmes = my_lang('regist_t1'); } elseif (count($e_data) > 0) { $regmes = my_lang('regist_t2'); } else { // подтвердить email if ($flag_email_approve !== true) { $eapp = 0; } else { $eapp = 1; sub_add($email); // lib.php } $user = array('status' => 'user', 'login' => $login, 'name' => $name, 'email' => $email, 'password' => $pass, 'approve' => $eapp); $hamster->setProps($user); $hamster->add(); $_SESSION['login'] = $login; $_SESSION['pass'] = $pass; $_SESSION['name'] = $name; $hamster->setProperty('login', $login); $hamster->get(); $data = array(); $data = $hamster->getProps(); $_SESSION['author_id'] = $data['id']; $_SESSION['status'] = $data['status']; $_SESSION['tz'] = $data['tz']; if ($flag_email_approve !== true) { include_once 'lib/mail_lib.php'; send_email_req($data); } $regmes = true; } return $regmes; }
function te_install($inst_macros) { //$_SESSION['KCFINDER']['disabled'] = false; //$tractor = true;//чтобы подключиться к бд в config.php extract($inst_macros); //распаковываем массив для удобства if ($site_url == '') { $site_url = 'http://' . $_SERVER['HTTP_HOST'] . substr($_SERVER['PHP_SELF'], 0, -10); } if ($engine_url == '') { $engine_url = 'http://' . $_SERVER['HTTP_HOST'] . substr($_SERVER['PHP_SELF'], 0, -10) . '/_engine'; } define("PREFIX", $prefix); mysql_query("set character_set_client='utf8'"); mysql_query("set character_set_results='utf8'"); mysql_query("set collation_connection='utf8_general_ci'"); include 'lib/lib.php'; mysql_query('CREATE TABLE IF NOT EXISTS ' . PREFIX . 'article( id INT AUTO_INCREMENT PRIMARY KEY, stamp int, title VARCHAR (100), sef TEXT, category_id INT, description TEXT, pre_content LONGTEXT, content LONGTEXT, meta_key_words TEXT, meta_description TEXT, date TEXT, pubDate TEXT, author TEXT, author_id TEXT, approve TINYINT ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error()); mysql_query('CREATE TABLE IF NOT EXISTS ' . PREFIX . 'config( id INT AUTO_INCREMENT PRIMARY KEY, theme VARCHAR (100), site_name VARCHAR (100), artcls_per_page TINYINT, site_url VARCHAR (100), engine_url VARCHAR (100), site_desc VARCHAR (100), use_sef TINYINT, use_ru_sef TINYINT, sef_type TINYINT, site_rss TEXT, date_format VARCHAR (100), tz TINYINT ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error()); mysql_query('INSERT INTO ' . PREFIX . 'config SET theme = "' . $theme . '", site_name = "' . $site_name . '", artcls_per_page = "' . intval($artcls_per_page) . '", site_url = "' . $site_url . '", engine_url = "' . $engine_url . '", site_desc = "' . $site_desc . '", use_sef = 1, use_ru_sef = 1, sef_type = 1, site_rss = "' . $site_url . '/rss/index.rss", date_format = "d.m.Y H:i", tz = 4 ') or die(mysql_error()); //Статичные страницы mysql_query('CREATE TABLE IF NOT EXISTS ' . PREFIX . 'static( id INT AUTO_INCREMENT PRIMARY KEY, rank INT, title VARCHAR (100), content LONGTEXT, sef TEXT, meta_key_words TEXT, meta_description TEXT, approve TINYINT ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error()); $n = 'О сайте'; $c = '<p><a href="http://codegust.com">Официальный блог</a></p> <p> CMS Tractor Engine. На сегодняшний день: <ul> <li>почти многопользовательский интерфейс;</li> <li>почти функциональная админ-панель;</li> <li>огромное количество (~5) шаблонов;</li> <li>сверх простая реализация, требующая mysql, знаний php (если есть желание работать с трактором);</li> <li>E-Mail рассылка;</li> <li>экспорт RSS;</li> <li>шаблонизатор.</li> </ul> </p>'; mysql_query('INSERT INTO ' . PREFIX . 'static SET title = "' . $n . '", rank = 1, sef = "about", approve = 1, content = "' . mysql_escape_string($c) . '"') or die(mysql_error()); //Комментарии mysql_query('CREATE TABLE IF NOT EXISTS ' . PREFIX . 'comment( id INT AUTO_INCREMENT PRIMARY KEY, stamp TIMESTAMP, article_id INT, author_id INT, author TEXT, email TEXT, content TEXT, date TEXT, approve TINYINT ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error()); //Рубрики mysql_query('CREATE TABLE IF NOT EXISTS ' . PREFIX . 'categories( category_id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR (100), sef TEXT, type VARCHAR (100), cat_count INT, rank INT ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error()); //Категория по умолчанию mysql_query('INSERT into ' . PREFIX . 'categories (name, sef, cat_count, type, rank) values ("Прочее", "' . urlencode('прочее') . '", 1, "", 1);'); //Модули mysql_query('CREATE TABLE IF NOT EXISTS ' . PREFIX . 'modules( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR (100), rank INT ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error()); //Пользователи mysql_query('CREATE TABLE IF NOT EXISTS ' . PREFIX . 'users( id INT AUTO_INCREMENT PRIMARY KEY, login TEXT, password TEXT, status TEXT, email TEXT, name TEXT, respect TEXT, ban INT, bantime INT, regdate TEXT, tz INT, hash TEXT, approve TINYINT ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error()); //Админ if (empty($login) || empty($pass)) { $login = '******'; $pass = sha1(rand(100000, 999999)); } /* $name = @$_REQUEST['name']; $email = @$_REQUEST['email'];//остальное есть в $config */ if ($name == '') { $name = $login; } mysql_query('INSERT INTO ' . PREFIX . 'users SET status = "admin", login = "******", name = "' . $name . '", email = "' . $email . '", ban = 0, tz = 0, approve = 1, hash = "' . sha1(time() . rand(100000, 999999) . rand(100000, 999999) . rand(100000, 999999)) . '", password = "******"') or die(mysql_error()); if (filter_var($email, FILTER_VALIDATE_EMAIL) !== false) { sub_add($email); } //Подписчики mysql_query('CREATE TABLE IF NOT EXISTS ' . PREFIX . 'sub( id INT AUTO_INCREMENT PRIMARY KEY, email VARCHAR (50) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error()); //Вспомогательные данные mysql_query('CREATE TABLE IF NOT EXISTS ' . PREFIX . 'support( id INT AUTO_INCREMENT PRIMARY KEY, suptitle TINYTEXT, suptext TEXT ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error()); //Архив рассылки mysql_query('CREATE TABLE IF NOT EXISTS ' . PREFIX . 'subarchive( id INT AUTO_INCREMENT PRIMARY KEY, text LONGTEXT, author_id INT, stamp INT ) ENGINE=MyISAM DEFAULT CHARSET=utf8;') or die(mysql_error()); ///Шаблон рассылки $suptitle = 'sub_tmpl'; $suptext = 'To: {TO} Subject: ' . $_SERVER['HTTP_HOST'] . ' FROM: ' . $_SERVER['HTTP_HOST'] . ' <admin@' . $_SERVER['HTTP_HOST'] . '> Reply-to: admin@' . $_SERVER['HTTP_HOST'] . ' Content-type: text/html; charset=utf-8 {TEXT} <p><tt>Чтобы отписаться, перейдите по ссылке <a href="' . $site_url . '/window/unsub/?code={CODE}">' . $site_url . '/window/unsub/?code={CODE}</a><br> С любовью, почтовый робот.</tt></p>'; $new_tmpl = mysql_query('INSERT into ' . PREFIX . 'support (suptitle, suptext) values ( "' . $suptitle . '", "' . mysql_escape_string($suptext) . '" );') or die(mysql_error()); //Шаблон уведомдений $suptitle = 'notice_tmpl'; $suptext = 'To: {TO} Subject: Уведомление ' . $site_name . ' From: ' . $_SERVER['HTTP_HOST'] . ' <admin@' . $_SERVER['HTTP_HOST'] . '> Reply-to: admin@' . $_SERVER['HTTP_HOST'] . ' Content-type: text/plain; charset=utf-8 {TEXT}'; $new_tmpl = mysql_query('INSERT into ' . PREFIX . 'support (suptitle, suptext) values ( "' . $suptitle . '", "' . mysql_escape_string($suptext) . '" );') or die(mysql_error()); //Шаблон обратной связи $suptitle = 'connect_tmpl'; $suptext = 'To: {TO} Subject: Обр. связь ' . $site_name . ' From: {FROM} <admin@' . $_SERVER['HTTP_HOST'] . '> Reply-to: {REPLAY-TO} Content-type: text/plain; charset=utf-8 {TEXT}'; $new_tmpl = mysql_query('INSERT into ' . PREFIX . 'support (suptitle, suptext) values ( "' . $suptitle . '", "' . mysql_escape_string($suptext) . '" );') or die(mysql_error()); //Модули $mod = array(); //базовые $mod[] = 'author'; $mod[] = 'navi'; $mod[] = 'headers'; $mod[] = 'comments'; //$mod [] = 'separator'; $mod[] = 'blogConsole'; $mod[] = 'window'; foreach ($mod as $module) { $new_mod = mysql_query('INSERT into ' . PREFIX . 'modules (name) values ("' . $module . '");') or die(mysql_error()); $rank = mysql_insert_id(); $r = mysql_query('UPDATE ' . PREFIX . 'modules SET rank = "' . $rank . '" WHERE id="' . $rank . '"') or die(mysql_error()); } //1st artcl $str = mysql_escape_string('<p style="text-align: justify; "> <img alt="" src="http://codegust.com/theme_test/user/gallery/x_8fe006f9.jpg" style="margin-left: 4px; margin-right: 4px; float: left; width: 200px; height: 134px; " />Привет! Это твоя первая запись, хотя ты ее и не создавал, <strong>она появилась при установке Tractor Engine автоматически</strong>. Она нужна для того, чтобы, впервые открыв свой новый сайт, ты улыбнулся глядя на картинку слева. А если вдруг ты хочешь узнать <strong>что умеет этот движок</strong>, – подробности под катом. Кстати, как поставить этот самый кат (от слова cut), т.е. ограничить количество буковок на этой странице, здесь тоже будет написано.</p> <div style="page-break-after: always;"> <span style="display: none;"> </span></div> <p style="text-align: justify; "> Итак, Tractor Engine предоставляет тебе кучу всяческих вкусностей и полезностей:</p> <ul> <li style="text-align: justify; "> панель администрирования находится по адресу http://твой_сайт/admin</li> <li style="text-align: justify; "> в ней ты найдешь редактор записей, рубрик, настройки и прочее</li> <li style="text-align: justify; "> свой пользовательский профиль ты можешь отредактировать введя в адресной строке http://твой_сайт/window/auth</li> </ul> <p style="text-align: justify; "> И да, как же разделись запись на части, если она большая. Для этого достаточно в редакторе нажать на кнопочку "Вставить разрыв страницы". Наслаждайся!</p> '); $str_desc = mysql_escape_string('<p style="text-align: justify; "> <img alt="" src="http://codegust.com/theme_test/user/gallery/x_8fe006f9.jpg" style="margin-left: 4px; margin-right: 4px; float: left; width: 200px; height: 134px; " />Привет! Это твоя первая запись, хотя ты ее и не создавал, <strong>она появилась при установке Tractor Engine автоматически</strong>. Она нужна для того, чтобы, впервые открыв свой новый сайт, ты улыбнулся глядя на картинку слева. А если вдруг ты хочешь узнать <strong>что умеет этот движок</strong>, – подробности под катом. Кстати, как поставить этот самый кат (от слова cut), т.е. ограничить количество буковок на этой странице, здесь тоже будет написано.</p>'); $new_artcl = mysql_query('INSERT into ' . PREFIX . 'article (title, sef, category_id, description, pre_content, content, meta_key_words, meta_description, date, pubDate, author, author_id, stamp, approve) values ( "1st Theme", "1st", 1, "' . $str_desc . '", "", "' . $str . '", "", "", "' . date("d.m.Y H:i") . '", "' . date(DATE_RSS) . '", "UFO", "1", "' . time() . '", 1 );') or die(mysql_error()); echo ' <p><tt>Таблицы Tractor Engine вполне успешно созданы (если сверху не написано ничего критичного на ненашем языке).</p>'; if (!isset($_REQUEST['login']) || !isset($_REQUEST['pass'])) { echo '<p>Параметры администратора (скопировать и не забыть изменить):<br /> Логин: ' . $login . '<br /> Пароль: ' . $pass . '</p>'; } echo '<p>Напоминаю, что внизу каждой страницы Вашего сайта должна присутствовать ссылка на codegust.com с упоминанием о CMS.</p> <p>Напр. ' . htmlspecialchars('<a href="http://codegust.com">CMS Tractor Engine</a>') . '</p> <p><a href="' . $site_url . '">Сайт</a> | <a href="' . $site_url . '/admin/">Администрирование</a></p> </tt></p>'; /* } else echo ' <p><tt>Установка не произведена. Таблицы с таким префиксом уже существуют. <br/> Удалите config.php и <a href="?inst">попробуйте снова</a>.</tt></p>'; */ }
function approve_email($id, $hash) { $id = intval($id); $reg = Registry::instance(); $hamster = $reg->get('hamster_info'); $login_status = $reg->get('login_status'); if ($login_status == 3 && $hamster['id'] == $id && $hamster['hash'] == $hash) { $stor = new Storage(); $stor = $stor->storType(TE_STORTYPE); $user = $stor->make('hamster'); $user->setProperty('id', intval($id)); $props = array('approve' => 1, 'hash' => sha1(time() . rand(100000, 999999) . rand(100000, 999999))); if ($hamster['approve'] == 1) { $loot = $stor->make('loot'); $loot->setProperty('suptitle', $hamster['id']); $res = $loot->get(); if ($res) { $loot_data = $loot->getProps(); $loot_email = $loot_data['suptext']; $props['email'] = $loot_email; } } // одобряем и меняем хеш (старый-то мы уже прознали:)) $res = $user->upd($props); if ($res) { // удаляем запись из лута if ($hamster['approve'] == 1) { $loot->del(); sub_upd($hamster, $loot_email); } else { sub_add($hamster['email']); } return true; } return false; } return false; }