Infobip_Storesms - Version 1.0.2

Version Notes

Infobip StoreSMS API module

Download this release

Release Info

Developer Snowdog
Extension Infobip_Storesms
Version 1.0.2
Comparing to
See all releases


Code changes from version 1.0.0 to 1.0.2

app/code/community/Infobip/Storesms/Model/ApiClient.php CHANGED
@@ -17,7 +17,6 @@ class Infobip_Storesms_Model_ApiClient {
17
 
18
  public function sendByCurl(array $smsData) {
19
 
20
-
21
  if (empty($smsData['recipients']))
22
  throw new Exception(Mage::helper('storesms')->__('No recipients found'));
23
 
@@ -55,16 +54,20 @@ class Infobip_Storesms_Model_ApiClient {
55
  $fields = "XML=" . urlencode($xmlString);
56
 
57
  $ch = curl_init();
 
58
  curl_setopt($ch, CURLOPT_URL, $postUrl);
 
59
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
60
  curl_setopt($ch, CURLOPT_HEADER, FALSE);
 
 
61
  curl_setopt($ch, CURLOPT_POST, 1);
62
  curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
63
-
 
64
  // response of the POST request
65
  $response = curl_exec($ch);
66
  curl_close($ch);
67
-
68
  return $response;
69
  }
70
 
@@ -91,6 +94,9 @@ class Infobip_Storesms_Model_ApiClient {
91
 
92
 
93
  public function checkCreditLimit() {
 
 
 
94
 
95
  $config = Mage::getModel('storesms/config');
96
  if ($config->isApiEnabled()==0) return;
17
 
18
  public function sendByCurl(array $smsData) {
19
 
 
20
  if (empty($smsData['recipients']))
21
  throw new Exception(Mage::helper('storesms')->__('No recipients found'));
22
 
54
  $fields = "XML=" . urlencode($xmlString);
55
 
56
  $ch = curl_init();
57
+
58
  curl_setopt($ch, CURLOPT_URL, $postUrl);
59
+ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,2);
60
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
61
  curl_setopt($ch, CURLOPT_HEADER, FALSE);
62
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION,TRUE);
63
+ curl_setopt($ch, CURLOPT_MAXREDIRS,2);
64
  curl_setopt($ch, CURLOPT_POST, 1);
65
  curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
66
+
67
+
68
  // response of the POST request
69
  $response = curl_exec($ch);
70
  curl_close($ch);
 
71
  return $response;
72
  }
73
 
94
 
95
 
96
  public function checkCreditLimit() {
97
+
98
+ if (!Mage::getSingleton('admin/session')->isLoggedIn()) //checks credit limit only for logged admin
99
+ return;
100
 
101
  $config = Mage::getModel('storesms/config');
102
  if ($config->isApiEnabled()==0) return;
app/code/community/Infobip/Storesms/Model/Observer.php CHANGED
@@ -10,98 +10,14 @@
10
  * ...
11
  */
12
  class Infobip_Storesms_Model_Observer {
13
-
14
-
15
-
16
-
17
- /**
18
- *
19
- * @param type $observer
20
- * @return type
21
- */
22
-
23
- public function handleStatus($observer) {
24
-
25
- $config = Mage::getModel('storesms/config');
26
- if ($config->isApiEnabled()==0) return; //do nothing if api is disabled
27
-
28
- $order = $observer->getEvent()->getOrder();
29
- $newStatus = $order->getData('status');
30
- $origStatus = $order->getOrigData('status');
31
-
32
-
33
- //if status has changed run action
34
- if ($newStatus!=$origStatus) {
35
-
36
- $message = $config->getMessageTemplate($newStatus); //get template for new status (if active and exists)
37
- if (!$message) //return if no active message template
38
- return;
39
-
40
-
41
- //getting last tracking number
42
- $trackings = Mage::getResourceModel('sales/order_shipment_track_collection')->setOrderFilter($order)->getData();
43
-
44
- if (!empty($trackings)) {
45
- $last = count($trackings)-1;
46
- $last_tracking_number = $trackings[$last]['track_number'];
47
- }
48
- else
49
- $last_tracking_number = 'no_tracking'; //if no tracking number set "no_tracking" message for {TRACKINGNUMBER} template
50
-
51
-
52
- //getting order data to generate message template
53
- $messageOrderData['{NAME}'] = $order->getShippingAddress()->getData('firstname');
54
- $messageOrderData['{ORDERNUMBER}'] = $order->getIncrement_id();
55
- $messageOrderData['{ORDERSTATUS}'] = $newStatus;
56
- $messageOrderData['{TRACKINGNUMBER}'] = $last_tracking_number;
57
- $messageOrderData['{STORENAME}'] = $config->getStoreName();
58
-
59
- $message = strtr($message,$messageOrderData);
60
-
61
-
62
-
63
-
64
- $api = Mage::getModel('storesms/apiClient');
65
 
66
- //prepare sms content
67
- $msg['recipients'][] = $order->getShippingAddress()->getData('telephone'); //or getBillingAddress
68
- $msg['message'] = $message;
69
- $msg['single_message'] = $config->isSingle(); //allow_long_sms
70
- $msg['sender'] = $config->getSender();//sender
71
 
72
 
73
- //sending sms and getting API response
74
-
75
- try {
76
-
77
- $apiClient = Mage::getModel('storesms/apiClient');
78
- $savedIds = Mage::getModel('storesms/storesms')->saveMessages($msg);
79
- $msg['ids'] = $savedIds;
80
-
81
- $response = $apiClient->sendByCurl($msg);
82
- $responseVerbally = Mage::helper('storesms')->getStatusVerbally(Mage::helper('storesms/xml')->getStatusCode($response));
83
-
84
- if ($responseVerbally!='SEND_OK')
85
- throw new Exception (Mage::helper('storesms')->__('Error sending Message:').' '.$responseVerbally);
86
-
87
- //@successs add comment to order
88
- $newComment = Mage::helper('storesms')->__('SMS notification sent (SMS id:').$msg['ids'][$msg['recipients'][0]].') ' ;
89
- $order->addStatusToHistory($order->getStatus(),$newComment,true);
90
- $this->checkCreditLimit();
91
-
92
- } catch (Exception $e) {
93
- $newComment = Mage::helper('storesms')->__('SMS notification sending error:').' "'.$e->getMessage().'"';
94
- $order->addStatusToHistory($order->getStatus(),$newComment,false);
95
- }
96
-
97
-
98
-
99
-
100
-
101
- }
102
-
103
  }
104
-
105
 
106
  /**
107
  * Generating alert notification if storesmsAPI account balance is low
@@ -143,6 +59,110 @@ class Infobip_Storesms_Model_Observer {
143
  Mage::getSingleton('core/session')->addError($e->getMessage());
144
  }
145
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
  }
147
 
148
  }
10
  * ...
11
  */
12
  class Infobip_Storesms_Model_Observer {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
 
14
+ public static $lastExecutionTime; //to avoid multiple SMS if status was changed more than one time per 2 second
 
 
 
 
15
 
16
 
17
+ public function _construct() {
18
+ if (!self::$lastExecutionTime)
19
+ self::$lastExecutionTime = time();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
  }
 
21
 
22
  /**
23
  * Generating alert notification if storesmsAPI account balance is low
59
  Mage::getSingleton('core/session')->addError($e->getMessage());
60
  }
61
 
62
+ }
63
+
64
+
65
+ public function orderStatusHistorySave($observer) {
66
+
67
+ $config = Mage::getModel('storesms/config');
68
+ if ($config->isApiEnabled()==0) return; //do nothing if api is disabled
69
+
70
+ $history = $observer->getEvent()->getStatusHistory();
71
+
72
+ //only for new status
73
+ if (!$history->getId()) {
74
+
75
+ $order = $history->getOrder();
76
+ $newStatus = $order->getData('status');
77
+ $origStatus = $order->getOrigData('status');
78
+
79
+
80
+ if (time()-self::$lastExecutionTime<=2)
81
+ return;
82
+
83
+ self::$lastExecutionTime = time();
84
+
85
+ //if status has changed run action
86
+ if ($newStatus!=$origStatus) {
87
+
88
+ $message = $config->getMessageTemplate($newStatus); //get template for new status (if active and exists)
89
+ if (!$message) //return if no active message template
90
+ return;
91
+
92
+
93
+ //getting last tracking number
94
+ $tracking = Mage::getResourceModel('sales/order_shipment_track_collection')->setOrderFilter($order)->getData();
95
+
96
+ if (!empty($tracking)) {
97
+ $last = count($tracking)-1;
98
+ $last_tracking_number = $tracking[$last]['track_number'];
99
+ }
100
+ else
101
+ $last_tracking_number = 'no_tracking'; //if no tracking number set "no_tracking" message for {TRACKINGNUMBER} template
102
+
103
+
104
+ //getting order data to generate message template
105
+ $messageOrderData['{NAME}'] = $order->getShippingAddress()->getData('firstname');
106
+ $messageOrderData['{ORDERNUMBER}'] = $order->getIncrement_id();
107
+ $messageOrderData['{ORDERSTATUS}'] = $newStatus;
108
+ $messageOrderData['{TRACKINGNUMBER}'] = $last_tracking_number;
109
+ $messageOrderData['{STORENAME}'] = $config->getStoreName();
110
+
111
+ $message = strtr($message,$messageOrderData);
112
+
113
+ //prepare sms content
114
+ $msg['recipients'][] = Mage::helper('storesms')->getPhoneNumber($order->getShippingAddress()->getData('telephone')); //or getBillingAddress
115
+ $msg['message'] = $message;
116
+ $msg['single_message'] = $config->isSingle(); //allow_long_sms
117
+ $msg['sender'] = $config->getSender();//sender
118
+
119
+
120
+ //sending sms and getting API response
121
+
122
+ try {
123
+
124
+ $apiClient = Mage::getModel('storesms/apiClient');
125
+ $model = Mage::getModel('storesms/storesms');
126
+ $savedIds = $model->saveMessages($msg);
127
+ $msg['ids'] = $savedIds;
128
+ $response = $apiClient->sendByCurl($msg);
129
+ if ($response===false)
130
+ {
131
+
132
+ //save delievery status for each message
133
+ foreach ($msg['ids'] as $messageId) {
134
+ $model->setNewDeliveryStatus($messageId,'API CONNECTION ERROR.');
135
+ $model->unsetData();
136
+ Mage::throwException('API CONNECTION ERROR.');
137
+ }
138
+
139
+ }
140
+ else {
141
+
142
+ $responseVerbally = Mage::helper('storesms')->getStatusVerbally(Mage::helper('storesms/xml')->getStatusCode($response));
143
+ if ($responseVerbally!='SEND_OK')
144
+ Mage::throwException(Mage::helper('storesms')->__('Error sending Message:').' '.$responseVerbally);
145
+ //@successs add comment to order
146
+ $newComment = Mage::helper('storesms')->__('SMS notification sent (SMS id:').$msg['ids'][$msg['recipients'][0]].') ' ;
147
+ $history->setComment($newComment);
148
+ //Mage::getSingleton('core/session')->addSuccess($newComment);
149
+ $this->checkCreditLimit();
150
+ }
151
+
152
+
153
+ } catch (Exception $e) {
154
+ $newComment = Mage::helper('storesms')->__('SMS notification sending error:').' "'.$e->getMessage().'"';
155
+ $history->setComment($newComment);
156
+ //Mage::getSingleton('core/session')->addError($newComment);
157
+ }
158
+
159
+ }
160
+ }
161
+
162
+
163
+
164
+
165
+
166
  }
167
 
168
  }
app/code/community/Infobip/Storesms/etc/config.xml CHANGED
@@ -35,7 +35,7 @@
35
 
36
  <modules>
37
  <Infobip_Storesms>
38
- <version>1.0.0</version>
39
  </Infobip_Storesms>
40
  </modules>
41
 
@@ -190,15 +190,15 @@
190
  </setup>
191
  </storesms_setup>
192
  </resources>
193
- <events>
194
- <sales_order_save_before>
195
  <observers>
196
  <order_new_status>
197
  <class>Infobip_Storesms_Model_Observer</class>
198
- <method>handleStatus</method>
199
  </order_new_status>
200
  </observers>
201
- </sales_order_save_before>
202
  </events>
203
  </global>
204
 
35
 
36
  <modules>
37
  <Infobip_Storesms>
38
+ <version>1.0.2</version>
39
  </Infobip_Storesms>
40
  </modules>
41
 
190
  </setup>
191
  </storesms_setup>
192
  </resources>
193
+ <events>
194
+ <sales_order_status_history_save_before>
195
  <observers>
196
  <order_new_status>
197
  <class>Infobip_Storesms_Model_Observer</class>
198
+ <method>orderStatusHistorySave</method>
199
  </order_new_status>
200
  </observers>
201
+ </sales_order_status_history_save_before>
202
  </events>
203
  </global>
204
 
app/code/community/Infobip/Storesms/etc/system.xml CHANGED
@@ -170,7 +170,7 @@
170
  <expanded>1</expanded>
171
  <fields>
172
 
173
- <status_pending_payment_active translate="label">
174
  <label>Send SMS after status changed to "Pending Payment"</label>
175
  <frontend_type>select</frontend_type>
176
  <source_model>adminhtml/system_config_source_yesno</source_model>
@@ -178,16 +178,16 @@
178
  <show_in_default>1</show_in_default>
179
  <show_in_website>1</show_in_website>
180
  <show_in_store>1</show_in_store>
181
- </status_pending_payment_active>
182
- <status_pending_payment translate="label">
183
  <label>Template</label>
184
  <frontend_type>textarea</frontend_type>
185
  <sort_order>4</sort_order>
186
  <show_in_default>1</show_in_default>
187
  <show_in_website>1</show_in_website>
188
  <show_in_store>1</show_in_store>
189
- <depends><status_pending_payment_active>1</status_pending_payment_active></depends>
190
- </status_pending_payment>
191
 
192
  <status_holded_active translate="label">
193
  <label>Send SMS after status changed to "On Hold"</label>
170
  <expanded>1</expanded>
171
  <fields>
172
 
173
+ <status_pending_active translate="label">
174
  <label>Send SMS after status changed to "Pending Payment"</label>
175
  <frontend_type>select</frontend_type>
176
  <source_model>adminhtml/system_config_source_yesno</source_model>
178
  <show_in_default>1</show_in_default>
179
  <show_in_website>1</show_in_website>
180
  <show_in_store>1</show_in_store>
181
+ </status_pending_active>
182
+ <status_pending translate="label">
183
  <label>Template</label>
184
  <frontend_type>textarea</frontend_type>
185
  <sort_order>4</sort_order>
186
  <show_in_default>1</show_in_default>
187
  <show_in_website>1</show_in_website>
188
  <show_in_store>1</show_in_store>
189
+ <depends><status_pending_active>1</status_pending_active></depends>
190
+ </status_pending>
191
 
192
  <status_holded_active translate="label">
193
  <label>Send SMS after status changed to "On Hold"</label>
app/design/adminhtml/base/default/layout/Infobip_Storesms.xml CHANGED
@@ -1,5 +1,5 @@
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <layout version="0.1.0">
3
  <default>
4
  <reference name="head">
5
  <action method="addJs"><script>infobipStoresms/storesmscounter.js</script></action>
1
  <?xml version="1.0" encoding="UTF-8"?>
2
+ <layout version="0.1.1">
3
  <default>
4
  <reference name="head">
5
  <action method="addJs"><script>infobipStoresms/storesmscounter.js</script></action>
package.xml CHANGED
@@ -1,18 +1,29 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Infobip_Storesms</name>
4
- <version>1.0.0</version>
5
  <stability>stable</stability>
6
  <license>Infobip StoreSMS licence</license>
7
  <channel>community</channel>
8
  <extends/>
9
- <summary>Infobip StoreSMS API module</summary>
10
- <description>Infobip StoreSMS API module</description>
 
 
 
 
 
 
 
 
 
 
 
11
  <notes>Infobip StoreSMS API module</notes>
12
  <authors><author><name>Snowdog</name><user>snowdog</user><email>support@snowdog.pl</email></author><author><name>Marek Jasiukiewicz</name><user>jasiukiewicz_m</user><email>dev@jasiukiewicz.pl</email></author><author><name>Infobip</name><user>Infobip</user><email>magento@infobip.com</email></author></authors>
13
- <date>2013-03-11</date>
14
- <time>12:42:41</time>
15
- <contents><target name="magecommunity"><dir name="Infobip"><dir name="Storesms"><dir name="Block"><dir name="Adminhtml"><dir name="Storesms"><dir name="Edit"><file name="Form.php" hash="1b369dae5e437d2dcf17b30275fcd489"/><dir name="Tab"><file name="Form.php" hash="96d0f24063b0a7af61d55a728e13ad0e"/></dir><file name="Tabs.php" hash="188c99c05a103090fb0d3c65a30529a5"/></dir><file name="Edit.php" hash="d2095dd15d30a7ee0bb50f12c9d91c8d"/><file name="Grid.php" hash="b411c3db6224c7774811fa5bed9dbe70"/></dir><file name="Storesms.php" hash="7bb4da25d3b5bc3e7363cf8b9a86bfd2"/><dir name="System"><dir name="Config"><dir name="Fieldset"><file name="Branding.php" hash="eebc4a367ad619b8fe105dfd2fe42394"/></dir></dir></dir></dir><dir name="Buttons"><file name="Contact.php" hash="a9ea799fe52cac5ce9eced905173a69d"/><file name="NewAccount.php" hash="69047d85be7fe818d76e2c09c8f80805"/></dir></dir><dir name="Helper"><file name="Data.php" hash="2b7999c16e3f2e9400a31f87e0fa2fbc"/><file name="Xml.php" hash="a858c494660f260fae1d26c4baf98258"/></dir><dir name="Model"><file name="ApiClient.php" hash="c76b7abe20f80bf636c7c8db1f3266ff"/><file name="Config.php" hash="77679160df8b273550f2be7144c65723"/><file name="Cron.php" hash="7eabce279410694dd39ff7ba47b891ae"/><file name="Observer.php" hash="23dabc6ef2ee78ad24827f9d0ad2dc0d"/><dir name="Resource"><dir name="Storesms"><file name="Collection.php" hash="9ddcb7f555bce6a7d61b94a1b8411365"/></dir><file name="Storesms.php" hash="4c8de8d71e2b5f7240eced9ff892823f"/></dir><file name="Storesms.php" hash="13af9b62b847f156767250bb07079aba"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="StoresmsController.php" hash="f1ecf02504ed1ce8f1364f75df4827cf"/></dir></dir><dir name="etc"><file name="config.xml" hash="6b9a72ca2310e7319079c7132a2029e5"/><file name="system.xml" hash="89b70927b7cb0dc6c0b4cf81a119e335"/></dir><dir name="sql"><dir name="storesms_setup"><file name="install-1.0.0.php" hash="05abcca86b256b1fe6ecc75dca077042"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="layout"><file name="Infobip_Storesms.xml" hash="f24aee754602413e872941f4b7768e67"/></dir><dir name="template"><dir name="storesms"><dir name="system"><dir name="config"><dir name="fieldset"><file name="branding.phtml" hash="97fd7bad4030f34f3869363786cc46c8"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="images"><dir name="storesms"><file name="storesms_header.png" hash="ca8dce29b3bbe56ae222587b103f27ac"/></dir></dir><dir name="css"><dir name="storesms"><file name="skin.css" hash="2f6c219956ed5ac0bd28256279cdc0cf"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Infobip_Storesms.xml" hash="ea5ef63fd7a211500bdaefaf6e56809e"/></dir></target><target name="mage"><dir name="js"><dir name="infobipStoresms"><file name="storesmscounter.js" hash="172592c438b41b35d5b3bec9ad8afc0d"/></dir></dir></target><target name="magelocale"><dir name="pl_PL"><file name="Infobip_Storesms.csv" hash="00700b577d39d3c4f9e0553301cdead7"/></dir></target></contents>
16
  <compatible/>
17
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Infobip_Storesms</name>
4
+ <version>1.0.2</version>
5
  <stability>stable</stability>
6
  <license>Infobip StoreSMS licence</license>
7
  <channel>community</channel>
8
  <extends/>
9
+ <summary>By using Infobip StoreSMS you can easily keep your customers informed about the status of their shipments. If your business sells or makes products that need shipping, Infobip StoreSMS is the right solution for you.</summary>
10
+ <description>By using Infobip StoreSMS you can easily keep your customers informed about the status of their shipments. If your business sells or makes products that need shipping, Infobip StoreSMS is the right solution for you.&#xD;
11
+ &#xD;
12
+ Infobip StoreSMS is a plugin based on SMS API technology.&#xD;
13
+ Features&#xD;
14
+ &#xD;
15
+ Keep customers happy - providing the right information at the right time adds value to your business and increases customer loyalty.&#xD;
16
+ &#xD;
17
+ Easy integration - a quick and esy way to provide your business with its own personal SMS service.&#xD;
18
+ &#xD;
19
+ Bulk SMS - send out coupons or promotional offers and promote your business.&#xD;
20
+ &#xD;
21
+ Sending speed - send up to 20 SMS messages per second over a highly reliable platform. </description>
22
  <notes>Infobip StoreSMS API module</notes>
23
  <authors><author><name>Snowdog</name><user>snowdog</user><email>support@snowdog.pl</email></author><author><name>Marek Jasiukiewicz</name><user>jasiukiewicz_m</user><email>dev@jasiukiewicz.pl</email></author><author><name>Infobip</name><user>Infobip</user><email>magento@infobip.com</email></author></authors>
24
+ <date>2013-06-18</date>
25
+ <time>09:11:49</time>
26
+ <contents><target name="magecommunity"><dir name="Infobip"><dir name="Storesms"><dir name="Block"><dir name="Adminhtml"><dir name="Storesms"><dir name="Edit"><file name="Form.php" hash="1b369dae5e437d2dcf17b30275fcd489"/><dir name="Tab"><file name="Form.php" hash="96d0f24063b0a7af61d55a728e13ad0e"/></dir><file name="Tabs.php" hash="188c99c05a103090fb0d3c65a30529a5"/></dir><file name="Edit.php" hash="d2095dd15d30a7ee0bb50f12c9d91c8d"/><file name="Grid.php" hash="b411c3db6224c7774811fa5bed9dbe70"/></dir><file name="Storesms.php" hash="7bb4da25d3b5bc3e7363cf8b9a86bfd2"/><dir name="System"><dir name="Config"><dir name="Fieldset"><file name="Branding.php" hash="eebc4a367ad619b8fe105dfd2fe42394"/></dir></dir></dir></dir><dir name="Buttons"><file name="Contact.php" hash="a9ea799fe52cac5ce9eced905173a69d"/><file name="NewAccount.php" hash="69047d85be7fe818d76e2c09c8f80805"/></dir></dir><dir name="Helper"><file name="Data.php" hash="2b7999c16e3f2e9400a31f87e0fa2fbc"/><file name="Xml.php" hash="a858c494660f260fae1d26c4baf98258"/></dir><dir name="Model"><file name="ApiClient.php" hash="257b17dc25de72c171736959e2aa7e47"/><file name="Config.php" hash="77679160df8b273550f2be7144c65723"/><file name="Cron.php" hash="7eabce279410694dd39ff7ba47b891ae"/><file name="Observer.php" hash="a9b1dfc58e6c37339d85060a0d24576c"/><dir name="Resource"><dir name="Storesms"><file name="Collection.php" hash="9ddcb7f555bce6a7d61b94a1b8411365"/></dir><file name="Storesms.php" hash="4c8de8d71e2b5f7240eced9ff892823f"/></dir><file name="Storesms.php" hash="13af9b62b847f156767250bb07079aba"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="StoresmsController.php" hash="f1ecf02504ed1ce8f1364f75df4827cf"/></dir></dir><dir name="etc"><file name="config.xml" hash="66b8b96487215d4d817209fcaedc4344"/><file name="system.xml" hash="dd9a9dcaff7211788e93589fb5055197"/></dir><dir name="sql"><dir name="storesms_setup"><file name="install-1.0.0.php" hash="05abcca86b256b1fe6ecc75dca077042"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="layout"><file name="Infobip_Storesms.xml" hash="adb7f697c159b49cc17313bf8d5426a8"/></dir><dir name="template"><dir name="storesms"><dir name="system"><dir name="config"><dir name="fieldset"><file name="branding.phtml" hash="97fd7bad4030f34f3869363786cc46c8"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="images"><dir name="storesms"><file name="storesms_header.png" hash="ca8dce29b3bbe56ae222587b103f27ac"/></dir></dir><dir name="css"><dir name="storesms"><file name="skin.css" hash="2f6c219956ed5ac0bd28256279cdc0cf"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Infobip_Storesms.xml" hash="ea5ef63fd7a211500bdaefaf6e56809e"/></dir></target><target name="mage"><dir name="js"><dir name="infobipStoresms"><file name="storesmscounter.js" hash="172592c438b41b35d5b3bec9ad8afc0d"/></dir></dir></target><target name="magelocale"><dir name="pl_PL"><file name="Infobip_Storesms.csv" hash="00700b577d39d3c4f9e0553301cdead7"/></dir></target></contents>
27
  <compatible/>
28
  <dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
29
  </package>