/** * @see XenForo_CacheRebuilder_DailyStats::rebuild() */ public function rebuild($position = 0, array &$options = array(), &$detailedMessage = '') { $options['batch'] = isset($options['batch']) ? $options['batch'] : 28; $options['batch'] = max(1, $options['batch']); /* @var $userModel XenForo_Model_Stats */ $statsModel = XenForo_Model::create('XenForo_Model_Stats'); if ($position == 0) { // delete old stats cache if required if (!empty($options['delete'])) { $statsModel->deleteStats(); } $xenOptions = XenForo_Application::get('options'); // an appropriate date from which to start... first thread, or earliest user reg? if ($xenOptions->th_noForo_noForum) { $position = XenForo_Model::create('XenForo_Model_User')->getEarliestRegistrationDate(); } else { $position = min(XenForo_Model::create('XenForo_Model_Thread')->getEarliestThreadDate(), XenForo_Model::create('XenForo_Model_User')->getEarliestRegistrationDate()); } // start on a 24 hour increment point $position = $position - $position % 86400; } else { if ($position > XenForo_Application::$time) { return true; } } XenForo_Db::beginTransaction(); $endPosition = $position + $options['batch'] * 86400; $data = $statsModel->buildStatsData($position, $endPosition); XenForo_Db::commit(); $detailedMessage = XenForo_Locale::date($position, 'absolute'); return $endPosition; }
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; }
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; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('position' => 0, 'batch' => 5), $data); $data['batch'] = max(1, $data['batch']); /* @var $albumModel XenGallery_Model_Album */ $albumModel = XenForo_Model::create('XenGallery_Model_Album'); /* @var $mediaModel XenGallery_Model_Media */ $mediaModel = XenForo_Model::create('XenGallery_Model_Media'); $albumIds = $albumModel->getAlbumIdsInRange($data['position'], $data['batch']); if (sizeof($albumIds) == 0) { return true; } foreach ($albumIds as $albumId) { $count = $mediaModel->countMedia(array('album_id' => $albumId)); $albumWriter = XenForo_DataWriter::create('XenGallery_DataWriter_Album'); $albumWriter->setExistingData($albumId); $albumWriter->set('album_media_count', $count); $albumWriter->save(); $data['position'] = $albumId; } $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('xengallery_rebuilding_album_media_counts'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
public static function runDailyCleanUp() { $options = XenForo_Application::get('options'); $model = XenForo_Model::create('Dark_TaigaChat_Model_TaigaChat'); if ($options->dark_taigachat_archivethread > 0) { $messages = array_reverse($model->getMessagesToday()); if (count($messages) > 0) { $userModel = XenForo_Model::create('XenForo_Model_User'); $post = ""; foreach ($messages as $message) { $date = XenForo_Locale::dateTime($message['date'], 'absolute'); if ($message['user_id'] > 0) { $url = XenForo_Link::convertUriToAbsoluteUri(XenForo_Link::buildPublicLink("members/" . $message['user_id']), true); $user = "******"; } else { $user = "******"; } $post .= "{$date} - {$user}: {$message['message']}\r\n"; } $username = "******"; if ($options->dark_taigachat_archiveuser > 0) { $user = $userModel->getUserById($options->dark_taigachat_archiveuser); $username = $user['username']; } $writer = XenForo_DataWriter::create('XenForo_DataWriter_DiscussionMessage_Post'); $writer->setOption(XenForo_DataWriter_DiscussionMessage::OPTION_IS_AUTOMATED, true); $writer->set('user_id', $options->dark_taigachat_archiveuser); $writer->set('username', $username); $writer->set('message', $post); $writer->set('thread_id', $options->dark_taigachat_archivethread); $writer->save(); } } $model->deleteOldMessages(); }
/** * Rebuilds the data. * * @see XenForo_CacheRebuilder_Abstract::rebuild() */ public function rebuild($position = 0, array &$options = array(), &$detailedMessage = '') { $options['batch'] = max(1, isset($options['batch']) ? $options['batch'] : 10); if ($position == 0) { XenForo_Model::create('XenForo_Model_Node')->updateNestedSetInfo(); } /* @var $forumModel XenForo_Model_Forum */ $forumModel = XenForo_Model::create('XenForo_Model_Forum'); $forums = $forumModel->getForums(array(), array('limit' => $options['batch'], 'offset' => $position)); XenForo_Db::beginTransaction(); foreach ($forums as $forum) { $position++; $forumDw = XenForo_DataWriter::create('XenForo_DataWriter_Forum', XenForo_DataWriter::ERROR_SILENT); if ($forumDw->setExistingData($forum, true)) { $forumDw->rebuildCounters(); $forumDw->save(); } } XenForo_Db::commit(); $detailedMessage = XenForo_Locale::numberFormat($position); if (!$forums) { return true; } else { return $position; } }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { return true; $data = array_merge(array('position' => 0, 'batch' => 10), $data); $data['batch'] = max(1, $data['batch']); /* @var $feedbackModel NixFifty_XenTrader_Model_Feedback */ $feedbackModel = XenForo_Model::create('NixFifty_XenTrader_Model_Feedback'); $feedbackItems = $feedbackModel->getUserIdsInFeedbackRange($data['position'], $data['batch']); if (sizeof($feedbackItems) == 0) { return true; } $db = XenForo_Application::getDb(); XenForo_Db::beginTransaction($db); foreach ($feedbackItems as $feedbackItem) { $data['position'] = $item['media_id']; $feedbackCount = $db->fetchOne(' SELECT COUNT(*) FROM xf_nixfifty_xentrader_feedback WHERE to_user_id = ? ', $feedbackItem); $db->update('xf_nixfifty_xentrader_user', array('total' => $feedbackCount), 'user_id = ' . $db->quote($feedbackItem)); } XenForo_Db::commit($db); $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = 'fam i think im broken'; //new XenForo_Phrase('xengallery_rebuild_thumbnails'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('position' => 0, 'batch' => 10), $data); $data['batch'] = max(1, $data['batch']); /* @var $albumModel XenGallery_Model_Album */ $albumModel = XenForo_Model::create('XenGallery_Model_Album'); /* @var $mediaModel XenGallery_Model_Media */ $mediaModel = XenForo_Model::create('XenGallery_Model_Media'); $albumIds = $albumModel->getAlbumIdsInRange($data['position'], $data['batch']); if (sizeof($albumIds) == 0) { return true; } foreach ($albumIds as $albumId) { $data['position'] = $albumId; $writer = XenForo_DataWriter::create('XenGallery_DataWriter_Album'); $writer->setExistingData($albumId); if (!$writer->get('manual_media_cache') && !$writer->get('album_thumbnail_date')) { $media = $mediaModel->getMediaForAlbumCache($albumId); $writer->bulkSet(array('media_cache' => serialize($media))); $writer->save(); } } $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('xengallery_rebuild_album_thumbnails'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
/** * Formats the given number for a currency. * * @param float|integer $number Number to format * @param int|null $currencyId Currency to override default * * @return string Formatted number */ public static function currencyFormat($number = 0) { $currency = array('symbol_left' => '', 'symbol_right' => ' VNĐ', 'value' => 1, 'decimal_place' => 0); $negative = false; $formated = ''; if (is_numeric($number)) { if ($number < 0) { $negative = true; $number *= -1; } $number *= $currency['value']; $number = XenForo_Locale::numberFormat($number, $currency['decimal_place']); } else { $number = XenForo_Locale::numberFormat(0, $currency['decimal_place']); } $formated = $negative ? ' - ' : ''; if ($currency['symbol_left']) { $formated .= $currency['symbol_left']; } $formated .= $number; if ($currency['symbol_right']) { $formated .= $currency['symbol_right']; } return $formated; }
/** * Rebuilds the data. * * @see XenForo_CacheRebuilder_Abstract::rebuild() */ public function rebuild($position = 0, array &$options = array(), &$detailedMessage = '') { $options['batch'] = max(1, isset($options['batch']) ? $options['batch'] : 10); $socialForumModel = ThemeHouse_SocialGroups_SocialForum::getSocialForumModel(); if ($position == 0) { $socialForumModel->unlinkMovedThreads(); } $socialForums = $socialForumModel->getSocialForums(array(), array('limit' => $options['batch'], 'offset' => $position)); XenForo_Db::beginTransaction(); foreach ($socialForums as $socialForum) { $position++; /* @var $socialForumDw ThemeHouse_SocialGroups_DataWriter_SocialForum */ $socialForumDw = XenForo_DataWriter::create('ThemeHouse_SocialGroups_DataWriter_SocialForum', XenForo_DataWriter::ERROR_SILENT); if ($socialForumDw->setExistingData($socialForum, true)) { $socialForumDw->rebuildCounters(); $socialForumDw->save(); } } XenForo_Db::commit(); $detailedMessage = XenForo_Locale::numberFormat($position); if (!$socialForums) { return true; } else { return $position; } }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('position' => 0, 'batch' => 100), $data); $data['batch'] = max(1, $data['batch']); if ($data['position'] == 0) { XenForo_Model::create('XenForo_Model_Node')->updateNestedSetInfo(); } /* @var $forumModel XenForo_Model_Forum */ $forumModel = XenForo_Model::create('XenForo_Model_Forum'); $forums = $forumModel->getForums(array(), array('limit' => $data['batch'], 'offset' => $data['position'])); if (!$forums) { return false; } foreach ($forums as $forum) { $data['position']++; $forumDw = XenForo_DataWriter::create('XenForo_DataWriter_Forum', XenForo_DataWriter::ERROR_SILENT); if ($forumDw->setExistingData($forum, true)) { $forumDw->rebuildCounters(); $forumDw->save(); } } $rbPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('forums'); $status = sprintf('%s... %s (%s)', $rbPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $inputHandler = new XenForo_Input($data); $input = $inputHandler->filter(array('batch' => XenForo_Input::UINT, 'start' => XenForo_Input::UINT, 'extra_data' => XenForo_Input::ARRAY_SIMPLE, 'delay' => XenForo_Input::UNUM, 'content_type' => XenForo_Input::STRING, 'delete_index' => XenForo_Input::UINT)); if ($input['delay'] >= 0.01) { usleep($input['delay'] * 1000000); } /* @var $searchModel XenForo_Model_Search */ $searchModel = XenForo_Model::create('XenForo_Model_Search'); $searchContentTypes = $searchModel->getSearchContentTypes(); $extraData = $input['extra_data']; if (!isset($extraData['content_types']) || !is_array($extraData['content_types'])) { if ($input['content_type'] && isset($searchContentTypes[$input['content_type']])) { $extraData['content_types'] = array($input['content_type']); } else { $extraData['content_types'] = array_keys($searchContentTypes); } } if (empty($extraData['current_type'])) { $extraData['current_type'] = array_shift($extraData['content_types']); } if (empty($extraData['type_start'])) { $extraData['type_start'] = 0; } $originalExtraData = $extraData; while (!isset($searchContentTypes[$extraData['current_type']])) { if (!$extraData['content_types']) { return false; } $extraData['current_type'] = array_shift($extraData['content_types']); } if ($input['delete_index']) { $source = XenForo_Search_SourceHandler_Abstract::getDefaultSourceHandler(); $source->deleteIndex($input['content_type'] ? $input['content_type'] : null); } $dataHandler = false; $searchHandler = $searchContentTypes[$extraData['current_type']]; if (class_exists($searchHandler)) { $dataHandler = XenForo_Search_DataHandler_Abstract::create($searchHandler); $indexer = new XenForo_Search_Indexer(); $indexer->setIsRebuild(true); $nextStart = $dataHandler->rebuildIndex($indexer, $extraData['type_start'], $input['batch']); $indexer->finalizeRebuildSet(); } else { $nextStart = false; } if ($nextStart === false) { // move on to next type $extraData['current_type'] = ''; $extraData['type_start'] = 0; } else { $extraData['type_start'] = $nextStart; } $data = array('batch' => $input['batch'], 'start' => $input['start'] + 1, 'extra_data' => $extraData, 'delay' => $input['delay']); $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('search_index'); $text = $dataHandler ? $dataHandler->getSearchContentTypePhrase() : new XenForo_Phrase($originalExtraData['current_type']); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, "{$text} " . XenForo_Locale::numberFormat($originalExtraData['type_start'])); return $data; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('position' => 0, 'batch' => 10), $data); $data['batch'] = max(1, $data['batch']); /* @var $albumModel XenGallery_Model_Album */ $albumModel = XenForo_Model::create('XenGallery_Model_Album'); $albumIds = $albumModel->getSharedAlbumIdsInRange($data['position'], $data['batch']); if (sizeof($albumIds) == 0) { return true; } $db = XenForo_Application::getDb(); XenForo_Db::beginTransaction($db); foreach ($albumIds as $albumId) { $data['position'] = $albumId; $album = $albumModel->getAlbumByIdSimple($albumId); $bind = array($album['album_id'], $album['album_user_id']); $ownerShared = $db->fetchOne('SELECT shared_user_id FROM xengallery_shared_map WHERE album_id = ? AND shared_user_id = ?', $bind); if (!$ownerShared) { $db->query(' INSERT IGNORE INTO xengallery_shared_map (album_id, shared_user_id) VALUES (?, ?) ', $bind); } } XenForo_Db::commit($db); $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('xengallery_album_permissions'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
/** * Helper to get the paid content add/edit form controller response. * * @param array $paidContentItem * * @return XenForo_ControllerResponse_View */ protected function _getPaidContentItemAddEditResponse(array $paidContentItem) { $paidContentItem = $this->_getPaidContentModel()->preparePaidContent($paidContentItem); $userGroups = $this->_getUserGroupModel()->getAllUserGroups(); if (!empty($paidContentItem['paid_content_id'])) { $selUserGroupIds = explode(',', $paidContentItem['user_group_ids']); if (in_array(-1, $selUserGroupIds)) { $allUserGroups = true; $selUserGroupIds = array_keys($userGroups); } else { $allUserGroups = false; } } else { $allUserGroups = true; $selUserGroupIds = array_keys($userGroups); } if (empty($paidContentItem['start_date'])) { $paidContentItem['startDate'] = XenForo_Locale::date(XenForo_Application::$time, 'picker'); } if (empty($paidContentItem['end_date'])) { $startTime = !empty($paidContentItem['start_date']) ? $paidContentItem['start_date'] : XenForo_Application::$time; $paidContentItem['endDate'] = XenForo_Locale::date($startTime + 7 * 24 * 60 * 60, 'picker'); } $viewParams = array('paidContentItem' => $paidContentItem, 'allUserGroups' => $allUserGroups, 'selUserGroupIds' => $selUserGroupIds, 'userGroups' => $userGroups); return $this->responseView('ThemeHouse_PayForContent_ViewAdmin_PaidContentItem_Edit', 'th_paid_content_item_edit_payforcontent', $viewParams); }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('userId' => null, 'cutOff' => null, 'count' => 0, 'total' => null), $data); if (!$data['userId'] || $data['cutOff'] === null) { return false; } $s = microtime(true); /* @var $editHistoryModel XenForo_Model_EditHistory */ $editHistoryModel = XenForo_Model::create('XenForo_Model_EditHistory'); $edits = $editHistoryModel->getEditHistoryByUserSinceDate($data['userId'], $data['cutOff']); if (!$edits) { return false; } if ($data['total'] === null) { $data['total'] = count($edits); } $continue = false; foreach ($edits as $edit) { $editHistoryModel->revertToHistoryId($edit['edit_history_id']); $data['count']++; if ($targetRunTime && microtime(true) - $s > $targetRunTime) { $continue = true; break; } } if (!$continue) { return false; } $actionPhrase = new XenForo_Phrase('reverting_edits'); $status = sprintf('%s... %s (%s/$s)', $actionPhrase, XenForo_Locale::numberFormat($data['count']), XenForo_Locale::numberFormat($data['total'])); return $data; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('position' => 0, 'batch' => 70), $data); $data['batch'] = max(1, $data['batch']); /* @var $userModel XenForo_Model_User */ $userModel = XenForo_Model::create('XenForo_Model_User'); /* @var $conversationModel XenForo_Model_Conversation */ $conversationModel = XenForo_Model::create('XenForo_Model_Conversation'); $userIds = $userModel->getUserIdsInRange($data['position'], $data['batch']); if (sizeof($userIds) == 0) { return true; } foreach ($userIds as $userId) { $data['position'] = $userId; /* @var $userDw XenForo_DataWriter_User */ $userDw = XenForo_DataWriter::create('XenForo_DataWriter_User', XenForo_DataWriter::ERROR_SILENT); if ($userDw->setExistingData($userId)) { XenForo_Db::beginTransaction(); $userDw->set('alerts_unread', $userModel->getUnreadAlertsCount($userId)); $userDw->set('conversations_unread', $conversationModel->countUnreadConversationsForUser($userId)); $userDw->save(); $userDw->rebuildUserGroupRelations(); $userDw->rebuildPermissionCombinationId(); $userDw->rebuildDisplayStyleGroupId(); $userDw->rebuildCustomFields(); $userDw->rebuildIgnoreCache(); XenForo_Db::commit(); } } $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('users'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
/** * Rebuilds the data. * * @see XenForo_CacheRebuilder_Abstract::rebuild() */ public function rebuild($position = 0, array &$options = array(), &$detailedMessage = '') { $options['batch'] = isset($options['batch']) ? $options['batch'] : 75; $options['batch'] = max(1, $options['batch']); /* @var $userModel XenForo_Model_User */ $userModel = XenForo_Model::create('XenForo_Model_User'); /* @var $conversationModel XenForo_Model_Conversation */ $conversationModel = XenForo_Model::create('XenForo_Model_Conversation'); $userIds = $userModel->getUserIdsInRange($position, $options['batch']); if (sizeof($userIds) == 0) { return true; } XenForo_Db::beginTransaction(); foreach ($userIds as $userId) { $position = $userId; /* @var $userDw XenForo_DataWriter_User */ $userDw = XenForo_DataWriter::create('XenForo_DataWriter_User', XenForo_DataWriter::ERROR_SILENT); if ($userDw->setExistingData($userId)) { $userDw->set('alerts_unread', $userModel->getUnreadAlertsCount($userId)); $userDw->set('conversations_unread', $conversationModel->countUnreadConversationsForUser($userId)); $userDw->save(); $userDw->rebuildUserGroupRelations(); $userDw->rebuildPermissionCombinationId(); $userDw->rebuildDisplayStyleGroupId(); $userDw->rebuildIdentities(); } } XenForo_Db::commit(); $detailedMessage = XenForo_Locale::numberFormat($position); return $position; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('position' => 0, 'batch' => 70), $data); $data['batch'] = max(1, $data['batch']); /* @var $userModel XenForo_Model_User */ $userModel = XenForo_Model::create('XenForo_Model_User'); /* @var $conversationModel XenForo_Model_Conversation */ $conversationModel = XenForo_Model::create('XenForo_Model_Conversation'); $userIds = $userModel->getUserIdsInRange($data['position'], $data['batch']); if (sizeof($userIds) == 0) { return true; } foreach ($userIds as $userId) { $data['position'] = $userId; $userWriter = XenForo_DataWriter::create('XenForo_DataWriter_User'); $userWriter->setExistingData($userId); $user = $userWriter->getMergedData(); $leecherLevel = $userModel->calculateLeecherLevel($user); if ($leecherLevel !== false) { $userWriter->set('leecher_level_unknown', 0); $userWriter->set('leecher_level', $leecherLevel); } else { $userWriter->set('leecher_level_unknown', 1); $userWriter->set('leecher_level', 0); } $userWriter->set('leecher_level_last_check', XenForo_Application::$time); $userWriter->save(); } $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('users'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('batch' => 10, 'position' => 0, 'positionRebuild' => false), $data); /* @var sonnb_XenGallery_Model_Location $locationModel */ $locationModel = XenForo_Model::create('sonnb_XenGallery_Model_Location'); $locations = $locationModel->getLocationsWithoutCoordinate($data['position'], $data['batch']); if (count($locations) < 1) { return false; } $db = XenForo_Application::getDb(); /** @var sonnb_XenGallery_Model_Location $locationModel */ $locationModel = XenForo_Model::create('sonnb_XenGallery_Model_Location'); foreach ($locations as $locationId => $location) { $data['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; } } $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('sonnb_xengallery_location'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('tagId' => null, 'position' => 0, 'deleteFirst' => false), $data); if (!$data['tagId']) { return false; } $db = XenForo_Application::getDb(); $matches = $db->fetchAll("\r\n\t\t\tSELECT tag_content_id, content_type, content_id\r\n\t\t\tFROM xf_tag_content\r\n\t\t\tWHERE tag_id = ?\r\n\t\t\t\tAND tag_content_id > ?\r\n\t\t\tORDER BY tag_content_id\r\n\t\t\tLIMIT 1000\r\n\t\t", array($data['tagId'], $data['position'])); if (!$matches) { return false; } /** @var XenForo_Model_Tag $tagModel */ $tagModel = XenForo_Model::create('XenForo_Model_Tag'); XenForo_Db::beginTransaction($db); $limitTime = $targetRunTime > 0; $s = microtime(true); foreach ($matches as $match) { $data['position'] = $match['tag_content_id']; if ($data['deleteFirst']) { $db->delete('xf_tag_content', 'tag_content_id = ' . $match['tag_content_id']); } $tagModel->rebuildTagCache($match['content_type'], $match['content_id']); if ($limitTime && microtime(true) - $s >= $targetRunTime) { break; } } XenForo_Db::commit($db); $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('tags'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('userGroupId' => 0, 'displayPriority' => 0, 'count' => 0), $data); if (!$data['userGroupId']) { return false; } $s = microtime(true); /* @var $groupModel XenForo_Model_UserGroup */ $groupModel = XenForo_Model::create('XenForo_Model_UserGroup'); $limit = 100; do { $results = $groupModel->removeUserGroupFromUsers($data['userGroupId'], XenForo_Model_User::$defaultRegisteredGroupId, $limit); if (!$results[0] && !$results[1]) { $groupModel->recalculateUserGroupDisplayStylePriority($data['userGroupId'], $data['displayPriority'], -1); $groupModel->rebuildDisplayStyleCache(); $groupModel->rebuildUserBannerCache(); return false; } $data['count'] += $limit; } while ($targetRunTime && microtime(true) - $s < $targetRunTime); $actionPhrase = new XenForo_Phrase('deleting'); $typePhrase = new XenForo_Phrase('user_group'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['count'])); return $data; }
public function createContent($tabId, $tabName, array $createCriteria, array $params) { if (!$createCriteria['resource_category_id']) { return $tabId; } /* @var $dw XenResource_DataWriter_Resource */ $dw = XenForo_DataWriter::create('XenResource_DataWriter_Resource', XenForo_DataWriter::ERROR_SILENT); $dw->bulkSet(array('resource_category_id' => $createCriteria['resource_category_id'], 'title' => $params['title'], 'tag_line' => isset($params['tag_line']) ? $params['tag_line'] : new XenForo_Phrase('waindigo_resource_tag_line_create_tabs', $params, false), 'user_id' => $params['user_id'], 'username' => $params['username'], 'tab_id' => $tabId)); $dw->setOption(Waindigo_Tabs_Extend_XenResource_DataWriter_Resource::OPTION_CHECK_TAB_RULES, false); $descriptionDw = $dw->getDescriptionDw(); $descriptionDw->set('message', $params['message']); $versionDw = $dw->getVersionDw(); $dw->set('is_fileless', 1); $versionDw->setOption(XenResource_DataWriter_Version::OPTION_IS_FILELESS, true); $versionDw->set('version_string', XenForo_Locale::date(XenForo_Application::$time, 'Y-m-d')); if ($dw->hasErrors()) { return $tabId; } if (!$tabId) { $tabId = $this->getTabId(); $dw->set('tab_id', $tabId); } if (!$dw->save()) { return $tabId; } $this->insertTab($tabId, 'resource', $dw->get('resource_id'), $tabName); return $tabId; }
/** * Renders the container. * @see XenForo_ViewRenderer_Abstract::renderContainer() * * @param string * @param array * * @return string */ public function renderContainer($contents, array $params = array(), array $newParams = array()) { $params['contentTemplate'] = $this->_contentTemplate; $params['debugMode'] = XenForo_Application::debugMode(); $params['serverTimeInfo'] = XenForo_Locale::getDayStartTimestamps(); if (!empty($params['extraTabs'])) { foreach ($params['extraTabs'] as &$group) { foreach ($group as &$extraTab) { if (!empty($extraTab['linksTemplate'])) { $extraTab['linksTemplate'] = $this->createTemplateObject($extraTab['linksTemplate'], $extraTab); } } } } $params = array_replace_recursive($params, $newParams); $templateName = !empty($params['containerTemplate']) ? $params['containerTemplate'] : 'PAGE_CONTAINER'; $template = $this->createTemplateObject($templateName, $params); //if ($contents instanceof XenForo_Template_Abstract) //{ // $contents = $contents->render(); //} $containerData = $this->_dependencies->getExtraContainerData(); $template->setParams($containerData); $template->setParam('contents', $contents); $template->setParam('noH1', isset($containerData['h1']) && $containerData['h1'] === ''); if ($params['debugMode']) { $template->setParams(XenForo_Debug::getDebugTemplateParams()); } $rendered = $template->render(); return $this->replaceRequiredExternalPlaceholders($template, $rendered); }
public function applyCover($teamId, $fileName, $imageType = false, $width = false, $height = false, $existingCoverDate = 0) { if (!$imageType || !$width || !$height) { $imageInfo = @getimagesize($fileName); if (!$imageInfo) { throw new Nobita_Teams_Exception_Abstract('Non-image passed in to applyCover'); } $width = $imageInfo[0]; $height = $imageInfo[1]; $imageType = $imageInfo[2]; } if (!in_array($imageType, array(IMAGETYPE_JPEG, IMAGETYPE_PNG))) { throw new Nobita_Teams_Exception_Abstract('Invalid image type passed in to applyCover'); } if (!XenForo_Image_Abstract::canResize($width, $height)) { throw new Nobita_Teams_Exception_Abstract(new XenForo_Phrase('uploaded_image_is_too_big'), true); } $maxFileSize = XenForo_Application::getOptions()->Teams_coverFileSize; if ($maxFileSize && filesize($fileName) > $maxFileSize) { @unlink($fileName); throw new XenForo_Exception(new XenForo_Phrase('Teams_your_cover_file_size_large_smaller_x', array('size' => XenForo_Locale::numberFormat($maxFileSize, 'size'))), true); } if ($existingCoverDate) { $existedFile = $this->getCoverCropFilePath($teamId, $existingCoverDate); @unlink($existedFile); } $this->_witerCoverPhoto($teamId, $fileName); @unlink($fileName); $dwData = array('cover_date' => XenForo_Application::$time, 'cover_crop_details' => array('height' => $height, 'width' => $width)); $dw = XenForo_DataWriter::create('Nobita_Teams_DataWriter_Team'); $dw->setExistingData($teamId); $dw->bulkSet($dwData); $dw->save(); return $dwData; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('batch' => 100, 'position' => 0, 'positionRebuild' => false), $data); /* @var $threadModel XenForo_Model_Thread */ $threadModel = XenForo_Model::create('XenForo_Model_Thread'); $threadIds = $threadModel->getThreadIdsInRange($data['position'], $data['batch']); if (sizeof($threadIds) == 0) { return false; } $forums = XenForo_Model::create('XenForo_Model_Forum')->getForumsByThreadIds($threadIds); foreach ($threadIds as $threadId) { $data['position'] = $threadId; $dw = XenForo_DataWriter::create('XenForo_DataWriter_Discussion_Thread', XenForo_DataWriter::ERROR_SILENT); if ($dw->setExistingData($threadId)) { $dw->setOption(XenForo_DataWriter_Discussion::OPTION_UPDATE_CONTAINER, false); if (isset($forums[$dw->get('node_id')])) { $dw->setExtraData(XenForo_DataWriter_Discussion_Thread::DATA_FORUM, $forums[$dw->get('node_id')]); } if ($data['positionRebuild']) { $dw->rebuildDiscussion(); } else { $dw->rebuildDiscussionCounters(); } $dw->save(); } } $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('threads'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
public function execute(array $deferred, array $data, $targetRunTime, &$status) { $data = array_merge(array('position' => 0, 'batch' => 70), $data); $data['batch'] = max(1, $data['batch']); /* @var $postModel XenForo_Model_Post */ $postModel = XenForo_Model::create('XenForo_Model_Post'); $postIds = $postModel->getPostIdsInRange($data['position'], $data['batch']); if (sizeof($postIds) == 0) { return true; } foreach ($postIds as $postId) { $data['position'] = $postId; /* @var $postDw XenForo_DataWriter_DiscussionMessage_Post */ $postDw = XenForo_DataWriter::create('XenForo_DataWriter_DiscussionMessage_Post', XenForo_DataWriter::ERROR_SILENT); if ($postDw->setExistingData($postId)) { XenForo_Db::beginTransaction(); $postDw->rebuildPostVerseCache(); XenForo_Db::commit(); } } $actionPhrase = new XenForo_Phrase('rebuilding'); $typePhrase = new XenForo_Phrase('posts'); $status = sprintf('%s... %s (%s)', $actionPhrase, $typePhrase, XenForo_Locale::numberFormat($data['position'])); return $data; }
/** * @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; }
/** * Renders the container. * @see XenForo_ViewRenderer_Abstract::renderContainer() * * @param string * @param array * * @return string */ public function renderContainer($contents, array $params = array()) { $params['contentTemplate'] = $this->_contentTemplate; $params['debugMode'] = XenForo_Application::debugMode(); $params['serverTimeInfo'] = XenForo_Locale::getDayStartTimestamps(); if (!empty($params['extraTabs'])) { foreach ($params['extraTabs'] as &$group) { foreach ($group as &$extraTab) { if (!empty($extraTab['linksTemplate'])) { $extraTab['linksTemplate'] = $this->createTemplateObject($extraTab['linksTemplate'], $extraTab + $params); } } } } $templateName = !empty($params['containerTemplate']) ? $params['containerTemplate'] : 'PAGE_CONTAINER'; $template = $this->createTemplateObject($templateName, $params); if ($contents instanceof XenForo_Template_Abstract) { $contents = $contents->render(); } $containerData = $this->_dependencies->getExtraContainerData(); $containerData['notices'] = $this->_getNoticesContainerParams($template, $containerData); $template->setParams($containerData); $template->setParam('contents', $contents); $template->setParam('noH1', isset($containerData['h1']) && $containerData['h1'] === ''); if ($params['debugMode']) { $template->setParams(XenForo_Debug::getDebugTemplateParams()); } $rendered = $template->render(); $rendered = $this->replaceRequiredExternalPlaceholders($template, $rendered); $language = XenForo_Visitor::getInstance()->getLanguage(); if (isset($language['text_direction']) && $language['text_direction'] == 'RTL') { $rendered = XenForo_Template_Helper_RightToLeft::replaceRtlEntities($rendered); } return $rendered; }
public function actionBanned() { $userId = XenForo_Visitor::getUserId(); $bannedUser = $this->getModelFromCache('XenForo_Model_Banning')->getBannedUserById($userId); if (!$bannedUser) { return $this->responseNoPermission(); } else { if ($bannedUser['triggered'] && !$bannedUser['end_date']) { /** @var XenForo_Model_Warning $warningModel */ $warningModel = $this->getModelFromCache('XenForo_Model_Warning'); $minUnbanDate = $warningModel->getMinimumWarningUnbanDate($userId); if ($minUnbanDate) { $bannedUser['end_date'] = $minUnbanDate; } } if ($bannedUser['user_reason']) { $message = new XenForo_Phrase('you_have_been_banned_for_following_reason_x', array('reason' => $bannedUser['user_reason'])); } else { $message = new XenForo_Phrase('you_have_been_banned'); } if ($bannedUser['end_date'] > XenForo_Application::$time) { $message .= ' ' . new XenForo_Phrase('your_ban_will_be_lifted_on_x', array('date' => XenForo_Locale::dateTime($bannedUser['end_date']))); } return $this->responseError($message, 403); } }
/** * Rebuilds the data. * * @see XenForo_CacheRebuilder_Abstract::rebuild() */ public function rebuild($position = 0, array &$options = array(), &$detailedMessage = '') { $options = array_merge(array('batch' => 100, 'positionRebuild' => false), $options); /* @var $threadModel XenForo_Model_Thread */ $threadModel = XenForo_Model::create('XenForo_Model_Thread'); $threadIds = $threadModel->getThreadIdsInRange($position, $options['batch']); if (sizeof($threadIds) == 0) { return true; } XenForo_Db::beginTransaction(); foreach ($threadIds as $threadId) { $position = $threadId; $dw = XenForo_DataWriter::create('XenForo_DataWriter_Discussion_Thread', XenForo_DataWriter::ERROR_SILENT); if ($dw->setExistingData($threadId)) { $dw->setOption(XenForo_DataWriter_Discussion::OPTION_UPDATE_CONTAINER, false); if ($options['positionRebuild']) { $dw->rebuildDiscussion(); } else { $dw->rebuildDiscussionCounters(); } $dw->save(); } } XenForo_Db::commit(); $detailedMessage = XenForo_Locale::numberFormat($position); return $position; }