Программный комплекс управления сайтом с использованием "Kohana Framework"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
xecute();
$width = $node[right_key] - $node[left_key] + 1;
// Обновление последующих узлов
$this->modifyNodes((int)$node[right_key], -$width);
//DB::query(NULL, COMMIT)->execute();
}function check($thorough=FALSE)
{
$QTblName = Database::instance()->quote_table($this->table);
// Тест 1
$query =
SELECT id.$QTblName.MOD(right_key - left_key, 2) = 0;
$result = DB::query(Database::SELECT, $query)->execute();(count($result) != 0)new Exception(Test 1 integrity check failed.);
// Тест 2
$query =
SELECT id.$QTblName.MOD(left_key - level + 2, 2) = 0;
$result = DB::query(Database::SELECT, $query)->execute();(count($result) != 0)new Exception(Test 2 integrity check failed.);
// Тест 3($thorough)
{
$query =
SELECT t1.id, COUNT(t1.id) AS rep, MAX(t3.right_key) AS max_right
.$QTblName. AS t1,
.$QTblName. AS t2,
t2.left_key">.$QTblName. AS t3.left_key <> t2.left_key
t2.right_key">AND.left_key <> t2.right_key
t2.left_key">AND.right_key <> t2.left_key
t2.right_keyBY.id_right SQRT( 4 * rep + 1 ) + 1;
$result = DB::query(Database::SELECT, $query)->execute();
(count($result) != 0)new Exception(Test 3 integrity check failed.);
}
// Тест 4, проверка level
$query =
SELECT node.id as id, node.level as level
.$QTblName. AS node,
.$QTblName. AS parentnode.left_key BETWEEN parent.left_key AND parent.right_keyBY node.idCOUNT(parent.name) - 1 != levelBY node.left_key;
$result = DB::query(Database::SELECT, $query)->execute();(count($result) != 0)new Exception(Test 4 integrity check failed.);
}
}
..\aplication\classes\valid.php
<?php defined(SYSPATH) or die(No direct script access.);Valid extends Kohana_Valid
{static function check_id($value, $tablename)
{
$id = (int) $value;(! preg_match("/^[a-z_]+$/i", $tablename)) return FALSE;
$count = DB::select(array(COUNT("*"), total_count))
>from($tablename)
>where(id, =, $id)
>execute()
>get(total_count);($count != 1) return FALSE;TRUE;
}
}
..\aplication\classes\controller\account.php
<?php defined(SYSPATH) or die(No direct script access.);Controller_Account extends Loginverification
{
public $template = title;
public function action_index()
{
$data=array();
$myuser = new Model_Myuser();
$data[username] = $myuser->displayusername(); // в поле username массива data сохранится имя текущего пользователя
if(isset($_POST[btnpassremove]))
{
$oldpass = Arr::get($_POST, oldpass, );
$newpass1 = Arr::get($_POST, newpass1, );
$newpass2 = Arr::get($_POST, newpass2, );
if($myuser->saveNewPass($oldpass, $newpass1, $newpass2))
{
$data[ok]=; // создание поля ok в массиве data в случае если функции saveNewPass вернулось true(1)
}
else
{
$data[errors]=$myuser->getErrors(); // создание поля errors в массиве и запись ошибок класса myuser в это поле
}
}
$this->template->content=View::factory(accountview, $data); // вывод выбранного вида и массива Data
}
}
..\aplication\classes\controller\ajax.php
<?php defined(SYSPATH) or die(No direct script access.);Controller_Ajax extends Controller {function action_emailunique()
{
$email = Arr::get($_POST, email, );
$myuser = new Model_Myuser();
$res = $myuser->username_unique($email);json_encode(array(result => $res));
}
public function action_checkOldPass()
{
$oldpass = Arr::get($_POST, oldpass, ); // передача значения поля oldpass в переменную
$myuser = new Model_Myuser(); // объявление класса Model_Myuser
$res = $myuser->checkOldPass($oldpass); // запись true или false в переменную res по результату проверки метода checkOldPass модели myuserjson_encode(array(result => $res)); // вывод в формате json_encode true или false
}
}
..\aplication\classes\controller\authformer.php
<?php defined(SYSPATH) or die(No direct script access.);Controller_Authformer extends Controller_Template // контроллер управления авторизацией пользователей
//расширяется от контроллера Template (внутреннего файла инструкций Kohana)
{
public $template = title; // подключение базового вида
public function action_index() // метод который будет выполнятся по умолчанию
{
$notcapture=Security::xss_clean(Arr::get($_POST, authbutton, )); // берем значение нажатой кнопки входа, сделано это с главной форм ыили с быстрой формы
$captcha = Captcha::instance();
$captcha_image = $captcha->render();
$data=array(); // инициализация пустого массива
$auth = Auth::instance(); // объявление внутреннего класса авторизации
if($auth->logged_in()) // если пользователь авторизован
{
request::initial()->redirect(); // переадресовать его на главную страницу
}
else // иначе
{
if(isset($_POST[authbutton])) // если нажата кнопка authbutton
{
$login=Security::xss_clean(Arr::get($_POST, login, )); // в переменную логин записать значение поля логин
$password=Security::xss_clean(Arr::get($_POST, password, )); // в переменную пароль записать значение поля пароль
$capturenka=Captcha::valid(Security::xss_clean(Arr::get($_POST, captcha, )));
if ($notcapture==" ") $capturenka=true; // если нажатие с быстрой формы входа, можно картинку не спрашивать
if(!$capturenka)
{
$data["badimagecode"]="";
}
else
{
if($auth->login($login, $password)) // проверка имени и пароля в базе данных таблицы users внутренним методом Kohana
{
$session = Session::instance(); // Создание эземпляра класса Session на основе метода Instance
$auth_redirect = $session->get(auth_redirect,); // чтение записанного адреса(котнроллера childrenbefore)
$session->delete(auth_redirect); // удаление сессии
Request::initial()->redirect($auth_redirect); // переадресация пользователя на страницу которую он хотел посетить до авторизации
}
else
{
$data["errors"]= ""; // если пользователь не ввел логин и пароль либо ввел но их нету в базе запистаь пустую строку в массив
}
}
}
}
$this->template->content = View::factory(authview, $data)->bind(captcha_image, $captcha_image); // вывод вида
}
public function action_logout() // функция разлогирования
{
$auth=Auth::instance(); // объявление класса авторизации
if($auth->logout()); // выполнение внутреннего метода kohana logout
{
$this->template->content="Вы вышли из системы"; // вывод в качестве контента сообщения
request::initial()->redirect(); // передаресация на главную страницу
}
}
public function action_form()
{
//Закрываем доступ к данному методу из адресной строки
if($this->request->is
Copyright © 2008-2014 geum.ru рубрикатор по предметам рубрикатор по типам работ пользовательское соглашение