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; }
public static function uninstall() { //Get the db $db = XenForo_Application::getDb(); XenForo_Db::beginTransaction($db); //Drop the custom tables from the db try { $db->query("\n\t\t\t DROP TABLE IF EXISTS `xf_thread_rating`\n\t\t "); } catch (Zend_Db_Exception $e) { } //Drop the `rating_count` field from the thread table try { $db->query("\n\t\t\t\tALTER TABLE xf_thread\n\t\t\t\t\tDROP COLUMN `rating_count`\n\t\t\t"); } catch (Zend_Db_Exception $e) { } //Drop the `rating_sum` field from the thread table try { $db->query("\n\t\t\t\tALTER TABLE xf_thread\n\t\t\t\t\tDROP COLUMN `rating_sum`\n\t\t\t"); } catch (Zend_Db_Exception $e) { } //Drop the `rating_avg` field from the thread table try { $db->query("\n\t\t\t\tALTER TABLE xf_thread\n\t\t\t\t\tDROP COLUMN `rating_avg`\n\t\t\t"); } catch (Zend_Db_Exception $e) { } XenForo_Db::commit($db); }
/** * 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; }
/** * 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; } }
/** * 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('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; }
/** * @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) { 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'); $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; }
/** * @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; }
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; }
/** * 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; }
public static function initiate($method, array $args) { if (!defined('PHP_VERSION_ID') || PHP_VERSION_ID < 50307) { throw new GFNCore_Exception('This add-on does not support PHP versions lesser than 5.3.7', true); } if ($method == 'install' && !empty($args[0])) { $job = 'upgrade'; } else { $job = $method; } /** @var GFNCore_Installer_Abstract $obj */ $obj = new static(); $obj->setJob($job); if ($method == 'install') { $obj->setNewData($args[1]); $obj->setXml($args[2]); } if (in_array($job, array('upgrade', 'uninstall'))) { $obj->setExistingData($args[0]); } $class = 'GFNCore_Installer_Controller_' . ucfirst($job); XenForo_Db::beginTransaction(); try { /** @var GFNCore_Installer_Controller_Abstract $controller */ $controller = new $class($obj); $controller->execute(); } catch (Exception $e) { XenForo_Db::rollback(); throw $e; } XenForo_Db::commit(); $style = new GFNCore_Installer_Handler_Style(); $style->handle($obj->getData()->addon_id); }
/** * Gives a user the specified promotion. * * @param array $promotion * @param integer $userId * @param string $state Type of promotion (automatic, manual); this affects * automatic demotion * @param integer $endDate */ public function promoteUserWithEndDate(array $promotion, $userId, $state = 'automatic', $endDate) { $db = $this->_getDb(); XenForo_Db::beginTransaction($db); $this->_getUserModel()->addUserGroupChange($userId, "ugPromotion{$promotion['promotion_id']}", $promotion['extra_user_group_ids']); $this->insertPromotionLogEntryWithEndDate($promotion['promotion_id'], $userId, $state, $endDate); XenForo_Db::commit($db); }
public static function uninstaller() { $db = self::_getDb(); XenForo_Db::beginTransaction($db); if (self::_doesIndexExist()) { self::_dropIndex(); } XenForo_Db::commit($db); }
public function run($addonId, $path) { $addonModel = XenForo_Model::create('XenForo_Model_AddOn'); $this->printMessage('Importing ' . $addonId . ' from ' . realPath($path) . '...'); $print = 'importing addon.xml...'; $print .= str_repeat(' ', $this->_column - strlen($print)); $t = microtime(true); $m = memory_get_usage(true); $this->printMessage($print, false); $xml = new SimpleXMLElement($path . '/addon.xml', 0, true); $addOnData = array('addon_id' => (string) $xml['addon_id'], 'title' => (string) $xml['title'], 'version_string' => (string) $xml['version_string'], 'version_id' => (string) $xml['version_id'], 'install_callback_class' => (string) $xml['install_callback_class'], 'install_callback_method' => (string) $xml['install_callback_method'], 'uninstall_callback_class' => (string) $xml['uninstall_callback_class'], 'uninstall_callback_method' => (string) $xml['uninstall_callback_method'], 'url' => (string) $xml['url']); $version = file_get_contents($path . '/version.txt'); if ($version) { foreach ($addOnData as &$data) { $data = str_replace('{@revision}', $version, $data); } } $addOnData['version_id'] = (int) $addOnData['version_id']; $existingAddOn = $addonModel->verifyAddOnIsInstallable($addOnData, $addonModel->getAddonById($addonId) ? $addonId : false); $db = XenForo_Application::getDb(); XenForo_Db::beginTransaction($db); if ($addOnData['install_callback_class'] && $addOnData['install_callback_method']) { call_user_func(array($addOnData['install_callback_class'], $addOnData['install_callback_method']), $existingAddOn, $addOnData); } $addOnDw = XenForo_DataWriter::create('XenForo_DataWriter_AddOn'); if ($existingAddOn) { $addOnDw->setExistingData($existingAddOn, true); } $addOnDw->bulkSet($addOnData); $addOnDw->save(); $t = abs(microtime(true) - $t); $m = abs(memory_get_usage(true) - $m); $m = $m / 1024 / 1024; $this->printMessage('done (' . number_format($t, 2) . 'sec, ' . number_format($m, 2) . 'mb)'); $this->_importXml($addonId, $path . '/admin_navigation.xml', 'AdminNavigation'); $this->_importXml($addonId, $path . '/admin_permissions.xml', 'Admin', 'importAdminPermissionsAddOnXml'); $this->_importXml($addonId, $path . '/code_events.xml', 'CodeEvent', 'importEventsAddOnXml'); $this->_importXml($addonId, $path . '/code_event_listeners.xml', 'CodeEvent', 'importEventListenersAddOnXml'); $this->_importXml($addonId, $path . '/cron.xml', 'Cron', 'importCronEntriesAddOnXml'); $this->_importXml($addonId, $path . '/email_templates.xml', 'EmailTemplate'); $this->_importXml($addonId, $path . '/options.xml', 'Option'); $this->_importXml($addonId, $path . '/permissions.xml', 'Permission'); $this->_importXml($addonId, $path . '/route_prefixes.xml', 'RoutePrefix', 'importPrefixesAddOnXml'); $this->_importXml($addonId, $path . '/style_properties.xml', 'StyleProperty', 'importStylePropertyXml', array(0, $addonId)); $this->_importXml($addonId, $path . '/admin_style_properties.xml', 'StyleProperty', 'importStylePropertyXml', array(-1, $addonId)); foreach (array('templates/admin', 'templates/master', 'phrases') as $dir) { $this->_removeDirectory(XenForo_Application::getInstance()->getRootDir() . '/' . $dir . '/' . $addonId); } $this->_importXml($addonId, $path . '/templates.xml', 'Template'); $this->_importXml($addonId, $path . '/admin_templates.xml', 'AdminTemplate'); $this->_importXml($addonId, $path . '/phrases.xml', 'Phrase'); // TODO: bbcode XenForo_Db::commit($db); $this->printEmptyLine(); $this->manualRun('rebuild', false, false, array('caches' => 'addon')); }
public function resetLayout($layout) { $db = $this->_getDb(); XenForo_Db::beginTransaction($db); $dw = XenForo_DataWriter::create('EWRporta_DataWriter_Layouts'); $dw->setExistingData($layout); $dw->delete(); XenForo_Db::commit($db); return true; }
public function rebuildUnreadConversationCountForUser($userId) { if (SV_DeadlockAvoidance_DataWriter::registerPostTransactionClosure(function () use($userId) { XenForo_Db::beginTransaction(); parent::rebuildUnreadConversationCountForUser($userId); XenForo_Db::commit(); })) { return; } parent::rebuildUnreadConversationCountForUser($userId); }
public function deleteUserRecords($userId) { $records = $this->getPurchases(array('user_id' => $userId)); XenForo_Db::beginTransaction(); foreach ($records as $record) { $dw = XenForo_DataWriter::create('bdPaygate_DataWriter_Purchase'); $dw->setExistingData($record, true); $dw->delete(); } XenForo_Db::commit(); return count($records); }
public function recountRatings() { @set_time_limit(0); ignore_user_abort(true); XenForo_Application::getDb()->setProfiler(false); $db = $this->_getDb(); //Delete ratings(s) given in threads that do not exists anymore $db->query("DELETE ratings.*\n \t\t FROM xf_thread_rating AS ratings\n\t\t\t\t\tLEFT JOIN xf_thread AS thread \n\t\t\t\t\tON (ratings.thread_id = thread.thread_id)\n\t\t\t\t\tWHERE thread.thread_id IS NULL\n\t\t"); //Delete ratings(s) given by users that do not exists anymore $db->query("DELETE ratings.* \n\t\t FROM xf_thread_rating AS ratings\n\t\t\t\t\tLEFT JOIN xf_user AS user \n\t\t\t\t\tON (ratings.user_id = user.user_id)\n\t\t\t\t\tWHERE user.user_id IS NULL\n\t\t"); XenForo_Db::commit($db); }
public function stepFriends($start, array $options) { $options = array_merge(array('limit' => 100, 'max' => false), $options); $sDb = $this->_sourceDb; $prefix = $this->_prefix; /* @var $model XenForo_Model_Import */ $model = $this->_importModel; if ($options['max'] === false) { $options['max'] = $sDb->fetchOne(' SELECT MAX(userid) FROM ' . $prefix . 'userlist '); } $friends = $sDb->fetchAll($sDb->limit(' SELECT * FROM ' . $prefix . 'userlist AS userlist WHERE userlist.userid > ' . $sDb->quote($start) . ' AND userlist.type = \'buddy\' AND userlist.friend IN (\'yes\', \'pending\') ORDER BY userlist.userid ', $options['limit'])); if (!$friends) { return true; } $next = 0; $total = 0; XenForo_Db::beginTransaction(); foreach ($friends as $friend) { $next = $friend['userid']; $userId = $model->mapUserId($friend['userid'], 0); $friendUserId = $model->mapUserId($friend['relationid'], 0); if (!$userId || !$friendUserId) { continue; } /* @var $userModel XenForo_Model_User */ $userModel = XenForo_Model::create('XenForo_Model_User'); $friendRecord = $userModel->getFriendRecord($userId, $friendUserId); $dw = XenForo_DataWriter::create('ThemeHouse_Friends_DataWriter_Friend'); if ($friendRecord) { $dw->setExistingData($friendRecord); } else { $dw->set('user_id', $userId); $dw->set('friend_user_id', $friendUserId); $dw->set('message', 'n/a'); } $dw->set('friend_state', $friend['friend'] == 'pending' ? 'pending' : 'confirmed'); $dw->save(); $total++; } XenForo_Db::commit(); $this->_session->incrementStepImportTotal($total); return array($next, $options, $this->_getProgressOutput($next, $options['max'])); }
/** * Updates the given set of user titles. The set is assumed to be all user titles, * as the existing ones are removed before updating. * * @param array $titles [] => [title, minimum_level] * @param boolean $rebuildCache If true, rebuilds the user title cache */ public function updateUserTitleLadder(array $titles, $rebuildCache = true) { $db = $this->_getDb(); XenForo_Db::beginTransaction($db); $db->delete('xf_user_title_ladder'); foreach ($titles as $titleInfo) { if (isset($titleInfo['title'], $titleInfo['minimum_level'])) { $this->insertUserTitleLadderEntry($titleInfo['title'], $titleInfo['minimum_level'], false); } } if ($rebuildCache) { $this->rebuildUserTitleLadderCache(); } XenForo_Db::commit($db); }
public function actionDelete() { $id = $this->_input->filterSingle('tag_id', XenForo_Input::UINT); $tag = $this->_getTagOrError($id); if ($this->isConfirmedPost()) { XenForo_Db::beginTransaction(); $dw = $this->_getTagDataWriter(); $dw->setExistingData($id); $dw->delete(); XenForo_Db::commit(); return $this->responseRedirect(XenForo_ControllerResponse_Redirect::SUCCESS, XenForo_Link::buildAdminLink('xentag-tags')); } else { $viewParams = array('tag' => $tag); return $this->responseView('Tinhte_XenTag_ViewAdmin_Tag_Delete', 'tinhte_xentag_tag_delete', $viewParams); } }
public function logCacheByTab($tabId, $userId, $viewParams) { $cacheData = serialize($viewParams); $db = $this->_getDb(); XenForo_Db::beginTransaction($db); $result = $db->query(' INSERT IGNORE INTO xf_brivium_modern_caches (tab_id, user_id, date, params) VALUES (?, ?, ?, ?) ', array($tabId, $userId, $cacheData, XenForo_Application::$time)); if (!$result->rowCount()) { $updateArray = array('params' => $cacheData, 'date' => XenForo_Application::$time); $db->update('xf_brivium_modern_caches', $updateArray, '`tab_id` = ' . $db->quote($tabId) . ' AND `user_id` = ' . $db->quote($userId)); } XenForo_Db::commit($db); }
public function importListenersXml(SimpleXMLElement $xml, $blockId) { $db = $this->_getDb(); XenForo_Db::beginTransaction($db); $this->deleteListenersByBlock($blockId); $listeners = XenForo_Helper_DevelopmentXml::fixPhpBug50670($xml->listener); foreach ($listeners as $event) { $eventId = (string) $event['event_id']; $dw = XenForo_DataWriter::create('XenForo_DataWriter_CodeEventListener'); $dw->setOption(XenForo_DataWriter_CodeEventListener::OPTION_REBUILD_CACHE, false); $dw->bulkSet(array('event_id' => (string) $event['event_id'], 'execute_order' => (string) $event['execute_order'], 'callback_class' => (string) $event['callback_class'], 'callback_method' => (string) $event['callback_method'], 'active' => (string) $event['active'], 'description' => (string) $event['description'])); $dw->save(); } $this->getModelFromCache('XenForo_Model_CodeEvent')->rebuildEventListenerCache(); XenForo_Db::commit($db); return; }
public function importAdminTemplatesXml(SimpleXMLElement $xml, $blockId) { $existingAdminTemplates = $this->getAdminTemplatesByBlock($blockId); $db = $this->_getDb(); XenForo_Db::beginTransaction($db); foreach ($xml->template as $template) { $templateName = (string) $template['title']; $dw = XenForo_DataWriter::create('XenForo_DataWriter_AdminTemplate'); if (isset($existingAdminTemplates[$templateName])) { $dw->setExistingData($existingAdminTemplates[$templateName], true); } $dw->bulkSet(array('title' => $templateName, 'template' => XenForo_Helper_DevelopmentXml::processSimpleXmlCdata($template))); $dw->save(); } XenForo_Db::commit($db); return; }
public function importPhrasesXml(SimpleXMLElement $xml, $blockId) { $existingPhrases = $this->getPhrasesByBlock($blockId); $db = $this->_getDb(); XenForo_Db::beginTransaction($db); $phrases = XenForo_Helper_DevelopmentXml::fixPhpBug50670($xml->phrase); foreach ($phrases as $phrase) { $phraseName = (string) $phrase['title']; $dw = XenForo_DataWriter::create('XenForo_DataWriter_Phrase'); if (isset($existingPhrases[$phraseName])) { $dw->setExistingData($existingPhrases[$phraseName], true); } $dw->bulkSet(array('language_id' => '0', 'title' => $phraseName, 'phrase_text' => (string) $phrase)); $dw->save(); } XenForo_Db::commit($db); return; }
/** * Undoes the actions of cleanUp, based on the log * * @param array $log * * @return boolean */ public function restore(array $log, &$errorKey = '') { $db = $this->_getDb(); XenForo_Db::beginTransaction($db); $logData = unserialize($log['data']); foreach ($this->getSpamHandlers() as $contentType => $spamHandler) { if (!empty($logData[$contentType])) { if (!$spamHandler->restore($logData[$contentType], $errorKey)) { return false; } } } if (!empty($logData['user']) && $logData['user'] == 'banned') { $this->_liftBan($log); } $db->update('xf_spam_cleaner_log', array('restored_date' => XenForo_Application::$time), 'spam_cleaner_log_id = ' . $db->quote($log['spam_cleaner_log_id'])); XenForo_Db::commit($db); return true; }
public function group_importGroup($oldId, array $import, $dwClass, $key, $importMode = true, $returnFullData = false) { XenForo_Db::beginTransaction(); $dw = XenForo_DataWriter::create($dwClass, XenForo_DataWriter::ERROR_SILENT); if ($importMode) { $dw->setImportMode(true); } $dw->bulkSet($import, array('ignoreInvalidFields' => true)); $newId = false; if ($dw->save()) { if ($returnFullData) { $newId = $dw->getMergedData(); } else { $newId = $dw->get($key); } } XenForo_Db::commit(); return $newId; }
/** * Rebuilds the data. * * @see XenForo_CacheRebuilder_Abstract::rebuild() */ public function rebuild($position = 0, array &$options = array(), &$detailedMessage = '') { $options['batch'] = isset($options['batch']) ? $options['batch'] : 100; $options['batch'] = max(1, $options['batch']); /* @var $pollModel XenForo_Model_Poll */ $pollModel = XenForo_Model::create('XenForo_Model_Poll'); $pollIds = $pollModel->getPollIdsInRange($position, $options['batch']); if (count($pollIds) == 0) { return true; } XenForo_Db::beginTransaction(); foreach ($pollIds as $pollId) { $position = $pollId; $pollModel->rebuildPollData($pollId); } XenForo_Db::commit(); $detailedMessage = XenForo_Locale::numberFormat($position); return $position; }