This commit is contained in:
Philipp Kraus 2014-11-11 16:06:56 +00:00
commit e30e29eef6

View file

@ -147,9 +147,10 @@ class Pico {
* Parses the file meta from the txt file header
*
* @param string $content the raw txt content
* @param array $metakeys key-value array for append header keys
* @return array $headers an array of meta values
*/
protected function read_file_meta($content)
protected function read_file_meta($content, $metakeys = array())
{
global $config;
@ -161,6 +162,7 @@ class Pico {
'robots' => 'Robots',
'template' => 'Template'
);
$headers = array_merge($headers, $metakeys);
// Add support for custom headers by hooking into the headers array
$this->run_hooks('before_read_file_meta', array(&$headers));
@ -217,9 +219,21 @@ class Pico {
{
global $config;
// create sorting options
$sortByDate = $order_by == 'date';
$sortByMeta = strpos($order_by, 'meta') !== false;
$sortMeta = null;
if ($sortByMeta)
{
$split = explode(".", $order_by);
if (count($split) != 2)
$sortByMeta = false;
else
$sortMeta = $split[1];
}
$pages = $this->get_files(CONTENT_DIR, CONTENT_EXT);
$sorted_pages = array();
$date_id = 0;
foreach($pages as $key=>$page){
// Skip 404
if(basename($page) == '404'. CONTENT_EXT){
@ -234,7 +248,7 @@ class Pico {
}
// Get title and format $page
$page_content = file_get_contents($page);
$page_meta = $this->read_file_meta($page_content);
$page_meta = $this->read_file_meta($page_content, empty($sortMeta) ? array() : array($sortMeta => $sortMeta));
$page_content = $this->parse_content($page_content);
$url = str_replace(CONTENT_DIR, $base_url .'/', $page);
$url = str_replace('index'. CONTENT_EXT, '', $url);
@ -252,15 +266,19 @@ class Pico {
// Extend the data provided with each page by hooking into the data array
$this->run_hooks('get_page_data', array(&$data, $page_meta));
if($order_by == 'date' && isset($page_meta['date'])){
$sorted_pages[$page_meta['date'].$date_id] = $data;
$date_id++;
}
else $sorted_pages[] = $data;
// run sorting
if ($sortByDate && isset($page_meta['date']))
$sorted_pages[$page_meta['date']] = $data;
elseif ($sortByMeta && isset($page_meta[$sortMeta]))
$sorted_pages[$page_meta[$sortMeta]] = $data;
else
array_push($sorted_pages, $data);
}
if($order == 'desc') krsort($sorted_pages);
else ksort($sorted_pages);
if ($order == 'desc')
krsort($sorted_pages);
else
ksort($sorted_pages);
return $sorted_pages;
}