Beispiel #1
0
 public function finishWrite()
 {
     if ($this->readOnly) {
         return;
     } elseif (is_null($this->currentLang)) {
         throw new MWException(__CLASS__ . ': must call startWrite() before finishWrite()');
     }
     $this->dbw->startAtomic(__METHOD__);
     try {
         $this->dbw->delete('l10n_cache', ['lc_lang' => $this->currentLang], __METHOD__);
         foreach (array_chunk($this->batch, 500) as $rows) {
             $this->dbw->insert('l10n_cache', $rows, __METHOD__);
         }
         $this->writesDone = true;
     } catch (DBQueryError $e) {
         if ($this->dbw->wasReadOnlyError()) {
             $this->readOnly = true;
             // just avoid site down time
         } else {
             throw $e;
         }
     }
     $this->dbw->endAtomic(__METHOD__);
     $this->currentLang = null;
     $this->batch = [];
 }
Beispiel #2
0
 /**
  * 删除一条数据主键为$id的记录,
  * @param $id
  * @param $where 指定匹配字段,默认为主键
  * @return true/false
  */
 public final function del($id, $where = null)
 {
     if ($where == null) {
         $where = $this->primary;
     }
     return $this->db->delete($id, $this->table, $where);
 }
Beispiel #3
0
 /**
  * Add row to the redirect table if this is a redirect, remove otherwise.
  *
  * @param IDatabase $dbw
  * @param Title $redirectTitle Title object pointing to the redirect target,
  *   or NULL if this is not a redirect
  * @param null|bool $lastRevIsRedirect If given, will optimize adding and
  *   removing rows in redirect table.
  * @return bool True on success, false on failure
  * @private
  */
 public function updateRedirectOn($dbw, $redirectTitle, $lastRevIsRedirect = null)
 {
     // Always update redirects (target link might have changed)
     // Update/Insert if we don't know if the last revision was a redirect or not
     // Delete if changing from redirect to non-redirect
     $isRedirect = !is_null($redirectTitle);
     if (!$isRedirect && $lastRevIsRedirect === false) {
         return true;
     }
     if ($isRedirect) {
         $this->insertRedirectEntry($redirectTitle);
     } else {
         // This is not a redirect, remove row from redirect table
         $where = ['rd_from' => $this->getId()];
         $dbw->delete('redirect', $where, __METHOD__);
     }
     if ($this->getTitle()->getNamespace() == NS_FILE) {
         RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect($this->getTitle());
     }
     return $dbw->affectedRows() != 0;
 }