Пример #1
0
    function generate()
    {
        $params = array();
        foreach ($this->parameters as $key => $val) {
            if ($key === 'tree') {
                continue;
            }
            $params[] = "'{$key}' => \"" . $this->attr_parse($val) . '"';
        }
        $params = join(',', $params);
        if (!Koken::$main_load_token && !isset($this->parameters['source']) && isset($this->parameters['infinite'])) {
            $infinite = $this->attr_parse($this->parameters['infinite']);
            Koken::$main_load_token = Koken::$tokens[0];
            if (isset($this->parameters['infinite_toggle'])) {
                $infinite_selector = $this->attr_parse($this->parameters['infinite_toggle']);
                unset($this->parameters['infinite_toggle']);
            } else {
                $infinite_selector = '';
            }
            unset($this->parameters['infinite']);
        } else {
            $infinite = 'false';
            $infinite_selector = '';
        }
        $main = '$value' . Koken::$tokens[0];
        $curl = '$curl' . Koken::$tokens[0];
        $page = '$page' . Koken::$tokens[0];
        $options = '$options' . Koken::$tokens[0];
        $collection_name = '$collection' . Koken::$tokens[0];
        $paginate = '$paginate' . Koken::$tokens[0];
        $custom_source_var = '$source' . Koken::$tokens[0];
        $custom_source = $custom_source_var . ' = ' . (isset($this->parameters['source']) ? 'true' : 'false');
        $load_url = '$url' . Koken::$tokens[0];
        $load_url_var = '\\$url' . Koken::$tokens[0];
        $top_token = Koken::$tokens[0];
        return <<<DOC
<?php

\tlist({$load_url}, {$options}, {$collection_name}, {$paginate}) = Koken::load( array({$params}) );
\t{$custom_source};

\tif ({$paginate})
\t{
\t\tif (isset(Koken::\$location['parameters']['page']))
\t\t{
\t\t\t{$load_url} .= '/page:' . Koken::\$location['parameters']['page'];
\t\t}
\t}

\tif ({$options}['list'] && isset(Koken::\$routed_variables['tags']))
\t{
\t\t{$load_url} .= '/tags:' . Koken::\$routed_variables['tags'];
\t}

\tKoken::\$load_history[] = {$load_url};

\t{$main} = Koken::api({$load_url});

\tif (!{$custom_source_var} && isset({$main}['error']))
\t{
\t\theader("Location: " . Koken::\$location['root_folder'] . "/error/{{$main}['http']}/");
\t}

\tif ({$options}['list'])
\t{
\t\tif (isset({$main}['page']))
\t\t{
\t\t\t{$page} = array(
\t\t\t\t'page' => {$main}['page'],
\t\t\t\t'pages' => {$main}['pages'],
\t\t\t\t'per_page' => {$main}['per_page'],
\t\t\t\t'total' => {$main}['total'],
\t\t\t);

\t\t\tif ({$infinite})
\t\t\t{
\t\t\t\tKoken::\$location['__infinite_token'] = '{$top_token}';
?>
\t\t\t\t<script>
\t\t\t\t\t\$K.infinity.totalPages = <?php echo {$page}['pages']; ?>;
\t\t\t\t\t\$K.infinity.selector = '{$infinite_selector}';
\t\t\t\t</script>
<?php
\t\t\t}
\t\t}

\t\tif (isset({$main}['content']))
\t\t{
\t\t\t{$main}['__loop__'] = {$main}['content'];
\t\t}
\t\telse if (isset({$main}['albums']))
\t\t{
\t\t\t{$main}['__loop__'] = {$main}['albums'];
\t\t}
\t\telse if (isset({$main}['text']))
\t\t{
\t\t\t{$main}['__loop__'] = {$main}['text'];
\t\t}
\t\telse if (isset({$main}['items']))
\t\t{
\t\t\t\$__arr = array('items' => {$main}['items']);
\t\t\tif (isset({$main}['event']))
\t\t\t{
\t\t\t\t\$__arr['__koken__'] = 'event';
\t\t\t\t\$__arr['event'] = {$main}['event'];
\t\t\t}
\t\t\t{$main}['__loop__'] = array(\$__arr);
\t\t\tif (isset({$main}['__koken__']) && !isset({$main}[{$main}['__koken__']]))
\t\t\t{
\t\t\t\t{$main}[{$main}['__koken__']] =& {$main};
\t\t\t}
\t\t}
\t\telse if (isset({$main}[{$collection_name}]))
\t\t{
\t\t\t{$main}['__loop__'] = {$main}[{$collection_name}];
\t\t\t{$main}[{$collection_name}] =& {$main}['__loop__'];
\t\t}
\t\telse
\t\t{
\t\t\t{$main}['__loop__'] = {$main};
\t\t}

\t\tif (array_key_exists('counts', {$main}))
\t\t{
\t\t\t{$main}[{$collection_name}]['counts'] =& {$main}['counts'];
\t\t}
\t}

\tif (({$options}['list'] && !empty({$main}['__loop__'])) || (!{$options}['list'] && {$main} && !isset({$main}['error']))):

\t\tif ({$options}['list'])
\t\t{
\t\t\tif ({$options}['archive'])
\t\t\t{
\t\t\t\tswitch({$options}['archive'])
\t\t\t\t{
\t\t\t\t\tcase 'tag':
\t\t\t\t\t\t{$main}['archive'] = array('__koken__' => 'tag', 'type' => 'tag', 'title' => str_replace(',', ', ', urldecode(isset(Koken::\$routed_variables['id']) ? Koken::\$routed_variables['id'] : Koken::\$routed_variables['slug'])));
\t\t\t\t\t\tbreak;

\t\t\t\t\tcase 'category':
\t\t\t\t\t\t{$main}['archive'] = array('__koken__' => 'category', 'type' => 'category', 'title' => {$main}['category']['title'], 'slug' => {$main}['category']['slug']);
\t\t\t\t\t\tbreak;

\t\t\t\t\tcase 'date':
\t\t\t\t\t\t{$main}['archive'] = array('__koken__' => 'archive', 'type' => 'date', 'day' => isset(Koken::\$routed_variables['day']) ? Koken::\$routed_variables['day'] : false, 'month' => isset(Koken::\$routed_variables['month']) ? Koken::\$routed_variables['month'] : false, 'year' => Koken::\$routed_variables['year']);
\t\t\t\t\t\tbreak;
\t\t\t\t}
\t\t\t}
\t\t}
\t\telse
\t\t{
\t\t\tif (isset({$main}['page_type']) && isset({$main}['draft']))
\t\t\t{
\t\t\t\t{$main}['content'] = {$main}['draft'];
\t\t\t\t{$main}['title'] = {$main}['draft_title'];
\t\t\t\techo '<script>\$(document).ready( function() { \$K.textPreview(' . {$main}['id'] . ', ' . ({$main}['published'] ? 'true' : 'false') . '); } );</script>';
\t\t\t\techo <<<CSS
<!-- KOKEN HEAD BEGIN -->
<style type="text/css">
#k_essay_preview {
\theight:28px !important;
\tline-height:28px !important;
\twidth:100% !important;
\tposition:fixed !important;
\tz-index:99999 !important;
\ttop:0 !important;
\tleft:0 !important;
\tcolor:#bbb !important;
\tfont-size:12px !important;
\ttext-align:center !important;
\tfont-family:'HelveticaNeue-Medium', Helvetica, Arial, sans-serif !important;
\tborder-top: 1px solid #070707 !important;
\tborder-bottom: 1px solid #070707 !important;
\ttext-shadow: 0 1px 1px #000 !important;
\tbackground-color: #303030 !important;
\tbackground-repeat: repeat-x !important;
\tbackground-image: -khtml-gradient(linear, left top, left bottom, from(#333), to(#242424)) !important;
\tbackground-image: -moz-linear-gradient(#333, #242424) !important;
\tbackground-image: -ms-linear-gradient(#333, #242424) !important;
\tbackground-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333), color-stop(100%, #242424)) !important;
\tbackground-image: -webkit-linear-gradient(#333, #242424) !important;
\tbackground-image: linear-gradient(#333, #242424) !important;
}
#k_essay_preview a {
\tcolor:#fff !important;
\ttext-decoration:none !important;
}
</style>
<!-- KOKEN HEAD END -->
CSS;
\t\t\t}

\t\t\tif (!isset({$main}[{$main}['__koken__']]))
\t\t\t{
\t\t\t\t{$main}[{$main}['__koken__']] =& {$main};
\t\t\t}
\t\t}

\t\tif (!{$custom_source_var})
\t\t{
\t\t\t\$__meta_source = {$main};

\t\t\tif (!empty({$main}['title']))
\t\t\t{
\t\t\t\t\$the_title = {$main}['title'];
\t\t\t}
\t\t\telse if (isset({$main}['filename']))
\t\t\t{
\t\t\t\t\$the_title = {$main}['filename'];
\t\t\t}
\t\t\telse if (isset({$main}['album']['title']))
\t\t\t{
\t\t\t\t\$the_title = {$main}['album']['title'];
\t\t\t\t\$__meta_source = {$main}['album'];
\t\t\t}
\t\t\telse if (isset({$main}['archive']['title']))
\t\t\t{
\t\t\t\t\$the_title = {$main}['archive']['title'];
\t\t\t}
\t\t\telse if (isset({$main}['event']))
\t\t\t{
\t\t\t\t\$__fmt = Koken::\$site['date_format'];
\t\t\t\tif (!isset({$main}['event']['day']))
\t\t\t\t{
\t\t\t\t\tif (isset({$main}['event']['month']))
\t\t\t\t\t{
\t\t\t\t\t\t\$__fmt = 'F Y';
\t\t\t\t\t}
\t\t\t\t\telse
\t\t\t\t\t{
\t\t\t\t\t\t\$__fmt = 'Y';
\t\t\t\t\t}
\t\t\t\t}
\t\t\t\t\$the_title = date(\$__fmt, strtotime({$main}['event']['year'] . '-' . (isset({$main}['event']['month']) ? {$main}['event']['month'] : '01') . '-' . (isset({$main}['event']['day']) ? {$main}['event']['day'] : '01')));
\t\t\t}
\t\t\telse if (isset({$main}['archive']))
\t\t\t{
\t\t\t\t\$the_title = Koken::title_from_archive({$main}['archive']);
\t\t\t}

\t\t\tif (isset({$main}['canonical_url']) || isset({$main}['album']['canonical_url']))
\t\t\t{
\t\t\t\t\$__canon = isset({$main}['canonical_url']) ? {$main}['canonical_url'] : {$main}['album']['canonical_url'];
\t\t\t\techo '<!-- KOKEN HEAD BEGIN --><link rel="canonical" href="' . \$__canon . '"><!-- KOKEN HEAD END -->';
\t\t\t}

\t\t\tif (isset(\$the_title) && isset(Koken::\$the_title_separator) && !Koken::\$page_title_set)
\t\t\t{
\t\t\t\tKoken::\$page_title_set = true;
\t\t\t\techo '<!-- KOKEN HEAD BEGIN --><koken_title>' . \$the_title . Koken::\$the_title_separator . Koken::\$site['page_title'] . '</koken_title><!-- KOKEN HEAD END -->';
\t\t\t}

\t\t\tif (isset({$main}['essay']) && !isset(\$_COOKIE['koken_session_ci']) && !{$main}['essay']['published'])
\t\t\t{
\t\t\t\theader('Location: ' . Koken::\$location['root'] . '/error/403/');
\t\t\t\texit;
\t\t\t}

\t\t\t\$__public = isset({$main}['public']) ? {$main}['public'] : ( isset({$main}['album']['public']) ? {$main}['album']['public'] : true );

\t\t\tif (!\$__public)
\t\t\t{
\t\t\t\techo '<!-- KOKEN HEAD BEGIN --><meta name="robots" content="noindex" /><!-- KOKEN HEAD END -->';
\t\t\t}

\t\t\tif (isset({$main}['album']) || isset({$main}['context']['album']))
\t\t\t{
\t\t\t\tif (isset({$main}['album']))
\t\t\t\t{
\t\t\t\t\t\$__rss = {$main}['album']['rss'] = Koken::\$location['root'] . '/feed/albums/' . {$main}['album']['id'] . '/recent.rss';
\t\t\t\t\t\$__title = {$main}['album']['title'];
\t\t\t\t\t\$__public = {$main}['album']['public'];
\t\t\t\t}
\t\t\t\telse
\t\t\t\t{
\t\t\t\t\t\$__rss = {$main}['context']['album']['rss'] = Koken::\$location['root'] . '/feed/albums/' . {$main}['context']['album']['id'] . '/recent.rss';
\t\t\t\t\t\$__title = {$main}['context']['album']['title'];
\t\t\t\t\t\$__public = {$main}['context']['album']['public'];
\t\t\t\t}
\t\t\t\tif (\$__public)
\t\t\t\t{
\t\t\t\t\techo '<!-- KOKEN HEAD BEGIN --><link rel="alternate" type="application/atom+xml" title="' . Koken::\$site['page_title'] . ': Uploads from ' . \$__title . '" href="' . \$__rss . '" /><!-- KOKEN HEAD END -->';
\t\t\t\t}
\t\t\t}

\t\t\t\$__meta = array('description' => '', 'keywords' => array());

\t\t\t\$__candidates = array('summary', 'description', 'caption', 'excerpt', 'title', 'filename');

\t\t\twhile (strlen(\$__meta['description']) === 0 && count(\$__candidates))
\t\t\t{
\t\t\t\t\$__field = array_shift(\$__candidates);
\t\t\t\tif (isset(\$__meta_source[\$__field]) && strlen(\$__meta_source[\$__field]) > 0)
\t\t\t\t{
\t\t\t\t\t\$__meta['description'] = preg_replace('/\\s+/', ' ', preg_replace('/
+/', ' ', strip_tags(\$__meta_source[\$__field])));
\t\t\t\t}
\t\t\t}

\t\t\tif (isset(\$__meta_source['tags']) && !isset(\$__meta_source['page']))
\t\t\t{
\t\t\t\tforeach(\$__meta_source['tags'] as \$__tag)
\t\t\t\t{
\t\t\t\t\t\$__meta['keywords'][] = \$__tag['title'];
\t\t\t\t}
\t\t\t}

\t\t\techo '<!-- KOKEN META DESCRIPTION BEGIN -->' . Koken::truncate(\$__meta['description'], 160) . '<!-- KOKEN META DESCRIPTION END -->';
\t\t\techo '<!-- KOKEN META KEYWORDS BEGIN -->' . join(', ', \$__meta['keywords']) . '<!-- KOKEN META KEYWORDS END -->';
\t\t}
?>
DOC;
    }