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(\Base $f3) { 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' ), 'background'=>array( 'until'=>$f3->get("CONTENT"), 'type'=>'pic' ), 'colors'=>array( 'until'=>$f3->get("CONTENT"), 'type'=>'txt' ) ) ) ); $folder->prepare_files(); if($folder->extras['colors']) { $folder->structs['default']['txt']['colors']=$folder->extras['colors']; } $folder->fill_content(); foreach($f3->get('siteColors') as $k=>$v){ $f3->set($k, array_key_exists($k,$folder->config) ? $folder->config[$k] : $v ); } $f3->set('hasBanner', array_key_exists('includeBanner',$folder->config) ? $folder->config['includeBanner'] : $f3->get('templateVars.includeBanner') ); if ($f3->get('hasBanner')) { $banner = new \Modules\CachedImage($folder->extras['banner']); $f3->set('banner',$banner->get_src(2000)); } if ($folder->extras['background'] && !$folder->config['supressBackground']) { $background = new \Modules\CachedImage($folder->extras['background']); $f3->set('backgroundImage',$background->get_src(3000)); } // $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("", $key, $value); // } // $str .= sprintf("%s",$tmp); // } // $str.="
%s
"; // $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("", $key, $value); // } // $str .= sprintf("%s",$tmp); // } // $str.="
%s
"; // $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; } }