public function execute() { KUNENA_PROFILER ? KunenaProfiler::instance()->start('function ' . get_class($this) . '::' . __FUNCTION__ . '()') : null; // Run before executing action. $result = $this->before(); if ($result === false) { KUNENA_PROFILER ? KunenaProfiler::instance()->stop('function ' . get_class($this) . '::' . __FUNCTION__ . '()') : null; throw new KunenaExceptionAuthorise(JText::_('COM_KUNENA_NO_ACCESS'), 404); } // Wrapper layout. $this->output = KunenaLayout::factory('Page')->set('me', $this->me)->setOptions($this->getOptions()); if ($this->config->board_offline && !$this->me->isAdmin()) { // Forum is offline. $this->setResponseStatus(503); $this->output->setLayout('offline'); $this->content = KunenaLayout::factory('Widget/Custom')->set('header', JText::_('COM_KUNENA_FORUM_IS_OFFLINE'))->set('body', $this->config->offline_message); } elseif ($this->config->regonly && !$this->me->exists()) { // Forum is for registered users only. $this->setResponseStatus(403); $this->output->setLayout('offline'); $this->content = KunenaLayout::factory('Widget/Custom')->set('header', JText::_('COM_KUNENA_LOGIN_NOTIFICATION'))->set('body', JText::_('COM_KUNENA_LOGIN_FORUM')); } else { // Display real content. try { // Split into two lines for exception handling. $content = $this->display()->set('breadcrumb', $this->breadcrumb); $this->content = $content->render(); } catch (KunenaExceptionAuthorise $e) { $this->setResponseStatus($e->getResponseCode()); $this->output->setLayout('unauthorized'); $this->document->setTitle($e->getResponseStatus()); $this->content = KunenaLayout::factory('Widget/Custom')->set('header', $e->getResponseStatus())->set('body', $e->getMessage()); } catch (Exception $e) { if (!$e instanceof KunenaExceptionAuthorise) { $header = 'Error while rendering layout'; $content = isset($content) ? $content->renderError($e) : $this->content->renderError($e); $e = new KunenaExceptionAuthorise($e->getMessage(), $e->getCode(), $e); } else { $header = $e->getResponseStatus(); $content = $e->getMessage(); } $this->setResponseStatus($e->getResponseCode()); $this->output->setLayout('unauthorized'); $this->document->setTitle($header); $this->content = KunenaLayout::factory('Widget/Custom')->set('header', $header)->set('body', $content); } } // Display wrapper layout with given parameters. $this->output->set('content', $this->content)->set('breadcrumb', $this->breadcrumb); // Run after executing action. $this->after(); KUNENA_PROFILER ? KunenaProfiler::instance()->stop('function ' . get_class($this) . '::' . __FUNCTION__ . '()') : null; return $this->output; }
echo $this->filterPost; ?> " title="<?php echo JText::_('COM_KUNENA_SYS_BUTTON_FILTERSUBMIT'); ?> " /> </td> <td class="nowrap center hidden-phone"> </td> </tr> </thead> <tfoot> <tr> <td colspan="8"> <?php echo KunenaLayout::factory('pagination/footer')->set('pagination', $this->pagination); ?> </td> </tr> </tfoot> <tbody> <?php $k = $i = 0; if ($this->pagination->total > 0) { foreach ($this->attachments_instance as $attachment) { ?> <tr <?php echo 'class = "row' . $k . '"'; ?> > <td><?php
/** * @return string * @deprecated K4.0 */ public function getThumbnailLink() { return (string) KunenaLayout::factory('Attachment/Item')->set('attachment', $this)->setLayout('thumbnail'); }
/** * Get button. * * @param string $url Target link (do not route it). * @param string $name Name of the button. * @param string $scope Scope of the button. * @param string $type Type of the button. * @param bool $primary True if primary button. * @param bool $normal Define if the button will have the class btn or btn-small * * @return string */ public function getButton($url, $name, $scope, $type, $primary = false, $normal = true) { return KunenaLayout::factory('Widget/Button')->setProperties(array('url' => KunenaRoute::_($url), 'name' => $name, 'scope' => $scope, 'type' => $type, 'primary' => $primary, 'normal' => $normal, 'icon' => '')); }
</ul> </div> <?php } elseif ($attachs->total > 0 && !$this->me->exists()) { if ($attachs->image > 0 && !$this->config->showimgforguest) { if ($attachs->image > 1) { echo KunenaLayout::factory('BBCode/Image')->set('title', JText::_('COM_KUNENA_SHOWIMGFORGUEST_HIDEIMG_MULTIPLES'))->setLayout('unauthorised'); } else { echo KunenaLayout::factory('BBCode/Image')->set('title', JText::_('COM_KUNENA_SHOWIMGFORGUEST_HIDEIMG_SIMPLE'))->setLayout('unauthorised'); } } if ($attachs->file > 0 && !$this->config->showfileforguest) { if ($attachs->file > 1) { echo KunenaLayout::factory('BBCode/Image')->set('title', JText::_('COM_KUNENA_SHOWIMGFORGUEST_HIDEFILE_MULTIPLES'))->setLayout('unauthorised'); } else { echo KunenaLayout::factory('BBCode/Image')->set('title', JText::_('COM_KUNENA_SHOWIMGFORGUEST_HIDEFILE_SIMPLE'))->setLayout('unauthorised'); } } } ?> <?php if ($signature) { ?> <div class="ksig"> <hr> <span class="ksignature"><?php echo $signature; ?> </span> </div> <?php
/** * Return view as a string. * * @return string */ public function __toString() { try { $output = $this->execute(); } catch (KunenaExceptionAuthorise $e) { if (!$this->primary) { return (string) KunenaLayout::factory('Empty'); } $document = JFactory::getDocument(); $document->setTitle($e->getResponseStatus()); JResponse::setHeader('Status', $e->getResponseStatus(), true); $output = KunenaLayout::factory('Misc/Default', 'pages')->set('header', $e->getResponseStatus())->set('body', $e->getMessage()); } catch (Exception $e) { // TODO: error message? if (!$this->primary) { return "<b>Exception</b> in layout <b>{$this->name}!</b>" . (!JDEBUG ? $e->getMessage() : ''); } $title = '500 Internal Server Error'; $document = JFactory::getDocument(); $document->setTitle($title); JResponse::setHeader('Status', $title, true); $output = KunenaLayout::factory('Misc/Default', 'pages')->set('header', $title)->set('body', $e->getMessage()); } return (string) $output; }
/** * @param JMail $mail * @param int $subscription * @param string $subject * @param string $url * @param bool $once * * @return string */ protected function attachEmailBody(JMail $mail, $subscription, $subject, $url, $once) { $layout = KunenaLayout::factory('Email/Subscription')->debug(false)->set('mail', $mail)->set('message', $this)->set('messageUrl', $url)->set('once', $once); try { $msg = trim($layout->render($subscription ? 'default' : 'moderator')); } catch (Exception $e) { // TODO: Deprecated in K4.0, remove in K5.0 // Clean up the message for review. $message = KunenaHtmlParser::stripBBCode($this->message, 0, false); $config = KunenaFactory::getConfig(); if ($subscription) { $msg1 = $this->get('parent') ? JText::_('COM_KUNENA_POST_EMAIL_NOTIFICATION1') : JText::_('COM_KUNENA_POST_EMAIL_NOTIFICATION1_CAT'); $msg2 = $this->get('parent') ? JText::_('COM_KUNENA_POST_EMAIL_NOTIFICATION2') : JText::_('COM_KUNENA_POST_EMAIL_NOTIFICATION2_CAT'); } else { $msg1 = JText::_('COM_KUNENA_POST_EMAIL_MOD1'); $msg2 = JText::_('COM_KUNENA_POST_EMAIL_MOD2'); } $msg = $msg1 . " " . $config->board_title . "\n\n"; // DO NOT REMOVE EXTRA SPACE, JMailHelper::cleanBody() removes "Subject:" from the message body $msg .= JText::_('COM_KUNENA_MESSAGE_SUBJECT') . " : " . $subject . "\n"; $msg .= JText::_('COM_KUNENA_CATEGORY') . " : " . $this->getCategory()->name . "\n"; $msg .= JText::_('COM_KUNENA_VIEW_POSTED') . " : " . $this->getAuthor()->getName('???', false) . "\n\n"; $msg .= "URL : {$url}\n\n"; if ($config->mailfull == 1) { $msg .= JText::_('COM_KUNENA_MESSAGE') . " :\n-----\n"; $msg .= $message; $msg .= "\n-----\n\n"; } $msg .= $msg2 . "\n"; if ($subscription && $once) { if ($this->parent) { $msg .= JText::_('COM_KUNENA_POST_EMAIL_NOTIFICATION_MORE_READ') . "\n"; } else { $msg .= JText::_('COM_KUNENA_POST_EMAIL_NOTIFICATION_MORE_SUBSCRIBE') . "\n"; } } $msg .= "\n"; $msg .= JText::_('COM_KUNENA_POST_EMAIL_NOTIFICATION3') . "\n"; } $mail->setBody($msg); }
/** * Get button. * * @param string $url Target link (do not route it). * @param string $name Name of the button. * @param string $scope Scope of the button. * @param string $type Type of the button. * @param bool $id Id of the button. * * @return string */ public function getButton($url, $name, $scope, $type, $id = null) { return KunenaLayout::factory('Widget/Button') ->setProperties(array('url' => KunenaRoute::_($url), 'name' => $name, 'scope' => $scope, 'type' => $type, 'id' => $id)); }
/** * Render the tweet by loading the right layout * * @param int $tweetid The tweet id to render in layout * * @return string */ public function renderTweet($tweetid) { $tweet = $this->getTweet($tweetid); $layout = KunenaLayout::factory('BBCode/twitter'); if ($tweet->error === false) { if ($layout->getPath()) { return (string) $layout->set('tweetid', $tweet->id_str)->set('user_profile_url_normal', $tweet->user->profile_image_url)->set('user_profile_url_big', $tweet->user->profile_image_url_big)->set('user_name', $tweet->user->name)->set('user_screen_name', $tweet->user->screen_name)->set('tweet_created_at', $tweet->created_at)->set('tweet_text', $tweet->text)->set('retweet_count', $tweet->retweet_count)->set('favorite_count', $tweet->favorite_count)->set('verified', $tweet->user->verified)->setLayout('default'); } } else { return '<b>' . $tweet->error . '</b>'; } }
/** * Load a template file -- first look in the templates folder for an override * * @param string $tpl The name of the template source file ... * automatically searches the template paths and compiles as needed. * @param array $hmvcParams Extra parameters for HMVC. * @return string The output of the the template script. */ public function loadTemplateFile($tpl = null, $hmvcParams = null) { KUNENA_PROFILER ? $this->profiler->start('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null; // HMVC legacy support. $view = $this->getName(); $layout = $this->getLayout(); list($name, $override) = $this->ktemplate->mapLegacyView("{$view}/{$layout}_{$tpl}"); $hmvc = KunenaLayout::factory($name)->setLayout($override); if ($hmvc->getPath()) { if ($hmvcParams) { $hmvc->setProperties($hmvcParams); } KUNENA_PROFILER ? $this->profiler->stop('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null; return $hmvc->setLegacy($this); } // Create the template file name based on the layout $file = isset($tpl) ? $layout . '_' . $tpl : $layout; if (!isset($this->templatefiles[$file])) { // Clean the file name $file = preg_replace('/[^A-Z0-9_\\.-]/i', '', $file); $tpl = isset($tpl) ? preg_replace('/[^A-Z0-9_\\.-]/i', '', $tpl) : $tpl; // Load the template script $filetofind = $this->_createFileName('template', array('name' => $file)); $this->templatefiles[$file] = KunenaPath::find($this->_path['template'], $filetofind); } $this->_template = $this->templatefiles[$file]; if ($this->_template != false) { $templatefile = preg_replace('%' . KunenaPath::clean(JPATH_ROOT, '/') . '/%', '', KunenaPath::clean($this->_template, '/')); // Unset so as not to introduce into template scope unset($tpl); unset($file); // Never allow a 'this' property if (isset($this->this)) { unset($this->this); } // Start capturing output into a buffer ob_start(); // Include the requested template filename in the local scope // (this will execute the view logic). include $this->_template; // Done with the requested template; get the buffer and // clear it. $output = ob_get_contents(); ob_end_clean(); if (JDEBUG || $this->config->get('debug')) { $output = trim($output); $output = "\n<!-- START {$templatefile} -->\n{$output}\n<!-- END {$templatefile} -->\n"; } } else { $output = JError::raiseError(500, JText::sprintf('JLIB_APPLICATION_ERROR_LAYOUTFILE_NOT_FOUND', $this->getName() . '/' . $file)); } KUNENA_PROFILER ? $this->profiler->stop('function ' . __CLASS__ . '::' . __FUNCTION__ . '()') : null; return $output; }
<?php /** * Kunena Component * @package Kunena.Administrator.Template.Joomla30 * @subpackage Layouts.Pagination * * @copyright (C) 2008 - 2016 Kunena Team. All rights reserved. * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL * @link https://www.kunena.org **/ defined ( '_JEXEC' ) or die (); ?> <div class="pagination pagination-toolbar"> <?php echo KunenaLayout::factory('pagination/list')->set('pagination', $this->pagination); ?> <input type="hidden" name="<?php echo $this->pagination->prefix ?>limitstart" value="<?php echo $this->pagination->limitstart; ?>" /> </div>
function report() { if (!JSession::checkToken('post')) { $this->app->enqueueMessage(JText::_('COM_KUNENA_ERROR_TOKEN'), 'error'); $this->setRedirectBack(); return; } if (!$this->me->exists() || $this->config->reportmsg == 0) { // Deny access if report feature has been disabled or user is guest $this->app->enqueueMessage(JText::_('COM_KUNENA_NO_ACCESS'), 'notice'); $this->setRedirectBack(); return; } if (!$this->config->get('send_emails')) { // Emails have been disabled $this->app->enqueueMessage(JText::_('COM_KUNENA_EMAIL_DISABLED'), 'notice'); $this->setRedirectBack(); return; } if (!$this->config->getEmail() || !JMailHelper::isEmailAddress($this->config->getEmail())) { // Error: email address is invalid $this->app->enqueueMessage(JText::_('COM_KUNENA_EMAIL_INVALID'), 'error'); $this->setRedirectBack(); return; } // Get target object for the report if ($this->mesid) { $message = $target = KunenaForumMessageHelper::get($this->mesid); $topic = $target->getTopic(); } else { $topic = $target = KunenaForumTopicHelper::get($this->id); $message = KunenaForumMessageHelper::get($topic->first_post_id); } $messagetext = $message->message; $baduser = KunenaFactory::getUser($message->userid); if (!$target->authorise('read')) { // Deny access if user cannot read target $this->app->enqueueMessage($target->getError(), 'notice'); $this->setRedirectBack(); return; } $reason = JRequest::getString('reason'); $text = JRequest::getString('text'); $template = KunenaTemplate::getInstance(); if (method_exists($template, 'reportMessage')) { $template->reportMessage($message, $reason, $text); } // Load language file from the template. KunenaFactory::getTemplate()->loadLanguage(); if (empty($reason) && empty($text)) { // Do nothing: empty subject or reason is empty $this->app->enqueueMessage(JText::_('COM_KUNENA_REPORT_FORG0T_SUB_MES')); $this->setRedirectBack(); return; } else { $acl = KunenaAccess::getInstance(); $emailToList = $acl->getSubscribers($topic->category_id, $topic->id, false, true, false); if (!empty($emailToList)) { $mailsender = JMailHelper::cleanAddress($this->config->board_title . ' ' . JText::_('COM_KUNENA_FORUM') . ': ' . $this->me->getName()); $mailsubject = "[" . $this->config->board_title . " " . JText::_('COM_KUNENA_FORUM') . "] " . JText::_('COM_KUNENA_REPORT_MSG') . ": "; if ($reason) { $mailsubject .= $reason; } else { $mailsubject .= $topic->subject; } jimport('joomla.environment.uri'); $msglink = JUri::getInstance()->toString(array('scheme', 'host', 'port')) . $target->getPermaUrl(null, false); $mail = JFactory::getMailer(); $mail->setSender(array($this->me->username, $this->me->email)); $mail->setSubject($mailsubject); // Render the email. $layout = KunenaLayout::factory('Email/Report')->debug(false)->set('mail', $mail)->set('message', $message)->set('me', $this->me)->set('title', $reason)->set('content', $text)->set('messageLink', $msglink); try { $body = trim($layout->render()); $mail->setBody($body); } catch (Exception $e) { // TODO: Deprecated in K4.0, remove in K5.0 $mailmessage = "" . JText::_('COM_KUNENA_REPORT_RSENDER') . " {$this->me->username} ({$this->me->name})"; $mailmessage .= "\n"; $mailmessage .= "" . JText::_('COM_KUNENA_REPORT_RREASON') . " " . $reason; $mailmessage .= "\n"; $mailmessage .= "" . JText::_('COM_KUNENA_REPORT_RMESSAGE') . " " . $text; $mailmessage .= "\n\n"; $mailmessage .= "" . JText::_('COM_KUNENA_REPORT_POST_POSTER') . " {$baduser->username} ({$baduser->name})"; $mailmessage .= "\n"; $mailmessage .= "" . JText::_('COM_KUNENA_REPORT_POST_SUBJECT') . ": " . $topic->subject; $mailmessage .= "\n"; $mailmessage .= "" . JText::_('COM_KUNENA_REPORT_POST_MESSAGE') . "\n-----\n" . KunenaHtmlParser::stripBBCode($messagetext, 0, false); $mailmessage .= "\n-----\n\n"; $mailmessage .= "" . JText::_('COM_KUNENA_REPORT_POST_LINK') . " " . $msglink; $mailmessage = JMailHelper::cleanBody(strtr($mailmessage, array(' ' => ''))); $mail->setBody($mailmessage); } $receivers = array(); foreach ($emailToList as $emailTo) { if (!$emailTo->email || !JMailHelper::isEmailAddress($emailTo->email)) { continue; } $receivers[] = $emailTo->email; } KunenaEmail::send($mail, $receivers); $this->app->enqueueMessage(JText::_('COM_KUNENA_REPORT_SUCCESS')); } else { $this->app->enqueueMessage(JText::_('COM_KUNENA_REPORT_NOT_SEND')); } } $this->setRedirect($target->getUrl($this->return, false)); }