Перекодировка в 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/) * Keeps track of variable contents when using grouping in a path (first/ and last/)
* *
* @package phptal * @package phptal
* @author Iván Montes <drslump@pollinimini.net> * @author Ivбn Montes <drslump@pollinimini.net>
*/ */
class PHPTAL_RepeatController_Groups { class PHPTAL_RepeatController_Groups {

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -27,7 +27,7 @@ class Stemmer {
static private function rv($word) static private function rv($word)
{ {
$vowels = array('à','å','è','î','ó','û','ý','þ','ÿ'); $vowels = array('а','е','и','о','у','ы','э','ю',');
$flag = 0; $flag = 0;
$rv = ''; $rv = '';
$start = ''; $start = '';
@ -59,7 +59,7 @@ class Stemmer {
static function has_aya ($word, $suffix) 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) static function cut_suffix ($word, $suffix)
@ -69,26 +69,26 @@ class Stemmer {
static private function step1($word) static private function step1($word)
{ {
$perfective1 = array('â', 'âøè', 'âøèñü'); $perfective1 = array('в', 'вши', 'вшись');
foreach ($perfective1 as $suffix) { foreach ($perfective1 as $suffix) {
if (self::has_suffix($word, $suffix) && self::has_aya ($word, $suffix)) { if (self::has_suffix($word, $suffix) && self::has_aya ($word, $suffix)) {
return self::cut_suffix($word, $suffix); return self::cut_suffix($word, $suffix);
} }
} }
$perfective2 = array('èâ','èâøè','èâøèñü','ûâøè','ûâøèñü'); $perfective2 = array('ив','ивши','ившись','ывши','ывшись');
foreach ($perfective2 as $suffix) { foreach ($perfective2 as $suffix) {
if (self::has_suffix($word, $suffix)) { if (self::has_suffix($word, $suffix)) {
return self::cut_suffix($word, $suffix); return self::cut_suffix($word, $suffix);
} }
} }
$reflexive = array('ñÿ', 'ñü'); $reflexive = array('ся', 'сь');
$word = self::substitute($word, $reflexive); $word = self::substitute($word, $reflexive);
$adjective = array('åå','èå','ûå','îå','èìè','ûìè','åé','èé','ûé','îé','åì','èì','ûì','îì','åãî','îãî','åìó','îìó','èõ','ûõ','óþ','þþ','àÿ','ÿÿ','îþ','åþ'); $adjective = array('ее','ие','ые','ое','ими','ыми','ей','ий','ый','ой','ем','им','ым','ом','его','ого','ему','ому','их','ых','ую','юю','ая','яя','ою','ею');
$participle2 = array('åì','íí','âø','þù','); $participle2 = array('ем','нн','вш','ющ',');
$participle1 = array('èâø','ûâø','óþù'); $participle1 = array('ивш','ывш','ующ');
foreach ($adjective as $suffix) { foreach ($adjective as $suffix) {
if (self::has_suffix($word, $suffix)) { if (self::has_suffix($word, $suffix)) {
$word = self::cut_suffix($word, $suffix); $word = self::cut_suffix($word, $suffix);
@ -101,17 +101,17 @@ class Stemmer {
} }
} }
$verb1 = array('ëà','íà','åòå','éòå','ëè','é','ë','åì','í','ëî','íî','åò','þò','íû','òü','åøü','ííî'); $verb1 = array('ла','на','ете','йте','ли','й','л','ем','н','ло','но','ет','ют','ны','ть','ешь','нно');
foreach ($verb1 as $suffix) foreach ($verb1 as $suffix)
if (self::has_suffix($word, $suffix) && self::has_aya ($word, $suffix)) if (self::has_suffix($word, $suffix) && self::has_aya ($word, $suffix))
return self::cut_suffix($word, $suffix); return self::cut_suffix($word, $suffix);
$verb2 = array('èëà','ûëà','åíà','åéòå','óéòå','èòå','èëè','ûëè','åé','óé','èë','ûë','èì','ûì','åí','èëî','ûëî','åíî','ÿò','óåò','óþò','èò','ûò','åíû','èòü','ûòü','èøü','óþ','); $verb2 = array('ила','ыла','ена','ейте','уйте','ите','или','ыли','ей','уй','ил','ыл','им','ым','ен','ило','ыло','ено','ят','ует','уют','ит','ыт','ены','ить','ыть','ишь','ую',');
foreach ($verb2 as $suffix) foreach ($verb2 as $suffix)
if (self::has_suffix($word, $suffix)) if (self::has_suffix($word, $suffix))
return self::cut_suffix($word, $suffix); return self::cut_suffix($word, $suffix);
$noun = array('à','åâ','îâ','èå','üå','å','èÿìè','ÿìè','àìè','åè','èè','è','èåé','åé','îé','èé','é','èÿì','ÿì','èåì','åì','àì','îì','î','ó','àõ','èÿõ','ÿõ','û','ü','èþ','üþ','þ','èÿ','üÿ','ÿ'); $noun = array('а','ев','ов','ие','ье','е','иями','ями','ами','еи','ии','и','ией','ей','ой','ий','й','иям','ям','ием','ем','ам','ом','о','у','ах','иях','ях','ы','ь','ию','ью','ю','ия','ья',');
foreach ($noun as $suffix) { foreach ($noun as $suffix) {
if (self::has_suffix($word, $suffix)) if (self::has_suffix($word, $suffix))
return self::cut_suffix($word, $suffix); return self::cut_suffix($word, $suffix);
@ -122,14 +122,14 @@ class Stemmer {
static private function step2($word) 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); $word = substr($word, 0, strlen($word)-CHAR_LENGTH);
return $word; return $word;
} }
static private function step3($word) static private function step3($word)
{ {
$vowels = array('à','å','è','î','ó','û','ý','þ','ÿ'); $vowels = array('а','е','и','о','у','ы','э','ю',');
$flag = 0; $flag = 0;
$r1 = ''; $r1 = '';
$r2 = ''; $r2 = '';
@ -152,7 +152,7 @@ class Stemmer {
if ($flag=1 && array_search(substr($r1,$i,CHAR_LENGTH), $vowels) === false) if ($flag=1 && array_search(substr($r1,$i,CHAR_LENGTH), $vowels) === false)
$flag=2; $flag=2;
} }
$derivational=array('îñò', 'îñòü'); $derivational=array('ост', 'ость');
foreach ($derivational as $suffix) foreach ($derivational as $suffix)
if (substr($r2,-(strlen($suffix))) == $suffix) if (substr($r2,-(strlen($suffix))) == $suffix)
$word=substr($word, 0, strlen($r2)-strlen($suffix)); $word=substr($word, 0, strlen($r2)-strlen($suffix));
@ -161,19 +161,19 @@ class Stemmer {
static private function step4($word) 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); $word=substr($word, 0, strlen($word)-CHAR_LENGTH);
else else
{ {
$superlative=array('åéø', 'åéøå'); $superlative=array('ейш', 'ейше');
foreach ($superlative as $suffix) foreach ($superlative as $suffix)
if (substr($word,-(strlen($suffix))) == $suffix) if (substr($word,-(strlen($suffix))) == $suffix)
$word = substr($word, 0, strlen($word) - strlen($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); $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 // 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) == 'ü') if (substr($word,-CHAR_LENGTH,CHAR_LENGTH) == 'ь')
$word=substr($word, 0, strlen($word)-CHAR_LENGTH); $word=substr($word, 0, strlen($word)-CHAR_LENGTH);
return $word; return $word;
} }

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,14 +1,14 @@
<?php <?php
function translit($st) { 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( $st = strtr($st, array(
"æ"=>"zh", "ö"=>"ts", "÷"=>"ch", "ø"=>"sh", "ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"ù"=>"shch","ü"=>"", "þ"=>"yu", "ÿ"=>"ya", "щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Æ"=>"ZH", "Ö"=>"TS", "×"=>"CH", "Ø"=>"SH", "Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Ù"=>"SHCH","Ü"=>"", "Þ"=>"YU", "ß"=>"YA", "Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"¿"=>"i", "¯"=>"Yi", "º"=>"ie", "ª"=>"Ye" "ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
)); ));
return $st; 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); return $this->db->query($this->sql) or trigger_error("phpDbTree error: " . $this->db->error() , E_USER_ERROR);
} }
// Οεπεμεωενθε βρευ δεςει βεςκθ β δπσγσώ βεςκσ // Перемещение всех детей ветки в другую ветку
function moveChildren($ID, $newParentId) function moveChildren($ID, $newParentId)
{ {
@ -310,11 +310,11 @@ class CDBTree
if ($leftIdP < $leftId && $rightIdP > $rightId && $levelP < $level-1) { if ($leftIdP < $leftId && $rightIdP > $rightId && $levelP < $level-1) {
// _update($this->table, array(), ) // _update($this->table, array(), )
$this->sql = 'UPDATE ' . $this->table . ' SET ' $this->sql = 'UPDATE ' . $this->table . ' SET '
// Μεν<EFBFBD>εμ σπξβενό // Меняем уровень
. $this->level . '=' . . $this->level . '=' .
_case(_between($this->left, $leftId, $rightId), _case(_between($this->left, $leftId, $rightId),
$this->level . sprintf('%+d', -($level-1) +$levelP) , $this->level) $this->level . sprintf('%+d', -($level-1) +$levelP) , $this->level)
// Μεν<EFBFBD>εμ γπΰνθφϋ // Меняем границы
. $this->left . '=' . . $this->left . '=' .
_case(_beetween($this->left, $rightId+1, $rightIdP-1), $this->left . '-' . $rightId-$leftId+1 , _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)) _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 <?php
/** /**
* Сортировка дерева в представлении Nested Set * Сортировка дерева в представлении Nested Set
* Для дерева которое хранится в базе данных используя представление Nested Set нет возможности отсортировать элементы дерева по * Для дерева которое хранится в базе данных используя представление Nested Set нет возможности отсортировать элементы дерева по
* произвольному полю. Поэтому после извлечения дерева из базы данных оно преобразуется в обычное представление сортируется и обратно * произвольному полю. Поэтому после извлечения дерева из базы данных оно преобразуется в обычное представление сортируется и обратно
* *
* Пример: * Пример:
* $sort = new NestedSetSort(); * $sort = new NestedSetSort();
* $data = $sort->sortBy($data, 'name'); * $data = $sort->sortBy($data, 'name');
*/ */
@ -17,7 +17,7 @@ class NestedSetSort {
public function __construct() { public function __construct() {
} }
// Преобразуем Nested Set в дерево и сортируем // Преобразуем Nested Set в дерево и сортируем
private function listTree(array $tree, $offset, $level) { private function listTree(array $tree, $offset, $level) {
$result = array(); $result = array();
for ($i = $offset; $i < sizeof($tree); $i++) { for ($i = $offset; $i < sizeof($tree); $i++) {
@ -38,19 +38,19 @@ class NestedSetSort {
return array($result, $i); return array($result, $i);
} }
// Сравнение двух элементов // Сравнение двух элементов
private function compare($a, $b) { private function compare($a, $b) {
$a1 = $this->data[$a[0]][$this->sortBy]; $a1 = $this->data[$a[0]][$this->sortBy];
$b1 = $this->data[$b[0]][$this->sortBy]; $b1 = $this->data[$b[0]][$this->sortBy];
return strcmp($a1, $b1); return strcmp($a1, $b1);
} }
// Сортировка списка // Сортировка списка
private function sortList(array &$list, $data) { private function sortList(array &$list, $data) {
usort($list, array($this, 'compare')); usort($list, array($this, 'compare'));
} }
// Создает дерево в виде списка // Создает дерево в виде списка
private function reorder(array $tree) { private function reorder(array $tree) {
foreach($tree as $node) { foreach($tree as $node) {
$this->result[] = $this->data[$node[0]]; $this->result[] = $this->data[$node[0]];
@ -68,7 +68,7 @@ class NestedSetSort {
return $order[0]; return $order[0];
} }
// Сортировка по заданному полю // Сортировка по заданному полю
public function sortBy(array $data, $sortBy) { public function sortBy(array $data, $sortBy) {
$this->data = $data; $this->data = $data;
$this->sortBy = $sortBy; $this->sortBy = $sortBy;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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