/** * Prepare search results display. * * @return void */ protected function before() { parent::before(); require_once KPATH_SITE . '/models/search.php'; $this->model = new KunenaModelSearch(array(), $this->input); $this->model->initialize($this->getOptions(), $this->getOptions()->get('embedded', false)); $this->state = $this->model->getState(); $this->me = KunenaUserHelper::getMyself(); $this->message_ordering = $this->me->getMessageOrdering(); $this->searchwords = $this->model->getSearchWords(); $this->isModerator = ($this->me->isAdmin() || KunenaAccess::getInstance()->getModeratorStatus()); $this->results = array(); $this->total = $this->model->getTotal(); $this->results = $this->model->getResults(); $this->pagination = new KunenaPagination( $this->total, $this->state->get('list.start'), $this->state->get('list.limit') ); $this->error = $this->model->getError(); }
function __construct($config = array()){ parent::__construct($config); $this->profiler = KunenaProfiler::instance('Kunena'); $this->me = KunenaUserHelper::getMyself(); $this->config = KunenaFactory::getConfig(); $this->template = KunenaFactory::getTemplate(); }
public function __construct($config = array()) { $name = isset($config['name']) ? $config['name'] : $this->getName(); $this->document = JFactory::getDocument(); $this->document->setBase(''); $this->profiler = KunenaProfiler::instance('Kunena'); $this->app = JFactory::getApplication(); $this->me = KunenaUserHelper::getMyself(); $this->config = KunenaFactory::getConfig(); $this->ktemplate = KunenaFactory::getTemplate(); // Set the default template search path if ($this->app->isSite() && !isset($config['template_path'])) { $config['template_path'] = $this->ktemplate->getTemplatePaths("html/{$name}", true); } if ($this->app->isAdmin()) { $templateAdmin = KunenaFactory::getAdminTemplate(); $templateAdmin->initialize(); $config['template_path'] = $templateAdmin->getTemplatePaths($name); } parent::__construct($config); if ($this->app->isSite()) { // Add another template file lookup path specific to the current template $fallback = JPATH_THEMES . "/{$this->app->getTemplate()}/html/com_kunena/{$this->ktemplate->name}/{$this->getName()}"; $this->addTemplatePath($fallback); } // Use our own browser side cache settings. JResponse::allowCache(false); JResponse::setHeader('Expires', 'Mon, 1 Jan 2001 00:00:00 GMT', true); JResponse::setHeader('Last-Modified', gmdate("D, d M Y H:i:s") . ' GMT', true); JResponse::setHeader('Cache-Control', 'no-store, must-revalidate, post-check=0, pre-check=0', true); }
function recount() { $app = JFactory::getApplication (); $state = $app->getUserState ( 'com_kunena.admin.recount', null ); if ($state === null) { // First run $query = "SELECT MAX(id) FROM #__kunena_messages"; $db = JFactory::getDBO(); $db->setQuery ( $query ); $state = new StdClass(); $state->step = 0; $state->maxId = (int) $db->loadResult (); $state->start = 0; } $this->checkTimeout(); while (1) { $count = mt_rand(95000, 105000); switch ($state->step) { case 0: // Update topic statistics kimport('kunena.forum.topic.helper'); KunenaForumTopicHelper::recount(false, $state->start, $state->start+$count); $state->start += $count; //$app->enqueueMessage ( JText::sprintf('COM_KUNENA_ADMIN_RECOUNT_TOPICS', min($state->start, $state->maxId), $state->maxId) ); break; case 1: // Update usertopic statistics kimport('kunena.forum.topic.user.helper'); KunenaForumTopicUserHelper::recount(false, $state->start, $state->start+$count); $state->start += $count; //$app->enqueueMessage ( JText::sprintf('COM_KUNENA_ADMIN_RECOUNT_USERTOPICS', min($state->start, $state->maxId), $state->maxId) ); break; case 2: // Update user statistics kimport('kunena.user.helper'); KunenaUserHelper::recount(); //$app->enqueueMessage ( JText::sprintf('COM_KUNENA_ADMIN_RECOUNT_USER') ); break; case 3: // Update category statistics kimport('kunena.forum.category.helper'); KunenaForumCategoryHelper::recount(); //$app->enqueueMessage ( JText::sprintf('COM_KUNENA_ADMIN_RECOUNT_CATEGORY') ); break; default: $app->setUserState ( 'com_kunena.admin.recount', null ); $app->enqueueMessage (JText::_('COM_KUNENA_RECOUNTFORUMS_DONE')); $this->setRedirect(KunenaRoute::_('index.php?option=com_kunena', false)); return; } if (!$state->start || $state->start > $state->maxId) { $state->step++; $state->start = 0; } if ($this->checkTimeout()) break; } $app->setUserState ( 'com_kunena.admin.recount', $state ); $this->setRedirect(KunenaRoute::_('index.php?option=com_kunena&view=recount&task=recount', false)); }
function check() { $user = KunenaUserHelper::get($this->userid); if (!$user->exists()) { $this->setError ( JText::sprintf ( 'COM_KUNENA_LIB_TABLE_SESSIONS_ERROR_USER_INVALID', (int) $user->userid ) ); } return ($this->getError () == ''); }
/** * Load user profile. * * @return void * * @throws KunenaExceptionAuthorise */ protected function before() { parent::before(); // If profile integration is disabled, this view doesn't exist. $integration = KunenaFactory::getProfile(); if (get_class($integration) == 'KunenaProfileNone') { throw new KunenaExceptionAuthorise(JText::_('COM_KUNENA_PROFILE_DISABLED'), 404); } $userid = $this->input->getInt('userid'); require_once KPATH_SITE . '/models/user.php'; $this->model = new KunenaModelUser(array(), $this->input); $this->model->initialize($this->getOptions(), $this->getOptions()->get('embedded', false)); $this->state = $this->model->getState(); $this->me = KunenaUserHelper::getMyself(); $this->user = JFactory::getUser($userid); $this->profile = KunenaUserHelper::get($userid); $this->profile->tryAuthorise('read'); // Update profile hits. if (!$this->profile->exists() || !$this->profile->isMyself()) { $this->profile->uhits++; $this->profile->save(); } $this->headerText = JText::sprintf('COM_KUNENA_VIEW_USER_DEFAULT', $this->profile->getName()); }
/** * Prepare report message form. * * @return void * * @throws KunenaExceptionAuthorise */ protected function before() { parent::before(); $id = $this->input->getInt('id'); $mesid = $this->input->getInt('mesid'); $me = KunenaUserHelper::getMyself(); if (!$this->config->reportmsg) { // Deny access if report feature has been disabled. throw new KunenaExceptionAuthorise(JText::_('COM_KUNENA_NO_ACCESS'), 404); } if (!$me->exists()) { // Deny access if user is guest. throw new KunenaExceptionAuthorise(JText::_('COM_KUNENA_NO_ACCESS'), 401); } if (!$mesid) { $this->topic = KunenaForumTopicHelper::get($id); $this->topic->tryAuthorise(); } else { $this->message = KunenaForumMessageHelper::get($mesid); $this->message->tryAuthorise(); $this->topic = $this->message->getTopic(); } $this->category = $this->topic->getCategory(); $this->uri = "index.php?option=com_kunena&view=topic&layout=report&catid={$this->category->id}" . "&id={$this->topic->id}" . ($this->message ? "&mesid={$this->message->id}" : ''); }
public function check() { $user = KunenaUserHelper::get($this->userid); $message = KunenaForumMessageHelper::get($this->mesid); if ($this->userid != 0 && !$user->exists()) { $this->setError(JText::sprintf('COM_KUNENA_LIB_TABLE_ATTACHMENTS_ERROR_USER_INVALID', (int) $user->userid)); } if (!$message->exists()) { $this->setError(JText::sprintf('COM_KUNENA_LIB_TABLE_ATTACHMENTS_ERROR_MESSAGE_INVALID', (int) $message->id)); } $this->folder = trim($this->folder, '/'); if (!$this->folder) { $this->setError(JText::_('COM_KUNENA_LIB_TABLE_ATTACHMENTS_ERROR_NO_FOLDER')); } if (!$this->filename) { $this->setError(JText::_('COM_KUNENA_LIB_TABLE_ATTACHMENTS_ERROR_NO_FILENAME')); } $file = JPATH_ROOT . "/{$this->folder}/{$this->filename}"; if (!file_exists($file)) { $this->setError(JText::sprintf('COM_KUNENA_LIB_TABLE_ATTACHMENTS_ERROR_FILE_MISSING', "{$this->folder}/{$this->filename}")); } else { if (!$this->hash) $this->hash = md5_file ( $file ); if (!$this->size) $this->size = filesize ( $file ); } return ($this->getError () == ''); }
public static function markRead(array $ids, $user = null) { $user = KunenaUserHelper::get($user); $items = self::getCategories($ids, $user); $updateList = array(); $insertList = array(); $db = JFactory::getDbo(); $time = JFactory::getDate()->toUnix(); foreach ($items as $item) { if ($item->exists()) { $updateList[] = (int) $item->category_id; } else { $insertList[] = "{$db->quote($user->userid)}, {$db->quote($item->category_id)}, {$db->quote($time)}"; } } if ($updateList) { $idlist = implode(',', $updateList); $query = $db->getQuery(true); $query->update('#__kunena_user_categories')->set("allreadtime={$db->quote($time)}")->where("user_id={$db->quote($user->userid)}")->where("category_id IN ({$idlist})"); $db->setQuery($query); $db->execute(); } if ($insertList) { $query = $db->getQuery(true); $query->insert('#__kunena_user_categories')->columns('user_id, category_id, allreadtime')->values($insertList); $db->setQuery($query); $db->execute(); } }
/** * Prepare announcement list display. * * @return void */ protected function before() { parent::before(); $limit = $this->input->getInt('limit', 0); if ($limit < 1 || $limit > 100) { $limit = 20; } $limitstart = $this->input->getInt('limitstart', 0); if ($limitstart < 0) { $limitstart = 0; } $moderator = KunenaUserHelper::getMyself()->isModerator(); $this->pagination = new KunenaPagination(KunenaForumAnnouncementHelper::getCount(!$moderator), $limitstart, $limit); $this->announcements = KunenaForumAnnouncementHelper::getAnnouncements( $this->pagination->limitstart, $this->pagination->limit, !$moderator ); }
/** * Prepare reply history display. * * @return void */ protected function before() { parent::before(); $id = $this->input->getInt('id'); $this->topic = KunenaForumTopicHelper::get($id); $this->history = KunenaForumMessageHelper::getMessagesByTopic($this->topic, 0, (int) $this->config->historylimit, 'DESC'); $this->replycount = $this->topic->getReplies(); $this->historycount = count($this->history); KunenaAttachmentHelper::getByMessage($this->history); $userlist = array(); foreach ($this->history as $message) { $userlist[(int) $message->userid] = (int) $message->userid; } KunenaUserHelper::loadUsers($userlist); // Run events $params = new JRegistry(); $params->set('ksource', 'kunena'); $params->set('kunena_view', 'topic'); $params->set('kunena_layout', 'history'); $dispatcher = JEventDispatcher::getInstance(); JPluginHelper::importPlugin('kunena'); $dispatcher->trigger('onKunenaPrepare', array('kunena.messages', &$this->history, &$params, 0)); // FIXME: need to improve BBCode class on this... $this->attachments = KunenaAttachmentHelper::getByMessage($this->history); $this->inline_attachments = array(); $this->headerText = JText::_('COM_KUNENA_POST_EDIT') . ' ' . $this->topic->subject; }
function displayDefault() { $this->categories = $this->get('AdminCategories'); $this->pagination = $this->get('AdminNavigation'); // Preprocess the list of items to find ordering divisions. $this->ordering = array(); foreach ($this->categories as &$item) { $this->ordering[$item->parent_id][] = $item->id; } $this->setToolBarDefault(); $this->sortFields = $this->getSortFields(); $this->sortDirectionFields = $this->getSortDirectionFields(); $this->user = JFactory::getUser(); $this->me = KunenaUserHelper::getMyself(); $this->userId = $this->user->get('id'); $this->filterSearch = $this->escape($this->state->get('filter.search')); $this->filterPublished = $this->escape($this->state->get('filter.published')); $this->filterTitle = $this->escape($this->state->get('filter.title')); $this->filterType = $this->escape($this->state->get('filter.type')); $this->filterAccess = $this->escape($this->state->get('filter.access')); $this->filterLocked = $this->escape($this->state->get('filter.locked')); $this->filterReview = $this->escape($this->state->get('filter.review')); $this->filterAllow_polls = $this->escape($this->state->get('filter.allow_polls')); $this->filterAnonymous = $this->escape($this->state->get('filter.anonymous')); $this->filterActive = $this->escape($this->state->get('filter.active')); $this->listOrdering = $this->escape($this->state->get('list.ordering')); $this->listDirection = $this->escape($this->state->get('list.direction')); $this->saveOrder = $this->listOrdering == 'a.ordering' && $this->listDirection == 'asc'; $this->saveOrderingUrl = 'index.php?option=com_kunena&view=categories&task=saveorderajax&tmpl=component'; $this->display(); }
/** * Change topic layout to threaded. * * @return void */ protected function before() { $layout = $this->input->getWord('layout'); KunenaUserHelper::getMyself()->setTopicLayout($layout); parent::before(); }
/** * Load user list. * * @throws KunenaExceptionAuthorise */ protected function before() { parent::before(); $config = KunenaConfig::getInstance(); if ($config->userlist_allowed && JFactory::getUser()->guest) { throw new KunenaExceptionAuthorise(JText::_('COM_KUNENA_NO_ACCESS'), '401'); } require_once KPATH_SITE . '/models/user.php'; $this->model = new KunenaModelUser(array(), $this->input); $this->model->initialize($this->getOptions(), $this->getOptions()->get('embedded', false)); $this->state = $this->model->getState(); $this->me = KunenaUserHelper::getMyself(); $this->config = KunenaConfig::getInstance(); $start = $this->state->get('list.start'); $limit = $this->state->get('list.limit'); // Get list of super admins to exclude or not in filter by configuration. $filter = JAccess::getUsersByGroup(8); $finder = new KunenaUserFinder(); $finder->filterByConfiguration($filter)->filterByName($this->state->get('list.search')); $this->total = $finder->count(); $this->pagination = new KunenaPagination($this->total, $start, $limit); $alias = 'ku'; $aliasList = array('id', 'name', 'username', 'email', 'block', 'registerDate', 'lastvisitDate'); if (in_array($this->state->get('list.ordering'), $aliasList)) { $alias = 'a'; } $this->users = $finder->order($this->state->get('list.ordering'), $this->state->get('list.direction') == 'asc' ? 1 : -1, $alias)->start($this->pagination->limitstart)->limit($this->pagination->limit)->find(); }
/** * @param $user * @param string $task * @param bool $xhtml * * @return bool */ public function getProfileURL($user, $task = '', $xhtml = true) { if ($user == 0) { return false; } if (!$user instanceof KunenaUser) { $user = KunenaUserHelper::get($user); } if ($user === false) { return false; } $userid = "&userid={$user->userid}"; if ($task && $task != 'edit') { // TODO: remove in the future. $do = $task ? '&do=' . $task : ''; return KunenaRoute::_("index.php?option=com_kunena&func=profile{$do}{$userid}", $xhtml); } else { $layout = $task ? '&layout=' . $task : ''; if ($layout) { return KunenaRoute::_("index.php?option=com_kunena&view=user{$layout}{$userid}", $xhtml); } else { return KunenaRoute::getUserUrl($user, $xhtml); } } }
/** * @param bool|array $ids * @param mixed $user * * @return KunenaForumTopicUserRead[] */ static public function getTopics($ids = false, $user = null) { $user = KunenaUserHelper::get($user); if ($ids === false) { return isset(self::$_instances[$user->userid]) ? self::$_instances[$user->userid] : array(); } elseif (!is_array ($ids)) { $ids = array($ids); } // Convert topic objects into ids foreach ($ids as $i=>$id) { if ($id instanceof KunenaForumTopic) $ids[$i] = $id->id; } $ids = array_unique($ids); self::loadTopics($ids, $user); $list = array (); foreach ( $ids as $id ) { if (!empty(self::$_instances [$user->userid][$id])) { $list [$id] = self::$_instances [$user->userid][$id]; } } return $list; }
/** * Prepare topics by pre-loading needed information. * * @param array $userIds List of additional user Ids to be loaded. * @param array $mesIds List of additional message Ids to be loaded. * * @return void */ protected function prepareTopics(array $userIds = array(), array $mesIds = array()) { // Collect user Ids for avatar prefetch when integrated. $lastIds = array(); foreach ($this->topics as $topic) { $userIds[(int) $topic->first_post_userid] = (int) $topic->first_post_userid; $userIds[(int) $topic->last_post_userid] = (int) $topic->last_post_userid; $lastIds[(int) $topic->last_post_id] = (int) $topic->last_post_id; } // Prefetch all users/avatars to avoid user by user queries during template iterations. if (!empty($userIds)) { KunenaUserHelper::loadUsers($userIds); } $topicIds = array_keys($this->topics); KunenaForumTopicHelper::getUserTopics($topicIds); /* KunenaForumTopicHelper::getKeywords($topicIds); */ $mesIds += KunenaForumTopicHelper::fetchNewStatus($this->topics); // Fetch also last post positions when user can see unapproved or deleted posts. // TODO: Optimize? Take account of configuration option... if ($this->me->isAdmin() || KunenaAccess::getInstance()->getModeratorStatus()) { $mesIds += $lastIds; } // Load position information for all selected messages. if ($mesIds) { KunenaForumMessageHelper::loadLocation($mesIds); } }
/** * Prepare login display. * * @return boolean */ protected function before() { parent::before(); $login = KunenaLogin::getInstance(); if (!$login->enabled()) { return false; } $this->me = KunenaUserHelper::getMyself(); $this->name = $this->me->exists() ? 'Widget/Login/Logout' : 'Widget/Login/Login'; $this->my = JFactory::getUser(); if ($this->my->guest) { $this->registrationUrl = $login->getRegistrationUrl(); $this->resetPasswordUrl = $login->getResetUrl(); $this->remindUsernameUrl = $login->getRemindUrl(); $this->rememberMe = $login->getRememberMe(); } else { $this->lastvisitDate = KunenaDate::getInstance($this->my->lastvisitDate); $private = KunenaFactory::getPrivateMessaging(); if ($private) { $count = $private->getUnreadCount($this->me->userid); $this->inboxCount = $count ? JText::sprintf('COM_KUNENA_PMS_INBOX_NEW', $count) : JText::_('COM_KUNENA_PMS_INBOX'); $this->pm_link = $private->getInboxURL(); } // Display announcements. if ($this->me->isModerator()) { $this->announcementsUrl = KunenaForumAnnouncementHelper::getUrl('list'); } } return true; }
/** * Get categories for a specific user. * * @param bool|array|int $ids The category ids to load. * @param mixed $user The user id to load. * * @return KunenaForumCategoryUser[] */ public static function getCategories($ids = false, $user = null) { $user = KunenaUserHelper::get($user); if ($ids === false) { // Get categories which are seen by current user $ids = KunenaForumCategoryHelper::getCategories(); } elseif (!is_array($ids)) { $ids = array($ids); } // Convert category objects into ids foreach ($ids as $i => $id) { if ($id instanceof KunenaForumCategory) { $ids[$i] = $id->id; } } $ids = array_unique($ids); self::loadCategories($ids, $user); $list = array(); foreach ($ids as $id) { if (!empty(self::$_instances[$user->userid][$id])) { $list[$id] = self::$_instances[$user->userid][$id]; } } return $list; }
/** * Prepare message actions display. * * @return void */ protected function before() { parent::before(); $catid = $this->input->getInt('id'); $me = KunenaUserHelper::getMyself(); $this->category = KunenaForumCategory::getInstance($catid); $token = JSession::getFormToken(); $task = "index.php?option=com_kunena&view=category&task=%s&catid={$catid}&{$token}=1"; $layout = "index.php?option=com_kunena&view=topic&layout=%s&catid={$catid}"; $this->template = KunenaFactory::getTemplate(); $this->categoryButtons = new JObject(); // Is user allowed to post new topic? if ($this->category->getNewTopicCategory()->exists()) { $this->categoryButtons->set('create', $this->getButton(sprintf($layout, 'create'), 'create', 'topic', 'communication', true)); } // Is user allowed to mark forums as read? if ($me->exists()) { $this->categoryButtons->set('markread', $this->getButton(sprintf($task, 'markread'), 'markread', 'category', 'user', true)); } // Is user allowed to subscribe category? if ($this->category->isAuthorised('subscribe')) { $subscribed = $this->category->getSubscribed($me->userid); if (!$subscribed) { $this->categoryButtons->set('subscribe', $this->getButton(sprintf($task, 'subscribe'), 'subscribe', 'category', 'user', true)); } else { $this->categoryButtons->set('unsubscribe', $this->getButton(sprintf($task, 'unsubscribe'), 'unsubscribe', 'category', 'user', true)); } } JPluginHelper::importPlugin('kunena'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onKunenaGetButtons', array('category.action', $this->categoryButtons, $this)); }
/** * Prepare user attachments list. * * @return void */ protected function before() { parent::before(); $userid = $this->input->getInt('userid'); $params = array('file' => '1', 'image' => '1', 'orderby' => 'desc', 'limit' => '30'); $this->template = KunenaFactory::getTemplate(); $this->me = KunenaUserHelper::getMyself(); $this->profile = KunenaUserHelper::get($userid); $this->attachments = KunenaAttachmentHelper::getByUserid($this->profile, $params); // Pre-load messages. $messageIds = array(); foreach ($this->attachments as $attachment) { $messageIds[] = (int) $attachment->mesid; } $messages = KunenaForumMessageHelper::getMessages($messageIds, 'none'); // Pre-load topics. $topicIds = array(); foreach ($messages as $message) { $topicIds[] = $message->thread; } KunenaForumTopicHelper::getTopics($topicIds, 'none'); $this->headerText = JText::_('COM_KUNENA_MANAGE_ATTACHMENTS'); }
public function __construct($config = array()) { parent::__construct($config); $this->app = JFactory::getApplication(); $this->me = KunenaUserHelper::getMyself(); $this->config = KunenaFactory::getConfig(); }
public function __construct() { parent::__construct(); $this->profiler = KunenaProfiler::instance('Kunena'); $this->app = JFactory::getApplication(); $this->me = KunenaUserHelper::getMyself(); $this->config = KunenaFactory::getConfig(); }
/** * @access public * @return void */ public function __construct() { $this->_db = JFactory::getDBO (); $this->_my = JFactory::getUser (); $this->_me = KunenaUserHelper::getMyself (); $this->_config = KunenaFactory::getConfig (); $this->_ResetErrorMessage (); }
public function getUser() { $userid = $this->getState($this->getName() . '.id'); $user = KunenaUserHelper::get($userid); return $user; }
/** * Prepare ban form. * * @return void * * @throws KunenaExceptionAuthorise */ protected function before() { parent::before(); $userid = $this->input->getInt('userid'); $this->profile = KunenaUserHelper::get($userid); $this->profile->tryAuthorise('ban'); $this->banInfo = KunenaUserBan::getInstanceByUserid($userid, true); $this->headerText = $this->banInfo->exists() ? JText::_('COM_KUNENA_BAN_EDIT') : JText::_('COM_KUNENA_BAN_NEW'); }
/** * Gets the users avatars from Kunena * * @param array $userIds - array with user ids * * @return array */ public static function getAvatars($userIds) { $avatars = array(); $users = KunenaUserHelper::loadUsers($userIds); foreach ($users as $user) { $avatars[$user->userid] = $user->getAvatarURL(); } return $avatars; }
/** * @param array $config * @param JInput $input * * @throws Exception */ public function __construct($config = array(), JInput $input = null) { $this->option = 'com_kunena'; parent::__construct($config); $this->app = JFactory::getApplication(); $this->me = KunenaUserHelper::getMyself(); $this->config = KunenaFactory::getConfig(); $this->input = $input ? $input : $this->app->input; }
static public function getSubscriptions($user = null) { $user = KunenaUserHelper::get($user); $db = JFactory::getDBO (); $query = "SELECT category_id FROM #__kunena_user_categories WHERE user_id={$db->Quote($user->userid)} AND subscribed=1"; $db->setQuery ( $query ); $subscribed = (array) $db->loadResultArray (); if (KunenaError::checkDatabaseError()) return; return KunenaForumCategoryHelper::getCategories($subscribed); }
/** * Prepare topic reply form. * * @return void * * @throws RuntimeException * @throws KunenaExceptionAuthorise */ protected function before() { parent::before(); $catid = $this->input->getInt('catid'); $id = $this->input->getInt('id'); $mesid = $this->input->getInt('mesid'); $quote = $this->input->getBool('quote', false); $saved = $this->app->getUserState('com_kunena.postfields'); $this->me = KunenaUserHelper::getMyself(); $this->template = KunenaFactory::getTemplate(); if (!$mesid) { $this->topic = KunenaForumTopicHelper::get($id); $parent = KunenaForumMessageHelper::get($this->topic->first_post_id); } else { $parent = KunenaForumMessageHelper::get($mesid); $this->topic = $parent->getTopic(); } $this->category = $this->topic->getCategory(); if ($parent->isAuthorised('reply') && $this->me->canDoCaptcha()) { if (JPluginHelper::isEnabled('captcha')) { $plugin = JPluginHelper::getPlugin('captcha'); $params = new JRegistry($plugin[0]->params); $captcha_pubkey = $params->get('public_key'); $catcha_privkey = $params->get('private_key'); if (!empty($captcha_pubkey) && !empty($catcha_privkey)) { JPluginHelper::importPlugin('captcha'); $dispatcher = JDispatcher::getInstance(); $result = $dispatcher->trigger('onInit', 'dynamic_recaptcha_1'); $this->captchaEnabled = $result[0]; } } else { $this->captchaEnabled = false; } } $parent->tryAuthorise('reply'); // Run event. $params = new JRegistry(); $params->set('ksource', 'kunena'); $params->set('kunena_view', 'topic'); $params->set('kunena_layout', 'reply'); $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin('kunena'); $dispatcher->trigger('onKunenaPrepare', array('kunena.topic', &$this->topic, &$params, 0)); // Can user edit topic icons? if ($this->config->topicicons && $this->topic->isAuthorised('edit')) { $this->topicIcons = $this->template->getTopicIcons(false, $saved ? $saved['icon_id'] : $this->topic->icon_id); } list($this->topic, $this->message) = $parent->newReply($saved ? $saved : $quote); $this->action = 'post'; $this->allowedExtensions = KunenaAttachmentHelper::getExtensions($this->category); $this->post_anonymous = $saved ? $saved['anonymous'] : !empty($this->category->post_anonymous); $this->subscriptionschecked = $saved ? $saved['subscribe'] : $this->config->subscriptionschecked == 1; $this->app->setUserState('com_kunena.postfields', null); $this->canSubscribe = $this->canSubscribe(); $this->headerText = JText::_('COM_KUNENA_BUTTON_MESSAGE_REPLY') . ' ' . $this->topic->subject; }