Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

.\aplication\classes\model\material.php




.. \aplication\classes\model\material. php

<? php defined('SYSPATH') or die('No direct script access. ');

class 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 // отвечает за то, какой параметр с чем связан с бд

                   '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 и заверщаем функцию

                    {

                              return FALSE;

                    }

       }

}

 

 

.. \aplication\classes\model\myuser. php

<? php defined('SYSPATH') or die('No direct script access. ');

class Model_Myuser extends ORM

{

       protected $_table_name = 'users';

protected $errors=array(); // защищенное свойство доступ только у наследников

   public function rules()

       {

                   return array(

                              'password' => array(

                                          array('not_empty'),

           array('min_length', array(': value', 7)),

                              ),

                              'username' => array(

                                          array('not_empty'),

                                          array('min_length', array(': value', 8)),

                                          array('max_length', array(': value', 80)),

                                          array('email'),

           array(array($this, 'username_unique')),                

                              ),

                   );

       }

       public 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')); // введенное в поле значение будет отправлено методу checkOldPass выше

                   $validation-> rule('newpass1', 'not_empty');

   $validation-> rule('newpass1', 'regex', array(': value', '/^[A-z0-9_]++$/iD'));

                   $validation-> rule('newpass1', 'matches', array(': validation', 'newpass1', 'newpass2')); // сравнение newpass1 и newpass2 на идентичность

   $validation-> rule('newpass1', 'min_length', array(': value', '7'));

   $validation-> rule('newpass1', 'max_length', array(': value', '16'));

                   if(! $validation-> check()) // запуск внуртеннего метода проверки валидации. Если ошибочно вернет false и превратится в true

   {

                              $this-> errors = $validation-> errors('catErrors'); // у текущего класса(myuser) в свойство errors (объявлено выше) записываются ошибки по причине которых не прошла валидация

                              return FALSE; // вернет методу saveNewPass тем самым завершит выполнение

   }

                   $auth = Auth:: instance(); // действие описано в комментариях метода displayusername

                   $userId = $auth-> get_user();

 

                   $usertemp = ORM:: factory('myuser', array('id'=> $userId)); // поиск пользователя с текущим идентификатором

                   $usertemp-> password = $auth-> hash_password($newpass1); // запись на место его пароля нового в зашифрованном виде

                   $usertemp-> save(); // сохранение действия записи

                   return TRUE; // прекращение выполнения функции и передача ей true(1)

       }

public function getErrors()

{

   return $this-> errors; // вовращении функции существующих ошибок в model Myuser

}

}

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...