Auto_Reviews - Version 1.0.0

Version Notes

Auto approves product reviews based on customer type.

Download this release

Release Info

Developer BrainSINS
Extension Auto_Reviews
Version 1.0.0
Comparing to
See all releases


Version 1.0.0

app/code/community/Exinent/Autoapprovereviews/Helper/Data.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Exinent_Autoapprovereviews_Helper_Data extends Mage_Core_Helper_Abstract
4
+ {
5
+
6
+ const XML_REVIEW_REG_ALLOW = 'autoapprovereviews_settings/autoapprovegroup/autoapprove_enabled';
7
+ const XML_REVIEW_CUSTOMER_LOGGEDIN = 'autoapprovereviews_settings/autoapprovegroup/login_review';
8
+ public function isAutoApproveEnabled() {
9
+
10
+ return Mage::getStoreConfigFlag(self::XML_REVIEW_REG_ALLOW);
11
+
12
+ }
13
+
14
+ public function customerGroup() {
15
+
16
+ $groups = explode(',', Mage::getStoreConfig(self::XML_REVIEW_CUSTOMER_LOGGEDIN));
17
+
18
+ return $groups;
19
+
20
+ }
21
+ }
app/code/community/Exinent/Autoapprovereviews/Model/Adminhtml/System/Config/Source/Customer/Group/Multiselect.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Exinent_Autoapprovereviews_Model_Adminhtml_System_Config_Source_Customer_Group_Multiselect
3
+ {
4
+ protected $_options;
5
+
6
+ public function toOptionArray() {
7
+ if (!$this->_options) {
8
+ $this->_options = Mage::getResourceModel('customer/group_collection')
9
+ ->setRealGroupsFilter()
10
+ ->loadData()->toOptionArray();
11
+ array_unshift($this->_options, array('value' => '', 'label' => Mage::helper('adminhtml')->__('No Group Selected')));
12
+ }
13
+ return $this->_options;
14
+ }
15
+
16
+ }
app/code/community/Exinent/Autoapprovereviews/Model/Adminhtml/System/Config/Source/Customer/Group/Multiselect.php~ ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Exinent_Autoapprovereviews_Model_Adminhtml_System_Config_Source_Customer_Group_Multiselect
3
+ {
4
+ protected $_options;
5
+
6
+ public function toOptionArray() {
7
+ if (!$this->_options) {
8
+ $this->_options = Mage::getResourceModel('customer/group_collection')
9
+ ->setRealGroupsFilter()
10
+ ->loadData()->toOptionArray();
11
+ array_unshift($this->_options, array('value' => '', 'label' => Mage::helper('adminhtml')->__('No Group Selected')));
12
+ }
13
+ return $this->_options;
14
+ }
15
+
16
+ }
app/code/community/Exinent/Autoapprovereviews/controllers/AutoController.php~ ADDED
@@ -0,0 +1,279 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Exinent_Autoapprovereviews_AutoController extends Mage_Core_Controller_Front_Action {
3
+
4
+ /**
5
+ * Action list where need check enabled cookie
6
+ *
7
+ * @var array
8
+ */
9
+ protected $_cookieCheckActions = array('post');
10
+
11
+ public function preDispatch()
12
+ {
13
+ parent::preDispatch();
14
+
15
+ $allowGuest = Mage::helper('review')->getIsGuestAllowToWrite();
16
+ if (!$this->getRequest()->isDispatched()) {
17
+ return;
18
+ }
19
+
20
+ $action = $this->getRequest()->getActionName();
21
+ if (!$allowGuest && $action == 'post' && $this->getRequest()->isPost()) {
22
+ if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
23
+ $this->setFlag('', self::FLAG_NO_DISPATCH, true);
24
+ Mage::getSingleton('customer/session')->setBeforeAuthUrl(Mage::getUrl('*/*/*', array('_current' => true)));
25
+ Mage::getSingleton('review/session')->setFormData($this->getRequest()->getPost())
26
+ ->setRedirectUrl($this->_getRefererUrl());
27
+ $this->_redirectUrl(Mage::helper('customer')->getLoginUrl());
28
+ }
29
+ }
30
+
31
+ return $this;
32
+ }
33
+ /**
34
+ * Initialize and check product
35
+ *
36
+ * @return Mage_Catalog_Model_Product
37
+ */
38
+ protected function _initProduct()
39
+ {
40
+ Mage::dispatchEvent('review_controller_product_init_before', array('controller_action'=>$this));
41
+ $categoryId = (int) $this->getRequest()->getParam('category', false);
42
+ $productId = (int) $this->getRequest()->getParam('id');
43
+
44
+ $product = $this->_loadProduct($productId);
45
+ if (!$product) {
46
+ return false;
47
+ }
48
+
49
+ if ($categoryId) {
50
+ $category = Mage::getModel('catalog/category')->load($categoryId);
51
+ Mage::register('current_category', $category);
52
+ }
53
+
54
+ try {
55
+ Mage::dispatchEvent('review_controller_product_init', array('product'=>$product));
56
+ Mage::dispatchEvent('review_controller_product_init_after', array(
57
+ 'product' => $product,
58
+ 'controller_action' => $this
59
+ ));
60
+ } catch (Mage_Core_Exception $e) {
61
+ Mage::logException($e);
62
+ return false;
63
+ }
64
+
65
+ return $product;
66
+ }
67
+
68
+ /**
69
+ * Load product model with data by passed id.
70
+ * Return false if product was not loaded or has incorrect status.
71
+ *
72
+ * @param int $productId
73
+ * @return bool|Mage_Catalog_Model_Product
74
+ */
75
+ protected function _loadProduct($productId)
76
+ {
77
+ if (!$productId) {
78
+ return false;
79
+ }
80
+
81
+ $product = Mage::getModel('catalog/product')
82
+ ->setStoreId(Mage::app()->getStore()->getId())
83
+ ->load($productId);
84
+ /* @var $product Mage_Catalog_Model_Product */
85
+ if (!$product->getId() || !$product->isVisibleInCatalog() || !$product->isVisibleInSiteVisibility()) {
86
+ return false;
87
+ }
88
+
89
+ Mage::register('current_product', $product);
90
+ Mage::register('product', $product);
91
+
92
+ return $product;
93
+ }
94
+
95
+ /**
96
+ * Load review model with data by passed id.
97
+ * Return false if review was not loaded or review is not approved.
98
+ *
99
+ * @param int $productId
100
+ * @return bool|Mage_Review_Model_Review
101
+ */
102
+ protected function _loadReview($reviewId)
103
+ {
104
+ if (!$reviewId) {
105
+ return false;
106
+ }
107
+
108
+ $review = Mage::getModel('review/review')->load($reviewId);
109
+ /* @var $review Mage_Review_Model_Review */
110
+ if (!$review->getId() || !$review->isApproved() || !$review->isAvailableOnStore(Mage::app()->getStore())) {
111
+ return false;
112
+ }
113
+
114
+ Mage::register('current_review', $review);
115
+
116
+ return $review;
117
+ }
118
+
119
+ /**
120
+ * Submit new review action
121
+ *
122
+ */
123
+ public function postAction()
124
+ {
125
+
126
+ echo "phani";
127
+ if (!$this->_validateFormKey()) {
128
+ // returns to the product item page
129
+ $this->_redirectReferer();
130
+ return;
131
+ }
132
+
133
+ if ($data = Mage::getSingleton('review/session')->getFormData(true)) {
134
+ $rating = array();
135
+ if (isset($data['ratings']) && is_array($data['ratings'])) {
136
+ $rating = $data['ratings'];
137
+ }
138
+ } else {
139
+ $data = $this->getRequest()->getPost();
140
+ $rating = $this->getRequest()->getParam('ratings', array());
141
+ }
142
+
143
+ if (($product = $this->_initProduct()) && !empty($data)) {
144
+ $session = Mage::getSingleton('core/session');
145
+ /* @var $session Mage_Core_Model_Session */
146
+ $review = Mage::getModel('review/review')->setData($data);
147
+ /* @var $review Mage_Review_Model_Review */
148
+
149
+ $validate = $review->validate();
150
+ if ($validate === true) {
151
+ try {
152
+ $review->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
153
+ ->setEntityPkValue($product->getId())
154
+ ->setStatusId(Mage_Review_Model_Review::STATUS_PENDING)
155
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
156
+ ->setStoreId(Mage::app()->getStore()->getId())
157
+ ->setStores(array(Mage::app()->getStore()->getId()))
158
+ ->save();
159
+
160
+ foreach ($rating as $ratingId => $optionId) {
161
+ Mage::getModel('rating/rating')
162
+ ->setRatingId($ratingId)
163
+ ->setReviewId($review->getId())
164
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
165
+ ->addOptionVote($optionId, $product->getId());
166
+ }
167
+
168
+ $review->aggregate();
169
+ $session->addSuccess($this->__('Your review has been accepted for moderation.'));
170
+ }
171
+ catch (Exception $e) {
172
+ $session->setFormData($data);
173
+ $session->addError($this->__('Unable to post the review.'));
174
+ }
175
+ }
176
+ else {
177
+ $session->setFormData($data);
178
+ if (is_array($validate)) {
179
+ foreach ($validate as $errorMessage) {
180
+ $session->addError($errorMessage);
181
+ }
182
+ }
183
+ else {
184
+ $session->addError($this->__('Unable to post the review.'));
185
+ }
186
+ }
187
+ }
188
+
189
+ if ($redirectUrl = Mage::getSingleton('review/session')->getRedirectUrl(true)) {
190
+ $this->_redirectUrl($redirectUrl);
191
+ return;
192
+ }
193
+ $this->_redirectReferer();
194
+ }
195
+
196
+ /**
197
+ * Show list of product's reviews
198
+ *
199
+ */
200
+ public function listAction()
201
+ {
202
+ if ($product = $this->_initProduct()) {
203
+ Mage::register('productId', $product->getId());
204
+
205
+ $design = Mage::getSingleton('catalog/design');
206
+ $settings = $design->getDesignSettings($product);
207
+ if ($settings->getCustomDesign()) {
208
+ $design->applyCustomDesign($settings->getCustomDesign());
209
+ }
210
+ $this->_initProductLayout($product);
211
+
212
+ // update breadcrumbs
213
+ if ($breadcrumbsBlock = $this->getLayout()->getBlock('breadcrumbs')) {
214
+ $breadcrumbsBlock->addCrumb('product', array(
215
+ 'label' => $product->getName(),
216
+ 'link' => $product->getProductUrl(),
217
+ 'readonly' => true,
218
+ ));
219
+ $breadcrumbsBlock->addCrumb('reviews', array('label' => Mage::helper('review')->__('Product Reviews')));
220
+ }
221
+
222
+ $this->renderLayout();
223
+ } elseif (!$this->getResponse()->isRedirect()) {
224
+ $this->_forward('noRoute');
225
+ }
226
+ }
227
+
228
+ /**
229
+ * Show details of one review
230
+ *
231
+ */
232
+ public function viewAction()
233
+ {
234
+ $review = $this->_loadReview((int) $this->getRequest()->getParam('id'));
235
+ if (!$review) {
236
+ $this->_forward('noroute');
237
+ return;
238
+ }
239
+
240
+ $product = $this->_loadProduct($review->getEntityPkValue());
241
+ if (!$product) {
242
+ $this->_forward('noroute');
243
+ return;
244
+ }
245
+
246
+ $this->loadLayout();
247
+ $this->_initLayoutMessages('review/session');
248
+ $this->_initLayoutMessages('catalog/session');
249
+ $this->renderLayout();
250
+ }
251
+
252
+ /**
253
+ * Load specific layout handles by product type id
254
+ *
255
+ */
256
+ protected function _initProductLayout($product)
257
+ {
258
+ $update = $this->getLayout()->getUpdate();
259
+
260
+ $update->addHandle('default');
261
+ $this->addActionLayoutHandles();
262
+
263
+
264
+ $update->addHandle('PRODUCT_TYPE_'.$product->getTypeId());
265
+
266
+ if ($product->getPageLayout()) {
267
+ $this->getLayout()->helper('page/layout')
268
+ ->applyHandle($product->getPageLayout());
269
+ }
270
+
271
+ $this->loadLayoutUpdates();
272
+ if ($product->getPageLayout()) {
273
+ $this->getLayout()->helper('page/layout')
274
+ ->applyTemplate($product->getPageLayout());
275
+ }
276
+ $update->addUpdate($product->getCustomLayoutUpdate());
277
+ $this->generateLayoutXml()->generateLayoutBlocks();
278
+ }
279
+ }
app/code/community/Exinent/Autoapprovereviews/controllers/ProductController.php ADDED
@@ -0,0 +1,388 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Exinent_Autoapprovereviews_ProductController extends Mage_Core_Controller_Front_Action {
3
+
4
+ /**
5
+ * Action list where need check enabled cookie
6
+ *
7
+ * @var array
8
+ */
9
+ protected $_cookieCheckActions = array('post');
10
+
11
+ public function preDispatch()
12
+ {
13
+ parent::preDispatch();
14
+
15
+ $allowGuest = Mage::helper('review')->getIsGuestAllowToWrite();
16
+ if (!$this->getRequest()->isDispatched()) {
17
+ return;
18
+ }
19
+
20
+ $action = $this->getRequest()->getActionName();
21
+ if (!$allowGuest && $action == 'post' && $this->getRequest()->isPost()) {
22
+ if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
23
+ $this->setFlag('', self::FLAG_NO_DISPATCH, true);
24
+ Mage::getSingleton('customer/session')->setBeforeAuthUrl(Mage::getUrl('*/*/*', array('_current' => true)));
25
+ Mage::getSingleton('review/session')->setFormData($this->getRequest()->getPost())
26
+ ->setRedirectUrl($this->_getRefererUrl());
27
+ $this->_redirectUrl(Mage::helper('customer')->getLoginUrl());
28
+ }
29
+ }
30
+
31
+ return $this;
32
+ }
33
+ /**
34
+ * Initialize and check product
35
+ *
36
+ * @return Mage_Catalog_Model_Product
37
+ */
38
+ protected function _initProduct()
39
+ {
40
+ Mage::dispatchEvent('review_controller_product_init_before', array('controller_action'=>$this));
41
+ $categoryId = (int) $this->getRequest()->getParam('category', false);
42
+ $productId = (int) $this->getRequest()->getParam('id');
43
+
44
+ $product = $this->_loadProduct($productId);
45
+ if (!$product) {
46
+ return false;
47
+ }
48
+
49
+ if ($categoryId) {
50
+ $category = Mage::getModel('catalog/category')->load($categoryId);
51
+ Mage::register('current_category', $category);
52
+ }
53
+
54
+ try {
55
+ Mage::dispatchEvent('review_controller_product_init', array('product'=>$product));
56
+ Mage::dispatchEvent('review_controller_product_init_after', array(
57
+ 'product' => $product,
58
+ 'controller_action' => $this
59
+ ));
60
+ } catch (Mage_Core_Exception $e) {
61
+ Mage::logException($e);
62
+ return false;
63
+ }
64
+
65
+ return $product;
66
+ }
67
+
68
+ /**
69
+ * Load product model with data by passed id.
70
+ * Return false if product was not loaded or has incorrect status.
71
+ *
72
+ * @param int $productId
73
+ * @return bool|Mage_Catalog_Model_Product
74
+ */
75
+ protected function _loadProduct($productId)
76
+ {
77
+ if (!$productId) {
78
+ return false;
79
+ }
80
+
81
+ $product = Mage::getModel('catalog/product')
82
+ ->setStoreId(Mage::app()->getStore()->getId())
83
+ ->load($productId);
84
+ /* @var $product Mage_Catalog_Model_Product */
85
+ if (!$product->getId() || !$product->isVisibleInCatalog() || !$product->isVisibleInSiteVisibility()) {
86
+ return false;
87
+ }
88
+
89
+ Mage::register('current_product', $product);
90
+ Mage::register('product', $product);
91
+
92
+ return $product;
93
+ }
94
+
95
+ /**
96
+ * Load review model with data by passed id.
97
+ * Return false if review was not loaded or review is not approved.
98
+ *
99
+ * @param int $productId
100
+ * @return bool|Mage_Review_Model_Review
101
+ */
102
+ protected function _loadReview($reviewId)
103
+ {
104
+ if (!$reviewId) {
105
+ return false;
106
+ }
107
+
108
+ $review = Mage::getModel('review/review')->load($reviewId);
109
+ /* @var $review Mage_Review_Model_Review */
110
+ if (!$review->getId() || !$review->isApproved() || !$review->isAvailableOnStore(Mage::app()->getStore())) {
111
+ return false;
112
+ }
113
+
114
+ Mage::register('current_review', $review);
115
+
116
+ return $review;
117
+ }
118
+
119
+ /**
120
+ * Submit new review action
121
+ *
122
+ */
123
+ public function postAction()
124
+ {
125
+ if (!$this->_validateFormKey()) {
126
+ // returns to the product item page
127
+ $this->_redirectReferer();
128
+ return;
129
+ }
130
+
131
+ if ($data = Mage::getSingleton('review/session')->getFormData(true)) {
132
+ $rating = array();
133
+ if (isset($data['ratings']) && is_array($data['ratings'])) {
134
+ $rating = $data['ratings'];
135
+ }
136
+ } else {
137
+ $data = $this->getRequest()->getPost();
138
+ $rating = $this->getRequest()->getParam('ratings', array());
139
+ }
140
+
141
+ $regulerLogin = Mage::helper('autoapprovereviews')->isAutoApproveEnabled();
142
+ $customerLogin = Mage::helper('autoapprovereviews')->customerGroup();
143
+ $groupId = Mage::getSingleton('customer/session')->getCustomerGroupId();
144
+ //print_r($customerLogin);die();
145
+ //$phani =Mage::getConfig()->getNode('autoapprovereviews_settings/autoapprovegroup/login_review');
146
+ //var_dump($phani[0]);die();
147
+ if(!$regulerLogin) {
148
+
149
+ if (($product = $this->_initProduct()) && !empty($data)) {
150
+ $session = Mage::getSingleton('core/session');
151
+ /* @var $session Mage_Core_Model_Session */
152
+ $review = Mage::getModel('review/review')->setData($data);
153
+ /* @var $review Mage_Review_Model_Review */
154
+
155
+ $validate = $review->validate();
156
+ if ($validate === true) {
157
+ try {
158
+ $review->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
159
+ ->setEntityPkValue($product->getId())
160
+ ->setStatusId(Mage_Review_Model_Review::STATUS_PENDING)
161
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
162
+ ->setStoreId(Mage::app()->getStore()->getId())
163
+ ->setStores(array(Mage::app()->getStore()->getId()))
164
+ ->save();
165
+
166
+ foreach ($rating as $ratingId => $optionId) {
167
+ Mage::getModel('rating/rating')
168
+ ->setRatingId($ratingId)
169
+ ->setReviewId($review->getId())
170
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
171
+ ->addOptionVote($optionId, $product->getId());
172
+ }
173
+
174
+ $review->aggregate();
175
+ $session->addSuccess($this->__('Your review has been accepted for moderation.'));
176
+ }
177
+ catch (Exception $e) {
178
+ $session->setFormData($data);
179
+ $session->addError($this->__('Unable to post the review.'));
180
+ }
181
+ }
182
+
183
+ else {
184
+ $session->setFormData($data);
185
+ if (is_array($validate)) {
186
+ foreach ($validate as $errorMessage) {
187
+ $session->addError($errorMessage);
188
+ }
189
+ }
190
+ else {
191
+ $session->addError($this->__('Unable to post the review.'));
192
+ }
193
+ }
194
+ }
195
+
196
+ }
197
+ else if( Mage::getSingleton( 'customer/session' )->isLoggedIn() && in_array($groupId, $customerLogin) ) {
198
+
199
+
200
+ if (($product = $this->_initProduct()) && !empty($data)) {
201
+ $session = Mage::getSingleton('core/session');
202
+ /* @var $session Mage_Core_Model_Session */
203
+ $review = Mage::getModel('review/review')->setData($data);
204
+ /* @var $review Mage_Review_Model_Review */
205
+
206
+ $validate = $review->validate();
207
+ if ($validate === true) {
208
+ try {
209
+ $review->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
210
+ ->setEntityPkValue($product->getId())
211
+ ->setStatusId(Mage_Review_Model_Review::STATUS_APPROVED)
212
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
213
+ ->setStoreId(Mage::app()->getStore()->getId())
214
+ ->setStores(array(Mage::app()->getStore()->getId()))
215
+ ->save();
216
+
217
+ foreach ($rating as $ratingId => $optionId) {
218
+ Mage::getModel('rating/rating')
219
+ ->setRatingId($ratingId)
220
+ ->setReviewId($review->getId())
221
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
222
+ ->addOptionVote($optionId, $product->getId());
223
+ }
224
+
225
+ $review->aggregate();
226
+ $session->addSuccess($this->__('Your review has been posted.'));
227
+ }
228
+ catch (Exception $e) {
229
+ $session->setFormData($data);
230
+ $session->addError($this->__('Unable to post the review.'));
231
+ }
232
+ }
233
+
234
+ else {
235
+ $session->setFormData($data);
236
+ if (is_array($validate)) {
237
+ foreach ($validate as $errorMessage) {
238
+ $session->addError($errorMessage);
239
+ }
240
+ }
241
+ else {
242
+ $session->addError($this->__('Unable to post the review.'));
243
+ }
244
+ }
245
+ }
246
+
247
+ }
248
+
249
+ else if(Mage::getSingleton( 'customer/session' )->isLoggedIn()) {
250
+ if (($product = $this->_initProduct()) && !empty($data)) {
251
+ $session = Mage::getSingleton('core/session');
252
+ /* @var $session Mage_Core_Model_Session */
253
+ $review = Mage::getModel('review/review')->setData($data);
254
+ /* @var $review Mage_Review_Model_Review */
255
+
256
+ $validate = $review->validate();
257
+ if ($validate === true) {
258
+ try {
259
+ $review->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
260
+ ->setEntityPkValue($product->getId())
261
+ ->setStatusId(Mage_Review_Model_Review::STATUS_PENDING)
262
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
263
+ ->setStoreId(Mage::app()->getStore()->getId())
264
+ ->setStores(array(Mage::app()->getStore()->getId()))
265
+ ->save();
266
+
267
+ foreach ($rating as $ratingId => $optionId) {
268
+ Mage::getModel('rating/rating')
269
+ ->setRatingId($ratingId)
270
+ ->setReviewId($review->getId())
271
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
272
+ ->addOptionVote($optionId, $product->getId());
273
+ }
274
+
275
+ $review->aggregate();
276
+ $session->addSuccess($this->__('Your review has been accepted for moderation.'));
277
+ }
278
+ catch (Exception $e) {
279
+ $session->setFormData($data);
280
+ $session->addError($this->__('Unable to post the review.'));
281
+ }
282
+ }
283
+
284
+ else {
285
+ $session->setFormData($data);
286
+ if (is_array($validate)) {
287
+ foreach ($validate as $errorMessage) {
288
+ $session->addError($errorMessage);
289
+ }
290
+ }
291
+ else {
292
+ $session->addError($this->__('Unable to post the review.'));
293
+ }
294
+ }
295
+ }
296
+
297
+ }
298
+ if ($redirectUrl = Mage::getSingleton('review/session')->getRedirectUrl(true)) {
299
+ $this->_redirectUrl($redirectUrl);
300
+ return;
301
+ }
302
+ $this->_redirectReferer();
303
+ }
304
+
305
+ /**
306
+ * Show list of product's reviews
307
+ *
308
+ */
309
+ public function listAction()
310
+ {
311
+ if ($product = $this->_initProduct()) {
312
+ Mage::register('productId', $product->getId());
313
+
314
+ $design = Mage::getSingleton('catalog/design');
315
+ $settings = $design->getDesignSettings($product);
316
+ if ($settings->getCustomDesign()) {
317
+ $design->applyCustomDesign($settings->getCustomDesign());
318
+ }
319
+ $this->_initProductLayout($product);
320
+
321
+ // update breadcrumbs
322
+ if ($breadcrumbsBlock = $this->getLayout()->getBlock('breadcrumbs')) {
323
+ $breadcrumbsBlock->addCrumb('product', array(
324
+ 'label' => $product->getName(),
325
+ 'link' => $product->getProductUrl(),
326
+ 'readonly' => true,
327
+ ));
328
+ $breadcrumbsBlock->addCrumb('reviews', array('label' => Mage::helper('review')->__('Product Reviews')));
329
+ }
330
+
331
+ $this->renderLayout();
332
+ } elseif (!$this->getResponse()->isRedirect()) {
333
+ $this->_forward('noRoute');
334
+ }
335
+ }
336
+
337
+ /**
338
+ * Show details of one review
339
+ *
340
+ */
341
+ public function viewAction()
342
+ {
343
+ $review = $this->_loadReview((int) $this->getRequest()->getParam('id'));
344
+ if (!$review) {
345
+ $this->_forward('noroute');
346
+ return;
347
+ }
348
+
349
+ $product = $this->_loadProduct($review->getEntityPkValue());
350
+ if (!$product) {
351
+ $this->_forward('noroute');
352
+ return;
353
+ }
354
+
355
+ $this->loadLayout();
356
+ $this->_initLayoutMessages('review/session');
357
+ $this->_initLayoutMessages('catalog/session');
358
+ $this->renderLayout();
359
+ }
360
+
361
+ /**
362
+ * Load specific layout handles by product type id
363
+ *
364
+ */
365
+ protected function _initProductLayout($product)
366
+ {
367
+ $update = $this->getLayout()->getUpdate();
368
+
369
+ $update->addHandle('default');
370
+ $this->addActionLayoutHandles();
371
+
372
+
373
+ $update->addHandle('PRODUCT_TYPE_'.$product->getTypeId());
374
+
375
+ if ($product->getPageLayout()) {
376
+ $this->getLayout()->helper('page/layout')
377
+ ->applyHandle($product->getPageLayout());
378
+ }
379
+
380
+ $this->loadLayoutUpdates();
381
+ if ($product->getPageLayout()) {
382
+ $this->getLayout()->helper('page/layout')
383
+ ->applyTemplate($product->getPageLayout());
384
+ }
385
+ $update->addUpdate($product->getCustomLayoutUpdate());
386
+ $this->generateLayoutXml()->generateLayoutBlocks();
387
+ }
388
+ }
app/code/community/Exinent/Autoapprovereviews/controllers/ProductController.php~ ADDED
@@ -0,0 +1,288 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ class Exinent_Autoapprovereviews_ProductController extends Mage_Core_Controller_Front_Action {
3
+
4
+ /**
5
+ * Action list where need check enabled cookie
6
+ *
7
+ * @var array
8
+ */
9
+ protected $_cookieCheckActions = array('post');
10
+
11
+ public function preDispatch()
12
+ {
13
+ parent::preDispatch();
14
+
15
+ $allowGuest = Mage::helper('review')->getIsGuestAllowToWrite();
16
+ if (!$this->getRequest()->isDispatched()) {
17
+ return;
18
+ }
19
+
20
+ $action = $this->getRequest()->getActionName();
21
+ if (!$allowGuest && $action == 'post' && $this->getRequest()->isPost()) {
22
+ if (!Mage::getSingleton('customer/session')->isLoggedIn()) {
23
+ $this->setFlag('', self::FLAG_NO_DISPATCH, true);
24
+ Mage::getSingleton('customer/session')->setBeforeAuthUrl(Mage::getUrl('*/*/*', array('_current' => true)));
25
+ Mage::getSingleton('review/session')->setFormData($this->getRequest()->getPost())
26
+ ->setRedirectUrl($this->_getRefererUrl());
27
+ $this->_redirectUrl(Mage::helper('customer')->getLoginUrl());
28
+ }
29
+ }
30
+
31
+ return $this;
32
+ }
33
+ /**
34
+ * Initialize and check product
35
+ *
36
+ * @return Mage_Catalog_Model_Product
37
+ */
38
+ protected function _initProduct()
39
+ {
40
+ Mage::dispatchEvent('review_controller_product_init_before', array('controller_action'=>$this));
41
+ $categoryId = (int) $this->getRequest()->getParam('category', false);
42
+ $productId = (int) $this->getRequest()->getParam('id');
43
+
44
+ $product = $this->_loadProduct($productId);
45
+ if (!$product) {
46
+ return false;
47
+ }
48
+
49
+ if ($categoryId) {
50
+ $category = Mage::getModel('catalog/category')->load($categoryId);
51
+ Mage::register('current_category', $category);
52
+ }
53
+
54
+ try {
55
+ Mage::dispatchEvent('review_controller_product_init', array('product'=>$product));
56
+ Mage::dispatchEvent('review_controller_product_init_after', array(
57
+ 'product' => $product,
58
+ 'controller_action' => $this
59
+ ));
60
+ } catch (Mage_Core_Exception $e) {
61
+ Mage::logException($e);
62
+ return false;
63
+ }
64
+
65
+ return $product;
66
+ }
67
+
68
+ /**
69
+ * Load product model with data by passed id.
70
+ * Return false if product was not loaded or has incorrect status.
71
+ *
72
+ * @param int $productId
73
+ * @return bool|Mage_Catalog_Model_Product
74
+ */
75
+ protected function _loadProduct($productId)
76
+ {
77
+ if (!$productId) {
78
+ return false;
79
+ }
80
+
81
+ $product = Mage::getModel('catalog/product')
82
+ ->setStoreId(Mage::app()->getStore()->getId())
83
+ ->load($productId);
84
+ /* @var $product Mage_Catalog_Model_Product */
85
+ if (!$product->getId() || !$product->isVisibleInCatalog() || !$product->isVisibleInSiteVisibility()) {
86
+ return false;
87
+ }
88
+
89
+ Mage::register('current_product', $product);
90
+ Mage::register('product', $product);
91
+
92
+ return $product;
93
+ }
94
+
95
+ /**
96
+ * Load review model with data by passed id.
97
+ * Return false if review was not loaded or review is not approved.
98
+ *
99
+ * @param int $productId
100
+ * @return bool|Mage_Review_Model_Review
101
+ */
102
+ protected function _loadReview($reviewId)
103
+ {
104
+ if (!$reviewId) {
105
+ return false;
106
+ }
107
+
108
+ $review = Mage::getModel('review/review')->load($reviewId);
109
+ /* @var $review Mage_Review_Model_Review */
110
+ if (!$review->getId() || !$review->isApproved() || !$review->isAvailableOnStore(Mage::app()->getStore())) {
111
+ return false;
112
+ }
113
+
114
+ Mage::register('current_review', $review);
115
+
116
+ return $review;
117
+ }
118
+
119
+ /**
120
+ * Submit new review action
121
+ *
122
+ */
123
+ public function postAction()
124
+ {
125
+
126
+
127
+ if (!$this->_validateFormKey()) {
128
+ // returns to the product item page
129
+ $this->_redirectReferer();
130
+ return;
131
+ }
132
+
133
+ if ($data = Mage::getSingleton('review/session')->getFormData(true)) {
134
+ $rating = array();
135
+ if (isset($data['ratings']) && is_array($data['ratings'])) {
136
+ $rating = $data['ratings'];
137
+ }
138
+ } else {
139
+ $data = $this->getRequest()->getPost();
140
+ $rating = $this->getRequest()->getParam('ratings', array());
141
+ }
142
+
143
+ if (($product = $this->_initProduct()) && !empty($data)) {
144
+ $session = Mage::getSingleton('core/session');
145
+ /* @var $session Mage_Core_Model_Session */
146
+ $review = Mage::getModel('review/review')->setData($data);
147
+ /* @var $review Mage_Review_Model_Review */
148
+
149
+ //$notAllowRegisterd = Mage::helper('review')->IsAutoApproveEnabled();
150
+
151
+ $regulerLogin = Mage::helper('autoapprovereviews')->IsAutoApproveEnabled();
152
+ if(!$regulerLogin) {
153
+ $validate = $review->validate();
154
+ if ($validate === true) {
155
+ try {
156
+ $review->setEntityId($review->getEntityIdByCode(Mage_Review_Model_Review::ENTITY_PRODUCT_CODE))
157
+ ->setEntityPkValue($product->getId())
158
+ ->setStatusId(Mage_Review_Model_Review::STATUS_PENDING)
159
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
160
+ ->setStoreId(Mage::app()->getStore()->getId())
161
+ ->setStores(array(Mage::app()->getStore()->getId()))
162
+ ->save();
163
+
164
+ foreach ($rating as $ratingId => $optionId) {
165
+ Mage::getModel('rating/rating')
166
+ ->setRatingId($ratingId)
167
+ ->setReviewId($review->getId())
168
+ ->setCustomerId(Mage::getSingleton('customer/session')->getCustomerId())
169
+ ->addOptionVote($optionId, $product->getId());
170
+ }
171
+
172
+ $review->aggregate();
173
+ $session->addSuccess($this->__('Your review has been accepted for moderation.'));
174
+ }
175
+ catch (Exception $e) {
176
+ $session->setFormData($data);
177
+ $session->addError($this->__('Unable to post the review.'));
178
+ }
179
+ }
180
+ else {
181
+ $session->setFormData($data);
182
+ if (is_array($validate)) {
183
+ foreach ($validate as $errorMessage) {
184
+ $session->addError($errorMessage);
185
+ }
186
+ }
187
+ else {
188
+ $session->addError($this->__('Unable to post the review.'));
189
+ }
190
+ }
191
+ }
192
+ }
193
+ else if (1) {
194
+
195
+ echo "phani";die();
196
+ }
197
+
198
+ if ($redirectUrl = Mage::getSingleton('review/session')->getRedirectUrl(true)) {
199
+ $this->_redirectUrl($redirectUrl);
200
+ return;
201
+ }
202
+ $this->_redirectReferer();
203
+ }
204
+
205
+ /**
206
+ * Show list of product's reviews
207
+ *
208
+ */
209
+ public function listAction()
210
+ {
211
+ if ($product = $this->_initProduct()) {
212
+ Mage::register('productId', $product->getId());
213
+
214
+ $design = Mage::getSingleton('catalog/design');
215
+ $settings = $design->getDesignSettings($product);
216
+ if ($settings->getCustomDesign()) {
217
+ $design->applyCustomDesign($settings->getCustomDesign());
218
+ }
219
+ $this->_initProductLayout($product);
220
+
221
+ // update breadcrumbs
222
+ if ($breadcrumbsBlock = $this->getLayout()->getBlock('breadcrumbs')) {
223
+ $breadcrumbsBlock->addCrumb('product', array(
224
+ 'label' => $product->getName(),
225
+ 'link' => $product->getProductUrl(),
226
+ 'readonly' => true,
227
+ ));
228
+ $breadcrumbsBlock->addCrumb('reviews', array('label' => Mage::helper('review')->__('Product Reviews')));
229
+ }
230
+
231
+ $this->renderLayout();
232
+ } elseif (!$this->getResponse()->isRedirect()) {
233
+ $this->_forward('noRoute');
234
+ }
235
+ }
236
+
237
+ /**
238
+ * Show details of one review
239
+ *
240
+ */
241
+ public function viewAction()
242
+ {
243
+ $review = $this->_loadReview((int) $this->getRequest()->getParam('id'));
244
+ if (!$review) {
245
+ $this->_forward('noroute');
246
+ return;
247
+ }
248
+
249
+ $product = $this->_loadProduct($review->getEntityPkValue());
250
+ if (!$product) {
251
+ $this->_forward('noroute');
252
+ return;
253
+ }
254
+
255
+ $this->loadLayout();
256
+ $this->_initLayoutMessages('review/session');
257
+ $this->_initLayoutMessages('catalog/session');
258
+ $this->renderLayout();
259
+ }
260
+
261
+ /**
262
+ * Load specific layout handles by product type id
263
+ *
264
+ */
265
+ protected function _initProductLayout($product)
266
+ {
267
+ $update = $this->getLayout()->getUpdate();
268
+
269
+ $update->addHandle('default');
270
+ $this->addActionLayoutHandles();
271
+
272
+
273
+ $update->addHandle('PRODUCT_TYPE_'.$product->getTypeId());
274
+
275
+ if ($product->getPageLayout()) {
276
+ $this->getLayout()->helper('page/layout')
277
+ ->applyHandle($product->getPageLayout());
278
+ }
279
+
280
+ $this->loadLayoutUpdates();
281
+ if ($product->getPageLayout()) {
282
+ $this->getLayout()->helper('page/layout')
283
+ ->applyTemplate($product->getPageLayout());
284
+ }
285
+ $update->addUpdate($product->getCustomLayoutUpdate());
286
+ $this->generateLayoutXml()->generateLayoutBlocks();
287
+ }
288
+ }
app/code/community/Exinent/Autoapprovereviews/etc/config.xml ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Exinent_Autoapprovereviews>
5
+ <version>0.1.0</version>
6
+ </Exinent_Autoapprovereviews>
7
+ </modules>
8
+ <frontend>
9
+ <routers>
10
+ <autoapprovereviews>
11
+ <use>standard</use>
12
+ <args>
13
+ <module>Exinent_Autoapprovereviews</module>
14
+ <frontName>autoapprovereviews</frontName>
15
+ </args>
16
+ </autoapprovereviews>
17
+ </routers>
18
+ </frontend>
19
+ <global>
20
+ <helpers>
21
+ <autoapprovereviews>
22
+ <class>Exinent_Autoapprovereviews_Helper</class>
23
+ </autoapprovereviews>
24
+ </helpers>
25
+ <models>
26
+ <autoapprovereviews>
27
+ <class>Exinent_Autoapprovereviews_Model</class>
28
+ <resourceModel>autoapprovereviews_resource</resourceModel>
29
+ </autoapprovereviews>
30
+ <autoapprovereviews_resource>
31
+ <class>Exinent_Autoapprovereviews_Model_Resource</class>
32
+ </autoapprovereviews_resource>
33
+ </models>
34
+ <!-- This rewrite rule could be added to the database instead -->
35
+ <rewrite>
36
+ <!-- This is an identifier for your rewrite that should be unique -->
37
+ <!-- THIS IS THE CLASSNAME IN YOUR OWN CONTROLLER -->
38
+ <autoapprovereviews>
39
+ <from><![CDATA[#^/review/product/#]]></from>
40
+ <!--
41
+ - mymodule matches the router frontname below
42
+ - matches the path to your controller
43
+
44
+ Considering the router below, "/customcontacts/index/" will be
45
+ "translated" to "app/code/local/Amit/Customcontacts/controllers/IndexController.php" (?)
46
+ -->
47
+ <to>/autoapprovereviews/product/</to>
48
+ </autoapprovereviews>
49
+ </rewrite>
50
+ </global>
51
+
52
+
53
+
54
+
55
+ <adminhtml>
56
+ <acl>
57
+ <resources>
58
+ <admin>
59
+ <children>
60
+ <system>
61
+ <children>
62
+ <config>
63
+ <children>
64
+ <autoapprovereviews_settings>
65
+ <title>Review Settings</title>
66
+ </autoapprovereviews_settings>
67
+ </children>
68
+ </config>
69
+ </children>
70
+ </system>
71
+ </children>
72
+ </admin>
73
+ </resources>
74
+ </acl>
75
+ </adminhtml>
76
+ </config>
app/code/community/Exinent/Autoapprovereviews/etc/config.xml~ ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <config>
2
+ <modules>
3
+ <Exinent_Autoapprovereviews>
4
+ <version>0.1.0</version>
5
+ </Exinent_Autoapprovereviews>
6
+ </modules>
7
+ <frontend>
8
+ <routers>
9
+ <autoapprovereviews>
10
+ <use>standard</use>
11
+ <args>
12
+ <module>Exinent_Autoapprovereviews</module>
13
+ <frontName>autoapprovereviews</frontName>
14
+ </args>
15
+ </autoapprovereviews>
16
+ </routers>
17
+ </frontend>
18
+ <global>
19
+ <helpers>
20
+ <autoapprovereviews>
21
+ <class>Exinent_Autoapprovereviews_Helper</class>
22
+ </autoapprovereviews>
23
+ </helpers>
24
+ <models>
25
+ <autoapprovereviews>
26
+ <class>Exinent_Autoapprovereviews_Model</class>
27
+ <resourceModel>autoapprovereviews_resource</resourceModel>
28
+ </autoapprovereviews>
29
+ <autoapprovereviews_resource>
30
+ <class>Exinent_Autoapprovereviews_Model_Resource</class>
31
+ </autoapprovereviews_resource>
32
+ </models>
33
+ </global>
34
+
35
+ <!-- This rewrite rule could be added to the database instead -->
36
+ <rewrite>
37
+ <!-- This is an identifier for your rewrite that should be unique -->
38
+ <!-- THIS IS THE CLASSNAME IN YOUR OWN CONTROLLER -->
39
+ <customcontactsunique>
40
+ <from><![CDATA[#^/review/product/#]]></from>
41
+ <!--
42
+ - mymodule matches the router frontname below
43
+ - matches the path to your controller
44
+
45
+ Considering the router below, "/customcontacts/index/" will be
46
+ "translated" to "app/code/local/Amit/Customcontacts/controllers/IndexController.php" (?)
47
+ -->
48
+ <to>/autoapprovereviews/product/</to>
49
+ </customcontactsunique>
50
+ </rewrite>
51
+
52
+ - See more at: http://www.amitbera.com/how-to-override-a-controller-in-magento/#sthash.bNyssa8b.dpuf
53
+ <adminhtml>
54
+ <acl>
55
+ <resources>
56
+ <admin>
57
+ <children>
58
+ <system>
59
+ <children>
60
+ <config>
61
+ <children>
62
+ <autoapprovereviews_settings>
63
+ <title>Review Settings</title>
64
+ </autoapprovereviews_settings>
65
+ </children>
66
+ </config>
67
+ </children>
68
+ </system>
69
+ </children>
70
+ </admin>
71
+ </resources>
72
+ </acl>
73
+ </adminhtml>
74
+ </config>
app/code/community/Exinent/Autoapprovereviews/etc/system.xml ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <sections>
4
+ <autoapprovereviews_settings translate="label" module="autoapprovereviews">
5
+ <label>Product Review Settings</label>
6
+ <tab>catalog</tab>
7
+ <frontend_type>text</frontend_type>
8
+ <sort_order>120</sort_order>
9
+ <show_in_default>1</show_in_default>
10
+ <show_in_website>1</show_in_website>
11
+ <show_in_store>1</show_in_store>
12
+ <groups>
13
+ <autoapprovegroup translate="label">
14
+ <label>Review Settings for logged in Users</label>
15
+ <frontend_type>text</frontend_type>
16
+ <sort_order>1</sort_order>
17
+ <show_in_default>1</show_in_default>
18
+ <show_in_website>1</show_in_website>
19
+ <show_in_store>1</show_in_store>
20
+ <fields>
21
+ <autoapprove_enabled translate="label">
22
+ <label>Enabled</label>
23
+ <frontend_type>select</frontend_type>
24
+ <source_model>adminhtml/system_config_source_yesno</source_model>
25
+ <sort_order>1</sort_order>
26
+ <show_in_default>1</show_in_default>
27
+ <show_in_website>1</show_in_website>
28
+ <show_in_store>1</show_in_store>
29
+ </autoapprove_enabled>
30
+ <login_review>
31
+ <label>Require Activation for Groups</label>
32
+ <frontend_type>multiselect</frontend_type>
33
+ <source_model>autoapprovereviews/adminhtml_system_config_source_customer_group_multiselect</source_model>
34
+ <sort_order>12</sort_order>
35
+ <show_in_default>1</show_in_default>
36
+ <show_in_website>1</show_in_website>
37
+ <show_in_store>1</show_in_store>
38
+ </login_review>
39
+ </fields>
40
+ </autoapprovegroup>
41
+ </groups>
42
+ </autoapprovereviews_settings>
43
+ </sections>
44
+ </config>
app/code/community/Exinent/Autoapprovereviews/etc/system.xml~ ADDED
@@ -0,0 +1,70 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ /**
4
+ * Magento
5
+ *
6
+ * NOTICE OF LICENSE
7
+ *
8
+ * This source file is subject to the Academic Free License (AFL 3.0)
9
+ * that is bundled with this package in the file LICENSE_AFL.txt.
10
+ * It is also available through the world-wide-web at this URL:
11
+ * http://opensource.org/licenses/afl-3.0.php
12
+ * If you did not receive a copy of the license and are unable to
13
+ * obtain it through the world-wide-web, please send an email
14
+ * to license@magentocommerce.com so we can send you a copy immediately.
15
+ *
16
+ * DISCLAIMER
17
+ *
18
+ * Do not edit or add to this file if you wish to upgrade Magento to newer
19
+ * versions in the future. If you wish to customize Magento for your
20
+ * needs please refer to http://www.magentocommerce.com for more information.
21
+ *
22
+ * @category Mage
23
+ * @package Mage_Sendfriend
24
+ * @copyright Copyright (c) 2014 Magento Inc. (http://www.magentocommerce.com)
25
+ * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
26
+ */
27
+ -->
28
+ <config>
29
+ <sections>
30
+ <autoapprovereviews_settings translate="label" module="autoapprovereviews">
31
+ <label>Product Review Settings</label>
32
+ <tab>catalog</tab>
33
+ <frontend_type>text</frontend_type>
34
+ <sort_order>120</sort_order>
35
+ <show_in_default>1</show_in_default>
36
+ <show_in_website>1</show_in_website>
37
+ <show_in_store>1</show_in_store>
38
+ <groups>
39
+ <autoapprovegroup translate="label">
40
+ <label>Review Settings for logged in Users</label>
41
+ <frontend_type>text</frontend_type>
42
+ <sort_order>1</sort_order>
43
+ <show_in_default>1</show_in_default>
44
+ <show_in_website>1</show_in_website>
45
+ <show_in_store>1</show_in_store>
46
+ <fields>
47
+ <autoapprove_enabled translate="label">
48
+ <label>Enabled</label>
49
+ <frontend_type>select</frontend_type>
50
+ <source_model>adminhtml/system_config_source_yesno</source_model>
51
+ <sort_order>1</sort_order>
52
+ <show_in_default>1</show_in_default>
53
+ <show_in_website>1</show_in_website>
54
+ <show_in_store>1</show_in_store>
55
+ </autoapprove_enabled>
56
+ <login_review>
57
+ <label>Require Activation for Groups</label>
58
+ <frontend_type>multiselect</frontend_type>
59
+ <source_model>adminhtml/system_config_source_customer_group_multiselect</source_model>
60
+ <sort_order>12</sort_order>
61
+ <show_in_default>1</show_in_default>
62
+ <show_in_website>1</show_in_website>
63
+ <show_in_store>1</show_in_store>
64
+ </login_review>
65
+ </fields>
66
+ </autoapprovegroup>
67
+ </groups>
68
+ </autoapprovereviews_settings>
69
+ </sections>
70
+ </config>
app/etc/modules/Exinent_Autoapprovereviews.xml ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <config>
3
+ <modules>
4
+ <Exinent_Autoapprovereviews>
5
+ <active>true</active>
6
+ <codePool>community</codePool>
7
+ </Exinent_Autoapprovereviews>
8
+ </modules>
9
+ </config>
package.xml ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0"?>
2
+ <package>
3
+ <name>Auto_Reviews</name>
4
+ <version>1.0.0</version>
5
+ <stability>stable</stability>
6
+ <license>Open Software License</license>
7
+ <channel>community</channel>
8
+ <extends/>
9
+ <summary> Auto approves product reviews based on customer type.</summary>
10
+ <description> Auto approves product reviews based on customer type.</description>
11
+ <notes> Auto approves product reviews based on customer type.</notes>
12
+ <authors><author><name>Exinent Dev Team</name><user>Developer</user><email>support@exinent.com</email></author></authors>
13
+ <date>2015-04-17</date>
14
+ <time>13:28:21</time>
15
+ <contents><target name="magecommunity"><dir name="Exinent"><dir name="Autoapprovereviews"><dir name="controllers"><file name="AutoController.php~" hash="f237b0ee979a0103194018cb1782b077"/><file name="ProductController.php" hash="4c157fedaa9882fc7f1c599b967228d6"/><file name="ProductController.php~" hash="98c5f74dd6ec1d9d5ee099d75cfdc1b8"/></dir><dir name="etc"><file name="config.xml" hash="f50c98a0dc06526d87a9e6c53be0a767"/><file name="config.xml~" hash="79d44957391580a5c08e5c0d534aec3f"/><file name="system.xml" hash="5748381712c0c4cd285b3f54a2360519"/><file name="system.xml~" hash="d3e3d408f4a723c9bfc36c517159fb0f"/></dir><dir name="Helper"><file name="Data.php" hash="c066b27a7d0c243ef6910e0d11ee9a05"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Source"><dir name="Customer"><dir name="Group"><file name="Multiselect.php" hash="a77f750f58703d8c551c9ec95cf3a154"/><file name="Multiselect.php~" hash="a77f750f58703d8c551c9ec95cf3a154"/></dir></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Exinent_Autoapprovereviews.xml" hash="b468d55a398b1dd70240269b4bae9997"/></dir></target></contents>
16
+ <compatible/>
17
+ <dependencies><required><php><min>5.0.0</min><max>6.0.0</max></php></required></dependencies>
18
+ </package>