Esempio n. 1
0
 /**
  * Moves a page to a new location.
  *
  * @param string $newTitle The new title to which to move the page.
  * @param string $reason A descriptive reason for the move.
  * @param bool $movetalk Whether or not to move any associated talk (discussion) page.
  * @param bool $movesubpages Whether or not to move any subpages.
  * @param bool $noredirect Whether or not to suppress the leaving of a redirect to the new title at the old title.
  * @param string|bool $watch Unconditionally add or remove the page from your watchlist, use preferences or do not change watch. Default: go by user preference.
  * @param bool $nowarnings Ignore any warnings. Default false.
  * @return bool True on success
  */
 public function move($newTitle, $reason = '', $movetalk = true, $movesubpages = true, $noredirect = false, $watch = null, $nowarnings = false)
 {
     global $pgNotag, $pgTag;
     $tokens = $this->wiki->get_tokens();
     if ($tokens['move'] == '+\\') {
         pecho("User has logged out.\n\n", PECHO_FATAL);
         return false;
     } elseif ($tokens['move'] == '') {
         pecho("User is not allowed to move {$this->title}\n\n", PECHO_FATAL);
         return false;
     }
     if (mb_strlen($reason, '8bit') > 255) {
         pecho("Reason is over 255 bytes, the maximum allowed.\n\n", PECHO_FATAL);
         return false;
     }
     try {
         $this->preEditChecks("Move");
     } catch (EditError $e) {
         pecho("Error: {$e}\n\n", PECHO_FATAL);
         return false;
     }
     pecho("Moving {$this->title} to {$newTitle}...\n\n", PECHO_NOTICE);
     $editarray = array('from' => $this->title, 'to' => $newTitle, 'action' => 'move', 'token' => $tokens['move']);
     if (!is_null($watch)) {
         if ($watch) {
             $editarray['watchlist'] = 'watch';
         } elseif (!$watch) {
             $editarray['watchlist'] = 'nochange';
         } elseif (in_array($watch, array('watch', 'unwatch', 'preferences', 'nochange'))) {
             $editarray['watchlist'] = $watch;
         } else {
             pecho("Watch parameter set incorrectly.  Omitting...\n\n", PECHO_WARN);
         }
     }
     if ($nowarnings) {
         $editarray['ignorewarnings'] = 'yes';
     }
     if (!$pgNotag) {
         $reason .= $pgTag;
     }
     if (!empty($reason)) {
         $editarray['reason'] = $reason;
     }
     if ($movetalk) {
         $editarray['movetalk'] = 'yes';
     }
     if ($movesubpages) {
         $editarray['movesubpages'] = 'yes';
     }
     if ($noredirect) {
         $editarray['noredirect'] = 'yes';
     }
     if ($this->wiki->get_maxlag()) {
         $editarray['maxlag'] = $this->wiki->get_maxlag();
     }
     Hooks::runHook('StartMove', array(&$editarray));
     $result = $this->wiki->apiQuery($editarray, true);
     if (isset($result['move'])) {
         if (isset($result['move']['to'])) {
             $this->__construct($this->wiki, null, $this->pageid);
             return true;
         } else {
             pecho("Move error...\n\n" . print_r($result['move'], true) . "\n\n", PECHO_FATAL);
             return false;
         }
     } else {
         pecho("Move error...\n\n" . print_r($result, true), PECHO_FATAL);
         return false;
     }
 }