Java, Groovy on Grails, PHP, Kohana

Блог о программировании на Java, Groovy on Grails, PHP, kohana

Currently Viewing Posts Tagged kohana

Использование kohana 3.2 из командной строки для CRON

Некоторые задачи для сайта необходимо выполнять при помощи планировщика crontab
Например, рассылки писем, формирование и отправка отчетов администраторам и т.д.
В этом случае нам необходимо запускать наши скрипты из командной строки.
Для этого подготовим контроллер, например, stat.php,
разместим его в /kohana/application/classes/controller/
Continue reading “Использование kohana 3.2 из командной строки для CRON”

Kohana 3.2 модуль для генерации sitemap.xml

Традиционно нашел этот модуль на Git https://github.com/ThePixelDeveloper/kohana-sitemap.
Я качал модуль до его модификации под kohana 3.2, правки делал сам,
поэтому у кого не пойдет модуль с Git – можно воспользоваться модифицированным мною:
sitemap.zip

Небольшое поянение, как использовать (прежде всего модуль необходимо
распаковать в папку modules, подключить в bootstrap.php), далее все
что написанно ниже ложим в свой контроллер-экшн:

Continue reading “Kohana 3.2 модуль для генерации sitemap.xml”

Pagination в Kohana 3.2

Для постраничной навигации (pagination) в Kohana 3.2 использую модуль:

https://github.com/kloopko/kohana-pagination

Использовать этот модуль достаточно просто:
1. Распаковываем архив в папку с модулями /modules/pagination/
2. Подключаем модуль в bootstrap.php

Kohana::modules(array(
	// 'auth'       => MODPATH.'auth',         // Basic authentication
	// 'cache'      => MODPATH.'cache',      // Caching with multiple backends
	// 'codebench'  => MODPATH.'codebench',  // Benchmarking tool
	 'database'   => MODPATH.'database',     // Database access
	// 'image'      => MODPATH.'image',      // Image manipulation
	 'orm'        => MODPATH.'orm',          // Object Relationship Mapping
	// 'unittest'   => MODPATH.'unittest',   // Unit testing
	// 'userguide'  => MODPATH.'userguide',  // User guide and API documentation
	 'pagination'  => MODPATH.'pagination',  // Pagination
)

Continue reading “Pagination в Kohana 3.2”

Изменение минимальной длины пароля в Kohana 3.2

Не всем сайтам необходимо иметь сложные и длинные пароли. Поэтому минимальная длина пароля установленная в ядре kohana 3.2 размером 8 символов иногда требует корректировки в меньшую сторону, например – 3 символа.
Сделать такие изменения можно переопределив метод get_password_validation в нашей модели ‘user’:

 public static function get_password_validation($values)
{
  return Validation::factory($values)
   ->rule('password', 'min_length', array(':value', 3))
   ->rule('password_confirm', 'matches',
           array(':validation', ':field', 'password'));
	}

Kohana 3.2 и autologin при подтверждении регистрации

При регистрации на различных ресурсах мы, как правило, получаем на email ссылку с кодом для подтверждения регистрации. При подверждении регистрации, просить пользователя снова вводить логин и пароль не всегда оправдано (чего ведь не сделаешь для наших любимых пользователей). Поэтому для того, чтобы пользователь автоматически залогинился, перейдя по ссылке с кодом, нам нужен будет метод:

Auth::instance()->force_login($username)

Например, у нас есть некий action confirm в который мы попадаем по ссылке http://sitename/confirm/312ecvfv13E213, где “312ecvfv13E213” – код подтверждения регистрации:

public function action_confirm()
{
//Получаем код регистрации из нашего роута
$code =  $this->request->param('code');

//Проверяем есть ли пользователь с таким кодом (например в таблицу users
//добавим поле 'code', куда предварительно будем записывать
//сгенерированный код подтверждения)

//содаем объект user
$users = ORM::factory('user');

//находим пользователя с наши кодом подтверждения
$user = $users->where('code', '=', $code)->find();

//Если пользователь существует, то, например, добавляем ему
//роль login (а в случае, когда он еще не подтвердил регистрацию,
//то давать ему роль prelogin или не давать вообще никакой роли)

if ($user->id)
{
//например роль 'login' имеет id=1
$user->add('roles', 1);

//И напоследок - автоматически логиним его на нашем сайте
Auth::instance()->force_login($user->username);

//И можем еще перебросить его на "главную"
$this->request->redirect();

}

Прикручиваем Captcha к Kohana 3.2

На Github есть модуль captcha https://github.com/kolanos/kohana-captcha, но для kohana 3.2 в нем надо сделать некоторые изменения. В частности изменить вызовы конфигурационного файла с

$config = Kohana::config('captcha')

на

$config = Kohana::$config->load('captcha')

и заменить старый вариант вызова request:

Request::instance()->headers['Content-Type'] = 'image/'.$this->image_type;
Request::instance()->headers['Cache-Control'] = 'no-store, no-cache,
must-revalidate, post-check=0, pre-check=0';
Request::instance()->headers['Pragma'] = 'no-cache';
Request::instance()->headers['Connection'] = 'close';

на новый:

Request::current()->headers('Content-Type', 'image/'.$this->image_type);
Request::current()->headers('Cache-Control', 'no-store, no-cache,
must-revalidate, post-check=0, pre-check=0');
Request::current()->headers('Pragma', 'no-cache');
Request::current()->headers('Connection', 'close');

Continue reading “Прикручиваем Captcha к Kohana 3.2”

Оптимизация запросов к базе данных Kohana 3.2 (ORM & JOIN)

В kohana есть замечательный модуль ORM, он значительно облегчает жизнь разработчикам.
Хотя как известно “бесплатный сыр бывает только в мышеловке”.

Используя ORM мы получаем простой и удобный доступ к базе данных, как к обычному объекту, но при этом в конечном итоге kohana все же создает обычные SQL запросы.

Таблица пользователей ‘users’
id role_id name
1 2 Вася
2 3 Петя
3 1 Степа
Таблица ролей пользователей ‘roles’
id role_name
1 root
2 admin
3 manager

Допустим мы создали 2 модели к вышеописанным таблицам:

  • user.php
  • role.php

Continue reading “Оптимизация запросов к базе данных Kohana 3.2 (ORM & JOIN)”

  • Recent Posts