Authored by Rock Zhang

修复等级信息中的bug,修复取消收藏商品的bug

@@ -12,49 +12,46 @@ use Api\Sign; @@ -12,49 +12,46 @@ use Api\Sign;
12 class GradeData 12 class GradeData
13 { 13 {
14 14
15 - /**  
16 - * 获取会员等级数据  
17 - * @param string $yh_channel 频道数据,1->男,2->女,3->潮童,4->创意生活,5->其他  
18 - * @param strint $gender 用户性别  
19 - * @param string $uid 用户id  
20 - * @return array 接口返回的会员等级数据  
21 - */  
22 - public static function getGradeData($gender, $channel, $uid) {  
23 - $urlList = array();  
24 - //获取会员等级数据  
25 - $param = Yohobuy::param();  
26 - $param['yh_channel'] = $channel;  
27 - $param['uid'] = $uid;  
28 - $param['method'] = 'app.Passport.vip';  
29 - $param['client_secret'] = Sign::getSign($param);  
30 - $urlList['grade'] = Yohobuy::httpBuildQuery(Yohobuy::API_URL, $param);  
31 -  
32 - //获取用户基本信息数据(用来得到username)  
33 - $param = Yohobuy::param();  
34 - $param['gender'] = $gender;  
35 - $param['uid'] = $uid;  
36 - $param['yh_channel'] = $channel;  
37 - $param['method'] = 'app.passport.profile';  
38 - $param['client_secret'] = Sign::getSign($param);  
39 - $urlList['userProfile'] = Yohobuy::httpBuildQuery(Yohobuy::API_URL, $param);  
40 -  
41 - return Yohobuy::getMulti($urlList);  
42 - }  
43 -  
44 - /**  
45 - * 获取会员特权详情数据  
46 - * @param string $yh_channel 频道数据,1->男,2->女,3->潮童,4->创意生活,5->其他  
47 - * @param string $uid 用户id  
48 - * @return array 接口返回的会员特权详情数据  
49 - */  
50 - public function getPreferentialData($channel, $uid) {  
51 -  
52 - $param = Yohobuy::param();  
53 - $param['yh_channel'] = $channel;  
54 - $param['uid'] = $uid;  
55 - $param['method'] = 'app.passport.getPrivilege';  
56 - $param['client_secret'] = Sign::getSign($param);  
57 - return Yohobuy::get(Yohobuy::API_URL, $param);  
58 - } 15 + /**
  16 + * 获取会员等级数据
  17 + * @param string $yh_channel 频道数据,1->男,2->女,3->潮童,4->创意生活,5->其他
  18 + * @param string $uid 用户id
  19 + * @return array 接口返回的会员等级数据
  20 + */
  21 + public static function getGradeData($channel, $uid) {
  22 + $urlList = array();
  23 + //获取会员等级数据
  24 + $param = Yohobuy::param();
  25 + $param['yh_channel'] = $channel;
  26 + $param['uid'] = $uid;
  27 + $param['method'] = 'app.Passport.vip';
  28 + $param['client_secret'] = Sign::getSign($param);
  29 + $urlList['grade'] = Yohobuy::httpBuildQuery(Yohobuy::API_URL, $param);
  30 +
  31 + //获取用户基本信息数据(用来得到username)
  32 + $param = Yohobuy::param();
  33 + $param['uid'] = $uid;
  34 + $param['method'] = 'app.passport.profile';
  35 + $param['client_secret'] = Sign::getSign($param);
  36 + $urlList['userProfile'] = Yohobuy::httpBuildQuery(Yohobuy::API_URL, $param);
  37 +
  38 + return Yohobuy::getMulti($urlList);
  39 + }
  40 +
  41 + /**
  42 + * 获取会员特权详情数据
  43 + * @param string $yh_channel 频道数据,1->男,2->女,3->潮童,4->创意生活,5->其他
  44 + * @param string $uid 用户id
  45 + * @return array 接口返回的会员特权详情数据
  46 + */
  47 + public static function getPreferentialData($channel, $uid) {
  48 +
  49 + $param = Yohobuy::param();
  50 + $param['yh_channel'] = $channel;
  51 + $param['uid'] = $uid;
  52 + $param['method'] = 'app.passport.getPrivilege';
  53 + $param['client_secret'] = Sign::getSign($param);
  54 + return Yohobuy::get(Yohobuy::API_URL, $param);
  55 + }
59 56
60 } 57 }
@@ -141,6 +141,7 @@ class UserData @@ -141,6 +141,7 @@ class UserData
141 $param = Yohobuy::param(); 141 $param = Yohobuy::param();
142 $param['method'] = 'app.favorite.cancel'; 142 $param['method'] = 'app.favorite.cancel';
143 $param['type'] = 'product'; 143 $param['type'] = 'product';
  144 + $param['uid'] = $uid;
144 $param['fav_id'] = $fav_id; 145 $param['fav_id'] = $fav_id;
145 $param['client_secret'] = Sign::getSign($param); 146 $param['client_secret'] = Sign::getSign($param);
146 147
1 <?php 1 <?php
2 2
3 use Action\AbstractAction; 3 use Action\AbstractAction;
4 -use home\GradeModel; 4 +use Home\GradeModel;
5 use home\OrderModel; 5 use home\OrderModel;
6 use Plugin\Helpers; 6 use Plugin\Helpers;
7 use LibModels\Wap\Home\OrderData; 7 use LibModels\Wap\Home\OrderData;
  8 +use Index\UserModel as UserModel;
8 9
9 /** 10 /**
10 * 个人中心相关的控制器 11 * 个人中心相关的控制器
@@ -51,12 +52,12 @@ class HomeController extends AbstractAction @@ -51,12 +52,12 @@ class HomeController extends AbstractAction
51 $uid = $this->getUid(); 52 $uid = $this->getUid();
52 if ($uid) { 53 if ($uid) {
53 $data['isLogin'] = true; 54 $data['isLogin'] = true;
54 - $data += \Index\UserModel::getUserProfileData($uid);  
55 - $data += \Index\UserModel::getInfoNumData($uid); 55 + $data += UserModel::getUserProfileData($uid);
  56 + $data += UserModel::getInfoNumData($uid);
56 57
57 // 优选新品数据 58 // 优选新品数据
58 $channel = Helpers::getChannelByCookie(); 59 $channel = Helpers::getChannelByCookie();
59 - $data['recommendForYou'] = \Index\UserModel::getPreferenceData($channel); 60 + $data['recommendForYou'] = UserModel::getPreferenceData($channel);
60 } 61 }
61 62
62 $this->_view->display('index', $data); 63 $this->_view->display('index', $data);
@@ -75,8 +76,8 @@ class HomeController extends AbstractAction @@ -75,8 +76,8 @@ class HomeController extends AbstractAction
75 $uid = $this->getUid(); 76 $uid = $this->getUid();
76 $gender = Helpers::getGenderByCookie(); 77 $gender = Helpers::getGenderByCookie();
77 78
78 - $favProducts = \Index\UserModel::getFavProductData($uid);  
79 - $favBrands = \Index\UserModel::getFavBrandData($uid, $gender); 79 + $favProducts = UserModel::getFavProductData($uid);
  80 + $favBrands = UserModel::getFavBrandData($uid, $gender);
80 81
81 $data = array( 82 $data = array(
82 'favPage' => true, //加载js 83 'favPage' => true, //加载js
@@ -106,7 +107,7 @@ class HomeController extends AbstractAction @@ -106,7 +107,7 @@ class HomeController extends AbstractAction
106 $uid = $this->getUid(); 107 $uid = $this->getUid();
107 $fav_id = $this->post('fav_id', 0); 108 $fav_id = $this->post('fav_id', 0);
108 109
109 - $result = \Index\UserModel::favoriteDelete($uid, $fav_id); 110 + $result = UserModel::favoriteDelete($uid, $fav_id);
110 } 111 }
111 112
112 if (empty($result)) { 113 if (empty($result)) {
@@ -125,7 +126,7 @@ class HomeController extends AbstractAction @@ -125,7 +126,7 @@ class HomeController extends AbstractAction
125 $this->setNavHeader('个人信息', true, SITE_MAIN); 126 $this->setNavHeader('个人信息', true, SITE_MAIN);
126 127
127 $uid = $this->getUid(); 128 $uid = $this->getUid();
128 - $data = \Index\UserModel::getUserProfileData($uid); 129 + $data = UserModel::getUserProfileData($uid);
129 $data['personalDetailsPage'] = true; 130 $data['personalDetailsPage'] = true;
130 $data['pageFooter'] = true; 131 $data['pageFooter'] = true;
131 $this->_view->display('personal-details', $data); 132 $this->_view->display('personal-details', $data);
@@ -140,7 +141,7 @@ class HomeController extends AbstractAction @@ -140,7 +141,7 @@ class HomeController extends AbstractAction
140 $this->setNavHeader('YOHO币', true, false); 141 $this->setNavHeader('YOHO币', true, false);
141 142
142 $uid = $this->getUid(); 143 $uid = $this->getUid();
143 - $currency = \Index\UserModel::getYohoCoinData($uid); 144 + $currency = UserModel::getYohoCoinData($uid);
144 145
145 $currency['pageFooter'] = true; 146 $currency['pageFooter'] = true;
146 $this->_view->display('currency', $currency); 147 $this->_view->display('currency', $currency);
@@ -156,7 +157,7 @@ class HomeController extends AbstractAction @@ -156,7 +157,7 @@ class HomeController extends AbstractAction
156 157
157 $uid = $this->getUid(); 158 $uid = $this->getUid();
158 $coupons = array( 159 $coupons = array(
159 - 'couponsUrl' => \Index\UserModel::getCouponData($uid), 160 + 'couponsUrl' => UserModel::getCouponData($uid),
160 'couponsPage' => true 161 'couponsPage' => true
161 ); 162 );
162 $this->_view->display('coupons', $coupons); 163 $this->_view->display('coupons', $coupons);
@@ -171,7 +172,7 @@ class HomeController extends AbstractAction @@ -171,7 +172,7 @@ class HomeController extends AbstractAction
171 $page = $this->get('page', 0); 172 $page = $this->get('page', 0);
172 $size = $this->get('size', 10); 173 $size = $this->get('size', 10);
173 174
174 - $messages = \Index\UserModel::getMessageData($uid, $page, $size); 175 + $messages = UserModel::getMessageData($uid, $page, $size);
175 176
176 print_r($messages); 177 print_r($messages);
177 } 178 }
@@ -186,8 +187,8 @@ class HomeController extends AbstractAction @@ -186,8 +187,8 @@ class HomeController extends AbstractAction
186 $this->setNavHeader('地址管理'); 187 $this->setNavHeader('地址管理');
187 188
188 $uid = $this->getUid(); 189 $uid = $this->getUid();
189 - $address = \Index\UserModel::getAddressData($uid);  
190 - $addressList = \Index\UserModel::getAddressListData($uid); 190 + $address = UserModel::getAddressData($uid);
  191 + $addressList = UserModel::getAddressListData($uid);
191 192
192 $this->_view->display('address', array( 193 $this->_view->display('address', array(
193 'addressPage' => true, 194 'addressPage' => true,
@@ -214,7 +215,7 @@ class HomeController extends AbstractAction @@ -214,7 +215,7 @@ class HomeController extends AbstractAction
214 $mobile = $this->post('mobile', ''); 215 $mobile = $this->post('mobile', '');
215 $zip_code = $this->post('zip_code', ''); 216 $zip_code = $this->post('zip_code', '');
216 217
217 - $result = \Index\UserModel::saveAddressData($uid, $address, $area_code, $consignee, $email, $id, $mobile, $zip_code); 218 + $result = UserModel::saveAddressData($uid, $address, $area_code, $consignee, $email, $id, $mobile, $zip_code);
218 } 219 }
219 220
220 if (empty($result)) { 221 if (empty($result)) {
@@ -234,7 +235,7 @@ class HomeController extends AbstractAction @@ -234,7 +235,7 @@ class HomeController extends AbstractAction
234 if ($this->isAjax()) { 235 if ($this->isAjax()) {
235 $uid = $this->getUid(); 236 $uid = $this->getUid();
236 $id = $this->post('id', ''); 237 $id = $this->post('id', '');
237 - $result = \Index\UserModel::setDefaultAddress($uid, $id); 238 + $result = UserModel::setDefaultAddress($uid, $id);
238 } 239 }
239 240
240 if (empty($result)) { 241 if (empty($result)) {
@@ -255,7 +256,7 @@ class HomeController extends AbstractAction @@ -255,7 +256,7 @@ class HomeController extends AbstractAction
255 $uid = $this->getUid(); 256 $uid = $this->getUid();
256 $id = $this->post('id', ''); 257 $id = $this->post('id', '');
257 258
258 - $result = \Index\UserModel::deleteAddress($uid, $id); 259 + $result = UserModel::deleteAddress($uid, $id);
259 } 260 }
260 261
261 if (empty($result)) { 262 if (empty($result)) {
@@ -332,7 +333,7 @@ class HomeController extends AbstractAction @@ -332,7 +333,7 @@ class HomeController extends AbstractAction
332 $page = $this->get('page', 1); 333 $page = $this->get('page', 1);
333 $limit = $this->get('limit', 30); 334 $limit = $this->get('limit', 30);
334 335
335 - $suggest = \Index\UserModel::getSuggestData($udid, $page, $limit); 336 + $suggest = UserModel::getSuggestData($udid, $page, $limit);
336 337
337 $this->_view->display('suggest', array( 338 $this->_view->display('suggest', array(
338 'suggestPage' => true, //加载js 339 'suggestPage' => true, //加载js
@@ -370,7 +371,7 @@ class HomeController extends AbstractAction @@ -370,7 +371,7 @@ class HomeController extends AbstractAction
370 public function suggestimgUploadAction() 371 public function suggestimgUploadAction()
371 { 372 {
372 //$filename = $this->post('filename', ''); 373 //$filename = $this->post('filename', '');
373 - $result = \Index\UserModel::saveSuggestImg('fileData'); 374 + $result = UserModel::saveSuggestImg('fileData');
374 375
375 $this->echoJson($result); 376 $this->echoJson($result);
376 } 377 }
@@ -385,7 +386,7 @@ class HomeController extends AbstractAction @@ -385,7 +386,7 @@ class HomeController extends AbstractAction
385 $content = $this->post('content', ''); 386 $content = $this->post('content', '');
386 $suggest_type = $this->post('suggest_type', 2); 387 $suggest_type = $this->post('suggest_type', 2);
387 $image = $this->post('image', null); 388 $image = $this->post('image', null);
388 - $result = \Index\UserModel::saveSuggestData($uid, $content, $image, $suggest_type); 389 + $result = UserModel::saveSuggestData($uid, $content, $image, $suggest_type);
389 390
390 $this->echoJson($result); 391 $this->echoJson($result);
391 } 392 }
@@ -400,7 +401,7 @@ class HomeController extends AbstractAction @@ -400,7 +401,7 @@ class HomeController extends AbstractAction
400 $uid = $this->getUid(); 401 $uid = $this->getUid();
401 $udid = $this->getUdid(); 402 $udid = $this->getUdid();
402 $suggest_id = $this->post('suggest_id', 0); 403 $suggest_id = $this->post('suggest_id', 0);
403 - $result = \Index\UserModel::upAndDown($uid, $udid, $suggest_id); 404 + $result = UserModel::upAndDown($uid, $udid, $suggest_id);
404 405
405 $this->echoJson($result); 406 $this->echoJson($result);
406 } 407 }
@@ -2,7 +2,9 @@ @@ -2,7 +2,9 @@
2 2
3 namespace Home; 3 namespace Home;
4 4
  5 +use Configs\CacheConfig;
5 use LibModels\Wap\Home\GradeData; 6 use LibModels\Wap\Home\GradeData;
  7 +use Plugin\Cache;
6 use Plugin\Helpers; 8 use Plugin\Helpers;
7 9
8 /** 10 /**
@@ -13,105 +15,104 @@ class GradeModel @@ -13,105 +15,104 @@ class GradeModel
13 /* 15 /*
14 * 获取个人中心-会员等级数据 16 * 获取个人中心-会员等级数据
15 */ 17 */
16 -  
17 - public static function getGrade($gender, $channel, $uid)  
18 - {  
19 - $result = array();  
20 -  
21 - if (USE_CACHE) {  
22 - // 先尝试获取一级缓存(master), 有数据则直接返回.  
23 - $result = Cache::get(CacheConfig::KEY_ACTION_HOME_GRADE, 'master');  
24 - if (!empty($result)) {  
25 - return $result;  
26 - }  
27 - }  
28 - //调用接口获取数据  
29 - $data = GradeData::getGradeData($gender, $channel, $uid);  
30 -  
31 - if (!empty($data['grade'])) {  
32 - switch (intval($data['grade']['current_vip_level'])) {  
33 - case 0://普通会员  
34 - $result['vipGrade']['vip0'] = true;  
35 - break;  
36 - case 1://银卡会员  
37 - $result['vipGrade']['vip1'] = true;  
38 - break;  
39 - case 2://金卡会员  
40 - $result['vipGrade']['vip2'] = true;  
41 - break;  
42 - case 3://白金会员  
43 - $result['vipGrade']['vip3'] = true;  
44 - break;  
45 - }  
46 -  
47 - //今年总消费  
48 - $result['vipGrade']['costOfThisYear'] = $data['grade']['current_year_cost'];  
49 - //升级下一等级会员的进度;  
50 - $result['vipGrade']['percent'] = 100 * (round($data['grade']['current_total_cost'] / $data['grade']['next_need_cost'], 2));  
51 - //距离升级所需消费金额  
52 -  
53 - if ($data['grade']['current_vip_level'] != 3) {  
54 - $result['vipGrade']['costGap'] = $data['grade']['upgrade_need_cost'];  
55 - }  
56 - //消费总计  
57 - $result['vipGrade']['sumCost'] = $data['grade']['current_total_cost'];  
58 - //username 调用获取用户基本信息数据,获得username;  
59 - //$userProfile = GradeData::getUserProfileData($gender,$uid,$channel);  
60 - $result['vipGrade']['name'] = $data['userProfile']['username'];  
61 - //跳转url(会员特权详情)  
62 - $result['vipGrade']['allUrl'] = Helpers::url('/Home/preferential', null);  
63 - //当前vip等级享受的特权  
64 - $result['vipGrade']['privilege'] = $data['grade']['enjoy_preferential'];  
65 - }  
66 -  
67 - if (USE_CACHE) {  
68 - // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.  
69 - if (empty($result)) {  
70 - $result = Cache::get(CacheConfig::KEY_ACTION_HOME_GRADE, 'slave');  
71 - }  
72 - // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存  
73 - else {  
74 - Cache::set(CacheConfig::KEY_ACTION_HOME_GRADE, $result);  
75 - }  
76 - }  
77 -  
78 - return $result;  
79 - }  
80 -  
81 - /* 18 + public static function getGrade($gender, $channel, $uid)
  19 + {
  20 + $result = array();
  21 +
  22 + if (USE_CACHE) {
  23 + // 先尝试获取一级缓存(master), 有数据则直接返回.
  24 + $result = Cache::get(CacheConfig::KEY_ACTION_HOME_GRADE, 'master');
  25 + if (!empty($result)) {
  26 + return $result;
  27 + }
  28 + }
  29 + //调用接口获取数据
  30 + $data = GradeData::getGradeData($channel, $uid);
  31 +
  32 + if (!empty($data['grade'])) {
  33 + switch (intval($data['grade']['current_vip_level'])) {
  34 + case 0://普通会员
  35 + $result['vipGrade']['vip0'] = true;
  36 + break;
  37 + case 1://银卡会员
  38 + $result['vipGrade']['vip1'] = true;
  39 + break;
  40 + case 2://金卡会员
  41 + $result['vipGrade']['vip2'] = true;
  42 + break;
  43 + case 3://白金会员
  44 + $result['vipGrade']['vip3'] = true;
  45 + break;
  46 + }
  47 +
  48 + //今年总消费
  49 + $result['vipGrade']['costOfThisYear'] = $data['grade']['current_year_cost'];
  50 + //升级下一等级会员的进度;
  51 + $result['vipGrade']['percent'] = 100 * (round($data['grade']['current_total_cost'] / $data['grade']['next_need_cost'], 2));
  52 + //距离升级所需消费金额
  53 +
  54 + if ($data['grade']['current_vip_level'] != 3) {
  55 + $result['vipGrade']['costGap'] = $data['grade']['upgrade_need_cost'];
  56 + }
  57 + //消费总计
  58 + $result['vipGrade']['sumCost'] = $data['grade']['current_total_cost'];
  59 + //username 调用获取用户基本信息数据,获得username;
  60 + //$userProfile = GradeData::getUserProfileData($gender,$uid,$channel);
  61 + $result['vipGrade']['name'] = !empty($data['userProfile']) ? $data['userProfile']['username'] : '';
  62 + //跳转url(会员特权详情)
  63 + $result['vipGrade']['allUrl'] = Helpers::url('/Home/preferential', null);
  64 + //当前vip等级享受的特权
  65 + $result['vipGrade']['privilege'] = $data['grade']['enjoy_preferential'];
  66 + }
  67 +
  68 + if (USE_CACHE) {
  69 + // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
  70 + if (empty($result)) {
  71 + $result = Cache::get(CacheConfig::KEY_ACTION_HOME_GRADE, 'slave');
  72 + }
  73 + // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存
  74 + else {
  75 + Cache::set(CacheConfig::KEY_ACTION_HOME_GRADE, $result);
  76 + }
  77 + }
  78 +
  79 + return $result;
  80 + }
  81 +
  82 + /*
82 * 获取个人中心-会员特权详情页 83 * 获取个人中心-会员特权详情页
83 */ 84 */
84 85
85 - public function getPreferential($channel, $uid)  
86 - {  
87 - $result = array();  
88 -  
89 - if (USE_CACHE) {  
90 - // 先尝试获取一级缓存(master), 有数据则直接返回.  
91 - $result = Cache::get(CacheConfig::KEY_ACTION_HOME_PREFERENTIAL, 'master');  
92 - if (!empty($result)) {  
93 - return $result;  
94 - }  
95 - }  
96 - //调取接口获得数据  
97 - $data = GradeData::getPreferentialData($channel, $uid);  
98 - if (isset($data['code']) && $data['code'] == 200) {  
99 - $result['vipGrade']['privilege'] = $data['data'];  
100 - }  
101 -  
102 -  
103 - if (USE_CACHE) {  
104 - // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.  
105 - if (empty($result)) {  
106 - $result = Cache::get(CacheConfig::KEY_ACTION_HOME_GRADE, 'slave');  
107 - }  
108 - // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存  
109 - else {  
110 - Cache::set(CacheConfig::KEY_ACTION_HOME_PREFERENTIAL, $result);  
111 - }  
112 - }  
113 -  
114 - return $result;  
115 - } 86 + public static function getPreferential($channel, $uid)
  87 + {
  88 + $result = array();
  89 +
  90 + if (USE_CACHE) {
  91 + // 先尝试获取一级缓存(master), 有数据则直接返回.
  92 + $result = Cache::get(CacheConfig::KEY_ACTION_HOME_PREFERENTIAL, 'master');
  93 + if (!empty($result)) {
  94 + return $result;
  95 + }
  96 + }
  97 + //调取接口获得数据
  98 + $data = GradeData::getPreferentialData($channel, $uid);
  99 + if (isset($data['code']) && $data['code'] == 200) {
  100 + $result['vipGrade']['privilege'] = $data['data'];
  101 + }
  102 +
  103 +
  104 + if (USE_CACHE) {
  105 + // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
  106 + if (empty($result)) {
  107 + $result = Cache::get(CacheConfig::KEY_ACTION_HOME_GRADE, 'slave');
  108 + }
  109 + // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存
  110 + else {
  111 + Cache::set(CacheConfig::KEY_ACTION_HOME_PREFERENTIAL, $result);
  112 + }
  113 + }
  114 +
  115 + return $result;
  116 + }
116 117
117 } 118 }
@@ -2,7 +2,9 @@ @@ -2,7 +2,9 @@
2 2
3 namespace Index; 3 namespace Index;
4 4
  5 +use Configs\CacheConfig;
5 use LibModels\Wap\Home\UserData; 6 use LibModels\Wap\Home\UserData;
  7 +use Plugin\Cache;
6 use Plugin\Helpers; 8 use Plugin\Helpers;
7 use Plugin\Images; 9 use Plugin\Images;
8 10