Библиотека для cis, online, cms1

This commit is contained in:
Фёдор Подлеснов 2016-06-29 18:51:32 +03:00
commit 3c2e614d87
269 changed files with 39854 additions and 0 deletions

93
core/layout/layout.php Normal file
View file

@ -0,0 +1,93 @@
<?php
require_once 'core/functions.php';
// Ïåðåìåñòèòü â ôèëüòðû!!
/**
* Âûáîð ìàêåòà ñòðàíèöû.
* Âûáîð îôîðìëåíèÿ ñòðàíèöû îñóùåñòâëÿåòñÿ åñëè áûëî ñîâïàäåíèå ñ êàêèì ëèáî óñëîâèåì
*/
class LayoutManager extends Filter
{
// Ìàññèâ óñëîâèé ñ èõ ìàêåòàìè
protected $condition = array();
/**
* Ôóíêöèÿ êîòîðàÿ äîáàâëÿåò óñëîâèå äëÿ ïðîâåðêè ïàðàìåòðîâ $_GET
* @param $get array() | true Àññîöèàòèâíûé ìàññèâ êëþ÷åé è çíà÷åíèé äëÿ $_GET
*
* @example
* addConditionGet(array('module' => 'personal'), 'personal')
* addConditionGet(array('module' => 'login'), 'login')
*/
public function addConditionGet($get, Filter $layout)
{
$this->addCondition(rcurry(array($this, 'checkGet'), $get), $layout);
}
/**
* Óñëîâèå äëÿ àÿêñ çàïðîñîâ. Òîæå ñàìîå ÷òî è addConditionGet íî åùå ïðîâåðÿåòñÿ ÿâëÿåòñÿ ëè çàïðîñ ajax
*/
public function addConditionXHR($get, Filter $layout)
{
$this->addCondition(rcurry(array($this, 'checkXHR'), $get), $layout);
}
public function checkGet($request, $get)
{
if (is_array($get)) {
foreach ($get as $key => $value) {
if ($request->get($key) != $value) {
return false;
}
}
}
return true;
}
public function checkXHR($request, $get)
{
return $request->isAjax() && $this->checkGet($request, $get);
}
/**
* Äîáàâëÿåò åñëîâèå â îáùåì âèäå
* @parma $get function(HttpRequest) Ôóíêöèÿ
* @parma $layout Layout Ìàêåò
*/
public function addCondition($get, Filter $layout)
{
$this->condition [] = array($get, $layout);
}
/**
* Âûáèðàåò è ïðèìåíÿåò ìàêåò äëÿ ñòðàíèöû
*/
public function execute(Collection $request)
{
foreach ($this->condition as $condition) {
if (call_user_func($condition[0], $request)) {
$layout = $condition[1];
$view = $layout->execute($request);
if ($view instanceof View_Composite) {
echo $view->render();
} else {
echo $view;
}
return null;
}
}
}
}
/**
* Ñàìûé ïðîñòîé ìàêåò
*/
class LayoutNone extends Filter
{
function execute(Collection $request)
{
return $this->processor->execute($request);
}
}