public function _getAddEditResponse(array $item) { $item = array_merge($item, $this->_getDatePartsFromTimestamp('start', $item['listing_start'], $item['listing_timezone']), $this->_getDatePartsFromTimestamp('end', $item['listing_end'], $item['listing_timezone'])); $hours = [0 => 12]; for ($i = 1; $i < 12; $i++) { $hours[] = $i; } $mins = []; for ($i = 0; $i < 61; $i = $i + 15) { if ($i < 10) { $mins[] = '0' . $i; } else { $mins[] = $i; } } $viewParams = array('hours' => $hours, 'mins' => $mins, 'cat' => $this->_type['type_cat_id'] ? $this->_getCatsModel()->getById($this->_type['type_cat_id']) : [], 'subcat' => $this->_type['type_subcat_id'] ? $this->_getCatsModel()->getById($this->_type['type_subcat_id']) : [], 'catItems' => $this->_type['type_subcat_id'] ? $this->_getCatItemsModel()->getByCatId($this->_type['type_cat_id']) : [], 'subcatItems' => $this->_type['type_subcat_id'] ? $this->_getCatItemsModel()->getByCatId($this->_type['type_subcat_id']) : [], 'type' => $this->_type, 'input' => $item, 'timeZones' => XenForo_Helper_TimeZone::getTimeZones()); return $this->responseView('GeekListings_ViewPublic_ListEdit', 'GeekListing_edit', $viewParams); }
public function actionCreate() { if (!$this->perms['post']) { return $this->responseNoPermission(); } $input['location'] = str_replace('{location}', '', XenForo_Application::get('options')->EWRatendo_geoLocationUrl); if ($this->_request->isPost()) { $input = $this->_input->filter(array('event_title' => XenForo_Input::STRING, 'event_venue' => XenForo_Input::STRING, 'event_address' => XenForo_Input::STRING, 'event_citystate' => XenForo_Input::STRING, 'event_zipcode' => XenForo_Input::STRING, 'event_date' => XenForo_Input::STRING, 'event_time' => XenForo_Input::UINT, 'event_mins' => XenForo_Input::UINT, 'event_ampm' => XenForo_Input::STRING, 'event_length' => XenForo_Input::UINT, 'event_timezone' => XenForo_Input::STRING, 'event_rsvp' => XenForo_Input::UINT, 'event_recur' => XenForo_Input::UINT, 'event_recur_count' => XenForo_Input::UINT, 'event_recur_units' => XenForo_Input::STRING, 'event_expire' => XenForo_Input::UINT, 'event_recur_expire' => XenForo_Input::STRING, 'event_node' => XenForo_Input::UINT, 'create_thread' => XenForo_Input::UINT, 'submit' => XenForo_Input::STRING)); if ($input['event_description'] = $this->getHelper('Editor')->getMessageText('event_description', $this->_input)) { $input['bypass'] = $this->perms['bypass']; $event = $this->getModelFromCache('EWRatendo_Model_Events')->updateEvent($input); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('events', $event)); } else { throw new XenForo_Exception(new XenForo_Phrase('please_enter_valid_message'), true); } $input = $this->getModelFromCache('EWRatendo_Model_Events')->formatMaps($input); } else { $visitor = XenForo_Visitor::getInstance(); $datetime = new DateTime(date('r', XenForo_Application::$time + 3600)); $datetime->setTimezone(new DateTimeZone($visitor['timezone'])); $input['event_date'] = $datetime->format('Y-m-d'); $input['event_time'] = XenForo_Application::get('options')->EWRatendo_24hour ? $datetime->format('H') : $datetime->format('h'); $input['event_ampm'] = $datetime->format('A'); $expire = new DateTime(date('r', XenForo_Application::$time + 31536000)); $expire->setTimezone(new DateTimeZone($visitor['timezone'])); $input['event_recur_units'] = 'weeks'; $input['event_recur_expire'] = $expire->format('Y-m-d'); $input['event_expire'] = 1; } $forums = array(); $selected = !empty($this->slugs[1]) ? $this->slugs[1] : false; $selected = isset($input['create_thread']) && empty($input['create_thread']) ? false : $selected; $input['event_rsvp'] = isset($input['event_rsvp']) && empty($input['event_rsvp']) ? false : true; foreach (XenForo_Application::get('options')->EWRatendo_eventforums as $forum) { $forum = $this->getModelFromCache('XenForo_Model_Forum')->getForumById($forum); if ($forum && $this->getModelFromCache('XenForo_Model_Forum')->canPostThreadInForum($forum)) { $forums[] = $forum; } } $viewParams = array('forums' => $forums, 'selected' => $selected, 'input' => $input, 'timeZones' => XenForo_Helper_TimeZone::getTimeZones()); return $this->responseView('EWRatendo_ViewPublic_EventsCreate', 'EWRatendo_EventsCreate', $viewParams); }
public function actionEdit() { $eventID = $this->_input->filterSingle('event_id', XenForo_Input::UINT); if (!($event = $this->getModelFromCache('EWRatendo_Model_Events')->getEventById($eventID))) { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::RESOURCE_CANONICAL_PERMANENT, XenForo_Link::buildPublicLink('events')); } if (!$this->perms['mod'] && $event['user_id'] != XenForo_Visitor::getUserId()) { return $this->responseNoPermission(); } if ($this->_request->isPost()) { $input = $this->_input->filter(array('prefix_id' => XenForo_Input::UINT, 'event_title' => XenForo_Input::STRING, 'event_venue' => XenForo_Input::STRING, 'event_address' => XenForo_Input::STRING, 'event_citystate' => XenForo_Input::STRING, 'event_zipcode' => XenForo_Input::STRING, 'event_date' => XenForo_Input::STRING, 'event_time' => XenForo_Input::UINT, 'event_mins' => XenForo_Input::UINT, 'event_ampm' => XenForo_Input::STRING, 'event_length' => XenForo_Input::UINT, 'event_timezone' => XenForo_Input::STRING, 'event_rsvp' => XenForo_Input::UINT, 'event_recur' => XenForo_Input::UINT, 'event_recur_count' => XenForo_Input::UINT, 'event_recur_units' => XenForo_Input::STRING, 'event_expire' => XenForo_Input::UINT, 'event_recur_expire' => XenForo_Input::STRING, 'submit' => XenForo_Input::STRING)); $input['event_id'] = $event['event_id']; $input['event_description'] = $this->getHelper('Editor')->getMessageText('event_description', $this->_input); $input['bypass'] = $this->perms['bypass']; $event = $this->getModelFromCache('EWRatendo_Model_Events')->updateEvent($input); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildPublicLink('events', $event)); } if ($event['event_recur_count'] && $event['event_recur_units'] != 'none') { $event['recur_check'] = true; if ($event['event_recur_expire']) { $expire = new DateTime(date('r', $event['event_recur_expire'])); $expire->setTimezone(new DateTimeZone($event['event_timezone'])); $event['event_expire'] = $expire->format('Y-m-d'); } } else { $event['event_recur_count'] = '1'; $event['event_recur_units'] = 'weeks'; } if (!empty($event['thread_id'])) { $ftpHelper = $this->getHelper('ForumThreadPost'); list($thread, $forum) = $ftpHelper->assertThreadValidAndViewable($event['thread_id']); $prefixes = $this->getModelFromCache('XenForo_Model_ThreadPrefix')->getUsablePrefixesInForums($forum['node_id']); } $viewParams = array('event' => $event, 'thread' => !empty($thread) ? $thread : array(), 'prefixes' => !empty($prefixes) ? $prefixes : array(), 'timeZones' => XenForo_Helper_TimeZone::getTimeZones()); return $this->responseView('EWRatendo_ViewPublic_EventsEdit', 'EWRatendo_EventsEdit', $viewParams); }
protected function _getExternalRegisterFormResponse($viewName, $templateName, array $extraParams = array()) { $options = XenForo_Application::getOptions(); $viewParams = $extraParams + array('customFields' => $this->_getFieldModel()->prepareUserFields($this->_getFieldModel()->getUserFields(array('registration' => true)), true), 'timeZones' => XenForo_Helper_TimeZone::getTimeZones(), 'tosUrl' => XenForo_Dependencies_Public::getTosUrl(), 'dobRequired' => $options->get('registrationSetup', 'requireDob')); return $this->responseView($viewName, $templateName, $viewParams, $this->_getRegistrationContainerParams()); }
protected function _prepareTimeZone($value) { $tzs = XenForo_Helper_TimeZone::getTimeZones(); return isset($tzs[$value]) ? $tzs[$value] : $value; }
/** * Renders the guest time zone option. * * @param XenForo_View $view View object * @param string $fieldPrefix Prefix for the HTML form field name * @param array $preparedOption Prepared option info * @param boolean $canEdit True if an "edit" link should appear * * @return XenForo_Template_Abstract Template object */ public static function renderOption(XenForo_View $view, $fieldPrefix, array $preparedOption, $canEdit) { $preparedOption['formatParams'] = XenForo_Helper_TimeZone::getTimeZones(); return XenForo_ViewAdmin_Helper_Option::renderOptionTemplateInternal('option_list_option_select', $view, $fieldPrefix, $preparedOption, $canEdit); }
/** * Gets the data that is needed to display a list of criteria options for user selection. * * Tied with the helper_criteria_user admin template, via $userCriteriaData. * * @return array */ public static function getDataForUserCriteriaSelection() { $hours = array(); for ($i = 0; $i < 24; $i++) { $hh = str_pad($i, 2, '0', STR_PAD_LEFT); $hours[$hh] = $hh; } $minutes = array(); for ($i = 0; $i < 60; $i += 5) { $mm = str_pad($i, 2, '0', STR_PAD_LEFT); $minutes[$mm] = $mm; } return array('userGroups' => XenForo_Model::create('XenForo_Model_UserGroup')->getAllUserGroups(), 'styles' => XenForo_Model::create('XenForo_Model_Style')->getAllStylesAsFlattenedTree(), 'languages' => XenForo_Model::create('XenForo_Model_Language')->getAllLanguagesAsFlattenedTree(), 'timezones' => XenForo_Helper_TimeZone::getTimeZones(), 'hours' => $hours, 'minutes' => $minutes, 'userFieldGroups' => self::getUserFields()); }
/** * Main user options editing control panel * * @return XenForo_ControllerResponse_View */ public function actionPreferences() { $styles = $this->getModelFromCache('XenForo_Model_Style')->getAllStylesAsFlattenedTree(); $languages = $this->getModelFromCache('XenForo_Model_Language')->getAllLanguages(); $options = XenForo_Application::get('options'); $defaultStyle = isset($styles[$options->defaultStyleId]) ? $styles[$options->defaultStyleId] : array(); if (count($styles) <= 1) { $canChangeStyle = false; } else { if (XenForo_Visitor::getInstance()->is_admin) { $canChangeStyle = count($styles) > 1; } else { $changable = 0; $canChangeStyle = false; foreach ($styles as $style) { if ($style['user_selectable']) { $changable++; if ($changable > 1) { $canChangeStyle = true; break; } } } } } $viewParams = array('styles' => $styles, 'defaultStyle' => $defaultStyle, 'canChangeStyle' => $canChangeStyle, 'languages' => $languages, 'canChangeLanguage' => count($languages) > 1, 'timeZones' => XenForo_Helper_TimeZone::getTimeZones(), 'customFields' => $this->_getFieldModel()->prepareUserFields($this->_getFieldModel()->getUserFields(array('display_group' => 'preferences'), array('valueUserId' => XenForo_Visitor::getUserId())), true), 'showNoticeReset' => (bool) XenForo_Application::getSession()->get('dismissedNotices')); return $this->_getWrapper('account', 'preferences', $this->responseView('XenForo_ViewPublic_Account_Preferences', 'account_preferences', $viewParams)); }
protected function _getUserAddEditResponse(array $user) { $userModel = $this->_getUserModel(); if ($user['user_id']) { $user['is_super_admin'] = $this->_getUserModel()->isUserSuperAdmin($user); } else { $user['is_super_admin'] = false; } $fieldModel = $this->_getFieldModel(); $customFields = $fieldModel->prepareUserFields($fieldModel->getUserFields(array(), array('valueUserId' => $user['user_id'])), true); $viewParams = array('user' => $user, 'timeZones' => XenForo_Helper_TimeZone::getTimeZones(), 'userGroups' => $this->_getUserGroupModel()->getAllUserGroupTitles(), 'customFieldsGrouped' => $fieldModel->groupUserFields($customFields), 'styles' => $this->getModelFromCache('XenForo_Model_Style')->getStylesForOptionsTag($user['style_id']), 'languages' => $this->getModelFromCache('XenForo_Model_Language')->getLanguagesForOptionsTag($user['language_id']), 'lastHash' => $this->getLastHash($user['user_id'])); return $this->responseView('XenForo_ViewAdmin_User_Edit', 'user_edit', $viewParams); }
/** * Displays a form to join using Facebook or logs in an existing account. * * @return XenForo_ControllerResponse_Abstract */ public function actionFacebook() { $assocUserId = $this->_input->filterSingle('assoc', XenForo_Input::UINT); $redirect = $this->_input->filterSingle('redirect', XenForo_Input::STRING); $options = XenForo_Application::get('options'); $fbRedirectUri = XenForo_Link::buildPublicLink('canonical:register/facebook', false, array('assoc' => $assocUserId ? $assocUserId : false)); if ($this->_input->filterSingle('reg', XenForo_Input::UINT)) { $redirect = XenForo_Link::convertUriToAbsoluteUri($this->getDynamicRedirect()); $baseDomain = preg_replace('#^([a-z]+://[^/]+).*$#i', '$1', $options->boardUrl); if (strpos($redirect, $baseDomain) !== 0) { $redirect = XenForo_Link::buildPublicLink('canonical:index'); } XenForo_Application::get('session')->set('fbRedirect', $redirect); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::RESOURCE_CANONICAL, XenForo_Helper_Facebook::getFacebookRequestUrl($fbRedirectUri)); } $fbToken = $this->_input->filterSingle('t', XenForo_Input::STRING); if (!$fbToken) { $error = $this->_input->filterSingle('error', XenForo_Input::STRING); if ($error == 'access_denied') { return $this->responseError(new XenForo_Phrase('access_to_facebook_account_denied')); } $code = $this->_input->filterSingle('code', XenForo_Input::STRING); if (!$code) { return $this->responseError(new XenForo_Phrase('error_occurred_while_connecting_with_facebook')); } $token = XenForo_Helper_Facebook::getAccessTokenFromCode($code, $fbRedirectUri); $fbError = XenForo_Helper_Facebook::getFacebookRequestErrorInfo($token, 'access_token'); if ($fbError) { XenForo_Error::logException(new XenForo_Exception(strval($fbError))); return $this->responseError(new XenForo_Phrase('error_occurred_while_connecting_with_facebook')); } $fbToken = $token['access_token']; } $fbUser = XenForo_Helper_Facebook::getUserInfo($fbToken); $fbError = XenForo_Helper_Facebook::getFacebookRequestErrorInfo($fbUser, 'id'); if ($fbError) { XenForo_Error::logException(new XenForo_Exception(strval($fbError))); return $this->responseError(new XenForo_Phrase('error_occurred_while_connecting_with_facebook')); } $userModel = $this->_getUserModel(); $userExternalModel = $this->_getUserExternalModel(); $fbAssoc = $userExternalModel->getExternalAuthAssociation('facebook', $fbUser['id']); if ($fbAssoc && $userModel->getUserById($fbAssoc['user_id'])) { XenForo_Helper_Facebook::setUidCookie($fbUser['id']); XenForo_Application::get('session')->changeUserId($fbAssoc['user_id']); XenForo_Visitor::setup($fbAssoc['user_id']); $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); } XenForo_Helper_Facebook::setUidCookie(0); parent::_assertBoardActive('facebook'); $existingUser = false; $emailMatch = false; if (XenForo_Visitor::getUserId()) { $existingUser = XenForo_Visitor::getInstance(); } else { if ($assocUserId) { $existingUser = $userModel->getUserById($assocUserId); } } if (!$existingUser) { $existingUser = $userModel->getUserByEmail($fbUser['email']); $emailMatch = true; } if ($existingUser) { // must associate: matching user return $this->responseView('XenForo_ViewPublic_Register_Facebook', 'register_facebook', array('associateOnly' => true, 'fbToken' => $fbToken, 'fbUser' => $fbUser, 'existingUser' => $existingUser, 'emailMatch' => $emailMatch, 'redirect' => $redirect)); } if (!XenForo_Application::get('options')->get('registrationSetup', 'enabled')) { $this->_assertRegistrationActive(); } 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')); } } } // give a unique username suggestion $i = 2; $origName = $fbUser['name']; while ($userModel->getUserByName($fbUser['name'])) { $fbUser['name'] = $origName . ' ' . $i++; } return $this->responseView('XenForo_ViewPublic_Register_Facebook', 'register_facebook', array('fbToken' => $fbToken, 'fbUser' => $fbUser, 'redirect' => $redirect, 'timeZones' => XenForo_Helper_TimeZone::getTimeZones(), 'tosUrl' => XenForo_Dependencies_Public::getTosUrl()), $this->_getRegistrationContainerParams()); }
public function actionExternal() { $providerCode = $this->_input->filterSingle('provider', XenForo_Input::STRING); $assocUserId = $this->_input->filterSingle('assoc', XenForo_Input::UINT); $externalCode = $this->_input->filterSingle('code', XenForo_Input::STRING); $redirect = $this->_bdApiConsumer_getRedirect(); $state = $this->_input->filterSingle('state', XenForo_Input::STRING); if (!empty($state)) { // looks like bdApiConsumer_Option::CONFIG_TRACK_AUTHORIZE_URL_STATE has been enabled // attempt to unpack the state data now $stateData = @base64_decode($state); if ($stateData !== false) { $stateData = @json_decode($stateData, true, 2); if ($stateData !== null) { if (isset($stateData['time'])) { $stateData['timeElapsed'] = XenForo_Application::$time - $stateData['time']; } // make it available in server error log (if an error occurs) $_POST['.state'] = $stateData; } } } $provider = bdApiConsumer_Option::getProviderByCode($providerCode); if (empty($provider)) { if (!empty($externalCode)) { // make this available in server error log $_POST['.dynamicRedirect'] = $this->getDynamicRedirect(); // this is one serious error throw new XenForo_Exception('Provider could not be determined'); } else { return $this->responseNoPermission(); } } $externalRedirectUri = XenForo_Link::buildPublicLink('canonical:register/external', false, array('provider' => $providerCode, 'assoc' => $assocUserId ? $assocUserId : false)); if ($this->_input->filterSingle('reg', XenForo_Input::UINT)) { XenForo_Application::get('session')->set(self::SESSION_KEY_REDIRECT, $redirect); $social = $this->_input->filterSingle('social', XenForo_Input::STRING); $requestUrl = bdApiConsumer_Helper_Api::getRequestUrl($provider, $externalRedirectUri, array('social' => $social)); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::RESOURCE_CANONICAL, $requestUrl); } $externalToken = null; if (empty($externalToken)) { $_token = $this->_input->filterSingle('_token', XenForo_Input::STRING); if (!empty($_token)) { $_token = @base64_decode($_token); if (!empty($_token)) { $_token = @json_decode($_token, true); if (!empty($_token)) { $externalToken = $_token; } } } } if (empty($externalToken)) { // there should be `code` at this point... if (empty($externalCode)) { return $this->responseError(new XenForo_Phrase('bdapi_consumer_error_occurred_while_connecting_with_x', array('provider' => $provider['name']))); } $externalToken = bdApiConsumer_Helper_Api::getAccessTokenFromCode($provider, $externalCode, $externalRedirectUri); if (!empty($externalToken)) { $selfRedirect = $this->_request->getRequestUri(); $selfRedirect = preg_replace('#(\\?|&)code=.+(&|$)#', '$1', $selfRedirect); $selfRedirect = preg_replace('#(\\?|&)state=.+(&|$)#', '$1', $selfRedirect); // filter $externalToken keys to make it more lightweight foreach (array_keys($externalToken) as $_key) { if ($_key === 'debug' || substr($_key, 0, 1) === '_') { unset($externalToken[$_key]); } } $selfRedirect .= sprintf('%1$s_token=%2$s', strpos($selfRedirect, '?') === false ? '?' : '&', rawurlencode(base64_encode(json_encode($externalToken)))); // do a self redirect immediately so user won't refresh the page // TODO: improve this return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $selfRedirect); } } if (empty($externalToken)) { if (!XenForo_Visitor::getUserId()) { // report error only if user hasn't been logged in return $this->responseError(new XenForo_Phrase('bdapi_consumer_error_occurred_while_connecting_with_x', array('provider' => $provider['name']))); } else { // or try to be friendly and just redirect user back to where s/he was return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $redirect); } } $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']) && isset($externalVisitor['user_is_verified'])) { if (empty($externalVisitor['user_is_valid']) || empty($externalVisitor['user_is_verified'])) { return $this->responseError(new XenForo_Phrase('bdapi_consumer_x_account_not_good_standing', array('provider' => $provider['name']))); } } $userModel = $this->_getUserModel(); /** @var bdApiConsumer_XenForo_Model_UserExternal $userExternalModel */ $userExternalModel = $this->_getUserExternalModel(); $existingAssoc = $userExternalModel->getExternalAuthAssociation($userExternalModel->bdApiConsumer_getProviderCode($provider), $externalVisitor['user_id']); $autoRegistered = false; if (empty($existingAssoc)) { $existingAssoc = $this->_bdApiConsumer_autoRegister($provider, $externalToken, $externalVisitor); if (!empty($existingAssoc)) { $autoRegistered = true; } } if ($existingAssoc && $userModel->getUserById($existingAssoc['user_id'])) { XenForo_Application::get('session')->changeUserId($existingAssoc['user_id']); XenForo_Visitor::setup($existingAssoc['user_id']); if (!$autoRegistered) { $userExternalModel->bdApiConsumer_updateExternalAuthAssociation($provider, $externalVisitor['user_id'], $existingAssoc['user_id'], array_merge($externalVisitor, array('token' => $externalToken))); } return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $redirect); } $existingUser = false; $emailMatch = false; if (XenForo_Visitor::getUserId()) { $existingUser = XenForo_Visitor::getInstance(); } elseif ($assocUserId) { $existingUser = $userModel->getUserById($assocUserId); } if (!$existingUser) { $existingUser = $userModel->getUserByEmail($externalVisitor['user_email']); $emailMatch = true; } if ($existingUser) { // must associate: matching user return $this->responseView('bdApiConsumer_ViewPublic_Register_External', 'bdapi_consumer_register', array('associateOnly' => true, 'provider' => $provider, 'externalToken' => $externalToken, 'externalVisitor' => $externalVisitor, 'existingUser' => $existingUser, 'emailMatch' => $emailMatch, 'redirect' => $redirect)); } if (bdApiConsumer_Option::get('bypassRegistrationActive')) { // do not check for registration active option } else { $this->_assertRegistrationActive(); } $externalVisitor['username'] = bdApiConsumer_Helper_AutoRegister::suggestUserName($externalVisitor['username'], $userModel); return $this->responseView('bdApiConsumer_ViewPublic_Register_External', 'bdapi_consumer_register', array('provider' => $provider, 'externalToken' => $externalToken, 'externalVisitor' => $externalVisitor, 'redirect' => $redirect, 'customFields' => $this->_getFieldModel()->prepareUserFields($this->_getFieldModel()->getUserFields(array('registration' => true)), true), 'timeZones' => XenForo_Helper_TimeZone::getTimeZones(), 'tosUrl' => XenForo_Dependencies_Public::getTosUrl()), $this->_getRegistrationContainerParams()); }
protected function _getUserAddEditResponse(array $user) { $userModel = $this->_getUserModel(); if ($user['user_id']) { $user['is_super_admin'] = $this->getModelFromCache('XenForo_Model_Admin')->isSuperAdmin($user['user_id']); $identities = $userModel->getIdentities($user['user_id']); } else { $user['is_supder_admin'] = false; $identities = array(); } $viewParams = array('user' => $user, 'timeZones' => XenForo_Helper_TimeZone::getTimeZones(), 'userGroups' => $this->_getUserGroupModel()->getAllUserGroupTitles(), 'idServices' => $userModel->getIdentityServicesEditingData($identities), 'styles' => $this->getModelFromCache('XenForo_Model_Style')->getStylesForOptionsTag($user['style_id']), 'languages' => $this->getModelFromCache('XenForo_Model_Language')->getLanguagesForOptionsTag($user['language_id']), 'lastHash' => $this->getLastHash($user['user_id'])); return $this->responseView('XenForo_ViewAdmin_User_Edit', 'user_edit', $viewParams); }
public function actionSteam() { $assocUserId = $this->_input->filterSingle('assoc', XenForo_Input::UINT); $redirect = $this->_input->filterSingle('redirect', XenForo_Input::STRING); $session = XenForo_Application::get('session'); if ($this->_input->filterSingle('reg', XenForo_Input::UINT)) { return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $this->_genUrl()); } // Validate Response $id = $this->_validate(); if (empty($id)) { return $this->responseError('Error during authentication. Please try again.'); } $session->set('steam_id', $id); $userModel = $this->_getUserModel(); $userExternalModel = $this->_getUserExternalModel(); $stAssoc = $userExternalModel->getExternalAuthAssociation('steam', $id); if ($stAssoc && $userModel->getUserById($stAssoc['user_id'])) { XenForo_Application::get('session')->changeUserId($stAssoc['user_id']); XenForo_Visitor::setup($stAssoc['user_id']); /* Cookies */ $userModel->setUserRememberCookie($stAssoc['user_id']); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $this->getDynamicRedirect(false, false)); } $existingUser = false; if (XenForo_Visitor::getUserId()) { $existingUser = XenForo_Visitor::getInstance(); } else { if ($assocUserId) { $existingUser = $userModel->getUserById($assocUserId); } } if ($existingUser) { // must associate: matching user return $this->responseView('XenForo_ViewPublic_Register_Steam', 'register_steam', array('associateOnly' => true, 'existingUser' => $existingUser, 'redirect' => $redirect)); } if (!XenForo_Application::get('options')->get('registrationSetup', 'enabled')) { $this->_assertRegistrationActive(); } $username = ''; $sHelper = new Steam_Helper_Steam(); $steamProfileAPI = $sHelper->getSteamProfileAPI($id); $json_object = $sHelper->getJsonData($steamProfileAPI); $json_decoded = json_decode($json_object); if (empty($json_decoded)) { return $this->responseError('Problem communicating with Steam Community. Please try your registration again.'); } if (!empty($json_decoded)) { $username = $json_decoded->response->players[0]->personaname; if (!isset($json_decoded->response->players[0]->loccountrycode)) { $location = 'Parts Unknown'; } if (isset($json_decoded->response->players[0]->loccountrycode)) { $location = $json_decoded->response->players[0]->loccountrycode; switch ($location) { case "AF": $location = "Afghanistan"; break; case "AL": $location = "Albania"; break; case "DZ": $location = "Algeria"; break; case "AD": $location = "Andorra"; break; case "AO": $location = "Angola"; break; case "AG": $location = "Antigua and Barbuda"; break; case "AR": $location = "Argentina"; break; case "AM": $location = "Armenia"; break; case "AU": $location = "Australia"; break; case "AT": $location = "Austria"; break; case "AZ": $location = "Azerbaijan"; break; case "BS": $location = "The Bahamas"; break; case "BH": $location = "Bahrain"; break; case "BD": $location = "Bangladesh"; break; case "BB": $location = "Barbados"; break; case "BY": $location = "Belarus"; break; case "BE": $location = "Belgium"; break; case "BZ": $location = "Belize"; break; case "BJ": $location = "Benin"; break; case "BT": $location = "Bhutan"; break; case "BO": $location = "Bolivia"; break; case "BA": $location = "Bosnia and Herzegovina"; break; case "BW": $location = "Botswana"; break; case "BR": $location = "Brazil"; break; case "BN": $location = "Brunei"; break; case "BG": $location = "Bulgaria"; break; case "BF": $location = "Burkina Faso"; break; case "BI": $location = "Burundi"; break; case "KH": $location = "Cambodia"; break; case "CM": $location = "Cameroon"; break; case "CA": $location = "Canada"; break; case "CV": $location = "Cape Verde"; break; case "CF": $location = "Central African Republic"; break; case "TD": $location = "Chad"; break; case "CL": $location = "Chile"; break; case "CN": $location = "China"; break; case "CO": $location = "Colombia"; break; case "KM": $location = "Comoros"; break; case "CG": $location = "Congo, Republic of the"; break; case "CD": $location = "Congo, Democratic Republic of the"; break; case "CR": $location = "Costa Rica"; break; case "CI": $location = "Cote d'Ivoire"; break; case "HR": $location = "Croatia"; break; case "CU": $location = "Cuba"; break; case "CY": $location = "Cyprus"; break; case "CZ": $location = "Czech Republic"; break; case "DK": $location = "Denmark"; break; case "DJ": $location = "Djibouti"; break; case "DM": $location = "Dominica"; break; case "DO": $location = "Dominican Republic"; break; case "TL": $location = "Timor-Leste"; break; case "EC": $location = "Ecuador"; break; case "EG": $location = "Egypt"; break; case "SV": $location = "El Salvador"; break; case "GQ": $location = "Equatorial Guinea"; break; case "ER": $location = "Eritrea"; break; case "EE": $location = "Estonia"; break; case "ET": $location = "Ethiopia"; break; case "FJ": $location = "Fiji"; break; case "FI": $location = "Finland"; break; case "FR": $location = "France"; break; case "GA": $location = "Gabon"; break; case "GM": $location = "Gambia"; break; case "GE": $location = "Georgia"; break; case "DE": $location = "Germany"; break; case "GH": $location = "Ghana"; break; case "GR": $location = "Greece"; break; case "GD": $location = "Grenada"; break; case "GT": $location = "Guatemala"; break; case "GN": $location = "Guinea"; break; case "GW": $location = "Guinea-Bissau"; break; case "GY": $location = "Guyana"; break; case "HT": $location = "Haiti"; break; case "HN": $location = "Honduras"; break; case "HU": $location = "Hungary"; break; case "IS": $location = "Iceland"; break; case "IN": $location = "India"; break; case "ID": $location = "Indonesia"; break; case "IR": $location = "Iran"; break; case "IQ": $location = "Iraq"; break; case "IE": $location = "Ireland"; break; case "IL": $location = "Israel"; break; case "IT": $location = "Italy"; break; case "JM": $location = "Jamaica"; break; case "JP": $location = "Japan"; break; case "JO": $location = "Jordan"; break; case "KZ": $location = "Kazakhstan"; break; case "KE": $location = "Kenya"; break; case "KI": $location = "Kiribati"; break; case "KP": $location = "Korea, North"; break; case "KR": $location = "Korea, South"; break; case "ZZ": $location = "Kosovo"; break; case "KW": $location = "Kuwait"; break; case "KG": $location = "Kyrgyzstan"; break; case "LA": $location = "Laos"; break; case "LV": $location = "Latvia"; break; case "LB": $location = "Lebanon"; break; case "LS": $location = "Lesotho"; break; case "LR": $location = "Liberia"; break; case "LY": $location = "Libya"; break; case "LI": $location = "Liechtenstein"; break; case "LT": $location = "Lithuania"; break; case "LU": $location = "Luxembourg"; break; case "MK": $location = "Macedonia"; break; case "MG": $location = "Madagascar"; break; case "MW": $location = "Malawi"; break; case "MY": $location = "Malaysia"; break; case "MV": $location = "Maldives"; break; case "ML": $location = "Mali"; break; case "MT": $location = "Malta"; break; case "MH": $location = "Marshall Islands"; break; case "MR": $location = "Mauritania"; break; case "MU": $location = "Mauritius"; break; case "MX": $location = "Mexico"; break; case "FM": $location = "Micronesia, Federated States of"; break; case "MD": $location = "Moldova"; break; case "MC": $location = "Monaco"; break; case "MN": $location = "Mongolia"; break; case "ME": $location = "Montenegro"; break; case "MA": $location = "Morocco"; break; case "MZ": $location = "Mozambique"; break; case "MM": $location = "Myanmar (Burma)"; break; case "NA": $location = "Namibia"; break; case "NR": $location = "Nauru"; break; case "NP": $location = "Nepal"; break; case "NL": $location = "Netherlands"; break; case "NZ": $location = "New Zealand"; break; case "NI": $location = "Nicaragua"; break; case "NE": $location = "Niger"; break; case "NG": $location = "Nigeria"; break; case "NO": $location = "Norway"; break; case "OM": $location = "Oman"; break; case "PK": $location = "Pakistan"; break; case "PW": $location = "Palau"; break; case "PA": $location = "Panama"; break; case "PG": $location = "Papua New Guinea"; break; case "PY": $location = "Paraguay"; break; case "PE": $location = "Peru"; break; case "PH": $location = "Philippines"; break; case "PL": $location = "Poland"; break; case "PT": $location = "Portugal"; break; case "QA": $location = "Qatar"; break; case "RO": $location = "Romania"; break; case "RU": $location = "Russia"; break; case "RW": $location = "Rwanda"; break; case "KN": $location = "Saint Kitts and Nevis"; break; case "LC": $location = "Saint Lucia"; break; case "VC": $location = "Saint Vincent and the Grenadines"; break; case "WS": $location = "Samoa"; break; case "SM": $location = "San Marino"; break; case "ST": $location = "Sao Tome and Principe"; break; case "SA": $location = "Saudi Arabia"; break; case "SN": $location = "Senegal"; break; case "RS": $location = "Serbia"; break; case "SC": $location = "Seychelles"; break; case "SL": $location = "Sierra Leone"; break; case "SG": $location = "Singapore"; break; case "SK": $location = "Slovakia"; break; case "SI": $location = "Slovenia"; break; case "SB": $location = "Solomon Islands"; break; case "SO": $location = "Somalia"; break; case "ZA": $location = "South Africa"; break; case "SS": $location = "South Sudan"; break; case "ES": $location = "Spain"; break; case "LK": $location = "Sri Lanka"; break; case "SD": $location = "Sudan"; break; case "SR": $location = "Suriname"; break; case "SZ": $location = "Swaziland"; break; case "SE": $location = "Sweden"; break; case "CH": $location = "Switzerland"; break; case "SY": $location = "Syria"; break; case "TW": $location = "Taiwan"; break; case "TJ": $location = "Tajikistan"; break; case "TZ": $location = "Tanzania"; break; case "TH": $location = "Thailand"; break; case "TG": $location = "Togo"; break; case "TO": $location = "Tonga"; break; case "TT": $location = "Trinidad and Tobago"; break; case "TN": $location = "Tunisia"; break; case "TR": $location = "Turkey"; break; case "TM": $location = "Turkmenistan"; break; case "TV": $location = "Tuvalu"; break; case "UG": $location = "Uganda"; break; case "UA": $location = "Ukraine"; break; case "AE": $location = "United Arab Emirates"; break; case "GB": $location = "United Kingdom"; break; case "US": $location = "United States of America"; break; case "UY": $location = "Uruguay"; break; case "UZ": $location = "Uzbekistan"; break; case "VU": $location = "Vanuatu"; break; case "VA": $location = "Vatican City (Holy See)"; break; case "VE": $location = "Venezuela"; break; case "VN": $location = "Vietnam"; break; case "YE": $location = "Yemen"; break; case "ZM": $location = "Zambia"; break; case "ZW": $location = "Zimbabwe"; break; default: $location = 'Parts Unknown'; } if (isset($json_decoded->response->players[0]->locstatecode) && strcmp($location, 'United States of America') == 0) { $userstate = $json_decoded->response->players[0]->locstatecode; switch ($userstate) { case "AL": $location = "Alabama, " . $location; break; case "AK": $location = "Alaska, " . $location; break; case "AZ": $location = "Arizona, " . $location; break; case "AR": $location = "Arkansas, " . $location; break; case "CA": $location = "California, " . $location; break; case "CO": $location = "Colorado, " . $location; break; case "CT": $location = "Connecticut, " . $location; break; case "DE": $location = "Delaware, " . $location; break; case "FL": $location = "Florida, " . $location; break; case "GA": $location = "Georgia, " . $location; break; case "HI": $location = "Hawaii, " . $location; break; case "ID": $location = "Idaho, " . $location; break; case "IL": $location = "Illinois, " . $location; break; case "IN": $location = "Indiana, " . $location; break; case "IA": $location = "Iowa, " . $location; break; case "KS": $location = "Kansas, " . $location; break; case "KY": $location = "Kentucky, " . $location; break; case "LA": $location = "Louisiana, " . $location; break; case "ME": $location = "Maine, " . $location; break; case "MD": $location = "Maryland, " . $location; break; case "MA": $location = "Massachusetts, " . $location; break; case "MI": $location = "Michigan, " . $location; break; case "MN": $location = "Minnesota, " . $location; break; case "MS": $location = "Mississippi, " . $location; break; case "MO": $location = "Missouri, " . $location; break; case "MT": $location = "Montana, " . $location; break; case "NE": $location = "Nebraska, " . $location; break; case "NV": $location = "Nevada, " . $location; break; case "NH": $location = "New Hampshire, " . $location; break; case "NJ": $location = "New Jersey, " . $location; break; case "NM": $location = "New Mexico, " . $location; break; case "NY": $location = "New York, " . $location; break; case "NC": $location = "North Carolina, " . $location; break; case "ND": $location = "North Dakota, " . $location; break; case "OH": $location = "Ohio, " . $location; break; case "OK": $location = "Oklahoma, " . $location; break; case "OR": $location = "Oregon, " . $location; break; case "PA": $location = "Pennsylvania, " . $location; break; case "RI": $location = "Rhode Island, " . $location; break; case "SC": $location = "South Carolina, " . $location; break; case "SD": $location = "South Dakota, " . $location; break; case "TN": $location = "Tennessee, " . $location; break; case "TX": $location = "Texas, " . $location; break; case "UT": $location = "Utah, " . $location; break; case "VT": $location = "Vermont, " . $location; break; case "VA": $location = "Virginia, " . $location; break; case "WA": $location = "Washington, " . $location; break; case "WV": $location = "West Virginia, " . $location; break; case "WI": $location = "Wisconsin, " . $location; break; case "WY": $location = "Wyoming, " . $location; break; } } } } $i = 2; $origName = $username; while ($username != "" && $userModel->getUserByName($username)) { $username = "******"; $i++; } return $this->responseView('XenForo_ViewPublic_Register_Steam', 'register_steam', array('username' => $username, 'redirect' => $redirect, 'customFields' => $this->_getFieldModel()->prepareUserFields($this->_getFieldModel()->getUserFields(array('registration' => true)), true), 'timeZones' => XenForo_Helper_TimeZone::getTimeZones(), 'tosUrl' => XenForo_Dependencies_Public::getTosUrl(), 'location' => $location), $this->_getRegistrationContainerParams()); }
/** * Main user options editing control panel * * @return XenForo_ControllerResponse_View */ public function actionPreferences() { $styles = $this->getModelFromCache('XenForo_Model_Style')->getAllStylesAsFlattenedTree(); $languages = $this->getModelFromCache('XenForo_Model_Language')->getAllLanguages(); $options = XenForo_Application::get('options'); $defaultStyle = isset($styles[$options->defaultStyleId]) ? $styles[$options->defaultStyleId] : array(); $viewParams = array('styles' => $styles, 'languages' => $languages, 'defaultStyle' => $defaultStyle, 'timeZones' => XenForo_Helper_TimeZone::getTimeZones()); return $this->_getWrapper('account', 'preferences', $this->responseView('XenForo_ViewPublic_Account_Preferences', 'account_preferences', $viewParams)); }
public function actionExternal() { $providerCode = $this->_input->filterSingle('provider', XenForo_Input::STRING); $assocUserId = $this->_input->filterSingle('assoc', XenForo_Input::UINT); $redirect = $this->_input->filterSingle('redirect', XenForo_Input::STRING); $provider = bdApiConsumer_Option::getProviderByCode($providerCode); if (empty($provider)) { // this is one serious error throw new XenForo_Exception('Provider could not be determined'); } $externalRedirectUri = XenForo_Link::buildPublicLink('canonical:register/external', false, array('provider' => $providerCode, 'assoc' => $assocUserId ? $assocUserId : false)); if ($this->_input->filterSingle('reg', XenForo_Input::UINT)) { $redirect = XenForo_Link::convertUriToAbsoluteUri($this->getDynamicRedirect()); XenForo_Application::get('session')->set(self::SESSION_KEY_REDIRECT, $redirect); $social = $this->_input->filterSingle('social', XenForo_Input::STRING); $requestUrl = bdApiConsumer_Helper_Api::getRequestUrl($provider, $externalRedirectUri, array('social' => $social)); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::RESOURCE_CANONICAL, $requestUrl); } // try to use the non-standard query parameter `t` first, // continue exchange code for access token later if that fails $externalCode = $this->_input->filterSingle('code', XenForo_Input::STRING); if (empty($externalCode)) { return $this->responseError(new XenForo_Phrase('bdapi_consumer_error_occurred_while_connecting_with_x', array('provider' => $provider['name']))); } $externalToken = bdApiConsumer_Helper_Api::getAccessTokenFromCode($provider, $externalCode, $externalRedirectUri); 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']))); } } $userModel = $this->_getUserModel(); $userExternalModel = $this->_getUserExternalModel(); $existingAssoc = $userExternalModel->getExternalAuthAssociation($userExternalModel->bdApiConsumer_getProviderCode($provider), $externalVisitor['user_id']); $autoRegistered = false; if (empty($existingAssoc)) { $existingAssoc = $this->_bdApiConsumer_autoRegister($provider, $externalToken, $externalVisitor); if (!empty($existingAssoc)) { $autoRegistered = true; } } if ($existingAssoc && $userModel->getUserById($existingAssoc['user_id'])) { $redirect = XenForo_Application::get('session')->get(self::SESSION_KEY_REDIRECT); XenForo_Application::get('session')->changeUserId($existingAssoc['user_id']); XenForo_Visitor::setup($existingAssoc['user_id']); XenForo_Application::get('session')->remove(self::SESSION_KEY_REDIRECT); if (empty($redirect)) { $redirect = $this->getDynamicRedirect(false, false); } if (!$autoRegistered) { $userExternalModel->bdApiConsumer_updateExternalAuthAssociation($provider, $externalVisitor['user_id'], $existingAssoc['user_id'], $externalVisitor + array('token' => $externalToken)); } return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $redirect); } $existingUser = false; $emailMatch = false; if (XenForo_Visitor::getUserId()) { $existingUser = XenForo_Visitor::getInstance(); } elseif ($assocUserId) { $existingUser = $userModel->getUserById($assocUserId); } if (!$existingUser) { $existingUser = $userModel->getUserByEmail($externalVisitor['user_email']); $emailMatch = true; } if ($existingUser) { // must associate: matching user return $this->responseView('bdApiConsumer_ViewPublic_Register_External', 'bdapi_consumer_register', array('associateOnly' => true, 'provider' => $provider, 'externalToken' => $externalToken, 'externalVisitor' => $externalVisitor, 'existingUser' => $existingUser, 'emailMatch' => $emailMatch, 'redirect' => $redirect)); } if (bdApiConsumer_Option::get('bypassRegistrationActive')) { // do not check for registration active option } else { $this->_assertRegistrationActive(); } $externalVisitor['username'] = bdApiConsumer_Helper_AutoRegister::suggestUserName($externalVisitor['username'], $userModel); return $this->responseView('bdApiConsumer_ViewPublic_Register_External', 'bdapi_consumer_register', array('provider' => $provider, 'externalToken' => $externalToken, 'externalVisitor' => $externalVisitor, 'redirect' => $redirect, 'customFields' => $this->_getFieldModel()->prepareUserFields($this->_getFieldModel()->getUserFields(array('registration' => true)), true), 'timeZones' => XenForo_Helper_TimeZone::getTimeZones(), 'tosUrl' => XenForo_Dependencies_Public::getTosUrl()), $this->_getRegistrationContainerParams()); }
protected function _getDateCriteria() { $hours = array(); for ($i = 0; $i < 24; $i++) { $hh = str_pad($i, 2, '0', STR_PAD_LEFT); $hours[$hh] = $hh; } $minutes = array(); for ($i = 0; $i < 60; $i += 5) { $mm = str_pad($i, 2, '0', STR_PAD_LEFT); $minutes[$mm] = $mm; } return array('timezones' => XenForo_Helper_TimeZone::getTimeZones(), 'hours' => $hours, 'minutes' => $minutes); }