geum.ru - только лучшие рефераты!

Программный комплекс управления сайтом с использованием "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)); // введенное в поле значение будет отправлено м