mini.test.ru/ 0000751 0001750 0001750 00000000000 12664565602 012765 5 ustar alexey alexey mini.test.ru/project/ 0000751 0001750 0001750 00000000000 12536057461 014430 5 ustar alexey alexey mini.test.ru/project/img/ 0000751 0001750 0001750 00000000000 12536057274 015206 5 ustar alexey alexey mini.test.ru/project/modules/ 0000751 0001750 0001750 00000000000 12543467767 016114 5 ustar alexey alexey mini.test.ru/project/modules/pub/ 0000751 0001750 0001750 00000000000 12572105231 016653 5 ustar alexey alexey mini.test.ru/project/modules/pub/test/ 0000751 0001750 0001750 00000000000 12572107607 017643 5 ustar alexey alexey mini.test.ru/project/modules/pub/test/view/ 0000775 0001750 0001750 00000000000 12613147726 020625 5 ustar alexey alexey mini.test.ru/project/modules/pub/test/view/intro.class.php 0000644 0001750 0001750 00000001717 12664565575 023615 0 ustar alexey alexey dom->getNode('testTextList')->count('text'))
// то листаем узлы text
foreach ($this->dom->getNode('testTextList')->getChildren('text') as $value) {
// и выводим на экран значение атрибут value
?>= $value->getAttr('value') ?>
}
}
}
mini.test.ru/project/modules/pub/test/controller/ 0000751 0001750 0001750 00000000000 12613145454 022024 5 ustar alexey alexey mini.test.ru/project/modules/pub/test/controller/intro.class.php 0000644 0001750 0001750 00000003567 12664565575 025033 0 ustar alexey alexey dom->addNode('testTextList');
// запрашиваем у модели необходимые данные
if (!$textList = document::create()->getTextList())
// если данных нет, то выводим 404 ошибку
return FALSE;
// если же данные были получены, то передаем их
// представлению
foreach ($textList as $text)
// внутри узла testTextList создаем еще один узел
// text
$testNode->addNode('text')
// помещаем в узел text атрибут document_id
// с значение из БД
->addAttr('document_id', $text['document_id'])
// помещаем в узел text атрибут value
// с значение из БД
->addAttr('value', $text['text'])
;
return TRUE;
}
}
mini.test.ru/project/modules/pub/test/model/ 0000775 0001750 0001750 00000000000 12613145162 020743 5 ustar alexey alexey mini.test.ru/project/modules/pub/test/model/document.class.php 0000664 0001750 0001750 00000001472 12664565575 024426 0 ustar alexey alexey query('SELECT * FROM rs_text')->fetch();
}
}
mini.test.ru/project/css/ 0000751 0001750 0001750 00000000000 12536057263 015220 5 ustar alexey alexey mini.test.ru/project/conf/ 0000751 0001750 0001750 00000000000 12600046100 015331 5 ustar alexey alexey mini.test.ru/project/conf/config.class.php 0000644 0001750 0001750 00000005441 12664565575 020463 0 ustar alexey alexey fetch())
// если списка нет, то выводим false
return FALSE;
// листаем список
foreach ($constantList as $constant) {
// пытаемся определить булевое ли значение
switch (mb_strtolower($constant['constant_value'])) {
// если значение равно 'true'
case 'true':
// приводим к булю
$value = TRUE;
break;
// если значение равно 'false'
case 'false':
// приводим к булю
$value = FALSE;
break;
// по умолчанию
default:
// сохраняем значение константы без изменений
$value = $constant['constant_value'];
break;
}
// регистрируем константу
define($constant['constant_name'], $value);
}
return TRUE;
}
}
mini.test.ru/project/view/ 0000751 0001750 0001750 00000000000 12543470125 015374 5 ustar alexey alexey mini.test.ru/project/view/pub/ 0000751 0001750 0001750 00000000000 12613150545 016161 5 ustar alexey alexey mini.test.ru/project/view/pub/home.class.php 0000644 0001750 0001750 00000001211 12664565575 020750 0 ustar alexey alexey getTpl('pub.test.intro')->run();
}
}
mini.test.ru/project/view/pub/main.class.php 0000644 0001750 0001750 00000002441 12664565575 020752 0 ustar alexey alexey
$this->getTpl('pub.home')->run();
?>
}
}
mini.test.ru/project/content/ 0000751 0001750 0001750 00000000000 12536057336 016103 5 ustar alexey alexey mini.test.ru/project/js/ 0000751 0001750 0001750 00000000000 12536057267 015050 5 ustar alexey alexey mini.test.ru/.htaccess 0000644 0001750 0001750 00000002236 12550736170 014564 0 ustar alexey alexey # стандартные настройки
# кодировка сервера
AddDefaultCharset utf-8
# запрещаем показывать содержимое директорий если там нет файла index.php[html][htm]
Options -Indexes
# базовый URL для преобразований
RewriteBase /
# включаем реврайт
RewriteEngine on
# правило редиректа с зеркала
# если к сайту обращаются через www.
RewriteCond %{HTTP_HOST} ^www.mini\.test\.ru
# редиректим на домен без www.
RewriteRule ^(.*)$ http://mini.test.ru/$1 [R=301,L]
# перенаправление на, физически существующую, папку или файл
# если в адресную строку вбит путь к файлу, то открываем этот файл
RewriteCond %{REQUEST_FILENAME} !-f
# если в адресную строку вбит путь к папке, то открываем эту папку
RewriteCond %{REQUEST_FILENAME} !-d
# передаем управление точки входа системы RS-MINI
RewriteRule ^.*$ index.php
mini.test.ru/index.php 0000644 0001750 0001750 00000002624 12664565575 014626 0 ustar alexey alexey
Copyright (C)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.
mini.test.ru/rs-mini/ 0000751 0001750 0001750 00000000000 12561733721 014336 5 ustar alexey alexey mini.test.ru/rs-mini/img/ 0000751 0001750 0001750 00000000000 12536057274 015116 5 ustar alexey alexey mini.test.ru/rs-mini/modules/ 0000751 0001750 0001750 00000000000 12536057253 016007 5 ustar alexey alexey mini.test.ru/rs-mini/modules/admin/ 0000751 0001750 0001750 00000000000 12536057245 017100 5 ustar alexey alexey mini.test.ru/rs-mini/modules/configurator/ 0000751 0001750 0001750 00000000000 12544051076 020505 5 ustar alexey alexey mini.test.ru/rs-mini/css/ 0000751 0001750 0001750 00000000000 12536057263 015130 5 ustar alexey alexey mini.test.ru/rs-mini/view/ 0000751 0001750 0001750 00000000000 12536057314 015307 5 ustar alexey alexey mini.test.ru/rs-mini/view/admin/ 0000751 0001750 0001750 00000000000 12604267753 016405 5 ustar alexey alexey mini.test.ru/rs-mini/view/admin/home.class.php 0000644 0001750 0001750 00000001171 12664565575 021167 0 ustar alexey alexey
Привет из кабинета администратора
}
}
mini.test.ru/rs-mini/view/admin/main.class.php 0000644 0001750 0001750 00000002445 12664565575 021170 0 ustar alexey alexey
$this->getTpl('admin.home')->run();
?>
}
}
mini.test.ru/rs-mini/view/configurator/ 0000751 0001750 0001750 00000000000 12536057314 020011 5 ustar alexey alexey mini.test.ru/rs-mini/core/ 0000751 0001750 0001750 00000000000 12664627137 015275 5 ustar alexey alexey mini.test.ru/rs-mini/core/helper.class.php 0000644 0001750 0001750 00000016006 12664575216 020400 0 ustar alexey alexey методИнструментария()
* ;
*
*/
class helper
{
/*
* объекты инструментария (синглтоны)
*
* @var - array
* @access - private
*/
private static $objectList = NULL;
/*
* список инструментария (псевдонимы (ключи)
* и имена классов)
*
* @var - array
* @access - private
*/
private static $aliasList = NULL;
/*
* по имени метода определяем объект класса в
* котором есть вызываемый метод после чего
* вызываем вызываемый метод из найденного объекта
*
* внимание. пользоваться только в том случае если
* метод имеет уникальное имя. в противном случае будет
* вызван метод из первого найденного объекта. в случае если
* уникальность не соблюдалась, можно воспользоваться методом
* get и принудительно указать псевдоним (задавался при
* регистрации инструментария) класса инструментария из которого
* нужно вызвать метод
*
* @access - public
* @return - результат отработки вызываемого метода или die
*
* @param string name - имя вызываемого метода
* @param array argumentList - список аргументов
*/
public static function __callStatic($name, $argumentList)
{
// если нет списка объектов
if (is_null(self::$aliasList))
// выводим еррор
self::getError('method ' . $name . ' is not found');
// листаем инструменты
foreach (self::$aliasList as $alias => $class)
// если вызываемый метод существует в данном объекте
if (method_exists($class, $name)) {
// проверяем существует ли объект в списке уже
// поднятых объектах
if (!isset(self::$objectList[$alias]))
// если нет, поднимаем объект
self::$objectList[$alias] = new self::$aliasList[$alias]();
// запускаем метод
return call_user_func_array(
array(
// объект
self::$objectList[$alias],
// метод объекта
$name
),
// список передаваемых параметров
$argumentList
);
}
// убиваем скрипт
self::getError('method ' . $name . ' is not found');
}
/*
* метод выбирает объект по алиасу (если такого
* объекта нет, поднимает его)
*
* @access - public
*
* @param string alias - псевдоним хелпера
*/
public static function get($alias)
{
// если объект существует в списке уже
// поднятых объектах
if (isset(self::$objectList[$alias]))
// вертаем сслыку на этот объект
return self::$objectList[$alias];
// если существует только имя класса
if (isset(self::$aliasList[$alias]))
// поднимаем объект сохраняя его в списке
return self::$objectList[$alias] = new self::$aliasList[$alias]();
// если система ничего не знает про существование
// запрашиваемого класса, то вертаем эррор
self::getError('class ' . $alias . ' is not found');
}
/*
* метод поднимает отдельный (независимый)
* объект класса
*
* @access - public
*
* @param string alias - псевдоним хелпера
*/
public static function create($alias)
{
// если система знает про сущ. запрашиваемого класса
if (isset(self::$aliasList[$alias]))
// поднимаем объект этого класса
return new self::$aliasList[$alias]();
// если система ничего не знает про существование
// запрашиваемого класса, то вертаем эррор
self::getError('class ' . $alias . ' is not found');
}
/*
* метод наполняет список именами классов инструментария
*
* @access - public
*
* @param string alias - псевдоним по которому будет доступен класс
* @param string class - имя класса
*/
public static function set($alias, $class)
{
self::$aliasList[$alias] = $class;
}
/*
* метод вертает ошибку
*
* @access - public
*
* @param string message - сообщение ошибки
*/
private static function getError($message)
{
// закрываем sql подключение
sql::close();
die('RS-MINI ERROR: ' . $message);
}
}
mini.test.ru/rs-mini/core/loader.class.php 0000644 0001750 0001750 00000003567 12664565575 020406 0 ustar alexey alexey controllerID = $connect['controller_id'];
// имя контроллера (из таблицы rs_controller)
$this->controllerName = $connect['controller_name'];
// строка с параметрами контроллера (из таблицы rs_controller)
$this->controllerParam = $connect['connect_value'];
// флаг позволяющий определить будет ли контроллер
// наследоваться или нет
$this->controllerInherit = $connect['connect_inherit'];
// вызов метода который сделает из строки параметров
// массив
$this->gatherParam();
}
/*
* метод устанавливаем значение в свойство $this->params
*
* @access - public
* @return - сам себя
*
*/
public function setParam($name, $value)
{
$this->paramList[trim($name)] = trim($value);
return $this;
}
/*
* метод преобразует строчку параметров в массив
*
* @access - private
*
*/
private function gatherParam()
{
if (empty($this->controllerParam))
return;
$paramList = explode("\n", $this->controllerParam);
foreach ($paramList as $row) {
$param = explode(':', trim($row));
$this->paramList[trim($param[0])] = trim($param[1]);
}
}
/*
* метод возвращает параметры
*
* @access - public
* @return - массив с параметрами или null
*/
public function getParams()
{
return (!empty($this->paramList)) ? $this->paramList : NULL;
}
/*
* метод возвращает параметр
*
* @access - public
* @return - строку с значением или null
*
* @param string name - имя параметра
*/
public function getParam($name)
{
return (isset($this->paramList[$name])) ? $this->paramList[$name] : NULL;
}
/*
* метод перезаписывает существующие параметры
*
* @access - public
*
* @param array params - массив с унаследованными параметрами
*/
public function unionParams($params)
{
// если параметров у контроллера нет
if (empty($this->paramList)) {
// просто сохраняем то что прислали
$this->paramList = $params;
return;
}
// если параметры есть, то листаем присланные
foreach($params as $inheritName => $inheritValue) {
// переменная для определения есть ли уже такой параметр
// у контроллера
$found = FALSE;
// листаем параметры контроллеров и сравниваем имена
foreach ($this->paramList as $name => $value)
// если имена равны
if ($inheritName == $name)
// переключаем переменную в состояние "найдено"
$found = TRUE;
// если присланный параметр небыл найден у контроллера
if ($found == FALSE)
// сохраняем его
$this->paramList[$inheritName] = $inheritValue;
}
}
}
mini.test.ru/rs-mini/core/init.php 0000644 0001750 0001750 00000001217 12664565575 016765 0 ustar alexey alexey call[$argument])) ? $this->call[$argument] : null;
break;
case 'set':
$this->call[$argument] = $arguments[0];
return $this;
break;
}
}
/*
* получаем шаблон, все контроллеры и их параметры открываемой страницы
*
* @access - public
* @return - массив с данными или false если ничего не найдено
*/
public function getPage()
{
// получаем адрес страницы
$uri = request::getHttpServer('REQUEST_URI')->toUri();
// если адрес равен null выкидываем false
if (is_null($uri))
return FALSE;
// просто бьем строку на массив
$uri = explode('/', $uri);
// удаляем последний элемент массива, так как он всегда пустой
unset($uri[(count($uri) - 1)]);
// получаем все открываемые узлы
// родитель по умолчанию NULL (главная страница)
$parent = NULL;
foreach ($uri as $key => $alias) {
// получаем страницу
if (!$page = $this->setAlias($alias)->setParent($parent)->getNode())
return FALSE;
// запоминаем ID страницы, это наш родитель в следующей итерации
$parent = $page['map_id'];
// создаем объект страницы
$this->pageList[] = new page($page);
}
return TRUE;
}
/*
* метод получения узла определенной ветки
*
* @access - private
* @return - массив с структурой сайта или false если ничего не найдено
*
* @param integer getParent() - родитель предшествующего узла
* @param string getAlias() - алиас узла
*/
private function getNode()
{
// с начало пытаемся получить страницу как статичную
$sql = ''
. 'SELECT'
. ' m.map_id AS map_id,'
. ' m.map_parent AS map_parent,'
. ' m.map_alias AS map_alias,'
. ' m.map_name AS map_name,'
. ' m.map_view AS map_view,'
. ' m.map_system AS map_system,'
. ' m.map_type AS map_type'
. ' FROM'
. ' rs_map AS m'
. ' WHERE'
. ' m.map_parent ' . ( (is_null($this->getParent())) ? 'IS NULL' : '= \'' . $this->getParent() . '\'' )
. ' AND m.map_alias ' . ( ($this->getAlias() == '') ? 'IS NULL' : '= \'' . $this->getAlias() . '\'' )
. ' AND m.map_type = \'static\''
;
// если выборка дала результат
if ($resultList = sql::query($sql)->fetch()) {
// запоминаем алиас динамичного узла.
// так как узел статичный, то мы записываем туда NULL
$resultList[0]['dynamic_alias'] = NULL;
// возвращаем результат
return $resultList[0];
}
// если статичный узел был не найден, пытаемся найти динамичный
$sql = ''
. 'SELECT'
. ' m.map_id AS map_id,'
. ' m.map_parent AS map_parent,'
. ' m.map_alias AS map_alias,'
. ' m.map_name AS map_name,'
. ' m.map_view AS map_view,'
. ' m.map_system AS map_system,'
. ' m.map_type AS map_type'
. ' FROM'
. ' rs_map AS m'
. ' WHERE'
. ' m.map_parent ' . ( (is_null($this->getParent())) ? 'IS NULL' : '= \'' . $this->getParent() . '\'' )
. ' AND m.map_type = \'dynamic\''
;
// если выборка не дала результата
if (!$resultList = sql::query($sql)->fetch())
// вертаем false
return FALSE;
// запоминаем динамичный алиас (реально записанный в БД)
$resultList[0]['dynamic_alias'] = $resultList[0]['map_alias'];
// перезаписываем псевдоним на тот что в адресной строке
$resultList[0]['map_alias'] = $this->getAlias();
// возвращаем результат
return $resultList[0];
}
}
mini.test.ru/rs-mini/core/dom.class.php 0000644 0001750 0001750 00000016652 12664565575 017716 0 ustar alexey alexey node запишится этот объект. если в качестве параемтера передено строка (т.е. имя нового узла)
* то на основе этого имени поднимется новая копия объекта класса dom
*
* @access - public
* @return - возвращает созданный узел
*
* @param string/object $data - данные содержащие имя нового узла или объект дома
*/
public function addNode($data)
{
$node = (!is_object($data)) ? new dom() : $data;
$this->node[] = (!is_object($data)) ? $node->setName($data) : $node;
return $node;
}
/*
* прописываем новый атрибут в текущий объект класса dom
*
* @access - public
* @return - сам себя
*
* @param string name - имя атрибута
* @param string value - значение атрибута
*/
public function addAttr($name, $value)
{
$this->attr[$name] = $value;
return $this;
}
/*
* получаем узел (объект) по имени из массива $this->node.
*
* @access - public
* @return - узел или FALSE
*
* @param string name - имя узла
*/
public function getNode($name)
{
// листаем дочернии узлы
foreach ($this->node as $node)
// если имя из объекта совпадает с искомым именем
if ($node->name == $name)
return $node;
// по умолчанию метод возвращает фалс
return FALSE;
}
/*
* получаем значение атрибута. Узел выберается с помощью метода getNode() или getChildren()
*
* @access - public
* @return - значение атрибута или FALSE в случае неудачи
*
* @param string name - имя атрибута
*/
public function getAttr($name)
{
return (isset($this->attr[$name])) ? $this->attr[$name] : FALSE;
}
/*
* получаем весь дом целиком в виде массива
*
* @access - public
* @return - массив с всеми узлами и их атрибутами
*
*/
public function getDom()
{
return $this->collectNode($this->node);
}
/*
* рекурсивно собираем узлы (вспомогательный метод метода getDom()) вертая массив вот такой структуры
* [0]
* [name] => имя,
* [attr] => массив атрибутов,
* [node] =>
* [0]
* [name] => имя,
* [attr] => массив атрибутов,
* [node] => array()
* [1]
* [name] => имя,
* [attr] => массив атрибутов,
* [node] =>
* [0]
* [name] => имя,
* [attr] => массив атрибутов,
* [node] => array()
*
* @access - private
* @return - массив с узлом
*
* @param array nodeList - список узлов (объектов dom)
*/
private function collectNode($nodeList)
{
$nodes = array();
foreach ($nodeList as $key => $node)
$nodes[] = array(
'name' => $node->name,
'attr' => $node->attr,
'node' => (count($node->node) > 0) ? $this->collectNode($node->node) : array()
);
return $nodes;
}
/*
* получаем массив с вложенными узлами (объекты) из текущего узла
*
* @access - public
* @return - массив с узлами или FALSE
*
* @param string name - имя узла
*/
public function getChildren($name)
{
// массив с выбранными узлами
$nodeList = array();
// листаем дочернии узлы
foreach ($this->node as $node)
// если имя из объекта совпадает с искомым именем
if ($node->name == $name)
// заполняем выборку узлом
$nodeList[] = $node;
// если небыло выбрано ни одного узла, то фалсе. в противном случае список узлов
return (empty($nodeList)) ? FALSE : $nodeList;
}
/*
* проверяем есть ли узлы в выбранном узле
*
* @access - public
* @return - число узлов если они есть, или FALSE если нет
*
* @param string name - имя узла
*/
public function count($name)
{
// массив с выбранными узлами
$nodeList = array();
// листаем дочернии узлы
foreach ($this->node as $node)
// если имя из объекта совпадает с искомым именем
if ($node->name == $name)
// заполняем выборку узлом
$nodeList[] = $node;
// если небыло выбрано ни одного узла, то фалсе. в противном случае кол-во узлов
return (empty($nodeList)) ? FALSE : count($nodeList);
}
/*
* метод устанавливает имя узла
*
* @access - private
* @return - сам себя
*
* @param string name - имя узла
*/
private function setName($name)
{
$this->name = $name;
return $this;
}
}
mini.test.ru/rs-mini/core/request.class.php 0000644 0001750 0001750 00000017404 12664565575 020623 0 ustar alexey alexey toUri();
// бьем строку на массив
$uri = explode('/', $uri);
// удаляем последний элемент массива, так как он всегда пустой
unset($uri[(count($uri) - 1)]);
// смысл в том что нам необходимо отсортировать пути к кабинетам от большего
// кол-ва узлов к меньшему.
// например если у нас имеется два кабинете
// 1. публичный /
// 2. кабинет администратора /admin/
// то видим что до публичного кабинета ОДИН узлел а до админского ДВА узла.
// стало быть если мы сейчас на странице /admin/document-a/ то скрипт должен
// понять что мы в админском кабинете, а не в публичном (в адресе к публичному
// кабинету ведь тоже присутствует ПЕРВЫЙ узел). если не отсортировать по
// кол-ву узлов, то скрипт может закончить обработку на публичном кабинете
// не сверяясь с админским. если же первым делом скрипт будет проверять тот
// кабинет в котором больше узлов, то ошибка выдать неверный кабинет упадет
// до нуля
// массив в который сложим кабинеты предварительно подсчитав кол-во узлов
$roomArr = array();
// получаем список кабинетов
if (!$roomList = self::getRoomList())
return FALSE;
// листаем кабинеты
foreach ($roomList as $roomKey => $room) {
// бьем путь до кабинета на массив
$path = explode('/', $room['room_path']);
// наполняем массив кабинетом с подсчетом количества узлов до него
$roomArr[] = array(
'count' => count($path),
'room' => $roomList[$roomKey]
);
}
// сортируем кабинеты по полю count от большего к меньшему
usort($roomArr, array('\core\room', 'fSort'));
// листаем кабинеты
foreach ($roomArr as $roomKey => $room) {
// делаем из пути массив
$path = explode('/', $room['room']['room_path']);
// удаляем последний элемент массива, так как он всегда пустой
unset($path[(count($path) - 1)]);
// вытаскиваем из пути к странице столько же элементов сколько до кабинета
// массив проверки
$checkPath = array();
// листаем узлы вбитые в адресную строку
foreach ($uri as $key => $alias)
// если ключ (0,1,2,3...n) меньше кол-ву узлов в кабинете
if ($key < count($path))
// заполняем стек узлом из адресной строки
$checkPath[] = $alias;
// сравниваем пути
if ($path == $checkPath) {
// если они равны, значит кабинет мы нашли, запоминаем его
self::$room = $roomArr[$roomKey]['room'];
// назначаем константы для быстрого доступа
// основываясь на имя секции
define('IMG', '/' . self::getSection() . '/img/'); // путь к папке img кабинета
define('JS', '/' . self::getSection() . '/js/'); // путь к папке js кабинета
define('CSS', '/' . self::getSection() . '/css/'); // путь к папке css кабинета
// контент всегда лежит в проекте
define('CONTENT', DIR_PROJECT . '/content/'); // полный путь к папке контента
define('SHORT_CONTENT', SHORT_DIR_PROJECT . '/content/'); // короткий путь к папке контента
break;
}
}
return (is_null(self::$room)) ? FALSE : TRUE;
}
/*
* статичный пользовательский метод для сортировки массива
*
* @access - public
*
*/
public static function fSort($a, $b)
{
if ($a['count'] == $b['count'])
return 0;
return ($a['count'] > $b['count']) ? -1 : 1;
}
/*
* метод получает список кабинетов
*
* @access - public
* @return - массив с кабинетами
*
*/
private static function getRoomList()
{
$sql = ''
. ' SELECT'
. ' r.room_id AS room_id,'
. ' r.room_name AS room_name,'
. ' r.room_folder AS room_folder,'
. ' r.room_section AS room_section,'
. ' r.room_path AS room_path,'
. ' r.room_access AS room_access'
. ' FROM'
. ' rs_room AS r'
;
return sql::query($sql)->fetch();
}
}
mini.test.ru/rs-mini/core/page.class.php 0000644 0001750 0001750 00000031653 12664565575 020051 0 ustar alexey alexey pageID = $page['map_id'];
// псевдоним страницы (из таблицы rs_map или из урла
// зависит от того статиная (из таблицы rs_map)
// или динамичная (из урла) страница)
$this->pageAlias = $page['map_alias'];
// имя страницы (из таблицы rs_map)
$this->pageName = $page['map_name'];
// шаблон страницы (из таблицы rs_map)
$this->pageView = $page['map_view'];
// родитель страницы (из таблицы rs_map)
$this->pageParent = $page['map_parent'];
// статичная или динамичная страница (из таблицы rs_map)
$this->pageType = $page['map_type'];
// реальный псевдоним страницы (сохраненный в
// поле map_alias таблицы rs_map). Если страница статичная
// то в ключе dynamic_alias массива $page находится NULL
$this->pageDynamicAlias = $page['dynamic_alias'];
// получаем контроллеры страницы
$this->controllerList = $this->getController();
}
/*
* метод получаем контроллеры страницы
* задача сформировать вот такой массив:
* [top]
* [0] => object core\controller
* [1] => object core\controller
* [2] => object core\controller
* [center]
* [0] => object core\controller
* [1] => object core\controller
* [2] => object core\controller
* [bottom]
* [0] => object core\controller
* [1] => object core\controller
* [2] => object core\controller
*
*
* @access - private
* @return - массив с контроллерами или false
*
*/
private function getController()
{
// получаем список подключенных контроллеров к станице
$sql = ''
. 'SELECT'
. ' connect.connect_id AS connect_id,'
. ' connect.connect_value AS connect_value,'
. ' connect.connect_block AS connect_block,'
. ' connect.connect_inherit AS connect_inherit,'
. ' connect.connect_position AS connect_position,'
. ' connect.map_id AS map_id,'
. ' connect.controller_id AS controller_id,'
. ' controller.controller_name AS controller_name'
. ' FROM'
. ' rs_connect AS connect,'
. ' rs_controller AS controller'
. ' WHERE'
. ' connect.map_id = \'' . $this->pageID . '\''
. ' AND connect.controller_id = controller.controller_id'
. ' ORDER BY connect_position'
;
// если список подключений пуст
if (!$connectList = sql::query($sql)->fetch())
// выходим из метода
return FALSE;
// формируем массив из объектов контроллеров
// список конроллеров
$controllerList = array();
// блоки к которым цепляются контроллеры
$blocks = array('top', 'center', 'bottom');
// листаем блоки
foreach ($blocks as $block)
// листаем список подключений
foreach ($connectList as $connect)
// если блок подключения равен блоку итерации
if ($connect['connect_block'] == $block)
// поднимаем объект контроллера на основе данных подключения
$controllerList[$block][] = new controller($connect);
return $controllerList;
}
/*
* метод перезаписывает существующий контроллер вместе с параметрами
*
* @access - public
*
* @param array inhControllerList - массив с унаследованными контроллерами
*/
public function unionController($inhControllerList)
{
// блоки к которым цепляются контроллеры
$blocks = array('top', 'center', 'bottom');
// если у страницы вообще нет контроллеров, то просто сохраняем наследованные контроллеры на этой страницы
if (!$this->controllerList) {
// прежде чем сохранять, необходимо контроллерам отметить, что они наследники
// листаем блоки
foreach ($blocks as $block)
// если среди наследуемых контроллеров есть данный блок
if (isset($inhControllerList[$block]))
// листаем контроллеры этого блока
foreach ($inhControllerList[$block] as $inhKey => $inhController)
// отмечаем у копии объекта контроллера что он наследуемый
$inhControllerList[$block][$inhKey]->inheritFlag = TRUE;
// записываем список контроллеров в свойство
$this->controllerList = $inhControllerList;
return;
}
// если у страницы есть контроллеры
// листаем блоки
foreach ($blocks as $block)
// если среди наследуемых контроллеров есть данный блок
if (isset($inhControllerList[$block])) {
// массив с новым порядком контроллеров
$newList = array();
// листаем список наследуемых контроллеров
foreach ($inhControllerList[$block] as $inhKey => $inhController)
// ищем есть ли на страницы такой же подключенный контроллеры
// если на странице есть листаемый блок контроллеров
if (isset($this->controllerList[$block])) {
// флаг позволяющий определить был ли найден контроллер
$found = FALSE;
// листаем контроллеры страницы
foreach ($this->controllerList[$block] as $controllerKey => $controller)
// если id контроллера страницы совпадает с id контроллера наследника
if ($controller->controllerID == $inhController->controllerID) {
// отмечаем флаг, что контроллер найден
$found = TRUE;
// отмечаем что данный контроллер унаследован
$this->controllerList[$block][$controllerKey]->inheritFlag = TRUE;
// запускаем метод который сольет параметры наследуемого контроллера и параметры
// контроллера подключенного на этой странице
$this->controllerList[$block][$controllerKey]->unionParams($inhController->getParams());
// записываем контроллер в новый блок
$newList[] = $this->controllerList[$block][$controllerKey];
}
// если контроллер не был найден
if ($found === FALSE) {
// говорим что он унаследован
$inhController->inheritFlag = TRUE;
// записываем контроллер в новый блок
$newList[] = $inhController;
}
}
// если на странице нет листаемого блока контроллеров
else {
// отмечаем унаследованный контроллер как унаследованный
$inhController->inheritFlag = TRUE;
// записываем контроллер в новый блок
$newList[] = $inhController;
}
// теперь нужно в массив $newList записать контроллеры страницы, которых
// в массиве $newList еще нет
// если на странице есть данный блок контроллеров
if (isset($this->controllerList[$block]))
// листаем контроллеры страницы
foreach ($this->controllerList[$block] as $controllerKey => $controller) {
// флаг позволяющий определить был ли найден контроллер
$found = FALSE;
// листаем контроллеры лежащие в массиве $newList
foreach ($newList as $new)
// если id контроллеров совпадают
if ($new->controllerID == $controller->controllerID)
// переключаем флаг
$found = TRUE;
// если контроллер среди $newList не найден
if ($found === FALSE)
// то записываем его туда
$newList[] = $controller;
}
// полностью заменяем блок контроллеров страницы
$this->controllerList[$block] = $newList;
}
}
}
mini.test.ru/rs-mini/core/abstractmodel.class.php 0000644 0001750 0001750 00000017242 12664565575 021757 0 ustar alexey alexey setName('имя')->insert();
*
* В методе insert() модели "a" имя можно будет получить вот так:
*
* $name = $this->getName();
*
*
*
* @access - public
* @return - сам себя или сохраненное значение (все зависит от
* того set или get метод был вызван)
*
* @param string name - имя вызываемого метода
* @param array arguments - присланные аргументы в вызываемый метод
*/
public function __call($name, $arguments)
{
// ниже в комментариях приведен конкретный пример с методами getName() и setName().
// предаваемое значение - "Алексей"
// приводим имя вызываемого метода к нижнему регистру
// в случае если вызван метод setName(), то получим setname
// в случае если вызван метод getName(), то получим getname
$name = mb_strtolower($name);
// делим имя вызываемого метода на части
// в случае если вызван метод setName(), то получим set и name
// в случае если вызван метод getName(), то получим get и name
// в $action помещаем set или get
$action = mb_substr($name, 0, 3);
// в $argument помещаем часть имени метода (при вызове
// getName() или setName() частью будет - name)
$argument = mb_substr($name, 3, mb_strlen($name)-1);
// в зависимости от того что в $action
switch($action) {
case 'get':
// возвращаем из свойства call значение (в нашем примере из ключа name
// получим значение "Алексей", если это значение записали путем вызова
// метода setName() с значением "Алексей")
return (isset($this->call[$argument])) ? $this->call[$argument] : NULL;
break;
case 'set':
// сохраняем в свойстве call значение (в нашем примере в ключ name
// свойства call будет передано значение "Алексей")
$this->call[$argument] = $arguments[0];
// возвращаем объект модели
return $this;
break;
}
}
/*
* метод поднимает объект базы данных и исполняет запрос
*
* @access - protected
* @return - объект класса sql
*
* @param string sql - скуль запрос
*/
protected function query($sql)
{
// исполняем запрос, и помещаем объект в свойство
$obj = sql::query($sql);
// запоминаем результат запроса
$this->setNumRows($obj->numRows)
->setAffectedRows($obj->affectedRows)
->setInsertID($obj->insertID)
;
// возвращаем объект
return $obj;
}
}
mini.test.ru/rs-mini/core/application.class.php 0000644 0001750 0001750 00000037315 12664565575 021441 0 ustar alexey alexey getPage())
self::notFound();
// мероприятия по объеденению унаследованных контроллеров с конечной страницей
self::unionRun();
// запускаем контроллеры
self::controllerRun();
}
/*
* метод стартует контроллеры
*
* @access - private
*
*/
private static function controllerRun()
{
// создаем узел хлебных крошек
$breadCrumbs = self::$dom->addNode('breadcrumbs');
// массив с псевдонимами страниц для формирования пути
$path = array();
// массив с контроллерами которые необходимо будет запустить
$runList = array();
// листаем страницы
foreach (self::$map->pageList as $key => $page) {
// список блоков контроллеров
$blockList = array(
'top',
'center',
'bottom'
);
// создаем узел в хлебных крошках
$pageNode = $breadCrumbs->addNode('page');
// созраняем название страницы
$caption = $page->pageName;
// сохраняем псевдоним в массиве пути
$path[] = $page->pageAlias;
// если на странице контроллеры
if ($page->controllerList) {
// листаем все возможные блоки
foreach ($blockList as $blockAlias) {
// листаем контроллеры страницы
foreach ($page->controllerList as $block => $controllerList) {
// если листаемый блок совпадает с блоком контроллеров страницы - то разбираем контроллеры данного блока
if ($blockAlias == $block) {
// сначало проглядываем наследуемые контроллеры (потом подключенные на прямую)
for ($inh = 0; $inh <= 1; $inh++) {
// листаем контроллеры
foreach ($controllerList as $controller) {
// проверка наследия (первая итерация ищет только наследованные контроллры)
// при $inh == 0 запускаются только унаследованные контроллеры
// при $inh == 1 запускаются подключенные на прямую
if ($controller->inheritFlag != ( ($inh == 0) ? TRUE : FALSE ))
continue;
// пропускаем отключенные контроллеры
if ($controller->getParam('active') == 'disable')
continue;
// подставляем в путь допол. папку
// бьем имя контроллера на массив
$controllerClass = explode('.', $controller->controllerName);
// отрезаем два первых элемента массива
$controllerSlice = array_slice($controllerClass, 2);
// во второй элемент массива вставляем слово controller
$controllerClass[2] = 'controller';
// вертаем в массив оставшие элементы после отработки функции array_slice
for ($i = 0; isset($controllerSlice[$i]); $i++)
$controllerClass[($i + 3)] = $controllerSlice[$i];
// тем самым получаем полный путь к классу
// пример: было pub.test.intro а стало pub\test\controller\intro
$controllerClass = implode('\\', $controllerClass);
// записываем в параметры инфу о странице
$controller
->setParam('page_id', $page->pageID)
->setParam('page_alias', $page->pageAlias)
->setParam('page_parent', $page->pageParent)
;
// создаем объект контроллера
$obj = new $controllerClass(self::$dom, $controller->getParams());
// регистрируем динамичный алиас и его значение в
// статичном свойстве абстрактного класса контроллера
// если реальный алиас страницы row_id а в адресную строку было вбито
// /123/ то в свойстве dynamicValue абстракного класса abstractcontroller
// будет зарегистрирован ключ row_id с значением 123
// dynamicValue['row_id'] = '123'
if ($page->pageType == 'dynamic')
$obj->setDynamicValue($page->pageDynamicAlias, $page->pageAlias);
// проверяем на валидацию
if (!$obj->validate())
self::notFound();
// получаем заголовок
$caption = $obj->getCaption($caption);
// если листается последняя страница
if ($key == (count(self::$map->pageList) - 1))
// сохраняем данные для запуска (запуск ниже)
$runList[] = array(
'obj' => $obj,
'controller' => $controller
);
}
}
}
}
}
}
// атрибуты хлебных крошек
$pageNode->addAttr('caption', $caption);
$pageNode->addAttr('path', (count($path) > 1) ? implode('/', $path) . '/' : '/');
// если листается последняя страница, запускаем контроллеры страницы и шаблонизатор
if ($key == (count(self::$map->pageList) - 1)) {
// объявляем констранту с заголовком открытой страницы
define('PAGECAPTION', $caption);
// массив с шаблонами контроллеров
$tplList = array();
// если в массиве runList есть контроллеры для запуска
if (!empty($runList)) {
// листаем контроллеры
foreach ($runList as $data) {
// стартуем контроллер
if (!$data['obj']->run())
self::notFound();
// если среди парамеров есть параметр шаблона
if(!is_null($data['controller']->getParam('tpl'))) {
// пропускаем отключенные контроллеры
if ($data['controller']->getParam('tpl') == 'disable')
continue;
// подставляем в путь доп папку
// бьем имя шаблона на массив
$tplClass = explode('.', $data['controller']->getParam('tpl'));
// отрезаем первые два элемента
$tplSlice = array_slice($tplClass, 2);
// в третий элемент массива вставляем слово view
$tplClass[2] = 'view';
// вертаем в массив оставшие элементы после отработки функции array_slice
for ($i = 0; isset($tplSlice[$i]); $i++)
$tplClass[($i + 3)] = $tplSlice[$i];
// тем самым получаем полный путь к классу
// пример: было pub.test.intro а стало pub\test\view\intro
$tplClass = implode('\\', $tplClass);
// создаем объект в массиве ключем которого является
// имя шаблона
$tplList[$data['controller']->getParam('tpl')] = new $tplClass(self::$dom);
}
}
}
// запускаем шаблонизатор
self::viewRun($tplList, $page);
}
}
}
/*
* метод стартует шаблонизатор
*
* @access - private
*
* @param array tplList - массив с шаблонами
* @param object page - объект последний (открываемой) страницы
*/
private static function viewRun($tplList, $page)
{
// запускаем представление
view::create($tplList, $page->pageView, self::$dom)->run();
}
/*
* метод добавляет унаследованные контроллеры в вложенные страницы
*
* @access - private
*
*/
private static function unionRun()
{
// массив с контроллерами которые отмечены как наследуемые.
// при первой итерации массив пуст
$inherit = array();
// листаем страницы
for ($key = 0; isset(self::$map->pageList[$key]); $key++) {
// если массив хранящий контроллеры которые передаются по наследству не пуст
// то запускаем спец метод который запишет унаследованные контроллеры
// в обрабатываемую страницу (при первой итерации этот массив пуст)
if (!empty($inherit)) {
// сливаем контроллеры родительской страницы и текцщей
self::$map->pageList[$key]->unionController($inherit);
// сбрасываем массив
$inherit = array();
}
// если на странице есть контроллеры
if (self::$map->pageList[$key]->controllerList)
// листаем блоки контроллеров
foreach (self::$map->pageList[$key]->controllerList as $block => $controllerList)
// листаем контроллеры блока
foreach ($controllerList as $controller) {
// если итерация страниц не последняя (т.е. если страница не последняя)
if ($key != (count(self::$map->pageList) - 1))
// если контроллер отмечен как наследуемый
if ($controller->controllerInherit == 'true')
// заносим объект контроллера в массив inherit
// для передачи этого объекта по наследству в
// дочернию страницу
$inherit[$block][] = $controller;
}
}
}
/*
* метод выводит 404 ошибку
*
* @access - private
*/
private static function notFound()
{
header('HTTP/1.0 404 Not Fount');
die('404 error');
}
}
mini.test.ru/rs-mini/core/sql.class.php 0000644 0001750 0001750 00000014361 12664565575 017731 0 ustar alexey alexey 0 все ОК. == -1 ошибка, или значение по умолчанию. == 0 запрос UPDATE ничего не обновил
*
* @var - integer
* @access - public
*/
public $affectedRows = -1;
/*
* автоматически генерируемый ID, последнего запроса
*
* @var - integer
* @access - public
*/
public $insertID = 0;
/*
* указатель на выборку
*
* @var - integer
* @access - private
*/
private $resourceQuery = FALSE;
/*
* кол-во сделанных селект запросов
*
* @var - integer
* @access - public
*/
public static $selectCount = 0;
/*
* указатель на соединение с MySQL
*
* @var - resource
* @access - private
*/
private static $resource = FALSE;
/*
* подключаемся к БД
*
* @access - public
*
*/
public static function setConnect()
{
// подключаемся к БД
self::$resource = @mysqli_connect(
DB_SERVER, // сервер
DB_USER, // юзер
DB_PASS, // пароль юзера
DB_NAME // база данных
);
// если подключение прошло с ошибкой
if (!self::$resource)
die('Ошибка ' . CMS . ' v' . VERSION . ': При подключение к базе данных произошла ошибка');
// устанавливаем кодировку базы
mysqli_set_charset(self::$resource, "utf8");
}
/*
* создание объекта и исполнение sql запроса
* \core\sql::query('запрос')
*
* @access - public
* @return - объект sql класса
*
* @param sql - SQL запрос
*/
public static function query($sql)
{
// поднимаем объект класса sql
$obj = new sql();
// исполняем запрос
$obj->resourceQuery = mysqli_query(self::$resource, $sql);
// наполняем данные
// кол-во выбранных строк с помощью SELECT
$obj->numRows = @mysqli_num_rows($obj->resourceQuery);
// кол-во затронутых строк последним INSERT, UPDATE, REPLACE или DELETE запросом
$obj->affectedRows = @mysqli_affected_rows(self::$resource);
// автоматически генерируемый ID, последнего запроса
$obj->insertID = @mysqli_insert_id(self::$resource);
// вертаем объект (для того что бы можно было
// исполнить метод fetch(), или достучаться
// до свойств с информацией)
return $obj;
}
/*
* метод получает выборку запроса
* \core\sql::query('запрос')->fetch()
*
* @access - public
* @return - ассоциативный массив с выбранными строками
* из БД или FALSE если ничего небыло выбранно
*
*/
public function fetch()
{
// массив для хранения строк выборки
$resultList = array();
// ключ для формирование строки
$i = 0;
// если ресурс запроса пуст
if ($this->resourceQuery === FALSE)
// выводим false
return FALSE;
// +1 к кол-ву select запросов сделанных системой RS-MINI
self::$selectCount++;
// листаем строки выбокри
while ($row = mysqli_fetch_assoc($this->resourceQuery)) {
// листаем поля строки
foreach ($row as $key => $value)
// заполняем массив
$resultList[$i][$key] = $value;
// переключаем строку
$i++;
}
// если выборка пустая
if (empty($resultList)) {
// пытаемся получить ошибку
$error = mysqli_error(self::$resource);
// если нет ошибок, то селект запрос просто вернул 0 строк
if (empty($error))
// вертаем false
return FALSE;
// если ошибка есть, то показываем ее на экран
echo $error;
// закрываем подключение
self::close();
// убиваем скрипт
die();
}
// возвращаем выборку
return $resultList;
}
/*
* метод закрывает подключение к БД
*
* @access - public
* @return - true или false
*
*/
public static function close()
{
return mysqli_close(self::$resource);
}
}
mini.test.ru/rs-mini/core/abstractcontroller.class.php 0000644 0001750 0001750 00000011607 12664565575 023041 0 ustar alexey alexey dom = $dom;
$this->paramList = $paramList;
}
/*
* метод возвращает заголовок страницы
*
* @access - public
*
* @param string caption - системный заголовок
*/
public function getCaption($caption)
{
return $caption;
}
/*
* метод позволит проверить некоторые данные на валидацию.
* запускается для каждого контроллера (за исключением отключенных)
*
* @access - public
* @return - true или false (404 ошибка)
*
*/
public function validate()
{
return TRUE;
}
/*
* запуск контроллера. основной метод контроллера.
* если не создать подобный метод (полиморфизм) в дочернем классе
* контроллер выдаст 404-ую ошибку
*
* @access - public
* @return - true или false (404 ошибка)
*
*/
public function run()
{
return FALSE;
}
/*
* метод запоминает значение динамичной страницы.
* отрабатывает при сборке контроллеров в приложении
* системы. необходим, что бы псевдоним динамической страницы
* можно было получить из любого подключенного контроллера
*
* @access - public
* @return - значение дин страницы
*
* @param string name - имя параметра
*/
public function setDynamicValue($name, $value)
{
self::$dynamicValue[$name] = $value;
}
/*
* метод получает значение динамичной страницы по имени
*
* @access - protected
* @return - значение дин страницы
*
* @param string name - имя параметра
*/
protected function getDynamicValue($name)
{
return (isset(self::$dynamicValue[$name])) ? self::$dynamicValue[$name] : NULL;
}
/*
* метод получает значение параметра по имени.
* если значение содержит запятые, то оно (значение) вернется не
* в виде строки, а в виде массива
*
* @access - protected
* @return - значение параметра
*
* @param string name - имя параметра
*/
protected function getParam($name)
{
if (!isset($this->paramList[$name]))
return NULL;
if (!preg_match('/[\,]+/', $this->paramList[$name]))
return $this->paramList[$name];
$params = explode(',', $this->paramList[$name]);
foreach ($params as $key => $param)
$params[$key] = trim($param);
return $params;
}
}
mini.test.ru/rs-mini/core/view.class.php 0000644 0001750 0001750 00000017041 12664565575 020102 0 ustar alexey alexey tplList = $tplList;
// имя шаблона узла
$this->tplPage = $tplPage;
// дом
$this->dom = $dom;
}
/*
* запуск шаблонизатора
*
* @access - public
*
*/
public function run()
{
// выгрузка на страницу дома
if (DOM === TRUE && !is_null(request::getHttpGet('dom')->getData())) {
echo ''
.''
.''
.''
.''
.''. CMS .' v'. VERSION .' DOM'
.''
.''
;
echo $this->getData($this->dom->getDom());
echo ''
.''
.''
;
// закрываем подключение к БД
sql::close();
die();
}
// или получаем страницу
$this->getPage();
}
/*
* получаем страницу (подключаем все нужные шаблоны)
*
* @access - private
*
*/
private function getPage()
{
// подготавливаем путь к шаблону кабинета
$mainTplClass = '\view\\' . room::getFolder() .'\\'.'main';
// формируем имя шаблона кабинета
$mainName = room::getFolder() . '.' . 'main';
// подготавливаем путь к шаблону ветки
$rootTplClass = '\view\\'.(str_replace('.', '\\', $this->tplPage));
// регистрируем в стеке шаблонов шаблон кабинета
$this->tplList[$mainName] = new $mainTplClass($this->dom);
// регистрируем в стеке шаблонов шаблон ветки
$this->tplList[$this->tplPage] = new $rootTplClass($this->dom);
// переносим все объекты шаблонов в статичное свойство
$this->tplList[$mainName]->setTplList($this->tplList);
// закрываем подключение к БД
sql::close();
// стартуем главный шаблон
$this->tplList[$mainName]->getTpl($mainName)->run();
}
/*
* метод позволяет выгрузить дом на страницу (для разработчика).
* Отладочный метод
*
* @access - private
* @return - string с html кодом
*
* @param array data - массив с домом
*/
private function getData($data)
{
// строка с html кодом дерева
$result = '';
// если массив с узлами не пустой
if (!empty($data))
// листаем его
foreach ($data as $key => $node) {
// формируем кусочек хтмла (имя узла)
$row = '';
}
// если массив с узлами пустой, формируем сообщение об этом
else
$result = 'Нет данных';
// возвращаем html
return $result;
}
}
mini.test.ru/rs-mini/core/abstractview.class.php 0000644 0001750 0001750 00000005650 12664565575 021631 0 ustar alexey alexey dom = $dom;
}
/*
* метод объявляет массив с объектами шаблонов
* вызывается один раз из view.class.php
*
* @access - public
*
* @param array tplList - массив с шаблонами
*/
public function setTplList(&$tplList)
{
self::$tplList = $tplList;
}
/*
* метод получает шаблон по имени
*
* @access - public
* @return - сам себя
*
* @param string name - имя шаблона
*/
public function getTpl($name)
{
// сбрасываем свойства выбора шаблона
$this->currentTpl = FALSE;
// если вызываемый шаблон существует
if (isset(self::$tplList[$name]))
// перенесим его объект в свойство выбора
$this->currentTpl = self::$tplList[$name];
return $this;
}
/*
* запуск шаблона (!!!вызов производить только через этот метод)
*
* @access - public
*
*/
public function run()
{
// если выбор был сделан
if ($this->currentTpl)
// получаем ответ шаблона
$this->currentTpl->getResponse();
// в противном случае ничего не произойдет
}
/*
* получить ответ шаблона
*
* @access - public
*
*/
public function getResponse()
{
}
}
mini.test.ru/rs-mini/lib/ 0000751 0001750 0001750 00000000000 12536057233 015103 5 ustar alexey alexey mini.test.ru/rs-mini/js/ 0000751 0001750 0001750 00000000000 12536057267 014760 5 ustar alexey alexey