/** * Parse the data into the template */ private function parse() { // get vars $title = \SpoonFilter::ucfirst(FL::msg('BlogAllComments')); $link = SITE_URL . FrontendNavigation::getURLForBlock('Blog'); $detailLink = SITE_URL . FrontendNavigation::getURLForBlock('Blog', 'Detail'); $description = null; // create new rss instance $rss = new FrontendRSS($title, $link, $description); // loop articles foreach ($this->items as $item) { // init vars $title = $item['author'] . ' ' . FL::lbl('On') . ' ' . $item['post_title']; $link = $detailLink . '/' . $item['post_url'] . '/#comment-' . $item['id']; $description = $item['text']; // create new instance $rssItem = new FrontendRSSItem($title, $link, $description); // set item properties $rssItem->setPublicationDate($item['created_on']); $rssItem->setAuthor($item['author']); // add item $rss->addItem($rssItem); } $rss->parse(); }
/** * Parse the data into the template */ private function parse() { // get vars $title = isset($this->settings['rss_title_' . LANGUAGE]) ? $this->settings['rss_title_' . LANGUAGE] : $this->get('fork.settings')->get('Blog', 'rss_title_' . LANGUAGE, SITE_DEFAULT_TITLE); $link = SITE_URL . FrontendNavigation::getURLForBlock('Blog'); $description = isset($this->settings['rss_description_' . LANGUAGE]) ? $this->settings['rss_description_' . LANGUAGE] : null; // create new rss instance $rss = new FrontendRSS($title, $link, $description); // loop articles foreach ($this->items as $item) { // init vars $title = $item['title']; $link = $item['full_url']; $description = $item['introduction'] != '' ? $item['introduction'] : $item['text']; // meta is wanted if ($this->get('fork.settings')->get('Blog', 'rss_meta_' . LANGUAGE, true)) { // append meta $description .= '<div class="meta">' . "\n"; $description .= ' <p><a href="' . $link . '" title="' . $title . '">' . $title . '</a> ' . sprintf(FL::msg('WrittenBy'), FrontendUser::getBackendUser($item['user_id'])->getSetting('nickname')); $description .= ' ' . FL::lbl('In') . ' <a href="' . $item['category_full_url'] . '" title="' . $item['category_title'] . '">' . $item['category_title'] . '</a>.</p>' . "\n"; // any tags if (isset($item['tags'])) { // append tags-paragraph $description .= ' <p>' . \SpoonFilter::ucfirst(FL::lbl('Tags')) . ': '; $first = true; // loop tags foreach ($item['tags'] as $tag) { // prepend separator if (!$first) { $description .= ', '; } // add $description .= '<a href="' . $tag['full_url'] . '" rel="tag" title="' . $tag['name'] . '">' . $tag['name'] . '</a>'; // reset $first = false; } // end $description .= '.</p>' . "\n"; } // end HTML $description .= '</div>' . "\n"; } // create new instance $rssItem = new FrontendRSSItem($title, $link, $description); // set item properties $rssItem->setPublicationDate($item['publish_on']); $rssItem->addCategory($item['category_title']); $rssItem->setAuthor(FrontendUser::getBackendUser($item['user_id'])->getSetting('nickname')); // add item $rss->addItem($rssItem); } // output $rss->parse(); }
/** * Parse the languages */ protected function parseLanguages() { // just execute if the site is multi-language if ($this->getContainer()->getParameter('site.multilanguage')) { // get languages $activeLanguages = Language::getActiveLanguages(); // init var $languages = array(); // loop active languages foreach ($activeLanguages as $language) { // build temp array $temp = array(); $temp['url'] = '/' . $language; $temp['label'] = $language; $temp['name'] = Language::msg(mb_strtoupper($language)); $temp['current'] = (bool) ($language == LANGUAGE); // add $languages[] = $temp; } // assign if (count($languages) > 1) { $this->tpl->addGlobal('languages', $languages); } } }
/** * Notify the admin * * @param array $comment The comment that was submitted. */ public static function notifyAdmin(array $comment) { // don't notify admin in case of spam if ($comment['status'] == 'spam') { return; } // get settings $notifyByMailOnComment = FrontendModel::get('fork.settings')->get('Blog', 'notify_by_email_on_new_comment', false); $notifyByMailOnCommentToModerate = FrontendModel::get('fork.settings')->get('Blog', 'notify_by_email_on_new_comment_to_moderate', false); // create URLs $url = SITE_URL . FrontendNavigation::getURLForBlock('Blog', 'Detail') . '/' . $comment['post_url'] . '#comment-' . $comment['id']; $backendURL = SITE_URL . FrontendNavigation::getBackendURLForBlock('comments', 'Blog') . '#tabModeration'; // notify on all comments if ($notifyByMailOnComment) { // init var $variables = null; // comment to moderate if ($comment['status'] == 'moderation') { $variables['message'] = vsprintf(FL::msg('BlogEmailNotificationsNewCommentToModerate'), array($comment['author'], $url, $comment['post_title'], $backendURL)); } elseif ($comment['status'] == 'published') { // comment was published $variables['message'] = vsprintf(FL::msg('BlogEmailNotificationsNewComment'), array($comment['author'], $url, $comment['post_title'])); } $to = FrontendModel::get('fork.settings')->get('Core', 'mailer_to'); $from = FrontendModel::get('fork.settings')->get('Core', 'mailer_from'); $replyTo = FrontendModel::get('fork.settings')->get('Core', 'mailer_reply_to'); $message = Message::newInstance(FL::msg('NotificationSubject'))->setFrom(array($from['email'] => $from['name']))->setTo(array($to['email'] => $to['name']))->setReplyTo(array($replyTo['email'] => $replyTo['name']))->parseHtml('/Core/Layout/Templates/Mails/Notification.html.twig', $variables, true); FrontendModel::get('mailer')->send($message); } elseif ($notifyByMailOnCommentToModerate && $comment['status'] == 'moderation') { // only notify on new comments to moderate and if the comment is one to moderate // set variables $variables['message'] = vsprintf(FL::msg('BlogEmailNotificationsNewCommentToModerate'), array($comment['author'], $url, $comment['post_title'], $backendURL)); $to = FrontendModel::get('fork.settings')->get('Core', 'mailer_to'); $from = FrontendModel::get('fork.settings')->get('Core', 'mailer_from'); $replyTo = FrontendModel::get('fork.settings')->get('Core', 'mailer_reply_to'); $message = Message::newInstance(FL::msg('NotificationSubject'))->setFrom(array($from['email'] => $from['name']))->setTo(array($to['email'] => $to['name']))->setReplyTo(array($replyTo['email'] => $replyTo['name']))->parseHtml('/Core/Layout/Templates/Mails/Notification.html.twig', $variables, true); FrontendModel::get('mailer')->send($message); } }
/** * Get a message from the language-file * * @param string $key The key to get. * @param bool $fallback Should we provide a fallback in English? * * @return string */ public static function msg($key, $fallback = true) { trigger_error('Frontend\\Core\\Engine\\Language is deprecated. It has been moved to Frontend\\Core\\Language\\Language', E_USER_DEPRECATED); return parent::msg($key, $fallback); }
/** * Parse the data into the template */ private function parse() { // get RSS-link $rssTitle = $this->get('fork.settings')->get('Blog', 'rss_title_' . LANGUAGE); $rssLink = FrontendNavigation::getURLForBlock('Blog', 'Rss'); // add RSS-feed $this->header->addRssLink($rssTitle, $rssLink); // get RSS-link for the comments $rssCommentTitle = vsprintf(FL::msg('CommentsOn'), array($this->record['title'])); $rssCommentsLink = FrontendNavigation::getURLForBlock('Blog', 'ArticleCommentsRss') . '/' . $this->record['url']; // add RSS-feed into the metaCustom $this->header->addRssLink($rssCommentTitle, $rssCommentsLink); // add specified image if (isset($this->record['image']) && $this->record['image'] != '') { $this->header->addOpenGraphImage(FRONTEND_FILES_URL . '/blog/images/source/' . $this->record['image']); } // Open Graph-data: add images from content $this->header->extractOpenGraphImages($this->record['text']); // Open Graph-data: add additional OpenGraph data $this->header->addOpenGraphData('title', $this->record['title'], true); $this->header->addOpenGraphData('type', 'article', true); $this->header->addOpenGraphData('url', SITE_URL . $this->record['full_url'], true); $this->header->addOpenGraphData('site_name', $this->get('fork.settings')->get('Core', 'site_title_' . LANGUAGE, SITE_DEFAULT_TITLE), true); $this->header->addOpenGraphData('description', $this->record['meta_description_overwrite'] == 'Y' ? $this->record['meta_description'] : $this->record['title'], true); // Twitter Card $imgURL = FRONTEND_FILES_URL . '/blog/images/source/' . $this->record['image']; $this->header->setTwitterCard($this->record['title'], $this->record['meta_description'], $imgURL); // when there are 2 or more categories with at least one item in it, // the category will be added in the breadcrumb if (count(FrontendBlogModel::getAllCategories()) > 1) { $this->breadcrumb->addElement($this->record['category_title'], FrontendNavigation::getURLForBlock('Blog', 'Category') . '/' . $this->record['category_url']); } // add into breadcrumb $this->breadcrumb->addElement($this->record['title']); // set meta $this->header->setPageTitle($this->record['meta_title'], $this->record['meta_title_overwrite'] == 'Y'); $this->header->addMetaDescription($this->record['meta_description'], $this->record['meta_description_overwrite'] == 'Y'); $this->header->addMetaKeywords($this->record['meta_keywords'], $this->record['meta_keywords_overwrite'] == 'Y'); // advanced SEO-attributes if (isset($this->record['meta_data']['seo_index'])) { $this->header->addMetaData(array('name' => 'robots', 'content' => $this->record['meta_data']['seo_index'])); } if (isset($this->record['meta_data']['seo_follow'])) { $this->header->addMetaData(array('name' => 'robots', 'content' => $this->record['meta_data']['seo_follow'])); } $this->header->setCanonicalUrl($this->record['full_url']); // assign article $this->tpl->assign('item', $this->record); // count comments $commentCount = count($this->comments); // assign the comments $this->tpl->assign('commentsCount', $commentCount); $this->tpl->assign('comments', $this->comments); // options if ($commentCount > 1) { $this->tpl->assign('blogCommentsMultiple', true); } // parse the form $this->frm->parse($this->tpl); // some options if ($this->URL->getParameter('comment', 'string') == 'moderation') { $this->tpl->assign('commentIsInModeration', true); } if ($this->URL->getParameter('comment', 'string') == 'spam') { $this->tpl->assign('commentIsSpam', true); } if ($this->URL->getParameter('comment', 'string') == 'true') { $this->tpl->assign('commentIsAdded', true); } // assign settings $this->tpl->assign('settings', $this->settings); $navigation = FrontendBlogModel::getNavigation($this->record['id']); // set previous and next link for usage with Flip ahead if (!empty($navigation['previous'])) { $this->header->addLink(array('rel' => 'prev', 'href' => SITE_URL . $navigation['previous']['url'])); } if (!empty($navigation['next'])) { $this->header->addLink(array('rel' => 'next', 'href' => SITE_URL . $navigation['next']['url'])); } // assign navigation $this->tpl->assign('navigation', $navigation); }
public function parse() { // more matches to be found than? if ($this->pagination['num_items'] > count($this->items)) { // remove last result (to add this reference) array_pop($this->items); // add reference to full search results page $this->items[] = array('title' => FL::lbl('More'), 'text' => FL::msg('MoreResults'), 'full_url' => FrontendNavigation::getURLForBlock('Search') . '?form=search&q=' . $this->term); } $charset = $this->getContainer()->getParameter('kernel.charset'); // format data foreach ($this->items as &$item) { // format description $item['text'] = !empty($item['text']) ? mb_strlen($item['text']) > $this->length ? mb_substr(strip_tags($item['text']), 0, $this->length, $charset) . '…' : $item['text'] : ''; } // output $this->output(self::OK, $this->items); }