Version Notes
Added email address verification at the point of referral code usage.
Download this release
Release Info
| Developer | RewardStream |
| Extension | RewardStream_ReferAFriend |
| Version | 1.3.0 |
| Comparing to | |
| See all releases | |
Code changes from version 1.2.0 to 1.3.0
app/code/community/Rewardstream/Referafriend/Model/Observer.php
CHANGED
|
@@ -73,6 +73,91 @@ class Rewardstream_Referafriend_Model_Observer
|
|
| 73 |
|
| 74 |
}
|
| 75 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 76 |
/**
|
| 77 |
* Redeem code (POST to RewardStream API). Handles both offer codes and reward codes
|
| 78 |
*
|
| 73 |
|
| 74 |
}
|
| 75 |
|
| 76 |
+
/**
|
| 77 |
+
* Check if the user of the coupon code is the correct user
|
| 78 |
+
*/
|
| 79 |
+
public function validateCouponCodeEmail( Varien_Event_Observer $observer ){
|
| 80 |
+
$status = Mage::getStoreConfig( 'rewardstream_options/section_one/rewardstream_status' );
|
| 81 |
+
|
| 82 |
+
if ( $status == 1 ) {
|
| 83 |
+
$quote = $observer->getQuote();
|
| 84 |
+
$couponCode = $quote->getCouponCode();
|
| 85 |
+
|
| 86 |
+
// Is the coupon code used by the correct user?
|
| 87 |
+
if ( $couponCode && substr( $couponCode, 0, 3 ) === 'ref' && Mage::getSingleton('customer/session')->isLoggedIn()) {
|
| 88 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
| 89 |
+
$responseData = $this->getOfferCode($couponCode);
|
| 90 |
+
|
| 91 |
+
if ($responseData['Referee']['Email'] !== $customer->getEmail()) {
|
| 92 |
+
Mage::getSingleton( 'checkout/session' )->addError( 'You are not eligible to use this coupon code.' );
|
| 93 |
+
$quote->setCouponCode('');
|
| 94 |
+
$quote->collectTotals()->save();
|
| 95 |
+
}
|
| 96 |
+
}
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
+
return $this;
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
/**
|
| 103 |
+
* Check if the user of the coupon code is the correct user
|
| 104 |
+
*/
|
| 105 |
+
public function validateCouponCodeEmail_BeforePlacingOrder( Varien_Event_Observer $observer ){
|
| 106 |
+
$status = Mage::getStoreConfig( 'rewardstream_options/section_one/rewardstream_status' );
|
| 107 |
+
|
| 108 |
+
if ( $status == 1 ) {
|
| 109 |
+
$order = $observer->getEvent()->getOrder();
|
| 110 |
+
$email = $order->getCustomerEmail();
|
| 111 |
+
$couponCode = $order->getCouponCode();
|
| 112 |
+
|
| 113 |
+
// Is the coupon code used by the correct user?
|
| 114 |
+
if ( $couponCode && substr( $couponCode, 0, 3 ) === 'ref') {
|
| 115 |
+
$responseData = $this->getOfferCode($couponCode);
|
| 116 |
+
|
| 117 |
+
if ($responseData['Referee']['Email'] !== $email) {
|
| 118 |
+
Mage::throwException("You are not eligible to use this coupon code.");
|
| 119 |
+
}
|
| 120 |
+
}
|
| 121 |
+
}
|
| 122 |
+
|
| 123 |
+
return $this;
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
/**
|
| 127 |
+
* Check if the user has coupon code on login at checkout/onepage
|
| 128 |
+
*/
|
| 129 |
+
public function validateCouponCodeEmail_customerLogin( Varien_Event_Observer $observer ) {
|
| 130 |
+
$status = Mage::getStoreConfig( 'rewardstream_options/section_one/rewardstream_status' );
|
| 131 |
+
|
| 132 |
+
if ( $status == 1 ) {
|
| 133 |
+
$quote = Mage::getSingleton('checkout/session')->getQuote();
|
| 134 |
+
$couponCode = $quote->getCouponCode();
|
| 135 |
+
|
| 136 |
+
// Is the coupon code used by the correct user?
|
| 137 |
+
if ( $couponCode && substr( $couponCode, 0, 3 ) === 'ref' && Mage::getSingleton('customer/session')->isLoggedIn()) {
|
| 138 |
+
$customer = Mage::getSingleton('customer/session')->getCustomer();
|
| 139 |
+
$responseData = $this->getOfferCode($couponCode);
|
| 140 |
+
|
| 141 |
+
if ($responseData['Referee']['Email'] !== $customer->getEmail()) {
|
| 142 |
+
$quote->setCouponCode('');
|
| 143 |
+
$quote->collectTotals()->save();
|
| 144 |
+
}
|
| 145 |
+
}
|
| 146 |
+
}
|
| 147 |
+
}
|
| 148 |
+
|
| 149 |
+
private function getOfferCode($couponCode) {
|
| 150 |
+
$helper = Mage::helper( 'rewardstream' );
|
| 151 |
+
$apiurl = 'https://' . Mage::getStoreConfig( 'rewardstream_options/section_one/rewardstream_api_url' );
|
| 152 |
+
$apiKey = Mage::getStoreConfig( 'rewardstream_options/section_one/rewardstream_api_key' );
|
| 153 |
+
$secretKey = Mage::getStoreConfig( 'rewardstream_options/section_one/rewardstream_secret_key' );
|
| 154 |
+
|
| 155 |
+
$result = $helper->getDataCallAPI( $apiurl . '/api/v2/custom/getOffer?api_key=' . $apiKey . '&code=' . $couponCode, "GET", false, "Basic " . $secretKey );
|
| 156 |
+
$responseData = json_decode( $result, true );
|
| 157 |
+
|
| 158 |
+
return $responseData;
|
| 159 |
+
}
|
| 160 |
+
|
| 161 |
/**
|
| 162 |
* Redeem code (POST to RewardStream API). Handles both offer codes and reward codes
|
| 163 |
*
|
app/code/community/Rewardstream/Referafriend/etc/config.xml
CHANGED
|
@@ -81,8 +81,31 @@
|
|
| 81 |
<class>rewardstream/observer</class>
|
| 82 |
<method>createDiscountCode</method>
|
| 83 |
</rewardstream_observers_sales_quote_collect_totals_after>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 84 |
</observers>
|
| 85 |
</sales_quote_collect_totals_before>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
</events>
|
| 87 |
</global>
|
| 88 |
<adminhtml>
|
| 81 |
<class>rewardstream/observer</class>
|
| 82 |
<method>createDiscountCode</method>
|
| 83 |
</rewardstream_observers_sales_quote_collect_totals_after>
|
| 84 |
+
<rewardstream_observers_validate_coupon_code>
|
| 85 |
+
<type>singleton</type>
|
| 86 |
+
<class>rewardstream/observer</class>
|
| 87 |
+
<method>validateCouponCodeEmail</method>
|
| 88 |
+
</rewardstream_observers_validate_coupon_code>
|
| 89 |
</observers>
|
| 90 |
</sales_quote_collect_totals_before>
|
| 91 |
+
<sales_order_place_before>
|
| 92 |
+
<observers>
|
| 93 |
+
<rewardstream_observers_validate_coupon_code_before_placing_order>
|
| 94 |
+
<type>singleton</type>
|
| 95 |
+
<class>rewardstream/observer</class>
|
| 96 |
+
<method>validateCouponCodeEmail_BeforePlacingOrder</method>
|
| 97 |
+
</rewardstream_observers_validate_coupon_code_before_placing_order>
|
| 98 |
+
</observers>
|
| 99 |
+
</sales_order_place_before>
|
| 100 |
+
<controller_action_predispatch_checkout_onepage_index>
|
| 101 |
+
<observers>
|
| 102 |
+
<rewardstream_observers_validate_coupon_code_on_login>
|
| 103 |
+
<type>singleton</type>
|
| 104 |
+
<class>rewardstream/observer</class>
|
| 105 |
+
<method>validateCouponCodeEmail_customerLogin</method>
|
| 106 |
+
</rewardstream_observers_validate_coupon_code_on_login>
|
| 107 |
+
</observers>
|
| 108 |
+
</controller_action_predispatch_checkout_onepage_index>
|
| 109 |
</events>
|
| 110 |
</global>
|
| 111 |
<adminhtml>
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>RewardStream_ReferAFriend</name>
|
| 4 |
-
<version>1.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://www.rewardstream.com/magento/license">RewardStream Software License Agreement</license>
|
| 7 |
<channel>community</channel>
|
|
@@ -9,13 +9,11 @@
|
|
| 9 |
<summary>Get new customers by adding a fully automated word-of-mouth customer referral marketing solution to your store</summary>
|
| 10 |
<description>Get new sales using the Refer A Friend extension. Launch a fully automated referral marketing program on your store with little-to-no IT. Customers can refer their friends and family to bring you new business. Automatically reward your existing customers for successful referrals and incentivize your new customers with special referral offers. Refer a Friend is a free Magento Extension and requires a paid service account with RewardStream.
|
| 11 |
</description>
|
| 12 |
-
<notes>
|
| 13 |
-
Added support for automatically generated reward codes.
|
| 14 |
-
Stability improvements.</notes>
|
| 15 |
<authors><author><name>RewardStream</name><user>RewardStream</user><email>plugin-support@rewardstream.com</email></author></authors>
|
| 16 |
-
<date>2017-03-
|
| 17 |
-
<time>
|
| 18 |
-
<contents><target name="magecommunity"><dir name="Rewardstream"><dir name="Referafriend"><dir name="Block"><file name="Button.php" hash="2d412348e526ce8259cb767b5d795fd7"/><dir name="Customer"><dir name="Account"><file name="Navigation.php" hash="18a0c268359658bd7619ce7168159364"/></dir></dir><file name="Getstartedbutton.php" hash="7bfea148b21c68ea5228ff64f4d9991e"/><dir name="Sales"><dir name="Order"><file name="History.php" hash="880e07a11f94ceab5bd5e066a4cfa838"/><file name="Recent.php" hash="8c5c64cd158205a7a5bd053a3c7a3cf0"/></dir></dir><file name="Script.php" hash="13b06afd09fada61b761ea5ff4254ede"/></dir><dir name="Helper"><file name="Data.php" hash="6ac29ba1b21d0ca246df13a216da649e"/></dir><dir name="Model"><file name="Observer.php" hash="
|
| 19 |
<compatible/>
|
| 20 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php><package><name>Mage_Core_Modules</name><channel>community</channel><min>1.5.0.0</min><max>1.9</max></package></required></dependencies>
|
| 21 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>RewardStream_ReferAFriend</name>
|
| 4 |
+
<version>1.3.0</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://www.rewardstream.com/magento/license">RewardStream Software License Agreement</license>
|
| 7 |
<channel>community</channel>
|
| 9 |
<summary>Get new customers by adding a fully automated word-of-mouth customer referral marketing solution to your store</summary>
|
| 10 |
<description>Get new sales using the Refer A Friend extension. Launch a fully automated referral marketing program on your store with little-to-no IT. Customers can refer their friends and family to bring you new business. Automatically reward your existing customers for successful referrals and incentivize your new customers with special referral offers. Refer a Friend is a free Magento Extension and requires a paid service account with RewardStream.
|
| 11 |
</description>
|
| 12 |
+
<notes>Added email address verification at the point of referral code usage.</notes>
|
|
|
|
|
|
|
| 13 |
<authors><author><name>RewardStream</name><user>RewardStream</user><email>plugin-support@rewardstream.com</email></author></authors>
|
| 14 |
+
<date>2017-03-23</date>
|
| 15 |
+
<time>22:54:23</time>
|
| 16 |
+
<contents><target name="magecommunity"><dir name="Rewardstream"><dir name="Referafriend"><dir name="Block"><file name="Button.php" hash="2d412348e526ce8259cb767b5d795fd7"/><dir name="Customer"><dir name="Account"><file name="Navigation.php" hash="18a0c268359658bd7619ce7168159364"/></dir></dir><file name="Getstartedbutton.php" hash="7bfea148b21c68ea5228ff64f4d9991e"/><dir name="Sales"><dir name="Order"><file name="History.php" hash="880e07a11f94ceab5bd5e066a4cfa838"/><file name="Recent.php" hash="8c5c64cd158205a7a5bd053a3c7a3cf0"/></dir></dir><file name="Script.php" hash="13b06afd09fada61b761ea5ff4254ede"/></dir><dir name="Helper"><file name="Data.php" hash="6ac29ba1b21d0ca246df13a216da649e"/></dir><dir name="Model"><file name="Observer.php" hash="4746e23be32ae60c3b21c271ce68b0ac"/><file name="Options.php" hash="1c4fa6b3e55cec4b096ebbaedacacb19"/><dir name="Resource"><dir name="Rewardstream"><file name="Collection.php" hash="aeeb1df3e3eb6bdeadce8aa29d98eea5"/></dir><file name="Rewardstream.php" hash="8fe9853ebbad43796b683582db550620"/></dir><file name="Rewardstream.php" hash="884edc2f2bd98d5794c9c2bd6b84b9a8"/></dir><dir name="controllers"><file name="CartController.php" hash="e8dd6101f0e36eeb4cde1931dc2e461f"/><file name="IndexController.php" hash="d3429574e292d9c7b9c55c6a060bcb30"/></dir><dir name="data"><dir name="rewardstream_setup"><file name="data-install-0.1.0.php" hash="ffa670c6e00b15f7197e017017aa5ac2"/></dir></dir><dir name="etc"><file name="config.xml" hash="1d3ec6297d24179b7d213fc1aa4c11a1"/><file name="system.xml" hash="4c382d84ff7c7ce434465593057132ba"/></dir><dir name="sql"><dir name="rewardstream_setup"><file name="install-0.1.0.php" hash="2ff36a8226dba730c568ce7bd5328b76"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="rewardstream.xml" hash="4c9a4575f0d44847032614368cf3924e"/></dir><dir name="template"><dir name="rewardstream"><file name="blockreward.phtml" hash="82e9d4d7d5592b40a9ada2ce3c8e1996"/><file name="general_script.phtml" hash="9386936cd1df44ccecb185e510417736"/><file name="rewardstream.phtml" hash="6f628a6916b1fffed4794276cd7c084d"/><file name="script.phtml" hash="a37b6436daeeb70f73c8dd03930ce1f9"/></dir></dir></dir></dir><dir name="rwd"><dir name="default"><dir name="layout"><file name="rewardstream.xml" hash="9453c01a065a609ba6b30e3e7420c97f"/></dir><dir name="template"><dir name="rewardstream"><file name="blockreward.phtml" hash="82e9d4d7d5592b40a9ada2ce3c8e1996"/><file name="general_script.phtml" hash="9386936cd1df44ccecb185e510417736"/><file name="rewardstream.phtml" hash="6f628a6916b1fffed4794276cd7c084d"/><file name="script.phtml" hash="a37b6436daeeb70f73c8dd03930ce1f9"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="RewardStream_ReferAFriend.xml" hash="d08d3aa024b2616e3a3792aeac0bc3cb"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="rewardstream"><dir name="css"><file name="rewardstream.css" hash="14e0164315bb6fec5354b331009b9793"/></dir></dir></dir></dir><dir name="rwd"><dir name="default"><dir name="rewardstream"><dir name="css"><file name="rewardstream.css" hash="14e0164315bb6fec5354b331009b9793"/></dir></dir></dir></dir></dir></target><target name="magemedia"><dir name="wysiwyg"><dir name="rewardstream"><file name="loading.gif" hash="dbd0f12f50cc2b56e2bce7daa36d00d0"/><file name="rewardstream-magento-store-default-image.jpg" hash="66004f46b67bbb30c8d4cd7e5fff1fa1"/><file name="sharing-is-caring.jpg" hash="079db8066ed86203bd78c52b20d6163e"/></dir></dir></target><target name="mageweb"><dir name="js"><dir name="rewardstream"><file name="RSUtility.js" hash="c56b4d2ca75647f8708ad59e6382e300"/><file name="jquery-1.10.2.min.js" hash="841dc30647f93349b7d8ef61deebe411"/><file name="noconflict.js" hash="12f820da0f5ba19abfb4f5fc270bb62c"/></dir></dir></target></contents>
|
| 17 |
<compatible/>
|
| 18 |
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php><package><name>Mage_Core_Modules</name><channel>community</channel><min>1.5.0.0</min><max>1.9</max></package></required></dependencies>
|
| 19 |
</package>
|
