cyrilleinvalides/choupas/www/admin/app/load.php

252 lines
6.1 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?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;
}
}
}