clearCache() public static method

public static clearCache ( )
示例#1
0
 /**
  * Merge the old user into the new user.
  *
  * @param int $OldUserID The ID of the old user.
  * @param int $NewUserID The ID of the new user.
  */
 public function merge($OldUserID, $NewUserID)
 {
     $OldUser = $this->getID($OldUserID, DATASET_TYPE_ARRAY);
     $NewUser = $this->getID($NewUserID, DATASET_TYPE_ARRAY);
     if (!$OldUser || !$NewUser) {
         throw new Gdn_UserException("Could not find one or both users to merge.");
     }
     $Map = ['UserID', 'Name', 'Email', 'CountVisits', 'CountDiscussions', 'CountComments'];
     $Result = ['MergeID' => null, 'Before' => ['OldUser' => arrayTranslate($OldUser, $Map), 'NewUser' => arrayTranslate($NewUser, $Map)]];
     // Start the merge.
     $MergeID = $this->mergeStart($OldUserID, $NewUserID);
     // Copy all discussions from the old user to the new user.
     $this->mergeCopy($MergeID, 'Discussion', 'InsertUserID', $OldUserID, $NewUserID);
     // Copy all the comments from the old user to the new user.
     $this->mergeCopy($MergeID, 'Comment', 'InsertUserID', $OldUserID, $NewUserID);
     // Update the last comment user ID.
     $this->SQL->put('Discussion', ['LastCommentUserID' => $NewUserID], ['LastCommentUserID' => $OldUserID]);
     // Clear the categories cache.
     CategoryModel::clearCache();
     // Copy all of the activities.
     $this->mergeCopy($MergeID, 'Activity', 'NotifyUserID', $OldUserID, $NewUserID);
     $this->mergeCopy($MergeID, 'Activity', 'InsertUserID', $OldUserID, $NewUserID);
     $this->mergeCopy($MergeID, 'Activity', 'ActivityUserID', $OldUserID, $NewUserID);
     // Copy all of the activity comments.
     $this->mergeCopy($MergeID, 'ActivityComment', 'InsertUserID', $OldUserID, $NewUserID);
     // Copy all conversations.
     $this->mergeCopy($MergeID, 'Conversation', 'InsertUserID', $OldUserID, $NewUserID);
     $this->mergeCopy($MergeID, 'ConversationMessage', 'InsertUserID', $OldUserID, $NewUserID, 'MessageID');
     $this->mergeCopy($MergeID, 'UserConversation', 'UserID', $OldUserID, $NewUserID, 'ConversationID');
     $this->EventArguments['MergeID'] = $MergeID;
     $this->EventArguments['OldUser'] = $OldUser;
     $this->EventArguments['NewUser'] = $NewUser;
     $this->fireEvent('Merge');
     $this->mergeFinish($MergeID);
     $OldUser = $this->getID($OldUserID, DATASET_TYPE_ARRAY);
     $NewUser = $this->getID($NewUserID, DATASET_TYPE_ARRAY);
     $Result['MergeID'] = $MergeID;
     $Result['After'] = ['OldUser' => arrayTranslate($OldUser, $Map), 'NewUser' => arrayTranslate($NewUser, $Map)];
     return $Result;
 }
 /**
  * Enabling and disabling categories from list.
  *
  * @since 2.0.0
  * @access public
  */
 public function manageCategories()
 {
     // Check permission
     $this->permission(['Garden.Community.Manage', 'Garden.Settings.Manage'], false);
     $this->setHighlightRoute('vanilla/settings/categories');
     $this->addJsFile('manage-categories.js');
     $this->addJsFile('jquery.alphanumeric.js');
     // This now works on latest jQuery version 1.10.2
     //
     // Jan29, 2014, upgraded jQuery UI to 1.10.3 from 1.8.11
     $this->addJsFile('nestedSortable/jquery-ui.min.js');
     // Newer nestedSortable, but does not work.
     //$this->addJsFile('js/library/nestedSortable/jquery.mjs.nestedSortable.js');
     // old jquery-ui
     //$this->addJsFile('js/library/nestedSortable.1.3.4/jquery-ui-1.8.11.custom.min.js');
     $this->addJsFile('nestedSortable.1.3.4/jquery.ui.nestedSortable.js');
     $this->title(t('Categories'));
     // Get category data
     $CategoryData = $this->CategoryModel->getAll('TreeLeft');
     // Set CanDelete per-category so we can override later if we want.
     $canDelete = checkPermission(['Garden.Community.Manage', 'Garden.Settings.Manage']);
     array_walk($CategoryData->result(), function (&$value) use($canDelete) {
         setvalr('CanDelete', $value, $canDelete);
     });
     $this->setData('CategoryData', $CategoryData, true);
     // Setup & save forms
     $Validation = new Gdn_Validation();
     $ConfigurationModel = new Gdn_ConfigurationModel($Validation);
     $ConfigurationModel->setField(array('Vanilla.Categories.MaxDisplayDepth', 'Vanilla.Categories.DoHeadings', 'Vanilla.Categories.HideModule'));
     // Set the model on the form.
     $this->Form->setModel($ConfigurationModel);
     // Define MaxDepthOptions
     $DepthData = array();
     $DepthData['2'] = sprintf(t('more than %s deep'), plural(1, '%s level', '%s levels'));
     $DepthData['3'] = sprintf(t('more than %s deep'), plural(2, '%s level', '%s levels'));
     $DepthData['4'] = sprintf(t('more than %s deep'), plural(3, '%s level', '%s levels'));
     $DepthData['0'] = t('never');
     $this->setData('MaxDepthData', $DepthData);
     // If seeing the form for the first time...
     if ($this->Form->authenticatedPostBack() === false) {
         // Apply the config settings to the form.
         $this->Form->setData($ConfigurationModel->Data);
     } else {
         if ($this->Form->save() !== false) {
             CategoryModel::clearCache();
             $this->informMessage(t("Your settings have been saved."));
         }
     }
     // Render default view
     $this->render();
 }