You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

203 lines
5.2 KiB
PHP

<?php
function pagesToJSON(PageArray $items) {
$a = array();
foreach($items as $item) {
if($item->template == "router"){
$a[] = routerToArray($item);
} else {
$a[] = pageToArray($item);
}
}
return json_encode($a);
}
function pagesToXml(PageArray $items) {
$a = array();
foreach($items as $item){
if($item->template == "router"){
$a[] = routerToArray($item);
} else {
$a[] = pageToArray($item);
}
}
$xml_data = new SimpleXMLElement('<?xml version="1.0"?><data></data>');
return arrayToXml($a, $xml_data);
}
function pageToYaml(PageArray $item){
$a = array();
foreach($items as $item){
if($item->template == "router"){
$a[] = routerToArray($item);
} else {
$a[] = pageToArray($item);
}
}
return yaml_emit($a);
}
function arrayToXml($data, &$xml_data){
foreach($data as $key => $value){
if(is_array($value)) {
if( is_numeric($key) ){
$key = 'item'.$key; //dealing with <0/>..<n/> issues
}
$subnode = $xml_data->addChild($key);
arrayToXml($value, $subnode);
} else {
$xml_data->addChild("$key",htmlspecialchars("$value"));
}
}
return $xml_data;
}
function routerToArray(Page $page){
$outputFormatting = $page->outputFormatting;
$page->setOutputFormatting(false);
$data = array(
"$page->title" => array(
'hersteller' => $page->parent->title,
'name' => $page->name,
'status' => $page->status,
'outdatet' => false,
'parent' => $page->parent->path,
'modified' => $page->modified,
'image' => ($page->image->first() ? array(
'data' => $page->image->first()->httpUrl,
'description' => $page->image->first()->description,
'modified' => $page->image->first()->modified,
'created' => $page->image->first()->created
) : array()),
'data' => array(
'title' => $page->title,
'description' => $page->body,
'images' => array(),
'hardware' => array(
'ram' => $page->ram,
'flash' => $page->flash,
'cpu' => "",
'price' => ""
),
'features' => array(),
'infoBlocks' => array(),
),
),
);
foreach($page->info_blocks as $block) {
if(empty($block->title)) continue;
$data[$page->title]['data']['infoBlocks'][$block->id] = array(
'title' => $block->title,
'body' => $block->body
);
}
$i = 0;
foreach($page->images as $image){
$data[$page->title]['data']['images'][$i] = array(
'data' => $image->httpUrl,
'description' => $image->description,
'modified' => $image->modified,
'created' => $image->created
);
$i++;
}
foreach($page->features as $feature){
array_push($data[$page->title]['data']['features'], $feature->name);
}
$page->setOutputFormatting($outputFormatting);
return $data;
}
function pageToArray(Page $page) {
$outputFormatting = $page->outputFormatting;
$page->setOutputFormatting(false);
$data = array(
'id' => $page->id,
'parent_id' => $page->parent_id,
'hersteller' => $page->parent->title,
'name' => $page->name,
'status' => $page->status,
'sort' => $page->sort,
'sortfield' => $page->sortfield,
'numChildren' => $page->numChildren,
'template' => $page->template->name,
'parent' => $page->parent->path,
'data' => array(),
);
foreach($page->template->fieldgroup as $field) {
if($field->type instanceof FieldtypeFieldsetOpen) continue;
$value = $page->get($field->name);
$data['data'][$field->name] = $field->type->sleepValue($page, $field, $value);
}
$page->setOutputFormatting($outputFormatting);
return $data;
}
$routers = $pages->find("template=router, sort=title");
if($input->urlSegment1 == "json"){
$useMain = false;
header("Content-type: application/json");
echo pagesToJSON($routers);
} else if ($input->urlSegment1 == "yaml"){
$useMain = false;
//var_dump(pageToYaml($routers));
phpinfo();
} else {
$output = '';
#include_once('scripts/import.inc');
#$today = strtotime('-1 day', $today);
#$h = $pages->find("template=hersteller");
#foreach($h as $p){
# $pages->delete($p, true);
# echo "Delete: $p->name <br>";
#}
foreach($routers as $router){
$title = $router->title;
$image = (count($router->image) ? $router->image->first()->size(300,300)->url : 'https://placehold.it/300x300');
$features = getTag($router->features, 2);
$output .= "<a href='{$router->httpUrl}'>
<article id='article-{$router->id}' class='large-3 small-6 columns'>
<img class='img-responsive panel-thumbnail' src='$image'></img>
<div class='panel thumb-body'>
<h5>$title</h5>
<ul class='inline-list'>
$features
</ul>
</div>
</article><!-- #article-7 -->
</a>";
}
$sidebar = renderSidebarFilter();
$content = "<div id='article' class='large-10 columns'>
<div class='row'>
$output
</div><!--# row -->
</div><!-- #article -->
$sidebar";
}