Приемы объектно-ориентированного проектирования.

Комментарии ()

Знаменитая книга коллектива авторов, известного под прозвищем «банда четырех». Эту книгу считают классической работой по паттернам (шаблонам) проектирования. Хотя эта книга, как и «Совершенный код», вовсе не о PHP, она будет очень полезна PHP -программисту, ведь паттерны проектирования – вещь, в общем-то универсальная и в PHP (с момента выхода PHP 5) их использование оправдано и необходимо. Единственное, что приступая к чтению необходимо учитывать – книга довольно сложная, читатель должен иметь опыт объектно-ориентированного программирования. 

Скачать

Читать на Wiki


Читать далее

Form - автодополнение

Комментарии ()

Автодополнение очень полезная и удобная фича. Дабы не плодить каждый раз рутинны по роботе с ней, в модуль Form добавлен функционал, поддерживающий ajax autocomplete на базе jQuery.

Каждое автодополнение характеризируется именем, и заранее описывается в form_get_autocomplete_ajax_post.php. Cам елемент ввода должен принадледать к классу autocomplete и иметь data-атрибут autocomplete-name который содержит имя автодополнения..

html

<input type="text" name="login" id="login" value=""   width="" style="" class="autocomplete" placeholder="введите Логин" data-autocomplete-name="users_login">

Требования к елементу ввода:

  • елемент ввода должен принадлежать к классу autocomplete ( class="... autocomplete ...")
  • Наличие атрибута  data-autocomplete-name c именем автодополнения

Пример использования

#elementInputText
$element = array(
    'attr' => array(
        'name' => null,
        'type' => 'text',
        'alias' => null,
        'value' => false,
        'disabled' => false,
        'placeholder' => null,
        'value' => null,
        'class' => 'autocomplete',
        'data' => array('autocomplete-name'=>'users_login')
    ),
    'group' => array(
        'help' => null,
        'help_type' => 'block',
        'label' => null
    )
);
$tpl->setVariable('elementName', $form->getElement($element));

Алгоритм работы

  • При вводе текста в елементе выполняется функция $(".autocomplete").autocomplete(файл system.js), которая выполняент ajax-запрос form_get_autocomplete_ajax.  Если ajax-запрос прошел успешно - мы видим варианты автодополнения. Передаються на сервер в запросе также все data атрибуты, в которых можно передать дополнительные параметры и использовать их
  • form_get_autocomplete_post.php - в целях безопасности, для каждого autocomplete описывается алгоритм выборки данных.

Читать далее

HTML-атрибуты data и jQuery

Комментарии ()

В HTML 5 введены атрибуты тегов data для хранения параметров и получения их в js.  Раньше использовали классы, ради сохранения информации в HTML, с целью последующего использования в js.


Читать далее

YiiTalk эпизод 6

Комментарии ()

Источник


Читать далее

Form - сортировка

Комментарии ()

 

При выводе информации, кроме постраничной навигации и фильтрации информации, есть необходимость в сортировке данных, для удобного поиска записей. 

Как и фильтр, сортировка  характеризуется названием формы (для каждой формы своя сортировка $_SESSION['form_sort']['{name}']). Данные сортировки хранятся в сессии ($_SESSION['form_sort']['{name}']=array(key=>value), где key - название поля в таблице БД по которому необходимо сортировать,  value - принимает значение up или down, тем самым указывая порядок сортировки.), что дает возможность сохранять работоспособность сортировки, даже при перезагрузке страницы. 


Читать далее

Form - фильтр

Комментарии ()

Як показала практика, скрипт-модуля повинен сам строїти потрібний sql-запрос, на основі отриманих даних від фільтра. Оскільки варіант із like'ами не підходить

При выводе информации, кроме постраничной навигации очень часто возникает необходимость отфильтровать даные по определенным признакам.

Фильтр характеризуется названием формы (для каждой формы свой фильтр $_SESSION['form_filter'][$name]). Заданые критерии хранятся в сессии ($_SESSION['form_filter'][$name]=array(key=>value), где key - название поля в таблице БД, а value соотвественно его значение.), что дает возможность сохранять работоспособность фильтра, даже при перезагрузке страницы. Елементы ввода фильтра работают в режима автодополнения.


Читать далее

JQuery UI Autocomplete Ajax

Комментарии ()

html

<link rel="stylesheet" type="text/css" href="{www}css/ui-lightness/jquery-ui-1.10.3.custom.min.css" />
<script src="{www}js/jquery-1.9.1.js"></script>
<script type="text/javascript" src="{www}js/jquery-ui-1.10.3.custom.js" charset="utf-8" ></script>

<script>
$(document).ready(function(){
 
    $("#login").autocomplete({
	source: function(request, response) {
                  var id = this.element.attr('id');                
                  $.ajax({
                  url: "{www}",
                  data: { q: $("#login").val(),
		  mod: 'admin',
		  act: 'users_balans',
		  op: 'login_autocomplete'},
                  dataType: "json",
                  type: "POST",
                  success: function(data){
                      response(data);
                  }
                });
              },
      minLength: 1
    });
});
</script>

php

<?php

/* @var $sql Sql */
/* @var $error Error */
/* @var $user User */
/* @var $domain Domain */

#Заборона прямого дуступу
defined('ACCESS') or die('Restricted access');

$user->isPermitAuth();
$user->isPermitUserStatus('admin');

$return_arr=array();

$q = $_POST["q"];
if (!$q) return;

$query="select `login` from `users` where visible=1 order by `login`";
$res=$db->query($query);
$cnt=$res->numrows();
while ($row=$res->fetchrow())
{
	
        $login=$row['login'];
	$login2 = mb_convert_case($login, MB_CASE_LOWER, "UTF-8");
	$a=(strpos($login2,$q));
	if (($a===0)) {
		$return_arr[]=$login2;		
	}
}
echo json_encode($return_arr);
exit;


?>

 


Читать далее

DirectAdmin (разное)

Комментарии ()

Для того, чтобы пересчитать дисковую квоту для одного конкретного пользователя или сразу всех без ротации логов и обсчета другой статистики, нужно через SSH от имени пользователя root выполнить команду:

echo "action=quotatally&value=bob&type=user" >> /usr/local/directadmin/data/task.queue

Чтобы запустить пересчет для всех пользователей на сервере выполняем команду:

echo "action=quotatally&value=all" >> /usr/local/directadmin/data/task.queue

 


Читать далее

PHP 5.3 и ZendGuard на FreeBSD 8.3 amd64

Комментарии ()

Устанавливаем linux-эмулятор. Скачиваем ZendGuardLoader.so. В php.ini пишем, у меня так: 

[Zend]
zend_extension=/usr/local/lib/ZendGuardLoader.so

Проверяем

# php -i | grep Zend
Failed loading /usr/local/lib/ZendGuardLoader.so:  Shared object "libdl.so.2" not found, required by "ZendGuardLoader.so"
Zend Extension => 220090626
Zend Extension Build => API220090626,NTS
Zend Memory Manager => enabled
Zend Multibyte Support => disabled
This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright (c) 1998-2013 Zend Technologies

Дальше никак.......


Читать далее

Linux-емулятор на FreeBSD

Комментарии ()

Загружаем модуль

kldload linux

Устанавливаем эмулятор Linux'а

cd /usr/ports/emulators/linux_base-f10
make install clean

Добавляем в /boot/loader.conf

linux_load="yes"
linprocfs_load="yes"

Добавляем в /etc/rc.conf

linux_enable="YES"

Добавляем в /etc/fstab

linprocfs /compat/linux/proc linprocfs rw 0 0

Перегружаем систему


Читать далее

Webit.in.ua 2013