示例#1
0
 /**
  * Runs all/as many outstanding cron entries and outputs the
  * blank image.
  */
 public static function runAndOutput()
 {
     @set_time_limit(180);
     $dependencies = new XenForo_Dependencies_Public();
     $dependencies->preLoadData();
     $cron = new XenForo_Cron();
     $cron->outputImage();
     $cron->run();
 }
示例#2
0
 public function renderHtml()
 {
     $options = XenForo_Application::get('options');
     $template = $this->createTemplateObject($this->_templateName, $this->_params);
     // Mini page bootstrapper :3
     $dep = new XenForo_Dependencies_Public();
     $this->_params = $dep->getEffectiveContainerParams($this->_params, $this->_params['request']);
     $this->_params['serverTimeInfo'] = XenForo_Locale::getDayStartTimestamps();
     $template->setParams($this->_params);
     echo $template->render();
     exit;
 }
示例#3
0
 protected function _getWrapper($selected, XenForo_ControllerResponse_View $subView)
 {
     $viewParams = array('selected' => $selected, 'tosUrl' => XenForo_Dependencies_Public::getTosUrl());
     $wrapper = $this->responseView('XenForo_ViewPublic_Help_Wrapper', 'help_wrapper', $viewParams);
     $wrapper->subView = $subView;
     return $wrapper;
 }
示例#4
0
 public function __construct()
 {
     $startTime = microtime(true);
     $xf_path = Yii::getPathOfAlias('webroot') . '/forum';
     Yii::registerAutoloader(array('XenforeLoader', 'autoload'), true);
     XenForo_Autoloader::getInstance()->setupAutoloader($xf_path . '/library');
     XenForo_Application::initialize($xf_path . '/library', $xf_path);
     XenForo_Application::set('page_start_time', $startTime);
     XenForo_Application::disablePhpErrorHandler();
     error_reporting(E_ALL ^ E_NOTICE ^ E_USER_NOTICE ^ E_WARNING);
     $dependencies = new XenForo_Dependencies_Public();
     $dependencies->preLoadData();
     XenForo_Session::startPublicSession();
     $this->visitor = XenForo_Visitor::getInstance();
     /*$fc = new XenForo_FrontController(new XenForo_Dependencies_Public());
       ob_start();
       $fc->run();
       $content = ob_get_clean();*/
 }
示例#5
0
 public function renderRaw()
 {
     if ($this->_params['media']['media_type'] == 'video_embed') {
         $bbCodeParser = XenForo_BbCode_Parser::create(XenForo_BbCode_Formatter_Base::create('Base', array('view' => $this)));
         $html = new XenForo_BbCode_TextWrapper($this->_params['media']['media_tag'], $bbCodeParser);
         $this->_params['videoHtml'] = $html;
     }
     $this->_params['jQuerySource'] = XenForo_Dependencies_Public::getJquerySource();
     $template = $this->createTemplateObject($this->_templateName, $this->_params);
     return $template;
 }
示例#6
0
 /**
  * Confirm agreement to revised set of terms and conditions on the site.
  */
 public function actionTerms()
 {
     $agree = $this->_input->filterSingle('agree', XenForo_Input::UINT);
     if ($this->isConfirmedPost() && $agree) {
         $userId = XenForo_Visitor::getUserId();
         $dw = XenForo_DataWriter::create('XenForo_DataWriter_User');
         $dw->setExistingData($userId);
         $dw->set('agree_terms_th', 0);
         $dw->save();
         return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $this->getDynamicRedirect(false, true));
     }
     $viewParams = array('agree_to_terms' => true, 'tosUrl' => XenForo_Dependencies_Public::getTosUrl());
     return $this->_getWrapper('account', 'terms', $this->responseView('XenForo_ViewPublic_Account_Terms', 'th_account_terms_agreetermsofserv', $viewParams));
 }
示例#7
0
文件: Editor.php 项目: Sywooch/forums
 public function actionDialog()
 {
     $styleId = $this->_input->filterSingle('style', XenForo_Input::UINT);
     if ($styleId) {
         $this->setViewStateChange('styleId', $styleId);
     }
     $dialog = $this->_input->filterSingle('dialog', XenForo_Input::STRING);
     $viewParams = array();
     if ($dialog == 'media') {
         $viewParams['sites'] = $this->_getBbCodeModel()->getAllBbCodeMediaSites();
     }
     $viewParams['jQuerySource'] = XenForo_Dependencies_Public::getJquerySource();
     $viewParams['jQuerySourceLocal'] = XenForo_Dependencies_Public::getJquerySource(true);
     $viewParams['javaScriptSource'] = XenForo_Application::$javaScriptUrl;
     return $this->responseView('XenForo_ViewPublic_Editor_Dialog', 'editor_dialog_' . $dialog, $viewParams);
 }
示例#8
0
 protected function _setupExternalUser(array $data)
 {
     $this->_assertRegistrationActive();
     if (XenForo_Dependencies_Public::getTosUrl() && !$this->_input->filterSingle('agree', XenForo_Input::UINT)) {
         throw $this->responseException($this->responseError(new XenForo_Phrase('you_must_agree_to_terms_of_service')));
     }
     $writer = XenForo_DataWriter::create('XenForo_DataWriter_User');
     $options = XenForo_Application::get('options');
     if ($options->registrationDefaults) {
         $writer->bulkSet($options->registrationDefaults, array('ignoreInvalidFields' => true));
     }
     $writer->bulkSet($data);
     $writer->set('user_group_id', XenForo_Model_User::$defaultRegisteredGroupId);
     $writer->set('language_id', XenForo_Visitor::getInstance()->get('language_id'));
     $customFields = $this->_input->filterSingle('custom_fields', XenForo_Input::ARRAY_SIMPLE);
     $customFieldsShown = array_keys($this->_getFieldModel()->getUserFields(array('registration' => true)));
     $writer->setCustomFields($customFields, $customFieldsShown);
     $auth = XenForo_Authentication_Abstract::create('XenForo_Authentication_NoPassword');
     $writer->set('scheme_class', $auth->getClassName());
     $writer->set('data', $auth->generate(''), 'xf_user_authenticate');
     return $writer;
 }
示例#9
0
 /**
  * Static helper to execute a full request for SVG output. This will
  * instantiate the object, pull the data from $_REQUEST, and then output
  * the SVG.
  */
 public static function run()
 {
     $dependencies = new XenForo_Dependencies_Public();
     $dependencies->preLoadData();
     $svgOutput = new self($_REQUEST);
     if ($svgOutput->handleIfModifiedSinceHeader($_SERVER)) {
         $svgOutput->displaySvg($svgOutput->renderSvg());
     }
 }
示例#10
0
文件: api.php 项目: pritcham/XenAPI
 /**
  * Default consturctor, instalizes XenForo classes and models.
  */
 public function __construct()
 {
     $this->xfDir = dirname(__FILE__);
     require_once $this->xfDir . '/library/XenForo/Autoloader.php';
     XenForo_Autoloader::getInstance()->setupAutoloader($this->xfDir . '/library');
     XenForo_Application::initialize($this->xfDir . '/library', $this->xfDir);
     XenForo_Application::set('page_start_time', microtime(TRUE));
     $deps = new XenForo_Dependencies_Public();
     $deps->preLoadData();
     // Disable XenForo's PHP error handler.
     XenForo_Application::disablePhpErrorHandler();
     // Enable error logging for PHP.
     error_reporting(E_ALL & ~E_NOTICE);
     $this->models = new Models();
     // TODO: Don't create models on init, only create them if they're being used (see Models::checkModel($model_name, $model)).
     $this->getModels()->setUserModel(XenForo_Model::create('XenForo_Model_User'));
     $this->getModels()->setAlertModel(XenForo_Model::create('XenForo_Model_Alert'));
     $this->getModels()->setUserFieldModel(XenForo_Model::create('XenForo_Model_UserField'));
     $this->getModels()->setAvatarModel(XenForo_Model::create('XenForo_Model_Avatar'));
     $this->getModels()->setModel('addon', XenForo_Model::create('XenForo_Model_AddOn'));
     $this->getModels()->setModel('database', XenForo_Application::get('db'));
     if ($this->hasAddon('XenResource') && $this->hasModel('XenResource_Model_Resource')) {
         $this->getModels()->setModel('resource', XenForo_Model::create('XenResource_Model_Resource'));
     }
 }
 public function actionSteamRegister()
 {
     $this->_assertPostOnly();
     $session = XenForo_Application::get('session');
     if (!$session->get('steam_id')) {
         return $this->responseError('Lost Steam ID');
     }
     // Get User Profile Data
     $id = $session->get('steam_id');
     $sHelper = new Steam_Helper_Steam();
     $steamProfileAPI = $sHelper->getSteamProfileAPI($id);
     $json_object = $sHelper->getJsonData($steamProfileAPI);
     $json_decoded = json_decode($json_object);
     if (!empty($json_decoded)) {
         $username = $json_decoded->response->players[0]->personaname;
         $avatar = $json_decoded->response->players[0]->avatarfull;
     }
     $userModel = $this->_getUserModel();
     $userExternalModel = $this->_getUserExternalModel();
     $doAssoc = $this->_input->filterSingle('associate', XenForo_Input::STRING) || $this->_input->filterSingle('force_assoc', XenForo_Input::UINT);
     if ($doAssoc) {
         $userId = $this->_associateExternalAccount();
         $userExternalModel->updateExternalAuthAssociation('steam', $id, $userId);
         $this->updateUserStats($userId, $id);
         return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $this->getDynamicRedirect(false, false));
     }
     $data = $this->_input->filter(array('username' => XenForo_Input::STRING, 'timezone' => XenForo_Input::STRING, 'email' => XenForo_Input::STRING, 'gender' => XenForo_Input::STRING, 'location' => XenForo_Input::STRING, 'dob_day' => XenForo_Input::UINT, 'dob_month' => XenForo_Input::UINT, 'dob_year' => XenForo_Input::UINT));
     if (XenForo_Dependencies_Public::getTosUrl() && !$this->_input->filterSingle('agree', XenForo_Input::UINT)) {
         return $this->responseError(new XenForo_Phrase('you_must_agree_to_terms_of_service'));
     }
     $options = XenForo_Application::get('options');
     $writer = XenForo_DataWriter::create('XenForo_DataWriter_User');
     if ($options->registrationDefaults) {
         $writer->bulkSet($options->registrationDefaults, array('ignoreInvalidFields' => true));
     }
     $writer->bulkSet($data);
     $auth = XenForo_Authentication_Abstract::create('XenForo_Authentication_NoPassword');
     $writer->set('scheme_class', $auth->getClassName());
     $writer->set('data', $auth->generate(''), 'xf_user_authenticate');
     $writer->set('user_group_id', XenForo_Model_User::$defaultRegisteredGroupId);
     $writer->set('language_id', XenForo_Visitor::getInstance()->get('language_id'));
     $customFields = $this->_input->filterSingle('custom_fields', XenForo_Input::ARRAY_SIMPLE);
     $customFieldsShown = $this->_input->filterSingle('custom_fields_shown', XenForo_Input::STRING, array('array' => true));
     $writer->setCustomFields($customFields, $customFieldsShown);
     $writer->advanceRegistrationUserState(false);
     $writer->preSave();
     if ($options->get('registrationSetup', 'requireDob')) {
         // dob required
         if (!$data['dob_day'] || !$data['dob_month'] || !$data['dob_year']) {
             $writer->error(new XenForo_Phrase('please_enter_valid_date_of_birth'), 'dob');
         } else {
             $userAge = $this->_getUserProfileModel()->getUserAge($writer->getMergedData(), true);
             if ($userAge < 1) {
             } else {
                 if ($userAge < intval($options->get('registrationSetup', 'minimumAge'))) {
                     // TODO: set a cookie to prevent re-registration attempts
                     // But I don't care
                     $writer->error(new XenForo_Phrase('sorry_you_too_young_to_create_an_account'));
                 }
             }
         }
     }
     $writer->save();
     $user = $writer->getMergedData();
     if (!$options->steamAvatarReg) {
         unset($avatar);
     }
     if (!empty($avatar)) {
         $avatarFile = tempnam(XenForo_Helper_File::getTempDir(), 'xf');
         $httpClient = XenForo_Helper_Http::getClient(preg_replace('/\\s+/', '%20', $avatar));
         $response = $httpClient->request('GET');
         if ($response->isSuccessful()) {
             file_put_contents($avatarFile, $response->getBody());
         }
         // Apply Avatar
         try {
             $user = array_merge($user, $this->getModelFromCache('XenForo_Model_Avatar')->applyAvatar($user['user_id'], $avatarFile));
         } catch (XenForo_Exception $e) {
         }
         @unlink($avatarFile);
     }
     $userExternalModel->updateExternalAuthAssociation('steam', $id, $user['user_id']);
     XenForo_Model_Ip::log($user['user_id'], 'user', $user['user_id'], 'register');
     /* Cookies */
     $userModel->setUserRememberCookie($user['user_id']);
     $session->changeUserId($user['user_id']);
     XenForo_Visitor::setup($user['user_id']);
     $this->updateUserStats($user['user_id'], $id);
     $redirect = $this->_input->filterSingle('redirect', XenForo_Input::STRING);
     $viewParams = array('user' => $user, 'redirect' => $redirect ? XenForo_Link::convertUriToAbsoluteUri($redirect) : '', 'steam' => true);
     return $this->responseView('XenForo_ViewPublic_Register_Process', 'register_process', $viewParams, $this->_getRegistrationContainerParams());
 }
示例#12
0
 protected function _getWrapper($selected, XenForo_ControllerResponse_View $subView)
 {
     if ($this->_pagesCache !== null) {
         $pages = $this->_pagesCache;
     } else {
         $helpModel = $this->_getHelpModel();
         $pages = $helpModel->preparePages($helpModel->getHelpPages());
     }
     $viewParams = array('selected' => $selected, 'tosUrl' => XenForo_Dependencies_Public::getTosUrl(), 'pages' => $pages);
     $wrapper = $this->responseView('XenForo_ViewPublic_Help_Wrapper', 'help_wrapper', $viewParams);
     $wrapper->subView = $subView;
     return $wrapper;
 }
示例#13
0
 /**
  * Static helper to execute a full request for CSS output. This will
  * instantiate the object, pull the data from $_REQUEST, and then output
  * the CSS.
  */
 public static function run()
 {
     $dependencies = new XenForo_Dependencies_Public();
     $dependencies->preLoadData();
     $class = XenForo_Application::resolveDynamicClass(__CLASS__);
     $cssOutput = new $class($_REQUEST);
     if ($cssOutput->handleIfModifiedSinceHeader($_SERVER)) {
         $cssOutput->displayCss($cssOutput->renderCss());
     }
 }
示例#14
0
<?php

$startTime = microtime(true);
$fileDir = dirname(__FILE__);
@set_time_limit(120);
ignore_user_abort(true);
require $fileDir . '/library/XenForo/Autoloader.php';
XenForo_Autoloader::getInstance()->setupAutoloader($fileDir . '/library');
XenForo_Application::initialize($fileDir . '/library', $fileDir);
XenForo_Application::set('page_start_time', $startTime);
$dependencies = new XenForo_Dependencies_Public();
$dependencies->preLoadData();
/** @var XenForo_Model_Deferred $deferredModel */
$deferredModel = XenForo_Model::create('XenForo_Model_Deferred');
$deferredModel->setNextDeferredTime(XenForo_Application::$time + 30);
$remaining = $deferredModel->run(false);
$output = array('moreDeferred' => $remaining ? true : false);
header('Content-Type: application/json; charset=UTF-8');
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
echo json_encode($output);
<?php

$startTime = microtime(true);
$fileDir = dirname(__FILE__);
require $fileDir . '/library/XenForo/Autoloader.php';
XenForo_Autoloader::getInstance()->setupAutoloader($fileDir . '/library');
XenForo_Application::initialize($fileDir . '/library', $fileDir);
XenForo_Application::set('page_start_time', $startTime);
$deps = new XenForo_Dependencies_Public();
$deps->preLoadData();
$response = new Zend_Controller_Response_Http();
$processor = new XenForo_UserUpgradeProcessor_PayPal();
$processor->initCallbackHandling(new Zend_Controller_Request_Http());
$logExtra = array();
$logMessage = false;
try {
    if (!$processor->validateRequest($logMessage)) {
        $logType = 'error';
        $response->setHttpResponseCode(500);
    } else {
        if (!$processor->validatePreConditions($logMessage)) {
            $logType = 'error';
        } else {
            $logType = 'info';
            $logMessage = $processor->processTransaction();
        }
    }
    if (is_array($logMessage)) {
        $temp = $logMessage;
        list($logType, $logMessage) = $temp;
    }
示例#16
0
 /**
  * Registers a new account (or associates with an existing one) using Facebook.
  *
  * @return XenForo_ControllerResponse_Abstract
  */
 public function actionFacebookRegister()
 {
     $this->_assertPostOnly();
     $fbToken = $this->_input->filterSingle('fb_token', XenForo_Input::STRING);
     $fbUser = XenForo_Helper_Facebook::getUserInfo($fbToken);
     if (empty($fbUser['id'])) {
         return $this->responseError(new XenForo_Phrase('error_occurred_while_connecting_with_facebook'));
     }
     $userModel = $this->_getUserModel();
     $userExternalModel = $this->_getUserExternalModel();
     $doAssoc = $this->_input->filterSingle('associate', XenForo_Input::STRING) || $this->_input->filterSingle('force_assoc', XenForo_Input::UINT);
     if ($doAssoc) {
         $associate = $this->_input->filter(array('associate_login' => XenForo_Input::STRING, 'associate_password' => XenForo_Input::STRING));
         $loginModel = $this->_getLoginModel();
         if ($loginModel->requireLoginCaptcha($associate['associate_login'])) {
             return $this->responseError(new XenForo_Phrase('your_account_has_temporarily_been_locked_due_to_failed_login_attempts'));
         }
         $userId = $userModel->validateAuthentication($associate['associate_login'], $associate['associate_password'], $error);
         if (!$userId) {
             $loginModel->logLoginAttempt($associate['associate_login']);
             return $this->responseError($error);
         }
         $userExternalModel->updateExternalAuthAssociation('facebook', $fbUser['id'], $userId);
         XenForo_Helper_Facebook::setUidCookie($fbUser['id']);
         XenForo_Application::get('session')->changeUserId($userId);
         XenForo_Visitor::setup($userId);
         $redirect = XenForo_Application::get('session')->get('fbRedirect');
         XenForo_Application::get('session')->remove('fbRedirect');
         if (!$redirect) {
             $redirect = $this->getDynamicRedirect(false, false);
         }
         return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $redirect);
     }
     $this->_assertRegistrationActive();
     $data = $this->_input->filter(array('username' => XenForo_Input::STRING, 'timezone' => XenForo_Input::STRING));
     if (XenForo_Dependencies_Public::getTosUrl() && !$this->_input->filterSingle('agree', XenForo_Input::UINT)) {
         return $this->responseError(new XenForo_Phrase('you_must_agree_to_terms_of_service'));
     }
     $options = XenForo_Application::get('options');
     $gender = '';
     if (isset($fbUser['gender'])) {
         switch ($fbUser['gender']) {
             case 'man':
             case 'male':
                 $gender = 'male';
                 break;
             case 'woman':
             case 'female':
                 $gender = 'female';
                 break;
         }
     }
     $writer = XenForo_DataWriter::create('XenForo_DataWriter_User');
     if ($options->registrationDefaults) {
         $writer->bulkSet($options->registrationDefaults, array('ignoreInvalidFields' => true));
     }
     $writer->bulkSet($data);
     $writer->bulkSet(array('gender' => $gender, 'email' => $fbUser['email'], 'location' => isset($fbUser['location']['name']) ? $fbUser['location']['name'] : ''));
     if (!empty($fbUser['birthday'])) {
         $birthdayParts = explode('/', $fbUser['birthday']);
         if (count($birthdayParts) == 3) {
             list($month, $day, $year) = $birthdayParts;
             $userAge = $this->_getUserProfileModel()->calculateAge($year, $month, $day);
             if ($userAge < intval($options->get('registrationSetup', 'minimumAge'))) {
                 // TODO: set a cookie to prevent re-registration attempts
                 return $this->responseError(new XenForo_Phrase('sorry_you_too_young_to_create_an_account'));
             }
             $writer->bulkSet(array('dob_year' => $year, 'dob_month' => $month, 'dob_day' => $day));
         }
     }
     if (!empty($fbUser['website'])) {
         list($website) = preg_split('/\\r?\\n/', $fbUser['website']);
         if ($website && Zend_Uri::check($website)) {
             $writer->set('homepage', $website);
         }
     }
     $auth = XenForo_Authentication_Abstract::create('XenForo_Authentication_NoPassword');
     $writer->set('scheme_class', $auth->getClassName());
     $writer->set('data', $auth->generate(''), 'xf_user_authenticate');
     $writer->set('user_group_id', XenForo_Model_User::$defaultRegisteredGroupId);
     $writer->set('language_id', XenForo_Visitor::getInstance()->get('language_id'));
     $writer->advanceRegistrationUserState(false);
     $writer->preSave();
     // TODO: option for extra user group
     $writer->save();
     $user = $writer->getMergedData();
     $avatarFile = tempnam(XenForo_Helper_File::getTempDir(), 'xf');
     if ($avatarFile) {
         $data = XenForo_Helper_Facebook::getUserPicture($fbToken);
         if ($data && $data[0] != '{') {
             file_put_contents($avatarFile, $data);
             try {
                 $user = array_merge($user, $this->getModelFromCache('XenForo_Model_Avatar')->applyAvatar($user['user_id'], $avatarFile));
             } catch (XenForo_Exception $e) {
             }
         }
         @unlink($avatarFile);
     }
     $userExternalModel->updateExternalAuthAssociation('facebook', $fbUser['id'], $user['user_id']);
     XenForo_Model_Ip::log($user['user_id'], 'user', $user['user_id'], 'register');
     XenForo_Helper_Facebook::setUidCookie($fbUser['id']);
     XenForo_Application::get('session')->changeUserId($user['user_id']);
     XenForo_Visitor::setup($user['user_id']);
     $redirect = $this->_input->filterSingle('redirect', XenForo_Input::STRING);
     $viewParams = array('user' => $user, 'redirect' => $redirect ? XenForo_Link::convertUriToAbsoluteUri($redirect) : '', 'facebook' => true);
     return $this->responseView('XenForo_ViewPublic_Register_Process', 'register_process', $viewParams, $this->_getRegistrationContainerParams());
 }
示例#17
0
 /**
  * @return XenForo_ControllerResponse_Abstract
  */
 public function actionEditor()
 {
     $styleId = $this->_input->filterSingle('style', XenForo_Input::UINT);
     if ($styleId) {
         $this->setViewStateChange('styleId', $styleId);
     }
     $viewParams = array('jQuerySource' => XenForo_Dependencies_Public::getJquerySource(), 'jQuerySourceLocal' => XenForo_Dependencies_Public::getJquerySource(true), 'javaScriptSource' => XenForo_Application::$javaScriptUrl);
     $type = $this->_input->filterSingle('type', XenForo_Input::STRING);
     $url = $this->_input->filterSingle('url', XenForo_Input::STRING);
     if (!in_array($type, array('album', 'content'))) {
         $type = 'album';
     }
     if (empty($url)) {
         return $this->responseView('sonnb_XenGallery_ViewPublic_Editor_Attach', 'sonnb_xengallery_editor_' . $type, $viewParams);
     } else {
         $id = $this->_input->filterSingle('url', XenForo_Input::UINT);
         $size = $this->_input->filterSingle('size', XenForo_Input::STRING);
         if (!in_array($size, $this->_allowedBBCodeSizes)) {
             $size = sonnb_XenGallery_Model_ContentData::CONTENT_FILE_TYPE_MEDIUM;
         }
         $message = $bbcode = '';
         if ($id) {
             switch ($type) {
                 case 'content':
                     $fetchOptions = array('join' => sonnb_XenGallery_Model_Content::FETCH_ALBUM);
                     $content = $this->_getContentModel()->getContentById($id, $fetchOptions);
                     $content = $this->_getContentModel()->prepareContent($content, $fetchOptions);
                     if (empty($content)) {
                         $message = new XenForo_Phrase('sonnb_xengallery_requested_photo_video_does_not_exist');
                     } elseif (!$this->_getContentModel()->canViewContentAndContainer($content, $content['album'], $errorKey)) {
                         $message = new XenForo_Phrase($errorKey);
                     } else {
                         if (!empty($content['content_id'])) {
                             switch ($content['content_type']) {
                                 case sonnb_XenGallery_Model_Photo::$contentType:
                                     $bbcode = "[photo=\"{$size}\"]{$content['content_id']}[/photo]";
                                     break;
                                 case sonnb_XenGallery_Model_Video::$contentType:
                                     $bbcode = "[video]{$content['content_id']}[/video]";
                                     break;
                             }
                         }
                     }
                     break;
                 case 'album':
                 default:
                     $album = $this->_getAlbumModel()->getAlbumById($id);
                     $album = $this->_getAlbumModel()->prepareAlbum($album);
                     if (empty($album)) {
                         $message = new XenForo_Phrase('sonnb_xengallery_requested_album_does_not_exist');
                     } elseif (!$this->_getAlbumModel()->canViewAlbum($album, $errorKey)) {
                         $message = new XenForo_Phrase($errorKey);
                     } else {
                         if (!empty($album['album_id'])) {
                             $bbcode = "[album=\"{$size}\"]{$album['album_id']}[/album]";
                         }
                     }
                     break;
             }
         } else {
             $url = $this->_getValidUrl($url);
             $routeUrlMatch = $this->parseRouteUrl($url);
             if ($routeUrlMatch) {
                 switch ($type) {
                     case 'content':
                         if (!empty($routeUrlMatch['params']['content_id'])) {
                             $contentId = intval($routeUrlMatch['params']['content_id']);
                             $fetchOptions = array('join' => sonnb_XenGallery_Model_Content::FETCH_ALBUM);
                             $content = $this->_getContentModel()->getContentById($contentId, $fetchOptions);
                             $content = $this->_getContentModel()->prepareContent($content, $fetchOptions);
                             if (empty($content)) {
                                 $message = new XenForo_Phrase('sonnb_xengallery_requested_photo_video_does_not_exist');
                             } elseif (!$this->_getContentModel()->canViewContentAndContainer($content, $content['album'], $errorKey)) {
                                 $message = new XenForo_Phrase($errorKey);
                             } else {
                                 if (!empty($content['content_id'])) {
                                     switch ($content['content_type']) {
                                         case sonnb_XenGallery_Model_Photo::$contentType:
                                             $bbcode = "[photo=\"{$size}\"]{$content['content_id']}[/photo]";
                                             break;
                                         case sonnb_XenGallery_Model_Video::$contentType:
                                             $bbcode = "[video]{$content['content_id']}[/video]";
                                             break;
                                     }
                                 }
                             }
                         } else {
                             $message = new XenForo_Phrase('sonnb_xengallery_your_url_is_not_valid_photo_video_url');
                         }
                         break;
                     case 'album':
                         if (!empty($routeUrlMatch['params']['album_id'])) {
                             $albumId = intval($routeUrlMatch['params']['album_id']);
                             $album = $this->_getAlbumModel()->getAlbumById($albumId);
                             $album = $this->_getAlbumModel()->prepareAlbum($album);
                             if (empty($album)) {
                                 $message = new XenForo_Phrase('sonnb_xengallery_requested_album_does_not_exist');
                             } elseif (!$this->_getAlbumModel()->canViewAlbum($album, $errorKey)) {
                                 $message = new XenForo_Phrase($errorKey);
                             } else {
                                 if (!empty($album['album_id'])) {
                                     $bbcode = "[album=\"{$size}\"]{$album['album_id']}[/album]";
                                 }
                             }
                         } else {
                             $message = new XenForo_Phrase('sonnb_xengallery_your_url_is_not_valid_album_url');
                         }
                         break;
                     default:
                         $message = new XenForo_Phrase('sonnb_xengallery_your_url_is_invalid');
                         break;
                 }
             } else {
                 $message = new XenForo_Phrase('sonnb_xengallery_your_url_is_invalid');
             }
         }
         return $this->responseView('sonnb_XenGallery_ViewPublic_Editor_Insert', '', array('message' => $message, 'bbcode' => $bbcode));
     }
 }
示例#18
0
 /**
  * Static helper to execute a full request for proxy output
  */
 public static function run()
 {
     $dependencies = new XenForo_Dependencies_Public();
     $dependencies->preLoadData();
     $class = XenForo_Application::resolveDynamicClass(__CLASS__);
     $proxyOutput = new $class($_REQUEST, $dependencies);
     $proxyOutput->output();
 }
示例#19
0
 public function actionExternalRegister()
 {
     $this->_assertPostOnly();
     $redirect = $this->_bdApiConsumer_getRedirect();
     $userModel = $this->_getUserModel();
     /** @var bdApiConsumer_XenForo_Model_UserExternal $userExternalModel */
     $userExternalModel = $this->_getUserExternalModel();
     $providerCode = $this->_input->filterSingle('provider', XenForo_Input::STRING);
     $provider = bdApiConsumer_Option::getProviderByCode($providerCode);
     if (empty($provider)) {
         return $this->responseNoPermission();
     }
     $doAssoc = $this->_input->filterSingle('associate', XenForo_Input::STRING) || $this->_input->filterSingle('force_assoc', XenForo_Input::UINT);
     $userId = 0;
     if ($doAssoc) {
         $associate = $this->_input->filter(array('associate_login' => XenForo_Input::STRING, 'associate_password' => XenForo_Input::STRING));
         $loginModel = $this->_getLoginModel();
         if ($loginModel->requireLoginCaptcha($associate['associate_login'])) {
             return $this->responseError(new XenForo_Phrase('your_account_has_temporarily_been_locked_due_to_failed_login_attempts'));
         }
         $userId = $userModel->validateAuthentication($associate['associate_login'], $associate['associate_password'], $error);
         if (!$userId) {
             $loginModel->logLoginAttempt($associate['associate_login']);
             return $this->responseError($error);
         }
     }
     $refreshToken = $this->_input->filterSingle('refresh_token', XenForo_Input::STRING);
     $externalToken = bdApiConsumer_Helper_Api::getAccessTokenFromRefreshToken($provider, $refreshToken);
     if (empty($externalToken)) {
         return $this->responseError(new XenForo_Phrase('bdapi_consumer_error_occurred_while_connecting_with_x', array('provider' => $provider['name'])));
     }
     $externalVisitor = bdApiConsumer_Helper_Api::getVisitor($provider, $externalToken['access_token']);
     if (empty($externalVisitor)) {
         return $this->responseError(new XenForo_Phrase('bdapi_consumer_error_occurred_while_connecting_with_x', array('provider' => $provider['name'])));
     }
     if (empty($externalVisitor['user_email'])) {
         return $this->responseError(new XenForo_Phrase('bdapi_consumer_x_returned_unknown_error', array('provider' => $provider['name'])));
     }
     if (isset($externalVisitor['user_is_valid']) and isset($externalVisitor['user_is_verified'])) {
         if (empty($externalVisitor['user_is_valid']) or empty($externalVisitor['user_is_verified'])) {
             return $this->responseError(new XenForo_Phrase('bdapi_consumer_x_account_not_good_standing', array('provider' => $provider['name'])));
         }
     }
     if ($doAssoc) {
         $userExternalModel->bdApiConsumer_updateExternalAuthAssociation($provider, $externalVisitor['user_id'], $userId, array_merge($externalVisitor, array('token' => $externalToken)));
         XenForo_Application::getSession()->changeUserId($userId);
         XenForo_Visitor::setup($userId);
         return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $redirect);
     }
     if (bdApiConsumer_Option::get('bypassRegistrationActive')) {
         // do not check for registration active option
     } else {
         $this->_assertRegistrationActive();
     }
     $data = $this->_input->filter(array('username' => XenForo_Input::STRING, 'timezone' => XenForo_Input::STRING));
     // TODO: custom fields
     if (XenForo_Dependencies_Public::getTosUrl() && !$this->_input->filterSingle('agree', XenForo_Input::UINT)) {
         return $this->responseError(new XenForo_Phrase('you_must_agree_to_terms_of_service'));
     }
     $user = bdApiConsumer_Helper_AutoRegister::createUser($data, $provider, $externalToken, $externalVisitor, $this->_getUserExternalModel());
     XenForo_Application::getSession()->changeUserId($user['user_id']);
     XenForo_Visitor::setup($user['user_id']);
     $viewParams = array('user' => $user, 'redirect' => $redirect);
     return $this->responseView('XenForo_ViewPublic_Register_Process', 'register_process', $viewParams, $this->_getRegistrationContainerParams());
 }