/** * Manages the after_save observer * @param Varien_Event_Observer $o * @return TBT_Rewards_Model_Tag_Observer */ public function afterSaveTag(Varien_Event_Observer $o) { $tag = $this->_wrapperModel->wrap($o->getEvent()->getDataObject()); //If the tag becomes approved, approve all associated pending tranfser if ($this->oldData['status'] == Mage_Tag_Model_Tag::STATUS_PENDING && $tag->getTag()->getStatus() == Mage_Tag_Model_Tag::STATUS_APPROVED) { $tag->approvePendingTransfers(); } elseif ($this->oldData['status'] == Mage_Tag_Model_Tag::STATUS_PENDING && $tag->getTag()->getStatus() == Mage_Tag_Model_Tag::STATUS_DISABLED) { $tag->discardPendingTransfers(); //If the tag is new (hence not having an id before) get applicable rules, //and create a pending transfer for each one } elseif ($tag->getTag()->getTagId() && !isset($this->oldData['tag_id'])) { $tag->ifNewTag(); } return $this; }
/** * Do the points transfer for the tag * * @param TBT_Rewards_Model_Tag_Wrapper $tag * @param int $rule : Special Rule * @return boolean : whether or not the point-transfer succeeded */ public function transferTagPoints($tag, $rule) { $num_points = $rule->getPointsAmount(); $currency_id = $rule->getPointsCurrencyId(); $tag_id = $tag->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')->getInitialTransferStatusAfterTag())) { return false; } $transfer->setTagId($tag_id)->setCustomerId(Mage::getModel('tag/tag')->load($tag_id)->getFirstCustomerId())->setComments(Mage::getStoreConfig('rewards/transferComments/tagEarned'))->save(); return true; }