Программный комплекс управления сайтом с использованием "Kohana Framework"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
quot;,"ю"=>"yu","я"=>"ya"
);
return strtr($str,$arr);
}
}
..\aplication\classes\model\material.php
<?php defined(SYSPATH) or die(No direct script access.);Model_Material extends ORM // работает с таблицей Materials поскольку метод ORM всегда добавляет в конце букву s.
{protected $_created_column = array(column => createtime, format => TRUE); // внутренний метод kohana
protected $_updated_column = array(column => modtime, format => TRUE); // добавляет в поля время изменения, редактирования
protected $_belongs_to = array( // связь -один к одному- // внутренняя функция kohana // отвечает за то, какой параметр iем связан с бд
tree => array( // название поля --таблицы А--
// model => tree, // название связываемой модели()если совпадает с названием массива, то можно не писать строчку)
foreign_key => category_id, // название связующего поля --таблицы Б--
), );
protected $_has_many = array(
tag=>array(
through=>tags_materials, // связь -многие ко многим-
// идентификаторы таблицы tags с tags_id таблицы tags_materials
// не указываются поскольку кохана понимает говорящие названия данных полей
),
);
public function getMaterialsByCategory($category_id)
{
return DB::select()
->from(materials)
->where(category_id, =, $category_id)
->execute()
->as_array();
}
public function addMaterial($categoryId, $content, $materialname) // получение выбранной категории и введенного контента(текста)
{
$this->category_id = $categoryId;
$this->content = Security::xss_clean($content);
$this->name = Security::xss_clean($materialname); // Security::xss_clean вырежит из содержимого все javascriptы
// с помощью подключенного модуля purifier(внешняя библиотека)
$this->save(); // запись в базу идентификатора и контента
}
public function ShowIdFromAddMaterial($materialname)
{
$id = ORM::factory(material, array(name=>$materialname)); // загрузка строки из бд где id = записанному в переменную $userId
$materialname=$id->id; // запишем в переменную $materialname идентификатор найденной строчки только что сохданного материала
return $materialname; // вернем идентификатор в качестве результата функции
}
public function showMaterialById($id) // нам приходит url пользователя(ид материала)
{
$material = ORM::factory(material, array(id=>$id)); // создание экземпляра класса material для работы с бд (таблица materials)
// ищется и записывается строка с переданным идентификатором
if($material->loaded()) // проверка загруженна ли строка вообще
{
$res = $material->tag->find_all(); // создать массив res в который запистаь действие метода find_all над дополнительным полем tag
foreach($res as $item)
{
$taginfo[] = array(name => $item->name); // с каждой итерацией цикла записываем
// в массив $taginfo с полями 1,2,...n имена наших материалов
}
$result[content] = $material->content; // в массив result поле контент записать контент таблицы materials по найденному идентификатору
$result[name] = $material->name; // аналогично
$result[category] = $material->tree->name; // получаем доступ к таблице трии и берем от туда название категории с текущим идентификтаором
$result[tag] = $taginfo; // запись массива taginfo в массив result с полем tag получается многомерный массив
// поля массива $result станут полями массива $data(только если дата не имела полей до этого)
return $result; // функция вернет значения массива result
}
else // если нет, то возвращаем false и заверщаем функцию
{FALSE;
}
}
}
..\aplication\classes\model\myuser.php
<?php defined(SYSPATH) or die(No direct script access.);Model_Myuser extends ORM
{$_table_name = users;
protected $errors=array(); // защищенное свойство доступ только у наследников
public function rules()
{array(
password => array((not_empty),
array(min_length, array(:value, 7)),
),
username => array((not_empty),(min_length, array(:value, 8)),(max_length, array(:value, 80)),(email),
array(array($this, username_unique)),
),
);
}function username_unique($username)
{
$db = Database::instance();
if ($this->id)
{
$query =
SELECT id
FROM users
WHERE id != .$this->id. AND username = .$db->escape($username);
}
else
{
$query =
SELECT id
FROM users
WHERE username = .$db->escape($username);
}
$result = $db->query(Database::SELECT, $query, FALSE)->as_array();
if (count($result) > 0)
{
return FALSE;
}
else
{
return TRUE;
}
}
public function displayusername() // возвращает --имя пользователя-- по методу сравнения с его идентификатором
{
$auth = Auth::instance(); // объявление класса авторизации
$userId = $auth->get_user(); // get_user возвращает идентификатор авторизованного пользователя
$usertemp = ORM::factory(myuser, array(id=>$userId)); // загрузка строки из бд где id = записанному в переменную $userId
return $usertemp->username; // из этой строки берем имя пользователя
}
public function checkOldPass($oldpass) // проверяет введенный в поле пароль с оригиналом вернет --true или false--
{
$auth = Auth::instance(); // объявление класса авторизации
return $auth->check_password($oldpass); // функция check_password(внутренний метод Kohana) получает введенный пароль и сверяет его с паролем в базе у текущего пользователя
}
public function saveNewPass($oldpass, $newpass1, $newpass2)
{
$vData = array("oldpass" => $oldpass, "newpass1" => $newpass1, "newpass2" => $newpass2,); //(для удобства ассоциативен) записываем введенные пароли (старый и новые в массив)
// массив нужен для использования внутреннего метода kohana валидации полей и значений
$validation = Validation::factory($vData); // создание экземпляра класса валидации Kohana и на его вход передается наш ассоциативный массив
$validation->rule(oldpass, not_empty); // внутренняя функция Kohana не дающаяя полю быть пустым
$validation->rule(oldpass, alpha_numeric); // внутренняя функция Kohana допускает только цифры и англ буквы
$validation->rule(oldpass, array($this, checkOldPass)); // введенное в поле значение будет отправлено м