public static function getXfOptions()
 {
     if (is_null(self::$xfOptions)) {
         self::$xfOptions = XenForo_Application::get('options');
     }
     return self::$xfOptions;
 }
Beispiel #2
0
 public function getActiveRoutes()
 {
     if ($this->routes != null) {
         return $this->routes;
     }
     $routes = trim(XenForo_Application::get('options')->dark_azucloud_routes);
     $routes = explode("\n", str_replace("\r", "", $routes));
     $routes_extra = array();
     foreach ($routes as $key => &$route) {
         $route = trim($route);
         if ($route == '') {
             unset($routes[$key]);
             continue;
         }
         // stick in a slash if there isn't already, otherwise remove it and keep existing either way
         if (substr($route, -1) == '/') {
             $routes_extra[] = substr($route, 0, strlen($route) - 1);
         } else {
             $routes_extra[] = $route . '/';
         }
     }
     $routes = array_merge($routes, $routes_extra);
     $this->routes = $routes;
     return $routes;
 }
Beispiel #3
0
 public static function runSyncGroups()
 {
     $QCDB = WebSync_Database_Core::getQuartzcoreDatabase();
     $options = XenForo_Application::get('options');
     $userModel = XenForo_Model::create('XenForo_Model_User');
     $userFieldModel = XenForo_Model::create('XenForo_Model_UserField');
     if ($options->syncGroups) {
         $fetchOptions = array('validOnly' => true);
         $users = $userModel->getAllUsers($fetchOptions);
         foreach ($users as $user) {
             $hasUpdated = false;
             $coreId = $userFieldModel->getUserFieldValues($user['user_id'])['CoreID'];
             $secondaryGroups = $user['secondary_group_ids'];
             $groups_raw = file_get_contents($options->restApiUrl . 'group.php?action=getAllGroups');
             $groups = json_decode($groups_raw, true);
             while ($groupId = mysqli_fetch_array($groups)) {
                 $group_raw = file_get_contents($options->restApiUrl . 'group.php?action=getGroup&id=' . $groupId);
                 $group = json_decode($group_raw);
                 foreach ($userGroups as $userGroup) {
                     if ($userGroup == $group['site_group_id']) {
                         $player_raw = file_get_contents($options->restApiUrl . 'player.php?action=updatePlayer&id=' . $coreId . '&primaryGroupID=' . $group['id'] . '&apikey=07af7e75676eab410d1f83937d7afb62');
                         $player = json_decode($player_raw, true);
                         $hasUpdated = $player['hasUpdated'];
                     }
                 }
             }
             if ($hasUpdated == false) {
                 $player_raw = file_get_contents($options->restApiUrl . 'player.php?action=updatePlayer&id=' . $coreId . '&primaryGroupID=2&apikey=07af7e75676eab410d1f83937d7afb62');
                 $player = json_decode($player_raw, true);
                 $hasUpdated = $player['hasUpdated'];
             }
         }
     }
 }
Beispiel #4
0
 public function actionFeatured()
 {
     $parent = parent::actionFeatured();
     $options = XenForo_Application::get('options');
     $rmEnabled = $options->dailystats_rm_enable;
     $scEnabled = $options->dailystats_sc_enable;
     $xfmgEnabled = $options->dailystats_xfmg_enable;
     $DailyStatsModel = $this->_getDailyStatsModel();
     $DS_totalUsers = XenForo_Model::create('XenForo_Model_DataRegistry')->get('DS_totalUsers');
     $DS_totalPosts = XenForo_Model::create('XenForo_Model_DataRegistry')->get('DS_totalPosts');
     $DS_totalThreads = XenForo_Model::create('XenForo_Model_DataRegistry')->get('DS_totalThreads');
     $parent->params['DS_totalUsers'] = $DS_totalUsers;
     $parent->params['DS_totalPosts'] = $DS_totalPosts;
     $parent->params['DS_totalThreads'] = $DS_totalThreads;
     //Check if RM option is enabled
     switch ($rmEnabled) {
         case '1':
             $DS_totalResource = XenForo_Model::create('XenForo_Model_DataRegistry')->get('DS_totalResource');
             $parent->params['DS_totalResource'] = $DS_totalResource;
             break;
     }
     //Check if Showcase option is enabled
     switch ($scEnabled) {
         case '1':
             $DS_totalShowcase = XenForo_Model::create('XenForo_Model_DataRegistry')->get('DS_totalShowcase');
             $parent->params['DS_totalShowcase'] = $DS_totalShowcase;
             break;
     }
     return $parent;
 }
Beispiel #5
0
 /**
  *
  * @see XenForo_Route_Prefix_Forums::buildLink()
  */
 public function buildLink($originalPrefix, $outputPrefix, $action, $extension, $data, array &$extraParams)
 {
     if (isset($data['social_forum_id'])) {
         if (ThemeHouse_SocialGroups_SocialForum::hasInstance()) {
             $socialForum = ThemeHouse_SocialGroups_SocialForum::getInstance()->toArray();
         } else {
             $socialForum = $data;
         }
         $class = XenForo_Application::resolveDynamicClass('ThemeHouse_SocialGroups_Route_Prefix_SocialForums', 'route_prefix');
         $router = new $class();
         $link = $router->buildLink('social-forums', 'social-forums', $action, $extension, $socialForum, $extraParams);
         if (XenForo_Application::isRegistered('routeFiltersOut')) {
             $routeFilters = XenForo_Application::get('routeFiltersOut');
             if (isset($routeFilters['social-forums'])) {
                 foreach ($routeFilters['social-forums'] as $filter) {
                     if (array_key_exists('find_route', $filter) && array_key_exists('replace_route', $filter)) {
                         list($from, $to) = XenForo_Link::translateRouteFilterToRegex($filter['find_route'], $filter['replace_route']);
                         $newLink = preg_replace($from, $to, $link);
                     } else {
                         $newLink = $link;
                     }
                     if ($newLink != $link) {
                         $link = $newLink;
                         break;
                     }
                 }
             }
         }
         return $link;
     }
     return parent::buildLink($originalPrefix, $outputPrefix, $action, $extension, $data, $extraParams);
 }
Beispiel #6
0
 public static function navigationTabs(&$extraTabs, $selectedTabId)
 {
     $options = XenForo_Application::get('options');
     if (XenForo_Visitor::getInstance()->hasPermission('players', 'view') && $options->displayPlayersTab && $options->displayPlayers) {
         $extraTabs['players'] = array('title' => new XenForo_Phrase('players'), 'href' => XenForo_Link::buildPublicLink('full:players'), 'position' => 'home', 'linksTemplate' => 'player_tab_links');
     }
 }
Beispiel #7
0
 public function actionGetIndex()
 {
     $messageId = $this->_input->filterSingle('message_id', XenForo_Input::UINT);
     if (!empty($messageId)) {
         return $this->responseReroute(__CLASS__, 'single');
     }
     $conversationId = $this->_input->filterSingle('conversation_id', XenForo_Input::UINT);
     if (empty($conversationId)) {
         return $this->responseError(new XenForo_Phrase('bdapi_slash_conversation_messages_requires_conversation_id'), 400);
     }
     $conversation = $this->_getConversationOrError($conversationId);
     $pageNavParams = array('conversation_id' => $conversation['conversation_id']);
     $page = $this->_input->filterSingle('page', XenForo_Input::UINT);
     $limit = XenForo_Application::get('options')->messagesPerPage;
     $inputLimit = $this->_input->filterSingle('limit', XenForo_Input::UINT);
     if (!empty($inputLimit)) {
         $limit = $inputLimit;
         $pageNavParams['limit'] = $inputLimit;
     }
     $fetchOptions = array('limit' => $limit, 'page' => $page);
     $messages = $this->_getConversationModel()->getConversationMessages($conversation['conversation_id'], $this->_getConversationModel()->getFetchOptionsToPrepareApiDataForMessages($fetchOptions));
     if (!$this->_isFieldExcluded('attachments')) {
         $messages = $this->_getConversationModel()->getAndMergeAttachmentsIntoConversationMessages($messages);
     }
     $total = $conversation['reply_count'] + 1;
     $data = array('messages' => $this->_filterDataMany($this->_getConversationModel()->prepareApiDataForMessages($messages, $conversation)), 'messages_total' => $total);
     bdApi_Data_Helper_Core::addPageLinks($this->getInput(), $data, $limit, $total, $page, 'conversation-messages', array(), $pageNavParams);
     return $this->responseData('bdApi_ViewApi_ConversationMessage_List', $data);
 }
    /**
     * Get the threads watched by a specific user.
     *
     * @param integer $userId
     * @param boolean $newOnly If true, only gets unread threads.
     * @param array $fetchOptions Thread fetch options (uses all valid for
     * XenForo_Model_Thread).
     *
     * @return array Format: [thread_id] => info
     */
    public function getThreadsWatchedByUser($userId, $newOnly, array $fetchOptions = array())
    {
        $fetchOptions['readUserId'] = $userId;
        $fetchOptions['includeForumReadDate'] = true;
        $joinOptions = $this->_getThreadModel()->prepareThreadFetchOptions($fetchOptions);
        $limitOptions = $this->prepareLimitFetchOptions($fetchOptions);
        if ($newOnly) {
            $cutoff = XenForo_Application::$time - XenForo_Application::get('options')->readMarkingDataLifetime * 86400;
            $newOnlyClause = '
				AND thread.last_post_date > ' . $cutoff . '
				AND thread.last_post_date > COALESCE(thread_read.thread_read_date, 0)
				AND thread.last_post_date > COALESCE(forum_read.forum_read_date, 0)
			';
        } else {
            $newOnlyClause = '';
        }
        return $this->fetchAllKeyed($this->limitQueryResults('
				SELECT thread.*
					' . $joinOptions['selectFields'] . '
				FROM xf_forum_watch AS forum_watch
				INNER JOIN xf_thread AS thread ON
					(thread.node_id = forum_watch.node_id)
				' . $joinOptions['joinTables'] . '
				WHERE forum_watch.user_id = ?
					AND thread.discussion_state = \'visible\'
					' . $newOnlyClause . '
				ORDER BY thread.last_post_date DESC
			', $limitOptions['limit'], $limitOptions['offset']), 'thread_id', $userId);
    }
 public function renderCss()
 {
     // re-implement XenForo_CssOutput::renderCss() so we can change how caching works
     $cacheId = $this->getCacheId();
     if ($cacheObject = XenForo_Application::getCache()) {
         if ($cacheCss = $cacheObject->load($cacheId, true)) {
             return $cacheCss . "\n/* CSS returned from cache. */";
         }
     }
     $this->_prepareForOutput();
     if (XenForo_Application::isRegistered('bbCode')) {
         $bbCodeCache = XenForo_Application::get('bbCode');
     } else {
         $bbCodeCache = XenForo_Model::create('XenForo_Model_BbCode')->getBbCodeCache();
     }
     $params = array('displayStyles' => $this->_displayStyles, 'smilieSprites' => $this->_smilieSprites, 'customBbCodes' => !empty($bbCodeCache['bbCodes']) ? $bbCodeCache['bbCodes'] : array(), 'xenOptions' => XenForo_Application::get('options')->getOptions(), 'dir' => $this->_textDirection, 'pageIsRtl' => $this->_textDirection == 'RTL');
     $templates = array();
     foreach ($this->_cssRequested as $cssName) {
         $cssName = trim($cssName);
         if (!$cssName) {
             continue;
         }
         $templateName = $cssName . '.css';
         if (!isset($templates[$templateName])) {
             $templates[$templateName] = new XenForo_Template_Public($templateName, $params);
         }
     }
     $css = self::renderCssFromObjects($templates, XenForo_Application::debugMode());
     $css = self::prepareCssForOutput($css, $this->_textDirection, XenForo_Application::get('options')->minifyCss && $cacheObject);
     if ($cacheObject) {
         $cacheObject->save($css, $cacheId, array(), 86400);
     }
     return $css;
 }
Beispiel #10
0
 /**
  * Converts WYSIWYG editor HTML back to BB code
  *
  * @param string $messageTextHtml HTML to convert
  * @param XenForo_Input $input
  * @param integer $htmlCharacterLimit Max length of HTML before processing; defaults to 4 * message length option
  *
  * @return string BB code input
  */
 public function convertEditorHtmlToBbCode($messageTextHtml, XenForo_Input $input, $htmlCharacterLimit = -1)
 {
     if ($htmlCharacterLimit < 0) {
         $htmlCharacterLimit = 4 * XenForo_Application::get('options')->messageMaxLength;
         // quadruple the limit as HTML can be a lot more verbose
     }
     if ($htmlCharacterLimit && utf8_strlen($messageTextHtml) > $htmlCharacterLimit) {
         throw new XenForo_Exception(new XenForo_Phrase('submitted_message_is_too_long_to_be_processed'), true);
     }
     $options = array();
     $requestPaths = XenForo_Application::get('requestPaths');
     $options['baseUrl'] = $requestPaths['fullBasePath'];
     $relativeResolver = $input->filterSingle('_xfRelativeResolver', XenForo_Input::STRING);
     if ($relativeResolver && isset($_SERVER['HTTP_USER_AGENT'])) {
         if (preg_match('#Firefox/([0-9]+)\\.([0-9]+)\\.([0-9]+)#i', $_SERVER['HTTP_USER_AGENT'], $match)) {
             // FF versions sometime before 3.6.12 have an issue with respecting the base tag of the editor,
             // 3.6.8 is a known version that has problems
             $useResolver = $match[1] <= 3 && $match[2] <= 6 && $match[3] <= 8;
         } else {
             $useResolver = false;
         }
         if ($useResolver) {
             // take off query string and then up to the last directory
             $relativeResolver = preg_replace('/\\?.*$/', '', $relativeResolver);
             $relativeResolver = preg_replace('#/[^/]+$#', '', $relativeResolver);
             $options['baseUrl'] = $relativeResolver;
         }
     }
     $rendered = XenForo_Html_Renderer_BbCode::renderFromHtml($messageTextHtml, $options);
     return trim(XenForo_Input::cleanString($rendered));
 }
Beispiel #11
0
 public static function route($class, array &$extend)
 {
     if (XenForo_Application::get('options')->EWRutiles_Sitemap_memberlist) {
         switch ($class) {
             case 'XenForo_Route_Prefix_Members':
                 $extend[] = 'EWRutiles_Sitemap_Route_Members';
                 break;
             case 'XenForo_Route_Prefix_Online':
                 $extend[] = 'EWRutiles_Sitemap_Route_Online';
                 break;
             case 'XenForo_Route_Prefix_ProfilePosts':
                 $extend[] = 'EWRutiles_Sitemap_Route_ProfilePosts';
                 break;
             case 'XenForo_Route_Prefix_RecentActivity':
                 $extend[] = 'EWRutiles_Sitemap_Route_RecentActivity';
                 break;
             case 'XenForo_Route_Prefix_SpamCleaner':
                 $extend[] = 'EWRutiles_Sitemap_Route_SpamCleaner';
                 break;
             case 'XenForo_Route_Prefix_Warnings':
                 $extend[] = 'EWRutiles_Sitemap_Route_Warning';
                 break;
         }
     }
 }
Beispiel #12
0
 public function bakeBbmTags()
 {
     $bbmTags = BBM_Helper_Bbm::getBbmBbCodes();
     $activeAddons = XenForo_Application::isRegistered('addOns') ? XenForo_Application::get('addOns') : array();
     $visitor = XenForo_Visitor::getInstance();
     if (!is_array($bbmTags)) {
         return false;
     }
     $allBbmTags = array();
     foreach ($bbmTags as $bbm) {
         if (!$bbm['active']) {
             continue;
         }
         if (!empty($activeAddons) && !empty($bbm['bbcode_addon'])) {
             if (!isset($activeAddons[$bbm['bbcode_addon']])) {
                 //Skip Bb Codes linked to an addon when this addon is disabled
                 continue;
             }
         }
         $tagName = $bbm['tag'];
         if (!empty($bbm['preParser'])) {
             $this->addPreParserBbCode($tagName);
         }
     }
     $this->_bbmTags = $allBbmTags;
     /****
      *	XenForo Options - only need to call once the options
      ***/
     $options = XenForo_Application::get('options');
     if (!empty($options->Bbm_PreCache_XenTags)) {
         foreach ($options->Bbm_PreCache_XenTags as $tagName) {
             $this->addPreParserBbCode($tagName);
         }
     }
 }
Beispiel #13
0
 public function __construct()
 {
     $this->_db = XenForo_Application::get('db');
     $this->_importModel = XenForo_Model::create('XenForo_Model_Import');
     $this->_db->setProfiler(false);
     // this causes lots of memory usage in debug mode, so stop that
 }
 public function actionIndex()
 {
     if (!XenForo_Visitor::getInstance()->hasPermission('form', 'viewFormsList')) {
         throw $this->getErrorOrNoPermissionResponseException('do_not_have_permission');
     }
     $formModel = $this->_getFormModel();
     $page = $this->_input->filterSingle('page', XenForo_Input::UINT);
     $formsPerPage = XenForo_Application::get('options')->formsPerPage;
     $visitor = XenForo_Visitor::getInstance();
     $criteria = array('num_fields' => array(1, '>='), 'active' => 1, 'hide_from_list' => 0);
     $fetchOptions = array('perPage' => $formsPerPage, 'page' => $page, 'numResponses' => true, 'numUserResponses' => true, 'permissionCombinationId' => $visitor['permission_combination_id']);
     // sort by display order if custom
     if (XenForo_Application::getOptions()->lpsfSortOrder == 'custom') {
         $fetchOptions['order'] = 'display_order';
     }
     $forms = $formModel->getForms($criteria, $fetchOptions);
     foreach ($forms as $formId => &$form) {
         $form = $formModel->prepareForm($form);
         if (!$formModel->canRespondToForm($form, $errorPhraseKey)) {
             unset($forms[$formId]);
         }
     }
     $viewParams = array('forms' => $forms, 'visibleForms' => count($forms), 'formsPerPage' => $formsPerPage, 'page' => $page, 'totalForms' => $formModel->countForms($criteria));
     return $this->responseView('LiquidPro_SimpleForms_ViewPublic_Form_List', 'form_list', $viewParams);
 }
Beispiel #15
0
 public function logModeratorActionLocal($contentType, array $content, $action, array $actionParams = array(), $parentContent = null, array $logUser = null)
 {
     $xenOptions = XenForo_Application::get('options');
     if ($xenOptions->th_moderatorLog_splitMoveCopyPosts) {
         $existingActions = array('post_copy_target_existing', 'post_move_target_existing');
         $actions = array_merge($existingActions, array('post_copy_target', 'post_move_target'));
         if (in_array($action, $actions)) {
             $newAction = substr($action, strlen('post_'));
             /* @var $postModel XenForo_Model_Post */
             $postModel = $this->getModelFromCache('XenForo_Model_Post');
             $posts = $postModel->getPostsByIds(explode(', ', $actionParams['ids']));
             unset($actionParams['ids']);
             $logId = false;
             $i = 0;
             foreach ($posts as $postId => $post) {
                 if ($i > 0 && !in_array($action, $existingActions)) {
                     $newAction = substr($newAction, 0, strlen('move_target'));
                 }
                 $actionParams['id'] = $postId;
                 $logId = $this->logModeratorActionLocal('post', $post, $newAction, $actionParams, $content, $logUser);
                 $i++;
             }
             return $logId;
         }
     }
     return parent::logModeratorActionLocal($contentType, $content, $action, $actionParams, $parentContent, $logUser);
 }
Beispiel #16
0
 public function actionReportSubmit()
 {
     $options = XenForo_Application::get('options');
     $username = $this->_input->filterSingle('username', XenForo_Input::STRING);
     if ($username !== '') {
         $player_raw = file_get_contents($options->restApiUrl . 'player.php?action=getPlayerByName&username='******'report_content' => XenForo_Input::STRING, 'reporting_id' => XenForo_Input::INT));
         if ($input['report_content'] != null || $input['report_content'] != '') {
             if (isset($player['error'])) {
                 return $this->responseRedirect(4, XenForo_Link::buildPublicLink('full:players'));
             }
             //when reporting use url_encode on content
             $report_raw = file_get_contents($options->restApiUrl . 'player.php?action=reportPlayer&id=' . $player['id'] . '&reporting_id=' . $input['reporting_id'] . '&report=' . urlencode($input['report_content']) . '&apikey=07af7e75676eab410d1f83937d7afb62');
             $report = json_decode($report_raw, true);
             if ($report['reported']) {
                 return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('player', $username), new XenForo_Phrase('thank_you_for_reporting_this_player'));
             }
             $viewParams = array('player' => $player);
             return $this->responseView('QCPlayers_ViewPublic_Player_Report', 'player_report', $viewParams);
         }
         $viewParams = array('player' => $player, 'error' => new XenForo_Phrase('please_enter_a_reason_for_reporting_this_player'));
         return $this->responseView('QCPlayers_ViewPublic_Player_Report', 'player_report', $viewParams);
     }
     //return $this->responseReroutePath('players');
     return $this->responseRedirect(4, XenForo_Link::buildPublicLink('full:players'));
 }
Beispiel #17
0
 public static function templatePostRender($templateName, &$content, array &$containerData, XenForo_Template_Abstract $template)
 {
     $param = array();
     switch ($templateName) {
         case 'node_list.css':
             $cacheDataForum = XenForo_Application::isRegistered('brcnsCacheDataForum') ? XenForo_Application::get('brcnsCacheDataForum') : XenForo_Model::create('XenForo_Model_DataRegistry')->get('brcnsCacheDataForum');
             $cacheDataPage = XenForo_Application::isRegistered('brcnsCacheDataPage') ? XenForo_Application::get('brcnsCacheDataPage') : XenForo_Model::create('XenForo_Model_DataRegistry')->get('brcnsCacheDataPage');
             $cacheDataLink = XenForo_Application::isRegistered('brcnsCacheDataLink') ? XenForo_Application::get('brcnsCacheDataLink') : XenForo_Model::create('XenForo_Model_DataRegistry')->get('brcnsCacheDataLink');
             $cacheDataCategory = XenForo_Application::isRegistered('brcnsCacheDataCategory') ? XenForo_Application::get('brcnsCacheDataCategory') : XenForo_Model::create('XenForo_Model_DataRegistry')->get('brcnsCacheDataCategory');
             $cacheDataCategoryRoot = XenForo_Application::isRegistered('brcnsCacheDataCateRoot') ? XenForo_Application::get('brcnsCacheDataCateRoot') : XenForo_Model::create('XenForo_Model_DataRegistry')->get('brcnsCacheDataCateRoot');
             XenForo_Application::set('brcnsCustomNodeStylesForum', $cacheDataForum);
             XenForo_Application::set('brcnsCustomNodeStylesPage', $cacheDataPage);
             XenForo_Application::set('brcnsCustomNodeStylesLink', $cacheDataLink);
             XenForo_Application::set('brcnsCustomNodeStylesCategory', $cacheDataCategory);
             XenForo_Application::set('brcnsCustomNodeStylesCategoryRoot', $cacheDataCategoryRoot);
             $param['CustomNodeStylesForums'] = XenForo_Application::get('brcnsCustomNodeStylesForum');
             $param['CustomNodeStylesPages'] = XenForo_Application::get('brcnsCustomNodeStylesPage');
             $param['CustomNodeStylesLinks'] = XenForo_Application::get('brcnsCustomNodeStylesLink');
             $param['CustomNodeStylescategories'] = XenForo_Application::get('brcnsCustomNodeStylesCategory');
             $param['CustomNodeStylesCategoriesRoot'] = XenForo_Application::get('brcnsCustomNodeStylesCategoryRoot');
             $options = XenForo_Application::get('options');
             $param['size'] = $options->BRCNS_size_icon;
             $newTemplate = $template->create('BRCNS_custom_node_style.css', $template->getParams());
             $newTemplate->setParams($param);
             $content = $content . $newTemplate->render();
             break;
     }
 }
Beispiel #18
0
 public static function runDailyCleanUp()
 {
     $options = XenForo_Application::get('options');
     $model = XenForo_Model::create('Dark_TaigaChat_Model_TaigaChat');
     if ($options->dark_taigachat_archivethread > 0) {
         $messages = array_reverse($model->getMessagesToday());
         if (count($messages) > 0) {
             $userModel = XenForo_Model::create('XenForo_Model_User');
             $post = "";
             foreach ($messages as $message) {
                 $date = XenForo_Locale::dateTime($message['date'], 'absolute');
                 if ($message['user_id'] > 0) {
                     $url = XenForo_Link::convertUriToAbsoluteUri(XenForo_Link::buildPublicLink("members/" . $message['user_id']), true);
                     $user = "******";
                 } else {
                     $user = "******";
                 }
                 $post .= "{$date} - {$user}: {$message['message']}\r\n";
             }
             $username = "******";
             if ($options->dark_taigachat_archiveuser > 0) {
                 $user = $userModel->getUserById($options->dark_taigachat_archiveuser);
                 $username = $user['username'];
             }
             $writer = XenForo_DataWriter::create('XenForo_DataWriter_DiscussionMessage_Post');
             $writer->setOption(XenForo_DataWriter_DiscussionMessage::OPTION_IS_AUTOMATED, true);
             $writer->set('user_id', $options->dark_taigachat_archiveuser);
             $writer->set('username', $username);
             $writer->set('message', $post);
             $writer->set('thread_id', $options->dark_taigachat_archivethread);
             $writer->save();
         }
     }
     $model->deleteOldMessages();
 }
Beispiel #19
0
 /**
  * Single-stage logout procedure
  */
 public function actionIndex()
 {
     $csrfToken = $this->_input->filterSingle('_xfToken', XenForo_Input::STRING);
     $redirectResponse = $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $this->getDynamicRedirect(false, false));
     $userId = XenForo_Visitor::getUserId();
     if (!$userId) {
         return $redirectResponse;
     }
     if ($this->_noRedirect() || !$csrfToken) {
         // request is likely from JSON, probably XenForo.OverlayTrigger, so show a confirmation dialog
         return $this->responseView('XenForo_ViewPublic_LogOut', 'log_out');
     } else {
         $this->_checkCsrfFromToken($csrfToken);
         // remove an admin session if we're logged in as the same person
         if (XenForo_Visitor::getInstance()->get('is_admin')) {
             $class = XenForo_Application::resolveDynamicClass('XenForo_Session');
             $adminSession = new $class(array('admin' => true));
             $adminSession->start();
             if ($adminSession->get('user_id') == $userId) {
                 $adminSession->delete();
             }
         }
         $this->getModelFromCache('XenForo_Model_Session')->processLastActivityUpdateForLogOut(XenForo_Visitor::getUserId());
         XenForo_Application::get('session')->delete();
         XenForo_Helper_Cookie::deleteAllCookies($this->_getRetainedCookies(), array('user' => array('httpOnly' => false)));
         XenForo_Visitor::setup(0);
         return $redirectResponse;
     }
 }
Beispiel #20
0
 protected static function _getDb()
 {
     if (self::$_db === null) {
         self::$_db = XenForo_Application::get('db');
     }
     return self::$_db;
 }
Beispiel #21
0
 protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject)
 {
     $mediaCloudModel = XenForo_Model::create('EWRmedio_Model_Keywords');
     //		$model = XenForo_Model::create('EWRporta_Model_Options');
     //		$option = $model->getOptionById('MediaCloud');
     $options = XenForo_Application::get('options');
     $sidebar['keywords'] = $mediaCloudModel->getKeywordCloud($options->EWRmedio_cloudcount, $options->EWRmedio_mincloud, $options->EWRmedio_maxcloud);
     if ($options->EWRmedio_animatedcloud && $sidebar['keywords']) {
         $sidebar['animated'] = $mediaCloudModel->getAnimatedCloud($sidebar['keywords']);
     }
     /*		$limit = $option['limit'];
     		$mincloud = $option['mincloud'];
     		$maxcloud = $option['maxcloud'];
     		$animated = $option['animated'];
     		
     		$cloud['keywords'] = $mediaCloudModel->getKeywordCloud($limit, $mincloud, $maxcloud);
     
     		if ($animated && $cloud['keywords'])
     		{
     			$cloud['animated'] = $mediaCloudModel->getAnimatedCloud($cloud['keywords']);
     		}*/
     $viewParams = array('MediaCloud' => $sidebar);
     $renderTemplateObject->setParams($viewParams);
     return $renderTemplateObject->render();
 }
 public static function uninstall()
 {
     $db = XenForo_Application::get('db');
     $db->query("\n            DELETE FROM xf_permission_entry\n            WHERE permission_id in ('attach_count', 'attach_size')\n        ");
     $db->query("\n            DELETE FROM xf_permission_entry_content\n            WHERE permission_id in ('attach_count', 'attach_size')\n        ");
     return true;
 }
Beispiel #23
0
 /**
  *
  * @see XenForo_DataWriter_DiscussionMessage_Post::_messagePreSave()
  */
 protected function _messagePreSave()
 {
     if ($this->isDiscussionFirstMessage() && isset($GLOBALS['XenForo_ControllerPublic_Forum'])) {
         $visitor = XenForo_Visitor::getInstance();
         $this->set('original_poster_th', array('user_id' => $visitor->user_id, 'username' => $visitor->username));
     }
     if (!empty($GLOBALS['XenForo_ControllerPublic_Thread'])) {
         /* @var $controller XenForo_ControllerPublic_Thread */
         $controller = $GLOBALS['XenForo_ControllerPublic_Thread'];
         $this->set('original_poster_th', array('user_id' => $this->get('user_id'), 'username' => $this->get('username')));
         /* @var $userModel XenForo_Model_User */
         $userModel = XenForo_Model::create('XenForo_Model_User');
         $input = $controller->getInput()->filter(array('post_as_user_id' => XenForo_Input::UINT, 'post_as_username' => XenForo_Input::STRING));
         if ($input['post_as_username']) {
             $user = $userModel->getUserByName($input['post_as_username']);
             $input['post_as_user_id'] = $user['user_id'];
         }
         if (!isset($user) && $input['post_as_user_id']) {
             $user = $userModel->getUserById($input['post_as_user_id']);
         }
         if (isset($user) && $userModel->canPostAsDifferentUser($user)) {
             $this->set('user_id', $user['user_id']);
             $this->set('username', $user['username']);
             if (XenForo_Application::get('options')->th_postAsUser_updateLastActivity) {
                 /* @var $userModel XenForo_Model_User */
                 $userModel = $this->getModelFromCache('XenForo_Model_User');
                 $request = $controller->getRequest();
                 $routeMatch = $controller->getRouteMatch();
                 $userModel->updateSessionActivity($user['user_id'], $request->getClientIp(false), $routeMatch->getControllerName(), $routeMatch->getAction(), 'valid', $request->getUserParams());
             }
         }
     }
     parent::_messagePreSave();
 }
Beispiel #24
0
 public function findNewThreads()
 {
     $threadModel = $this->_getThreadModel();
     $searchModel = $this->_getSearchModel();
     $userId = XenForo_Visitor::getUserId();
     $limitOptions = array('limit' => XenForo_Application::get('options')->maximumSearchResults);
     $days = $this->_input->filterSingle('days', XenForo_Input::UINT);
     $recent = $this->_input->filterSingle('recent', XenForo_Input::UINT);
     if ($userId && !$days && !$recent) {
         $threadIds = $threadModel->getUnreadThreadIds($userId, $limitOptions);
         $searchType = 'new-threads';
     } else {
         if ($days < 1) {
             $days = 3;
         }
         $fetchOptions = $limitOptions + array('order' => 'last_post_date', 'orderDirection' => 'desc');
         $threadIds = array_keys($threadModel->getThreads(array('last_post_date' => array('>', XenForo_Application::$time - 86400 * $days), 'deleted' => false, 'moderated' => false), $fetchOptions));
         $searchType = 'recent-threads';
     }
     $results = array();
     foreach ($threadIds as $threadId) {
         $results[] = array(XenForo_Model_Search::CONTENT_TYPE => 'thread', XenForo_Model_Search::CONTENT_ID => $threadId);
     }
     $results = $searchModel->getViewableSearchResults($results);
     if (!$results) {
         return $this->getNoResultsResponse();
     }
     $search = $searchModel->insertSearch($results, $searchType, '', array(), 'date', false);
     return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('find-new/threads', $search));
 }
Beispiel #25
0
 public function renderRss()
 {
     $forum = $this->_params['forum'];
     $buggyXmlNamespace = defined('LIBXML_DOTTED_VERSION') && LIBXML_DOTTED_VERSION == '2.6.24';
     $feed = new Zend_Feed_Writer_Feed();
     $feed->setEncoding('utf-8');
     $feed->setTitle($forum['title']);
     $feed->setDescription($forum['description'] ? $forum['description'] : $forum['title']);
     $feed->setLink(XenForo_Link::buildPublicLink('canonical:forums', $forum));
     if (!$buggyXmlNamespace) {
         $feed->setFeedLink(XenForo_Link::buildPublicLink('canonical:forums.rss', $forum), 'rss');
     }
     $feed->setDateModified(XenForo_Application::$time);
     $feed->setLastBuildDate(XenForo_Application::$time);
     if (XenForo_Application::get('options')->boardTitle) {
         $feed->setGenerator(XenForo_Application::get('options')->boardTitle);
     }
     foreach ($this->_params['threads'] as $thread) {
         // TODO: add contents of first post in future
         // TODO: wrap in exception handling down the line
         $entry = $feed->createEntry();
         $entry->setTitle($thread['title']);
         $entry->setLink(XenForo_Link::buildPublicLink('canonical:threads', $thread));
         $entry->setDateCreated(new Zend_Date($thread['post_date'], Zend_Date::TIMESTAMP));
         $entry->setDateModified(new Zend_Date($thread['last_post_date'], Zend_Date::TIMESTAMP));
         if (!$buggyXmlNamespace) {
             $entry->addAuthor(array('name' => $thread['username'], 'uri' => XenForo_Link::buildPublicLink('canonical:members', $thread)));
             if ($thread['reply_count']) {
                 $entry->setCommentCount($thread['reply_count']);
             }
         }
         $feed->addEntry($entry);
     }
     return $feed->export('rss');
 }
 public function actionAdd()
 {
     $response = parent::actionAdd();
     if ($response instanceof XenForo_ControllerResponse_View) {
         $threadNodeId = $this->_input->filterSingle('thread_node_id', XenForo_Input::UINT);
         if ($threadNodeId && !empty($response->params['categories'])) {
             foreach ($response->params['categories'] as $resourceCategoryId => $category) {
                 if ($category['thread_node_id'] != $threadNodeId) {
                     unset($response->params['categories'][$resourceCategoryId]);
                 }
             }
             $response->params['redirectToThread'] = true;
         } else {
             $redirectToThread = $this->_input->filterSingle('redirect_to_thread', XenForo_Input::UINT);
             if ($redirectToThread) {
                 $response->params['redirectToThread'] = true;
             }
         }
         $addOns = XenForo_Application::get('addOns');
         if (!empty($addOns['ThemeHouse_SocialGroups'])) {
             $socialForumId = $this->_input->filterSingle('social_forum_id', XenForo_Input::UINT);
             if ($socialForumId) {
                 $response->params['socialForumId'] = $socialForumId;
             }
         }
     }
     return $response;
 }
Beispiel #27
0
 /**
  * Helper method to get the database object.
  *
  * @return Zend_Db_Adapter_Abstract
  */
 protected function _getDb()
 {
     if ($this->_db === null) {
         $this->_db = XenForo_Application::get('db');
     }
     return $this->_db;
 }
Beispiel #28
0
 public function actionIndex()
 {
     $codes = $this->_getBbmBBCodeModel()->getAllBbCodes();
     $bbcodesWithCallbackErrors = $this->_classAndMethodIntegrityCheck($codes);
     //Add class
     foreach ($codes as &$code) {
         if ($code['tag'][0] == '@') {
             $code['class'] = 'orphanButton';
             $code['orphanButton'] = true;
         } else {
             $code['class'] = 'normalButton';
             $code['orphanButton'] = false;
         }
         $code['disableAddon'] = false;
         if (XenForo_Application::isRegistered('addOns')) {
             $enableAddons = XenForo_Application::get('addOns');
             if (!empty($code['bbcode_addon']) && !isset($enableAddons[$code['bbcode_addon']])) {
                 $code['class'] .= ' disableAddon';
                 $code['disableAddon'] = true;
             }
         }
     }
     $viewParams = array('codes' => $codes, 'callbackErrors' => $bbcodesWithCallbackErrors, 'permsBbm' => XenForo_Visitor::getInstance()->hasAdminPermission('bbm_BbCodesAndButtons'));
     return $this->responseView('Bbm_ViewAdmin_Bbm_BbCodes_List', 'bbm_bb_codes_list', $viewParams);
 }
Beispiel #29
0
 public function login($username, $password)
 {
     /**
      * @var $loginModel XenForo_Model_Login
      * @var $userModel XenForo_Model_User
      * @var $session XenForo_Session
      */
     $loginModel = XenForo_Model::create('XenForo_Model_Login');
     $userModel = XenForo_Model::create('XenForo_Model_User');
     $userId = $userModel->validateAuthentication($username, $password, $this->error);
     //var_dump($userId);
     //die;
     if (!$userId) {
         $loginModel->logLoginAttempt($username);
         return false;
     }
     $loginModel->clearLoginAttempts($username);
     /* if ($data['remember'])
        {
        $userModel->setUserRememberCookie($userId);
        } */
     XenForo_Model_Ip::log($userId, 'user', $userId, 'login');
     $userModel->deleteSessionActivity(0, $this->getClientIp(false));
     $session = XenForo_Application::get('session');
     //die('aaabb');
     /*if(!$this->session){
           $this->session = XenForo_Application::get('session');
       }*/
     $session->changeUserId($userId);
     XenForo_Visitor::setup($userId);
     $this->visitor = XenForo_Visitor::getInstance();
     $userInfo = $userModel->getFullUserById($this->visitor->getUserId());
     return $userInfo;
 }
Beispiel #30
0
 /**
  * Attempts to match the routing path. See {@link XenForo_Route_Interface} for further details.
  *
  * @param string $routePath Routing path
  * @param Zend_Controller_Request_Http $request Request object
  * @param XenForo_Router $router Routing object
  *
  * @return XenForo_RouteMatch|bool
  */
 public function match($routePath, Zend_Controller_Request_Http $request, XenForo_Router $router)
 {
     if (!XenForo_Application::isRegistered('routeFiltersIn')) {
         return false;
     }
     $filters = XenForo_Application::get('routeFiltersIn');
     if (!$filters) {
         return false;
     }
     foreach ($filters as $filter) {
         if (isset($filter['match_regex'])) {
             $from = $filter['match_regex'];
             $to = $filter['match_replace'];
         } else {
             list($from, $to) = XenForo_Link::translateRouteFilterToRegex(urldecode($filter['replace_route']), urldecode($filter['find_route']));
         }
         $newRoutePath = preg_replace($from, $to, $routePath);
         if ($newRoutePath != $routePath) {
             $match = $router->getRouteMatch();
             $match->setModifiedRoutePath($newRoutePath);
             return $match;
         }
     }
     return false;
 }