示例#1
0
 /**
  * Manages the after_save observer
  * @param Varien_Event_Observer $o
  * @return TBT_Rewards_Model_Review_Observer
  */
 public function afterSaveReview(Varien_Event_Observer $o)
 {
     $review = $this->_wrapperModel->wrap($o->getEvent()->getDataObject());
     //If the review becomes approved, approve all associated pending tranfser
     if ($this->oldData['status_id'] == Mage_Review_Model_Review::STATUS_PENDING && $review->isApproved()) {
         $review->approvePendingTransfers();
     } elseif ($this->oldData['status_id'] == Mage_Review_Model_Review::STATUS_PENDING && $review->isNotApproved()) {
         $review->discardPendingTransfers();
         //If the review is new (hence not having an id before) get applicable rules,
         //and create a pending transfer for each one
     } elseif ($review->getReview()->getReviewId() && !isset($this->oldData['review_id'])) {
         $review->ifNewReview();
     }
     return $this;
 }
示例#2
0
 /**
  * Do the points transfer for the review
  *
  * @param  TBT_Rewards_Model_Review_Wrapper $review
  * @param  int $rule       : Special Rule
  * @return boolean            : whether or not the point-transfer succeeded
  */
 public function transferReviewPoints($review, $rule)
 {
     $num_points = $rule->getPointsAmount();
     $currency_id = $rule->getPointsCurrencyId();
     $review_id = $review->getId();
     $rule_id = $rule->getId();
     $transfer = $this->initTransfer($num_points, $currency_id, $rule_id);
     if (!$transfer) {
         return false;
     }
     // get the default starting status - usually Pending
     if (!$transfer->setStatus(null, Mage::helper('rewards/config')->getInitialTransferStatusAfterReview())) {
         // we tried to use an invalid status... is getInitialTransferStatusAfterReview() improper ??
         return false;
     }
     $transfer->setReviewId($review_id)->setComments(Mage::getStoreConfig('rewards/transferComments/reviewOrRatingEarned'))->setCustomerId(Mage::getModel('review/review')->load($review_id)->getCustomerId())->save();
     return true;
 }