Пример #1
0
 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;
 }
Пример #2
0
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 
Пример #3
0
 /**
  * @return string
  * @deprecated K4.0
  */
 public function getThumbnailLink()
 {
     return (string) KunenaLayout::factory('Attachment/Item')->set('attachment', $this)->setLayout('thumbnail');
 }
Пример #4
0
 /**
  * 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' => ''));
 }
Пример #5
0
			</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 
Пример #6
0
 /**
  * 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;
 }
Пример #7
0
 /**
  * @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);
 }
Пример #8
0
	/**
	 * 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));
	}
Пример #9
0
 /**
  * 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>';
     }
 }
Пример #10
0
 /**
  * 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;
 }
Пример #11
0
<?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>
Пример #12
0
 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('&#32;' => '')));
                 $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));
 }