|
|
|
|
|
|
|
|
<?php |
|
|
|
|
|
|
|
|
|
|
|
namespace Controller; |
|
|
|
|
|
|
|
|
|
|
|
class Page { |
|
|
|
|
|
|
|
|
|
|
|
public static $keyword = "page"; // variable in URL (query string) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function index(\Base $f3, $params) { |
|
|
|
|
|
///////////////////////////// |
|
|
|
|
|
// what page are we watching? |
|
|
|
|
|
$page = $params[self::$keyword]; |
|
|
|
|
|
$f3->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("<div class='post'>%s</div>", $str); |
|
|
|
|
|
$primary[$key] = sprintf("<div class=\"item %s %s\">%s</div>", $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("<div class=\"item %s %s\">%s</div>", $page ,$key,$str); |
|
|
|
|
|
} |
|
|
|
|
|
foreach($c1['pic'] as $key=>$file) { |
|
|
|
|
|
$primary[$key] = sprintf("<img src=\"$file\" />"); |
|
|
|
|
|
} |
|
|
|
|
|
foreach($c1['csv'] as $key=>$file) { |
|
|
|
|
|
$csv = new \Modules\Ography($file,TRUE); |
|
|
|
|
|
// $c1sv->filter_field("file"); |
|
|
|
|
|
$str="<table>"; |
|
|
|
|
|
foreach($csv->entries as $entry) { |
|
|
|
|
|
$tmp=""; |
|
|
|
|
|
foreach($entry as $key=>$value) { |
|
|
|
|
|
$tmp .= sprintf("<td class=\"%s\">%s</td>", $key, $value); |
|
|
|
|
|
} |
|
|
|
|
|
$str .= sprintf("<tr>%s</tr>",$tmp); |
|
|
|
|
|
} |
|
|
|
|
|
$str.="</table>"; |
|
|
|
|
|
$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("<div class='post'>%s</div>", $str); |
|
|
|
|
|
$secondary[$key] = sprintf("<div class=\"item %s %s\">%s</div>", $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("<div class=\"item %s %s\">%s</div>", $page ,$key,$str); |
|
|
|
|
|
} |
|
|
|
|
|
foreach($c2['pic'] as $key=>$file) { |
|
|
|
|
|
$secondary[$key] = sprintf("<img src=\"$file\" />"); |
|
|
|
|
|
} |
|
|
|
|
|
foreach($c2['csv'] as $key=>$file) { |
|
|
|
|
|
$csv = new \Modules\Ography($file,TRUE); |
|
|
|
|
|
// $c2sv->filter_field("file"); |
|
|
|
|
|
$str="<table>"; |
|
|
|
|
|
foreach($csv->entries as $entry) { |
|
|
|
|
|
$tmp=""; |
|
|
|
|
|
foreach($entry as $key=>$value) { |
|
|
|
|
|
$tmp .= sprintf("<td class=\"%s\">%s</td>", $key, $value); |
|
|
|
|
|
} |
|
|
|
|
|
$str .= sprintf("<tr>%s</tr>",$tmp); |
|
|
|
|
|
} |
|
|
|
|
|
$str.="</table>"; |
|
|
|
|
|
$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; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|