Пример #1
0
 /**
  * Lock the page for editing
  * 
  * @param SiteTree $page
  * 			The page being edited
  * @param boolean $doLock 
  * 			Whether to actually lock the page for ourselves
  * @return array
  * 			The names of any existing editors
  */
 protected function getEditingLocks($page, $doLock = false)
 {
     $currentStage = Versioned::current_stage();
     Versioned::reading_stage('Stage');
     $filter = array('WikiPage.ID' => $page->ID, 'WikiLockExpiry' => date('Y-m-d H:i:s'));
     $user = Member::currentUser();
     $currentLock = WikiPage::get()->filter($filter)->first();
     $lock = null;
     if ($currentLock && $currentLock->ID) {
         // if there's a current lock in place, lets return that value
         $lock = array('user' => $currentLock->WikiLastEditor, 'expires' => $currentLock->WikiLockExpiry);
     }
     // If we're trying to take the lock, make sure that a) there's no existing
     // lock or b) we currently hold the lock
     if ($doLock && ($currentLock == null || !$currentLock->ID || $currentLock->WikiLastEditor == $user->Email)) {
         $page->lock();
     }
     Versioned::reading_stage($currentStage);
     return $lock;
 }