/**
  * Method to commit a transaction.
  *
  * @param   boolean  $toSavepoint  If true, commit to the last savepoint.
  * @return  self                   Returns this object to support chaining.
  *
  * @throws  \RuntimeException
  */
 public function transactionCommit($toSavepoint = false)
 {
     if (version_compare($this->cmsRelease, '3.2', '>=')) {
         $this->_db->transactionCommit($toSavepoint);
     } else {
         if (!$toSavepoint || $this->transactionDepth <= 1) {
             $this->_db->transactionCommit();
             $this->transactionDepth = 0;
             return $this;
         }
         $this->transactionDepth--;
     }
     return $this;
 }
Beispiel #2
0
 /**
  * Method to update an object in the database.
  *
  * @return  void
  *
  * @since   12.1
  * @throws  RuntimeException
  */
 protected function doUpdate()
 {
     // Get the primary key.
     $primaryKey = $this->getTableKey('primary', 'primary');
     try {
         // Start a transaction.
         $this->db->transactionStart();
         // Update the data for each table.
         foreach ($this->tables as $alias => $table) {
             // Store the data to the database.
             $dump = $this->dumpTable($alias);
             $this->db->updateObject($table, $dump, $primaryKey);
         }
         // Commit the transaction.
         $this->db->transactionCommit();
     } catch (RuntimeException $error) {
         // Rollback the transaction.
         $this->db->transactionRollback();
         // Rethrow the error.
         throw $error;
     }
 }