set('page', $page);
$f3->set('bodyClass',"page-$page");
switch ($page) {
case 'home':
default:
$f3->mset(array(
'template'=>'tpl/index.html',
'templateContent'=>'maincontent.html'
));
self::folder2();
break;
}
}
////////////////
// interfaces //
////////////////
function home() {
$f3 = \Base::instance();
self::index($f3, array('page'=>'home'));
}
function secondLevel(\Base $f3,$params) {
self::index($f3, array('page'=>$params['level1']."/".$params['level2']));
}
function thirdLevel(\Base $f3,$params) {
self::index($f3, array('page'=>$params['level1']."/".$params['level2']."/".$params['level3']));
}
function fourthLevel(\Base $f3,$params) {
self::index($f3, array('page'=>$params['level1']."/".$params['level2']."/".$params['level3']."/".$params['level4']));
}
//////////////////
// main program //
//////////////////
function folder2() {
$f3 = \Base::instance();
$page = $f3->get('page');
$f3->set('current_page_folder', $f3->get('CONTENT').$page."/");
$folder = new \Modules\FilesInFolders(
$f3->get('current_page_folder'),
array(
'content'=>array(
'secondary'=>'secondary',
'zzz'=>'hidden',
'unpublish'=>'hidden'
),
'keyfiles'=>array(
'banner'=>array(
'until'=>$f3->get("CONTENT"),
'type'=>'pic'
))
)
);
$folder->prepare_files();
$folder->fill_content();
// set template variables
$banner = new \Modules\CachedImage($folder->extras['banner']);
$f3->set('banner',$banner->get_src(2000));
// $f3->set('background',$background);
$f3->set('content', implode("\n", $folder->content['default']));
$f3->set('secondary_content', implode("\n", $folder->content['secondary']));
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////
function folder() {
$f3 = \Base::instance();
$page = $f3->get('page');
$folder = $f3->get("CONTENT").$page."/";
$EXT=array(
'pic'=>array( 'jpg', 'jpeg', 'png', 'svg' ),
'tpl'=>array( 'html', 'htm', 'tpl' ),
'txt'=>array( 'txt', 'text', 'md' ),
'csv'=>array( 'csv' )
);
$background = "";
$banner = "";
$c1 = array(
// 'background'=>'',
'pic'=>array(),
'txt'=>array(),
'tpl'=>array(),
'csv'=>array()
);
$c2 = array(
// 'background'=>'',
'pic'=>array(),
'txt'=>array(),
'tpl'=>array(),
'csv'=>array()
);
$primary = array();
$secondary = array();
// collect contents of folder into an organised array
if(!is_dir($folder)) $folder=$f3->get("CONTENT")."../404/";
$ls = scandir($folder);
foreach ($ls as $key=>$f) {
if(!strncmp($f,'.',1)) continue; // ignore hidden files
$ex=explode(".", $f);
$ext=end($ex);
if(in_array(strtolower($ext), $EXT['pic'])) {
if($ex[0]=='background') {
$background=pic_cache($folder.$f,836);
} elseif($ex[0]=='banner') {
$banner=$folder.$f;
} elseif($ex[0]=='secondary') {
$c2['pic'][$ex[1]] = $folder.$f;
} else {
$c1['pic'][$ex[0]] = $folder.$f;
}
} elseif(in_array(strtolower($ext), $EXT['txt'])) {
if($ex[0]=='secondary') {
$c2['txt'][$ex[1]] = $folder.$f;
} else {
$c1['txt'][$ex[0]] = $folder.$f;
}
} elseif(in_array(strtolower($ext), $EXT['tpl'])) {
if($ex[0]=='secondary') {
$c2['tpl'][$ex[1]] = $folder.$f;
} else {
$c1['tpl'][$ex[0]] = $folder.$f;
}
} elseif (in_array(strtolower($ext), $EXT['csv'])) {
if($ex[0]=='secondary') {
$c2['csv'][$ex[1]] = $folder.$f;
} else {
$c1['csv'][$ex[0]] = $folder.$f;
}
} else { }
}
if(!$banner) {
$banner = self::search_up("banner", array($folder,$f3->get("CONTENT")), $EXT['pic']);
}
// compose elements based on the organised array
$md = new \Parsedown();
foreach($c1['txt'] as $key=>$file) {
$str = file_get_contents($file);
$str = self::linkify($str);
$str = self::get_config_from_content($str);
$str = $md->text($str);
$str = sprintf("
%s
", $str);
$primary[$key] = sprintf("%s
", $page,$key,$str);
}
foreach($c1['tpl'] as $key=>$file) {
$str = file_get_contents($file);
$str = \Template::instance()->render($file);
$str = self::linkify($str);
if(array_key_exists($key,$c1['pic'])) {
$str = sprintf("%s\n%s",
\Modules\Pictures::makeImageLink($c1['pic'][$key]),
$str);
unset($c1['pic'][$key]);
}
$primary[$key] = sprintf("%s
", $page ,$key,$str);
}
foreach($c1['pic'] as $key=>$file) {
$primary[$key] = sprintf("");
}
foreach($c1['csv'] as $key=>$file) {
$csv = new \Modules\Ography($file,TRUE);
// $c1sv->filter_field("file");
$str="";
foreach($csv->entries as $entry) {
$tmp="";
foreach($entry as $key=>$value) {
$tmp .= sprintf("%s | ", $key, $value);
}
$str .= sprintf("%s
",$tmp);
}
$str.="
";
$primary[$key] = $str;
}
foreach($c2['txt'] as $key=>$file) {
$str = file_get_contents($file);
$str = self::linkify($str);
$str = self::get_config_from_content($str);
$str = $md->text($str);
$str = sprintf("%s
", $str);
$secondary[$key] = sprintf("%s
", $page,$key,$str);
}
foreach($c2['tpl'] as $key=>$file) {
$str = file_get_contents($file);
$str = \Template::instance()->render($file);
$str = self::linkify($str);
if(array_key_exists($key,$c2['pic'])) {
$str = sprintf("%s\n%s",
\Modules\Pictures::makeImageLink($c2['pic'][$key]),
$str);
unset($c2['pic'][$key]);
}
$secondary[$key] = sprintf("%s
", $page ,$key,$str);
}
foreach($c2['pic'] as $key=>$file) {
$secondary[$key] = sprintf("");
}
foreach($c2['csv'] as $key=>$file) {
$csv = new \Modules\Ography($file,TRUE);
// $c2sv->filter_field("file");
$str="";
foreach($csv->entries as $entry) {
$tmp="";
foreach($entry as $key=>$value) {
$tmp .= sprintf("%s | ", $key, $value);
}
$str .= sprintf("%s
",$tmp);
}
$str.="
";
$secondary[$key] = $str;
}
// set template variables
$f3->set('banner',$banner);
$f3->set('background',$background);
$f3->set('content', implode("\n", $primary));
$f3->set('secondary_content', implode("\n", $secondary));
}
////////////////
// recursions //
////////////////
function search_up($key,$paths,$ext) {
$return = "";
if(count($paths) == 2) {
$current = $paths[0];
$last_try = $paths[1];
$ls=scandir($current);
foreach($ls as $f) {
if(!strncmp($f,'.',1)) continue; // ignore hidden files
$ex=explode(".", $f);
if(in_array(strtolower(end($ex)),$ext)) {
if($ex[0]==$key) {
$return = $current.$f;
break;
}
}
}
}
if ($return) {
return $return;
} elseif($current == $last_try) {
return false;
} else {
$p = explode('/',$current);
array_pop($p);
array_pop($p);
return self::search_up($key,array(implode("/",$p)."/",$last_try),$ext);
}
}
///////////////////////
// Utility functions //
///////////////////////
function linkify($string) {
$pattern = "/\s@(\w+)[=]([\w,]+)\s/";
$count = 0;
$new = preg_replace_callback
($pattern,
function($m){
$f3 = \Base::instance();
return $f3->get('SITE_URL')
.$f3->alias($m[1],self::$keyword."=".$m[2])
;},
$string);
return $new;
}
function get_config_from_content($string) {
$f3 = \Base::instance();
$f = 0;
$pattern = "/#\+(\w+):\s?(.*)/";
$f = preg_match_all($pattern, $string,$matches,PREG_PATTERN_ORDER);
foreach($matches[0] as $match) {
$string = str_replace($match,"",$string);
}
foreach($matches[1] as $key => $match) {
$f3->set('content_config_'.$match,$matches[2][$key]);
}
return $string;
}
public static function check_folder_for_backgroundimage($folder){
$EXT=array(
'pic'=>array( 'jpg', 'jpeg', 'png' ),
'tpl'=>array( 'html', 'htm', 'tpl' ),
'txt'=>array( 'txt', 'text', 'md' )
);
$ls = scandir($folder);
$background = false;
foreach ($ls as $key=>$f) {
if(!strncmp($f,'.',1)) continue;
$ex=explode(".", $f);
$ext=array_pop($ex);
if(in_array(strtolower($ext), $EXT['pic'])) {
if($ex[0]=='background') {
$background=pic_cache($folder.$f,836);
break;
}
}
}
return $background;
}
}