/** * @return XenForo_Model_Post */ protected function _getPostModel() { if (!$this->_postModel) { $this->_postModel = XenForo_Model::create('XenForo_Model_Post'); } return $this->_postModel; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('position' => 0, 'batch' => 100, 'delete' => false), $data); $data['batch'] = max(1, $data['batch']); /* @var $statsModel XenForo_Model_Stats */ $statsModel = XenForo_Model::create('XenForo_Model_Stats'); if ($data['position'] == 0) { // delete old stats cache if required if (!empty($data['delete'])) { $statsModel->deleteStats(); } // an appropriate date from which to start... first thread, or earliest user reg? $data['position'] = min(XenForo_Model::create('XenForo_Model_Thread')->getEarliestThreadDate(), XenForo_Model::create('XenForo_Model_User')->getEarliestRegistrationDate()); // start on a 24 hour increment point $data['position'] = $data['position'] - $data['position'] % 86400; } else { if ($data['position'] > XenForo_Application::$time) { return true; } } $endPosition = $data['position'] + $data['batch'] * 86400; $statsModel->buildStatsData($data['position'], $endPosition); $data['position'] = $endPosition; $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('daily_statistics'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::date($data['position'], 'absolute')); return $data; }
/** * Gets the visible reports of this content type for the viewing user. * * @see XenForo_ReportHandler_Abstract:getVisibleReportsForUser() */ public function getVisibleReportsForUser(array $reports, array $viewingUser) { $reportsByUser = array(); foreach ($reports as $reportId => $report) { $info = unserialize($report['content_info']); $reportsByUser[$info['profile_user_id']][] = $reportId; } $users = XenForo_Model::create('XenForo_Model_User')->getUsersByIds(array_keys($reportsByUser), array('join' => XenForo_Model_User::FETCH_USER_PRIVACY, 'followingUserId' => $viewingUser['user_id'])); $userProfileModel = XenForo_Model::create('XenForo_Model_UserProfile'); foreach ($reportsByUser as $userId => $userReports) { $remove = false; if (isset($users[$userId]) && !$userProfileModel->canViewFullUserProfile($users[$userId], $null, $viewingUser)) { $remove = true; } else { if (!XenForo_Permission::hasPermission($viewingUser['permissions'], 'profilePost', 'editAny') && !XenForo_Permission::hasPermission($viewingUser['permissions'], 'profilePost', 'deleteAny')) { $remove = true; } } if ($remove) { foreach ($userReports as $reportId) { unset($reports[$reportId]); } } } return $reports; }
public function getUser() { $visitor = XenForo_Visitor::getInstance(); $userModel = XenForo_Model::create('XenForo_Model_User'); $userInfo = $userModel->getFullUserById($visitor->getUserId()); return $userInfo; }
/** * Gets the specified model object from the cache. If it does not exist, * it will be instantiated. * * @param string $class Name of the class to load * * @return XenForo_Model */ public function getModelFromCache($class) { if (!isset($this->_modelCache[$class])) { $this->_modelCache[$class] = XenForo_Model::create($class); } return $this->_modelCache[$class]; }
public static function runOften() { $feeds = XenForo_Model::create('DigitalPointSocialBar_Model_SocialBar')->getSlugsFromOptions(); shuffle($feeds); // randomize order in case someone has absurd number of lists attached to forums (would need to be more than 180 unique) to work around Twitter API limits $cacheObject = XenForo_Application::getCache(); $twitter = DigitalPointSocialBar_Helper_Twitter::getService(XenForo_Application::getOptions()->dpTwitterAccessToken, XenForo_Application::getOptions()->dpTwitterAccessTokenSecret, XenForo_Application::getOptions()->dpTwitterUsername); // forum specific feeds if ($feeds) { foreach ($feeds as $slug) { $tweets_array = array(); $results = $twitter->listsStatuses(array('slug' => $slug, 'owner_screen_name' => XenForo_Application::getOptions()->dpTwitterUsername, 'count' => 250, 'include_rts' => 1, 'include_entities' => 1)); if (count($results)) { try { for ($i = 0; $i < count($results); $i++) { $tweet = $results[$i]; if (is_object($tweet->user)) { $screen_name = $tweet->user->screen_name; if (!@isset($tweets_array[$screen_name])) { $tweets_array[$screen_name] = DigitalPointSocialBar_Helper_Twitter::parseTweet($tweet); } } } $cacheObject->save(json_encode(array_values($tweets_array)), 'social_bar_' . str_replace('-', '_', $slug), array(), 604800); // 7 day cache } catch (Exception $e) { } } } } }
/** * * @return XenForo_Model_Thread */ protected function _getThreadModel() { if (!$this->_threadModel) { $this->_threadModel = XenForo_Model::create('XenForo_Model_Thread'); } return $this->_threadModel; }
public function run() { /* @var $classModel ThemeHouse_Objects_Model_Class */ $classModel = XenForo_Model::create('ThemeHouse_Objects_Model_Class'); $classes = $classModel->getAllClasses(); if (self::$_dependencies instanceof XenForo_Dependencies_Public) { $routes = self::$_data['routesPublic']; } elseif (self::$_dependencies instanceof XenForo_Dependencies_Admin) { $routes = self::$_data['routesAdmin']; } foreach ($classes as $class) { $routePrefix = ''; if (self::$_dependencies instanceof XenForo_Dependencies_Public) { $routePrefix = isset($class['route_prefix']) ? $class['route_prefix'] : ''; } elseif (self::$_dependencies instanceof XenForo_Dependencies_Admin) { $routePrefix = isset($class['route_prefix_admin']) ? $class['route_prefix_admin'] : ''; } if ($routePrefix && !isset($routes[$routePrefix])) { $routes[$routePrefix]['build_link'] = 'all'; if (self::$_dependencies instanceof XenForo_Dependencies_Public) { $routes[$routePrefix]['route_class'] = 'ThemeHouse_Objects_Route_Prefix_Objects'; } elseif (self::$_dependencies instanceof XenForo_Dependencies_Admin) { $routes[$routePrefix]['route_class'] = 'ThemeHouse_Objects_Route_PrefixAdmin_Objects'; } } } if (self::$_dependencies instanceof XenForo_Dependencies_Public) { XenForo_Link::setHandlerInfoForGroup('public', $routes); } elseif (self::$_dependencies instanceof XenForo_Dependencies_Admin) { XenForo_Link::setHandlerInfoForGroup('admin', $routes); } parent::run(); }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('startLanguage' => 0, 'startPhrase' => 0, 'position' => 0, 'mapped' => false), $data); /* @var $phraseModel XenForo_Model_Phrase */ $phraseModel = XenForo_Model::create('XenForo_Model_Phrase'); if ($data['startLanguage'] == 0 && $data['startPhrase'] == 0 && !$data['mapped']) { $s = microtime(true); $phraseModel->insertPhraseMapForLanguages($phraseModel->buildPhraseMapForLanguageTree(0), true); $data['mapped'] = true; $maxExec = $targetRunTime ? $targetRunTime - (microtime(true) - $s) : 0; } else { $maxExec = $targetRunTime; } $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('phrases'); $status = sprintf('%s... %s %s', $actionPhrase, $typePhrase, str_repeat(' . ', $data['position'])); if (!$targetRunTime || $maxExec > 1) { $result = $phraseModel->compileAllPhrases($maxExec, $data['startLanguage'], $data['startPhrase']); } else { $result = false; } if ($result === true) { return false; } else { if ($result) { $data['startLanguage'] = $result[0]; $data['startPhrase'] = $result[1]; } $data['position']++; return $data; } }
/** * @return XenForo_Model_Category */ protected function _getCategoryModel() { if ($this->_categoryModel === null) { $this->_categoryModel = XenForo_Model::create('XenForo_Model_Category'); } return $this->_categoryModel; }
/** * Gets visible moderation queue entries for specified user. * * @see XenForo_ModerationQueueHandler_Abstract::getVisibleModerationQueueEntriesForUser() */ public function getVisibleModerationQueueEntriesForUser(array $contentIds, array $viewingUser) { /* @var $profilePostModel XenForo_Model_ProfilePost */ $profilePostModel = XenForo_Model::create('XenForo_Model_ProfilePost'); $profilePosts = $profilePostModel->getProfilePostsByIds($contentIds); $profileUserIds = array(); foreach ($profilePosts as $profilePost) { $profileUserIds[] = $profilePost['profile_user_id']; } $users = XenForo_Model::create('XenForo_Model_User')->getUsersByIds($profileUserIds, array('join' => XenForo_Model_User::FETCH_USER_PRIVACY, 'followingUserId' => $viewingUser['user_id'])); $output = array(); foreach ($profilePosts as $profilePost) { if (!isset($users[$profilePost['profile_user_id']])) { continue; } $user = $users[$profilePost['profile_user_id']]; $canManage = true; if (!$profilePostModel->canViewProfilePostAndContainer($profilePost, $user, $null, $viewingUser)) { $canManage = false; } else { if (!XenForo_Permission::hasPermission($viewingUser['permissions'], 'profilePost', 'editAny') || !XenForo_Permission::hasPermission($viewingUser['permissions'], 'profilePost', 'deleteAny')) { $canManage = false; } } if ($canManage) { $output[$profilePost['profile_post_id']] = array('message' => $profilePost['message'], 'user' => array('user_id' => $profilePost['user_id'], 'username' => $profilePost['username']), 'title' => new XenForo_Phrase('profile_post_for_x', array('username' => $user['username'])), 'link' => XenForo_Link::buildPublicLink('profile-posts', $profilePost), 'contentTypeTitle' => new XenForo_Phrase('profile_post'), 'titleEdit' => false); } } return $output; }
/** * Displays a form to change the visitor's language, or changes it if a language_id is present. * * @return XenForo_ControllerResponse_Abstract */ public function actionLanguage() { $visitor = XenForo_Visitor::getInstance(); if ($this->_input->inRequest('language_id')) { $this->_checkCsrfFromToken($this->_input->filterSingle('_xfToken', XenForo_Input::STRING)); $languageId = $this->_input->filterSingle('language_id', XenForo_Input::UINT); if ($languageId) { $languages = XenForo_Application::isRegistered('languages') ? XenForo_Application::get('languages') : XenForo_Model::create('XenForo_Model_Language')->getAllLanguagesForCache(); if (!isset($languages[$languageId])) { $languageId = 0; } } if ($visitor['user_id']) { $dw = XenForo_DataWriter::create('XenForo_DataWriter_User'); $dw->setExistingData($visitor['user_id']); $dw->set('language_id', $languageId); $dw->save(); XenForo_Helper_Cookie::deleteCookie('language_id'); } else { XenForo_Helper_Cookie::setCookie('language_id', $languageId, 86400 * 365); } return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, $this->getDynamicRedirect(false, false)); } else { $languages = XenForo_Application::isRegistered('languages') ? XenForo_Application::get('languages') : XenForo_Model::create('XenForo_Model_Language')->getAllLanguagesForCache(); $viewParams = array('languages' => $this->getModelFromCache('XenForo_Model_Language')->getAllLanguages(), 'redirect' => $this->getDynamicRedirect(false, false)); return $this->responseView('XenForo_ViewPublic_Misc_Language', 'language_chooser', $viewParams); } }
public static function templatePostRender($templateName, &$content, array &$containerData, XenForo_Template_Abstract $template) { $param = array(); switch ($templateName) { case 'node_list.css': $cacheDataForum = XenForo_Application::isRegistered('brcnsCacheDataForum') ? XenForo_Application::get('brcnsCacheDataForum') : XenForo_Model::create('XenForo_Model_DataRegistry')->get('brcnsCacheDataForum'); $cacheDataPage = XenForo_Application::isRegistered('brcnsCacheDataPage') ? XenForo_Application::get('brcnsCacheDataPage') : XenForo_Model::create('XenForo_Model_DataRegistry')->get('brcnsCacheDataPage'); $cacheDataLink = XenForo_Application::isRegistered('brcnsCacheDataLink') ? XenForo_Application::get('brcnsCacheDataLink') : XenForo_Model::create('XenForo_Model_DataRegistry')->get('brcnsCacheDataLink'); $cacheDataCategory = XenForo_Application::isRegistered('brcnsCacheDataCategory') ? XenForo_Application::get('brcnsCacheDataCategory') : XenForo_Model::create('XenForo_Model_DataRegistry')->get('brcnsCacheDataCategory'); $cacheDataCategoryRoot = XenForo_Application::isRegistered('brcnsCacheDataCateRoot') ? XenForo_Application::get('brcnsCacheDataCateRoot') : XenForo_Model::create('XenForo_Model_DataRegistry')->get('brcnsCacheDataCateRoot'); XenForo_Application::set('brcnsCustomNodeStylesForum', $cacheDataForum); XenForo_Application::set('brcnsCustomNodeStylesPage', $cacheDataPage); XenForo_Application::set('brcnsCustomNodeStylesLink', $cacheDataLink); XenForo_Application::set('brcnsCustomNodeStylesCategory', $cacheDataCategory); XenForo_Application::set('brcnsCustomNodeStylesCategoryRoot', $cacheDataCategoryRoot); $param['CustomNodeStylesForums'] = XenForo_Application::get('brcnsCustomNodeStylesForum'); $param['CustomNodeStylesPages'] = XenForo_Application::get('brcnsCustomNodeStylesPage'); $param['CustomNodeStylesLinks'] = XenForo_Application::get('brcnsCustomNodeStylesLink'); $param['CustomNodeStylescategories'] = XenForo_Application::get('brcnsCustomNodeStylesCategory'); $param['CustomNodeStylesCategoriesRoot'] = XenForo_Application::get('brcnsCustomNodeStylesCategoryRoot'); $options = XenForo_Application::get('options'); $param['size'] = $options->BRCNS_size_icon; $newTemplate = $template->create('BRCNS_custom_node_style.css', $template->getParams()); $newTemplate->setParams($param); $content = $content . $newTemplate->render(); break; } }
/** * @return XenForo_Model_Node */ protected function _getNodeModel() { if (!$this->_nodeModel) { $this->_nodeModel = XenForo_Model::create('XenForo_Model_Node'); } return $this->_nodeModel; }
protected function _render(array $widget, $positionCode, array $params, XenForo_Template_Abstract $renderTemplateObject) { $mediaCloudModel = XenForo_Model::create('EWRmedio_Model_Keywords'); // $model = XenForo_Model::create('EWRporta_Model_Options'); // $option = $model->getOptionById('MediaCloud'); $options = XenForo_Application::get('options'); $sidebar['keywords'] = $mediaCloudModel->getKeywordCloud($options->EWRmedio_cloudcount, $options->EWRmedio_mincloud, $options->EWRmedio_maxcloud); if ($options->EWRmedio_animatedcloud && $sidebar['keywords']) { $sidebar['animated'] = $mediaCloudModel->getAnimatedCloud($sidebar['keywords']); } /* $limit = $option['limit']; $mincloud = $option['mincloud']; $maxcloud = $option['maxcloud']; $animated = $option['animated']; $cloud['keywords'] = $mediaCloudModel->getKeywordCloud($limit, $mincloud, $maxcloud); if ($animated && $cloud['keywords']) { $cloud['animated'] = $mediaCloudModel->getAnimatedCloud($cloud['keywords']); }*/ $viewParams = array('MediaCloud' => $sidebar); $renderTemplateObject->setParams($viewParams); return $renderTemplateObject->render(); }
/** * @return XenGallery_Model_Media */ protected function _getMediaModel() { if (!$this->_mediaModel) { $this->_mediaModel = XenForo_Model::create('XenGallery_Model_Media'); } return $this->_mediaModel; }
/** * * @see XenForo_DataWriter_DiscussionMessage_Post::_messagePreSave() */ protected function _messagePreSave() { if ($this->isDiscussionFirstMessage() && isset($GLOBALS['XenForo_ControllerPublic_Forum'])) { $visitor = XenForo_Visitor::getInstance(); $this->set('original_poster_th', array('user_id' => $visitor->user_id, 'username' => $visitor->username)); } if (!empty($GLOBALS['XenForo_ControllerPublic_Thread'])) { /* @var $controller XenForo_ControllerPublic_Thread */ $controller = $GLOBALS['XenForo_ControllerPublic_Thread']; $this->set('original_poster_th', array('user_id' => $this->get('user_id'), 'username' => $this->get('username'))); /* @var $userModel XenForo_Model_User */ $userModel = XenForo_Model::create('XenForo_Model_User'); $input = $controller->getInput()->filter(array('post_as_user_id' => XenForo_Input::UINT, 'post_as_username' => XenForo_Input::STRING)); if ($input['post_as_username']) { $user = $userModel->getUserByName($input['post_as_username']); $input['post_as_user_id'] = $user['user_id']; } if (!isset($user) && $input['post_as_user_id']) { $user = $userModel->getUserById($input['post_as_user_id']); } if (isset($user) && $userModel->canPostAsDifferentUser($user)) { $this->set('user_id', $user['user_id']); $this->set('username', $user['username']); if (XenForo_Application::get('options')->th_postAsUser_updateLastActivity) { /* @var $userModel XenForo_Model_User */ $userModel = $this->getModelFromCache('XenForo_Model_User'); $request = $controller->getRequest(); $routeMatch = $controller->getRouteMatch(); $userModel->updateSessionActivity($user['user_id'], $request->getClientIp(false), $routeMatch->getControllerName(), $routeMatch->getAction(), 'valid', $request->getUserParams()); } } } parent::_messagePreSave(); }
protected function _postSave() { parent::_postSave(); $page = XenForo_Model::create('XenForo_Model_Page')->getPages(); $this->_getDataRegistryModel()->set('brcnsCacheDataPage', $page); $this->getModelFromCache('XenForo_Model_Style')->updateAllStylesLastModifiedDate(); }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('position' => 0, 'batch' => 100), $data); $data['batch'] = max(1, $data['batch']); /* @var $trophyModel XenForo_Model_Trophy */ $trophyModel = XenForo_Model::create('XenForo_Model_Trophy'); $trophies = $trophyModel->getAllTrophies(); if (!$trophies) { return true; } /* @var $userModel XenForo_Model_User */ $userModel = XenForo_Model::create('XenForo_Model_User'); $userIds = $userModel->getUserIdsInRange($data['position'], $data['batch']); if (sizeof($userIds) == 0) { return true; } $data['position'] = end($userIds); $users = $userModel->getUsers(array('user_state' => 'valid', 'is_banned' => 0, 'user_id' => $userIds), array('join' => XenForo_Model_User::FETCH_USER_FULL)); $userTrophies = $trophyModel->getUserTrophiesByUserIds(array_keys($users)); foreach ($users as $user) { $trophyModel->updateTrophiesForUser($user, isset($userTrophies[$user['user_id']]) ? $userTrophies[$user['user_id']] : array(), $trophies); $trophyModel->updateTrophyPointsForUser($user['user_id']); } $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('trophies'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
protected function _deleteContent(array $content, $reason, array $viewingUser) { XenForo_Model::create('Nobita_Teams_Model_Team')->deleteTeam($content['team_id'], 'soft'); /*XenForo_Model_Log::logModeratorAction('team', $content, 'delete_soft', array( 'reason' => $reason), $content); */ }
public static function runSyncGroups() { $QCDB = WebSync_Database_Core::getQuartzcoreDatabase(); $options = XenForo_Application::get('options'); $userModel = XenForo_Model::create('XenForo_Model_User'); $userFieldModel = XenForo_Model::create('XenForo_Model_UserField'); if ($options->syncGroups) { $fetchOptions = array('validOnly' => true); $users = $userModel->getAllUsers($fetchOptions); foreach ($users as $user) { $hasUpdated = false; $coreId = $userFieldModel->getUserFieldValues($user['user_id'])['CoreID']; $secondaryGroups = $user['secondary_group_ids']; $groups_raw = file_get_contents($options->restApiUrl . 'group.php?action=getAllGroups'); $groups = json_decode($groups_raw, true); while ($groupId = mysqli_fetch_array($groups)) { $group_raw = file_get_contents($options->restApiUrl . 'group.php?action=getGroup&id=' . $groupId); $group = json_decode($group_raw); foreach ($userGroups as $userGroup) { if ($userGroup == $group['site_group_id']) { $player_raw = file_get_contents($options->restApiUrl . 'player.php?action=updatePlayer&id=' . $coreId . '&primaryGroupID=' . $group['id'] . '&apikey=07af7e75676eab410d1f83937d7afb62'); $player = json_decode($player_raw, true); $hasUpdated = $player['hasUpdated']; } } } if ($hasUpdated == false) { $player_raw = file_get_contents($options->restApiUrl . 'player.php?action=updatePlayer&id=' . $coreId . '&primaryGroupID=2&apikey=07af7e75676eab410d1f83937d7afb62'); $player = json_decode($player_raw, true); $hasUpdated = $player['hasUpdated']; } } } }
/** * @return XenForo_Model_UserField */ protected function _getUserFieldModel() { if ($this->_userFieldModel === null) { $this->_userFieldModel = XenForo_Model::create('XenForo_Model_UserField'); } return $this->_userFieldModel; }
protected function _getWidgetPageModel() { if ($this->_widgetPageModel === null) { $this->_widgetPageModel = XenForo_Model::create('WidgetFramework_Model_WidgetPage'); } return $this->_widgetPageModel; }
protected function _uninstall_0() { $this->_getDb()->query("\n\t\t\tDROP TABLE IF EXISTS\n\t\t\t\t`EWRcarta_cache`,\n\t\t\t\t`EWRcarta_history`,\n\t\t\t\t`EWRcarta_pages`,\n\t\t\t\t`EWRcarta_templates`;\n\t\t"); $this->_getDb()->query("DELETE IGNORE FROM `xf_content_type` WHERE content_type = 'wiki'"); $this->_getDb()->query("DELETE IGNORE FROM `xf_content_type_field` WHERE content_type = 'wiki'"); XenForo_Model::create('XenForo_Model_ContentType')->rebuildContentTypeCache(); }
/** * @param int $position * @param array $options * @param string $detailedMessage * @return bool|int|string|true */ public function rebuild($position = 0, array &$options = array(), &$detailedMessage = '') { $options['batch'] = max(1, isset($options['batch']) ? $options['batch'] : 10); /* @var sonnb_XenGallery_Model_Location $locationModel */ $locationModel = XenForo_Model::create('sonnb_XenGallery_Model_Location'); $locations = $locationModel->getLocationsWithoutCoordinate($position, $options['batch']); if (count($locations) < 1) { return true; } XenForo_Db::beginTransaction(); $db = XenForo_Application::getDb(); /** @var sonnb_XenGallery_Model_Location $locationModel */ $locationModel = XenForo_Model::create('sonnb_XenGallery_Model_Location'); foreach ($locations as $locationId => $location) { $position = $location['location_id']; try { $client = XenForo_Helper_Http::getClient($locationModel->getGeocodeUrlForAddress($location['location_name'])); $response = $client->request('GET'); $response = @json_decode($response->getBody(), true); if (empty($response['results'][0])) { continue; } $address = $response['results'][0]['formatted_address']; $lat = $response['results'][0]['geometry']['location']['lat']; $lng = $response['results'][0]['geometry']['location']['lng']; $db->update('sonnb_xengallery_location', array('location_name' => $address, 'location_lat' => $lat, 'location_lng' => $lng), array('location_id = ?' => $location['location_id'])); } catch (Exception $e) { continue; } } XenForo_Db::commit(); $detailedMessage = XenForo_Locale::numberFormat($position); return $position; }
/** * * @return sonnb_XenGallery_Model_Photo */ protected function _getPhotoModel() { if (!$this->_photoModel) { $this->_photoModel = XenForo_Model::create('sonnb_XenGallery_Model_Photo'); } return $this->_photoModel; }
/** * Gets the visible reports of this content type for the viewing user. * * @see XenForo_ReportHandler_Abstract:getVisibleReportsForUser() */ public function getVisibleReportsForUser(array $reports, array $viewingUser) { $reportsByForum = array(); foreach ($reports as $reportId => $report) { $info = unserialize($report['content_info']); $reportsByForum[$info['node_id']][] = $reportId; } /* @var $forumModel XenForo_Model_Forum */ $forumModel = XenForo_Model::create('XenForo_Model_Forum'); $forums = $forumModel->getForumsByIds(array_keys($reportsByForum), array('permissionCombinationId' => $viewingUser['permission_combination_id'])); $forums = $forumModel->unserializePermissionsInList($forums, 'node_permission_cache'); foreach ($reportsByForum as $forumId => $forumReports) { $remove = false; if (!isset($forums[$forumId])) { $remove = true; } else { $forum = $forums[$forumId]; if (!XenForo_Permission::hasContentPermission($forum['permissions'], 'editAnyPost') && !XenForo_Permission::hasContentPermission($forum['permissions'], 'deleteAnyPost')) { $remove = true; } } if ($remove) { foreach ($forumReports as $reportId) { unset($reports[$reportId]); } } } return $reports; }
public static function installCode() { if (XenForo_Application::$versionId < 1020070) { throw new XenForo_Exception('Digital Point Better Analytics requires XenForo 1.2.0 or newer.', true); } try { $fieldId = 'analytics_cid'; if (!XenForo_Model::create('XenForo_Model_UserField')->getUserFieldById($fieldId)) { $dw = XenForo_DataWriter::create('XenForo_DataWriter_UserField'); $dw->set('field_id', 'analytics_cid'); $dw->setExtraData(XenForo_DataWriter_UserField::DATA_TITLE, 'Google Analytics Client ID'); $dw->setExtraData(XenForo_DataWriter_UserField::DATA_DESCRIPTION, 'Unique identifier used by Google Analytics.'); $dw->set('display_group', 'preferences'); $dw->set('display_order', 100); $dw->set('field_type', 'textbox'); $dw->set('match_type', 'none'); $dw->set('max_length', 0); $dw->set('required', 0); $dw->set('show_registration', 0); if (XenForo_Application::$versionId >= 1030000) { $dw->set('moderator_editable', 0); } $dw->set('viewable_profile', 0); $dw->set('viewable_message', 0); $dw->set('user_editable', 'never'); $dw->save(); } } catch (Zend_Db_Exception $e) { return false; } }
/** * Gets visible moderation queue entries for specified user. * * @see XenForo_ModerationQueueHandler_Abstract::getVisibleModerationQueueEntriesForUser() */ public function getVisibleModerationQueueEntriesForUser(array $contentIds, array $viewingUser) { /* @var $resourceModel XenResource_Model_Resource */ $resourceModel = XenForo_Model::create('XenResource_Model_Resource'); $resources = $resourceModel->getResourcesByIds($contentIds, array('join' => XenResource_Model_Resource::FETCH_DESCRIPTION)); $categories = XenForo_Model::create('XenResource_Model_Category')->getAllCategories(array('permissionCombinationId' => $viewingUser['permission_combination_id'])); $output = array(); foreach ($resources as $resource) { if (!isset($categories[$resource['resource_category_id']])) { continue; } $category = $categories[$resource['resource_category_id']]; $categoryPermissions = XenForo_Permission::unserializePermissions($category['category_permission_cache']); $canManage = true; if (!$resourceModel->canViewResourceAndContainer($resource, $category, $null, $viewingUser, $categoryPermissions)) { $canManage = false; } else { if (!XenForo_Permission::hasContentPermission($categoryPermissions, 'editAny') || !XenForo_Permission::hasContentPermission($categoryPermissions, 'deleteAny') || !XenForo_Permission::hasContentPermission($categoryPermissions, 'approveUnapprove')) { $canManage = false; } } if ($canManage) { $output[$resource['resource_id']] = array('message' => $resource['description'], 'user' => array('user_id' => $resource['user_id'], 'username' => $resource['username']), 'title' => $resource['title'], 'link' => XenForo_Link::buildPublicLink('resources', $resource), 'contentTypeTitle' => new XenForo_Phrase('resource'), 'titleEdit' => true); } } return $output; }
/** * @return XenForo_Model_Attachment */ protected function _getAttachmentModel() { if ($this->_attachModel === null) { $this->_attachModel = XenForo_Model::create('XenForo_Model_Attachment'); } return $this->_attachModel; }