Example #1
0
 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;
 }
Example #2
0
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; " />Привет! Это твоя первая запись, хотя ты ее и &nbsp;не создавал, <strong>она появилась при установке Tractor Engine автоматически</strong>. Она нужна для того, чтобы, впервые открыв свой новый сайт, ты улыбнулся глядя на картинку слева. А если вдруг ты хочешь узнать <strong>что умеет этот движок</strong>,&nbsp;&ndash;&nbsp;подробности под катом. Кстати, как поставить этот самый кат (от слова cut), т.е. ограничить количество буковок на этой странице, здесь&nbsp;тоже будет написано.</p>
<div style="page-break-after: always;">
	<span style="display: none;">&nbsp;</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; ">
	И да, как же разделись запись на части, если она большая. Для этого достаточно в редакторе нажать на кнопочку &quot;Вставить разрыв страницы&quot;. Наслаждайся!</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; " />Привет! Это твоя первая запись, хотя ты ее и &nbsp;не создавал, <strong>она появилась при установке Tractor Engine автоматически</strong>. Она нужна для того, чтобы, впервые открыв свой новый сайт, ты улыбнулся глядя на картинку слева. А если вдруг ты хочешь узнать <strong>что умеет этот движок</strong>,&nbsp;&ndash;&nbsp;подробности под катом. Кстати, как поставить этот самый кат (от слова cut), т.е. ограничить количество буковок на этой странице, здесь&nbsp;тоже будет написано.</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>'; */
}
Example #3
0
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;
}