<?php

namespace Modules;

class CConcert extends ContentType {

    public $keys = array(
        'DATE' => 'date',
        'TIME' => 'time',
        'TITLE'=> 'title',
        'DESCRIPTION' => 'description',
        'DESCRIPTION2' => 'description2',
        'LOCATION' => 'location',
        'MARKER' => 'marker'
    );
    public $values;
    protected $layout;
    protected $layouts = array(
        'toc' => 'view_in_toc',
        'archive' => 'view_archive',
        'archive_no_link' => 'view_archive_without_link',
        'with_marker' => 'view_with_marker',
        'short_reference' => 'only_name',
        'header' => 'view_as_page_header',
        'secondary' => 'rather_small',
        'name_as_link' => 'view_name_as_link'
    );
    
    function __construct($keys,$config) {
        parent::__construct($keys,$config);
    }

    

    function view_in_toc() {
        $v = (object) $this->values;
        $TS = strtotime($v->date);
        $href = $this->href;
        
        $date = sprintf("<span class=\"month\">%s</span>"
                        ."<span class=\"day-of-month\">%s</span>",
                        $this->month_name(date('n',$TS)),
                        date('d', $TS)
        );

        $description = sprintf("<h3><a href=\"/%s\">%s</a></h3>"
                               ."<span>%s</span>"
                               ."<footer>%s, %s</footer>",
                               $href,
                               $v->title,
                               $v->description,
                               $this->week_day_name(date('N',$TS)),
                               $v->time
        );

        if (is_object($v->location)) {
            $v->location->set_layout("humble_two_liner");
        }
                
        return sprintf("<div class=\"entry concert toc\">"
                       ."<div class=\"date\">%s</div>"
                       ."<div class=\"description\">%s</div>"
                       ."<div class=\"location\">%s</div>"
                       ."</div>",
                       $date,
                       $description,
                       $v->location
        );
    }
    
    function view_with_marker() {
        $v = (object) $this->values;
        $TS = strtotime($v->date);
        $href = $this->href;
        
        $date = sprintf("<span class=\"month\">%s</span>"
                        ."<span class=\"day-of-month\">%s</span>",
                        $this->month_name(date('n',$TS)),
                        date('d', $TS)
        );

        $description = sprintf("<h3><a href=\"/%s\">%s</a> <span class=\"marker\">%s</span></h3>"
                               ."<span>%s</span>"
                               ."<footer>%s, %s</footer>",
                               $href,
                               $v->title,
                               $v->marker,
                               $v->description,
                               $this->week_day_name(date('N',$TS)),
                               $v->time
        );

        if (is_object($v->location)) {
            $v->location->set_layout("humble_two_liner");
        }
                
        return sprintf("<div class=\"entry marker\">"
                       ."<div class=\"date\">%s</div>"
                       ."<div class=\"description\">%s</div>"
                       ."<div class=\"location\">%s</div>"
                       ."</div>",
                       $date,
                       $description,
                       $v->location
        );
    }

    function view_archive_without_link() {
        $v = (object) $this->values;
        $TS = strtotime($v->date);
        
        $date = sprintf("<span class=\"month\">%s</span>"
                        ."<span class=\"day-of-month\">%s</span>",
                        $this->month_name(date('n',$TS)),
                        date('d', $TS)
        );

        $description = sprintf("<h3>%s</h3>"
                               ."<span>%s</span>"
                               ."<footer>%s</footer>",
                               $v->title,
                               $v->description,
                               $v->description2
        );

        if (is_object($v->location)) {
            $v->location->set_layout("humble_two_liner");
        }
        
        return sprintf("<div class=\"entry concert archive\">"
                       ."<div class=\"date\">%s</div>"
                       ."<div class=\"description\">%s</div>"
                       ."<div class=\"location\">%s</div>"
                       ."</div>",
                       $date,
                       $description,
                       $v->location
        );
    }
    function view_archive() {
        $v = (object) $this->values;
        $TS = strtotime($v->date);
        
        $date = sprintf("<span class=\"month\">%s</span>"
                        ."<span class=\"day-of-month\">%s</span>",
                        $this->month_name(date('n',$TS)),
                        date('d', $TS)
        );

        $description = sprintf("<h3><a href=\"/%s\">%s</a></h3>"
                               ."<span>%s</span>"
                               ."<footer>%s</footer>",
                               $this->href,
                               $v->title,
                               $v->description,
                               $v->description2
        );

        if (is_object($v->location)) {
            $v->location->set_layout("humble_two_liner");
        }
        
        return sprintf("<div class=\"entry concert archive\">"
                       ."<div class=\"date\">%s</div>"
                       ."<div class=\"description\">%s</div>"
                       ."<div class=\"location\">%s</div>"
                       ."</div>",
                       $date,
                       $description,
                       $v->location
        );
    }

    function view_as_page_header() {
        $v = (object) $this->values;
        $TS = strtotime($v->date);

        $time = sprintf("%s, %s - %s",
                        $this->week_day_name(date('N',$TS)),
                        date('d.m.y',$TS),
                        $v->time
        );
        
        if (is_object($v->location)) {
            $v->location->set_layout('one_liner');
        }
        
        return sprintf("<div class=\"concert-info\">"
                       ."<h1>%s</h1>"
                       ."<h5>%s</h5>"
                       ."<span class=\"time\">%s</span>"
                       ."<span class=\"location\">%s</span>"
                       ."</div>",
                       $v->title,
                       $v->description,
                       $time,
                       $v->location
        );
    }

    function rather_small() {
        $v = (object) $this->values;
        $TS = strtotime($v->date);
        
        $v->location->set_layout("town");
        $town = strip_tags(sprintf("%s",$v->location));
        $v->location->set_layout('collected_entry');

        return sprintf("<div class=\"entry-small\">"
                       ."<h6 class=\"date-and-town\">%s %s<span class=\"time-in-header\"> - %s</span></h6>"
                       ."<div class=\"venue\">%s</div>" // this used to be a span
                       ."<h5 class=\"name\"><a href=\"/%s\">%s</a></h5>"
                       ."</div>",
                       date("d.m.", $TS),
                       $town,
                       $v->time,
                       $v->location,
                       $this->href,
                       $v->title
        );
    }
    
    function only_name() {
        $v = (object) $this->values;
        return sprintf("<h6><a href=\"/%s\">%s</a></h6>",
                       $this->href,
                       $v->title
        );
    }

    function view_name_as_link() {
        $v = (object) $this->values;
        return sprintf("<a href=\"/%s\">%s</a>",
                       $this->href,
                       $v->title
        );
    }

}
