Перекодировка в utf-8

This commit is contained in:
Фёдор Подлеснов 2016-07-14 16:29:26 +03:00
parent 43f501a5e2
commit df2e65a670
80 changed files with 668 additions and 668 deletions

View file

@ -299,7 +299,7 @@ class PHPTAL_RepeatController implements Iterator
* Keeps track of variable contents when using grouping in a path (first/ and last/)
*
* @package phptal
* @author Iván Montes <drslump@pollinimini.net>
* @author Ivбn Montes <drslump@pollinimini.net>
*/
class PHPTAL_RepeatController_Groups {

View file

@ -1,7 +1,7 @@
<?php
/**
* Интерфейс к массиву и обьекту как к коллекции
* Интерфейс к массиву и обьекту как к коллекции
*/
class Adapter
{

View file

@ -1,6 +1,6 @@
<?php
/**
* Коллекция
* Коллекция
*
* package core
*/
@ -14,7 +14,7 @@ class Collection implements ArrayAccess
protected $data = array();
/**
* Преобразование массива в коллекцию
* Преобразование массива в коллекцию
*
* @param array $data
*/
@ -25,7 +25,7 @@ class Collection implements ArrayAccess
}
/**
* Преобразование коллекции в массив
* Преобразование коллекции в массив
*/
public function export()
{

View file

@ -6,17 +6,17 @@ class HttpConnection
const POST = "POST";
const GET = "GET";
private $param = array(); // Параметры запроса
public $data = null; // Содержание
public $url; // Адресс
public $method = self::GET; // Метод
private $param = array(); // Параметры запроса
public $data = null; // Содержание
public $url; // Адресс
public $method = self::GET; // Метод
public $port = 80;
public $host = "";
public $proxy_host = false;
public $proxy_port = false;
/**
* Возвращает заголовок соединения
* Возвращает заголовок соединения
*/
public function getHeader()
{
@ -31,7 +31,7 @@ class HttpConnection
}
/**
* Установка параметров запроса
* Установка параметров запроса
* @parma string $name
* @parma string $value
*/
@ -41,7 +41,7 @@ class HttpConnection
}
/**
* Метод запроса GET или POST
* Метод запроса GET или POST
*/
public function setMethod($method)
{
@ -60,7 +60,7 @@ class HttpConnection
}
/**
* Содержание запроса
* Содержание запроса
*/
public function setContent($data)
{
@ -69,7 +69,7 @@ class HttpConnection
}
/**
* Посылает запрос и возвращает страницу
* Посылает запрос и возвращает страницу
*/
public function getPage()
{

View file

@ -1,7 +1,7 @@
<?php
/**
* Обрабатывает HTTP ответ
* Обрабатывает HTTP ответ
*/
class HttpConnectionResponse
{
@ -17,7 +17,7 @@ class HttpConnectionResponse
}
/**
* Обработка HTTP ответа
* Обработка HTTP ответа
*/
private function parseMessage()
{
@ -48,7 +48,7 @@ class HttpConnectionResponse
}
/**
* Обработка строки HTTP ответа
* Обработка строки HTTP ответа
*/
private function getLine()
{
@ -60,7 +60,7 @@ class HttpConnectionResponse
}
/**
* Значение параметра HTTP ответа
* Значение параметра HTTP ответа
*/
public function getParameter($name)
{
@ -73,7 +73,7 @@ class HttpConnectionResponse
}
/**
* Состояние
* Состояние
*/
public function getCode()
{

View file

@ -14,9 +14,9 @@ require_once 'core/widgets/setup.php';
require_once 'core/widgets/listtable.php';
/**
* Переименовать контроллер !! (StubController, CrudController, PageController, BaseController) ModelController
* Возможно нужен еще класс с мета действиями как для actionIndex <= metaActionIndex либо с классам для этих действий
* Есть класс для управлениями действиями а есть сами действия в виде классов или функций !!
* Переименовать контроллер !! (StubController, CrudController, PageController, BaseController) ModelController
* Возможно нужен еще класс с мета действиями как для actionIndex <= metaActionIndex либо с классам для этих действий
* Есть класс для управлениями действиями а есть сами действия в виде классов или функций !!
*/
class Controller_Model extends Controller_Action
{
@ -24,7 +24,7 @@ class Controller_Model extends Controller_Action
public $schemaSearch = array();
/**
* FIXME: Лучше $this->table->setHeader
* FIXME: Лучше $this->table->setHeader
*/
public $tableSchema = null;
public $formSchema = array();
@ -44,8 +44,8 @@ class Controller_Model extends Controller_Action
*/
function setUp()
{
$this->table->addMenuItem($this->aUrl('delete'), 'удалить', false, 'all', 'warning');
//$this->table->addMenuItem($this->nUrl('form'), 'редактировать', 'edit-24.png');
$this->table->addMenuItem($this->aUrl('delete'), 'удалить', false, 'all', 'warning');
//$this->table->addMenuItem($this->nUrl('form'), 'редактировать', 'edit-24.png');
}
function saveParameters($args, $list)
@ -66,12 +66,12 @@ class Controller_Model extends Controller_Action
}
/**
* Удаление сторк из таблицы
* Удаление сторк из таблицы
*/
public function actionDelete(HttpRequest $request)
{
$model = $this->getModel($this->useModel);
// Почему table_item ???
// Почему table_item ???
$list = ($request->get('table_item')) ? $request->get('table_item'): $request->get('id');
$model->deleteList($list);
@ -79,7 +79,7 @@ class Controller_Model extends Controller_Action
}
/**
* Ответ на запрос по поиску
* Ответ на запрос по поиску
*/
public function actionSearch(HttpRequest $request)
{
@ -90,7 +90,7 @@ class Controller_Model extends Controller_Action
}
/**
* Список элементов
* Список элементов
*/
public function actionList(HttpRequest $request)
{
@ -110,47 +110,47 @@ class Controller_Model extends Controller_Action
}
/**
* Сохранение формы
* Сохранение формы
*/
function beforeSave(/*Model*/ $item, Collection $request)
{
if (empty($this->formSchema)) {
$this->setFormSchema();
}
// Сделать отображение Формы в обьект и обратно <-- Убрать в beforeSave
// Сделать отображение Формы в обьект и обратно <-- Убрать в beforeSave
foreach ($this->formSchema as $key => $conv) {
list($value, $type) = $conv;
$item->$value = call_user_func(array('Cast', 'to_' . $type), $request->get($key)); // Здесть нужно преобразовывать тип значения
$item->$value = call_user_func(array('Cast', 'to_' . $type), $request->get($key)); // Здесть нужно преобразовывать тип значения
}
}
/**
* Обновление формы
* Обновление формы
*/
function formUpdate(TForm $form, Collection $request)
{
}
/**
* Загрузка формы
* Загрузка формы
*/
function beforeLoad(/*Model*/ $item, TForm $form)
{
if (empty($this->formSchema)) {
$this->setFormSchema();
}
// Вставка значений из данных в форму
// Отображение обьекта в поля формы
// Вставка значений из данных в форму
// Отображение обьекта в поля формы
$form->fill($item, $this->formSchema);
}
// Проверка ввода
// Проверка ввода
protected function validate($validator, $request)
{
}
/**
* Действие для проверки формы
* Действие для проверки формы
*/
public function actionValidate($request)
{
@ -158,10 +158,10 @@ class Controller_Model extends Controller_Action
$validator = new Validator();
$validator->addRuleList($this->schema);
// Действия до проверки формы
// Действия до проверки формы
$this->validate($validator, $request); // <--|
$validator->validate($request); // --|
// Проверка формы
// Проверка формы
if (!$validator->isValid()) {
return json::encode($validator->getErrorMsg());
}
@ -169,7 +169,7 @@ class Controller_Model extends Controller_Action
}
/**
* Инициализация формы
* Инициализация формы
*/
protected function formSetup($form, $id = null, $ref = null)
{
@ -185,65 +185,65 @@ class Controller_Model extends Controller_Action
}
/**
* Добавление пользователя
* Добавление пользователя
*/
public function actionAdd(HttpRequest $request)
{
require_once "core/validator/validator.php";
// {{{ тоже может быть один ref или несколько
// {{{ тоже может быть один ref или несколько
$ref = $request->get('ref');
$this->addParameter('ref', $ref); // Добавляет параметр в url
$this->addParameter('ref', $ref); // Добавляет параметр в url
/// }}}
if ($this->checkPageId($request, $request->get('page'))) {
// Проверка
// Проверка
$validator = new Validator();
$validator->addRuleList($this->schema);
// Действия до проверки формы
// Действия до проверки формы
$this->validate($validator, $request); // <--|
$validator->validate($request); // --|
// Проверка формы
// Проверка формы
if (!$validator->isValid()) {
$request->setAction('form');
$this->getActionPath($request);
$form = new TForm();
$this->formSetup($form, $request->get('id'), $request->get('ref')); // Инициализация формы
$this->formSetup($form, $request->get('id'), $request->get('ref')); // Инициализация формы
$form->setValues($request); // <-- Убрать в formUpdate
$form->setValues($request); // <-- Убрать в formUpdate
$this->formUpdate($form, $request);
$form->setError($validator); // Установка ошибок для формы
$form->setError($validator); // Установка ошибок для формы
$tpl = $this->formPage($form, $request);
$id = $request->get('id');
if ($id) { // Редактирование
$tpl->action = forceUrl($this->nUrl('add', array('id' => $id, 'page' => $this->getPageId($request)))); // action Совйство формы
if ($id) { // Редактирование
$tpl->action = forceUrl($this->nUrl('add', array('id' => $id, 'page' => $this->getPageId($request)))); // action Совйство формы
}
return $tpl /*->execute()*/;
}
// Нужен тест для формы
// Нужен тест для формы
$model = $this->getModel($this->useModel);
$className = $model->className;
$item = new $className();
// Сохраняем значение в базе данных
// Сохраняем значение в базе данных
$item->id = $request->get('id');
// Если таблица связана с другой таблицей
// Если таблица связана с другой таблицей
if ($request->get('ref') && $model->reference[1]) {
$ref_id = $model->reference[1];
$item->$ref_id = $request->get('ref');
}
// Подготовка к сохранению
$this->beforeSave($item, $request); // Сюдаже и истрия переходов
// nextId ??? или выход или новая форма для создания новости
// Подготовка к сохранению
$this->beforeSave($item, $request); // Сюдаже и истрия переходов
// nextId ??? или выход или новая форма для создания новости
$model->saveDB($item, $request);
}
// Для страницы со списком id -> идентефикатор родительской таблицы !!??
// Для страницы со списком id -> идентефикатор родительской таблицы !!??
// $request->set('id', $request->get('ref'));
if ($request->get('apply')) {
$request->setAction('form');
@ -253,7 +253,7 @@ class Controller_Model extends Controller_Action
}
/**
* Заголовок
* Заголовок
*/
private function setTitlePath($ref)
{
@ -263,37 +263,37 @@ class Controller_Model extends Controller_Action
$refmodel = $this->getModel($model->reference[0]);
try {
$parent = $refmodel->findById($ref);
$this->path->addTitle($parent->getTitle()); // Заголовок к подписям путей
$this->path->addTitle($parent->getTitle()); // Заголовок к подписям путей
} catch (Exception $e) {
// Не найден заголовок потому что неправильно определен родительский элемент
// Не найден заголовок потому что неправильно определен родительский элемент
}
}
}
}
/**
* Форма для редактирования
* Форма для редактирования
*/
public function actionForm(HttpRequest $request)
{
$this->getActionPath($request);
$ref = $request->get('ref');
$this->addParameter('ref', $ref); // Добавляет параметр в url
$this->addParameter('ref', $ref); // Добавляет параметр в url
$this->setTitlePath($ref);
$model = $this->getModel($this->useModel);
$form = new TForm(); // Показываем форму
$form->header = 'Редактирование записи';
$this->formSetup($form, $request->get('id'), $request->get('ref')); // Инициализация формы
$form = new TForm(); // Показываем форму
$form->header = 'Редактирование записи';
$this->formSetup($form, $request->get('id'), $request->get('ref')); // Инициализация формы
$list = $request->get('table_item');
$id = ($list[0]) ? $list[0] : $request->get('id');
$tpl = $this->formPage ($form, $request);
if ($id) { // Редактирование
$form->action = forceUrl($this->nUrl('add', array('id' => $id, 'page' => $this->getPageId($request)))); // action Свойство формы
if ($id) { // Редактирование
$form->action = forceUrl($this->nUrl('add', array('id' => $id, 'page' => $this->getPageId($request)))); // action Свойство формы
$item = $model->findById($id);
// Загрузка формы
// Загрузка формы
$this->beforeLoad($item, $form);
///
}
@ -304,11 +304,11 @@ class Controller_Model extends Controller_Action
*/
function tableSetup($table, $id = null, $ref = null)
{
// FIXME: После замены везде $tableSchema -> table->setHeader удалить!
// FIXME: После замены везде $tableSchema -> table->setHeader удалить!
if ($this->tableSchema) {
$table->setHeader($this->tableSchema);
} else {
// Настройка таблицы отображения по схеме данных
// Настройка таблицы отображения по схеме данных
require_once 'core/mapper/uimapper.php';
$model = $this->getModel($this->useModel);
$ui = new UIMapper($model);
@ -324,17 +324,17 @@ class Controller_Model extends Controller_Action
public function actionIndex(HttpRequest $request)
{
$this->getActionPath($request, 'index');
// Такое мета действие наверное можно вынести в отдельный класс
// Такое мета действие наверное можно вынести в отдельный класс
return $this->metaActionIndex($request, array($this, 'tableSetup'), $this->aUrl('list'));
}
/**
* Страница по умолчанию
* Страница по умолчанию
*/
public function metaActionIndex(HttpRequest $request, $setup, $list)
{
// может быть одно ref или несколько
// {{{ история переходов
// может быть одно ref или несколько
// {{{ история переходов
$ref = null;
if ($request->get('ref')) {
$ref = $request->get('ref');
@ -349,9 +349,9 @@ class Controller_Model extends Controller_Action
$tpl = $this->getView('list');
// Помошники действий
// Помошники действий
$this->callHelpers($request);
// Таблица
// Таблица
if ($request->session()->get(strtolower(get_class($this)))) {
$session = $request->session()->get(strtolower(get_class($this)));
if (isset($session['view'])) {
@ -368,28 +368,28 @@ class Controller_Model extends Controller_Action
}
}
call_user_func($setup, $this->table, $request->get('id'), $ref);// --> Эквивалент formSetup
call_user_func($setup, $this->table, $request->get('id'), $ref);// --> Эквивалент formSetup
$this->table->setAction($list);
//
$tpl->menu_path = $this->path->getItems();
// Поиск
// Поиск
$search = new SearchDialog();
$search->setTitle('Поиск');
$search->setTitle('Поиск');
$search->setAction($this->aUrl('search'));
$search->setFriend($this->table);
$search->addFields($this->schemaSearch);
// Настройки
// Настройки
$setup = new SetupDialog();
$setup->setTitle('Настройки');
$setup->setTitle('Настройки');
$setup->setAction($this->nUrl('setup'));
$setup->setFriend($this->table);
// Меню
$this->menu->addMenuItem('?menu=toggle&id=' . $search->getName(), 'поиск', 'actions/system-search'); // Стандартный размер для иконок 22-24px
$this->menu->addMenuItem('?menu=toggle&id=' . $setup->getName(), 'настройки', 'categories/applications-system');
// Добавление компонентов
// Меню
$this->menu->addMenuItem('?menu=toggle&id=' . $search->getName(), 'поиск', 'actions/system-search'); // Стандартный размер для иконок 22-24px
$this->menu->addMenuItem('?menu=toggle&id=' . $setup->getName(), 'настройки', 'categories/applications-system');
// Добавление компонентов
$this->addChild('menu', $this->menu);
$this->addChild('search', $search);
$this->addChild('setup', $setup);
@ -417,14 +417,14 @@ class Controller_Model extends Controller_Action
{
$view = $this->getView('form');
$view->setView('form', $form);
$view->action = forceUrl($this->nUrl('add', array('page' => $this->getPageId($request)))); // Действие для формы
$view->action = forceUrl($this->nUrl('add', array('page' => $this->getPageId($request)))); // Действие для формы
$view->menu_path = $this->path->getItems();
$view->back = $this->path->getPrev();
return $view;
}
// Тоже убрать в метод Controller_Model
// Тоже убрать в метод Controller_Model
function getActionPath(HttpRequest $request/*, $action = false*/)
{
require_once 'state.php';

View file

@ -7,12 +7,12 @@ class FileNotFountException extends Exception
}
/**
* Класс компонента
* Класс компонента
*/
class Component
{
static $_uid = 1;
public $uid; // UID компонента создается при создании страницы, вставки компонента, или это статическое свойство
public $uid; // UID компонента создается при создании страницы, вставки компонента, или это статическое свойство
public $viewPath;
public $registry; // Registry->getInstance
public $template;
@ -33,7 +33,7 @@ class Component
require_once "core/view/compositeview.php";
//
$template = ($this->template) ? $this->template : $this->_registry->readKey(array('system', 'template'));
// Загружать шаблон по умолчанию если не найден текущий
// Загружать шаблон по умолчанию если не найден текущий
if (is_dir(Path::join($this->viewPath, 'templates', $template))) {
$template_file = Path::join($this->viewPath, 'templates', $template, $name);
} else {
@ -59,7 +59,7 @@ class Component
}
/**
* @param $name Имя модели
* @param $name Имя модели
*/
private function getModelPath($name)
{
@ -67,7 +67,7 @@ class Component
}
/**
* Создает модель
* Создает модель
* @param string $name
* @return model
*/
@ -98,8 +98,8 @@ class Component
return $result;
}
/* В дальнейшем нужно зменить на методы
+ Методы могут быть и javascript
/* В дальнейшем нужно зменить на методы
+ Методы могут быть и javascript
*/
protected $editUrl;
@ -115,7 +115,7 @@ class Component
}
/**
* TALES для подключения компонентов
* TALES для подключения компонентов
* component:name?param1=value1&param2=value2
*/
class Component_Tales implements PHPTAL_Tales
@ -143,13 +143,13 @@ function loadComponent($name, $db, $registry)
}
/**
* Функция подключения компонента
* Функция подключения компонента
*/
global $componentList;
$componentList = array();
function phptal_component ($real_expression, $offset = 0) {
global $db, $registry, $componentList; // Нужно както передавать параметры
global $db, $registry, $componentList; // Нужно както передавать параметры
$expression = htmlspecialchars_decode($real_expression);
$url = parse_url($expression);
@ -165,9 +165,9 @@ function phptal_component ($real_expression, $offset = 0) {
$componentList [] = array(
'uid' => $component->getUID(), 'params' => $expression, 'name' => $name, 'offset' => $offset,
'size' => strlen($real_expression),
/* Вместо ссылки на редактирование нужно передавать список методов для работы с компонентом
edit (редактирование содержание), new (новое содержание), шаблон коменнента ... вместе с иконками этих методов
! Компоненты могут содержать другие компоненты
/* Вместо ссылки на редактирование нужно передавать список методов для работы с компонентом
edit (редактирование содержание), new (новое содержание), шаблон коменнента ... вместе с иконками этих методов
! Компоненты могут содержать другие компоненты
*/
'editurl' => $component->getEditUrl(),
'newurl' => ''
@ -179,7 +179,7 @@ function phptal_component ($real_expression, $offset = 0) {
return $component->execute($params, $req);
}
/* Регистрация нового префикса для подключения компонента */
/* Регистрация нового префикса для подключения компонента */
$registry = PHPTAL_TalesRegistry::getInstance();
$registry->registerPrefix('component', array('Component_Tales', 'component'));

View file

@ -14,32 +14,32 @@ function forceUrl($name)
}
/**
* Контроллер страниц
* Контроллер страниц
* @package core
*/
class Controller
{
const TEMPLATE_EXTENSION = ".html"; // Расширение для шаблонов
const ACTION_PREFIX = "action"; // Префикс для функций действий
const TEMPLATE_EXTENSION = ".html"; // Расширение для шаблонов
const ACTION_PREFIX = "action"; // Префикс для функций действий
public $jsPath; // Глобальный путь к скриптам
public $themePath; // Глобальный путь к текущей теме
public $jsPath; // Глобальный путь к скриптам
public $themePath; // Глобальный путь к текущей теме
// Параметры устанавливаются при создании контроллера
public $name; // Имя модуля
public $viewPath = null; // Путь к шаблонам контроллера
public $db; // Соединение с базой данных
// Параметры устанавливаются при создании контроллера
public $name; // Имя модуля
public $viewPath = null; // Путь к шаблонам контроллера
public $db; // Соединение с базой данных
// Фильтры
public $access; // Обьект хранит параметры доступа
public $logger; // Обьект для ведения лога
// Фильтры
public $access; // Обьект хранит параметры доступа
public $logger; // Обьект для ведения лога
private $factory; // Ссылка на обьект создания модели
private $helpers = array(); // Помошники для действий
public $param = array(); // Параметры для ссылки
private $factory; // Ссылка на обьект создания модели
private $helpers = array(); // Помошники для действий
public $param = array(); // Параметры для ссылки
public $_registry; // Ссылка на реестр
public $_registry; // Ссылка на реестр
public $_shortcut;
public function __construct ()
@ -83,7 +83,7 @@ class Controller
}
/**
* Создает представление
* Создает представление
* @param string $file
* @return template
*/
@ -92,7 +92,7 @@ class Controller
require_once "core/view/compositeview.php";
$file = $name . self::TEMPLATE_EXTENSION;
// Список возможных директорий для поиска файла шаблона
// Список возможных директорий для поиска файла шаблона
$theme = $this->_registry->readKey(array('system', 'theme'));
$icon_theme = $this->_registry->readKey(array('system', 'icon_theme'));
$list = array(
@ -100,17 +100,17 @@ class Controller
PHPTAL_TEMPLATE_REPOSITORY => "");
// Поиск файла для шаблона
// Поиск файла для шаблона
foreach($list as $ospath => $path) {
$template = Path::join($ospath, $file);
if(file_exists($template)) { break; }
}
$tpl = new View_Composite($template);
$tpl->icons = $this->iconPath; // Путь к файлам текущей темы
$tpl->media = $this->themePath; // Путь к файлам текущей темы
$tpl->script = $this->jsPath; // Путь к файлам скриптов
$tpl->template = $path; // Путь к файлам текущего шаблона
$tpl->icons = $this->iconPath; // Путь к файлам текущей темы
$tpl->media = $this->themePath; // Путь к файлам текущей темы
$tpl->script = $this->jsPath; // Путь к файлам скриптов
$tpl->template = $path; // Путь к файлам текущего шаблона
$tpl->setAlias(array(
'${icons}' => $this->iconPath,
'${media}' => $this->themePath,
@ -132,11 +132,11 @@ class Controller
}
/**
* Выбор действия
* Т.к действия являются методами класса то
* 1. Можно переопределить действия
* 2. Использовать наследование чтобы добавить к старому обработчику новое поведение
* @param $request Обьект запроса
* Выбор действия
* Т.к действия являются методами класса то
* 1. Можно переопределить действия
* 2. Использовать наследование чтобы добавить к старому обработчику новое поведение
* @param $request Обьект запроса
*/
public function execute1(HTTPRequest $request)
{
@ -159,7 +159,7 @@ class Controller
public function forward($action, HTTPRequest $args)
{
// Действия до вызова основного обработчика
// Действия до вызова основного обработчика
/*foreach($this->_aspect as $aspect) {
if (isset($aspect->before[$action])) {
call_user_func ($aspect->before[$action], $action, $args);
@ -169,7 +169,7 @@ class Controller
}
/**
* Страница по умолчанию
* Страница по умолчанию
*/
public function actionIndex(HttpRequest $request)
{
@ -184,10 +184,10 @@ class Controller
}
/**
* Генерация ссылки c учетом прав пользователя на ссылки
* Генерация ссылки c учетом прав пользователя на ссылки
*
* @parma string $name Действие
* @parma string $param Дополнительные параметры
* @parma string $name Действие
* @parma string $param Дополнительные параметры
*/
public function nUrl($name, array $param = array())
{
@ -203,7 +203,7 @@ class Controller
}
/**
* Добавляет параметр для всех ссылок создаваемых функцией nUrl, aUrl
* Добавляет параметр для всех ссылок создаваемых функцией nUrl, aUrl
*/
public function addParameter($name, $value)
{
@ -213,8 +213,8 @@ class Controller
}
/**
* Генерация ссылки на действие контроллера
* Ajax определяется автоматически mode = ajax используется для смены layout
* Генерация ссылки на действие контроллера
* Ajax определяется автоматически mode = ajax используется для смены layout
*/
public function aUrl($name, array $param = array())
{
@ -222,7 +222,7 @@ class Controller
}
/**
* Добавление помошника контроллера
* Добавление помошника контроллера
*/
public function addHelper($class)
{
@ -230,7 +230,7 @@ class Controller
}
/**
* Вызов помошников контроллера
* Вызов помошников контроллера
*/
public function callHelpers(HttpRequest $request)
{
@ -239,13 +239,13 @@ class Controller
if (method_exists($helper, $action)) {
return call_user_func(array($helper, $action), $request, $this);
} else {
return $helper->actionIndex($request, $this); // Вместо return response ???
return $helper->actionIndex($request, $this); // Вместо return response ???
}
}
}
/**
* Загрузка файла класса
* Загрузка файла класса
*/
public function loadClass($path, $setup = null)
{
@ -264,7 +264,7 @@ class Controller
return $result->export();
}
// Для Widgets
// Для Widgets
public $view = null;
public $childNodes = array();
public $childViews = array();
@ -275,7 +275,7 @@ class Controller
}
/**
* Установка заголовка для отображения
* Установка заголовка для отображения
*/
public function setTitle($title)
{
@ -283,7 +283,7 @@ class Controller
}
/**
* Добавление widget к отображению
* Добавление widget к отображению
*/
public function addChild(/*Widget*/ $section, $node)
{
@ -291,7 +291,7 @@ class Controller
}
/**
* Добавление дочернего отображения к текущему отображению
* Добавление дочернего отображения к текущему отображению
*/
public function addView(/*CompositeView*/ $section, $node)
{
@ -299,8 +299,8 @@ class Controller
}
/**
* Генерация содержания
* Путаница c execute и render
* Генерация содержания
* Путаница c execute и render
*/
public function render()
{

View file

@ -4,15 +4,15 @@ require_once 'core/controller/controller.php';
require_once 'core/controller/installer.php';
/**
* Первичный контроллер контроллер страниц
* Первичный контроллер контроллер страниц
* @package core
*/
class Controller_Front extends Controller
{
protected $shortcut; // Ярлык к модулю
protected $_param; // Параметр по которому выбирается модуль
protected $default; // Значение параметра по умолчанию
protected $shortcut; // Ярлык к модулю
protected $_param; // Параметр по которому выбирается модуль
protected $default; // Значение параметра по умолчанию
protected $installer;
public function __construct(Settings $_registry, $_shortcut)
@ -29,9 +29,9 @@ class Controller_Front extends Controller
/**
* Создает экземпляр модуля и выполняет действия для него
* @param string $name Имя модуля
* @param request $request Имя модуля
* Создает экземпляр модуля и выполняет действия для него
* @param string $name Имя модуля
* @param request $request Имя модуля
* @return string
*/
public function loadModule($name, Collection $request)
@ -43,7 +43,7 @@ class Controller_Front extends Controller
$module = $this->loadClass($moduleFile);
if ($module) {
// Инициализация модуля
// Инициализация модуля
// $module->viewPath = dirname($moduleFile);
$module->viewPath = Shortcut::getUrl('modulepath', $name);
$module->name = $name;
@ -57,11 +57,11 @@ class Controller_Front extends Controller
$module->themePath = $this->themePath; // -> Registry
$module->jsPath = $this->jsPath; // -> Registry
$module->db = $this->db;
// Не для всех приложений нужно вести лог действий
// Ведение лога
// Не для всех приложений нужно вести лог действий
// Ведение лога
$logger = $this->loadClass(FRAMEWORK_PATH . '/core/filter/actionlogger.php', $module);
$logger->before = $this->loadSettings(Shortcut::getUrl('logger', $name));
// Управление доступом
// Управление доступом
$module->access = $this->loadClass(FRAMEWORK_PATH . '/core/filter/actionaccess.php', $logger);
$module->access->access = $this->loadSettings(Shortcut::getUrl('access', $name));
@ -75,7 +75,7 @@ class Controller_Front extends Controller
public function setParameter($shortcut, $param, $name)
{
$this->shortcut = $shortcut;
// Параметр
// Параметр
$this->_param = $param;
$this->default = $name;
}

View file

@ -24,8 +24,8 @@ class Installer
return Path::join(call_user_func($this->installPath, $name), "setup.php");
}
// Проверка версии обновления
function isChanged($name) // Информация о модулях
// Проверка версии обновления
function isChanged($name) // Информация о модулях
{
$item = $this->_registry->readKey(array($name));
if ($item) {
@ -50,8 +50,8 @@ class Installer
}
}
// Устанавливает обновления если есть
function doUpdates($name, $force = false) // Установка модуля
// Устанавливает обновления если есть
function doUpdates($name, $force = false) // Установка модуля
{
$setup = $this->getSetupFile($name);
if (file_exists($setup) && ($this->isChanged($name) || $force)) {
@ -77,7 +77,7 @@ class Installer
}
}
// Обновление версии меню
// Обновление версии меню
$registry->writeKey(array($name), $settings->get('settings'));
$registry->writeKey(array($name),
array('version' => $version_new,

View file

@ -1,7 +1,7 @@
<?php
/**
* Простой класс(Factory) для работы с базами данных
* Простой класс(Factory) для работы с базами данных
*/
class Database
{

View file

@ -3,7 +3,7 @@
require_once 'core/drivers/db.php';
/**
* Простой класс для работы с базами данных
* Простой класс для работы с базами данных
*/
class Database_MYSQL extends DB implements IDatabase
{

View file

@ -3,7 +3,7 @@
require_once 'core/drivers/db.php';
/**
* Простой класс для работы с базами данных
* Простой класс для работы с базами данных
*/
class Database_ODBC extends DB implements IDatabase
{

View file

@ -3,7 +3,7 @@
require_once 'core/drivers/db.php';
/**
* Простой класс для работы с базами данных
* Простой класс для работы с базами данных
*/
class Database_PGSQL extends DB implements IDatabase
{

View file

@ -1,7 +1,7 @@
<?php
/**
* <EFBFBD>םעונפויס הנאיגונא ךכאססא באח האםם<EFBFBD>ץ
* Интерфейс драйвера класса баз данных
*/
interface IDatabase
{

View file

@ -2,7 +2,7 @@
require_once 'core/sort.php';
//Становиться похоже на работу файлов через SPL возможно стоит реализовать на базе его
//Становиться похоже на работу файлов через SPL возможно стоит реализовать на базе его
class FileRecord
{
public $file;
@ -49,7 +49,7 @@ class FileRecord
function getSizeString()
{
$size = $this->getSize();
foreach (array('б ', 'Kб', 'Mб') as $suffix) {
foreach (array('б ', 'Kб', 'Mб') as $suffix) {
if (($size / 1024) <= 1) {
return round($size, 0) . ' ' . $suffix;
}

View file

@ -5,7 +5,7 @@ require_once 'core/file.php';
interface IFileSystem
{
// Операции над файлами
// Операции над файлами
public function makeDirectory($name);
public function deleteDirectory($name);
@ -18,7 +18,7 @@ interface IFileSystem
public function readFile($source);
public function writeFile($source, $content);
// Содержание директории
// Содержание директории
public function directoryFiles($name);
public function directoryFilesRecursive($name);
}
@ -27,12 +27,12 @@ interface IFileControl
{
public function commitFile($name, $who, $message);
public function readFileVersion($name, $version = false);
// Информация о файле
// Информация о файле
public function getFileLog($name);
public function getFileInfo($name);
}
// Реальная файловая система
// Реальная файловая система
class FileSystem implements IFileSystem
{
protected $hidden = array('.', '..');
@ -111,7 +111,7 @@ class FileSystem implements IFileSystem
}
}
// При перемещении или все файлы если есть совпадения переписываются
// При перемещении или все файлы если есть совпадения переписываются
/**
*
*/
@ -211,7 +211,7 @@ class FileSystem implements IFileSystem
}
}
// То что хранится в базе данных
// То что хранится в базе данных
class EFileSystem implements IFileSystem, IFileControl
{
@ -280,7 +280,7 @@ class EFileSystem implements IFileSystem, IFileControl
$index = $result->getInt('idfile');
return $index;
}
return false; // Может лучше кидать исключение ??
return false; // Может лучше кидать исключение ??
}
function getIdFromPath($name)
@ -288,7 +288,7 @@ class EFileSystem implements IFileSystem, IFileControl
return $this->getRecordId(basename($name), self::getPathName($name));
}
// Создание новой директории
// Создание новой директории
public function makeDirectory($name)
{
$path = new Path($name);
@ -311,10 +311,10 @@ class EFileSystem implements IFileSystem, IFileControl
return $this->fs->isDir($this->getFullPath($name));
}
// Переименование файла или директории все изменения должны записываться в базу чтобы можно было сделать отмену !!!
// Переименование файла или директории все изменения должны записываться в базу чтобы можно было сделать отмену !!!
public function renameFile($source, $destination)
{
// При перемещении файлы могут совпадать
// При перемещении файлы могут совпадать
$stmt = $this->db->prepareStatement('UPDATE files SET filepath = ?, filename = ? WHERE filepath = ? AND filename = ?');
$stmt->setString(1, self::getPathName($destination));
$stmt->setString(2, basename($destination));
@ -335,10 +335,10 @@ class EFileSystem implements IFileSystem, IFileControl
$this->fs->renameFile($this->getFullPath($source), $this->getFullPath($destination));
}
// Копирование файла или директории
// Копирование файла или директории
public function copyFile($source, $destination)
{
// При копировании файлы могут совпадать
// При копировании файлы могут совпадать
$stmt = $this->db->prepareStatement('INSERT INTO files (filepath, filename, lastrevdate) VALUES (?, ?, ?)');
$stmt->setString(1, self::getPathName($destination));
$stmt->setString(2, basename($destination));
@ -466,7 +466,7 @@ class EFileSystem implements IFileSystem, IFileControl
{
$result = $this->fs->directoryFiles($this->getFullPath($name));
/* Список файлов из базы данных */
/* Список файлов из базы данных */
$query = $this->db->prepareStatement("SELECT * FROM files WHERE filepath = ?");
$query->setString(1, $name);
$list = $query->executeQuery();
@ -530,7 +530,7 @@ class EFileSystem implements IFileSystem, IFileControl
}
/**
* Удаляем директорию если она не пустая
* Удаляем директорию если она не пустая
*/
function deleteDirectory($name)
{

View file

@ -1,7 +1,7 @@
<?php
/**
* Фильтр действий
* Фильтр действий
*/
class ActionAccess
{
@ -13,13 +13,13 @@ class ActionAccess
}
/**
* Проверка доступных действий для пользователя
* !! Реализация класса проверки действий не должна быть внутри Контроллера!!!
* Информация о доступе может быть в файле, базе данных и т.д.
* Проверка доступных действий для пользователя
* !! Реализация класса проверки действий не должна быть внутри Контроллера!!!
* Информация о доступе может быть в файле, базе данных и т.д.
*/
function checkAction($action)
{
// Импликация !! http://ru.wikipedia.org/wiki/Импликация
// Импликация !! http://ru.wikipedia.org/wiki/Импликация
return (!isset($this->access[$action]) || in_array(UserAccess::$access, $this->access[$action]));
}

View file

@ -3,7 +3,7 @@
require_once 'filterbase.php';
require_once 'filterlogin.php';
// Êëàññ äîëæåí áûòü â áèáëèîòåêå ïðèëîæåíèÿ
// Класс должен быть в библиотеке приложения
class UserAccess
{
const LIFE_TIME = 1800; // = 30min * 60sec;
@ -50,7 +50,7 @@ class UserAccess
if ($result) {
$time = time();
$id = self::$id;
self::$db->executeQuery("UPDATE users SET lasttime = $time WHERE id_user = $id"); // Âðåìÿ âõîäà
self::$db->executeQuery("UPDATE users SET lasttime = $time WHERE id_user = $id"); // Время входа
}
return $result;
}
@ -63,9 +63,9 @@ class UserAccess
if ($result) {
$lasttime = $result->getInt('lasttime');
$time = time();
if ($time - $lasttime > self::LIFE_TIME) return null; // Âûøëî âðåìÿ ñåññèè
if ($time - $lasttime > self::LIFE_TIME) return null; // Вышло время сессии
$id = self::$id;
$stmt = self::$db->executeQuery("UPDATE users SET lasttime = $time WHERE id_user = $id"); // Âðåìÿ ïîñëåäíåãî îáðàùåíèÿ âõîäà
$stmt = self::$db->executeQuery("UPDATE users SET lasttime = $time WHERE id_user = $id"); // Время последнего обращения входа
}
return $result;
}

View file

@ -1,7 +1,7 @@
<?php
/**
* Попытка реализовать фильтр для запросов
* Попытка реализовать фильтр для запросов
*/
class Filter
{

View file

@ -1,35 +1,35 @@
<?php
/**
* Фильтр для проверки авторизации
* Фильтр для проверки авторизации
*
* action: login(password, login)
* action: logout()
*/
// В класс авторизации передавать обьект для управления пользователем
// Вынести в отдельный файл
// В класс авторизации передавать обьект для управления пользователем
// Вынести в отдельный файл
class LoginFilter extends Filter
{
const SESSION_BROWSER_SIGN_SECRET = '@w3dsju45Msk#';
const SESSION_BROWSER_SIGN_KEYNAME = 'session.app.browser.sign';
public $mode = 'ajax';
/**
* Проверка авторизации
* @return Boolean Авторизовани пользователь или нет
* Проверка авторизации
* @return Boolean Авторизовани пользователь или нет
*/
public function isLoggin(Collection $request)
{
// Авторизация
// Авторизация
session_start();
$db = $this->getConnection();
UserAccess::setUp($db); // Соединение
UserAccess::setUp($db); // Соединение
switch ($request->getAction()) {
// Авторизация по постоянному паролю
// Авторизация по постоянному паролю
case 'login':
$login = $request->get('login');
$password = $request->get('password');
$result = UserAccess::getUserByLogin($login); // Поиск по логину
$result = UserAccess::getUserByLogin($login); // Поиск по логину
if ($result) {
if (md5($password) == $result->getString('password')) { // password
$this->enter($db, $result);
@ -38,14 +38,14 @@ class LoginFilter extends Filter
}
$request->set('error', true);
break;
case 'logout': // Выход
case 'logout': // Выход
session_destroy();
break;
// Вход по временному паролю
// Вход по временному паролю
case 'enter':
$login = $request->get('login');
$password = $request->get('sid');
$result = UserAccess::getUserByLogin($login); // Поиск по логину
$result = UserAccess::getUserByLogin($login); // Поиск по логину
if ($result) {
$temp = md5($result->getString('password') . $result->getString('login') . $result->getString('sid'));
if ($password == $temp) {
@ -56,10 +56,10 @@ class LoginFilter extends Filter
break;
default:
$hash = $this->getBrowserSign();
// Если $hash не совпадает $_SESSION['hash'] то удаляем сессию
// Если $hash не совпадает $_SESSION['hash'] то удаляем сессию
if (isset($_SESSION ['access']) && isset($_SESSION[self::SESSION_BROWSER_SIGN_SECRET])) {
if ($hash == $_SESSION[self::SESSION_BROWSER_SIGN_SECRET]) {
UserAccess::getUserById($_SESSION ['access']); // Поиск по идентификатору
UserAccess::getUserById($_SESSION ['access']); // Поиск по идентификатору
return true;
} else {
session_destroy();
@ -94,8 +94,8 @@ class LoginFilter extends Filter
public function execute(Collection $request)
{
if (!$this->isLoggin($request)) {
// Параметры при неправильной авторизации
// Действия по умолчанию !! Возможно переход на форму регистрации
// Параметры при неправильной авторизации
// Действия по умолчанию !! Возможно переход на форму регистрации
$request->set('module', 'login');
$request->set('mode', $this->mode);
}

View file

@ -7,7 +7,7 @@
require_once 'core/adapter.php';
/**
* Новое API для Форм
* Новое API для Форм
* $form = new Form ();
* $form->render () -> html,
* $form->adjust ($scheme);
@ -20,24 +20,24 @@ require_once 'core/adapter.php';
*/
/**
* Элемент формы
* Элемент формы
* @package core
*/
class TField {
protected $_value; // Форматированное значение поля
protected $_value; // Форматированное значение поля
var $label; // Метка поля
var $rule = array ();// Правила для проверки поля
var $value; // Форматированное Значение поля
// var $default; // Значение по умолчанию
var $error = false; // в XRule Правила для проверки значений
var $error_msg = "Поле не может быть пустым";
var $type; // Каждому типу элемента соответствует макрос TAL
var $label; // Метка поля
var $rule = array ();// Правила для проверки поля
var $value; // Форматированное Значение поля
// var $default; // Значение по умолчанию
var $error = false; // в XRule Правила для проверки значений
var $error_msg = "Поле не может быть пустым";
var $type; // Каждому типу элемента соответствует макрос TAL
public function __construct ($input) {
// $this->deafult = null;
$this->require = false;
// Инициализация свойст обьетка
// Инициализация свойст обьетка
foreach ($input as $key => $value) {
$this->$key = $value;
}
@ -56,7 +56,7 @@ class TField {
return true;
}
// Добавить методы getString, setString ??
// Добавить методы getString, setString ??
function setValue ($value) {
$this->_value = $value;
@ -69,7 +69,7 @@ class TField {
}
/**
* Поле ввода Input
* Поле ввода Input
* @package core
*/
class TInput extends TField {
@ -95,7 +95,7 @@ class TCheckbox extends TField {
}
/**
* Выбор из одного элемента
* Выбор из одного элемента
*/
class TSelect1 extends TField {
var $options = array ();
@ -134,11 +134,11 @@ class TSelectGroup extends TField {
}
/**
* Поле с датой
* Поле с датой
* @package core
*/
class TDate extends TField {
var $error_msg = "Неверный формат даты";
var $error_msg = "Неверный формат даты";
var $separator = ".";
public function __construct ($input) {
@ -167,7 +167,7 @@ class TDate extends TField {
}
class TTime extends TField {
var $error_msg = "Неверный формат времени";
var $error_msg = "Неверный формат времени";
public function __construct ($input) {
parent::__construct ($input);
@ -200,7 +200,7 @@ class TTime extends TField {
/* *
* Текстовое поле
* Текстовое поле
* @package core
*/
class TTextArea extends TField {
@ -211,7 +211,7 @@ class TTextArea extends TField {
}
/**
* Поле для ввода пароля
* Поле для ввода пароля
* @package core
*/
class TSecret extends TField {
@ -235,7 +235,7 @@ class TUpload extends TField {
}
/**
* Форма для ввода
* Форма для ввода
* @package core
*/
class TForm {
@ -271,12 +271,12 @@ class TForm {
}
/**
* Метод должен проверять значения полей формы полсле заполнения
* Проверка правильности заполнения формы и установка значений
* Метод должен проверять значения полей формы полсле заполнения
* Проверка правильности заполнения формы и установка значений
*/
function isValid () {
$haveErrors = false;
foreach ($this->field as $name => $el) { // ссылка
foreach ($this->field as $name => $el) { // ссылка
if ($this->field [$name] instanceof TUpload) {
// print_r ($_POST);
$filename = $this->request->getRawData ('files', $name);
@ -296,7 +296,7 @@ class TForm {
}
/**
* Добавляет одно поле ввода на форму
* Добавляет одно поле ввода на форму
*/
public function addField ($init) {
assert ($init['type']);
@ -310,7 +310,7 @@ class TForm {
}
/**
* Добавляет спсок полей для формы
* Добавляет спсок полей для формы
* @param array $list
*/
public function addFieldList ($list) {
@ -320,10 +320,10 @@ class TForm {
}
/**
* Заполняет форму данными из коллекции
* Для обьектов и массивов можно использовать Adapter pattern
* Заполняет форму данными из коллекции
* Для обьектов и массивов можно использовать Adapter pattern
* @param object $data
* @param array $schema Связь между элементами формы и свойствами обьекта
* @param array $schema Связь между элементами формы и свойствами обьекта
*/
public function fill ($data) {
foreach ($this->field as $name => $el) {

View file

@ -1,15 +1,15 @@
<?php
/**
* Элемент формы
* Элемент формы
* @package core
*/
class TField
{
public $name;
public $label; // Метка поля
public $value; // Значение поля
public $type; // Каждому типу элемента соответствует макрос TAL
public $label; // Метка поля
public $value; // Значение поля
public $type; // Каждому типу элемента соответствует макрос TAL
public $error_msg = null;
public $error = false;
public $require = false;
@ -20,7 +20,7 @@ class TField
if (isset($input['validate'])) {
$this->require = strpos($input['validate'], 'require') !== false;
}
// Инициализация свойст обьетка
// Инициализация свойст обьетка
foreach (array('label', 'name', 'type') as $name) {
$this->$name = $input[$name];
}
@ -33,14 +33,14 @@ class TField
}
/**
* Поле ввода Input
* Поле ввода Input
* @package core
*/
class TInput extends TField {
}
/**
* Выбор из одного элемента
* Выбор из одного элемента
*/
class TSelect1 extends TField
{
@ -52,13 +52,13 @@ class TSelect1 extends TField
function setValue($value)
{
// Установить selected у options
// Установить selected у options
$this->value = $value;
}
}
/**
* Поле с датой
* Поле с датой
* @package core
*/
class TDate extends TField
@ -66,7 +66,7 @@ class TDate extends TField
}
/* *
* Текстовое поле
* Текстовое поле
* @package core
*/
class TTextArea extends TField
@ -74,7 +74,7 @@ class TTextArea extends TField
}
/**
* Поле для ввода пароля
* Поле для ввода пароля
* @package core
*/
class TSecret extends TField
@ -86,7 +86,7 @@ class TUpload extends TField
}
/**
* Форма для ввода
* Форма для ввода
* @package core
*/
class TForm
@ -111,7 +111,7 @@ class TForm
}
/**
* Добавляет одно поле ввода на форму
* Добавляет одно поле ввода на форму
*/
public function addField (array $init)
{
@ -127,7 +127,7 @@ class TForm
}
/**
* Добавляет спсок полей для формы
* Добавляет спсок полей для формы
* @param array $list
*/
public function addFieldList (array $list)
@ -138,7 +138,7 @@ class TForm
}
/**
* Устанавливает ошибки после проверки
* Устанавливает ошибки после проверки
*/
function setError (Validator $validator)
{
@ -150,7 +150,7 @@ class TForm
}
/**
* Устанавливает значения из масива
* Устанавливает значения из масива
*/
function setValues (Collection $request) {
foreach ($this->field as $key => $el) {
@ -160,9 +160,9 @@ class TForm
}
/**
* Заполняет форму данными из обьекта
* Заполняет форму данными из обьекта
* @param object $data
* @param array $schema Связь между элементами формы и свойствами обьекта
* @param array $schema Связь между элементами формы и свойствами обьекта
*/
public function fill ($data, array $schema)
{

View file

@ -2,7 +2,7 @@
/**
* http://www.alternateinterior.com/2006/09/a-viewstate-for-php.html
* Управление состоянием между страницами
* Управление состоянием между страницами
*/
class ViewState // extends Collection
{

View file

@ -1,7 +1,7 @@
<?php
/**
* Генерация файлов Grpahviz dot
* Генерация файлов Grpahviz dot
*/
class Dot
{
@ -34,11 +34,11 @@ class Dot
function assocToDot (array $array, array $label)
{
$result = array (self::getHeader());
// Метки
// Метки
foreach ($label as $value) {
$result [] = "\t\"{$value[0]}\" [ label = \"{$value[1]}\" ] \n";
}
// Ассоциации
// Ассоциации
foreach ($array as $key => $value) {
foreach ($value as $n) {
$result [] = "\t\"$key\" -> \"$n\"\n";

View file

@ -1,12 +1,12 @@
<?php
/**
* Функциональное программирование в PHP
* Функциональное программирование в PHP
* package functional
*/
/**
* Эмуляция каррированой функции
* Эмуляция каррированой функции
*/
class __right {
protected $params;
@ -72,7 +72,7 @@ function partial() {
/**
* Композиция функций
* Композиция функций
*/
class __compose {
protected $fns;
@ -91,7 +91,7 @@ class __compose {
}
/**
* Композиция функций
* Композиция функций
* @param mixed $a
* @param mixed $b
*
@ -103,7 +103,7 @@ function compose() {
}
/**
* Карирование справа
* Карирование справа
*
* @return array[int]mixed
*/
@ -113,7 +113,7 @@ function rcurry() {
}
/**
* Карирование слева
* Карирование слева
*
* @return array[int]mixed
*/
@ -123,8 +123,8 @@ function lcurry() {
}
/**
* Разделение массива на два по условию
* @param mixed $pred Условие по которому разделяется массив
* Разделение массива на два по условию
* @param mixed $pred Условие по которому разделяется массив
* @param array $lst
*
* @return array[int]mixed
@ -177,7 +177,7 @@ function __cmp_less($a, $b, $key) {
return ($a[$key] < $b[$key]) ? -1 : 1;
}
// Сравнение по ключу массиве
// Сравнение по ключу массиве
function __index($n, $key, $row) {
return ($row[$key] == $n);
}
@ -199,23 +199,23 @@ function __empty($x) {
return empty($x);
}
// Отрицание
// Отрицание
function __not($x) {
return !$x;
}
// Не равно
// Не равно
function __neq($x, $y) {
return $x != $y;
}
// Равно
// Равно
function __eq($x, $y) {
return $x == $y;
}
/**
* Извлекает из многомерого массива значения с определенным ключом
* Извлекает из многомерого массива значения с определенным ключом
* @example key_values('a', array(1 => array('a' => 1, 'b' => 2))) => array(1)
*
* @return mixed
@ -261,7 +261,7 @@ function _get_key($key, $value, $array) {
/**
* Логическа операция && ко всем элементам массива
* Логическа операция && ко всем элементам массива
* @return bool
*/
function every(array $array, $callback) {
@ -274,7 +274,7 @@ function every(array $array, $callback) {
}
/**
* Логическа операция || ко всем элементам массива
* Логическа операция || ко всем элементам массива
* @param array $array
* @param mixed $callback
*
@ -312,11 +312,11 @@ function call() {
}
/**
* Поиск элемента в массиве
* @param function $cb сравнение с элементом массива
* @param array $hs массив в котором ищется значение
* Поиск элемента в массиве
* @param function $cb сравнение с элементом массива
* @param array $hs массив в котором ищется значение
*
* @return int|string ключ найденого элемента в массиве
* @return int|string ключ найденого элемента в массиве
*/
function array_usearch($cb, array $hs, $strict = false) {
foreach($hs as $key => $value) if (call_user_func_array($cb, array($value, $key, $strict))) return $key;
@ -324,7 +324,7 @@ function array_usearch($cb, array $hs, $strict = false) {
if (!function_exists('hash_key')) {
/**
* Преобразует ключи элементов для многомерного массива
* Преобразует ключи элементов для многомерного массива
* @return mixed
*/
function hash_key ($key_name,/*. array .*/ $array) {

View file

@ -31,7 +31,7 @@ class Rectangle
}
/**
* Смещает прямоугольник на заданное положение
* Смещает прямоугольник на заданное положение
*/
function addPoint(Point $point)
{
@ -42,7 +42,7 @@ class Rectangle
}
/**
* Координаты точки при выравнивании прямоугольника относительно текущего
* Координаты точки при выравнивании прямоугольника относительно текущего
*/
function alignment(Rectangle $base)
{

View file

@ -5,7 +5,7 @@ require_once 'core/json.php';
require_once 'core/session.php';
/**
* Неверный запрос
* Неверный запрос
*/
class WrongRequestException extends Exception
{

View file

@ -13,7 +13,7 @@ class json
return php2js($var); //json_encode(self::prepare($var, array('self', 'unicode_encode')));
}
// Преобразование json в массив
// Преобразование json в массив
static function decode($var, $encoding = 'utf-8', $is_array = false)
{
if ($encoding != 'utf-8') $var = iconv($encoding, self::$INTERNAL_ENCODING, $var);
@ -46,7 +46,7 @@ class json
}
$var = $new;
} elseif (is_object($var)) {
// Было преобразование типа для отображения !!
// Было преобразование типа для отображения !!
$vars = get_object_vars($var);
foreach ($vars as $m => $v) {
$var->$m = self::prepare($var->$m, $encode);

View file

@ -1,20 +1,20 @@
<?php
require_once 'core/functions.php';
// Переместить в фильтры!!
// Переместить в фильтры!!
/**
* Выбор макета страницы.
* Выбор оформления страницы осуществляется если было совпадение с каким либо условием
* Выбор макета страницы.
* Выбор оформления страницы осуществляется если было совпадение с каким либо условием
*/
class LayoutManager extends Filter
{
// Массив условий с их макетами
// Массив условий с их макетами
protected $condition = array();
/**
* Функция которая добавляет условие для проверки параметров $_GET
* @param $get array() | true Ассоциативный массив ключей и значений для $_GET
* Функция которая добавляет условие для проверки параметров $_GET
* @param $get array() | true Ассоциативный массив ключей и значений для $_GET
*
* @example
* addConditionGet(array('module' => 'personal'), 'personal')
@ -26,7 +26,7 @@ class LayoutManager extends Filter
}
/**
* Условие для аякс запросов. Тоже самое что и addConditionGet но еще проверяется является ли запрос ajax
* Условие для аякс запросов. Тоже самое что и addConditionGet но еще проверяется является ли запрос ajax
*/
public function addConditionXHR($get, Filter $layout)
{
@ -51,9 +51,9 @@ class LayoutManager extends Filter
}
/**
* Добавляет есловие в общем виде
* @parma $get function(HttpRequest) Функция
* @parma $layout Layout Макет
* Добавляет есловие в общем виде
* @parma $get function(HttpRequest) Функция
* @parma $layout Layout Макет
*/
public function addCondition($get, Filter $layout)
{
@ -61,7 +61,7 @@ class LayoutManager extends Filter
}
/**
* Выбирает и применяет макет для страницы
* Выбирает и применяет макет для страницы
*/
public function execute(Collection $request)
{
@ -82,7 +82,7 @@ class LayoutManager extends Filter
}
/**
* Самый простой макет
* Самый простой макет
*/
class LayoutNone extends Filter
{

View file

@ -1,7 +1,7 @@
<?php
/**
* Класс для работы с почтой
* Класс для работы с почтой
* http://en.wikipedia.org/wiki/MIME
*/
class Mail
@ -20,13 +20,13 @@ class Mail
function __construct() {
$this->setEncoding("windows-1251");
$this->uniqid = strtoupper(uniqid(time())); // Идентефикатор разделителя
$this->uniqid = strtoupper(uniqid(time())); // Идентефикатор разделителя
// $this->mime
}
/**
* Установка отправителя
* Установка отправителя
*/
function from($name)
{
@ -34,7 +34,7 @@ class Mail
}
/**
* Установка получателя
* Установка получателя
*/
function to($name) // recipient
{
@ -42,7 +42,7 @@ class Mail
}
/**
* Установка получателей копии
* Установка получателей копии
*/
function copy($name) // recipient cc
{
@ -55,7 +55,7 @@ class Mail
}
/**
* Тема письма
* Тема письма
*/
function subject($subject)
{
@ -63,7 +63,7 @@ class Mail
}
/**
* Текст письма
* Текст письма
*/
function setContent($text)
{
@ -71,7 +71,7 @@ class Mail
}
/**
* Кодировка текста в письме
* Кодировка текста в письме
*/
function setEncoding($encoding)
{
@ -79,7 +79,7 @@ class Mail
}
/**
* Добавление вложения из файла
* Добавление вложения из файла
*/
function addAttachment($filename, $name = false)
{
@ -93,7 +93,7 @@ class Mail
}
/**
* Добавление вложения из строки с указанием имени файла
* Добавление вложения из строки с указанием имени файла
*/
function addAttachmentRaw($data, $name)
{
@ -108,7 +108,7 @@ class Mail
}
/**
* Общий формат тегов MIME
* Общий формат тегов MIME
* http://tools.ietf.org/html/rfc2045
*/
function mimeTag($name, $value, array $args = array())
@ -129,7 +129,7 @@ class Mail
}
/**
* Тело сообщения
* Тело сообщения
*/
function getMessage()
{
@ -139,7 +139,7 @@ class Mail
$message .= PHP_EOL . $this->content . PHP_EOL . PHP_EOL;
/**
* Вложения
* Вложения
* http://tools.ietf.org/html/rfc2046#section-5.1.3
*/
foreach ($this->attachment as $value) {
@ -155,7 +155,7 @@ class Mail
}
/**
* Заголовок сообщения
* Заголовок сообщения
*/
function getHeader()
{
@ -180,7 +180,7 @@ class Mail
}
/**
* Вывод строки для сохранения в формате .eml
* Вывод строки для сохранения в формате .eml
*/
function eml()
{
@ -188,7 +188,7 @@ class Mail
}
/**
* Отправка почты
* Отправка почты
*/
function send()
{

View file

@ -10,7 +10,7 @@ class ModelFactory
}
/**
* Создает модель
* Создает модель
* @param string $name
* @return model
*/

View file

@ -3,10 +3,10 @@
require_once 'core/primitive.php';
/**
* Использовать интерфейсы чтобы определить какие действия можно совершать с обьектом и таким образом
* Строить набор действий Action и отображений View для обьекта
* Т.к отображение данных может быть не только на таблицу баз данных
* И возможно реализованны все интерфейсы
* Использовать интерфейсы чтобы определить какие действия можно совершать с обьектом и таким образом
* Строить набор действий Action и отображений View для обьекта
* Т.к отображение данных может быть не только на таблицу баз данных
* И возможно реализованны все интерфейсы
*/
interface IDataList
{
@ -22,22 +22,22 @@ interface IDataSave
}
/**
* Отображение таблицы базы данных в обьекты
* Отображение таблицы базы данных в обьекты
* Mapper -> DataMapper implements IDataList, IDataSave, IDataSort, IDataDelete ...
*
* @package core
*/
class DataMapper implements IDataList
{
/* Хранить метаданные в статическом свойстве класса для ототбражения ?!, + Скрипт для генерации метаданных!!
/* Хранить метаданные в статическом свойстве класса для ототбражения ?!, + Скрипт для генерации метаданных!!
*/
public $factory;
public $className; /* Класс на который будет отображаться строчка таблицы */
public $className; /* Класс на который будет отображаться строчка таблицы */
public $filter = ""; /* */
public $schema = array (); /* Соответствие между свойством обьекта и столбцом, добавить тип для записей !! */
public $database; /* Таблица */
public $index; /* Индексный столбец */
public $db; /* Соединение с базой данных */
public $schema = array (); /* Соответствие между свойством обьекта и столбцом, добавить тип для записей !! */
public $database; /* Таблица */
public $index; /* Индексный столбец */
public $db; /* Соединение с базой данных */
public $reference = array (null, null);
public function __construct ()
@ -56,13 +56,13 @@ class DataMapper implements IDataList
}
/**
* Поиск строки в таблице по идентификатору
* @param $id Значение идентификатора
* @return Обьект класса $className
* Поиск строки в таблице по идентификатору
* @param $id Значение идентификатора
* @return Обьект класса $className
*/
public function findById ($id)
{
// Строки запроса преобразовать в методы (getSQLSelect ...)
// Строки запроса преобразовать в методы (getSQLSelect ...)
// Query::from($this->database)->where ($this->index, "=", $id)->select();
$stmt = $this->db->prepareStatement ("SELECT * FROM ".$this->database." WHERE ".$this->index." = ?");
$stmt->setInt (1, $id);
@ -72,7 +72,7 @@ class DataMapper implements IDataList
}
/**
* Преобразует parseResult в обьект
* Преобразует parseResult в обьект
*/
public /* private */ function mapOne ($rs)
{
@ -87,7 +87,7 @@ class DataMapper implements IDataList
public /* private */ function mapAll ($rs)
{
$result = array ();
// Преобразование SQL в обьект
// Преобразование SQL в обьект
while ($rs->next ()) {
$result[] = $this->mapOne ($rs);
}
@ -99,7 +99,7 @@ class DataMapper implements IDataList
}
/**
* Преобразует параметры формы в SQL запрос WHERE
* Преобразует параметры формы в SQL запрос WHERE
* @param array $params
* @param array $schema
* @return string
@ -118,8 +118,8 @@ class DataMapper implements IDataList
}
/**
* Удаление строк из таблицы с заданными индексами
* @param $list array Массив идентефикаторов
* Удаление строк из таблицы с заданными индексами
* @param $list array Массив идентефикаторов
*/
public function deleteList (array $list)
{
@ -152,13 +152,13 @@ class DataMapper implements IDataList
}
/**
* Извлекает список записей из базы данных
* Извлекает список записей из базы данных
*/
public function findAll (Collection $request, $id = null)
{
$name0 = $this->database;
$foreign = $this->reference[1];
// Переписать используя Query !!!
// Переписать используя Query !!!
if ($foreign && $id) {
$filter = ($this->filter)?$filter = " AND ".$this->filter: "";
$sql = "SELECT t1.* FROM $name0 as t1 WHERE t1.$foreign = $id " . $filter.self::getOrder($request);
@ -181,7 +181,7 @@ class DataMapper implements IDataList
{
$name0 = $this->database;
$foreign = $this->reference[1];
// Переписать используя Query !!!
// Переписать используя Query !!!
if ($foreign && $id) {
$filter = ($this->filter)?$filter = " AND " . $this->filter: "";
$sql = "SELECT count(t1.*) as length FROM $name0 as t1 WHERE t1.$foreign = $id " . $filter;
@ -195,8 +195,8 @@ class DataMapper implements IDataList
}
/**
* Добавление записи в базу данных
* @param $o Обьект для записи в базу данных
* Добавление записи в базу данных
* @param $o Обьект для записи в базу данных
*/
public function saveTo (Model $o)
{
@ -214,8 +214,8 @@ class DataMapper implements IDataList
}
/**
* Обновляет запись в базе данных
* @param $o Обьект для обновления
* Обновляет запись в базе данных
* @param $o Обьект для обновления
*/
public function updateTo (Model $o)
{
@ -226,7 +226,7 @@ class DataMapper implements IDataList
$keys_values[] = $key." = '".$o->$value."'";
}
}
// Для всех должен быть идентефикатор id
// Для всех должен быть идентефикатор id
$stmt = $this->db->prepareStatement ("UPDATE ".$this->database." SET ".implode($keys_values, ",")." WHERE ".$this->index." = ".$o->id);
$stmt->executeQuery ();
}
@ -261,7 +261,7 @@ class Model
$this->$key = new Primitive ();
}
}
// __get, __set методы. В метаданных хранится тип свойств, проверять при присваивании!!
// __get, __set методы. В метаданных хранится тип свойств, проверять при присваивании!!
}
?>

View file

@ -1,7 +1,7 @@
<?php
/**
* Отображение списка папок с настройками на обьект
* Отображение списка папок с настройками на обьект
*/
class PathMapper
{
@ -58,7 +58,7 @@ class PathMapper
}
/**
* Число папок
* Число папок
*/
function getCount ()
{
@ -66,7 +66,7 @@ class PathMapper
}
/**
* Удаление списка папок
* Удаление списка папок
*/
function deleteList(array $list)
{

View file

@ -5,8 +5,8 @@
.*/
/**
* Класс для работы с папками и путями
* Для итерации над файлами возможно лучше использовать SPL
* Класс для работы с папками и путями
* Для итерации над файлами возможно лучше использовать SPL
*
* @package utils
*/
@ -29,9 +29,9 @@ class Path
}
/**
* Возвращает расширение файла
* Возвращает расширение файла
*
* @param string $fileName Полное имя файла
* @param string $fileName Полное имя файла
*
* @return string
*/
@ -43,9 +43,9 @@ class Path
}
/**
* Полное имя файла без расширения
* Полное имя файла без расширения
*
* @param string $fileName Имя файла
* @param string $fileName Имя файла
*
* @return string
*/
@ -62,9 +62,9 @@ class Path
}
/**
* Возвращает имя файла без расширения
* Возвращает имя файла без расширения
*
* @param string $fileName Полное имя файла
* @param string $fileName Полное имя файла
*
* @return string
*/
@ -76,10 +76,10 @@ class Path
}
/**
* Список файлов в директории
* Список файлов в директории
*
* @param array $allow массив расширений для файлов
* @param array $ignore массив имен пааок которые не нужно обрабатывать
* @param array $allow массив расширений для файлов
* @param array $ignore массив имен пааок которые не нужно обрабатывать
*
* @return array
*/
@ -89,7 +89,7 @@ class Path
return self::fileList($this->__toString(), $allow, $ignore);
}
// Использовать SPL ???
// Использовать SPL ???
protected function fileList ($base, &$allow, &$ignore)
{
$result = array ();
@ -121,10 +121,10 @@ class Path
}
/**
* Список файлов в директориии и ее поддиректорий
* Список файлов в директориии и ее поддиректорий
*
* @param array $allow массив расширений разрешеных для файлов
* @param array $ignore массив имен пааок которые не нужно обрабатывать
* @param array $allow массив расширений разрешеных для файлов
* @param array $ignore массив имен пааок которые не нужно обрабатывать
*
* @return array
*/
@ -138,10 +138,10 @@ class Path
/**
* Рекурсивно копирует директорию
* Рекурсивно копирует директорию
*
* @param string $source Папка из которой копируется
* @param string $target Папка в которую копируется
* @param string $source Папка из которой копируется
* @param string $target Папка в которую копируется
*/
public static function copy ($source, $target)
{
@ -161,9 +161,9 @@ class Path
}
/**
* Рекурсивно удаляет директорию
* Рекурсивно удаляет директорию
*
* @param string $path Папка
* @param string $path Папка
*/
public static function delete ($path)
{
@ -182,9 +182,9 @@ class Path
}
/**
* Преобразует строку путя в массив
* Преобразует строку путя в массив
*
* @param string $path Путь
* @param string $path Путь
*
* @return array
*/
@ -197,7 +197,7 @@ class Path
}
/**
* Преобразует относительный путь в абсолютный
* Преобразует относительный путь в абсолютный
*/
public function optimize ()
{
@ -217,7 +217,7 @@ class Path
}
/**
* Преобразует путь в строку
* Преобразует путь в строку
*
* @return string
*/
@ -228,7 +228,7 @@ class Path
}
/**
* Проверяет является ли папка родительской для другой папки
* Проверяет является ли папка родительской для другой папки
*
* @parma Path $path
*
@ -248,11 +248,11 @@ class Path
}
/**
* Находит путь относительно текущего путя
* Находит путь относительно текущего путя
*
* @param string $name Полный путь к файлу
* @param string $name Полный путь к файлу
*
* @return string Относительный путь к файлу
* @return string Относительный путь к файлу
*/
public function relPath ($name)
{
@ -270,9 +270,9 @@ class Path
}
/**
* Создает недастающие папки для записи файла
* Создает недастающие папки для записи файла
*
* @param string $dst Полное имя файла
* @param string $dst Полное имя файла
*
* @return void
*/
@ -285,11 +285,11 @@ class Path
}
/**
* Подбирает новое временное имя для файла
* Подбирает новое временное имя для файла
*
* @param string $dst Предпологаемое имя файла
* @param string $dst Предпологаемое имя файла
*
* @return string Новое имя файла
* @return string Новое имя файла
*/
static function resolveFile ($dst)
{
@ -305,7 +305,7 @@ class Path
}
/**
* Обьединяет строки в путь соединяя необходимым разделителем
* Обьединяет строки в путь соединяя необходимым разделителем
*
* @return string
*/

View file

@ -1,6 +1,6 @@
<?php
/**
* Класс преобразования типа значения поля класса в тип поля таблицы
* Класс преобразования типа значения поля класса в тип поля таблицы
* @package core
*/
class Primitive
@ -12,13 +12,13 @@ class Primitive
$this->name = $name;
}
// Преобразование из внешнего вормата
// Преобразование из внешнего вормата
public function setString ($value)
{
$this->value = $value;
}
// Преобразование из формата базы данных
// Преобразование из формата базы данных
public function setRes ($res, $key)
{
$this->value = $res->getString ($key);
@ -29,7 +29,7 @@ class Primitive
return ((string) $this->value);
}
// Преобразование во внешний формат
// Преобразование во внешний формат
public function getString ()
{
return $this->__toString ();
@ -37,7 +37,7 @@ class Primitive
}
/**
* Отображение поля таблицы в целое число
* Отображение поля таблицы в целое число
* @package core
*/
class Int4 extends Primitive {
@ -54,7 +54,7 @@ class Int4 extends Primitive {
class FKey extends Int4 {}
/**
* Отображение поля таблицы в дату - время
* Отображение поля таблицы в дату - время
*/
class Date extends Primitive
{

View file

@ -1,7 +1,7 @@
<?php
/**
* Κλΰρρ μεςΰδΰννϋυ ςΰαλθφϋ
* Класс метаданных таблицы
*/
class Meta
{

View file

@ -4,7 +4,7 @@ require_once 'table.php';
require_once 'meta.php';
/**
* Класс для составления запроса
* Класс для составления запроса
*/
class Query
{
@ -16,7 +16,7 @@ class Query
public $order = array ();
/**
* Создает пустой зарос
* Создает пустой зарос
*/
static function create()
{
@ -24,16 +24,16 @@ class Query
}
/**
* Метаданные таблицы
* @param string $name Имя таблицы
* Метаданные таблицы
* @param string $name Имя таблицы
*/
function getTableMeta($name)
{
}
/**
* Создает новый запрос
* @param string $name Имя таблицы
* Создает новый запрос
* @param string $name Имя таблицы
*
* @return Query
*/
@ -52,10 +52,10 @@ class Query
}
/**
* Добавляет к запросу условие
* @param string $field Имя поля таблицы
* @param string $op Имя оператора
* @param $value Значение поля
* Добавляет к запросу условие
* @param string $field Имя поля таблицы
* @param string $op Имя оператора
* @param $value Значение поля
*
* @return Query
*/
@ -67,7 +67,7 @@ class Query
}
/**
* @param string $e Выражение
* @param string $e Выражение
*/
public function calc($e)
{
@ -96,9 +96,9 @@ class Query
}
/**
* Обьединяет параметры двух заросов
* Обьединяет параметры двух заросов
* @param Query $first
* @pram array $list Список параметров
* @pram array $list Список параметров
*
* @return Query
*/
@ -112,7 +112,7 @@ class Query
}
/**
* Заковычивает значение
* Заковычивает значение
*/
public function quote ($value)
{
@ -120,10 +120,10 @@ class Query
}
/**
* Компиляция таблицы
* Компиляция таблицы
* @param Table $table
*
* @return string Часть строки SQL
* @return string Часть строки SQL
*/
private function table(Table $table)
{
@ -137,9 +137,9 @@ class Query
}
/**
* Компиляция WHERE
* Компиляция WHERE
*
* @return string Часть строки SQL
* @return string Часть строки SQL
*/
private function where ()
{
@ -147,9 +147,9 @@ class Query
}
/**
* Компиляция запроса в SELECT SQL
* Компиляция запроса в SELECT SQL
*
* @return string SQL выражение
* @return string SQL выражение
*/
public function select()
{
@ -160,7 +160,7 @@ class Query
}
/**
* Компиляция в DELETE
* Компиляция в DELETE
*/
public function delete()
{
@ -177,9 +177,9 @@ class Query
}
/**
* Компиляция в UPDATE
* TODO: Разные типы запросов Query->update(); Query->select(), Query->insert();!!
* Возвраащают statement
* Компиляция в UPDATE
* TODO: Разные типы запросов Query->update(); Query->select(), Query->insert();!!
* Возвраащают statement
*/
public function update($values)
{
@ -193,7 +193,7 @@ class Query
}
/**
* Компиляция в INSERT
* Компиляция в INSERT
*/
public function insert($values)
{

View file

@ -1,7 +1,7 @@
<?php
/**
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Класс таблицы
*/
class Table
{

View file

@ -1,7 +1,7 @@
<?php
/**
* Извлекает текст из HTML документа
* Извлекает текст из HTML документа
*/
function stripText($document)
{
@ -24,7 +24,7 @@ function stripText($document)
}
/**
* Разделение текста на массив слов
* Разделение текста на массив слов
*/
function tokenize ($document)
{
@ -34,13 +34,13 @@ function tokenize ($document)
/**
* Ищет один из символов с конца строки
* Ищет один из символов с конца строки
*
* @param string $haystack
* @param array $needle Массив символов для поиска
* @param int $offset Смещение от начала строки
* @param array $needle Массив символов для поиска
* @param int $offset Смещение от начала строки
*
* @return int Позицию первого совпадения
* @return int Позицию первого совпадения
*/
function indexRight ($haystack, $needle, $offset = 0)
{
@ -55,13 +55,13 @@ function indexRight ($haystack, $needle, $offset = 0)
}
/**
* Ищет один из символов с начала строки
* Ищет один из символов с начала строки
*
* @param string $haystack
* @param array $needle Массив символов для поиска
* @param int $offset Смещение от начала строки
* @param array $needle Массив символов для поиска
* @param int $offset Смещение от начала строки
*
* @return int Позицию первого совпадения
* @return int Позицию первого совпадения
*/
function indexLeft ($haystack, $needle, $offset = 0)
{

View file

@ -5,7 +5,7 @@ require_once 'core/search/stemmer.php';
require_once 'core/path.php';
/**
* Индексирование файлов
* Индексирование файлов
*/
class Index
{
@ -25,7 +25,7 @@ class Index
return "";
}
// Выбираем основу слова
// Выбираем основу слова
function clean ($word)
{
return Stemmer::russian(strtolower($word));
@ -34,14 +34,14 @@ class Index
function process ($base, $files)
{
$path = new Path($base);
// Список документов
// Список документов
foreach ($path->getContentRec($files) as $file) {
$content = file_get_contents ($file);
$text = stripText($content);
// $title = self::getTitle ($content);
$title = pathinfo($file, PATHINFO_BASENAME);
// echo $file, "\n";
// Список слов в документе
// Список слов в документе
$list = tokenize($text);
foreach ($list as $word) {
$preword = self::clean($word);
@ -49,7 +49,7 @@ class Index
$index = $this->index[$preword];
if ( ! in_array ($this->count, $index)) $this->index[$preword] [] = $this->count;
} else {
// Не записываем слова длинна которых меньше 2
// Не записываем слова длинна которых меньше 2
if (strlen($preword) > 1) {
$this->index[$preword] = array ($this->count);
}
@ -62,12 +62,12 @@ class Index
}
/**
* Сохранение результата поиска
* Сохранение результата поиска
*/
function saveData ($file)
{
$file = fopen($file, "w");
// Количество слов и текстов
// Количество слов и текстов
fwrite ($file, pack("SS", count($this->index), count($this->text)));
foreach ($this->index as $word => $value) {
$length = strlen($word);

View file

@ -1,7 +1,7 @@
<?php
/**
* Разбирвет строку запроса на токены
* Разбирвет строку запроса на токены
*/
class Lexer
{
@ -40,14 +40,14 @@ class Lexer
}
/**
* Проверяет на конец строки
* Проверяет на конец строки
*/
private function isEOL () {
return $this->offset >= strlen($this->src);
}
/**
* Односимвольный токен
* Односимвольный токен
*/
private function easyToken () {
$ch = $this->getChar ();
@ -66,7 +66,7 @@ class Lexer
}
/**
* Возвращает следующий токен
* Возвращает следующий токен
*/
public function getToken ()
{

View file

@ -4,7 +4,7 @@ require_once 'core/search/lexer.php';
require_once 'core/functions.php';
/**
* Поиск в индексе
* Поиск в индексе
*/
class Search
{
@ -80,9 +80,9 @@ class Search
}
/**
* @param int $type Тип лексемы
* @param function $op Функция при совпадении типа лексемы при запросе
* @param function $next Следующий обработчик запроса
* @param int $type Тип лексемы
* @param function $op Функция при совпадении типа лексемы при запросе
* @param function $next Следующий обработчик запроса
*/
function binaryOp ($type, $op, $next)
{

View file

@ -10,14 +10,14 @@ class Searcher {
protected $search;
public function __construct ()
{
// Может передавать обьект метод по умлочанию getWordStat??
// Может передавать обьект метод по умлочанию getWordStat??
$this->search = new Search (array ($this, 'getWord'));
}
/**
* Читает содержимое индексного файла
* Читает содержимое индексного файла
*
* @param string $file Имя файла
* @param string $file Имя файла
*/
function setSource ($fileName)
{
@ -44,7 +44,7 @@ class Searcher {
}
}
// По слову возвращаем список файлов и слово
// По слову возвращаем список файлов и слово
public function getWord ($word)
{
$preword = Stemmer::russian($word); // Index?? -> clean
@ -55,7 +55,7 @@ class Searcher {
}
/**
* Список документов в которых встечается слово
* Список документов в которых встечается слово
*
*/
function getResult (&$query)
@ -74,10 +74,10 @@ class Searcher {
}
/**
* Часть документа в котором встречается слово
* Часть документа в котором встречается слово
*
* @param $word Слово
* @param $text Текст содержащий слово
* @param $word Слово
* @param $text Текст содержащий слово
*/
function getSlice ($word, $text)
{
@ -89,7 +89,7 @@ class Searcher {
}
/**
* Поиск по запросу
* Поиск по запросу
*
*/
function search ($query)

View file

@ -27,7 +27,7 @@ class Stemmer {
static private function rv($word)
{
$vowels = array('à','å','è','î','ó','û','ý','þ','ÿ');
$vowels = array('а','е','и','о','у','ы','э','ю',');
$flag = 0;
$rv = '';
$start = '';
@ -59,7 +59,7 @@ class Stemmer {
static function has_aya ($word, $suffix)
{
return (substr($word,-strlen($suffix)-CHAR_LENGTH,CHAR_LENGTH)=='à' || substr($word,-strlen($suffix)-CHAR_LENGTH,CHAR_LENGTH)=='ÿ');
return (substr($word,-strlen($suffix)-CHAR_LENGTH,CHAR_LENGTH)=='а' || substr($word,-strlen($suffix)-CHAR_LENGTH,CHAR_LENGTH)=='я');
}
static function cut_suffix ($word, $suffix)
@ -69,26 +69,26 @@ class Stemmer {
static private function step1($word)
{
$perfective1 = array('â', 'âøè', 'âøèñü');
$perfective1 = array('в', 'вши', 'вшись');
foreach ($perfective1 as $suffix) {
if (self::has_suffix($word, $suffix) && self::has_aya ($word, $suffix)) {
return self::cut_suffix($word, $suffix);
}
}
$perfective2 = array('èâ','èâøè','èâøèñü','ûâøè','ûâøèñü');
$perfective2 = array('ив','ивши','ившись','ывши','ывшись');
foreach ($perfective2 as $suffix) {
if (self::has_suffix($word, $suffix)) {
return self::cut_suffix($word, $suffix);
}
}
$reflexive = array('ñÿ', 'ñü');
$reflexive = array('ся', 'сь');
$word = self::substitute($word, $reflexive);
$adjective = array('åå','èå','ûå','îå','èìè','ûìè','åé','èé','ûé','îé','åì','èì','ûì','îì','åãî','îãî','åìó','îìó','èõ','ûõ','óþ','þþ','àÿ','ÿÿ','îþ','åþ');
$participle2 = array('åì','íí','âø','þù',');
$participle1 = array('èâø','ûâø','óþù');
$adjective = array('ее','ие','ые','ое','ими','ыми','ей','ий','ый','ой','ем','им','ым','ом','его','ого','ему','ому','их','ых','ую','юю','ая','яя','ою','ею');
$participle2 = array('ем','нн','вш','ющ',');
$participle1 = array('ивш','ывш','ующ');
foreach ($adjective as $suffix) {
if (self::has_suffix($word, $suffix)) {
$word = self::cut_suffix($word, $suffix);
@ -101,17 +101,17 @@ class Stemmer {
}
}
$verb1 = array('ëà','íà','åòå','éòå','ëè','é','ë','åì','í','ëî','íî','åò','þò','íû','òü','åøü','ííî');
$verb1 = array('ла','на','ете','йте','ли','й','л','ем','н','ло','но','ет','ют','ны','ть','ешь','нно');
foreach ($verb1 as $suffix)
if (self::has_suffix($word, $suffix) && self::has_aya ($word, $suffix))
return self::cut_suffix($word, $suffix);
$verb2 = array('èëà','ûëà','åíà','åéòå','óéòå','èòå','èëè','ûëè','åé','óé','èë','ûë','èì','ûì','åí','èëî','ûëî','åíî','ÿò','óåò','óþò','èò','ûò','åíû','èòü','ûòü','èøü','óþ',');
$verb2 = array('ила','ыла','ена','ейте','уйте','ите','или','ыли','ей','уй','ил','ыл','им','ым','ен','ило','ыло','ено','ят','ует','уют','ит','ыт','ены','ить','ыть','ишь','ую',');
foreach ($verb2 as $suffix)
if (self::has_suffix($word, $suffix))
return self::cut_suffix($word, $suffix);
$noun = array('à','åâ','îâ','èå','üå','å','èÿìè','ÿìè','àìè','åè','èè','è','èåé','åé','îé','èé','é','èÿì','ÿì','èåì','åì','àì','îì','î','ó','àõ','èÿõ','ÿõ','û','ü','èþ','üþ','þ','èÿ','üÿ','ÿ');
$noun = array('а','ев','ов','ие','ье','е','иями','ями','ами','еи','ии','и','ией','ей','ой','ий','й','иям','ям','ием','ем','ам','ом','о','у','ах','иях','ях','ы','ь','ию','ью','ю','ия','ья',');
foreach ($noun as $suffix) {
if (self::has_suffix($word, $suffix))
return self::cut_suffix($word, $suffix);
@ -122,14 +122,14 @@ class Stemmer {
static private function step2($word)
{
if (substr($word,-CHAR_LENGTH,CHAR_LENGTH) == 'è')
if (substr($word,-CHAR_LENGTH,CHAR_LENGTH) == 'и')
$word = substr($word, 0, strlen($word)-CHAR_LENGTH);
return $word;
}
static private function step3($word)
{
$vowels = array('à','å','è','î','ó','û','ý','þ','ÿ');
$vowels = array('а','е','и','о','у','ы','э','ю',');
$flag = 0;
$r1 = '';
$r2 = '';
@ -152,7 +152,7 @@ class Stemmer {
if ($flag=1 && array_search(substr($r1,$i,CHAR_LENGTH), $vowels) === false)
$flag=2;
}
$derivational=array('îñò', 'îñòü');
$derivational=array('ост', 'ость');
foreach ($derivational as $suffix)
if (substr($r2,-(strlen($suffix))) == $suffix)
$word=substr($word, 0, strlen($r2)-strlen($suffix));
@ -161,19 +161,19 @@ class Stemmer {
static private function step4($word)
{
if (substr($word,-CHAR_LENGTH*2)=='íí')
if (substr($word,-CHAR_LENGTH*2)=='нн')
$word=substr($word, 0, strlen($word)-CHAR_LENGTH);
else
{
$superlative=array('åéø', 'åéøå');
$superlative=array('ейш', 'ейше');
foreach ($superlative as $suffix)
if (substr($word,-(strlen($suffix))) == $suffix)
$word = substr($word, 0, strlen($word) - strlen($suffix));
if (substr($word,-CHAR_LENGTH*2) == 'íí')
if (substr($word,-CHAR_LENGTH*2) == 'нн')
$word = substr($word, 0, strlen($word) - CHAR_LENGTH);
}
// should there be a guard flag? can't think of a russian word that ends with åéøü or ííü anyways, though the algorithm states this is an "otherwise" case
if (substr($word,-CHAR_LENGTH,CHAR_LENGTH) == 'ü')
// should there be a guard flag? can't think of a russian word that ends with ейшь or ннь anyways, though the algorithm states this is an "otherwise" case
if (substr($word,-CHAR_LENGTH,CHAR_LENGTH) == 'ь')
$word=substr($word, 0, strlen($word)-CHAR_LENGTH);
return $word;
}

View file

@ -3,13 +3,13 @@
require_once 'core/collection.php';
/**
* Класс реестра
* Реестр организован как ассоциативный многомерный массив
* Класс реестра
* Реестр организован как ассоциативный многомерный массив
* array( 'name1' => parameters1, 'name2' => parameters1, ... )
*
* name1, name2 ... - Имена модулей
* parameters1, parameters1 - Массивы с параметрами модуля
* Имя необходимо чтобы потом легко было удалить ненужные ветки дерева
* name1, name2 ... - Имена модулей
* parameters1, parameters1 - Массивы с параметрами модуля
* Имя необходимо чтобы потом легко было удалить ненужные ветки дерева
*/
class Settings extends Collection
{
@ -20,7 +20,7 @@ class Settings extends Collection
}
/**
* Чтение настроек из файла
* Чтение настроек из файла
*
* @param File $file
*
@ -29,7 +29,7 @@ class Settings extends Collection
public function read()
{
if ( !file_exists ($this->file)) return false;
// Не include_once т.к читать настройки можно несколько раз
// Не include_once т.к читать настройки можно несколько раз
include($this->file);
if (!is_array($settings)) {
throw new Exception($this->file);
@ -38,7 +38,7 @@ class Settings extends Collection
}
/**
* Запись ключа в реестр (Реестр это могомерный массив)
* Запись ключа в реестр (Реестр это могомерный массив)
*/
public function writeKey(array $key, $value)
{
@ -61,7 +61,7 @@ class Settings extends Collection
}
/**
* Обновляет массив в соответствии со значением
* Обновляет массив в соответствии со значением
*/
protected function merge(array &$data, $value)
{
@ -76,8 +76,8 @@ class Settings extends Collection
}
/**
* Чтение ключа из реестра
* @param $args Путь к значению ключа
* Чтение ключа из реестра
* @param $args Путь к значению ключа
*/
public function readKey(array $key)
{
@ -106,8 +106,8 @@ class Settings extends Collection
}
/**
* Чтение ключа из реестра (Собирает все ключи с определенным значением во всех модулях)
* @param $key Путь к значению ключа внутри модуля
* Чтение ключа из реестра (Собирает все ключи с определенным значением во всех модулях)
* @param $key Путь к значению ключа внутри модуля
*/
public function readKeyList()
{
@ -145,7 +145,7 @@ class Settings extends Collection
}
/**
* Запись настроек в файл (Может переименовать в store)
* Запись настроек в файл (Может переименовать в store)
*
* @param File $file
*
@ -158,7 +158,7 @@ class Settings extends Collection
}
/**
* Список модулей
* Список модулей
*/
public function getModules()
{

View file

@ -4,12 +4,12 @@ require_once 'core/path.php';
require_once 'creole/util/sql/SQLStatementExtractor.php';
/**
* Обработка файлов для установки
* Обработка файлов для установки
*/
class Setup
{
/**
* Содержимое PHP файла
* Содержимое PHP файла
*/
static function fileContent($file, array $tpl)
{
@ -21,7 +21,7 @@ class Setup
}
/**
* Копирует файлы шаблонной директории
* Копирует файлы шаблонной директории
*/
static function copyTemplatePath($srcPath, $dstPath, array $tpl, $tplFile = 'tpl')
{
@ -31,12 +31,12 @@ class Setup
foreach ($files as $file) {
if (Path::getExtension($file) == $tplFile) {
// Шаблон
// Шаблон
$dst = $out->append($path->relPath (Path::skipExtension($file)));
Path::prepare($dst);
file_put_contents($dst, self::fileContent($file, $tpl));
} else {
// Обычный файл
// Обычный файл
$dst = $out->append($path->relPath ($file));
Path::prepare($dst);
copy($file, $dst);
@ -45,7 +45,7 @@ class Setup
}
/**
* Выполнение Списка SQL команд
* Выполнение Списка SQL команд
*/
static function batchSQL(Connection $conn, $file)
{

View file

@ -1,7 +1,7 @@
<?php
/**
* Класс для короткого доступа к файлам / папкам
* Класс для короткого доступа к файлам / папкам
*/
class Shortcut
{
@ -19,8 +19,8 @@ class Shortcut
}
/**
* Добавляет ярлык с именем $prefix
* Путь может содержать переменные
* Добавляет ярлык с именем $prefix
* Путь может содержать переменные
*/
public function addUrl($prefix, $path)
{
@ -36,7 +36,7 @@ class Shortcut
}
/**
* Возвращает путь по имени ярлыка
* Возвращает путь по имени ярлыка
*/
static function getUrl ($prefix, $name = null, $name1 = false)
{

View file

@ -2,7 +2,7 @@
require_once 'core/search/htmlhelper.php';
/**
* Функции для проверки орфографии
* Функции для проверки орфографии
* rename Spell -> SpellHelper ??
*/
class Spell
@ -52,7 +52,7 @@ class Spell
}
/**
* Вызывает функцию для каждого найденного слова
* Вызывает функцию для каждого найденного слова
*/
function eachWord ($call, $string)
{
@ -66,7 +66,7 @@ class Spell
}
/**
* Проверяет слово на соответствие со словарем
* Проверяет слово на соответствие со словарем
*
*/
function doWord (&$string, $begin, $end)
@ -84,7 +84,7 @@ class Spell
}
/**
* Часть текста содержащий неправильное слово
* Часть текста содержащий неправильное слово
*/
function getError ($string)
{

View file

@ -1,7 +1,7 @@
<?php
/**
* Преобразование дерева из модели Plain в массив массивов (Adjacency List)
* Преобразование дерева из модели Plain в массив массивов (Adjacency List)
*/
require_once 'core/functions.php';
@ -10,16 +10,16 @@ define (SORT_DESC, 0); // descending
define (SORT_ASC, 1); // ascending
/**
* Выбирает все сроки из таблицы с уникальными значениями ключа
* @param $name Имя ключа
* @param $table Двухмерный массив
* Выбирает все сроки из таблицы с уникальными значениями ключа
* @param $name Имя ключа
* @param $table Двухмерный массив
* @example
* key_unique_values ('name', array (array ('name' => 1), array ('name' => 2), array ('name' => 1)))
=> array (1, 2)
* @end example
*/
function key_unique_values ($name, $table) {
// Ищем уникальные значения для заданного ключа
// Ищем уникальные значения для заданного ключа
$keys = array ();
foreach ($table as $row) {
if (!in_array ($row[$name], $keys))
@ -29,10 +29,10 @@ function key_unique_values ($name, $table) {
}
/**
* Сортировка двумерного массива по заданному ключу
* @param $array Массив
* @param $key Имя ключа по значению которого будет идти сравнение
* @return Отсортированный массив
* Сортировка двумерного массива по заданному ключу
* @param $array Массив
* @param $key Имя ключа по значению которого будет идти сравнение
* @return Отсортированный массив
*/
function sortOn($array, $key, $fn = '__cmp') {
usort ($array, rcurry($fn, $key));
@ -42,15 +42,15 @@ function sortOn($array, $key, $fn = '__cmp') {
/**
* Обходит таблицу как дерево
* @param $level Array Уровни вложенности
* @param $table Таблица
* @param $fn Функция которая применяется к каждой ветке дерева
* Обходит таблицу как дерево
* @param $level Array Уровни вложенности
* @param $table Таблица
* @param $fn Функция которая применяется к каждой ветке дерева
* $fn ($name, $index, $rows, $cc)
* @param $name Ключ уровня
* @param $index Значение ключа уровня
* @param $rows Все столбцы текущго уровня
* @parma $cc Столбцы более низкого уровня
* @param $name Ключ уровня
* @param $index Значение ключа уровня
* @param $rows Все столбцы текущго уровня
* @parma $cc Столбцы более низкого уровня
*/
function tableTreeWalk($level, $table, $fn) {
if (empty ($level)) return $table;

View file

@ -1,7 +1,7 @@
<?php
/**
* Расширения для PHPTAL для отображения времени и даты
* Расширения для PHPTAL для отображения времени и даты
* package utils
*/
class DateTime_Tales implements PHPTAL_Tales
@ -17,7 +17,7 @@ class DateTime_Tales implements PHPTAL_Tales
}
}
/* Регистрация нового префикса для подключения компонента */
/* Регистрация нового префикса для подключения компонента */
$registry = PHPTAL_TalesRegistry::getInstance();
$registry->registerPrefix('date', array('DateTime_Tales', 'date'));
$registry->registerPrefix('time', array('DateTime_Tales', 'time'));

View file

@ -31,7 +31,7 @@ class Excel_DateTime
}
/**
* Клетка таблицы
* Клетка таблицы
*/
class TableCell
{
@ -46,7 +46,7 @@ class TableCell
}
/**
* Ряд таблицы
* Ряд таблицы
*/
class TableRow
{
@ -66,7 +66,7 @@ class TableRow
}
/**
* Таблица
* Таблица
*/
class ExcelTable
{
@ -84,7 +84,7 @@ class ExcelTable
}
/**
* Записать значение в клетку с заданными координатами
* Записать значение в клетку с заданными координатами
*/
function setCell($x, $y, $value)
{
@ -98,7 +98,7 @@ class ExcelTable
}
/**
* Заполняет ряд начиная с указанного столбца значениями из массива
* Заполняет ряд начиная с указанного столбца значениями из массива
*/
function setRow($row, $index, array $data)
{
@ -113,9 +113,9 @@ class ExcelTable
}
/**
* Устанавливает высоту ряда
* @param $row integer Номер ряда
* @parma $value real Высота ряда
* Устанавливает высоту ряда
* @param $row integer Номер ряда
* @parma $value real Высота ряда
*/
function setRowHeight ($row, $value)
{
@ -125,9 +125,9 @@ class ExcelTable
}
/**
* Устанавливает стиль ряда
* @param $row integer Номер ряда
* @parma $name string Имя стиля
* Устанавливает стиль ряда
* @param $row integer Номер ряда
* @parma $name string Имя стиля
*/
function setRowStyle ($row, $name)
{
@ -137,10 +137,10 @@ class ExcelTable
}
/**
* Обьединяет клетки в строке
* @param $row Номер ряда
* @param $cell Номер столбца
* @param $merge Количество клеток для обьединения
* Обьединяет клетки в строке
* @param $row Номер ряда
* @param $cell Номер столбца
* @param $merge Количество клеток для обьединения
*/
function setCellMerge ($row, $cell, $merge)
{
@ -151,10 +151,10 @@ class ExcelTable
}
/**
* Устанавливает стиль для клеток ряда
* @param $row integer Номер ряда
* @param $y integer Номер столбца
* @parma $name string Имя стиля
* Устанавливает стиль для клеток ряда
* @param $row integer Номер ряда
* @param $y integer Номер столбца
* @parma $name string Имя стиля
*/
function setCellStyle ($row, $y, $name)
{
@ -163,7 +163,7 @@ class ExcelTable
}
/**
* Добавляет строку к таблице
* Добавляет строку к таблице
*/
function addRow($index = 1, array $data = array(""))
{
@ -175,7 +175,7 @@ class ExcelTable
}
/**
* Количество строк в таблице
* Количество строк в таблице
*
* @return int
*/
@ -185,7 +185,7 @@ class ExcelTable
}
/**
* Количество столбцов в строке
* Количество столбцов в строке
*
* @return int
*/
@ -195,8 +195,8 @@ class ExcelTable
}
/**
* Разделяет таблицу на две части по вертикали
* @param $n integer Количество столбцов слева
* Разделяет таблицу на две части по вертикали
* @param $n integer Количество столбцов слева
*/
function splitVertical($n)
{
@ -204,8 +204,8 @@ class ExcelTable
}
/**
* Разделяет таблицу на две части по горизонтали
* @param $n integer Количество столбцов сверху
* Разделяет таблицу на две части по горизонтали
* @param $n integer Количество столбцов сверху
*/
function splitHorizontal($n)
{
@ -214,7 +214,7 @@ class ExcelTable
/**
* Количество столбцов в таблице
* Количество столбцов в таблице
*
* @return int
*/
@ -229,7 +229,7 @@ class ExcelTable
}
/**
* Генерация клетки таблицы (Переработать)
* Генерация клетки таблицы (Переработать)
*/
function createCell ($ncell, XMLWriter $doc, $j, $value, $setIndex) {
$doc->startElement("Cell");
@ -266,7 +266,7 @@ class ExcelTable
}
/**
* Генерация таблицы
* Генерация таблицы
*/
public function createTable (XMLWriter $doc) {
$doc->startElement('Worksheet');
@ -279,7 +279,7 @@ class ExcelTable
$doc->writeAttribute('ss:ExpandedColumnCount', $columns);
$doc->writeAttribute('ss:ExpandedRowCount', $rows);
// Переписать цыкл !!!!!!!
// Переписать цыкл !!!!!!!
for ($i = 1; $i <= $rows; $i++) {
$doc->startElement('Row');
if (isset($this->rows[$i])) {
@ -292,7 +292,7 @@ class ExcelTable
}
$nrow = $this->rows[$i];
// Флаг индикатор подстановки номера столбца
// Флаг индикатор подстановки номера столбца
$setIndex = false;
for ($j = 1; $j <= $columns; $j++) {
@ -339,7 +339,7 @@ class ExcelTable
}
/**
* Документ
* Документ
*/
class ExcelDocument {
static $ns = "urn:schemas-microsoft-com:office:spreadsheet";
@ -351,10 +351,10 @@ class ExcelDocument {
}
/**
* Добавление стиля к документу
* @param $name string Имя стиля
* @param $values array Параметры стиля
* @param $type Тип стиля
* Добавление стиля к документу
* @param $name string Имя стиля
* @param $values array Параметры стиля
* @param $type Тип стиля
*/
function setStyle ($name, array $values, $type = 'Interior')
{
@ -365,7 +365,7 @@ class ExcelDocument {
}
/**
* Генерация стилей
* Генерация стилей
*/
private function createStyles (XMLWriter $doc) {
$doc->startElement('Styles');
@ -373,7 +373,7 @@ class ExcelDocument {
$doc->startElement('Style');
$doc->writeAttribute('ss:ID', $name);
foreach ($sn as $type => $s) {
// Стиль Borders - составной
// Стиль Borders - составной
if ($type == 'Borders') {
$doc->startElement('Borders');
foreach ($s as $border) {
@ -398,7 +398,7 @@ class ExcelDocument {
}
/**
* Преобразует переводы строки в спец символы
* Преобразует переводы строки в спец символы
*/
function clean ($s) {
assert(is_string($s));
@ -407,7 +407,7 @@ class ExcelDocument {
}
/**
* Сохраняет таблицу в формате Office 2003 XML
* Сохраняет таблицу в формате Office 2003 XML
* http://en.wikipedia.org/wiki/Microsoft_Office_XML_formats
*/
function save($filename)

View file

@ -3,7 +3,7 @@
require_once 'core/tools/drawing.php';
/**
* Формат для композиции изображений
* Формат для композиции изображений
*/
class TemplateImage
{
@ -47,7 +47,7 @@ class TemplateImage
}
/**
* Путь к изображению
* Путь к изображению
*/
function resourcePath($path)
{
@ -57,7 +57,7 @@ class TemplateImage
}
/**
* Путь у шрифтам
* Путь у шрифтам
*/
function fontPath($path)
{
@ -85,7 +85,7 @@ class TemplateImage
}
/**
* Создает изображение из файла
* Создает изображение из файла
*/
function imagefromfile($file)
{
@ -151,7 +151,7 @@ class TemplateImage
}
/**
* Перекодировка текста
* Перекодировка текста
*/
function encode($text)
{
@ -184,7 +184,7 @@ class TemplateImage
}
/**
* Генерирует изображение из шаблона
* Генерирует изображение из шаблона
*/
function render($file = null)
{

View file

@ -1,14 +1,14 @@
<?php
function translit($st) {
$st = strtr($st,"àáâãäå¸çèéêëìíîïðñòóôõúûý !¹", "abvgdeeziyklmnoprstufh_ie__#");
$st = strtr($st,"ÀÁÂÃÄŨÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÚÛÝ", "ABVGDEEZIYKLMNOPRSTUFH_IE");
$st = strtr($st,"абвгдеёзийклмнопрстуфхъыэ !№", "abvgdeeziyklmnoprstufh_ie__#");
$st = strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ", "ABVGDEEZIYKLMNOPRSTUFH_IE");
$st = strtr($st, array(
"æ"=>"zh", "ö"=>"ts", "÷"=>"ch", "ø"=>"sh",
"ù"=>"shch","ü"=>"", "þ"=>"yu", "ÿ"=>"ya",
"Æ"=>"ZH", "Ö"=>"TS", "×"=>"CH", "Ø"=>"SH",
"Ù"=>"SHCH","Ü"=>"", "Þ"=>"YU", "ß"=>"YA",
"¿"=>"i", "¯"=>"Yi", "º"=>"ie", "ª"=>"Ye"
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
));
return $st;
}

View file

@ -296,7 +296,7 @@ class CDBTree
return $this->db->query($this->sql) or trigger_error("phpDbTree error: " . $this->db->error() , E_USER_ERROR);
}
// Οεπεμεωενθε βρευ δεςει βεςκθ β δπσγσώ βεςκσ
// Перемещение всех детей ветки в другую ветку
function moveChildren($ID, $newParentId)
{
@ -310,11 +310,11 @@ class CDBTree
if ($leftIdP < $leftId && $rightIdP > $rightId && $levelP < $level-1) {
// _update($this->table, array(), )
$this->sql = 'UPDATE ' . $this->table . ' SET '
// Μεν<EFBFBD>εμ σπξβενό
// Меняем уровень
. $this->level . '=' .
_case(_between($this->left, $leftId, $rightId),
$this->level . sprintf('%+d', -($level-1) +$levelP) , $this->level)
// Μεν<EFBFBD>εμ γπΰνθφϋ
// Меняем границы
. $this->left . '=' .
_case(_beetween($this->left, $rightId+1, $rightIdP-1), $this->left . '-' . $rightId-$leftId+1 ,
_case(_between($this->left, $leftId, $rightId), $this->left . '+' . ((($rightIdP-$rightId-$level+$levelP) /2) *2+$level-$levelP-1) , $this->left))

View file

@ -1,11 +1,11 @@
<?php
/**
* Сортировка дерева в представлении Nested Set
* Для дерева которое хранится в базе данных используя представление Nested Set нет возможности отсортировать элементы дерева по
* произвольному полю. Поэтому после извлечения дерева из базы данных оно преобразуется в обычное представление сортируется и обратно
* Сортировка дерева в представлении Nested Set
* Для дерева которое хранится в базе данных используя представление Nested Set нет возможности отсортировать элементы дерева по
* произвольному полю. Поэтому после извлечения дерева из базы данных оно преобразуется в обычное представление сортируется и обратно
*
* Пример:
* Пример:
* $sort = new NestedSetSort();
* $data = $sort->sortBy($data, 'name');
*/
@ -17,7 +17,7 @@ class NestedSetSort {
public function __construct() {
}
// Преобразуем Nested Set в дерево и сортируем
// Преобразуем Nested Set в дерево и сортируем
private function listTree(array $tree, $offset, $level) {
$result = array();
for ($i = $offset; $i < sizeof($tree); $i++) {
@ -38,19 +38,19 @@ class NestedSetSort {
return array($result, $i);
}
// Сравнение двух элементов
// Сравнение двух элементов
private function compare($a, $b) {
$a1 = $this->data[$a[0]][$this->sortBy];
$b1 = $this->data[$b[0]][$this->sortBy];
return strcmp($a1, $b1);
}
// Сортировка списка
// Сортировка списка
private function sortList(array &$list, $data) {
usort($list, array($this, 'compare'));
}
// Создает дерево в виде списка
// Создает дерево в виде списка
private function reorder(array $tree) {
foreach($tree as $node) {
$this->result[] = $this->data[$node[0]];
@ -68,7 +68,7 @@ class NestedSetSort {
return $order[0];
}
// Сортировка по заданному полю
// Сортировка по заданному полю
public function sortBy(array $data, $sortBy) {
$this->data = $data;
$this->sortBy = $sortBy;

View file

@ -3,13 +3,13 @@
require_once 'abstract.php';
/**
* Проверка на число
* Проверка на число
*/
class Rule_Alpha extends Rule_Abstract
{
public function getErrorMsg()
{
return "Поле должно содержать только буквы";
return "Поле должно содержать только буквы";
}
public function isValid(Collection $container, $status = null)

View file

@ -3,13 +3,13 @@
require_once 'abstract.php';
/**
* Проверка формата электронной почты
* Проверка формата электронной почты
*/
class Rule_Code extends Rule_Abstract
{
public function getErrorMsg()
{
return "Неправильно указан персональный код";
return "Неправильно указан персональный код";
}
function checkCode($code) {

View file

@ -3,7 +3,7 @@
require_once 'abstract.php';
/**
* Проверка формата даты
* Проверка формата даты
*/
class Rule_Count extends Rule_Abstract
{
@ -12,7 +12,7 @@ class Rule_Count extends Rule_Abstract
public function getErrorMsg()
{
return "Количество записей должно быть не менне {$this->size} и не более {$this->max}";
return "Количество записей должно быть не менне {$this->size} и не более {$this->max}";
}
function not_empty($s) {

View file

@ -3,7 +3,7 @@
require_once 'abstract.php';
/**
* Проверка формата даты
* Проверка формата даты
*/
class Rule_Date extends Rule_Abstract
{
@ -11,7 +11,7 @@ class Rule_Date extends Rule_Abstract
public function getErrorMsg()
{
return "Неверный формат даты";
return "Неверный формат даты";
}
public function isValid(Collection $container, $status = null)

View file

@ -3,13 +3,13 @@
require_once 'abstract.php';
/**
* Проверка формата электронной почты
* Проверка формата электронной почты
*/
class Rule_Email extends Rule_Abstract
{
public function getErrorMsg()
{
return "Неверный формат электронной почты";
return "Неверный формат электронной почты";
}
public function isValid(Collection $container, $status = null)

View file

@ -3,13 +3,13 @@
require_once 'abstract.php';
/**
* Проверка формата электронной почты
* Проверка формата электронной почты
*/
class Rule_EmailList extends Rule_Abstract
{
public function getErrorMsg()
{
return "Неверный формат электронной почты";
return "Неверный формат электронной почты";
}
public function isValid(Collection $container, $status = null) {

View file

@ -3,7 +3,7 @@
require_once 'abstract.php';
/**
* Проверка на равентство двух полей
* Проверка на равентство двух полей
*/
class Rule_Match extends Rule_Abstract
{
@ -11,7 +11,7 @@ class Rule_Match extends Rule_Abstract
public function getErrorMsg()
{
return "Поля не совпадают";
return "Поля не совпадают";
}
/* public function __construct($field, $refField, $errorMsg)

View file

@ -6,7 +6,7 @@ class Rule_Notnull extends Rule_Abstract
{
public function getErrorMsg()
{
return "Поле не должно быть пустым";
return "Поле не должно быть пустым";
}
public function isValid(Collection $container, $status = null)

View file

@ -3,13 +3,13 @@
require_once 'abstract.php';
/**
* Проверка на число
* Проверка на число
*/
class Rule_Numeric extends Rule_Abstract
{
public function getErrorMsg()
{
return "Значение поля должно быть числом";
return "Значение поля должно быть числом";
}
public function isValid(Collection $container, $status = null)

View file

@ -3,7 +3,7 @@
require_once 'abstract.php';
/**
* Проверка формата времени
* Проверка формата времени
*/
class Rule_Time extends Rule_Abstract
{
@ -11,7 +11,7 @@ class Rule_Time extends Rule_Abstract
public function getErrorMsg()
{
return "Неверный формат времени";
return "Неверный формат времени";
}
static function checktime($hour, $minute)

View file

@ -3,7 +3,7 @@
require_once 'abstract.php';
/**
* Проверка формата времени
* Проверка формата времени
*/
class Rule_Unique extends Rule_Abstract
{

View file

@ -1,17 +1,17 @@
<?php
/**
* Проверка коллекции
* Проверка коллекции
*/
class Validator
{
protected $chain = array(); // Массив правил
protected $errorMsg = array(); // Массив ошибок
protected $chain = array(); // Массив правил
protected $errorMsg = array(); // Массив ошибок
/**
* Добавление списка правил в специальном формате
* Добавление списка правил в специальном формате
* array(array('name' => fieldname, 'validate' => ruletext), ...)
* fieldname - Имя переменой для проверки
* ruletext - Описание правила см. формат правила ниже
* fieldname - Имя переменой для проверки
* ruletext - Описание правила см. формат правила ниже
*/
public function addRuleList(array $input)
{
@ -31,25 +31,25 @@ class Validator
'code' => 'Rule_Code'
);
// Разбор правила проверки
// Формат правила 'rule1|rule2,param1=value1|rule3,param1=value1,param2=value2'
// Разбор правила проверки
// Формат правила 'rule1|rule2,param1=value1|rule3,param1=value1,param2=value2'
foreach ($input as $value) {
// Список правил
// Список правил
if (! isset($value['validate'])) continue;
$rules = explode("|", $value['validate']);
foreach ($rules as $rule) {
// Список параметров правила
// Список параметров правила
$rule_param = explode(",", $rule);
$name = array_shift($rule_param);
if (isset($type[$name])) {
$constructor = $type[$name]; // "Rule_" . ucfirst($name)
$rule = new $constructor($value['name'], false); // Нужны шаблонные сообщения для правил
$rule = new $constructor($value['name'], false); // Нужны шаблонные сообщения для правил
if (isset($value['context'])) {
$rule->setContext($value['context']);
}
foreach ($rule_param as $param) {
// Имя и значение параметра
// Имя и значение параметра
list($name, $value) = explode("=", $param);
$rule->$name = $value;
}

View file

@ -2,14 +2,14 @@
class _View_Composite // AbstractCompositeView
{
protected $_section = array(); // Вложенные шаблоны
// Блоки
protected $_stylesheet = array(); // Массив стилей текущего шаблона
protected $_script = array(); // Массив скриптов текущего шаблона
protected $_section = array(); // Вложенные шаблоны
// Блоки
protected $_stylesheet = array(); // Массив стилей текущего шаблона
protected $_script = array(); // Массив скриптов текущего шаблона
protected $_scriptstring = array();
protected $_startup = array();
protected $_title = null; // Заголовок текущего шаблона
protected $_title = null; // Заголовок текущего шаблона
public $alias = array();
function __construct()
@ -17,10 +17,10 @@ class _View_Composite // AbstractCompositeView
}
/**
* Связывет переменную с вложенным шаблоном
* Связывет переменную с вложенным шаблоном
*
* @param string $section переменная шаблона
* @param CompositeView $view вложенный шаблон
* @param string $section переменная шаблона
* @param CompositeView $view вложенный шаблон
*/
public function setView($section, /*CompositeView*/ $view)
{
@ -38,9 +38,9 @@ class _View_Composite // AbstractCompositeView
}
/**
* Добавляет скипт к текущему шаблону
* Добавляет скипт к текущему шаблону
*
* @param string $name путь к скрипту
* @param string $name путь к скрипту
*/
public function addScript($name)
{
@ -48,9 +48,9 @@ class _View_Composite // AbstractCompositeView
}
/**
* Добавляет код скипта к текущему шаблону
* Добавляет код скипта к текущему шаблону
*
* @param string $name строка javascript кода
* @param string $name строка javascript кода
*/
public function addScriptRaw($name, $startup = false)
{
@ -62,9 +62,9 @@ class _View_Composite // AbstractCompositeView
}
/**
* Добавляет стили к текущему шаблону
* Добавляет стили к текущему шаблону
*
* @param string $name путь к стилю
* @param string $name путь к стилю
*/
public function addStyleSheet($name)
{
@ -72,9 +72,9 @@ class _View_Composite // AbstractCompositeView
}
/**
* Рекурсивно извлекает из значение свойства обьекта
* Рекурсивно извлекает из значение свойства обьекта
*
* @param string $list Имя свойства
* @param string $list Имя свойства
* @param boolean $flatten
*/
private function doTree($list, $flatten = true) {
@ -86,7 +86,7 @@ class _View_Composite // AbstractCompositeView
}
/**
* Массив имен файлов скриптов
* Массив имен файлов скриптов
*
* return array
*/
@ -105,7 +105,7 @@ class _View_Composite // AbstractCompositeView
}
/**
* Строка со скриптом
* Строка со скриптом
*
* @return string
*/
@ -124,7 +124,7 @@ class _View_Composite // AbstractCompositeView
}
/**
* Массив имен файлов стилей
* Массив имен файлов стилей
*
* return array
*/
@ -134,7 +134,7 @@ class _View_Composite // AbstractCompositeView
}
/**
* Обработка всех вложенных шаблонов
* Обработка всех вложенных шаблонов
*
* @return string
*/
@ -146,7 +146,7 @@ class _View_Composite // AbstractCompositeView
}
/**
* Установка заголовка шаблона
* Установка заголовка шаблона
*
* @param string $title
*/
@ -161,7 +161,7 @@ class _View_Composite // AbstractCompositeView
}
/**
* Общая строка заголовка
* Общая строка заголовка
*/
public function getTitle()
{
@ -183,7 +183,7 @@ class _View_Composite // AbstractCompositeView
$debug = ($debug) ? 'debug=1' : '';
$path = parse_url(WWW_PATH, PHP_URL_PATH);
$list = array_reverse($list);
// Группы нужно передвавать как параметр !!!
// Группы нужно передвавать как параметр !!!
$groups = array(
'table' => array($path . '/js/table.js', $path . '/js/listtable.js',
$path . '/js/page.js', $path . '/js/pagemenu.js'),
@ -208,7 +208,7 @@ class _View_Composite // AbstractCompositeView
}
/**
* Обработка шаблона
* Обработка шаблона
*
* @return string
*/
@ -218,7 +218,7 @@ class _View_Composite // AbstractCompositeView
$alias = $this->doTree('alias');
// require_once 'minify.php';
// Скрипты и стили
// Скрипты и стили
$this->set('scripts', array_unique($this->groupFiles($this->resolveAlias($alias, $this->getScripts()), false)));
$this->set('stylesheet', array_unique($this->groupFiles($this->resolveAlias($alias, $this->getStyleSheet()), false)));
@ -242,7 +242,7 @@ class _View_Composite // AbstractCompositeView
function loadImports($importFile)
{
// Подключение стилей и скриптов
// Подключение стилей и скриптов
if (file_exists($importFile)) {
$import = file_get_contents($importFile);
$files = explode("\n", $import);

View file

@ -1,6 +1,6 @@
<?php
// Класс отображения
// Класс отображения
// CompositeView !! Composite pattern
class View

View file

@ -3,7 +3,7 @@
require_once 'core/widgets/widget.php';
/**
* Класс для создания диалоговых окон, типа поиска и настройки таблицы
* Класс для создания диалоговых окон, типа поиска и настройки таблицы
*/
class Dialog extends Widget
{

View file

@ -3,7 +3,7 @@
require_once 'core/widgets/listtable.php';
/**
* Класс для генерации таблицы
* Класс для генерации таблицы
*/
class FileBrowser extends ListTable
{

View file

@ -4,7 +4,7 @@ require_once 'core/widgets/widget.php';
require_once 'core/functions.php';
/**
* Класс для генерации таблицы
* Класс для генерации таблицы
*/
class ListTable extends Widget // MenuTable
{
@ -18,7 +18,7 @@ class ListTable extends Widget // MenuTable
}
/**
* Устанавливает формат таблицы, структуру $header см. table.js
* Устанавливает формат таблицы, структуру $header см. table.js
*/
function setHeader($header)
{

View file

@ -1,28 +1,28 @@
<?php
/**
* Список ссылок
* Список ссылок
*/
class SimpleMenu
{
private $items = array();
/**
* Добавление элемента меню
* @param $href Обьект ссылки или строка, ссылка должна быть сгенерирована при генерации страницы, т.к может зависеть от параметров
* которые могут измениться при создании страницы, поэтому передается ссылка на функцию (отложенная/ленивая ссылка)
* @param $name Подпись к ссылке
* Добавление элемента меню
* @param $href Обьект ссылки или строка, ссылка должна быть сгенерирована при генерации страницы, т.к может зависеть от параметров
* которые могут измениться при создании страницы, поэтому передается ссылка на функцию (отложенная/ленивая ссылка)
* @param $name Подпись к ссылке
*/
function addMenuItem(/*. url .*/ $href,/*. string .*/ $name)
{
if($href) { // если ссылка пустая то элемент не добовляется
if($href) { // если ссылка пустая то элемент не добовляется
$this->items[] = array('href' => $href, 'name' => ucfirst($name)); // menu_item
}
}
/**
* Массив ссылок
* @return Массив
* Массив ссылок
* @return Массив
*/
function getItems()
{

View file

@ -4,7 +4,7 @@ require_once 'core/widgets/widget.php';
require_once 'core/widgets/menu.php';
/**
* <EFBFBD>מלןמםוםע הכ<EFBFBD> דוםונאצטט לום‏
* Компонент для генерации меню
*/
class PageMenu extends Widget
{

View file

@ -3,7 +3,7 @@
require_once 'core/widgets/widget.php';
/**
* Отображение постраничности
* Отображение постраничности
*/
class Pages extends Widget // Selector
{

View file

@ -18,8 +18,8 @@ class SearchDialog extends Dialog
function postMake()
{
$form = new TForm (); // Показывем форму
$form->addFieldList ($this->fields); // Разделить форму поиска и редактирования
$form = new TForm (); // Показывем форму
$form->addFieldList ($this->fields); // Разделить форму поиска и редактирования
$this->view->form = $form;
$this->view->action = $this->action;

View file

@ -3,7 +3,7 @@
require_once 'core/widgets/widget.php';
/**
* Компонент для генерации Дерева
* Компонент для генерации Дерева
*/
class Tree extends Widget
{
@ -11,7 +11,7 @@ class Tree extends Widget
{
$this->template = "tree";
}
// Добавление ветки дерева
// Добавление ветки дерева
}
?>

View file

@ -11,12 +11,12 @@ function forceUrl($name)
}
/**
* Класс для генерации и управления активными компонентами страницы
* Компонент состоит из следующих частей
* PHP - Управление компонентом (Генерация, Инициализация, Обработка событий)
* HTML - Необходимые шаблоны
* CSS - Стили
* Javascript - Клиентская часть управления компонентом
* Класс для генерации и управления активными компонентами страницы
* Компонент состоит из следующих частей
* PHP - Управление компонентом (Генерация, Инициализация, Обработка событий)
* HTML - Необходимые шаблоны
* CSS - Стили
* Javascript - Клиентская часть управления компонентом
*/
class Widget
{
@ -43,7 +43,7 @@ class Widget
}
/**
* Генерация кода инициализации компонента на стороне клиента
* Генерация кода инициализации компонента на стороне клиента
*/
public function getCodeBefore()
{
@ -69,7 +69,7 @@ class Widget
}
/**
* Генерация компонента
* Генерация компонента
*/
function make(Controller $parent)
{

View file

@ -6,7 +6,7 @@
.*/
/**
* Расширение класса ZipArchive с возможность архивирования директории
* Расширение класса ZipArchive с возможность архивирования директории
*/
class ZipFile extends ZipArchive
{