private function parsesidebar($s, $sidebar)
 {
     $result = array();
     $default =& $this->default->templates['sidebars'][$sidebar];
     if ($widget = $this->parsetag($s, 'widget', '$items')) {
         $this->parsewidget($result, 'widget', $sidebar, $widget);
     } else {
         $this->copywidget($result, 'widget', $default, 'widget');
     }
     foreach (ttheme::getwidgetnames() as $name) {
         if ($widget = $this->parsetag($s, $name, '')) {
             $this->parsewidget($result, $name, $sidebar, $widget);
         } else {
             $this->copywidget($result, $name, $result, 'widget');
             if ($name == 'posts' || $name == 'comments') {
                 $result[$name . '.item'] = $default[$name . '.item'];
             } elseif ($name == 'meta') {
                 $result['meta.classes'] = $default['meta.classes'];
             }
         }
     }
     $s = $this->deletespaces($s);
     //$result[0] = $s != '' ? $s : $default[0];
     return $result;
 }
 public function afterparse($theme)
 {
     $this->onfix($theme);
     $templates =& $this->theme->templates;
     $templates['menu.hover'] = isset($templates['menu.hover']) ? $templates['menu.hover'] == 'true' ? 'true' : ($templates['menu.hover'] == 'bootstrap' ? 'bootstrap' : 'false') : 'true';
     if (!isset($templates['content.post.templatecomments'])) {
         $templates['content.post.templatecomments'] = '';
     }
     if (!isset($templates['content.post.templatecomments.confirmform'])) {
         $this->error('tml not');
     }
     $post = 'content.post.';
     $excerpt = 'content.excerpts.excerpt.';
     //normalize filelist
     foreach (array('file', 'image', 'audio', 'video', 'flash') as $name) {
         $key = $post . 'filelist.' . $name;
         $itemkey = $key . "s.{$name}";
         if (!isset($templates[$key . 's'])) {
             $templates[$key . 's'] = '$' . $name;
         }
         //excerpt
         $keyexcerpt = $excerpt . 'filelist.' . $name;
         $itemkeyexcerpt = $keyexcerpt . "s.{$name}";
         if (!isset($templates[$keyexcerpt])) {
             $templates[$keyexcerpt] = $templates[$key];
         }
         if (!isset($templates[$keyexcerpt . 's'])) {
             $templates[$keyexcerpt . 's'] = $templates[$key . 's'];
         }
     }
     //fix preview
     $key = $post . 'filelist.preview';
     $keyexcerpt = $excerpt . 'filelist.preview';
     if (!isset($templates[$keyexcerpt])) {
         $templates[$keyexcerpt] = $templates[$key];
     }
     foreach (array('date', 'filelist', 'filelist.file', 'filelist.image', 'filelist.preview', 'filelist.audio', 'filelist.video', 'filelist.flash', 'filelist.files', 'filelist.images', 'filelist.audios', 'filelist.videos', 'filelist.flashs', 'catlinks', 'catlinks.item', 'catlinks.divider', 'taglinks', 'taglinks.item', 'taglinks.divider') as $name) {
         if (empty($templates[$excerpt . $name])) {
             $templates[$excerpt . $name] = $templates[$post . $name];
         }
     }
     $sidebars =& $this->theme->templates['sidebars'];
     $count = substr_count($this->theme->templates['index'], '$template.sidebar');
     if (count($sidebars) > $count) {
         array_splice($sidebars, $count, count($sidebars) - $count);
     }
     for ($i = 0; $i < $count; $i++) {
         $sidebar =& $this->theme->templates['sidebars'][$i];
         foreach (ttheme::getwidgetnames() as $widgetname) {
             foreach (array('', '.items', '.item', '.subcount', '.subitems') as $name) {
                 if (empty($sidebar[$widgetname . $name])) {
                     $sidebar[$widgetname . $name] = $sidebar['widget' . $name];
                 }
             }
             if ($this->fixsubcount && in_array($widgetname, array('widget', 'categories', 'tags', 'archives'))) {
                 $v = $sidebar[$widgetname . '.item'];
                 if (!strpos($v, '$subcount')) {
                     $sidebar[$widgetname . '.item'] = str_replace('$subitems', '$subcount$subitems', $v);
                 }
             }
         }
         if (is_string($sidebar['meta.classes'])) {
             $sidebar['meta.classes'] = self::getmetaclasses($sidebar['meta.classes']);
         }
     }
     //add spaces
     foreach (array('content.excerpts.excerpt.taglinks.divider', 'content.post.taglinks.divider', 'content.excerpts.excerpt.catlinks.divider', 'content.post.catlinks.divider') as $k) {
         if (substr($templates[$k], -1) != ' ') {
             $templates[$k] .= ' ';
         }
     }
     $templates['content.post.templatecomments.confirmform'] = str_replace('$lang.formhead', '$lang.checkspam', $templates['content.post.templatecomments.confirmform']);
     $form = 'content.post.templatecomments.form';
     $templates[$form] = trim(str_replace('<script type="text/javascript" src="$site.files$template.jsmerger_comments"></script>', '', $templates[$form]));
     if (!strpos($templates[$form], '$mesg')) {
         $templates[$form] = '<div id="before-commentform">$mesg</div>' . $templates[$form];
     }
     $regform = 'content.post.templatecomments.regform';
     if (!in_array($regform, $this->parsedtags) && in_array('content.admin.editor', $this->parsedtags)) {
         $editor = strtr($templates['content.admin.editor'], array('$lang.$name' => $this->replacelang ? tlocal::i('comment')->content : '$lang.content', '$name' => 'content', '$value' => ''));
         $templates[$regform] = '								<div id="before-commentform">$mesg</div>
       <h4 id="respond">$lang.leavereply</h4>
       <form action="$site.url/send-comment.php" method="post" id="commentform">' . $editor . '<p>
       <input type="hidden" name="postid" value="$postid" />
       <input type="hidden" name="antispam" value="$antispam" />
       
       <input type="submit" name="submitbutton" id="submitcomment" value="' . ($this->replacelang ? tlocal::i()->send : '$lang.send') . '" /></p>
       </form>';
     }
     $comment = 'content.post.templatecomments.comments.comment';
     $templates[$comment] = str_replace('$moderate', '<div class="moderationbuttons" data-idcomment="$comment.id" data-idauthor="$comment.author"></div>', $templates[$comment]);
     if ($this->stylebefore) {
         foreach (array('index', 'index.home', 'index.post', 'index.tag') as $k) {
             if (strpos($templates[$k], '$template.cssmerger_default')) {
                 continue;
             }
             //insert css merger before theme css
             if ($i = strpos($templates[$k], '.css')) {
                 $i = strrpos(substr($templates[$k], 0, $i), '<');
                 $css = '<link type="text/css" href="$site.files$template.cssmerger_default" rel="stylesheet" />';
                 $templates[$k] = substr_replace($templates[$k], $css, $i - 1, 0);
             }
         }
         //fix $template.head
         // ignore on installling (class not exists)
         if (!defined('litepublisher_mode') || litepublisher_mode != 'install') {
             $t = ttemplate::i();
             if (false !== strpos($t->heads, $css) && false === strpos($t->heads, "<!--{$css}-->")) {
                 $t->heads = str_replace($css, "<!--{$css}-->", $t->heads);
                 $t->save();
             }
         }
     }
     //reuse templates
     foreach ($templates as $k => $v) {
         if (is_string($v) && !strbegin($v, '<') && isset($templates[$v]) && is_string($templates[$v])) {
             $templates[$k] = $templates[$v];
         }
     }
 }
 public static function gettemplates()
 {
     $result = array();
     $lang = tlocal::i('widgets');
     $result['widget'] = $lang->defaulttemplate;
     foreach (ttheme::getwidgetnames() as $name) {
         $result[$name] = $lang->{$name};
     }
     return $result;
 }