Exemplo n.º 1
0
 /**
  * Create a new transaction ID.
  *
  * @param string $creator        A transaction creator.
  * @param string $creator_email  The transaction creator's email address.
  *
  * @return integer  A transaction ID.
  * @throws Whups_Exception
  */
 public function newTransaction($creator, $creator_email = null)
 {
     $insert = 'INSERT INTO whups_transactions ' . '(transaction_timestamp, transaction_user_id) VALUES(?, ?)';
     $this->_db->beginDbTransaction();
     try {
         if ((empty($creator) || $creator < 0) && !empty($creator_email)) {
             // Need to insert dummy value first so we can get the
             // transaction ID.
             $transactionId = $this->_db->insert($insert, array(time(), 'x'));
             $creator = '-' . $transactionId . '_transaction';
             $this->_db->insert('INSERT INTO whups_guests (guest_id, guest_email) ' . 'VALUES (?, ?)', array((string) $creator, $creator_email));
             $this->_db->update('UPDATE whups_transactions SET transaction_user_id = ? ' . 'WHERE transaction_id = ?', array($creator, $transactionId));
         } else {
             $transactionId = $this->_db->insert($insert, array(time(), $creator));
         }
     } catch (Horde_Db_Exception $e) {
         $this->_db->rollbackDbTransaction();
         throw new Whups_Exception($e);
     }
     $this->_db->commitDbTransaction();
     return $transactionId;
 }