コード例 #1
0
ファイル: Member.php プロジェクト: nikonehauser/pt
 /**
  * Get one Transfer::STATE_COLLECT transfer to bundle. If none exists one
  * will be created. If the users state is NOT paid the state will set
  * to Transfer::STATE_RESERVED.
  *
  * NOTE: This transfer wont get saved by this method!
  *
  * @param  PropelPDO $con
  * @return [type]
  */
 public function getCurrentTransferBundle($currency, PropelPDO $con)
 {
     // $transfer = TransferQuery::create()
     //   ->filterByState([Transfer::STATE_COLLECT, Transfer::STATE_RESERVED])
     //   ->filterByMember($this)
     //   ->orderBy(TransferPeer::STATE, Criteria::DESC)
     //   ->findOne($con);
     // SELECT * FROM ... FOR UPDATE
     // to ensure consistency through table row lock
     $sql = "SELECT * FROM " . TransferPeer::TABLE_NAME . " WHERE" . " member_id = :member_id AND" . " currency = :currency AND" . " state in (" . Transfer::STATE_COLLECT . ", " . Transfer::STATE_RESERVED . ")" . " ORDER BY state desc" . " FOR UPDATE";
     $stmt = $con->prepare($sql);
     $stmt->execute(array(':member_id' => $this->getId(), ':currency' => $currency));
     $formatter = new PropelObjectFormatter();
     $formatter->setClass('Transfer');
     $transfer = $formatter->format($stmt);
     if (count($transfer) > 0) {
         $transfer = $transfer[0];
     } else {
         $transfer = null;
     }
     if (!$transfer) {
         $transfer = new Transfer();
         $transfer->setMember($this);
         $transfer->setCurrency($currency);
         if (!$this->hadPaid()) {
             $transfer->setState(Transfer::STATE_RESERVED);
         }
     }
     return $transfer;
 }