示例#1
0
 protected function _preSave()
 {
     parent::_preSave();
     $code = $this->get('affiliate_code');
     if (empty($code)) {
         $this->setAffiliateCode();
     }
     if ($this->isInsert()) {
         $invitationModel = $this->_getInvitationModel();
         $cookieVal = XenForo_Helper_Cookie::getCookie('ref');
         if ($cookieVal) {
             $cookieParts = explode('_', $cookieVal);
             if (isset($cookieParts[1])) {
                 $ref = $cookieParts[1];
                 $invitation = false;
                 if ($cookieParts[0] == 'u') {
                     $invitation = $invitationModel->getUserByCode($ref);
                 } else {
                     if ($cookieParts[0] == 'i') {
                         $invitation = $invitationModel->getInvitationByCode($ref);
                     }
                 }
                 if ($invitation) {
                     if ($cookieParts[0] == 'i') {
                         self::$_invitationId = $invitation['invite_id'];
                     }
                     $this->set('ref_user_id', $invitation['user_id']);
                 }
             }
         }
     }
 }
示例#2
0
文件: Blocks.php 项目: Sywooch/forums
 public function getBlocks($getCookies = false, $layout1 = false, $layout2 = false, $layout3 = false)
 {
     if ($layout1) {
         if ($layout1 && ($layout = $this->getModelFromCache('EWRporta_Model_Layouts')->getLayoutById($layout1)) || $layout2 && ($layout = $this->getModelFromCache('EWRporta_Model_Layouts')->getLayoutById($layout2)) || $layout3 && ($layout = $this->getModelFromCache('EWRporta_Model_Layouts')->getLayoutById($layout3))) {
             $layout = unserialize($layout['blocks']);
         } elseif ($layout1 != 'portal') {
             return array();
         }
     }
     $blocks = $this->fetchAllKeyed("\n\t\t\tSELECT *, 'disabled' AS position\n\t\t\t\tFROM EWRporta_blocks\n\t\t\tWHERE active = 1\n\t\t\tORDER BY block_id ASC\n\t\t", 'block_id');
     if (!empty($layout)) {
         $_blocks = array();
         foreach ($layout as $key => $position) {
             if (!empty($blocks[$key])) {
                 $_blocks[$key] = array('position' => $position) + $blocks[$key];
             }
         }
         $blocks = $_blocks + $blocks;
     }
     if ($getCookies && ($cookies = XenForo_Helper_Cookie::getCookie('EWRporta'))) {
         $_blocks = array();
         foreach ($cookies as $key => $cookie) {
             if (!empty($blocks[$key]) && !empty($cookie['position'])) {
                 $position = $blocks[$key]['locked'] ? $blocks[$key]['position'] : $cookie['position'];
                 $_blocks[$key] = array('position' => $position) + $blocks[$key];
             }
         }
         $blocks = $_blocks + $blocks;
     }
     return $blocks;
 }
示例#3
0
 public static function getVisitor(XenForo_Visitor &$visitor)
 {
     if (class_exists('Sedo_DetectBrowser_Listener_Visitor') && isset($visitor->getBrowser['isMobile'])) {
         //External Addon
         $isMobile = $visitor->getBrowser['isMobile'];
         $isTablet = $visitor->getBrowser['isTablet'];
     } else {
         //XenForo
         $isMobile = XenForo_Visitor::isBrowsingWith('mobile');
         $isTablet = '';
     }
     if (!empty($isMobile)) {
         $options = XenForo_Application::get('options');
         $mobileStyle = $options->sedoDefaultMobileStyle;
         if (!empty($isTablet)) {
             $mobileStyle = $options->sedoDefaultTabletStyle;
         }
         if (!empty($visitor['user_id'])) {
             //Only for members => guests use the default style option (unless they have choosen to use another style =>cookie: style_id)
             XenForo_Helper_Cookie::deleteCookie('style_id');
             //case: visitor changed the default style, then log
             $getCookie = XenForo_Helper_Cookie::getCookie('mobile_style_id');
             // the mobile_style_id is set here: Sedo_MobileStyleSelector_ControllerPublic_Misc
             if ($getCookie == false) {
                 //No cookie => continue to force mobile style
                 $visitor['style_id'] = $mobileStyle;
             }
         }
         //Force style
         if ($options->sedoForceMobileStyle && $visitor->style_id != $mobileStyle) {
             $visitor['style_id'] = $mobileStyle;
         }
     }
 }
示例#4
0
文件: Prefs.php 项目: samuelsweet/xf
 public function loadInput($input)
 {
     $prefs = ['pref_location' => $input->filterSingle('pref_location', XenForo_Input::STRING, ['default' => '']), 'pref_distance' => $input->filterSingle('pref_distance', XenForo_Input::UINT, ['default' => 0]), 'pref_city' => $input->filterSingle('pref_city', XenForo_Input::STRING, ['default' => '']), 'pref_country' => $input->filterSingle('pref_country', XenForo_Input::STRING, ['default' => '']), 'pref_lat' => $input->filterSingle('pref_lat', XenForo_Input::FLOAT, ['default' => '0']), 'pref_lng' => $input->filterSingle('pref_lng', XenForo_Input::FLOAT, ['default' => '0']), 'pref_cats' => $input->filterSingle('pref_cats', XenForo_Input::ARRAY_SIMPLE, ['default' => [7]]), 'pref_subcats' => $input->filterSingle('pref_subcats', XenForo_Input::ARRAY_SIMPLE, ['default' => [31]]), 'pref_alert_on_new' => $input->filterSingle('pref_alert_on_new', XenForo_Input::INT, ['default' => 1]), 'pref_email_on_new' => $input->filterSingle('pref_email_on_new', XenForo_Input::INT, ['default' => 1]), 'pref_cat' => 0, 'pref_subcat' => 0];
     $subcat = $cat = 0;
     foreach (array_keys($prefs['pref_cats']) as $val) {
         $cat += (int) $val;
     }
     foreach (array_keys($prefs['pref_subcats']) as $val) {
         $subcat += (int) $val;
     }
     $saved_prefs = ['pref_location' => '', 'pref_distance' => 0, 'pref_city' => '', 'pref_country' => '', 'pref_lat' => 0, 'pref_lng' => 0, 'pref_cats' => 7, 'pref_subcats' => 31, 'pref_alert_on_new' => 1, 'pref_email_on_new' => 1, 'pref_cat' => 0, 'pref_subcat' => 0];
     if ($this->userId > 0) {
         //use data
         $_db = $_db = XenForo_Application::getDb();
         $saved_prefs = $_db->fetchRow("SELECT * FROM geek_listings_prefs WHERE pref_user_id=? AND pref_type_id=? ", [$this->userId, $this->typeId]);
     } else {
         //use cookies?
         $test = XenForo_Helper_Cookie::getCookie('GeekListing_prefs_' . $this->type['pref_type_id']);
         if ($test) {
             $saved_prefs = unserialize($test);
         }
     }
     $save = $prefs['pref_cat'] != $cat || $prefs['pref_subcat'] != $subcat || $prefs['pref_location'] != $saved_prefs['pref_location'] || $prefs['pref_lat'] != $saved_prefs['pref_lat'] || $prefs['pref_lng'] != $saved_prefs['pref_lng'] || $prefs['pref_alert_on_new'] != $saved_prefs['pref_alert_on_new'] || $prefs['pref_email_on_new'] != $saved_prefs['pref_email_on_new'] || $prefs['pref_city'] != $saved_prefs['pref_city'] || $prefs['pref_country'] != $saved_prefs['pref_country'];
     $prefs['pref_cat'] = $cat;
     $prefs['pref_subcat'] = $subcat;
     if ($save) {
         $this->save($prefs);
     }
 }
示例#5
0
文件: Portal.php 项目: Sywooch/forums
 public function actionRevert()
 {
     if ($cookies = XenForo_Helper_Cookie::getCookie('EWRporta')) {
         foreach ($cookies as $key => $cookie) {
             XenForo_Helper_Cookie::deleteCookie('EWRporta[' . $key . '][order]');
             XenForo_Helper_Cookie::deleteCookie('EWRporta[' . $key . '][position]');
         }
     }
     return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('portal/blocks'));
 }
示例#6
0
 /**
  * Fetches $styleId from cookie if it's available, or returns the default style ID.
  *
  * @param int $allowMaster If true, allow the master style to be returned
  *
  * @return integer
  */
 public function getStyleIdFromCookie($allowMaster = true)
 {
     $styleId = XenForo_Helper_Cookie::getCookie('edit_style_id');
     if ($styleId === false) {
         $styleId = XenForo_Application::debugMode() ? 0 : XenForo_Application::get('options')->defaultStyleId;
     }
     if ((!$allowMaster || !XenForo_Application::debugMode()) && !$styleId) {
         $styleId = XenForo_Application::get('options')->defaultStyleId;
     }
     return $styleId;
 }
示例#7
0
 public function actionIndex()
 {
     $class = $this->_input->filterSingle('class', XenForo_Input::STRING);
     if ($class) {
         return $this->responseReroute(__CLASS__, 'view');
     }
     $addOns = $this->_getAddOnModel()->getAllAddOns();
     $xenOptions = XenForo_Application::get('options');
     $addOnSelected = '';
     if ($xenOptions->th_dataWriters_enableAddOnChooser) {
         $addOnId = $this->_input->filterSingle('addon_id', XenForo_Input::STRING);
         if (!empty($GLOBALS['ThemeHouse_DataWriters_Route_PrefixAdmin_DataWriters']) && !$addOnId) {
             $addOnId = XenForo_Helper_Cookie::getCookie('edit_addon_id');
         }
         if ($addOnId && !empty($addOns[$addOnId])) {
             XenForo_Helper_Cookie::setCookie('edit_addon_id', $addOnId);
             $addOn = $addOns[$addOnId];
             $addOnSelected = $addOnId;
             $this->canonicalizeRequestUrl(XenForo_Link::buildAdminLink('add-ons/data-writers', $addOn));
         } else {
             $this->canonicalizeRequestUrl(XenForo_Link::buildAdminLink('add-ons/data-writers'));
             XenForo_Helper_Cookie::deleteCookie('edit_addon_id');
         }
     }
     $addOns['XenForo'] = array('addon_id' => 'XenForo', 'active' => true, 'title' => 'XenForo');
     $rootPath = XenForo_Autoloader::getInstance()->getRootDir();
     $dataWriters = array();
     $dataWriterCount = 0;
     $totalDataWriters = 0;
     foreach ($addOns as $addOnId => $addOn) {
         $dataWriterPath = $rootPath . DIRECTORY_SEPARATOR . str_replace('_', DIRECTORY_SEPARATOR, $addOnId) . DIRECTORY_SEPARATOR . 'DataWriter';
         if (!file_exists($dataWriterPath)) {
             continue;
         }
         $directory = new RecursiveDirectoryIterator($dataWriterPath);
         $iterator = new RecursiveIteratorIterator($directory);
         $regex = new RegexIterator($iterator, '/^.+\\.php$/i', RecursiveRegexIterator::GET_MATCH);
         foreach ($regex as $fileinfo) {
             $classPath = str_replace($rootPath, '', $fileinfo[0]);
             $classPath = pathinfo($classPath, PATHINFO_DIRNAME) . DIRECTORY_SEPARATOR . pathinfo($classPath, PATHINFO_FILENAME);
             $dirs = explode(DIRECTORY_SEPARATOR, $classPath);
             $dirs = array_filter($dirs);
             $className = implode('_', $dirs);
             if (!$xenOptions->th_dataWriters_enableAddOnChooser || !$addOnSelected || $addOnId == $addOnSelected) {
                 $dataWriters[$addOnId][$className] = array('class' => $className, 'filename' => pathinfo($classPath, PATHINFO_FILENAME));
                 $dataWriterCount++;
             }
             $totalDataWriters++;
         }
     }
     unset($addOns['XenForo']);
     $viewParams = array('addOns' => $addOns, 'addOnSelected' => $addOnSelected, 'dataWriters' => $dataWriters, 'dataWriterCount' => $dataWriterCount, 'totalDataWriters' => $totalDataWriters);
     return $this->responseView('ThemeHouse_DataWriters_ViewAdmin_DataWriter_List', 'th_datawriter_list_datawriters', $viewParams);
 }
示例#8
0
 /**
  * Fetches $styleId from cookie if it's available, or returns the default style ID.
  *
  * @return integer
  */
 protected function _getStyleIdFromCookie()
 {
     $styleId = XenForo_Helper_Cookie::getCookie('edit_style_id');
     if ($styleId === false) {
         $styleId = XenForo_Application::debugMode() ? 0 : XenForo_Application::get('options')->defaultStyleId;
     }
     if (!XenForo_Application::debugMode() && !$styleId) {
         $styleId = XenForo_Application::get('options')->defaultStyleId;
     }
     return $styleId;
 }
示例#9
0
 /**
  * Gets the selected inline mod IDs.
  *
  * @param boolean $fromCookie True to read from the cookie input
  *
  * @return array
  */
 public function getInlineModIds($fromCookie = true)
 {
     $ids = $this->_input->filterSingle($this->inlineModKey, XenForo_Input::UINT, array('array' => true));
     if ($fromCookie) {
         $cookie = XenForo_Helper_Cookie::getCookie('inlinemod_' . $this->inlineModKey);
         if (is_string($cookie)) {
             $ids = array_merge($ids, explode(',', $cookie));
             $ids = array_map('intval', $ids);
             $ids = array_unique($ids);
         }
     }
     return $ids;
 }
示例#10
0
 public function setupVisitorFromUpgradeCookie()
 {
     $cookie = XenForo_Helper_Cookie::getCookie('upgrade');
     if (!$cookie) {
         return false;
     }
     /** @var $userModel XenForo_Model_User */
     $userModel = $this->getModelFromCache('XenForo_Model_User');
     $userId = $userModel->loginUserByRememberCookie($cookie);
     if ($userId) {
         XenForo_Visitor::setup($userId);
     }
     return $userId;
 }
示例#11
0
文件: Helper.php 项目: Sywooch/forums
 public static function getContentSort(&$order, &$orderDirection, &$defaultOrder = null, &$defaultOrderDirection = null)
 {
     $xenOptions = XenForo_Application::getOptions();
     $defaultOrder = $xenOptions->sonnbXG_sortPhoto;
     switch ($defaultOrder) {
         case 'content_updated_date':
         case 'content_date':
         case 'comment_count':
         case 'view_count':
         case 'likes':
         case 'recently_liked':
             $defaultOrderDirection = 'desc';
             break;
         case 'position':
         default:
             $defaultOrder = 'position';
             $defaultOrderDirection = 'asc';
             break;
     }
     $orderCookie = XenForo_Helper_Cookie::getCookie('sonnbXG_content_order');
     if (empty($order)) {
         if ($orderCookie === false) {
             $order = $defaultOrder;
             XenForo_Helper_Cookie::setCookie('sonnbXG_content_order', $order);
         } else {
             $order = $orderCookie;
         }
     } elseif ($orderCookie !== $order) {
         XenForo_Helper_Cookie::setCookie('sonnbXG_content_order', $order);
     }
     switch ($order) {
         case 'content_updated_date':
         case 'content_date':
         case 'comment_count':
         case 'view_count':
         case 'likes':
         case 'recently_liked':
             $defaultOrderDirection = 'desc';
             break;
         case 'position':
         default:
             $defaultOrderDirection = 'asc';
             break;
     }
     if (empty($orderDirection)) {
         $orderDirection = $defaultOrderDirection;
     }
 }
示例#12
0
文件: Tools.php 项目: Sywooch/forums
 public function actionRunDeferred()
 {
     $redirect = $this->getDynamicRedirectIfNot(XenForo_Link::buildAdminLink('tools/run-deferred'));
     $input = $this->_input->filter(array('execute' => XenForo_Input::UINT));
     /* @var $deferModel XenForo_Model_Deferred */
     $deferModel = $this->getModelFromCache('XenForo_Model_Deferred');
     $status = '';
     $canCancel = false;
     if (XenForo_Helper_Cookie::getCookie('cancel_defer')) {
         $deferModel->cancelFirstRunnableDeferred();
         XenForo_Helper_Cookie::deleteCookie('cancel_defer');
     }
     if ($input['execute'] && $this->_request->isPost()) {
         $continued = $deferModel->run(true, null, $status, $canCancel);
         if (!$continued) {
             return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $redirect);
         }
     }
     $viewParams = array('status' => $status, 'canCancel' => $canCancel, 'redirect' => $redirect);
     $containerParams = array('containerTemplate' => 'PAGE_CONTAINER_SIMPLE', 'allowManualDeferredRun' => false);
     return $this->responseView('XenForo_ViewAdmin_Tools_RunDeferred', 'tools_run_deferred', $viewParams, $containerParams);
 }
示例#13
0
 /**
  *
  * @see XenForo_ControllerAdmin_Phrase::_getPhraseAddEditResponse()
  */
 protected function _getPhraseAddEditResponse(array $phrase, $inputLanguageId, $inputPhraseId = 0)
 {
     $response = parent::_getPhraseAddEditResponse($phrase, $inputLanguageId, $inputPhraseId = 0);
     if ($response instanceof XenForo_ControllerResponse_View) {
         $addOnId = $this->_input->filterSingle('addon_id', XenForo_Input::STRING);
         if (!empty($GLOBALS['XenForo_Route_PrefixAdmin_Phrases']) && !$addOnId) {
             $addOnId = XenForo_Helper_Cookie::getCookie('edit_addon_id');
         }
         if ($addOnId && empty($phrase['addon_id'])) {
             $template['addon_id'] = $addOnId;
             $response->params['addOnSelected'] = $addOnId;
         }
         $phrase = $response->params['phrase'];
         if (empty($phrase['title'])) {
             $title = $this->_input->filterSingle('title', XenForo_Input::STRING);
             $response->params['phrase']['title'] = $title;
         }
         if (empty($response->params['redirect'])) {
             $response->params['redirect'] = $this->getDynamicRedirect();
         }
     }
     return $response;
 }
示例#14
0
文件: Base.php 项目: samuelsweet/xf
 protected function _preDispatch($action)
 {
     parent::_preDispatch($action);
     $this->_visitor = XenForo_Visitor::getInstance();
     if (!$this->_type['type_perms']) {
         $this->_type['type_perms'] = [];
     } else {
         $this->_type['type_perms'] = unserialize($this->_type['type_perms']);
     }
     if ($this->_visitor['user_id']) {
         $this->_filter = $this->_getFilterModel()->getByUserIdAndType($this->_visitor['user_id'], $this->_type['type_id']);
     } else {
         $test = XenForo_Helper_Cookie::getCookie('GeekListing_filter_' . $this->_type['type_id']);
         if ($test !== false) {
             $this->_filter = @unserialize($test);
         }
     }
     foreach ($this->_type['type_perms'] as $k => $v) {
         $yes = false;
         if (is_array($v) && in_array(-1, $v)) {
             $yes = true;
         } else {
             if (is_array($v)) {
                 foreach ($v as $p) {
                     if ($this->_visitor->isMemberOf($p, true)) {
                         $yes = true;
                         break;
                     }
                 }
             } else {
                 $yes = $this->_visitor->isMemberOf($v, true);
             }
         }
         $this->_perms[$k] = $yes;
     }
 }
示例#15
0
 public function actionMultiQuote()
 {
     $input = $this->_input->filter(array('formId' => XenForo_Input::STRING, 'quoteSelections' => array(XenForo_Input::STRING, 'array' => true)));
     if ($this->_request->has('postIds')) {
         $mode = 'quote';
         $quoteIds = $this->_input->filterSingle('postIds', array(XenForo_Input::STRING, 'array' => true));
         $postIds = array();
         foreach ($quoteIds as $quoteId) {
             $postId = preg_replace('/^(\\d+)(-\\d+)?$/', '$1', $quoteId);
             $postIds[$postId] = $postId;
         }
     } else {
         $mode = 'overlay';
         $cookieValue = XenForo_Helper_Cookie::getCookie('MultiQuote');
         $postIds = explode(',', $cookieValue);
     }
     if (empty($postIds)) {
         return $this->responseError(new XenForo_Phrase('no_messages_selected'));
     }
     $visitor = XenForo_Visitor::getInstance();
     $threadModel = $this->_getThreadModel();
     $postModel = $this->_getPostModel();
     $posts = $postModel->getPostsByIds($postIds, array('join' => XenForo_Model_Post::FETCH_USER | XenForo_Model_Post::FETCH_THREAD | XenForo_Model_Post::FETCH_FORUM, 'permissionCombinationId' => $visitor['permission_combination_id']));
     // permission filter
     foreach ($posts as $postId => $post) {
         $post['permissions'] = XenForo_Permission::unserializePermissions($post['node_permission_cache']);
         if (!$postModel->canViewPostAndContainer($post, $post, $post, $null, $post['permissions'])) {
             unset($posts[$postId]);
         }
     }
     $viewParams = array('formId' => $input['formId']);
     $bbCodeModel = $this->getModelFromCache('XenForo_Model_BbCode');
     if ($mode == 'overlay') {
         $datedPosts = array();
         foreach ($posts as $postId => $post) {
             $i = 1;
             $quoteId = $postId . '-1';
             if (array_key_exists($quoteId, $input['quoteSelections'])) {
                 do {
                     $message = $bbCodeModel->getBbCodeFromSelectionHtml($input['quoteSelections'][$quoteId]);
                     $datedPosts[$post['post_date']][$quoteId] = $post;
                     $datedPosts[$post['post_date']][$quoteId]['message'] = $message;
                     $quoteId = $postId . '-' . ++$i;
                 } while (array_key_exists($quoteId, $input['quoteSelections']));
             } else {
                 $datedPosts[$post['post_date']][$postId] = $post;
             }
         }
         ksort($datedPosts);
         $posts = array();
         foreach ($datedPosts as $postDate => $postIds) {
             foreach ($postIds as $postId => $post) {
                 $posts[$postId] = $post;
             }
         }
         if (empty($posts)) {
             // clear the cookie, as its value is invalid or unusable
             XenForo_Helper_Cookie::deleteCookie('MultiQuote');
             return $this->responseError(new XenForo_Phrase('selected_messages_not_found'));
         }
         $viewParams['posts'] = $posts;
         return $this->responseView('XenForo_ViewPublic_Thread_MultiQuoteOverlay', 'thread_multi_quote_overlay', $viewParams);
     } else {
         $orderedPosts = array();
         foreach ($quoteIds as $quoteId) {
             $postId = $this->_getPostIdFromQuoteId($quoteId);
             if (isset($posts[$postId])) {
                 $orderedPosts[$quoteId] = $posts[$postId];
                 if (array_key_exists($quoteId, $input['quoteSelections'])) {
                     $message = $bbCodeModel->getBbCodeFromSelectionHtml($input['quoteSelections'][$quoteId]);
                     $orderedPosts[$quoteId]['message'] = $message;
                 }
             }
         }
         $viewParams['posts'] = $orderedPosts;
         $quotes = '';
         foreach ($orderedPosts as $post) {
             $quotes .= trim($postModel->getQuoteTextForPost($post)) . "\n\n";
         }
         $viewParams['quote'] = trim($quotes);
         return $this->responseView('XenForo_ViewPublic_Thread_MultiQuote', '', $viewParams);
     }
 }
示例#16
0
 public function actionTwoStepTrustedDisable()
 {
     $this->_assertPostOnly();
     $this->assertPasswordConfirmed(3600);
     $currentKey = XenForo_Helper_Cookie::getCookie('tfa_trust', $this->getRequest());
     $userId = XenForo_Visitor::getUserId();
     /** @var XenForo_Model_Tfa $tfaModel */
     $tfaModel = $this->getModelFromCache('XenForo_Model_Tfa');
     if ($this->_input->filterSingle('others', XenForo_Input::BOOLEAN)) {
         $tfaModel->deleteUserTrustedRecords($userId, $currentKey);
     } else {
         if ($currentKey) {
             $tfaModel->deleteUserTrustedRecord($userId, $currentKey);
         }
     }
     return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('account/two-step'));
 }
示例#17
0
 /**
  * This simply gets public session, from cookies if necessary.
  *
  * @param Zend_Controller_Request_Http $request
  *
  * @return XenForo_Session
  */
 public static function getPublicSession(Zend_Controller_Request_Http $request)
 {
     $class = XenForo_Application::resolveDynamicClass('XenForo_Session');
     /** @var $session XenForo_Session */
     $session = new $class();
     $session->start();
     if (!$session->sessionExists()) {
         $cookiePrefix = XenForo_Application::get('config')->cookie->prefix;
         $userCookie = $request->getCookie($cookiePrefix . 'user');
         if ($userCookie) {
             /** @var $userModel XenForo_Model_User */
             $userModel = XenForo_Model::create('XenForo_Model_User');
             if ($userId = $userModel->loginUserByRememberCookie($userCookie)) {
                 $user = $userModel->getFullUserById($userId);
                 /** @var $tfaModel XenForo_Model_Tfa */
                 $tfaModel = XenForo_Model::create('XenForo_Model_Tfa');
                 if (XenForo_Application::getConfig()->enableTfa && $user['use_tfa'] && $tfaModel->userRequiresTfa($user['user_id'])) {
                     $trustedKey = XenForo_Helper_Cookie::getCookie('tfa_trust', $request);
                     if ($trustedKey && $tfaModel->getUserTrustedRecord($user['user_id'], $trustedKey)) {
                         // computer is trusted
                         $allowLogin = true;
                     } else {
                         $allowLogin = false;
                         $session->set('tfaLoginUserId', $user['user_id']);
                         $session->set('tfaLoginDate', time());
                         $session->set('tfaLoginRedirect', true);
                     }
                 } else {
                     $allowLogin = true;
                 }
                 if ($allowLogin) {
                     $userModel->setUserRememberCookie($user['user_id']);
                     $session->userLogin($user['user_id'], $user['password_date']);
                 }
             } else {
                 XenForo_Helper_Cookie::deleteCookie('user', true);
             }
         }
         if (!empty($_SERVER['HTTP_USER_AGENT'])) {
             $session->set('userAgent', $_SERVER['HTTP_USER_AGENT']);
             $session->set('robotId', $session->getRobotId($_SERVER['HTTP_USER_AGENT']));
         }
         if (!empty($_SERVER['HTTP_REFERER'])) {
             $session->set('referer', $_SERVER['HTTP_REFERER']);
             $session->set('fromSearch', $session->isSearchReferer($_SERVER['HTTP_REFERER']));
         }
     }
     return $session;
 }
示例#18
0
 /**
  * Phrase index. This is a list of phrases, so redirect this to a
  * language-specific list.
  *
  * @return XenForo_ControllerResponse_Redirect
  */
 public function actionPhrases()
 {
     $languageModel = $this->_getLanguageModel();
     $addOnModel = $this->_getAddOnModel();
     $languageId = $this->_input->filterSingle('language_id', XenForo_Input::STRING);
     $addOnId = $this->_input->filterSingle('addon_id', XenForo_Input::STRING);
     $phraseFilter = $this->_input->filterSingle('phrase_filter', XenForo_Input::STRING);
     if ($addOnId == '') {
         $addOnId = XenForo_Helper_Cookie::getCookie('edit_addon_id') ? XenForo_Helper_Cookie::getCookie('edit_addon_id') : 'All';
     }
     if ($languageId == '') {
         $languageId = $languageModel->getLanguageIdFromCookie();
     }
     if ($phraseFilter == '') {
         $phraseFilter = XenForo_Helper_Cookie::getCookie('phrase_filter') ? XenForo_Helper_Cookie::getCookie('phrase_filter') : 'existing';
     }
     if ($languageId && in_array($phraseFilter, array('found', 'undefined')) || !$languageId && in_array($phraseFilter, array('untranslated'))) {
         $phraseFilter = 'existing';
     }
     $phraseModel = $this->_getPhraseModel();
     if (!$phraseModel->canModifyPhraseInLanguage($languageId)) {
         return $this->responseError(new XenForo_Phrase('phrases_in_this_language_can_not_be_modified'));
     }
     $page = $this->_input->filterSingle('page', XenForo_Input::UINT);
     $perPage = 100;
     $conditions = array();
     if ($addOnId != 'All') {
         $conditions['addon_id'] = $addOnId;
     }
     $conditions['phrase_filter'] = $phraseFilter;
     $filter = $this->_input->filterSingle('_filter', XenForo_Input::ARRAY_SIMPLE);
     if ($filter && isset($filter['value'])) {
         $conditions['title'] = array($filter['value'], empty($filter['prefix']) ? 'lr' : 'r');
         $filterView = true;
     } else {
         $filterView = false;
     }
     $fetchOptions = array('page' => $page, 'perPage' => $perPage);
     if ($phraseFilter == 'undefined' or $phraseFilter == 'found') {
         $allPhrases = $phraseModel->getAllPhrasesInMasterLanguage();
         //$limitOptions = $phraseModel->prepareLimitFetchOptions($fetchOptions);
         $phrases = array();
         $foundPhrases = $this->_getUndefinedPhrases($addOnId);
         $foundPhrases = array_unique($foundPhrases);
         sort($foundPhrases);
         //$limitedFoundPhrases = $foundPhrases;
         foreach ($foundPhrases as $phraseTitle) {
             $phrase = isset($allPhrases[$phraseTitle]) ? $allPhrases[$phraseTitle] : array('title' => $phraseTitle, 'phrase_state' => 'custom');
             if ($phraseFilter == 'found' || $phraseFilter == 'undefined' && !isset($allPhrases[$phraseTitle])) {
                 $phrases[] = $phrase;
             }
         }
         $totalPhrases = count($phrases);
         $page = null;
         $perPage = null;
         //die(Zend_Debug::dump($phrases));
     } else {
         $phrases = $phraseModel->getEffectivePhraseListForLanguage($languageId, $conditions, $fetchOptions);
         $totalPhrases = $phraseModel->countEffectivePhrasesInLanguage($languageId, $conditions, $fetchOptions);
     }
     if (is_array($phrases)) {
         // set an edit_language_id cookie so we can switch to another area and maintain the current style selection
         XenForo_Helper_Cookie::setCookie('edit_language_id', $languageId);
         XenForo_Helper_Cookie::setCookie('edit_addon_id', $addOnId);
         XenForo_Helper_Cookie::setCookie('phrase_filter', $phraseFilter);
     } else {
         XenForo_Helper_Cookie::setCookie('edit_language_id', 0);
         XenForo_Helper_Cookie::setCookie('edit_addon_id', 'All');
         XenForo_Helper_Cookie::setCookie('phrase_filter', 'existing');
     }
     $viewParams = array('phrases' => $phrases, 'languages' => $languageModel->getAllLanguagesAsFlattenedTree($languageModel->showMasterLanguage() ? 1 : 0), 'masterLanguage' => $languageModel->showMasterLanguage() ? $languageModel->getLanguageById(0, true) : array(), 'language' => $languageModel->getLanguageById($languageId, true), 'addOns' => $addOnModel->getAllAddOns(), 'addOn' => $addOnId == 'XenForo' ? array('addon_id' => 'XenForo', 'title' => 'XenForo') : $addOnModel->getAddOnById($addOnId), 'addOnId' => $addOnId, 'phraseFilter' => $phraseFilter, 'phraseFilterTitle' => new XenForo_Phrase('devkit_' . $phraseFilter), 'page' => $page, 'perPage' => $perPage, 'totalPhrases' => $totalPhrases, 'filterView' => $filterView, 'filterMore' => $filterView && $totalPhrases > $perPage);
     return $this->responseView('XenForo_ViewAdmin_Phrase_List', 'phrase_list', $viewParams);
 }
示例#19
0
 public function getUserTfaTrustedKey()
 {
     return XenForo_Helper_Cookie::getCookie('tfa_trust', $this->_controller->getRequest());
 }
示例#20
0
 /**
  * Fetches $languageId from cookie if it's available, or returns the default language ID.
  *
  * @return integer
  */
 public function getLanguageIdFromCookie()
 {
     $languageId = XenForo_Helper_Cookie::getCookie('edit_language_id');
     if ($languageId === false) {
         $languageId = XenForo_Application::debugMode() ? 0 : XenForo_Application::get('options')->defaultLanguageId;
     }
     if (!XenForo_Application::debugMode() && !$languageId) {
         $languageId = XenForo_Application::get('options')->defaultLanguageId;
     }
     return $languageId;
 }
示例#21
0
 /**
  *
  * @see XenForo_ControllerAdmin_Option::_getOptionAddEditResponse()
  */
 protected function _getOptionAddEditResponse(array $option, array $relations = array())
 {
     $response = parent::_getOptionAddEditResponse($option, $relations);
     if ($response instanceof XenForo_ControllerResponse_View) {
         $addOnId = $this->_input->filterSingle('addon_id', XenForo_Input::STRING);
         if (!empty($GLOBALS['XenForo_Route_PrefixAdmin_Options']) && !$addOnId) {
             $addOnId = XenForo_Helper_Cookie::getCookie('edit_addon_id');
         }
         if (count($relations) == 1) {
             $groupIds = array_keys($relations);
             $groupId = reset($groupIds);
             $group = $this->_getOptionGroupOrError($groupId);
             $response->params['group'] = $group;
         }
         if ($addOnId && empty($option['addon_id'])) {
             $template['addon_id'] = $addOnId;
             $response->params['addOnSelected'] = $addOnId;
             if (empty($option['option_id']) && isset($groupId)) {
                 $option['new_option_id'] = $groupId . '_';
                 $response->params['option'] = $option;
             }
         }
     }
     return $response;
 }
示例#22
0
文件: Phrase.php 项目: Sywooch/forums
 /**
  * Phrase searching.
  *
  * @return XenForo_ControllerResponse_Abstract
  */
 public function actionSearch()
 {
     $languageModel = $this->_getLanguageModel();
     $defaultLanguageId = XenForo_Application::debugMode() ? 0 : XenForo_Application::get('options')->defaultLanguageId;
     if ($this->_input->inRequest('language_id')) {
         $languageId = $this->_input->filterSingle('language_id', XenForo_Input::UINT);
     } else {
         $languageId = XenForo_Helper_Cookie::getCookie('edit_language_id');
         if ($languageId === false) {
             $languageId = $defaultLanguageId;
         }
     }
     if ($this->_input->filterSingle('search', XenForo_Input::UINT)) {
         $phraseModel = $this->_getPhraseModel();
         $input = $this->_input->filter(array('title' => XenForo_Input::STRING, 'phrase_text' => XenForo_Input::STRING, 'phrase_case_sensitive' => XenForo_Input::UINT, 'phrase_state' => array(XenForo_Input::STRING, 'array' => true)));
         if (!$phraseModel->canModifyPhraseInLanguage($languageId)) {
             return $this->responseError(new XenForo_Phrase('phrases_in_this_language_can_not_be_modified'));
         }
         $conditions = array();
         if (!empty($input['title'])) {
             $conditions['title'] = $input['title'];
         }
         if (!empty($input['phrase_text'])) {
             $conditions['phrase_text'] = $input['phrase_text'];
             if (!empty($input['phrase_case_sensitive'])) {
                 $conditions['phrase_case_sensitive'] = true;
             }
         }
         if ($languageId && !empty($input['phrase_state']) && count($input['phrase_state']) < 3) {
             $conditions['phrase_state'] = $input['phrase_state'];
         }
         if (empty($conditions)) {
             return $this->responseError(new XenForo_Phrase('please_complete_required_fields'));
         }
         $phrases = $phraseModel->getEffectivePhraseListForLanguage($languageId, $conditions);
         $viewParams = array('language' => $languageModel->getLanguageById($languageId, true), 'phrases' => $phrases);
         return $this->responseView('XenForo_ViewAdmin_Phrase_SearchResults', 'phrase_search_results', $viewParams);
     } else {
         $showMaster = $languageModel->showMasterLanguage();
         $viewParams = array('languages' => $languageModel->getAllLanguagesAsFlattenedTree($showMaster ? 1 : 0), 'masterLanguage' => $showMaster ? $languageModel->getLanguageById(0, true) : false, 'languageId' => $languageId);
         return $this->responseView('XenForo_ViewAdmin_Phrase_Search', 'phrase_search', $viewParams);
     }
 }
示例#23
0
 public function getAdminStyleIdFromCookie($allowMaster = true)
 {
     $styleId = XenForo_Helper_Cookie::getCookie('brass_edit_style_id');
     if ($styleId === false) {
         $styleId = XenForo_Application::debugMode() ? 0 : XenForo_Application::get('options')->BRASS_defaultAdminStyleId;
     }
     if ((!$allowMaster || !XenForo_Application::debugMode()) && !$styleId) {
         $styleId = XenForo_Application::get('options')->BRASS_defaultAdminStyleId;
     }
     /* 	if($styleId == 1)
     		{
     			$styleModel = XenForo_Model::create('XenForo_Model_Style');
     			$styleModel->setAdminStyles(true);
     			$styles = (XenForo_Application::isRegistered('adminStyles')
     					? XenForo_Application::get('adminStyles')
     					: $styleModel->getAllStyles()
     			);
     			
     			if(empty($styles))
     			{
     				return 0;
     			}
     			
     			$style = reset($styles);
     			
     			$this->getModelFromCache('XenForo_Model_Option')->updateOptions(
     				array('BRASS_defaultAdminStyleId' => $style['style_id']
     			));
     			
     			return $style['style_id'];
     		} */
     return $styleId;
 }
示例#24
0
文件: Media.php 项目: Sywooch/forums
    public function updateViews($media)
    {
        if (!XenForo_Helper_Cookie::getCookie('EWRmedio_' . $media['media_id'])) {
            $this->_getDb()->query("\n\t\t\t\tUPDATE EWRmedio_media\n\t\t\t\tSET media_views = media_views+1\n\t\t\t\tWHERE media_id = ?\n\t\t\t", $media['media_id']);
            $media['media_views']++;
        }
        XenForo_Helper_Cookie::setCookie('EWRmedio_' . $media['media_id'], '1', 86400);
        $this->standardizeViewingUserReference($viewingUser);
        $userID = $viewingUser['user_id'];
        if ($userID) {
            $this->_getDb()->query('
				INSERT INTO EWRmedio_read
					(user_id, media_id, media_read_date)
				VALUES
					(?, ?, ?)
				ON DUPLICATE KEY UPDATE media_read_date = VALUES(media_read_date)
			', array($userID, $media['media_id'], XenForo_Application::$time));
        }
        return $media;
    }
示例#25
0
 /**
  * Displays the list of orphan phrases in the specified language.
  *
  * @return XenForo_ControllerResponse_Abstract
  */
 public function actionOrphanPhrases()
 {
     $languageId = $this->_input->filterSingle('language_id', XenForo_Input::UINT);
     $language = $this->_getLanguageOrError($languageId, true);
     $languageModel = $this->_getLanguageModel();
     $phraseModel = $this->_getPhraseModel();
     if (!$phraseModel->canModifyPhraseInLanguage($languageId)) {
         return $this->responseError(new XenForo_Phrase('phrases_in_this_language_can_not_be_modified'));
     }
     $addOns = $this->_getAddOnModel()->getAllAddOns();
     $addOnId = $this->_input->filterSingle('addon_id', XenForo_Input::STRING);
     if (!empty($GLOBALS['XenForo_Route_PrefixAdmin_Languages']) && !$addOnId) {
         $addOnId = XenForo_Helper_Cookie::getCookie('edit_addon_id');
     } else {
         XenForo_Helper_Cookie::setCookie('edit_addon_id', $addOnId);
     }
     if ($addOnId) {
         $addOn = $addOns[$addOnId];
     } else {
         $addOn = array('addon_id' => '');
     }
     $this->canonicalizeRequestUrl(XenForo_Link::buildAdminLink('add-ons/languages/orphan-phrases', $addOn, $language));
     // set an edit_language_id cookie so we can switch to another area and
     // maintain the current style selection
     XenForo_Helper_Cookie::setCookie('edit_language_id', $languageId);
     $page = $this->_input->filterSingle('page', XenForo_Input::UINT);
     $perPage = 100;
     $conditions = array('addon_id' => $addOnId);
     $filter = $this->_input->filterSingle('_filter', XenForo_Input::ARRAY_SIMPLE);
     if ($filter && isset($filter['value'])) {
         $conditions['title'] = array($filter['value'], empty($filter['prefix']) ? 'lr' : 'r');
         $filterView = true;
     } else {
         $filterView = false;
     }
     $fetchOptions = array('page' => $page, 'perPage' => $perPage);
     $totalPhrases = $phraseModel->countOrphanPhrasesInLanguage($languageId, $conditions, $fetchOptions);
     $viewParams = array('addOns' => $addOns, 'addOnSelected' => $addOnId, 'phrases' => $phraseModel->getOrphanPhraseListForLanguage($languageId, $conditions, $fetchOptions), 'languages' => $languageModel->getAllLanguagesAsFlattenedTree($languageModel->showMasterLanguage() ? 1 : 0), 'masterLanguage' => $languageModel->showMasterLanguage() ? $languageModel->getLanguageById(0, true) : array(), 'language' => $languageModel->getLanguageById($languageId, true), 'page' => $page, 'perPage' => $perPage, 'totalPhrases' => $totalPhrases, 'filterView' => $filterView, 'filterMore' => $filterView && $totalPhrases > $perPage);
     return $this->responseView('ThemeHouse_Phrases_ViewAdmin_Phrase_OrphanList', 'th_orphan_phrase_list_phrases', $viewParams);
 }
示例#26
0
 /**
  * Gets the effective set of container params. This includes combining
  * and specific container params with any global ones. For example, a specific
  * container param may refer to the section the page is in, so this function
  * could load the other options that are specific to this section.
  *
  * @param array $params Container params from the controller/view
  * @param Zend_Controller_Request_Http $request
  *
  * @return array
  */
 public function getEffectiveContainerParams(array $params, Zend_Controller_Request_Http $request)
 {
     $options = XenForo_Application::get('options');
     $visitor = XenForo_Visitor::getInstance();
     $params['canSearch'] = $visitor->canSearch();
     $params['canUploadAvatar'] = $visitor->canUploadAvatar();
     $params['canEditSignature'] = $visitor->canEditSignature();
     $params['canEditProfile'] = $visitor->canEditProfile();
     $params['canUpdateStatus'] = $visitor->canUpdateStatus();
     $params['canStartConversation'] = $visitor->canStartConversations();
     $params['canViewProfilePosts'] = $visitor->canViewProfilePosts();
     $params['isAwaitingEmailConfirmation'] = $visitor['user_id'] && in_array($visitor['user_state'], array('email_confirm', 'email_confirm_edit'));
     $params['isEmailBouncing'] = $visitor['user_id'] && $visitor['user_state'] == 'email_bounce';
     $params['tosUrl'] = self::getTosUrl();
     $params['jQuerySource'] = self::getJquerySource();
     $params['jQuerySourceLocal'] = self::getJquerySource(true);
     $params['javaScriptSource'] = XenForo_Application::$javaScriptUrl;
     $params['showBoardClosedNotice'] = !$options->boardActive && XenForo_Visitor::getInstance()->get('is_admin');
     $params['showCookieNotice'] = $options->showFirstCookieNotice && XenForo_Helper_Cookie::getCookie('session') === false && XenForo_Helper_Cookie::getCookie('user') === false;
     $requestPaths = XenForo_Application::get('requestPaths');
     $params['isIndexPage'] = $requestPaths['fullUri'] == XenForo_Link::buildPublicLink('full:index');
     $params = XenForo_Application::mapMerge($params, parent::getEffectiveContainerParams($params, $request), $this->_getCronContainerParams(), $this->_getStyleLanguageChangerParams($request), $this->_getNavigationContainerParams(empty($params['majorSection']) ? '' : $params['majorSection']));
     if ($options->enableNotices) {
         $this->_preloadNoticeTemplates($params, $request);
     }
     XenForo_CodeEvent::fire('container_public_params', array(&$params, $this));
     return $params;
 }
示例#27
0
 /**
  * Template searching.
  *
  * @return XenForo_ControllerResponse_Abstract
  */
 public function actionSearch()
 {
     $styleModel = $this->_getStyleModel();
     $defaultStyleId = XenForo_Application::debugMode() ? 0 : XenForo_Application::get('options')->defaultStyleId;
     if ($this->_input->inRequest('style_id')) {
         $styleId = $this->_input->filterSingle('style_id', XenForo_Input::UINT);
     } else {
         $styleId = XenForo_Helper_Cookie::getCookie('edit_style_id');
         if ($styleId === false) {
             $styleId = $defaultStyleId;
         }
     }
     if ($this->_input->filterSingle('search', XenForo_Input::UINT)) {
         $templateModel = $this->_getTemplateModel();
         $input = $this->_input->filter(array('title' => XenForo_Input::STRING, 'template' => XenForo_Input::STRING, 'template_case_sensitive' => XenForo_Input::UINT, 'template_state' => array(XenForo_Input::STRING, 'array' => true)));
         if (!$templateModel->canModifyTemplateInStyle($styleId)) {
             return $this->responseError(new XenForo_Phrase('templates_in_this_style_can_not_be_modified'));
         }
         $conditions = array();
         if (!empty($input['title'])) {
             $conditions['title'] = $input['title'];
         }
         if (!empty($input['template'])) {
             // translate @x searches to "{xen:property x" as that is what is stored
             $propertyModel = $this->_getStylePropertyModel();
             $properties = $propertyModel->keyPropertiesByName($propertyModel->getEffectiveStylePropertiesInStyle($styleId));
             $text = $propertyModel->convertAtPropertiesForSearch($input['template'], $properties);
             $conditions['template'] = $text;
             if (!empty($input['template_case_sensitive'])) {
                 $conditions['template_case_sensitive'] = true;
             }
         }
         if ($styleId && !empty($input['template_state']) && count($input['template_state']) < 3) {
             $conditions['template_state'] = $input['template_state'];
         }
         if (empty($conditions)) {
             return $this->responseError(new XenForo_Phrase('please_complete_required_fields'));
         }
         $templates = $templateModel->getEffectiveTemplateListForStyle($styleId, $conditions);
         $viewParams = array('style' => $styleModel->getStyleById($styleId, true), 'templates' => $templates);
         return $this->responseView('XenForo_ViewAdmin_Template_SearchResults', 'template_search_results', $viewParams);
     } else {
         $showMaster = $styleModel->showMasterStyle();
         $viewParams = array('styles' => $styleModel->getAllStylesAsFlattenedTree($showMaster ? 1 : 0), 'masterStyle' => $showMaster ? $styleModel->getStyleById(0, true) : false, 'styleId' => $styleId);
         return $this->responseView('XenForo_ViewAdmin_Template_Search', 'template_search', $viewParams);
     }
 }
示例#28
0
文件: Pages.php 项目: Sywooch/forums
    public function updateViews($page)
    {
        if (!XenForo_Helper_Cookie::getCookie('EWRcarta_' . $page['page_id'])) {
            $this->_getDb()->query("\n\t\t\t\tUPDATE EWRcarta_pages\n\t\t\t\tSET page_views = page_views+1\n\t\t\t\tWHERE page_id = ?\n\t\t\t", $page['page_id']);
            $page['page_views']++;
        }
        XenForo_Helper_Cookie::setCookie('EWRcarta_' . $page['page_id'], '1', 86400);
        $this->standardizeViewingUserReference($viewingUser);
        $userID = $viewingUser['user_id'];
        if ($userID) {
            $this->_getDb()->query('
				INSERT INTO EWRcarta_read
					(user_id, page_id, page_read_date)
				VALUES
					(?, ?, ?)
				ON DUPLICATE KEY UPDATE page_read_date = VALUES(page_read_date)
			', array($userID, $page['page_id'], XenForo_Application::$time));
        }
        return $page;
    }