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