252 lines
6.1 KiB
PHP
Executable File
252 lines
6.1 KiB
PHP
Executable File
<?php
|
||
|
||
// PHP Settings
|
||
ini_set('default_charset', 'UTF-8');
|
||
umask(0);
|
||
|
||
$here = realpath('.');
|
||
chdir(__DIR__);
|
||
|
||
include('libs/sense/Core.php');
|
||
include('libs/app/ETPA.php');
|
||
$conf = ETPA::init(array(
|
||
'root' => realpath('.'),
|
||
'conf' => 'databases/system.php',
|
||
'callback' => function ( $conf ) {
|
||
|
||
EngineSystem::set(
|
||
'back',
|
||
'Template',
|
||
$conf['filesystem']['templates'] . '/back',
|
||
Core::getCache() . '/templates/back',
|
||
1
|
||
);
|
||
|
||
EngineSystem::set(
|
||
'front',
|
||
'Template',
|
||
$conf['filesystem']['templates'] . '/front',
|
||
Core::getCache() . '/templates/front',
|
||
1
|
||
);
|
||
|
||
},
|
||
));
|
||
|
||
chdir($here);
|
||
|
||
|
||
function sanstr ( $title ) {
|
||
|
||
$title = trim($title);
|
||
$title = preg_replace('!»!', '', $title);
|
||
$title = preg_replace('!«!', '', $title);
|
||
$title = preg_replace('!\s++!', ' ', $title);
|
||
$title = preg_replace('!é|è!', 'e', $title);
|
||
$title = preg_replace('!à!', 'a', $title);
|
||
$title = preg_replace('!â!', 'a', $title);
|
||
$title = preg_replace('!ê!', 'e', $title);
|
||
$title = preg_replace('!\’!', '-', $title);
|
||
$title = preg_replace('!À!', 'A', $title);
|
||
$title = preg_replace('!î!', 'i', $title);
|
||
$title = preg_replace('!ë!', 'e', $title);
|
||
$title = preg_replace('!ö!', 'o', $title);
|
||
|
||
return $title;
|
||
|
||
}
|
||
|
||
function title_to_url ( $title ) {
|
||
|
||
$title = trim($title);
|
||
$title = preg_replace('!»!', '', $title);
|
||
$title = preg_replace('!«!', '', $title);
|
||
$title = preg_replace('!ë!', 'e', $title);
|
||
$title = preg_replace('!\s++!', '-', $title);
|
||
$title = preg_replace('!é|è!', 'e', $title);
|
||
$title = preg_replace('!ö!', 'o', $title);
|
||
$title = preg_replace('!à!', 'a', $title);
|
||
$title = preg_replace('!â!', 'a', $title);
|
||
$title = preg_replace('!ê!', 'e', $title);
|
||
$title = preg_replace('!\'!', '-', $title);
|
||
$title = preg_replace('!\"!', '-', $title);
|
||
$title = preg_replace('!\’!', '-', $title);
|
||
$title = preg_replace('!À!', 'A', $title);
|
||
$title = preg_replace('!î!', 'i', $title);
|
||
$title = preg_replace('!î!', 'i', $title);
|
||
|
||
return $title;
|
||
|
||
}
|
||
|
||
function makeURL ( $object, $type = null ) {
|
||
|
||
if ( !$object )
|
||
return '';
|
||
if ( !empty($object['url']) )
|
||
return preg_replace('!^\/!', '', $object['url']);
|
||
|
||
return preg_replace('!^\/!', '', sprinto(
|
||
$type['url'],
|
||
array_map(function ( $a ) { return is_string($a) ? title_to_url($a) : $a;}, $object)
|
||
));
|
||
|
||
}
|
||
|
||
function captcha ( $keep = false ) {
|
||
|
||
static $r, $a;
|
||
|
||
if ( !$r ) {
|
||
$r = scandir('libs/captcha');
|
||
array_shift($r);
|
||
array_shift($r);
|
||
}
|
||
if ( !$keep )
|
||
$a = array_rand($r);
|
||
return preg_replace('!\..*$!', '', $r[$a]);
|
||
}
|
||
|
||
function menutree ( $data ) {
|
||
$tree = array('elems' => array());
|
||
$treeId = array(0 => &$tree);
|
||
foreach ( $data as $elem ) {
|
||
$treeId[$elem['id']] = $elem;
|
||
$treeId[$elem['parent']]['elems'][] = &$treeId[$elem['id']];
|
||
}
|
||
return $tree['elems'];
|
||
}
|
||
|
||
function getPage ( $url ) {
|
||
|
||
$data = array();
|
||
$nsu = function ($a) { return preg_replace('!^/!', '', $a);};
|
||
foreach ( Service::get('invalides.pages.crud')->read() as $u => $d ) if ( $nsu($url) === $nsu($d['url']) ) {
|
||
$data['page'] = $d;
|
||
if ( $d['model'] ) {
|
||
$params = empty($d['params']) ? array() : json_decode($d['params'], 1);
|
||
$data['list'] = array_slice(
|
||
array_merge(
|
||
array_filter(
|
||
Service::get(sprintf('invalides.%1$s.crud', $d['model']))->read(
|
||
array_merge(
|
||
!empty($_GET['match']) ? $_GET['match'] : array(),
|
||
$d['query'] ? json_decode($d['query'], 1) : array(),
|
||
array('une' => 0, 'actif' => 1)
|
||
)
|
||
),
|
||
function ($e) { return
|
||
!array_key_exists('filtre', $_GET) ?
|
||
true :
|
||
in_array($e['filtre'], explode(',', $_GET['filtre']));
|
||
}
|
||
),
|
||
array()
|
||
),
|
||
!empty($_GET['start']) ? (int) $_GET['start'] : 0,
|
||
empty($params['size']) ? 8 : $params['size']
|
||
);
|
||
}
|
||
break;
|
||
}
|
||
return $data;
|
||
}
|
||
|
||
function getExtensionss ( $obj, $meta, $x ) {
|
||
|
||
if ( !$x )
|
||
return array();
|
||
$data = array();
|
||
foreach (json_decode($x['extensions'], 1) as $name => $extension ) {
|
||
$data[$name] = Service
|
||
::get(sprintf('invalides.%1$s.crud', $extension['model']))
|
||
->read(array_merge(
|
||
array_map(
|
||
function ($a) use ($obj) { return $obj[$a]; },
|
||
!empty($extension['binding']) ? $extension['binding'] : array()
|
||
),
|
||
!empty($extension['query']) ? $extension['query'] : array(),
|
||
array('actif' => 1)
|
||
));
|
||
}
|
||
|
||
return $data;
|
||
}
|
||
|
||
function getExtensions ( $obj, $meta, $metatype ) {
|
||
|
||
return getExtensionss($obj, $meta, Service::get('invalides.pages_medias.crud')->readObject(array(
|
||
'table' => $metatype,
|
||
'tableId' => $meta['id'],
|
||
)));
|
||
|
||
}
|
||
|
||
function getRedir ( $url ) {
|
||
|
||
$nsu = function ($a) { return preg_replace('!^/!', '', $a);};
|
||
foreach ( Service::get('invalides.redirections.crud')->read(array('actif' => 1)) as $k => $v )
|
||
if (
|
||
$v['rule'] === 'string' && $nsu($url) === $nsu($v['old']) ||
|
||
$v['rule'] === 'pattern' && preg_match($v['old'], $nsu($url))
|
||
) {
|
||
return $v;
|
||
}
|
||
return array();
|
||
|
||
}
|
||
|
||
|
||
function resp ($sys, $tpl, $data) {
|
||
|
||
header('Content-Type: text/html;charset=utf-8');
|
||
echo EngineSystem
|
||
::get($sys)
|
||
->load($tpl)
|
||
->run($data)
|
||
->getData('');
|
||
|
||
}
|
||
|
||
|
||
function getDetail ( $url ) {
|
||
|
||
$data = array();
|
||
$nsu = function ($a) { return preg_replace('!^/!', '', $a);};
|
||
foreach ( Service::get('invalides.pages_details.crud')->read() as $detail ) {
|
||
|
||
$lst = Service
|
||
::get(sprintf('invalides.%1$s.crud', $detail['model']))
|
||
->read(array_merge(
|
||
!empty($detail['query']) ? json_decode($detail['query'], 1) : array(),
|
||
array('actif' => 1)
|
||
));
|
||
|
||
foreach ( $lst as $k => $v )
|
||
if ( $nsu($url) === $nsu(makeURL($v, $detail)) ) {
|
||
|
||
$data['meta'] = $detail;
|
||
$data['page'] = $v;
|
||
|
||
$i = 1;
|
||
do {
|
||
$data['previous'] = !empty($lst[$k - $i]) ? $lst[$k - $i] : null;
|
||
$i++;
|
||
} while ( !empty($data['previous']['filtre']) && !empty($lst[$k - $i]) && $data['previous']['filtre'] !== $data['page']['filtre'] );
|
||
|
||
$i = 1;
|
||
do {
|
||
$data['next'] = !empty($lst[$k + $i]) ? $lst[$k + $i] : null;
|
||
$i++;
|
||
} while ( !empty($data['next']['filtre']) && !empty($lst[$k + $i]) && $data['next']['filtre'] !== $data['page']['filtre'] );
|
||
|
||
$data['extensions'] = getExtensions($v, $detail, 'pages_details');
|
||
|
||
return $data;
|
||
|
||
}
|
||
|
||
}
|
||
|
||
}
|