Version Notes
Esendex SMS
Download this release
Release Info
Developer | Esendex |
Extension | Esendex_SMS |
Version | 0.1.0 |
Comparing to | |
See all releases |
Version 0.1.0
- LICENSE.md +25 -0
- app/code/community/Esendex/Events/Block/Adminhtml/System/Config/CronTime.php +64 -0
- app/code/community/Esendex/Events/Helper/Data.php +25 -0
- app/code/community/Esendex/Events/Model/AdminSalesReport.php +77 -0
- app/code/community/Esendex/Events/Model/Adminhtml/System/Config/Backend/CronTime.php +46 -0
- app/code/community/Esendex/Events/Model/EventProcessor/AdminSalesReport.php +406 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderAbstract.php +147 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderShipped.php +104 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderShippedWithTracking.php +107 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Abstract.php +103 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Canceled.php +29 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Closed.php +29 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Complete.php +29 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/OnHold.php +29 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/PaymentReview.php +29 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Pending.php +29 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/PendingPayment.php +29 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/PendingPaypal.php +29 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Processing.php +29 -0
- app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/SuspectedFraud.php +29 -0
- app/code/community/Esendex/Events/Model/Listener/TriggerCreate/AdminSalesReport.php +70 -0
- app/code/community/Esendex/Events/Model/Listener/TriggerCreate/OrderStatusChange.php +42 -0
- app/code/community/Esendex/Events/Model/Resource/AdminSalesReport.php +160 -0
- app/code/community/Esendex/Events/Model/Resource/AdminSalesReport/Collection.php +122 -0
- app/code/community/Esendex/Events/Model/Resource/AdminSalesReport/Order/Collection.php +112 -0
- app/code/community/Esendex/Events/etc/config.xml +110 -0
- app/code/community/Esendex/Events/etc/system.xml +46 -0
- app/code/community/Esendex/Events/sql/esendex_events_setup/install-0.1.0.php +196 -0
- app/code/community/Esendex/Events/sql/esendex_events_setup/upgrade-0.1.0-0.2.0.php +342 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/AccountNotifications.php +47 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/Grid/Renderer/Translate.php +21 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/Messages.php +37 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/Messages/Grid.php +212 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/MobileSalesReport.php +40 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/MobileSalesReport/Edit.php +70 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/MobileSalesReport/Edit/Form.php +78 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/MobileSalesReport/Grid.php +62 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/System/Config/Section/Details.php +171 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/Trigger.php +40 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/Trigger/Edit.php +164 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/Trigger/Edit/Form.php +473 -0
- app/code/community/Esendex/Sms/Block/Adminhtml/Trigger/Grid.php +230 -0
- app/code/community/Esendex/Sms/Helper/Data.php +42 -0
- app/code/community/Esendex/Sms/Model/AccountNotifications.php +199 -0
- app/code/community/Esendex/Sms/Model/AccountObserver.php +109 -0
- app/code/community/Esendex/Sms/Model/Api/Api.php +169 -0
- app/code/community/Esendex/Sms/Model/Api/Factory.php +125 -0
- app/code/community/Esendex/Sms/Model/AutoloaderObserver.php +135 -0
- app/code/community/Esendex/Sms/Model/Event.php +105 -0
- app/code/community/Esendex/Sms/Model/EventProcessor/Abstract.php +93 -0
- app/code/community/Esendex/Sms/Model/EventProcessor/Interface.php +80 -0
- app/code/community/Esendex/Sms/Model/Http/HttpClient.php +237 -0
- app/code/community/Esendex/Sms/Model/Logger/Factory.php +57 -0
- app/code/community/Esendex/Sms/Model/Logger/Logger.php +77 -0
- app/code/community/Esendex/Sms/Model/Logger/LoggerAwareInterface.php +36 -0
- app/code/community/Esendex/Sms/Model/Message.php +114 -0
- app/code/community/Esendex/Sms/Model/MessageInterpolator.php +131 -0
- app/code/community/Esendex/Sms/Model/MessageProcessor/Factory.php +36 -0
- app/code/community/Esendex/Sms/Model/MessageProcessor/MessageProcessor.php +151 -0
- app/code/community/Esendex/Sms/Model/Observer.php +113 -0
- app/code/community/Esendex/Sms/Model/Resource/Event.php +31 -0
- app/code/community/Esendex/Sms/Model/Resource/Event/Collection.php +146 -0
- app/code/community/Esendex/Sms/Model/Resource/SampleMessage.php +31 -0
- app/code/community/Esendex/Sms/Model/Resource/SampleMessage/Collection.php +40 -0
- app/code/community/Esendex/Sms/Model/Resource/Setup.php +211 -0
- app/code/community/Esendex/Sms/Model/Resource/Trigger.php +103 -0
- app/code/community/Esendex/Sms/Model/Resource/Trigger/Collection.php +171 -0
- app/code/community/Esendex/Sms/Model/Resource/TriggerAbstract.php +127 -0
- app/code/community/Esendex/Sms/Model/SampleMessage.php +49 -0
- app/code/community/Esendex/Sms/Model/SentMessages.php +155 -0
- app/code/community/Esendex/Sms/Model/Trigger.php +44 -0
- app/code/community/Esendex/Sms/Model/TriggerAbstract.php +169 -0
- app/code/community/Esendex/Sms/Model/ValidatableInterface.php +38 -0
- app/code/community/Esendex/Sms/Model/Variable.php +121 -0
- app/code/community/Esendex/Sms/controllers/Adminhtml/Sms/MessagesController.php +67 -0
- app/code/community/Esendex/Sms/controllers/Adminhtml/Sms/MobileSalesReportController.php +55 -0
- app/code/community/Esendex/Sms/controllers/Adminhtml/Sms/TriggerController.php +366 -0
- app/code/community/Esendex/Sms/etc/adminhtml.xml +71 -0
- app/code/community/Esendex/Sms/etc/config.xml +162 -0
- app/code/community/Esendex/Sms/etc/jstranslator.xml +38 -0
- app/code/community/Esendex/Sms/etc/system.xml +111 -0
- app/code/community/Esendex/Sms/sql/esendex_sms_setup/install-0.1.0.php +257 -0
- app/design/adminhtml/default/default/layout/esendex/sms.xml +129 -0
- app/design/adminhtml/default/default/template/esendex/sms/notifications.phtml +24 -0
- app/design/adminhtml/default/default/template/esendex/sms/system/config/section/details.phtml +122 -0
- app/design/adminhtml/default/default/template/esendex/widget/messages/grid.phtml +216 -0
- app/design/adminhtml/default/default/template/esendex/widget/messages/info.phtml +25 -0
- app/etc/modules/Esendex_Events.xml +29 -0
- app/etc/modules/Esendex_Sms.xml +27 -0
- app/locale/de_DE/Esendex_Sms.csv +176 -0
- app/locale/en_GB/Esendex_Sms.csv +0 -0
- app/locale/en_US/Esendex_Sms.csv +0 -0
- app/locale/es_ES/Esendex_Sms.csv +176 -0
- app/locale/fr_FR/Esendex_Sms.csv +176 -0
- lib/Esendex/AccountService.php +103 -0
- lib/Esendex/Authentication/AbstractAuthentication.php +56 -0
- lib/Esendex/Authentication/IAuthentication.php +42 -0
- lib/Esendex/Authentication/LoginAuthentication.php +61 -0
- lib/Esendex/Authentication/SessionAuthentication.php +59 -0
- lib/Esendex/CheckAccessService.php +107 -0
- lib/Esendex/DispatchService.php +124 -0
- lib/Esendex/Exceptions/ArgumentException.php +37 -0
- lib/Esendex/Exceptions/EsendexException.php +72 -0
- lib/Esendex/Exceptions/XmlException.php +57 -0
- lib/Esendex/Http/HttpClient.php +179 -0
- lib/Esendex/Http/IHttp.php +71 -0
- lib/Esendex/Http/UriBuilder.php +85 -0
- lib/Esendex/InboxService.php +115 -0
- lib/Esendex/MessageBodyService.php +114 -0
- lib/Esendex/MessageHeaderService.php +88 -0
- lib/Esendex/MessageInformationService.php +96 -0
- lib/Esendex/Model/Account.php +156 -0
- lib/Esendex/Model/Api.php +54 -0
- lib/Esendex/Model/DispatchMessage.php +132 -0
- lib/Esendex/Model/InboxMessage.php +78 -0
- lib/Esendex/Model/InboxPage.php +172 -0
- lib/Esendex/Model/Message.php +107 -0
- lib/Esendex/Model/MessageBody.php +86 -0
- lib/Esendex/Model/MessageInformation.php +91 -0
- lib/Esendex/Model/ResultItem.php +67 -0
- lib/Esendex/Model/ResultMessage.php +119 -0
- lib/Esendex/Model/SentMessage.php +91 -0
- lib/Esendex/Model/SentMessagesPage.php +172 -0
- lib/Esendex/Parser/AccountXmlParser.php +74 -0
- lib/Esendex/Parser/DispatchXmlParser.php +104 -0
- lib/Esendex/Parser/InboxXmlParser.php +59 -0
- lib/Esendex/Parser/MessageHeaderXmlParser.php +91 -0
- lib/Esendex/Parser/MessageInformationXmlParser.php +91 -0
- lib/Esendex/Parser/SentMessagesXmlParser.php +59 -0
- lib/Esendex/SentMessagesService.php +106 -0
- lib/Esendex/SessionService.php +73 -0
- lib/Psr/Log/AbstractLogger.php +120 -0
- lib/Psr/Log/InvalidArgumentException.php +7 -0
- lib/Psr/Log/LogLevel.php +18 -0
- lib/Psr/Log/LoggerAwareInterface.php +17 -0
- lib/Psr/Log/LoggerAwareTrait.php +22 -0
- lib/Psr/Log/LoggerInterface.php +114 -0
- lib/Psr/Log/LoggerTrait.php +131 -0
- lib/Psr/Log/NullLogger.php +27 -0
- lib/ca-bundle.pem +3848 -0
- package.xml +2 -0
- skin/adminhtml/default/default/css/esendex/sms.css +32 -0
- skin/adminhtml/default/default/css/esendex/system.css +132 -0
- skin/adminhtml/default/default/images/esendex/autoresponders.png +0 -0
- skin/adminhtml/default/default/images/esendex/bulksend.png +0 -0
- skin/adminhtml/default/default/images/esendex/buy.png +0 -0
- skin/adminhtml/default/default/images/esendex/downloadsentitems.png +0 -0
- skin/adminhtml/default/default/images/esendex/esendex-logo.png +0 -0
- skin/adminhtml/default/default/images/esendex/help.png +0 -0
- skin/adminhtml/default/default/js/esendex/sms/edit.js +188 -0
LICENSE.md
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Esendex Community Software License v.1.0 (ECSL-1.0)
|
2 |
+
This Esendex Open Software License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following licensing notice adjacent to the copyright notice for the Original Work:
|
3 |
+
Licensed under the Esendex Community Software License version 1.0
|
4 |
+
1) Grant of Copyright License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, for the duration of the copyright, to do the following (subject to the exclusions in Section 4.1):
|
5 |
+
a) to reproduce the Original Work in copies, either alone or as part of a collective work;
|
6 |
+
b) to translate, adapt, alter, transform, modify, or arrange the Original Work, thereby creating derivative works ("Derivative Works") based upon the Original Work;
|
7 |
+
c) to distribute or communicate copies of the Original Work and Derivative Works to the public, with the proviso that copies of Original Work or Derivative Works that You distribute or communicate shall be licensed under this Esendex Community Software License;
|
8 |
+
d) to perform the Original Work publicly; and
|
9 |
+
e) to display the Original Work publicly.
|
10 |
+
2) Grant of Patent License. Licensor grants You a worldwide, royalty-free, non-exclusive, sublicensable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, for the duration of the patents, to make, use, sell, offer for sale, have made, and import the Original Work and Derivative Works.
|
11 |
+
3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work.
|
12 |
+
4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior permission of the Licensor. Except as expressly stated herein, nothing in this License grants any license to Licensor's trademarks, copyrights, patents, trade secrets or any other intellectual property. No patent license is granted to make, use, sell, offer for sale, have made, or import embodiments of any patent claims other than the licensed claims defined in Section 2. No license is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under terms different from this License any Original Work that Licensor otherwise would have a right to license.
|
13 |
+
4.1) Further Exclusions From Licence Grant. You may not use, modify, enhance or otherwise change the Original Work or any Derivative Work without prior written permission of the Licensor in a way that at the Licensor’s sole discretion may be deemed competitive with any products or services offered by the Licensor or otherwise conflict with the interests of the Licensor.
|
14 |
+
4.2) Revokation Of Licence Grant. The Licensor reserves the right at its sole discretion to immediately terminate the License at any time should the Licensor deem any use or modification of the Original Work or any Derivative Work to be conflict with the Licensor’s interests.
|
15 |
+
5) External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).
|
16 |
+
6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent, or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work.
|
17 |
+
7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately preceding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of non-infringement, merchantability or fitness for a particular purpose. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to the Original Work is granted by this License except under this disclaimer.
|
18 |
+
8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to anyone for any indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to the extent applicable law prohibits such limitation.
|
19 |
+
9) Acceptance and Termination. If, at any time, You expressly assented to this License, that assent indicates your clear and irrevocable acceptance of this License and all of its terms and conditions. If You distribute or communicate copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. This License conditions your rights to undertake the activities listed in Section 1, including your right to create Derivative Works based upon the Original Work, and doing so without honoring these terms and conditions is prohibited by copyright law and international treaty. Nothing in this License is intended to affect copyright exceptions and limitations (including "fair use" or "fair dealing"). This License shall terminate immediately and You may no longer exercise any of the rights granted to You by this License upon your failure to honor the conditions in Section 1(c).
|
20 |
+
10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware.
|
21 |
+
11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of copyright or patent law in the appropriate jurisdiction. This section shall survive the termination of this License.
|
22 |
+
12) Attorneys' Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License.
|
23 |
+
13) Miscellaneous. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable.
|
24 |
+
14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
|
25 |
+
15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You.
|
app/code/community/Esendex/Events/Block/Adminhtml/System/Config/CronTime.php
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Block_Adminhtml_System_Config_CronTime
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Block_Adminhtml_System_Config_CronTime extends Mage_Adminhtml_Block_System_Config_Form_Field
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
27 |
+
*
|
28 |
+
* @return string
|
29 |
+
*/
|
30 |
+
protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
|
31 |
+
{
|
32 |
+
$element->addClass('select');
|
33 |
+
|
34 |
+
$hours = 0;
|
35 |
+
$minutes = 0;
|
36 |
+
|
37 |
+
if ($value = $element->getValue()) {
|
38 |
+
$values = explode(',', $value);
|
39 |
+
if (is_array($values) && count($values) == 2) {
|
40 |
+
$hours = $values[0];
|
41 |
+
$minutes = $values[1];
|
42 |
+
}
|
43 |
+
}
|
44 |
+
$optionTemplate = '<option value="%s" %s>%s</option>';
|
45 |
+
$html = sprintf('<input type="hidden" id="%s" />', $element->getHtmlId());
|
46 |
+
$html .= sprintf('<select name="%s" %s style="width:60px">', $element->getName(), $element->serialize($element->getHtmlAttributes()));
|
47 |
+
|
48 |
+
for ($i = 0; $i < 24; $i++) {
|
49 |
+
$hour = str_pad($i, 2, '0', STR_PAD_LEFT);
|
50 |
+
$html .= sprintf($optionTemplate, $hour, ((int) $hours === $i) ? 'selected="selected"' : '', $hour);
|
51 |
+
}
|
52 |
+
|
53 |
+
$html .= '</select> : ';
|
54 |
+
$html .= sprintf('<select name="%s" %s style="width:60px">', $element->getName(), $element->serialize($element->getHtmlAttributes()));
|
55 |
+
|
56 |
+
for ($i = 0; $i < 60; $i++) {
|
57 |
+
$minute = str_pad($i, 2, '0', STR_PAD_LEFT);
|
58 |
+
$html .= sprintf($optionTemplate, $minute, ((int) $minutes === $i) ? 'selected="selected"' : '', $minute);
|
59 |
+
}
|
60 |
+
$html .= '</select>';
|
61 |
+
$html .= $element->getAfterElementHtml();
|
62 |
+
return $html;
|
63 |
+
}
|
64 |
+
}
|
app/code/community/Esendex/Events/Helper/Data.php
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Helper_Data
|
20 |
+
*
|
21 |
+
* @author Michael Woodward <michael@wearejh.com>
|
22 |
+
*/
|
23 |
+
class Esendex_Events_Helper_Data extends Mage_Core_Helper_Abstract
|
24 |
+
{
|
25 |
+
}
|
app/code/community/Esendex/Events/Model/AdminSalesReport.php
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Trigger_AdminSalesReport
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_AdminSalesReport extends Esendex_Sms_Model_TriggerAbstract
|
23 |
+
{
|
24 |
+
|
25 |
+
const ENTITY = 'esendex_sms_trigger_admin_sales_report';
|
26 |
+
const CACHE_TAG = 'esendex_sms_trigger_admin_sales_report';
|
27 |
+
|
28 |
+
/**
|
29 |
+
* @var array
|
30 |
+
*/
|
31 |
+
protected $errors = array();
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Constructor
|
35 |
+
*/
|
36 |
+
public function _construct()
|
37 |
+
{
|
38 |
+
parent::_construct();
|
39 |
+
$this->_init('esendex_events/adminSalesReport');
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Filter & validate recipients
|
44 |
+
*/
|
45 |
+
public function validate()
|
46 |
+
{
|
47 |
+
parent::validate();
|
48 |
+
|
49 |
+
$recipients = explode("\n", str_replace("\r", '', $this->getData('recipients')));
|
50 |
+
$recipients = array_unique(array_map('trim', $recipients));
|
51 |
+
$recipients = array_filter($recipients, 'strlen');
|
52 |
+
|
53 |
+
if (false === $recipients || count($recipients) < 1) {
|
54 |
+
$this->addError('Recipients cannot be empty');
|
55 |
+
}
|
56 |
+
|
57 |
+
try {
|
58 |
+
$startDate = new DateTime($this->getData('start_date'));
|
59 |
+
} catch (Exception $e) {
|
60 |
+
$this->addError('Invalid Start Date');
|
61 |
+
return !$this->hasErrors();
|
62 |
+
}
|
63 |
+
|
64 |
+
// Get last errors & warnings
|
65 |
+
$errors = DateTime::getLastErrors();
|
66 |
+
|
67 |
+
if (!empty($errors['errors']) || !empty($errors['warnings'])) {
|
68 |
+
$this->addError('Invalid Start Date');
|
69 |
+
}
|
70 |
+
|
71 |
+
// Set filtered & validated state
|
72 |
+
$this->setData('recipients', $recipients);
|
73 |
+
$this->setData('start_date', $startDate->format(Varien_Date::DATETIME_PHP_FORMAT));
|
74 |
+
|
75 |
+
return !$this->hasErrors();
|
76 |
+
}
|
77 |
+
}
|
app/code/community/Esendex/Events/Model/Adminhtml/System/Config/Backend/CronTime.php
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_Adminhtml_System_Config_Backend_CronTime
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_Adminhtml_System_Config_Backend_CronTime extends Mage_Core_Model_Config_Data
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @var string
|
26 |
+
*/
|
27 |
+
protected $cronCode = 'esendex_sales_report';
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Save the time so it can be accessed by the scheduler
|
31 |
+
*/
|
32 |
+
protected function _afterSave()
|
33 |
+
{
|
34 |
+
$cronPath = sprintf('crontab/jobs/%s/schedule/cron_expr', $this->cronCode);
|
35 |
+
$time = $this->getData('groups/mobile_sales_report/fields/time/value');
|
36 |
+
|
37 |
+
$cronExprArray = array(intval($time[1]), intval($time[0]), '*', '*', '*');
|
38 |
+
$cronExprString = implode(' ', $cronExprArray);
|
39 |
+
|
40 |
+
Mage::getModel('core/config_data')
|
41 |
+
->load($cronPath, 'path')
|
42 |
+
->setValue($cronExprString)
|
43 |
+
->setPath($cronPath)
|
44 |
+
->save();
|
45 |
+
}
|
46 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/AdminSalesReport.php
ADDED
@@ -0,0 +1,406 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Psr\Log\LoggerInterface;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Class Esendex_Events_Model_EventProcessor_AdminSalesReport
|
22 |
+
* @author Michael Woodward <michael@wearejh.com>
|
23 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
24 |
+
*/
|
25 |
+
class Esendex_Events_Model_EventProcessor_AdminSalesReport
|
26 |
+
extends Esendex_Sms_Model_EventProcessor_Abstract
|
27 |
+
implements Esendex_Sms_Model_EventProcessor_Interface
|
28 |
+
{
|
29 |
+
/**
|
30 |
+
* @var array
|
31 |
+
*/
|
32 |
+
public static $frequencies = array(
|
33 |
+
'daily' => 'Daily',
|
34 |
+
'weekly' => 'Weekly',
|
35 |
+
'monthly' => 'Monthly'
|
36 |
+
);
|
37 |
+
|
38 |
+
/**
|
39 |
+
* @var array
|
40 |
+
*/
|
41 |
+
protected $variables = array(
|
42 |
+
'store_name' => 'storename',
|
43 |
+
'start_date' => 'startdate',
|
44 |
+
'end_date' => 'enddate',
|
45 |
+
'total_sales' => 'numberoforders',
|
46 |
+
'qty_items_sold' => 'numberofitemssold',
|
47 |
+
'net_total' => 'nettotal',
|
48 |
+
'gross_total' => 'grandtotal'
|
49 |
+
);
|
50 |
+
|
51 |
+
/**
|
52 |
+
* @var LoggerInterface|null
|
53 |
+
*/
|
54 |
+
protected $logger = null;
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Start date for report
|
58 |
+
*
|
59 |
+
* @var null|DateTime
|
60 |
+
*/
|
61 |
+
protected $startDate;
|
62 |
+
|
63 |
+
/**
|
64 |
+
* End date for report
|
65 |
+
*
|
66 |
+
* @var null|DateTime
|
67 |
+
*/
|
68 |
+
protected $endDate;
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Current date string for better unit tests
|
72 |
+
* @var string
|
73 |
+
*/
|
74 |
+
protected $currentDate = 'now';
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Allow for better unit tests
|
78 |
+
* @var int
|
79 |
+
*/
|
80 |
+
protected $firstDay;
|
81 |
+
|
82 |
+
/**
|
83 |
+
* Allow for better unit tests
|
84 |
+
* @var string|null
|
85 |
+
*/
|
86 |
+
protected $timezone = null;
|
87 |
+
|
88 |
+
/**
|
89 |
+
* We need to check the frequency of the cron
|
90 |
+
*
|
91 |
+
* @param Esendex_Sms_Model_TriggerAbstract $trigger
|
92 |
+
* @return bool
|
93 |
+
*/
|
94 |
+
public function shouldSend(Esendex_Sms_Model_TriggerAbstract $trigger)
|
95 |
+
{
|
96 |
+
try {
|
97 |
+
$startDate = new DateTime($trigger->getData('start_date'));
|
98 |
+
$now = new DateTime($this->currentDate);
|
99 |
+
} catch (Exception $e) {
|
100 |
+
$this->logger->critical($e->getMessage());
|
101 |
+
return false;
|
102 |
+
}
|
103 |
+
|
104 |
+
// Don't send if we haven't reached the start date yet
|
105 |
+
if ($startDate > $now) {
|
106 |
+
return false;
|
107 |
+
}
|
108 |
+
|
109 |
+
$frequency = $trigger->getData('frequency');
|
110 |
+
|
111 |
+
// If its daily we only run the cron once a day so send
|
112 |
+
if ($frequency === 'daily') {
|
113 |
+
return true;
|
114 |
+
}
|
115 |
+
|
116 |
+
// Get the diff between the two dates
|
117 |
+
$diff = $now->diff($startDate);
|
118 |
+
|
119 |
+
if ($frequency === 'weekly') {
|
120 |
+
// Weekly check, get total days diff
|
121 |
+
$daysDiff = (int) $diff->format('%a');
|
122 |
+
|
123 |
+
// If exactly divisible by 7 we are a valid week diff
|
124 |
+
if ($daysDiff % 7 === 0) {
|
125 |
+
return true;
|
126 |
+
}
|
127 |
+
} else {
|
128 |
+
// Return if same day of the month as start date
|
129 |
+
if ($now->format('d') === $startDate->format('d')) {
|
130 |
+
return true;
|
131 |
+
}
|
132 |
+
|
133 |
+
// if start day is greater than total days in this month
|
134 |
+
$isLargerMonth = (int) $startDate->format('d') > (int) $now->format('t');
|
135 |
+
|
136 |
+
// if current day is last day of month
|
137 |
+
if ($isLargerMonth && $now->format('d') === $now->format('t')) {
|
138 |
+
return true;
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
return false;
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* Build container with available variables
|
147 |
+
*
|
148 |
+
* @param Esendex_Sms_Model_TriggerAbstract $trigger
|
149 |
+
* @return Varien_Object
|
150 |
+
* @throws Exception
|
151 |
+
*/
|
152 |
+
public function getVariableContainer(Esendex_Sms_Model_TriggerAbstract $trigger)
|
153 |
+
{
|
154 |
+
$data = array();
|
155 |
+
if ($this->parameters instanceof Varien_Object) {
|
156 |
+
$data = $this->parameters->getData();
|
157 |
+
}
|
158 |
+
|
159 |
+
$frequency = $trigger->getData('frequency');
|
160 |
+
$this->setPeriodDateByFrequency($frequency);
|
161 |
+
|
162 |
+
$storeId = reset($trigger->getData('store_id'));
|
163 |
+
$currency = Mage::app()->getStore($storeId)->getDefaultCurrency();
|
164 |
+
$endTotals = $this->getReportTotals($this->startDate, $this->endDate, $storeId);
|
165 |
+
|
166 |
+
$data = array_merge($data, array(
|
167 |
+
'store_name' => $this->getStoreName($storeId),
|
168 |
+
'start_date' => $this->startDate->format('d/m/Y H:i'),
|
169 |
+
'end_date' => $this->endDate->format('d/m/Y H:i'),
|
170 |
+
'net_total' => $currency->format($endTotals->getData('net'), array(), false),
|
171 |
+
'gross_total' => $currency->format($endTotals->getData('gross'), array(), false),
|
172 |
+
'total_sales' => $endTotals->getData('total_orders'),
|
173 |
+
'qty_items_sold' => number_format($endTotals->getData('total_items'), 2)
|
174 |
+
));
|
175 |
+
|
176 |
+
$container = new Varien_Object($data);
|
177 |
+
return $container;
|
178 |
+
}
|
179 |
+
|
180 |
+
/**
|
181 |
+
* Get start and end DateTime objects from frequency
|
182 |
+
*
|
183 |
+
* @param $frequency
|
184 |
+
* @throws Exception
|
185 |
+
*/
|
186 |
+
protected function setPeriodDateByFrequency($frequency)
|
187 |
+
{
|
188 |
+
$timezone = new DateTimeZone($this->getTimezone());
|
189 |
+
|
190 |
+
try {
|
191 |
+
$startDate = new DateTime($this->currentDate, $timezone);
|
192 |
+
$endDate = clone $startDate;
|
193 |
+
} catch (Exception $e) {
|
194 |
+
$this->logger->critical($e->getMessage());
|
195 |
+
throw $e;
|
196 |
+
}
|
197 |
+
|
198 |
+
// DateTime intervals
|
199 |
+
$dayInterval = new DateInterval('P1D');
|
200 |
+
$monthInterval = new DateInterval('P1M');
|
201 |
+
|
202 |
+
// Get to and from dates
|
203 |
+
switch ($frequency) {
|
204 |
+
case 'weekly':
|
205 |
+
$now = clone $startDate;
|
206 |
+
$firstWeekDay = $this->getFirstDay();
|
207 |
+
$days = array('sun', 'mon', 'tue', 'wed', 'thur', 'fri', 'sat');
|
208 |
+
|
209 |
+
$endDate
|
210 |
+
->modify(sprintf('this %s', $days[$firstWeekDay]))
|
211 |
+
->sub($dayInterval)
|
212 |
+
->setTime(23, 59, 59);
|
213 |
+
|
214 |
+
if ($endDate > $now) {
|
215 |
+
$endDate->sub(new DateInterval('P7D'));
|
216 |
+
}
|
217 |
+
|
218 |
+
$startDate = clone $endDate;
|
219 |
+
$startDate
|
220 |
+
->sub(new DateInterval('P6D'))
|
221 |
+
->setTime(0, 0, 0);
|
222 |
+
break;
|
223 |
+
case 'monthly':
|
224 |
+
$startDate
|
225 |
+
->sub($monthInterval)
|
226 |
+
->modify('first day of this month')
|
227 |
+
->setTime(0, 0, 0);
|
228 |
+
$endDate
|
229 |
+
->modify('first day of this month')
|
230 |
+
->setTime(0, 0, 0)
|
231 |
+
->sub(new DateInterval('PT1S'));
|
232 |
+
break;
|
233 |
+
case 'daily':
|
234 |
+
default:
|
235 |
+
$startDate
|
236 |
+
->sub($dayInterval)
|
237 |
+
->setTime(0,0,0);
|
238 |
+
$endDate
|
239 |
+
->sub($dayInterval)
|
240 |
+
->setTime(23, 59, 59);
|
241 |
+
break;
|
242 |
+
}
|
243 |
+
|
244 |
+
$this->startDate = $startDate;
|
245 |
+
$this->endDate = $endDate;
|
246 |
+
}
|
247 |
+
|
248 |
+
|
249 |
+
/**
|
250 |
+
* @param DateTime $startDate
|
251 |
+
* @param DateTime $endDate
|
252 |
+
* @param string|int $storeId
|
253 |
+
* @return Varien_Object
|
254 |
+
*/
|
255 |
+
protected function getReportTotals(DateTime $startDate, DateTime $endDate, $storeId)
|
256 |
+
{
|
257 |
+
$collection = $this->getOrderResourceCollection();
|
258 |
+
|
259 |
+
$collection->addFieldToFilter('created_at', array(
|
260 |
+
'from' => $startDate->format(Varien_Date::DATETIME_PHP_FORMAT),
|
261 |
+
'to' => $endDate->format(Varien_Date::DATETIME_PHP_FORMAT)
|
262 |
+
));
|
263 |
+
|
264 |
+
$collection->addFieldToFilter('store_id', $storeId);
|
265 |
+
|
266 |
+
$collection->calculateTotals();
|
267 |
+
|
268 |
+
return $collection->getFirstItem();
|
269 |
+
}
|
270 |
+
|
271 |
+
/**
|
272 |
+
* Get current store name or view name if not set
|
273 |
+
*
|
274 |
+
* @param int $storeId
|
275 |
+
* @return string
|
276 |
+
*/
|
277 |
+
public function getStoreName($storeId)
|
278 |
+
{
|
279 |
+
$storeName = Mage::getStoreConfig('general/store_information/name', $storeId);
|
280 |
+
|
281 |
+
return $storeName ?: Mage::app()->getStore($storeId)->getName();
|
282 |
+
}
|
283 |
+
|
284 |
+
/**
|
285 |
+
* Get the order resource collection model
|
286 |
+
*
|
287 |
+
* @return Mage_Reports_Model_Resource_Order_Collection
|
288 |
+
*/
|
289 |
+
protected function getOrderResourceCollection()
|
290 |
+
{
|
291 |
+
return Mage::getResourceModel('esendex_events/adminSalesReport_order_collection');
|
292 |
+
}
|
293 |
+
|
294 |
+
/**
|
295 |
+
* Get the recipients for this cron
|
296 |
+
*
|
297 |
+
* @param Esendex_Sms_Model_TriggerAbstract $trigger
|
298 |
+
*
|
299 |
+
* @return array
|
300 |
+
*/
|
301 |
+
public function getRecipient(Esendex_Sms_Model_TriggerAbstract $trigger)
|
302 |
+
{
|
303 |
+
$recipients = $trigger->getData('recipients');
|
304 |
+
|
305 |
+
if (!is_array($recipients)) {
|
306 |
+
return array();
|
307 |
+
}
|
308 |
+
|
309 |
+
return $recipients;
|
310 |
+
}
|
311 |
+
|
312 |
+
/**
|
313 |
+
* @param LoggerInterface $logger
|
314 |
+
*/
|
315 |
+
public function setLogger(LoggerInterface $logger)
|
316 |
+
{
|
317 |
+
$this->logger = $logger;
|
318 |
+
}
|
319 |
+
|
320 |
+
/**
|
321 |
+
* @return LoggerInterface
|
322 |
+
*/
|
323 |
+
public function getLogger()
|
324 |
+
{
|
325 |
+
return $this->logger;
|
326 |
+
}
|
327 |
+
|
328 |
+
/**
|
329 |
+
* @return int
|
330 |
+
*/
|
331 |
+
public function getFirstDay()
|
332 |
+
{
|
333 |
+
if ($this->firstDay) {
|
334 |
+
return $this->firstDay;
|
335 |
+
}
|
336 |
+
|
337 |
+
return Mage::getStoreConfig('general/locale/firstday');
|
338 |
+
|
339 |
+
}
|
340 |
+
|
341 |
+
/**
|
342 |
+
* Allow to inject first day for unit tests
|
343 |
+
*
|
344 |
+
* @param int $firstDay
|
345 |
+
*/
|
346 |
+
public function setFirstDay($firstDay)
|
347 |
+
{
|
348 |
+
$this->firstDay = $firstDay;
|
349 |
+
}
|
350 |
+
|
351 |
+
/**
|
352 |
+
* Set the current date for better unit tests
|
353 |
+
*
|
354 |
+
* @param string $date
|
355 |
+
*/
|
356 |
+
public function setCurrentDate($date)
|
357 |
+
{
|
358 |
+
$this->currentDate = $date;
|
359 |
+
}
|
360 |
+
|
361 |
+
/**
|
362 |
+
* @return string
|
363 |
+
*/
|
364 |
+
public function getTimezone()
|
365 |
+
{
|
366 |
+
if ($this->timezone) {
|
367 |
+
return $this->timezone;
|
368 |
+
}
|
369 |
+
|
370 |
+
return Mage::getStoreConfig('general/locale/timezone');
|
371 |
+
}
|
372 |
+
|
373 |
+
/**
|
374 |
+
* Set timezone for better unit tests
|
375 |
+
*
|
376 |
+
* @param string $timezone
|
377 |
+
*/
|
378 |
+
public function setTimezone($timezone)
|
379 |
+
{
|
380 |
+
$this->timezone = $timezone;
|
381 |
+
}
|
382 |
+
|
383 |
+
/**
|
384 |
+
* @return int
|
385 |
+
*/
|
386 |
+
public function getStoreId()
|
387 |
+
{
|
388 |
+
return null;
|
389 |
+
}
|
390 |
+
|
391 |
+
/**
|
392 |
+
* @return DateTime|null
|
393 |
+
*/
|
394 |
+
public function getStartDate()
|
395 |
+
{
|
396 |
+
return $this->startDate;
|
397 |
+
}
|
398 |
+
|
399 |
+
/**
|
400 |
+
* @return DateTime|null
|
401 |
+
*/
|
402 |
+
public function getEndDate()
|
403 |
+
{
|
404 |
+
return $this->endDate;
|
405 |
+
}
|
406 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderAbstract.php
ADDED
@@ -0,0 +1,147 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderAbstract
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
abstract class Esendex_Events_Model_EventProcessor_OrderAbstract extends Esendex_Sms_Model_EventProcessor_Abstract
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @var array
|
26 |
+
*/
|
27 |
+
protected $variables = array(
|
28 |
+
'order::customer_firstname' => 'firstname',
|
29 |
+
'order::customer_lastname' => 'lastname',
|
30 |
+
'order::increment_id' => 'orderno',
|
31 |
+
'total_qty_ordered' => 'totalqtyordered',
|
32 |
+
'order::grand_total' => 'grandtotal',
|
33 |
+
'order_status' => 'orderstatus',
|
34 |
+
'order_url' => 'orderurl',
|
35 |
+
'product' => 'product',
|
36 |
+
'store_name' => 'storename',
|
37 |
+
'store_address' => 'storeaddress',
|
38 |
+
'store_telephone' => 'storecontacttelephone',
|
39 |
+
'store_general_email' => 'storegeneralcontactemail',
|
40 |
+
'store_sales_email' => 'salesrepemail',
|
41 |
+
'store_support_email' => 'customersupportemail',
|
42 |
+
'store_custom_email_1' => 'customemail1',
|
43 |
+
'store_custom_email_2' => 'customemail2',
|
44 |
+
'store_url' => 'storeurl',
|
45 |
+
);
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Build container with available variables
|
49 |
+
*
|
50 |
+
* @return Varien_Object
|
51 |
+
*/
|
52 |
+
public function getVariableContainer(Esendex_Sms_Model_TriggerAbstract $trigger)
|
53 |
+
{
|
54 |
+
/** @var Mage_Sales_Model_Order $order */
|
55 |
+
$order = $this->parameters->getData('order');
|
56 |
+
$storeId = $order->getStoreId();
|
57 |
+
|
58 |
+
// Product array
|
59 |
+
$products = array();
|
60 |
+
foreach ($order->getAllVisibleItems() as $item) {
|
61 |
+
$products[] = $item->getProduct()->getName();
|
62 |
+
}
|
63 |
+
|
64 |
+
$storeName = Mage::getStoreConfig('general/store_information/name', $storeId)
|
65 |
+
? Mage::getStoreConfig('general/store_information/name', $storeId)
|
66 |
+
: Mage::app()->getStore($storeId)->getName();
|
67 |
+
|
68 |
+
$data = array(
|
69 |
+
'order_status' => $order->getStatusLabel(),
|
70 |
+
'product' => implode(', ', $products),
|
71 |
+
'order_url' => $this->getOrderUrl($order),
|
72 |
+
'total_qty_ordered' => intval($order->getData('total_qty_ordered')),
|
73 |
+
'store_name' => $storeName,
|
74 |
+
'store_address' => $this->getStoreConfig('general/store_information/address', $storeId),
|
75 |
+
'store_telephone' => $this->getStoreConfig('general/store_information/phone', $storeId),
|
76 |
+
'store_general_email' => $this->getStoreConfig('trans_email/ident_general/email', $storeId),
|
77 |
+
'store_sales_email' => $this->getStoreConfig('trans_email/ident_sales/email', $storeId),
|
78 |
+
'store_support_email' => $this->getStoreConfig('trans_email/ident_support/email', $storeId),
|
79 |
+
'store_custom_email_1' => $this->getStoreConfig('trans_email/ident_custom1/email', $storeId),
|
80 |
+
'store_custom_email_2' => $this->getStoreConfig('trans_email/ident_custom2/email', $storeId),
|
81 |
+
'store_url' => $this->getStoreUrl($storeId),
|
82 |
+
);
|
83 |
+
|
84 |
+
$this->parameters->addData($data);
|
85 |
+
return $this->parameters;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Get the order URL for a given order
|
90 |
+
*
|
91 |
+
* @param Mage_Sales_Model_Order $order
|
92 |
+
* @return string
|
93 |
+
*/
|
94 |
+
public function getOrderUrl($order)
|
95 |
+
{
|
96 |
+
$url = Mage::getModel('core/url')->getUrl('sales/order/view', array('order_id' => $order->getId())) ?: '';
|
97 |
+
return $url;
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Get store base url
|
102 |
+
*
|
103 |
+
* @param int $storeId
|
104 |
+
* @return string
|
105 |
+
*/
|
106 |
+
public function getStoreUrl($storeId)
|
107 |
+
{
|
108 |
+
return Mage::app()->getStore($storeId)->getBaseUrl();
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* Get config from path, allow for unit testing
|
113 |
+
* Coerce null values to empty strings
|
114 |
+
*
|
115 |
+
* @param string $path
|
116 |
+
* @param string $storeId
|
117 |
+
* @return string|array
|
118 |
+
*/
|
119 |
+
public function getStoreConfig($path, $storeId)
|
120 |
+
{
|
121 |
+
$v = Mage::getStoreConfig($path, $storeId);
|
122 |
+
return $v ?: '';
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Get the recipients or recipient.
|
127 |
+
*
|
128 |
+
* @param Esendex_Sms_Model_TriggerAbstract $trigger
|
129 |
+
* @return array|string
|
130 |
+
*/
|
131 |
+
public function getRecipient(Esendex_Sms_Model_TriggerAbstract $trigger)
|
132 |
+
{
|
133 |
+
/**
|
134 |
+
* @var Mage_Sales_Model_Order $order
|
135 |
+
*/
|
136 |
+
$order = $this->parameters->getData('order');
|
137 |
+
return $order->getBillingAddress()->getTelephone();
|
138 |
+
}
|
139 |
+
|
140 |
+
/**
|
141 |
+
* @return int
|
142 |
+
*/
|
143 |
+
public function getStoreId()
|
144 |
+
{
|
145 |
+
return (int) $this->parameters->getData('order')->getData('store_id');
|
146 |
+
}
|
147 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderShipped.php
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderShipped
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderShipped
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderAbstract
|
24 |
+
implements Esendex_Sms_Model_EventProcessor_Interface
|
25 |
+
{
|
26 |
+
|
27 |
+
/**
|
28 |
+
* @var array
|
29 |
+
*/
|
30 |
+
protected $variables = array(
|
31 |
+
'order::customer_firstname' => 'firstname',
|
32 |
+
'order::customer_lastname' => 'lastname',
|
33 |
+
'order::increment_id' => 'orderno',
|
34 |
+
'order_status' => 'orderstatus',
|
35 |
+
'order::total_qty_ordered' => 'totalqtyordered',
|
36 |
+
'order::total_due' => 'grandtotal',
|
37 |
+
'product' => 'product',
|
38 |
+
'order_url' => 'orderurl',
|
39 |
+
'shipment_total_qty' => 'totalqtyshipped',
|
40 |
+
'store_name' => 'storename',
|
41 |
+
'store_address' => 'storeaddress',
|
42 |
+
'store_telephone' => 'storecontacttelephone',
|
43 |
+
'store_general_email' => 'storegeneralcontactemail',
|
44 |
+
'store_sales_email' => 'salesrepemail',
|
45 |
+
'store_support_email' => 'customersupportemail',
|
46 |
+
'store_custom_email_1' => 'customemail1',
|
47 |
+
'store_custom_email_2' => 'customemail2',
|
48 |
+
'store_url' => 'storeurl',
|
49 |
+
);
|
50 |
+
|
51 |
+
/**
|
52 |
+
* If there is a phone number available and also no tracking codes
|
53 |
+
* for the order
|
54 |
+
*
|
55 |
+
* @param Esendex_Sms_Model_TriggerAbstract $trigger
|
56 |
+
* @return bool
|
57 |
+
*/
|
58 |
+
public function shouldSend(Esendex_Sms_Model_TriggerAbstract $trigger)
|
59 |
+
{
|
60 |
+
$order = $this->parameters->getData('order');
|
61 |
+
$shipment = $this->parameters->getData('shipment');
|
62 |
+
$trackingCodes = $shipment->getAllTracks();
|
63 |
+
$phoneNumber = $order->getBillingAddress()->getTelephone();
|
64 |
+
|
65 |
+
return count($trackingCodes) === 0 && $phoneNumber;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Build container with available variables
|
70 |
+
*
|
71 |
+
* @return Varien_Object
|
72 |
+
*/
|
73 |
+
public function getVariableContainer(Esendex_Sms_Model_TriggerAbstract $trigger)
|
74 |
+
{
|
75 |
+
/**
|
76 |
+
* @var Mage_Sales_Model_Order_Shipment $shipment
|
77 |
+
*/
|
78 |
+
$shipment = $this->parameters->getData('shipment');
|
79 |
+
$this->parameters->setData('shipment_total_qty', intval($shipment->getData('total_qty')));
|
80 |
+
|
81 |
+
return parent::getVariableContainer($trigger);
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* @return int
|
86 |
+
*/
|
87 |
+
public function getStoreId()
|
88 |
+
{
|
89 |
+
return (int) $this->parameters->getData('order')->getData('store_id');
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Override to set the order as first class parameter
|
94 |
+
* This is so we can call the parent::getVariableContainer to add all the default order variables
|
95 |
+
* This expects that 'order' is present on the parameters object
|
96 |
+
*
|
97 |
+
* @param Varien_Object $parameters
|
98 |
+
*/
|
99 |
+
public function setParameters(Varien_Object $parameters)
|
100 |
+
{
|
101 |
+
$this->parameters = $parameters;
|
102 |
+
$this->parameters->setData('order', $this->parameters->getData('shipment')->getOrder());
|
103 |
+
}
|
104 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderShippedWithTracking.php
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderShippedWithTracking
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderShippedWithTracking
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderAbstract
|
24 |
+
implements Esendex_Sms_Model_EventProcessor_Interface
|
25 |
+
{
|
26 |
+
/**
|
27 |
+
* @var array
|
28 |
+
*/
|
29 |
+
protected $variables = array(
|
30 |
+
// Order Variables
|
31 |
+
'order::customer_firstname' => 'firstname',
|
32 |
+
'order::customer_lastname' => 'lastname',
|
33 |
+
'order::increment_id' => 'orderno',
|
34 |
+
'order_status' => 'orderstatus',
|
35 |
+
'order::total_qty_ordered' => 'totalqtyordered',
|
36 |
+
'order::total_due' => 'grandtotal',
|
37 |
+
'product' => 'product',
|
38 |
+
'order_url' => 'orderurl',
|
39 |
+
'shipment_total_qty' => 'totalqtyshipped',
|
40 |
+
'track::track_number' => 'trackingno',
|
41 |
+
'track::title' => 'provider',
|
42 |
+
'store_name' => 'storename',
|
43 |
+
'store_address' => 'storeaddress',
|
44 |
+
'store_telephone' => 'storecontacttelephone',
|
45 |
+
'store_general_email' => 'storegeneralcontactemail',
|
46 |
+
'store_sales_email' => 'salesrepemail',
|
47 |
+
'store_support_email' => 'customersupportemail',
|
48 |
+
'store_custom_email_1' => 'customemail1',
|
49 |
+
'store_custom_email_2' => 'customemail2',
|
50 |
+
'store_url' => 'storeurl'
|
51 |
+
);
|
52 |
+
|
53 |
+
/**
|
54 |
+
* We need to make sure the order has tracking & a phone number is available
|
55 |
+
*
|
56 |
+
* @param Esendex_Sms_Model_TriggerAbstract $trigger
|
57 |
+
* @return bool
|
58 |
+
*/
|
59 |
+
public function shouldSend(Esendex_Sms_Model_TriggerAbstract $trigger)
|
60 |
+
{
|
61 |
+
$order = $this->parameters->getData('order');
|
62 |
+
$shipment = $this->parameters->getData('shipment');
|
63 |
+
$trackingCodes = $shipment->getAllTracks();
|
64 |
+
$phoneNumber = $order->getBillingAddress()->getTelephone();
|
65 |
+
|
66 |
+
return (bool) count($trackingCodes) && $phoneNumber;
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Build container with available variables
|
71 |
+
*
|
72 |
+
* @return Varien_Object
|
73 |
+
*/
|
74 |
+
public function getVariableContainer(Esendex_Sms_Model_TriggerAbstract $trigger)
|
75 |
+
{
|
76 |
+
/**
|
77 |
+
* @var Mage_Sales_Model_Order_Shipment $shipment
|
78 |
+
*/
|
79 |
+
$shipment = $this->parameters->getData('shipment');
|
80 |
+
$this->parameters->setData('shipment_total_qty', intval($shipment->getData('total_qty')));
|
81 |
+
$tracks = $shipment->getAllTracks();
|
82 |
+
$this->parameters->setData('track', $tracks[0]);
|
83 |
+
|
84 |
+
return parent::getVariableContainer($trigger);
|
85 |
+
}
|
86 |
+
|
87 |
+
/**
|
88 |
+
* @return int
|
89 |
+
*/
|
90 |
+
public function getStoreId()
|
91 |
+
{
|
92 |
+
return (int) $this->parameters->getData('order')->getData('store_id');
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Override to set the order as first class parameter
|
97 |
+
* This is so we can call the parent::getVariableContainer to add all the default order variables
|
98 |
+
* This expects that 'order' is present on the parameters object
|
99 |
+
*
|
100 |
+
* @param Varien_Object $parameters
|
101 |
+
*/
|
102 |
+
public function setParameters(Varien_Object $parameters)
|
103 |
+
{
|
104 |
+
$this->parameters = $parameters;
|
105 |
+
$this->parameters->setData('order', $this->parameters->getData('shipment')->getOrder());
|
106 |
+
}
|
107 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Abstract.php
ADDED
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Psr\Log\LoggerInterface;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
22 |
+
* @author Michael Woodward <michael@wearejh.com>
|
23 |
+
*/
|
24 |
+
abstract class Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
25 |
+
extends Esendex_Events_Model_EventProcessor_OrderAbstract
|
26 |
+
implements Esendex_Sms_Model_EventProcessor_Interface,
|
27 |
+
Esendex_Sms_Model_Logger_LoggerAwareInterface
|
28 |
+
{
|
29 |
+
/**
|
30 |
+
* Order status to notify on
|
31 |
+
*/
|
32 |
+
protected $orderStatus = null;
|
33 |
+
|
34 |
+
/**
|
35 |
+
* @var LoggerInterface
|
36 |
+
*/
|
37 |
+
protected $logger;
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Construct to enforce model has order status set
|
41 |
+
*/
|
42 |
+
public function __construct()
|
43 |
+
{
|
44 |
+
if ($this->getOrderStatus() === null ) {
|
45 |
+
throw new \RuntimeException(
|
46 |
+
sprintf('Class "%s" must specify the protected property orderStatus', get_class($this))
|
47 |
+
);
|
48 |
+
}
|
49 |
+
|
50 |
+
parent::__construct();
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @return string|null
|
55 |
+
*/
|
56 |
+
public function getOrderStatus()
|
57 |
+
{
|
58 |
+
return $this->orderStatus;
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* If the status has changed and this new status is one
|
63 |
+
* which has been set as one to notify the customer
|
64 |
+
*
|
65 |
+
* @param Esendex_Sms_Model_TriggerAbstract $trigger
|
66 |
+
* @return bool
|
67 |
+
*/
|
68 |
+
public function shouldSend(Esendex_Sms_Model_TriggerAbstract $trigger)
|
69 |
+
{
|
70 |
+
/** @var Mage_Sales_Model_Order $order */
|
71 |
+
$order = $this->parameters->getData('order');
|
72 |
+
|
73 |
+
if (!$order->dataHasChangedFor('status')) {
|
74 |
+
return false;
|
75 |
+
}
|
76 |
+
|
77 |
+
if ($order->getData('status') !== $this->getOrderStatus()) {
|
78 |
+
return false;
|
79 |
+
}
|
80 |
+
|
81 |
+
if (!$order->getBillingAddress()->getTelephone()) {
|
82 |
+
return false;
|
83 |
+
}
|
84 |
+
|
85 |
+
return true;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* @param LoggerInterface $logger
|
90 |
+
*/
|
91 |
+
public function setLogger(LoggerInterface $logger)
|
92 |
+
{
|
93 |
+
$this->logger = $logger;
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* @return LoggerInterface
|
98 |
+
*/
|
99 |
+
public function getLogger()
|
100 |
+
{
|
101 |
+
return $this->logger;
|
102 |
+
}
|
103 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Canceled.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_Canceled
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderStatusChange_Canceled
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Order status to notify on
|
27 |
+
*/
|
28 |
+
protected $orderStatus = 'canceled';
|
29 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Closed.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_Closed
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderStatusChange_Closed
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Order status to notify on
|
27 |
+
*/
|
28 |
+
protected $orderStatus = 'closed';
|
29 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Complete.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_Complete
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderStatusChange_Complete
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Order status to notify on
|
27 |
+
*/
|
28 |
+
protected $orderStatus = 'complete';
|
29 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/OnHold.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_OnHold
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderStatusChange_OnHold
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Order status to notify on
|
27 |
+
*/
|
28 |
+
protected $orderStatus = 'holded';
|
29 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/PaymentReview.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_PaymentReview
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderStatusChange_PaymentReview
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Order status to notify on
|
27 |
+
*/
|
28 |
+
protected $orderStatus = 'payment_review';
|
29 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Pending.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_Pending
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderStatusChange_Pending
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Order status to notify on
|
27 |
+
*/
|
28 |
+
protected $orderStatus = 'pending';
|
29 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/PendingPayment.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_PendingPayment
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderStatusChange_PendingPayment
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Order status to notify on
|
27 |
+
*/
|
28 |
+
protected $orderStatus = 'pending_payment';
|
29 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/PendingPaypal.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_PendingPaypal
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderStatusChange_PendingPaypal
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Order status to notify on
|
27 |
+
*/
|
28 |
+
protected $orderStatus = 'pending_paypal';
|
29 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/Processing.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_Processing
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderStatusChange_Processing
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Order status to notify on
|
27 |
+
*/
|
28 |
+
protected $orderStatus = 'processing';
|
29 |
+
}
|
app/code/community/Esendex/Events/Model/EventProcessor/OrderStatusChange/SuspectedFraud.php
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_EventProcessor_OrderStatusChange_SuspectedFraud
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_EventProcessor_OrderStatusChange_SuspectedFraud
|
23 |
+
extends Esendex_Events_Model_EventProcessor_OrderStatusChange_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Order status to notify on
|
27 |
+
*/
|
28 |
+
protected $orderStatus = 'fraud';
|
29 |
+
}
|
app/code/community/Esendex/Events/Model/Listener/TriggerCreate/AdminSalesReport.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Listener_TriggerCreate_AdminSalesReport
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_Listener_TriggerCreate_AdminSalesReport
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @param Varien_Event_Observer $e
|
26 |
+
*/
|
27 |
+
public function addFields(Varien_Event_Observer $e)
|
28 |
+
{
|
29 |
+
$fieldset = $e->getFieldset();
|
30 |
+
$recipientsHelpText = 'Enter one mobile number per line. To send internationally ';
|
31 |
+
$recipientsHelpText .= 'please add the country code e.g. +447875123456';
|
32 |
+
$afterElementHtml = sprintf(
|
33 |
+
'<p class="nm"><small>%s</small></p>',
|
34 |
+
Mage::helper('esendex_sms')->__($recipientsHelpText)
|
35 |
+
);
|
36 |
+
|
37 |
+
$fieldset->addField('recipients', 'textarea', array(
|
38 |
+
'label' => Mage::helper('esendex_sms')->__('Recipients'),
|
39 |
+
'name' => 'recipients',
|
40 |
+
'required' => true,
|
41 |
+
'after_element_html' => $afterElementHtml,
|
42 |
+
));
|
43 |
+
|
44 |
+
// Translate frequencies
|
45 |
+
$frequencies = array_map(function($frequency) {
|
46 |
+
return Mage::helper('esendex_sms')->__($frequency);
|
47 |
+
},Esendex_Events_Model_EventProcessor_AdminSalesReport::$frequencies);
|
48 |
+
|
49 |
+
$fieldset->addField('frequency', 'select', array(
|
50 |
+
'label' => Mage::helper('esendex_sms')->__('Frequency'),
|
51 |
+
'name' => 'frequency',
|
52 |
+
'required' => true,
|
53 |
+
'options' => $frequencies,
|
54 |
+
));
|
55 |
+
|
56 |
+
// Note: Magento JS validation does not correctly validate dates
|
57 |
+
// We have hardcoded the format of the date to y/MM/d to help
|
58 |
+
// Research indicates this is the most supported format
|
59 |
+
|
60 |
+
$fieldset->addField('start_date', 'date', array(
|
61 |
+
'label' => Mage::helper('esendex_sms')->__('Start Date'),
|
62 |
+
'name' => 'start_date',
|
63 |
+
'required' => true,
|
64 |
+
'format' => 'y/MM/d',
|
65 |
+
'image' => Mage::getDesign()->getSkinUrl('images/grid-cal.gif'),
|
66 |
+
'class' => 'validate-date',
|
67 |
+
'note' => Mage::helper('esendex_sms')->__('Should be a date in the future')
|
68 |
+
));
|
69 |
+
}
|
70 |
+
}
|
app/code/community/Esendex/Events/Model/Listener/TriggerCreate/OrderStatusChange.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Listener_TriggerCreate_OrderStatusChange
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_Listener_TriggerCreate_OrderStatusChange
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* Add second stage form fields
|
26 |
+
*
|
27 |
+
* @param Varien_Event_Observer $e
|
28 |
+
*/
|
29 |
+
public function addFields(Varien_Event_Observer $e)
|
30 |
+
{
|
31 |
+
$fieldset = $e->getFieldset();
|
32 |
+
$statuses = Mage::getModel('sales/order_status')->getResourceCollection()->toOptionArray();
|
33 |
+
|
34 |
+
$fieldset->addField('statuses', 'multiselect', array(
|
35 |
+
'name' => 'statuses[]',
|
36 |
+
'label' => Mage::helper('esendex_sms')->__('Statuses to be Notified'),
|
37 |
+
'title' => Mage::helper('esendex_sms')->__('Status'),
|
38 |
+
'required' => true,
|
39 |
+
'values' => $statuses
|
40 |
+
));
|
41 |
+
}
|
42 |
+
}
|
app/code/community/Esendex/Events/Model/Resource/AdminSalesReport.php
ADDED
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Resource_Trigger_AdminSalesReport
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_Resource_AdminSalesReport extends Esendex_Sms_Model_Resource_TriggerAbstract
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Constructor
|
27 |
+
*/
|
28 |
+
public function _construct()
|
29 |
+
{
|
30 |
+
$this->_init('esendex_sms/trigger', 'entity_id');
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Get Recipients for this trigger
|
35 |
+
*
|
36 |
+
* @param int $triggerId
|
37 |
+
* @return array
|
38 |
+
*/
|
39 |
+
public function lookupRecipients($triggerId)
|
40 |
+
{
|
41 |
+
$adapter = $this->_getReadAdapter();
|
42 |
+
$select = $adapter->select()
|
43 |
+
->from($this->getTable('esendex_events/admin_sales_report_recipients'), 'recipient')
|
44 |
+
->where('trigger_id = ?', (int) $triggerId);
|
45 |
+
return $adapter->fetchCol($select);
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Get Details for this trigger
|
50 |
+
*
|
51 |
+
* @param $triggerId
|
52 |
+
* @return array
|
53 |
+
*/
|
54 |
+
public function lookupDetails($triggerId)
|
55 |
+
{
|
56 |
+
$adapter = $this->_getReadAdapter();
|
57 |
+
$select = $adapter->select()
|
58 |
+
->from($this->getTable('esendex_events/admin_sales_report_details'))
|
59 |
+
->where('trigger_id = ?', (int) $triggerId);
|
60 |
+
return $adapter->fetchRow($select);
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* @param Mage_Core_Model_Abstract $object
|
65 |
+
* @return self
|
66 |
+
*/
|
67 |
+
protected function _afterLoad(Mage_Core_Model_Abstract $object)
|
68 |
+
{
|
69 |
+
if ($object->getId()) {
|
70 |
+
$recipients = $this->lookupRecipients($object->getId());
|
71 |
+
$object->setData('recipients', $recipients);
|
72 |
+
|
73 |
+
if ($details = $this->lookupDetails($object->getId())) {
|
74 |
+
unset($details['trigger_id']);
|
75 |
+
foreach ($details as $name => $value) {
|
76 |
+
$object->setData($name, $value);
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
80 |
+
return parent::_afterLoad($object);
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Assign trigger to store views
|
85 |
+
*
|
86 |
+
* @param Mage_Core_Model_Abstract $object
|
87 |
+
* @return self
|
88 |
+
*/
|
89 |
+
protected function _afterSave(Mage_Core_Model_Abstract $object)
|
90 |
+
{
|
91 |
+
// Get any previous details or empty array
|
92 |
+
$detailsData = $this->lookupDetails($object->getId());
|
93 |
+
|
94 |
+
if (!is_array($detailsData)) {
|
95 |
+
$detailsData = array();
|
96 |
+
}
|
97 |
+
|
98 |
+
// Construct the new detail row
|
99 |
+
$newDetails = array(
|
100 |
+
'trigger_id' => $object->getId(),
|
101 |
+
'frequency' => $object->getData('frequency'),
|
102 |
+
'start_date' => $object->getData('start_date')
|
103 |
+
);
|
104 |
+
|
105 |
+
// If there diff then delete and save new details
|
106 |
+
if (array_diff_assoc($newDetails, $detailsData)) {
|
107 |
+
// Delete Details
|
108 |
+
$table = $this->getTable('esendex_events/admin_sales_report_details');
|
109 |
+
$this->_getWriteAdapter()->delete($table, array('trigger_id = ?' => (int) $object->getId()));
|
110 |
+
|
111 |
+
// Write New Details
|
112 |
+
$defualt = array('trigger_id' => (int) $object->getId());
|
113 |
+
$details = array_merge($defualt, $newDetails);
|
114 |
+
$this->_getWriteAdapter()->insert($table, $details);
|
115 |
+
}
|
116 |
+
|
117 |
+
// Save Recipients
|
118 |
+
$oldRecipients = $this->lookupRecipients($object->getId());
|
119 |
+
$newRecipients = (array) $object->getData('recipients');
|
120 |
+
|
121 |
+
$table = $this->getTable('esendex_events/admin_sales_report_recipients');
|
122 |
+
$insert = array_diff($newRecipients, $oldRecipients);
|
123 |
+
$delete = array_diff($oldRecipients, $newRecipients);
|
124 |
+
if (count($delete)) {
|
125 |
+
$where = array(
|
126 |
+
'trigger_id = ?' => (int) $object->getId(),
|
127 |
+
'recipient IN (?)' => $delete
|
128 |
+
);
|
129 |
+
$this->_getWriteAdapter()->delete($table, $where);
|
130 |
+
}
|
131 |
+
if (count($insert)) {
|
132 |
+
$data = array();
|
133 |
+
foreach ($insert as $recipient) {
|
134 |
+
$data[] = array(
|
135 |
+
'trigger_id' => (int) $object->getId(),
|
136 |
+
'recipient' => $recipient
|
137 |
+
);
|
138 |
+
}
|
139 |
+
$this->_getWriteAdapter()->insertMultiple($table, $data);
|
140 |
+
}
|
141 |
+
return parent::_afterSave($object);
|
142 |
+
}
|
143 |
+
|
144 |
+
/**
|
145 |
+
* @param Mage_Core_Model_Abstract $object
|
146 |
+
* @return Mage_Core_Model_Resource_Db_Abstract
|
147 |
+
*/
|
148 |
+
public function _beforeDelete(Mage_Core_Model_Abstract $object)
|
149 |
+
{
|
150 |
+
// Delete Recipients
|
151 |
+
$table = $this->getTable('esendex_events/admin_sales_report_recipients');
|
152 |
+
$this->_getWriteAdapter()->delete($table, ['trigger_id = ?' => (int) $object->getId()]);
|
153 |
+
|
154 |
+
// Delete Details
|
155 |
+
$table = $this->getTable('esendex_events/admin_sales_report_details');
|
156 |
+
$this->_getWriteAdapter()->delete($table, ['trigger_id = ?' => (int) $object->getId()]);
|
157 |
+
|
158 |
+
return parent::_beforeDelete($object);
|
159 |
+
}
|
160 |
+
}
|
app/code/community/Esendex/Events/Model/Resource/AdminSalesReport/Collection.php
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_Resource_AdminSalesReport_Collection
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_Resource_AdminSalesReport_Collection
|
23 |
+
extends Esendex_Sms_Model_Resource_Trigger_Collection
|
24 |
+
{
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Set Model Class
|
28 |
+
*/
|
29 |
+
protected function _construct()
|
30 |
+
{
|
31 |
+
parent::_construct();
|
32 |
+
$this->_init('esendex_events/adminSalesReport');
|
33 |
+
}
|
34 |
+
|
35 |
+
/**
|
36 |
+
* Join data from other tables
|
37 |
+
*/
|
38 |
+
protected function _afterLoad()
|
39 |
+
{
|
40 |
+
parent::_afterLoad();
|
41 |
+
|
42 |
+
//add details - eg frequency
|
43 |
+
$this->mergeRelationalData($this->getTable('esendex_events/admin_sales_report_details'));
|
44 |
+
|
45 |
+
//add stores
|
46 |
+
$this->addRelationalData($this->getTable('esendex_sms/trigger_store'), 'store_id');
|
47 |
+
|
48 |
+
// recipients
|
49 |
+
$this->addRelationalData(
|
50 |
+
$this->getTable('esendex_events/admin_sales_report_recipients'),
|
51 |
+
'recipient',
|
52 |
+
'recipients'
|
53 |
+
);
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Join data from a related table. Eg put all store_id's from another table
|
58 |
+
* on to $trigger['store_ids'] using trigger id to join.
|
59 |
+
*
|
60 |
+
* @param string $table
|
61 |
+
* @param string $column
|
62 |
+
* @param null|string $resultKey
|
63 |
+
*/
|
64 |
+
public function addRelationalData($table, $column, $resultKey = null)
|
65 |
+
{
|
66 |
+
if (null === $resultKey) {
|
67 |
+
$resultKey = $column;
|
68 |
+
}
|
69 |
+
|
70 |
+
$triggerIds = array();
|
71 |
+
foreach ($this->_items as $item) {
|
72 |
+
$triggerIds[] = $item->getId();
|
73 |
+
}
|
74 |
+
|
75 |
+
$select = $this->getConnection()->select();
|
76 |
+
$select->from($table, array($column, 'trigger_id'))
|
77 |
+
->where('trigger_id IN (?)', $triggerIds);
|
78 |
+
|
79 |
+
$rows = $this->getConnection()->fetchAll($select);
|
80 |
+
|
81 |
+
$rowsByTriggerId = array();
|
82 |
+
foreach ($rows as $row) {
|
83 |
+
$triggerId = $row['trigger_id'];
|
84 |
+
|
85 |
+
if (!isset($rowsByTriggerId[$triggerId])) {
|
86 |
+
$rowsByTriggerId[$triggerId] = array($row[$column]);
|
87 |
+
} else {
|
88 |
+
$rowsByTriggerId[$triggerId][] = $row[$column];
|
89 |
+
}
|
90 |
+
}
|
91 |
+
|
92 |
+
foreach ($rowsByTriggerId as $triggerId => $values) {
|
93 |
+
$item = $this->getItemByColumnValue($item->getIdFieldName(), $triggerId);
|
94 |
+
$item->setData($resultKey, $values);
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Merge data from another table. Eg one -> one data.
|
100 |
+
*
|
101 |
+
* @param string $table
|
102 |
+
*/
|
103 |
+
public function mergeRelationalData($table)
|
104 |
+
{
|
105 |
+
$triggerIds = array();
|
106 |
+
foreach ($this->_items as $item) {
|
107 |
+
$triggerIds[] = $item->getId();
|
108 |
+
}
|
109 |
+
|
110 |
+
$select = $this->getConnection()->select();
|
111 |
+
$select->from($table)
|
112 |
+
->where('trigger_id IN (?)', $triggerIds);
|
113 |
+
|
114 |
+
$rows = $this->getConnection()->fetchAll($select);
|
115 |
+
|
116 |
+
foreach ($rows as $row) {
|
117 |
+
$triggerId = $row['trigger_id'];
|
118 |
+
$item = $this->getItemByColumnValue($item->getIdFieldName(), $triggerId);
|
119 |
+
$item->addData($row);
|
120 |
+
}
|
121 |
+
}
|
122 |
+
}
|
app/code/community/Esendex/Events/Model/Resource/AdminSalesReport/Order/Collection.php
ADDED
@@ -0,0 +1,112 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Events_Model_Resource_AdminSalesReport_Order_Collection
|
20 |
+
* @author Michael Woodward <michael@wearejh.com>
|
21 |
+
*/
|
22 |
+
class Esendex_Events_Model_Resource_AdminSalesReport_Order_Collection
|
23 |
+
extends Mage_Reports_Model_Resource_Order_Collection
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Override to...
|
27 |
+
*
|
28 |
+
* * Add GROSS total
|
29 |
+
* * Use store values not base
|
30 |
+
* * Ignore canceled and closed on NET
|
31 |
+
*
|
32 |
+
* @return $this
|
33 |
+
*/
|
34 |
+
public function calculateTotals()
|
35 |
+
{
|
36 |
+
$this->setMainTable('sales/order');
|
37 |
+
$this->removeAllFieldsFromSelect();
|
38 |
+
|
39 |
+
// For net total sub query
|
40 |
+
$netSelect = clone $this->getSelect();
|
41 |
+
$netSelect->where('main_table.state NOT IN (?)', array(
|
42 |
+
Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,
|
43 |
+
Mage_Sales_Model_Order::STATE_NEW,
|
44 |
+
Mage_Sales_Model_Order::STATE_CANCELED,
|
45 |
+
Mage_Sales_Model_Order::STATE_CLOSED,
|
46 |
+
));
|
47 |
+
|
48 |
+
// Build net revenue expressions
|
49 |
+
$netExp = $this->_getSalesAmountExpression();
|
50 |
+
|
51 |
+
// Net expression * base rate
|
52 |
+
$netSelect->columns(array(
|
53 |
+
'total' => new Zend_Db_Expr(sprintf('SUM(%s)', $netExp))
|
54 |
+
));
|
55 |
+
|
56 |
+
// Build final select
|
57 |
+
$adapter = $this->getConnection();
|
58 |
+
$totalInvoiced = $adapter->getIfNullSql('main_table.total_invoiced', 0);
|
59 |
+
|
60 |
+
$this
|
61 |
+
->getSelect()
|
62 |
+
->columns(array(
|
63 |
+
'net' => $netSelect,
|
64 |
+
'gross' => new Zend_Db_Expr(sprintf('SUM(%s)', $totalInvoiced)),
|
65 |
+
'total_orders' => 'COUNT(main_table.entity_id)',
|
66 |
+
'total_items' => 'SUM(main_table.total_qty_ordered)'
|
67 |
+
))
|
68 |
+
->where('main_table.state NOT IN (?)', array(
|
69 |
+
Mage_Sales_Model_Order::STATE_PENDING_PAYMENT,
|
70 |
+
Mage_Sales_Model_Order::STATE_NEW
|
71 |
+
));
|
72 |
+
|
73 |
+
return $this;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Get sales amount expression
|
78 |
+
*
|
79 |
+
* Override to use store not base values
|
80 |
+
*
|
81 |
+
* @return string
|
82 |
+
*/
|
83 |
+
protected function _getSalesAmountExpression()
|
84 |
+
{
|
85 |
+
if (is_null($this->_salesAmountExpression)) {
|
86 |
+
$adapter = $this->getConnection();
|
87 |
+
$expressionDTO = new Varien_Object(array(
|
88 |
+
'expression' => '%s - %s - %s - (%s - %s - %s)',
|
89 |
+
'arguments' => array(
|
90 |
+
$adapter->getIfNullSql('main_table.total_invoiced', 0),
|
91 |
+
$adapter->getIfNullSql('main_table.tax_invoiced', 0),
|
92 |
+
$adapter->getIfNullSql('main_table.shipping_invoiced', 0),
|
93 |
+
$adapter->getIfNullSql('main_table.total_refunded', 0),
|
94 |
+
$adapter->getIfNullSql('main_table.tax_refunded', 0),
|
95 |
+
$adapter->getIfNullSql('main_table.shipping_refunded', 0),
|
96 |
+
)
|
97 |
+
));
|
98 |
+
|
99 |
+
Mage::dispatchEvent('sales_prepare_amount_expression', array(
|
100 |
+
'collection' => $this,
|
101 |
+
'expression_object' => $expressionDTO,
|
102 |
+
));
|
103 |
+
|
104 |
+
$this->_salesAmountExpression = vsprintf(
|
105 |
+
$expressionDTO->getExpression(),
|
106 |
+
$expressionDTO->getArguments()
|
107 |
+
);
|
108 |
+
}
|
109 |
+
|
110 |
+
return $this->_salesAmountExpression;
|
111 |
+
}
|
112 |
+
}
|
app/code/community/Esendex/Events/etc/config.xml
ADDED
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<!--
|
4 |
+
Copyright (C) 2015 Esendex Ltd.
|
5 |
+
|
6 |
+
This program is free software: you can redistribute it and/or modify
|
7 |
+
it under the terms of the Esendex Community License v1.0 as published by
|
8 |
+
the Esendex Ltd.
|
9 |
+
|
10 |
+
This program is distributed in the hope that it will be useful,
|
11 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
Esendex Community Licence v1.0 for more details.
|
14 |
+
|
15 |
+
You should have received a copy of the Esendex Community Licence v1.0
|
16 |
+
along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
17 |
+
-->
|
18 |
+
|
19 |
+
<config>
|
20 |
+
<modules>
|
21 |
+
<Esendex_Events>
|
22 |
+
<version>0.2.0</version>
|
23 |
+
</Esendex_Events>
|
24 |
+
</modules>
|
25 |
+
<global>
|
26 |
+
<resources>
|
27 |
+
<esendex_events_setup>
|
28 |
+
<setup>
|
29 |
+
<module>Esendex_Events</module>
|
30 |
+
<class>Esendex_Sms_Model_Resource_Setup</class>
|
31 |
+
</setup>
|
32 |
+
</esendex_events_setup>
|
33 |
+
</resources>
|
34 |
+
<blocks>
|
35 |
+
<esendex_events>
|
36 |
+
<class>Esendex_Events_Block</class>
|
37 |
+
</esendex_events>
|
38 |
+
</blocks>
|
39 |
+
<helpers>
|
40 |
+
<esendex_events>
|
41 |
+
<class>Esendex_Events_Helper</class>
|
42 |
+
</esendex_events>
|
43 |
+
</helpers>
|
44 |
+
<models>
|
45 |
+
<esendex_events>
|
46 |
+
<class>Esendex_Events_Model</class>
|
47 |
+
<resourceModel>esendex_events_resource</resourceModel>
|
48 |
+
</esendex_events>
|
49 |
+
<esendex_events_resource>
|
50 |
+
<class>Esendex_Events_Model_Resource</class>
|
51 |
+
<entities>
|
52 |
+
<admin_sales_report_recipients>
|
53 |
+
<table>esendex_sms_trigger_admin_sales_report_recipient</table>
|
54 |
+
</admin_sales_report_recipients>
|
55 |
+
<admin_sales_report_details>
|
56 |
+
<table>esendex_sms_trigger_admin_sales_report_details</table>
|
57 |
+
</admin_sales_report_details>
|
58 |
+
</entities>
|
59 |
+
</esendex_events_resource>
|
60 |
+
</models>
|
61 |
+
<events>
|
62 |
+
|
63 |
+
<!-- For Order Save's -->
|
64 |
+
<sales_order_save_after>
|
65 |
+
<observers>
|
66 |
+
<order_save>
|
67 |
+
<class>Esendex_Sms_Model_Observer</class>
|
68 |
+
<method>dispatchEvent</method>
|
69 |
+
</order_save>
|
70 |
+
</observers>
|
71 |
+
</sales_order_save_after>
|
72 |
+
|
73 |
+
<!-- For Shipments -->
|
74 |
+
<sales_order_shipment_save_after>
|
75 |
+
<observers>
|
76 |
+
<order_shipment_save>
|
77 |
+
<class>Esendex_Sms_Model_Observer</class>
|
78 |
+
<method>dispatchEvent</method>
|
79 |
+
</order_shipment_save>
|
80 |
+
</observers>
|
81 |
+
</sales_order_shipment_save_after>
|
82 |
+
|
83 |
+
<esendex_sms_edit_form_stage2_order_status_change>
|
84 |
+
<observers>
|
85 |
+
<esendex_events_edit_form_stage2_order_status_change_add_fields>
|
86 |
+
<class>Esendex_Events_Model_Listener_TriggerCreate_OrderStatusChange</class>
|
87 |
+
<method>addFields</method>
|
88 |
+
</esendex_events_edit_form_stage2_order_status_change_add_fields>
|
89 |
+
</observers>
|
90 |
+
</esendex_sms_edit_form_stage2_order_status_change>
|
91 |
+
|
92 |
+
<esendex_sms_edit_form_stage2_admin_sales_report>
|
93 |
+
<observers>
|
94 |
+
<esendex_events_edit_form_stage2_admin_sales_report_add_fields>
|
95 |
+
<class>Esendex_Events_Model_Listener_TriggerCreate_AdminSalesReport</class>
|
96 |
+
<method>addFields</method>
|
97 |
+
</esendex_events_edit_form_stage2_admin_sales_report_add_fields>
|
98 |
+
</observers>
|
99 |
+
</esendex_sms_edit_form_stage2_admin_sales_report>
|
100 |
+
</events>
|
101 |
+
</global>
|
102 |
+
<crontab>
|
103 |
+
<jobs>
|
104 |
+
<esendex_sales_report>
|
105 |
+
<!-- Every day at 12PM -->
|
106 |
+
<run><model>esendex_sms/observer::dispatchCron</model></run>
|
107 |
+
</esendex_sales_report>
|
108 |
+
</jobs>
|
109 |
+
</crontab>
|
110 |
+
</config>
|
app/code/community/Esendex/Events/etc/system.xml
ADDED
@@ -0,0 +1,46 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<!--
|
4 |
+
Copyright (C) 2015 Esendex Ltd.
|
5 |
+
|
6 |
+
This program is free software: you can redistribute it and/or modify
|
7 |
+
it under the terms of the Esendex Community License v1.0 as published by
|
8 |
+
the Esendex Ltd.
|
9 |
+
|
10 |
+
This program is distributed in the hope that it will be useful,
|
11 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
Esendex Community Licence v1.0 for more details.
|
14 |
+
|
15 |
+
You should have received a copy of the Esendex Community Licence v1.0
|
16 |
+
along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
17 |
+
-->
|
18 |
+
|
19 |
+
<config>
|
20 |
+
<sections>
|
21 |
+
<esendex_sms translate="label" module="esendex_sms">
|
22 |
+
<groups>
|
23 |
+
<mobile_sales_report translate="label">
|
24 |
+
<label>Schedule Mobile Sales Report</label>
|
25 |
+
<frontend_type>text</frontend_type>
|
26 |
+
<sort_order>2</sort_order>
|
27 |
+
<show_in_default>1</show_in_default>
|
28 |
+
<show_in_website>0</show_in_website>
|
29 |
+
<show_in_store>0</show_in_store>
|
30 |
+
<fields>
|
31 |
+
<time translate="label">
|
32 |
+
<label>Cron Time</label>
|
33 |
+
<frontend_type>time</frontend_type>
|
34 |
+
<frontend_model>esendex_events/adminhtml_system_config_cronTime</frontend_model>
|
35 |
+
<backend_model>esendex_events/adminhtml_system_config_backend_cronTime</backend_model>
|
36 |
+
<show_in_default>1</show_in_default>
|
37 |
+
<show_in_website>0</show_in_website>
|
38 |
+
<show_in_store>0</show_in_store>
|
39 |
+
<comment>Sales Reports will be sent at this time each day.</comment>
|
40 |
+
</time>
|
41 |
+
</fields>
|
42 |
+
</mobile_sales_report>
|
43 |
+
</groups>
|
44 |
+
</esendex_sms>
|
45 |
+
</sections>
|
46 |
+
</config>
|
app/code/community/Esendex/Events/sql/esendex_events_setup/install-0.1.0.php
ADDED
@@ -0,0 +1,196 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/** @var $this Esendex_Sms_Model_Resource_Setup */
|
19 |
+
$this->startSetup();
|
20 |
+
|
21 |
+
|
22 |
+
$this->addEvent(
|
23 |
+
'Order Shipped with Tracking',
|
24 |
+
'event',
|
25 |
+
'sales_order_shipment_save_after',
|
26 |
+
0,
|
27 |
+
'esendex_events/eventProcessor_orderShippedWithTracking'
|
28 |
+
);
|
29 |
+
|
30 |
+
$this->addEvent(
|
31 |
+
'Order Shipped',
|
32 |
+
'event',
|
33 |
+
'sales_order_shipment_save_after',
|
34 |
+
1,
|
35 |
+
'esendex_events/eventProcessor_orderShipped'
|
36 |
+
);
|
37 |
+
|
38 |
+
$this->addEvent(
|
39 |
+
'Order Status Changed - Canceled',
|
40 |
+
'event',
|
41 |
+
'sales_order_save_after',
|
42 |
+
2,
|
43 |
+
'esendex_events/eventProcessor_orderStatusChange_canceled'
|
44 |
+
);
|
45 |
+
|
46 |
+
$this->addEvent(
|
47 |
+
'Order Status Changed - Closed',
|
48 |
+
'event',
|
49 |
+
'sales_order_save_after',
|
50 |
+
3,
|
51 |
+
'esendex_events/eventProcessor_orderStatusChange_closed'
|
52 |
+
);
|
53 |
+
|
54 |
+
$this->addEvent(
|
55 |
+
'Order Status Changed - Complete',
|
56 |
+
'event',
|
57 |
+
'sales_order_save_after',
|
58 |
+
4,
|
59 |
+
'esendex_events/eventProcessor_orderStatusChange_complete'
|
60 |
+
);
|
61 |
+
|
62 |
+
$this->addEvent(
|
63 |
+
'Order Status Changed - On Hold',
|
64 |
+
'event',
|
65 |
+
'sales_order_save_after',
|
66 |
+
5,
|
67 |
+
'esendex_events/eventProcessor_orderStatusChange_onHold'
|
68 |
+
);
|
69 |
+
|
70 |
+
$this->addEvent(
|
71 |
+
'Order Status Changed - Payment Review',
|
72 |
+
'event',
|
73 |
+
'sales_order_save_after',
|
74 |
+
6,
|
75 |
+
'esendex_events/eventProcessor_orderStatusChange_paymentReview'
|
76 |
+
);
|
77 |
+
|
78 |
+
$this->addEvent(
|
79 |
+
'Order Status Changed - Pending',
|
80 |
+
'event',
|
81 |
+
'sales_order_save_after',
|
82 |
+
7,
|
83 |
+
'esendex_events/eventProcessor_orderStatusChange_pending'
|
84 |
+
);
|
85 |
+
|
86 |
+
$this->addEvent(
|
87 |
+
'Order Status Changed - Pending Payment',
|
88 |
+
'event',
|
89 |
+
'sales_order_save_after',
|
90 |
+
8,
|
91 |
+
'esendex_events/eventProcessor_orderStatusChange_pendingPayment'
|
92 |
+
);
|
93 |
+
|
94 |
+
$this->addEvent(
|
95 |
+
'Order Status Changed - Processing',
|
96 |
+
'event',
|
97 |
+
'sales_order_save_after',
|
98 |
+
10,
|
99 |
+
'esendex_events/eventProcessor_orderStatusChange_processing'
|
100 |
+
);
|
101 |
+
|
102 |
+
$this->addEvent(
|
103 |
+
'Order Status Changed - Suspected Fraud',
|
104 |
+
'event',
|
105 |
+
'sales_order_save_after',
|
106 |
+
11,
|
107 |
+
'esendex_events/eventProcessor_orderStatusChange_suspectedFraud'
|
108 |
+
);
|
109 |
+
|
110 |
+
$this->addEvent(
|
111 |
+
'Admin Sales Report',
|
112 |
+
'cron',
|
113 |
+
'esendex_sales_report',
|
114 |
+
12,
|
115 |
+
'esendex_events/eventProcessor_adminSalesReport',
|
116 |
+
'esendex_events/adminSalesReport'
|
117 |
+
);
|
118 |
+
|
119 |
+
// Create New Table for Extra Admin Sales Report Recipients Data
|
120 |
+
$tableName = $this->getTable('esendex_events/admin_sales_report_recipients');
|
121 |
+
if (!$this->getConnection()->isTableExists($tableName)) {
|
122 |
+
$table = $this->getConnection()
|
123 |
+
->newTable($this->getTable($tableName))
|
124 |
+
->addColumn(
|
125 |
+
'trigger_id',
|
126 |
+
Varien_Db_Ddl_Table::TYPE_INTEGER,
|
127 |
+
null,
|
128 |
+
array(
|
129 |
+
'nullable' => false,
|
130 |
+
),
|
131 |
+
'Trigger Id'
|
132 |
+
)
|
133 |
+
->addColumn(
|
134 |
+
'recipient',
|
135 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
136 |
+
64,
|
137 |
+
array(
|
138 |
+
'nullable' => false,
|
139 |
+
),
|
140 |
+
'Recipient Number'
|
141 |
+
)
|
142 |
+
->addForeignKey(
|
143 |
+
$this->getFkName('esendex_events/admin_sales_report_recipients', 'trigger_id', 'esendex_sms/trigger', 'entity_id'),
|
144 |
+
'trigger_id',
|
145 |
+
$this->getTable('esendex_sms/trigger'),
|
146 |
+
'entity_id'
|
147 |
+
)
|
148 |
+
->setComment('Trigger to Admin Sales Recipient Table');
|
149 |
+
|
150 |
+
$this->getConnection()->createTable($table);
|
151 |
+
}
|
152 |
+
|
153 |
+
// Create New Table for Extra Admin Sales Report Recipients Data
|
154 |
+
$tableName = $this->getTable('esendex_events/admin_sales_report_details');
|
155 |
+
if (!$this->getConnection()->isTableExists($tableName)) {
|
156 |
+
$table = $this->getConnection()
|
157 |
+
->newTable($this->getTable($tableName))
|
158 |
+
->addColumn(
|
159 |
+
'trigger_id',
|
160 |
+
Varien_Db_Ddl_Table::TYPE_INTEGER,
|
161 |
+
null,
|
162 |
+
array(
|
163 |
+
'nullable' => false,
|
164 |
+
),
|
165 |
+
'Trigger Id'
|
166 |
+
)
|
167 |
+
->addColumn(
|
168 |
+
'frequency',
|
169 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
170 |
+
64,
|
171 |
+
array(
|
172 |
+
'nullable' => false,
|
173 |
+
),
|
174 |
+
'Report Frequency'
|
175 |
+
)
|
176 |
+
->addColumn(
|
177 |
+
'start_date',
|
178 |
+
Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
|
179 |
+
null,
|
180 |
+
array(
|
181 |
+
'nullable' => false,
|
182 |
+
),
|
183 |
+
'Report Start Date'
|
184 |
+
)
|
185 |
+
->addForeignKey(
|
186 |
+
$this->getFkName('esendex_events/admin_sales_report_details', 'trigger_id', 'esendex_sms/trigger', 'entity_id'),
|
187 |
+
'trigger_id',
|
188 |
+
$this->getTable('esendex_sms/trigger'),
|
189 |
+
'entity_id'
|
190 |
+
)
|
191 |
+
->setComment('Trigger to Admin Sales Detail Table');
|
192 |
+
|
193 |
+
$this->getConnection()->createTable($table);
|
194 |
+
}
|
195 |
+
|
196 |
+
$this->endSetup();
|
app/code/community/Esendex/Events/sql/esendex_events_setup/upgrade-0.1.0-0.2.0.php
ADDED
@@ -0,0 +1,342 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/** @var $this Esendex_Sms_Model_Resource_Setup */
|
19 |
+
$this->startSetup();
|
20 |
+
|
21 |
+
// Remove all sample messages
|
22 |
+
$this->getConnection()->query('TRUNCATE TABLE ' . $this->getTable('esendex_sms/event_sample_message_template'));
|
23 |
+
|
24 |
+
// Notifications Sample Messages
|
25 |
+
|
26 |
+
// Order Shipped
|
27 |
+
$this->addSampleMessage(
|
28 |
+
'Order Shipped',
|
29 |
+
'en_GB',
|
30 |
+
'Great news, $FIRSTNAME$! Your $STORENAME$ order #$ORDERNO$ is on its way. Thank you for shopping with $STORENAME$.'
|
31 |
+
);
|
32 |
+
|
33 |
+
$this->addSampleMessage(
|
34 |
+
'Order Shipped',
|
35 |
+
'fr_FR',
|
36 |
+
'Excellente nouvelle, $FIRSTNAME$ ! Votre commande $STORENAME$ #$ORDERNO$ est en cours d\'acheminement. Merci pour votre achat chez $STORENAME$.'
|
37 |
+
);
|
38 |
+
|
39 |
+
$this->addSampleMessage(
|
40 |
+
'Order Shipped',
|
41 |
+
'es_ES',
|
42 |
+
'Hola $FIRSTNAME$, tu $STORENAME$ pedido #$ORDERNO$ está en camino. Gracias por comprar en $STORENAME$.'
|
43 |
+
);
|
44 |
+
|
45 |
+
$this->addSampleMessage(
|
46 |
+
'Order Shipped',
|
47 |
+
'de_DE',
|
48 |
+
'Gute Nachrichten $FIRSTNAME$! Ihre $STORENAME$ Bestellung #$ORDERNO$ ist unterwegs. Vielen Dank, dass Sie bei $STORENAME$ eingekauft haben.'
|
49 |
+
);
|
50 |
+
|
51 |
+
// Order Shipped with Tracking
|
52 |
+
$this->addSampleMessage(
|
53 |
+
'Order Shipped with Tracking',
|
54 |
+
'en_GB',
|
55 |
+
'Great news, $FIRSTNAME$! Your $STORENAME$ order #$ORDERNO$ is on its way with $PROVIDER$. To track your delivery please use your tracking code $TRACKINGNO$.'
|
56 |
+
);
|
57 |
+
|
58 |
+
$this->addSampleMessage(
|
59 |
+
'Order Shipped with Tracking',
|
60 |
+
'es_ES',
|
61 |
+
'Hola $FIRSTNAME$, tu $STORENAME$ pedido #$ORDERNO$ está en camino con $PROVIDER$. Para seguir el progreso del pedido puedes usar este código $TRACKINGNO$.'
|
62 |
+
);
|
63 |
+
|
64 |
+
$this->addSampleMessage(
|
65 |
+
'Order Shipped with Tracking',
|
66 |
+
'fr_FR',
|
67 |
+
'Excellente nouvelle, $FIRSTNAME$ ! Votre commande $STORENAME$ #$ORDERNO$ est en cours d\'acheminement avec $PROVIDER$. Pour suivre votre colis, veuillez utliser le numéro de suivi $TRACKINGNO$.'
|
68 |
+
);
|
69 |
+
|
70 |
+
|
71 |
+
$this->addSampleMessage(
|
72 |
+
'Order Shipped with Tracking',
|
73 |
+
'de_DE',
|
74 |
+
'Gute Nachrichten $FIRSTNAME$! Ihre $STORENAME$ Bestellung #$ORDERNO$ ist unterwegs. Sie können Ihre Bestellung unter dem Code $TRACKINGNO$ nachverfolgen.'
|
75 |
+
);
|
76 |
+
|
77 |
+
|
78 |
+
// Order Status Changed - Processing
|
79 |
+
$this->addSampleMessage(
|
80 |
+
'Order Status Changed - Processing',
|
81 |
+
'en_GB',
|
82 |
+
'Hi $FIRSTNAME$, your $STORENAME$ order #$ORDERNO$ for $PRODUCT$ has been received. To check the status of your order please visit $ORDERURL$. Thank you for shopping with $STORENAME$.'
|
83 |
+
);
|
84 |
+
|
85 |
+
$this->addSampleMessage(
|
86 |
+
'Order Status Changed - Processing',
|
87 |
+
'es_ES',
|
88 |
+
'Hola $FIRSTNAME$, tu $STORENAME$ pedido #$ORDERNO$ para $PRODUCT$ se ha registrado. Para saber el estado del pedido visita $ORDERURL$. Gracias por comprar en $STORENAME$.'
|
89 |
+
);
|
90 |
+
|
91 |
+
$this->addSampleMessage(
|
92 |
+
'Order Status Changed - Processing',
|
93 |
+
'fr_FR',
|
94 |
+
'Bonjour $FIRSTNAME$, nous avons reçu votre commande $STORENAME$ #$ORDERNO$ pour $PRODUCT$. Pour vérifier le statut de votre commande, veuillez vous rendre sur $ORDERURL$. Merci pour votre achat chez $STORENAME$.'
|
95 |
+
);
|
96 |
+
|
97 |
+
$this->addSampleMessage(
|
98 |
+
'Order Status Changed - Processing',
|
99 |
+
'de_DE',
|
100 |
+
'Hallo $FIRSTNAME$! Wir haben Ihre $STORENAME$ Bestellung #$ORDERNO$ von $PRODUCT$ erhalten. Um den Status Ihrer Bestellung zu überprüfen, besuchen Sie bitte $ORDERURL$. Vielen Dank, dass Sie bei $STORENAME$ eingekauft haben!'
|
101 |
+
);
|
102 |
+
|
103 |
+
// Order Status Changed - Pending Payment
|
104 |
+
$this->addSampleMessage(
|
105 |
+
'Order Status Changed - Pending Payment',
|
106 |
+
'en_GB',
|
107 |
+
'Hi $FIRSTNAME$, the payment for your $STORENAME$ order #$ORDERNO$ is being processed. To check the status of your payment please visit $ORDERURL$ or call $STORECONTACTTELEPHONE$ for further information.'
|
108 |
+
);
|
109 |
+
|
110 |
+
$this->addSampleMessage(
|
111 |
+
'Order Status Changed - Pending Payment',
|
112 |
+
'es_ES',
|
113 |
+
'Hola $FIRSTNAME$, el pago a $STORENAME$ pedido #$ORDERNO$ está siendo procesado. Para comprobar el estado de tu pedido visita $ORDERURL$ o llama al $STORECONTACTTELEPHONE$'
|
114 |
+
);
|
115 |
+
|
116 |
+
$this->addSampleMessage(
|
117 |
+
'Order Status Changed - Pending Payment',
|
118 |
+
'fr_FR',
|
119 |
+
'Bonjour $FIRSTNAME$, le paiement pour votre commande $STORENAME$ #$ORDERNO$ est en cours de traitement. Pour vérifier le statut de votre paiement, veuillez vous rendre sur $ORDERURL$ ou appeler le $STORECONTACTTELEPHONE$.'
|
120 |
+
);
|
121 |
+
|
122 |
+
$this->addSampleMessage(
|
123 |
+
'Order Status Changed - Pending Payment',
|
124 |
+
'de_DE',
|
125 |
+
'Hallo $FIRSTNAME$! Die Zahlung für Ihre $STORENAME$ Bestellung #$ORDERNO$ wird gerade bearbeitet. Um den Status Ihrer Bestellung zu überprüfen, besuchen Sie bitte $ORDERURL$ oder wählen Sie $STORECONTACTTELEPHONE$ für weitere Informationen.'
|
126 |
+
);
|
127 |
+
|
128 |
+
// Order Status Changed - Suspected Fraud
|
129 |
+
$this->addSampleMessage(
|
130 |
+
'Order Status Changed - Suspected Fraud',
|
131 |
+
'en_GB',
|
132 |
+
'Hi $FIRSTNAME$, thank you for your recent $STORENAME$ order #$ORDERNO$. To complete your order we\'ll need to speak to you, please call us on $STORECONTACTTELEPHONE$.'
|
133 |
+
);
|
134 |
+
|
135 |
+
$this->addSampleMessage(
|
136 |
+
'Order Status Changed - Suspected Fraud',
|
137 |
+
'es_ES',
|
138 |
+
'Hola $FIRSTNAME$, gracias por tu compra en $STORENAME$ pedido #$ORDERNO$. Para completar el pedido tenemos que hablar contigo, por favor llama al $STORECONTACTTELEPHONE$.'
|
139 |
+
);
|
140 |
+
|
141 |
+
$this->addSampleMessage(
|
142 |
+
'Order Status Changed - Suspected Fraud',
|
143 |
+
'fr_FR',
|
144 |
+
'Bonjour $FIRSTNAME$, merci pour votre récente commande $STORENAME$ #$ORDERNO$. Afin de traiter votre commande, il nous faut vous contacter, veuillez nous appeler au $STORECONTACTTELEPHONE$.'
|
145 |
+
);
|
146 |
+
|
147 |
+
$this->addSampleMessage(
|
148 |
+
'Order Status Changed - Suspected Fraud',
|
149 |
+
'de_DE',
|
150 |
+
'Hallo $FIRSTNAME$! Vielen Dank für Ihre kürzlich getätigte $STORENAME$ Bestellung #$ORDERNO$. Um Ihre Bestellung abzuschließen, müssen wir persönlich mit Ihnen sprechen. Bitte rufen Sie uns an unter $STORECONTACTTELEPHONE$.'
|
151 |
+
);
|
152 |
+
|
153 |
+
// Order Status Changed - Payment Review
|
154 |
+
$this->addSampleMessage(
|
155 |
+
'Order Status Changed - Payment Review',
|
156 |
+
'en_GB',
|
157 |
+
'Hi $FIRSTNAME$, the payment for your $STORENAME$ order #$ORDERNO$ is being processed. To check the status of your payment please visit $ORDERURL$ or call $STORECONTACTTELEPHONE$ for further information.'
|
158 |
+
);
|
159 |
+
|
160 |
+
$this->addSampleMessage(
|
161 |
+
'Order Status Changed - Payment Review',
|
162 |
+
'es_ES',
|
163 |
+
'Hola $FIRSTNAME$, el pago de tu $STORENAME$ pedido #$ORDERNO$ se esta procesando. Para comprobar el estado de la compra visita $ORDERURL$ o llama al $STORECONTACTTELEPHONE$'
|
164 |
+
);
|
165 |
+
|
166 |
+
$this->addSampleMessage(
|
167 |
+
'Order Status Changed - Payment Review',
|
168 |
+
'fr_FR',
|
169 |
+
'Bonjour $FIRSTNAME$, le paiement pour votre commande $STORENAME$ #$ORDERNO$ est en cours de traitement. Pour vérifier le statut de votre paiement, veuillez vous rendre sur $ORDERURL$ ou appeler le $STORECONTACTTELEPHONE$.'
|
170 |
+
);
|
171 |
+
|
172 |
+
$this->addSampleMessage(
|
173 |
+
'Order Status Changed - Payment Review',
|
174 |
+
'de_DE',
|
175 |
+
'Hallo $FIRSTNAME$! Die Zahlung für Ihre $STORENAME$ Bestellung #$ORDERNO$ wird gerade bearbeitet. Um den Status Ihrer Zahlung zu überprüfen, besuchen Sie bitte $ORDERURL$ oder wählen Sie $STORECONTACTTELEPHONE$ für weitere Informationen. '
|
176 |
+
);
|
177 |
+
|
178 |
+
// Order Status Changed - Pending
|
179 |
+
$this->addSampleMessage(
|
180 |
+
'Order Status Changed - Pending',
|
181 |
+
'en_GB',
|
182 |
+
'Hi $FIRSTNAME$, your $STORENAME$ order #$ORDERNO$ is now being processed. To check the status of your order please visit $ORDERURL$ or call $STORECONTACTTELEPHONE$.'
|
183 |
+
);
|
184 |
+
|
185 |
+
$this->addSampleMessage(
|
186 |
+
'Order Status Changed - Pending',
|
187 |
+
'es_ES',
|
188 |
+
'Hola $FIRSTNAME$, tu $STORENAME$ pedido #$ORDERNO$ está siendo procesado. Para ver el estado del pedido visita $ORDERURL$ o llama al $STORECONTACTTELEPHONE$.'
|
189 |
+
);
|
190 |
+
|
191 |
+
$this->addSampleMessage(
|
192 |
+
'Order Status Changed - Pending',
|
193 |
+
'fr_FR',
|
194 |
+
'Bonjour $FIRSTNAME$, votre commande $STORENAME$ #$ORDERNO$ est maintenant en cours de traitement. Pour vérifier le statut de votre commande, veuillez vous rendre sur $ORDERURL$ ou appeler le $STORECONTACTTELEPHONE$.'
|
195 |
+
);
|
196 |
+
|
197 |
+
$this->addSampleMessage(
|
198 |
+
'Order Status Changed - Pending',
|
199 |
+
'de_DE',
|
200 |
+
'Hallo $FIRSTNAME$! Ihre $STORENAME$ Bestellung #$ORDERNO$ wird gerade bearbeitet. Um den Status Ihrer Bestellung zu überprüfen, besuchen Sie bitte $ORDERURL$ oder wählen Sie $STORECONTACTTELEPHONE$.'
|
201 |
+
);
|
202 |
+
|
203 |
+
// Order Status Changed - On Hold
|
204 |
+
$this->addSampleMessage(
|
205 |
+
'Order Status Changed - On Hold',
|
206 |
+
'en_GB',
|
207 |
+
'Hi $FIRSTNAME$, your $STORENAME$ order #$ORDERNO$ has been placed on hold. This may mean an item you ordered is temporarily out of stock. To check the status of your order please visit $ORDERURL$ or call $STORECONTACTTELEPHONE$ for further information.'
|
208 |
+
);
|
209 |
+
|
210 |
+
$this->addSampleMessage(
|
211 |
+
'Order Status Changed - On Hold',
|
212 |
+
'es_ES',
|
213 |
+
'Hola $FIRSTNAME$, tu $STORENAME$ pedido #$ORDERNO$ está en espera. Esto puede ser debido a una falta de stok. Rogamos visites $ORDERURL$ o llames al $STORECONTACTTELEPHONE$.'
|
214 |
+
);
|
215 |
+
|
216 |
+
$this->addSampleMessage(
|
217 |
+
'Order Status Changed - On Hold',
|
218 |
+
'fr_FR',
|
219 |
+
'Bonjour $FIRSTNAME$, votre commande $STORENAME$ #$ORDERNO$ a été suspendue. Il se peut qu\'un article que vous avez commandé soit temporairement indisponible. Pour vérifier le statut de votre commande, veuillez vous rendre sur $ORDERURL$ ou appeler le $STORECONTACTTELEPHONE$ pour plus d\'informations.'
|
220 |
+
);
|
221 |
+
|
222 |
+
$this->addSampleMessage(
|
223 |
+
'Order Status Changed - On Hold',
|
224 |
+
'de_DE',
|
225 |
+
'Hallo $FIRSTNAME$! Ihre $STORENAME$ Bestellung #$ORDERNO$ wurde. Wenn Sie Ihre Bestellung abschließen möchten, wählen Sie folgende Nummer $STORECONTACTTELEPHONE$ oder besuchen Sie $ORDERURL$.'
|
226 |
+
);
|
227 |
+
|
228 |
+
// Order Status Changed - Complete
|
229 |
+
$this->addSampleMessage(
|
230 |
+
'Order Status Changed - Complete',
|
231 |
+
'en_GB',
|
232 |
+
'Great news, $FIRSTNAME$! Your $STORENAME$ order #$ORDERNO$ has been shipped today. Thank you for shopping with $STORENAME$.'
|
233 |
+
);
|
234 |
+
|
235 |
+
$this->addSampleMessage(
|
236 |
+
'Order Status Changed - Complete',
|
237 |
+
'es_ES',
|
238 |
+
'Hola $FIRSTNAME$, tu $STORENAME$ pedido #$ORDERNO$ ha sido enviado hoy. Gracias por comprar en $STORENAME$.'
|
239 |
+
);
|
240 |
+
|
241 |
+
$this->addSampleMessage(
|
242 |
+
'Order Status Changed - Complete',
|
243 |
+
'fr_FR',
|
244 |
+
'Excellente nouvelle, $FIRSTNAME$ ! Votre commande $STORENAME$ #$ORDERNO$ a été expédiée aujourd\'hui. Merci pour votre achat chez $STORENAME$.'
|
245 |
+
);
|
246 |
+
|
247 |
+
$this->addSampleMessage(
|
248 |
+
'Order Status Changed - Complete',
|
249 |
+
'de_DE',
|
250 |
+
'Gute Nachrichten $FIRSTNAME$! Ihre $STORENAME$ Bestellung #$ORDERNO$ hat das Lager verlassen. Vielen Dank, dass Sie bei $STORENAME$ eingekauft haben. '
|
251 |
+
);
|
252 |
+
|
253 |
+
// Order Status Changed - Closed
|
254 |
+
$this->addSampleMessage(
|
255 |
+
'Order Status Changed - Closed',
|
256 |
+
'en_GB',
|
257 |
+
'Hi $FIRSTNAME$, we received your $STORENAME$ order #$ORDERNO$ today. You should receive your refund in the next few days. For further information please call $STORECONTACTTELEPHONE$.'
|
258 |
+
);
|
259 |
+
|
260 |
+
$this->addSampleMessage(
|
261 |
+
'Order Status Changed - Closed',
|
262 |
+
'es_ES',
|
263 |
+
'Hola $FIRSTNAME$, hemos recibido tu $STORENAME$ pedido #$ORDERNO$ hoy. Te devolveremos el dinero en los próximos días. Para más información llama al $STORECONTACTTELEPHONE$.'
|
264 |
+
);
|
265 |
+
|
266 |
+
$this->addSampleMessage(
|
267 |
+
'Order Status Changed - Closed',
|
268 |
+
'fr_FR',
|
269 |
+
'Bonjour $FIRSTNAME$, nous avons reçu votre commande $STORENAME$ #$ORDERNO$ aujourd\'hui. Vous devriez être remboursé(e) dans les prochains jours. Pour plus d\'informations, veuillez appeler le $STORECONTACTTELEPHONE$.'
|
270 |
+
);
|
271 |
+
|
272 |
+
$this->addSampleMessage(
|
273 |
+
'Order Status Changed - Closed',
|
274 |
+
'de_DE',
|
275 |
+
'Hallo $FIRSTNAME$! Wir haben Ihren $STORENAME$ #$ORDERNO$ Auftrag heute erhalten. Wir werden Ihnen in den nächsten Tagen Ihr Geld rückerstatten. Für weitere Informationen kontaktieren Sie uns bitte unter $STORECONTACTTELEPHONE$'
|
276 |
+
);
|
277 |
+
|
278 |
+
// Order Status Changed - Canceled
|
279 |
+
$this->addSampleMessage(
|
280 |
+
'Order Status Changed - Canceled',
|
281 |
+
'en_GB',
|
282 |
+
'Hi $FIRSTNAME$, your $STORENAME$ order #$ORDERNO$ has been cancelled. If you would like to complete your order please call $STORECONTACTTELEPHONE$ or visit $ORDERURL$.'
|
283 |
+
);
|
284 |
+
|
285 |
+
$this->addSampleMessage(
|
286 |
+
'Order Status Changed - Canceled',
|
287 |
+
'es_ES',
|
288 |
+
'Hola $FIRSTNAME$, tu $STORENAME$ pedido #$ORDERNO$ ha sido cancelado. Si sigues queriendo completar tu pedido llama al $STORECONTACTTELEPHONE$ o visita $ORDERURL$.'
|
289 |
+
);
|
290 |
+
|
291 |
+
$this->addSampleMessage(
|
292 |
+
'Order Status Changed - Canceled',
|
293 |
+
'fr_FR',
|
294 |
+
'Bonjour $FIRSTNAME$, votre commande $STORENAME$ #$ORDERNO$ a été annulée. Si vous souhaitez terminer votre commande, veuillez appeler le $STORECONTACTTELEPHONE$ ou vous rendre sur $ORDERURL$.'
|
295 |
+
);
|
296 |
+
|
297 |
+
$this->addSampleMessage(
|
298 |
+
'Order Status Changed - Canceled',
|
299 |
+
'de_DE',
|
300 |
+
'Hallo $FIRSTNAME$! Ihre $ShopName$ Bestellung wurde storniert. Wenn Sie Ihre Bestellung abschließen möchten, wählen Sie folgende Nummer $STORECONTACTTELEPHONE$ oder besuchen Sie $ORDERURL$.'
|
301 |
+
);
|
302 |
+
|
303 |
+
|
304 |
+
// Admin Sales Report Sample Messages
|
305 |
+
$GBmessage = <<<'GBMESSAGE'
|
306 |
+
Sales for $STORENAME$ from $STARTDATE$ to $ENDDATE$ were:
|
307 |
+
Net total - $NETTOTAL$
|
308 |
+
Grand total - $GRANDTOTAL$
|
309 |
+
Orders - $NUMBEROFORDERS$
|
310 |
+
Items - $NUMBEROFITEMSSOLD$
|
311 |
+
GBMESSAGE;
|
312 |
+
|
313 |
+
$FRmessage = <<<'FRMESSAGE'
|
314 |
+
Les ventes pour $STORENAME$ du $STARTDATE$ au $ENDDATE$ sont :
|
315 |
+
Total net - $NETTOTAL$
|
316 |
+
Grand total - $GRANDTOTAL$
|
317 |
+
Commandes - $NUMBERORORDERS$
|
318 |
+
Articles - $NUMBEROFITEMSSOLD$
|
319 |
+
FRMESSAGE;
|
320 |
+
|
321 |
+
$ESmessage = <<<'ESMESSAGE'
|
322 |
+
Ventas para $STORENAME$ desde $STARTDATE$ a $ENDDATE$ fueron:
|
323 |
+
Total neto - $NETTOTAL$
|
324 |
+
Total - $GRANDTOTAL$
|
325 |
+
Pedidos - $NUMBEROFORDERS$
|
326 |
+
Articulos - $NUMBEROFITEMSSOLD$
|
327 |
+
ESMESSAGE;
|
328 |
+
|
329 |
+
$DEmessage = <<<'DEMESSAGE'
|
330 |
+
Verkäufe für $STORENAME$ von $STARTDATE$ bis $ENDDATE$:
|
331 |
+
Nettogesamtbetrag - $NETTOTAL$
|
332 |
+
Gesamtbetrag - $GRANDTOTAL$
|
333 |
+
Bestellungen - $NUMBEROFORDERS$
|
334 |
+
Artikel - $NUMBEROFITEMSSOLD$
|
335 |
+
DEMESSAGE;
|
336 |
+
|
337 |
+
$this->addSampleMessage('Admin Sales Report', 'en_GB', $GBmessage);
|
338 |
+
$this->addSampleMessage('Admin Sales Report', 'fr_FR', $FRmessage);
|
339 |
+
$this->addSampleMessage('Admin Sales Report', 'es_ES', $ESmessage);
|
340 |
+
$this->addSampleMessage('Admin Sales Report', 'de_DE', $DEmessage);
|
341 |
+
|
342 |
+
$this->endSetup();
|
app/code/community/Esendex/Sms/Block/Adminhtml/AccountNotifications.php
ADDED
@@ -0,0 +1,47 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Block_Adminhtml_AccountNotifications
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Block_Adminhtml_AccountNotifications extends Mage_Core_Block_Template
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @var string
|
26 |
+
*/
|
27 |
+
protected $logo = 'http://www.esendex.co.uk/blog/wp-content/uploads/2010/06/Esendex-Stacked-Logotype-Primary-MASTER-300x212.jpg';
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Get the logo for these notifications
|
31 |
+
*
|
32 |
+
* @return string
|
33 |
+
*/
|
34 |
+
public function getLogo()
|
35 |
+
{
|
36 |
+
return $this->logo;
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @return array
|
41 |
+
*/
|
42 |
+
public function getNotifications()
|
43 |
+
{
|
44 |
+
$accountNotifications = Mage::getModel('esendex_sms/accountNotifications');
|
45 |
+
return $accountNotifications->getNotifications();
|
46 |
+
}
|
47 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/Grid/Renderer/Translate.php
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class Esendex_Sms_Block_Adminhtml_Grid_Renderer_Translate
|
5 |
+
* @author Michael Woodward <michael@wearejh.com>
|
6 |
+
*/
|
7 |
+
class Esendex_Sms_Block_Adminhtml_Grid_Renderer_Translate extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
|
8 |
+
{
|
9 |
+
/**
|
10 |
+
* Render the string translated by Esendex SMS helper
|
11 |
+
*
|
12 |
+
* @param Varien_Object $row
|
13 |
+
* @return string
|
14 |
+
*/
|
15 |
+
public function render(Varien_Object $row)
|
16 |
+
{
|
17 |
+
$value = $row->getData($this->getColumn()->getIndex());
|
18 |
+
|
19 |
+
return Mage::helper('esendex_sms')->__($value);
|
20 |
+
}
|
21 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/Messages.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Block_Adminhtml_Messages
|
20 |
+
*
|
21 |
+
* @author Michael Woodward <michael@wearejh.com>
|
22 |
+
*/
|
23 |
+
class Esendex_Sms_Block_Adminhtml_Messages extends Mage_Adminhtml_Block_Widget_Grid_Container
|
24 |
+
{
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Constructor
|
28 |
+
*/
|
29 |
+
public function __construct()
|
30 |
+
{
|
31 |
+
$this->_controller = 'adminhtml_messages';
|
32 |
+
$this->_blockGroup = 'esendex_sms';
|
33 |
+
parent::__construct();
|
34 |
+
$this->_headerText = Mage::helper('esendex_sms')->__('Sent Messages');
|
35 |
+
$this->_removeButton('add');
|
36 |
+
}
|
37 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/Messages/Grid.php
ADDED
@@ -0,0 +1,212 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Block_Adminhtml_Sender_Grid
|
20 |
+
*
|
21 |
+
* @author Michael Woodward <michael@wearejh.com>
|
22 |
+
*/
|
23 |
+
class Esendex_Sms_Block_Adminhtml_Messages_Grid extends Mage_Adminhtml_Block_Widget_Grid
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Constructor
|
27 |
+
*/
|
28 |
+
public function __construct()
|
29 |
+
{
|
30 |
+
parent::__construct();
|
31 |
+
$this->setId('sentMessagesGrid');
|
32 |
+
$this->setDefaultSort('entity_id');
|
33 |
+
$this->setDefaultDir('ASC');
|
34 |
+
$this->setSaveParametersInSession(true);
|
35 |
+
$this->setUseAjax(true);
|
36 |
+
|
37 |
+
// Use our custom grid template as Esendex API max page size is 100.
|
38 |
+
// If we don't remove the grid page size of 200 the paging will go out of sync.
|
39 |
+
$this->setTemplate('esendex/widget/messages/grid.phtml');
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Prepare collection
|
44 |
+
*
|
45 |
+
* @return self
|
46 |
+
*/
|
47 |
+
protected function _prepareCollection()
|
48 |
+
{
|
49 |
+
$collection = Mage::getModel('esendex_sms/sentMessages');
|
50 |
+
$this->setCollection($collection);
|
51 |
+
return parent::_prepareCollection();
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Get collection to allow for better unit tests
|
56 |
+
*
|
57 |
+
* @return Esendex_Sms_Model_SentMessages
|
58 |
+
*/
|
59 |
+
public function getCollection()
|
60 |
+
{
|
61 |
+
if (!$this->_collection) {
|
62 |
+
$this->_collection = Mage::getModel('esendex_sms/sentMessages');
|
63 |
+
}
|
64 |
+
|
65 |
+
return $this->_collection;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Prepare grid collection
|
70 |
+
*
|
71 |
+
* @return self
|
72 |
+
*/
|
73 |
+
protected function _prepareColumns()
|
74 |
+
{
|
75 |
+
$this->addColumn('type', array(
|
76 |
+
'header' => Mage::helper('esendex_sms')->__('Type'),
|
77 |
+
'align' => 'left',
|
78 |
+
'index' => 'type',
|
79 |
+
'filter' => false,
|
80 |
+
'sortable' => false,
|
81 |
+
));
|
82 |
+
|
83 |
+
$this->addColumn('from', array(
|
84 |
+
'header' => Mage::helper('esendex_sms')->__('From'),
|
85 |
+
'align' => 'left',
|
86 |
+
'index' => 'originator',
|
87 |
+
'filter' => false,
|
88 |
+
'sortable' => false,
|
89 |
+
));
|
90 |
+
|
91 |
+
$this->addColumn('recipient', [
|
92 |
+
'header' => Mage::helper('esendex_sms')->__('Recipient'),
|
93 |
+
'align' => 'left',
|
94 |
+
'index' => 'recipient',
|
95 |
+
'filter' => false,
|
96 |
+
'sortable' => false,
|
97 |
+
]);
|
98 |
+
|
99 |
+
$this->addColumn('summary', array(
|
100 |
+
'header' => Mage::helper('esendex_sms')->__('Summary'),
|
101 |
+
'align' => 'left',
|
102 |
+
'index' => 'summary',
|
103 |
+
'filter' => false,
|
104 |
+
'sortable' => false,
|
105 |
+
));
|
106 |
+
|
107 |
+
$this->addColumn('status', array(
|
108 |
+
'header' => Mage::helper('esendex_sms')->__('Status'),
|
109 |
+
'align' => 'left',
|
110 |
+
'index' => 'status',
|
111 |
+
'filter' => false,
|
112 |
+
'sortable' => false,
|
113 |
+
));
|
114 |
+
|
115 |
+
$this->addColumn('submittedAt', array(
|
116 |
+
'header' => Mage::helper('esendex_sms')->__('Submitted At'),
|
117 |
+
'align' => 'left',
|
118 |
+
'index' => 'submittedAt',
|
119 |
+
'filter' => false,
|
120 |
+
'sortable' => false,
|
121 |
+
));
|
122 |
+
|
123 |
+
$this->addColumn('sentAt', array(
|
124 |
+
'header' => Mage::helper('esendex_sms')->__('Sent At'),
|
125 |
+
'align' => 'left',
|
126 |
+
'index' => 'sentAt',
|
127 |
+
'filter' => false,
|
128 |
+
'sortable' => false,
|
129 |
+
));
|
130 |
+
|
131 |
+
$this->addColumn('deliveredAt', array(
|
132 |
+
'header' => Mage::helper('esendex_sms')->__('Delivered At'),
|
133 |
+
'align' => 'left',
|
134 |
+
'index' => 'deliveredAt',
|
135 |
+
'filter' => false,
|
136 |
+
'sortable' => false,
|
137 |
+
));
|
138 |
+
|
139 |
+
$this->addColumn('lastStatusAt', array(
|
140 |
+
'header' => Mage::helper('esendex_sms')->__('Last Status At'),
|
141 |
+
'align' => 'left',
|
142 |
+
'index' => 'lastStatusAt',
|
143 |
+
'filter' => false,
|
144 |
+
'sortable' => false,
|
145 |
+
));
|
146 |
+
|
147 |
+
return parent::_prepareColumns();
|
148 |
+
}
|
149 |
+
|
150 |
+
/**
|
151 |
+
* Get the row url, prevent rows being clickable
|
152 |
+
*
|
153 |
+
* @param Esendex_Sms_Model_Trigger
|
154 |
+
* @return string
|
155 |
+
*/
|
156 |
+
public function getRowUrl($row)
|
157 |
+
{
|
158 |
+
return false;
|
159 |
+
}
|
160 |
+
|
161 |
+
/**
|
162 |
+
* Get the grid url
|
163 |
+
*
|
164 |
+
* @return string
|
165 |
+
*/
|
166 |
+
public function getGridUrl()
|
167 |
+
{
|
168 |
+
return $this->getUrl('*/*/grid', array('_current' => true));
|
169 |
+
}
|
170 |
+
|
171 |
+
/**
|
172 |
+
* Override _preparePage to track prev page and size
|
173 |
+
*/
|
174 |
+
protected function _preparePage()
|
175 |
+
{
|
176 |
+
$session = Mage::getSingleton('adminhtml/session');
|
177 |
+
$paramPrefix = $this->getId();
|
178 |
+
$prevPage = null;
|
179 |
+
$prevSize = null;
|
180 |
+
|
181 |
+
// Get previous page and size before it is overwrote
|
182 |
+
if ($this->_saveParametersInSession && ($param = $session->getData($paramPrefix . $this->getVarNamePage()))) {
|
183 |
+
$prevPage = $param;
|
184 |
+
}
|
185 |
+
|
186 |
+
if ($this->_saveParametersInSession && ($param = $session->getData($paramPrefix . $this->getVarNameLimit()))) {
|
187 |
+
$prevSize = $param;
|
188 |
+
}
|
189 |
+
|
190 |
+
// Get param will get from request and set in session
|
191 |
+
$newPage = (int) $this->getParam($this->getVarNamePage(), $this->_defaultPage);
|
192 |
+
$newSize = (int) $this->getParam($this->getVarNameLimit(), $this->_defaultLimit);
|
193 |
+
|
194 |
+
// Figure out what page and size we want
|
195 |
+
if ($prevPage && $prevSize) {
|
196 |
+
if ($prevSize !== $newSize) {
|
197 |
+
// Changing the page size so calculate what page we now want to be on
|
198 |
+
// by getting the closest offset to previous position
|
199 |
+
$prevOffset = $prevSize * ($prevPage -1);
|
200 |
+
$newPage = ceil($prevOffset / $newSize);
|
201 |
+
}
|
202 |
+
}
|
203 |
+
|
204 |
+
// Set new values in the session!
|
205 |
+
$session->setData($paramPrefix . $this->getVarNamePage(), $newPage);
|
206 |
+
$session->setData($paramPrefix . $this->getVarNameLimit(), $newSize);
|
207 |
+
|
208 |
+
// Set the values on the collection
|
209 |
+
$this->getCollection()->setCurPage((int) $newPage);
|
210 |
+
$this->getCollection()->setPageSize((int) $newSize);
|
211 |
+
}
|
212 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/MobileSalesReport.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Block_Adminhtml_MobileSalesReport
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Block_Adminhtml_MobileSalesReport extends Mage_Adminhtml_Block_Widget_Grid_Container
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Constructor
|
27 |
+
*/
|
28 |
+
public function __construct()
|
29 |
+
{
|
30 |
+
$this->_controller = 'adminhtml_mobileSalesReport';
|
31 |
+
$this->_blockGroup = 'esendex_sms';
|
32 |
+
parent::__construct();
|
33 |
+
$this->_headerText = Mage::helper('esendex_sms')->__('Manage Mobile Sales Reports');
|
34 |
+
$this->_updateButton(
|
35 |
+
'add',
|
36 |
+
'label',
|
37 |
+
Mage::helper('esendex_sms')->__('Add Mobile Sales Report')
|
38 |
+
);
|
39 |
+
}
|
40 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/MobileSalesReport/Edit.php
ADDED
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Block_Adminhtml_MobileSalesReport_Edit
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Block_Adminhtml_MobileSalesReport_Edit extends Esendex_Sms_Block_Adminhtml_Trigger_Edit
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @var array
|
26 |
+
*/
|
27 |
+
protected $currentData = array();
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Stage 2 Update Button Text
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
protected $stage2UpdateButtonLabel = 'Save Mobile Sales Report';
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Delete Button Text
|
38 |
+
*
|
39 |
+
* @var string
|
40 |
+
*/
|
41 |
+
protected $deleteButtonLabel = 'Delete Mobile Sales Report';
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Constructor
|
45 |
+
*/
|
46 |
+
public function __construct()
|
47 |
+
{
|
48 |
+
parent::__construct();
|
49 |
+
$this->_controller = 'adminhtml_mobileSalesReport';
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Get the edit form header
|
54 |
+
*
|
55 |
+
* @return string
|
56 |
+
*/
|
57 |
+
public function getHeaderText()
|
58 |
+
{
|
59 |
+
$trigger = Mage::registry('current_trigger');
|
60 |
+
|
61 |
+
if ($trigger && $trigger->getId()) {
|
62 |
+
return Mage::helper('esendex_sms')->__(
|
63 |
+
"Edit Mobile Sales Report '%s'",
|
64 |
+
$this->escapeHtml($trigger->getDescription())
|
65 |
+
);
|
66 |
+
}
|
67 |
+
|
68 |
+
return Mage::helper('esendex_sms')->__("Add New Mobile Sales Report");
|
69 |
+
}
|
70 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/MobileSalesReport/Edit/Form.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
use Esendex\Http\HttpException;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Class Esendex_Sms_Block_Adminhtml_MobileSalesReport_Edit_Form
|
21 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
22 |
+
* @author Michael Woodward <michael@wearejh.com>
|
23 |
+
*/
|
24 |
+
class Esendex_Sms_Block_Adminhtml_MobileSalesReport_Edit_Form extends Esendex_Sms_Block_Adminhtml_Trigger_Edit_Form
|
25 |
+
{
|
26 |
+
|
27 |
+
/**
|
28 |
+
* The label for the Form Fieldset
|
29 |
+
*
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
protected $notificationLegend = 'Admin Sales Report';
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Get the Trigger Events Collection from Cache
|
36 |
+
*
|
37 |
+
* @return Esendex_Sms_Model_Resource_Event_Collection
|
38 |
+
*/
|
39 |
+
protected function getEvents()
|
40 |
+
{
|
41 |
+
return Mage::getSingleton('esendex_sms/event')
|
42 |
+
->getCollection()
|
43 |
+
->onlyMobileSalesReports();
|
44 |
+
}
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Override to switch store element to single select
|
48 |
+
*
|
49 |
+
* @param Varien_Data_Form_Element_Fieldset $stage1Fieldset
|
50 |
+
*/
|
51 |
+
protected function prepareStage1(Varien_Data_Form_Element_Fieldset $stage1Fieldset)
|
52 |
+
{
|
53 |
+
parent::prepareStage1($stage1Fieldset);
|
54 |
+
|
55 |
+
if (Mage::app()->isSingleStoreMode()) {
|
56 |
+
return;
|
57 |
+
}
|
58 |
+
|
59 |
+
// Remove the multiselect store id element
|
60 |
+
$stage1Fieldset->removeField('store_id');
|
61 |
+
|
62 |
+
// Get store values without all views option
|
63 |
+
$stores = Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, false);
|
64 |
+
|
65 |
+
// Add a select element for the stores
|
66 |
+
$field = $stage1Fieldset->addField('store_id', 'select', array(
|
67 |
+
'name' => 'stores[]',
|
68 |
+
'label' => Mage::helper('esendex_sms')->__('Store Views'),
|
69 |
+
'title' => Mage::helper('esendex_sms')->__('Store Views'),
|
70 |
+
'required' => true,
|
71 |
+
'values' => $stores,
|
72 |
+
));
|
73 |
+
|
74 |
+
// Use store switcher field rendered
|
75 |
+
$renderer = $this->getLayout()->createBlock('adminhtml/store_switcher_form_renderer_fieldset_element');
|
76 |
+
$field->setRenderer($renderer);
|
77 |
+
}
|
78 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/MobileSalesReport/Grid.php
ADDED
@@ -0,0 +1,62 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Block_Adminhtml_MobileSalesReport_Grid
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Block_Adminhtml_MobileSalesReport_Grid extends Esendex_Sms_Block_Adminhtml_Trigger_Grid
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* Constructor
|
26 |
+
*/
|
27 |
+
public function __construct()
|
28 |
+
{
|
29 |
+
parent::__construct();
|
30 |
+
$this->setId('mobileSalesReportGrid');
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Prepare collection
|
35 |
+
*
|
36 |
+
* @return self
|
37 |
+
*/
|
38 |
+
protected function _prepareCollection()
|
39 |
+
{
|
40 |
+
if (!$this->getCollection()) {
|
41 |
+
$collection = Mage::getModel('esendex_sms/trigger')
|
42 |
+
->getCollection()
|
43 |
+
->addEvents()
|
44 |
+
->onlyMobileSalesReports();
|
45 |
+
|
46 |
+
$this->setCollection($collection);
|
47 |
+
}
|
48 |
+
|
49 |
+
return parent::_prepareCollection();
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Prepare grid collection
|
54 |
+
*
|
55 |
+
* @return self
|
56 |
+
*/
|
57 |
+
protected function _prepareColumns()
|
58 |
+
{
|
59 |
+
parent::_prepareColumns();
|
60 |
+
$this->removeColumn('event_name');
|
61 |
+
}
|
62 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/System/Config/Section/Details.php
ADDED
@@ -0,0 +1,171 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Esendex\Model\Account;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Class Esendex_Sms_Block_Adminhtml_System_Config_Section_Details
|
22 |
+
* @author Michael Woodward <michael@wearejh.com>
|
23 |
+
*/
|
24 |
+
class Esendex_Sms_Block_Adminhtml_System_Config_Section_Details
|
25 |
+
extends Mage_Adminhtml_Block_Abstract
|
26 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
27 |
+
{
|
28 |
+
/**
|
29 |
+
* @var string
|
30 |
+
*/
|
31 |
+
protected $_template = 'esendex/sms/system/config/section/details.phtml';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* @var array
|
35 |
+
*/
|
36 |
+
protected $account;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* @return string
|
40 |
+
*/
|
41 |
+
public function getBuyMessagesLink()
|
42 |
+
{
|
43 |
+
return sprintf(
|
44 |
+
'https://www.esendex.com/redirect?i=ecommerce&ls=magento&sc=connectstore&sd=v1&returnUri=%s',
|
45 |
+
Mage::getBaseUrl()
|
46 |
+
);
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* @return string
|
51 |
+
*/
|
52 |
+
public function getSmsMarketingLink()
|
53 |
+
{
|
54 |
+
return 'https://www.esendex.com/redirect?i=bulksend&ls=magento&sc=connectstore&sd=v1';
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* @return string
|
59 |
+
*/
|
60 |
+
public function getAutoRespondersLink()
|
61 |
+
{
|
62 |
+
return 'https://www.esendex.com/redirect?i=receivesettings&ls=magento&sc=connectstore&sd=v1';
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* @return string
|
67 |
+
*/
|
68 |
+
public function getSentMessagesLink()
|
69 |
+
{
|
70 |
+
return 'https://www.esendex.com/redirect?i=sentmessages&ls=magento&sc=connectstore&sd=v1';
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* @return string
|
75 |
+
*/
|
76 |
+
public function getSupportLink()
|
77 |
+
{
|
78 |
+
return 'http://support.esendex.co.uk/magento?i=magentosupport&ls=magento&sc=settings&sd=v1';
|
79 |
+
}
|
80 |
+
|
81 |
+
public function getSignUpUrl()
|
82 |
+
{
|
83 |
+
return 'http://www.esendex.com/redirect?i=magentosignup&ls=magento&sc=connectstore&sd=v1';
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Checks if the account details have not been filled in
|
88 |
+
*
|
89 |
+
* @return bool
|
90 |
+
*/
|
91 |
+
public function accountDetailsNotFilledIn()
|
92 |
+
{
|
93 |
+
//assume not filled in if acc ref not filled in
|
94 |
+
$accRef = Mage::getStoreConfig('esendex_sms/sms/account_reference');
|
95 |
+
return $accRef === '' || $accRef === null;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* @return bool
|
100 |
+
*/
|
101 |
+
public function hasAccountError()
|
102 |
+
{
|
103 |
+
return !$this->getAccount() instanceof Account;
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* Get Account Type
|
108 |
+
*
|
109 |
+
* @return string
|
110 |
+
*/
|
111 |
+
public function getAccountType()
|
112 |
+
{
|
113 |
+
return $this->getAccount()->type();
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* Get Remaining Messages
|
118 |
+
*
|
119 |
+
* @return int
|
120 |
+
*/
|
121 |
+
public function getRemainingMessages()
|
122 |
+
{
|
123 |
+
return $this->getAccount()->messagesRemaining() ?: 0;
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* @return string
|
128 |
+
*/
|
129 |
+
public function getAccountReference()
|
130 |
+
{
|
131 |
+
return $this->getAccount()->reference();
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Get Expiration Date
|
136 |
+
*
|
137 |
+
* @return string
|
138 |
+
*/
|
139 |
+
public function getAccountExpirationDate()
|
140 |
+
{
|
141 |
+
return $this->getAccount()->expiresOn();
|
142 |
+
}
|
143 |
+
|
144 |
+
/**
|
145 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
146 |
+
*
|
147 |
+
* @return string
|
148 |
+
*/
|
149 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
150 |
+
{
|
151 |
+
return $this->toHtml();
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* If there was an error getting the account
|
156 |
+
* return false
|
157 |
+
*
|
158 |
+
* @return bool|Account
|
159 |
+
*/
|
160 |
+
public function getAccount()
|
161 |
+
{
|
162 |
+
if (!$this->account) {
|
163 |
+
try {
|
164 |
+
$this->account = Esendex_Sms_Model_Api_Factory::getAccount();
|
165 |
+
} catch (\Esendex\Http\HttpException $e) {
|
166 |
+
$this->account = false;
|
167 |
+
}
|
168 |
+
}
|
169 |
+
return $this->account;
|
170 |
+
}
|
171 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/Trigger.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Block_Adminhtml_Trigger
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Block_Adminhtml_Trigger extends Mage_Adminhtml_Block_Widget_Grid_Container
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Constructor
|
27 |
+
*/
|
28 |
+
public function __construct()
|
29 |
+
{
|
30 |
+
$this->_controller = 'adminhtml_trigger';
|
31 |
+
$this->_blockGroup = 'esendex_sms';
|
32 |
+
parent::__construct();
|
33 |
+
$this->_headerText = Mage::helper('esendex_sms')->__('Manage Notifications');
|
34 |
+
$this->_updateButton(
|
35 |
+
'add',
|
36 |
+
'label',
|
37 |
+
Mage::helper('esendex_sms')->__('Add Notification')
|
38 |
+
);
|
39 |
+
}
|
40 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/Trigger/Edit.php
ADDED
@@ -0,0 +1,164 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Block_Adminhtml_Trigger_Edit
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Block_Adminhtml_Trigger_Edit extends Mage_Adminhtml_Block_Widget_Form_Container
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @var array
|
26 |
+
*/
|
27 |
+
protected $currentData = array();
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Stage 2 Update Button Text
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
protected $stage2UpdateButtonLabel = 'Save Notification';
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Stage 1 Update Button Text
|
38 |
+
*
|
39 |
+
* @var string
|
40 |
+
*/
|
41 |
+
protected $updateButtonLabel = 'Continue';
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Delete Button Text
|
45 |
+
*
|
46 |
+
* @var string
|
47 |
+
*/
|
48 |
+
protected $deleteButtonLabel = 'Delete Notification';
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Constructor
|
52 |
+
*/
|
53 |
+
public function __construct()
|
54 |
+
{
|
55 |
+
parent::__construct();
|
56 |
+
|
57 |
+
$this->_blockGroup = 'esendex_sms';
|
58 |
+
$this->_controller = 'adminhtml_trigger';
|
59 |
+
$this->currentData = $this->getFormValues();
|
60 |
+
$helper = Mage::helper('esendex_sms');
|
61 |
+
|
62 |
+
if ($this->isStage2()) {
|
63 |
+
$this->_updateButton('save', 'label', $helper->__($this->stage2UpdateButtonLabel));
|
64 |
+
$this->_updateButton('save', 'onclick', 'triggerForm.submit()');
|
65 |
+
|
66 |
+
$this->_addButton(
|
67 |
+
'saveandcontinue',
|
68 |
+
array(
|
69 |
+
'label' => $helper->__('Save and Continue Edit'),
|
70 |
+
'onclick' => 'triggerForm.submitAndContinue()',
|
71 |
+
'class' => 'save-and-continue',
|
72 |
+
),
|
73 |
+
-100
|
74 |
+
);
|
75 |
+
|
76 |
+
$this->_formScripts[] = "
|
77 |
+
function saveAndContinueEdit(){
|
78 |
+
editForm.submit($('edit_form').action+'back/edit/');
|
79 |
+
}
|
80 |
+
";
|
81 |
+
} else {
|
82 |
+
$this->_updateButton(
|
83 |
+
'save',
|
84 |
+
'label',
|
85 |
+
$helper->__($this->updateButtonLabel)
|
86 |
+
);
|
87 |
+
}
|
88 |
+
|
89 |
+
$this->_updateButton(
|
90 |
+
'delete',
|
91 |
+
'label',
|
92 |
+
$helper->__($this->deleteButtonLabel)
|
93 |
+
);
|
94 |
+
|
95 |
+
$this->_formScripts[] = "var triggerForm = new TriggerForm()";
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Check if the event is set
|
100 |
+
*
|
101 |
+
* @return bool
|
102 |
+
*/
|
103 |
+
public function isStage2()
|
104 |
+
{
|
105 |
+
return isset($this->currentData['event_id']) && $this->currentData['event_id'];
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Get the edit form header
|
110 |
+
*
|
111 |
+
* @return string
|
112 |
+
*/
|
113 |
+
public function getHeaderText()
|
114 |
+
{
|
115 |
+
$trigger = Mage::registry('current_trigger');
|
116 |
+
|
117 |
+
if ($trigger && $trigger->getId()) {
|
118 |
+
return Mage::helper('esendex_sms')->__(
|
119 |
+
"Edit Notification '%s' for event '%s'",
|
120 |
+
$this->escapeHtml($trigger->getDescription()),
|
121 |
+
$this->escapeHtml($this->getEventName($trigger))
|
122 |
+
);
|
123 |
+
}
|
124 |
+
|
125 |
+
if ($trigger->getEventId()) {
|
126 |
+
return Mage::helper('esendex_sms')->__(
|
127 |
+
"Add New Notification for Event '%s'",
|
128 |
+
$this->escapeHtml($this->getEventName($trigger))
|
129 |
+
);
|
130 |
+
}
|
131 |
+
|
132 |
+
return Mage::helper('esendex_sms')->__("Add New Notification");
|
133 |
+
}
|
134 |
+
|
135 |
+
/**
|
136 |
+
* @param Esendex_Sms_Model_TriggerAbstract $trigger
|
137 |
+
* @return string
|
138 |
+
*/
|
139 |
+
public function getEventName(Esendex_Sms_Model_TriggerAbstract $trigger)
|
140 |
+
{
|
141 |
+
$event = Mage::getModel('esendex_sms/event')->load($trigger->getEventId());
|
142 |
+
return $event->getName();
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* @return array
|
147 |
+
*/
|
148 |
+
protected function getFormValues()
|
149 |
+
{
|
150 |
+
$formValues = $this->getRequest()->getPost('trigger');
|
151 |
+
if (!is_array($formValues)) {
|
152 |
+
$formValues = array();
|
153 |
+
}
|
154 |
+
|
155 |
+
if (Mage::registry('current_trigger')) {
|
156 |
+
$formValues = array_merge(
|
157 |
+
$formValues,
|
158 |
+
Mage::registry('current_trigger')->getData()
|
159 |
+
);
|
160 |
+
return $formValues;
|
161 |
+
}
|
162 |
+
return $formValues;
|
163 |
+
}
|
164 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/Trigger/Edit/Form.php
ADDED
@@ -0,0 +1,473 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Esendex\Http\HttpException;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Class Esendex_Sms_Block_Adminhtml_Trigger_Edit_Tab_Form
|
22 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
23 |
+
* @author Michael Woodward <michael@wearejh.com>
|
24 |
+
*/
|
25 |
+
class Esendex_Sms_Block_Adminhtml_Trigger_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
|
26 |
+
{
|
27 |
+
/**
|
28 |
+
* The current trigger data
|
29 |
+
* @var array
|
30 |
+
*/
|
31 |
+
protected $currentData = array();
|
32 |
+
|
33 |
+
/**
|
34 |
+
* The label for the Form Fieldset
|
35 |
+
*
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
protected $notificationLegend = 'Notification';
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Magento Construct, create initial form
|
42 |
+
*
|
43 |
+
* @throws Exception
|
44 |
+
*/
|
45 |
+
protected function _construct()
|
46 |
+
{
|
47 |
+
parent::_construct();
|
48 |
+
|
49 |
+
$this->currentData = $this->getCurrentValues();
|
50 |
+
$actionUrl = $this->isStage2() ? '*/*/save' : '*/*/edit';
|
51 |
+
$action = $this->getUrl($actionUrl, array('id' => $this->getRequest()->getParam('id')));
|
52 |
+
|
53 |
+
$this->_form = new Varien_Data_Form(array(
|
54 |
+
'id' => 'edit_form',
|
55 |
+
'action' => $action,
|
56 |
+
'method' => 'post',
|
57 |
+
'html_id_prefix' => 'trigger_',
|
58 |
+
'field_name_suffix' => 'trigger'
|
59 |
+
));
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* Try and find a sample message.
|
64 |
+
* 1. If all of the selected stores share the same locale:
|
65 |
+
* * Try find a sample message using that locale for the given event
|
66 |
+
* * If none available, use the admin locale to find a message
|
67 |
+
* * If none available, try find an english sample message
|
68 |
+
*
|
69 |
+
* 2. If all the selected stores do not share the same locale:
|
70 |
+
* * Use the admin locale to find a message
|
71 |
+
* * If none available, try find an english sample message
|
72 |
+
*
|
73 |
+
* @param array $stores
|
74 |
+
* @param int $eventId
|
75 |
+
*
|
76 |
+
* @return string
|
77 |
+
*/
|
78 |
+
public function getMessageTemplate(array $stores, $eventId)
|
79 |
+
{
|
80 |
+
$locales = array();
|
81 |
+
foreach ($stores as $storeId) {
|
82 |
+
$locales[$storeId] = Mage::getStoreConfig('general/locale/code', $storeId);
|
83 |
+
}
|
84 |
+
|
85 |
+
/** @var Esendex_Sms_Model_Resource_SampleMessage_Collection $collection */
|
86 |
+
$collection = Mage::getModel('esendex_sms/sampleMessage')->getCollection();
|
87 |
+
$collection->addEventFilter($eventId);
|
88 |
+
|
89 |
+
//if there is only one locale in the stores selected
|
90 |
+
if (count(array_unique($locales)) === 1) {
|
91 |
+
$locale = reset($locales);
|
92 |
+
if ($row = $collection->getItemByColumnValue('locale_code', $locale)) {
|
93 |
+
return $row->getMessageTemplate();
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
//try use admin locale
|
98 |
+
$adminLocale = Mage::app()->getLocale()->getLocaleCode();
|
99 |
+
if ($row = $collection->getItemByColumnValue('locale_code', $adminLocale)) {
|
100 |
+
return $row->getMessageTemplate();
|
101 |
+
}
|
102 |
+
|
103 |
+
//try use english locale
|
104 |
+
if ($row = $collection->getItemByColumnValue('locale_code', 'en_GB')) {
|
105 |
+
return $row->getMessageTemplate();
|
106 |
+
}
|
107 |
+
|
108 |
+
//nope
|
109 |
+
return '';
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Prepare the form
|
114 |
+
*
|
115 |
+
* @return Esendex_Sms_Block_Adminhtml_Trigger_Edit_Form
|
116 |
+
*/
|
117 |
+
protected function _prepareForm()
|
118 |
+
{
|
119 |
+
// Add stage 1 field set
|
120 |
+
$fieldset = $this->getForm()->addFieldset('form', array(
|
121 |
+
'legend' => Mage::helper('esendex_sms')->__($this->notificationLegend)
|
122 |
+
));
|
123 |
+
|
124 |
+
if (!$this->isStage2()) {
|
125 |
+
$this->prepareStage1($fieldset);
|
126 |
+
} else {
|
127 |
+
$this->prepareStage2($fieldset);
|
128 |
+
}
|
129 |
+
|
130 |
+
// Set current form values without overriding defaults
|
131 |
+
foreach ($this->currentData as $id => $value) {
|
132 |
+
$element = $this->getForm()->getElement($id);
|
133 |
+
if ($element) {
|
134 |
+
$element->setValue($value);
|
135 |
+
}
|
136 |
+
}
|
137 |
+
|
138 |
+
$this->getForm()->setUseContainer(true);
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* @param Varien_Data_Form_Element_Fieldset $stage1Fieldset
|
143 |
+
*/
|
144 |
+
protected function prepareStage1(Varien_Data_Form_Element_Fieldset $stage1Fieldset)
|
145 |
+
{
|
146 |
+
// Get events, current data and check if we need to disable event select
|
147 |
+
$events = $this->getEvents()->toOptionArray();
|
148 |
+
|
149 |
+
// Translate the events
|
150 |
+
$events = array_map(function ($event) {
|
151 |
+
$event['label'] = Mage::helper('esendex_sms')->__($event['label']);
|
152 |
+
return $event;
|
153 |
+
}, $events);
|
154 |
+
|
155 |
+
// Add placeholder option
|
156 |
+
array_unshift($events, array(
|
157 |
+
'label' => Mage::helper('esendex_sms')->__('Please Select Event'),
|
158 |
+
'value' => 0
|
159 |
+
));
|
160 |
+
|
161 |
+
$stage1Fieldset->addField('event_id', 'select', array(
|
162 |
+
'label' => Mage::helper('esendex_sms')->__('Event'),
|
163 |
+
'name' => 'event_id',
|
164 |
+
'required' => true,
|
165 |
+
'class' => 'required-entry',
|
166 |
+
'values' => $events,
|
167 |
+
));
|
168 |
+
|
169 |
+
// Only add store selector if we have multiple stores
|
170 |
+
if (Mage::app()->isSingleStoreMode()) {
|
171 |
+
// Add hidden field with store id value
|
172 |
+
$stage1Fieldset->addField('stores', 'hidden', array(
|
173 |
+
'name' => 'stores[]',
|
174 |
+
'value' => Mage::app()->getStore(true)->getId()
|
175 |
+
));
|
176 |
+
return;
|
177 |
+
}
|
178 |
+
|
179 |
+
// Get store values for multiselect
|
180 |
+
$stores = Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true);
|
181 |
+
|
182 |
+
// Add multiselect field for stores
|
183 |
+
$field = $stage1Fieldset->addField('store_id', 'multiselect', array(
|
184 |
+
'name' => 'stores[]',
|
185 |
+
'label' => Mage::helper('esendex_sms')->__('Store Views'),
|
186 |
+
'title' => Mage::helper('esendex_sms')->__('Store Views'),
|
187 |
+
'required' => true,
|
188 |
+
'values' => $stores,
|
189 |
+
));
|
190 |
+
|
191 |
+
// Use store switcher field rendered
|
192 |
+
$renderer = $this->getLayout()->createBlock('adminhtml/store_switcher_form_renderer_fieldset_element');
|
193 |
+
$field->setRenderer($renderer);
|
194 |
+
}
|
195 |
+
|
196 |
+
/**
|
197 |
+
* Prepares any stage 2 areas of the form
|
198 |
+
*
|
199 |
+
* @param Varien_Data_Form_Element_Fieldset $stage1Fieldset
|
200 |
+
* @throws Exception
|
201 |
+
*/
|
202 |
+
protected function prepareStage2(Varien_Data_Form_Element_Fieldset $stage1Fieldset)
|
203 |
+
{
|
204 |
+
// Get current event
|
205 |
+
$event = $this->getEvent($this->currentData['event_id']);
|
206 |
+
$defaultMessageTemplate = $this->getMessageTemplate(
|
207 |
+
$this->currentData['store_id'],
|
208 |
+
$this->currentData['event_id']
|
209 |
+
);
|
210 |
+
|
211 |
+
//if there is not a message already set (eg when we are editing)
|
212 |
+
//set it as the default message
|
213 |
+
if (!isset($this->currentData['message_template'])) {
|
214 |
+
$this->currentData['message_template'] = $defaultMessageTemplate;
|
215 |
+
}
|
216 |
+
|
217 |
+
$message = 'This is who your message will show as being from on the receiving handset e.g. Mystore.';
|
218 |
+
$note = Mage::helper('esendex_sms')->__($message);
|
219 |
+
$vmn = $this->getAccountVirtualMobileNumber();
|
220 |
+
|
221 |
+
if ($vmn) {
|
222 |
+
$note .= '<br><br>' . $vmn;
|
223 |
+
}
|
224 |
+
|
225 |
+
// Add senders select
|
226 |
+
$stage1Fieldset->addField('sender', 'text', array(
|
227 |
+
'label' => Mage::helper('esendex_sms')->__('From'),
|
228 |
+
'name' => 'sender',
|
229 |
+
'required' => true,
|
230 |
+
'class' => 'required-entry validate-sender-format',
|
231 |
+
'note' => $note,
|
232 |
+
'value' => 'Esendex'
|
233 |
+
));
|
234 |
+
|
235 |
+
/** @var Esendex_Sms_Model_Resource_Event $event */
|
236 |
+
$model = $event->getEventProcessor();
|
237 |
+
|
238 |
+
$vars = array_map(function (Esendex_Sms_Model_Variable $var) {
|
239 |
+
return $var->getReplaceName();
|
240 |
+
}, $model->getVariables());
|
241 |
+
//sort alphabetically
|
242 |
+
sort($vars);
|
243 |
+
|
244 |
+
$variables = sprintf('<li>%s</li>', Mage::helper('esendex_sms')->__('No Available Vars'));
|
245 |
+
if (count($vars)) {
|
246 |
+
$variables = '<li>' . implode("</li>\n<li>", $vars) . '</li>';
|
247 |
+
}
|
248 |
+
|
249 |
+
$link = 'http://support.esendex.co.uk/magento?i=magentosupport&ls=magento&sc=magentotriggervariables&sd=v1';
|
250 |
+
$variableHelpLink = '<p class="note" id="variable-help-link"><small>';
|
251 |
+
$variableHelpLink .= Mage::helper('esendex_sms')->__(
|
252 |
+
'For more information about using variables please visit our <a target="_blank" href="%s">support page</a>',
|
253 |
+
$link
|
254 |
+
);
|
255 |
+
$variableHelpLink .= '</a></small></p>';
|
256 |
+
|
257 |
+
$afterElementHtml = sprintf('<p class="note"><small>%s</small></p>',
|
258 |
+
Mage::helper('esendex_sms')->__('These counts do not include variables.')
|
259 |
+
);
|
260 |
+
|
261 |
+
// Build html for message template textarea variables
|
262 |
+
$afterElementHtml .= sprintf(
|
263 |
+
'<td class="value"><h4>%s</h4><div id="available-variables-container""><ul id="available-variables">%s</ul></div>%s</td>',
|
264 |
+
Mage::helper('esendex_sms')->__('Available Variables'),
|
265 |
+
$variables,
|
266 |
+
$variableHelpLink
|
267 |
+
);
|
268 |
+
|
269 |
+
//add default message template, for JavaScript to pickup
|
270 |
+
$afterElementHtml .=
|
271 |
+
sprintf('<td class="hidden" id="default-message-template">%s</td>', $defaultMessageTemplate);
|
272 |
+
|
273 |
+
// Add message template textarea with available areas html
|
274 |
+
$stage1Fieldset->addField('message_template', 'textarea', array(
|
275 |
+
'label' => Mage::helper('esendex_sms')->__('Message'),
|
276 |
+
'class' => 'validate-message-count validate-variables',
|
277 |
+
'name' => 'message_template',
|
278 |
+
'required' => true,
|
279 |
+
'after_element_html' => $afterElementHtml,
|
280 |
+
));
|
281 |
+
|
282 |
+
// Add description field
|
283 |
+
$stage1Fieldset->addField('description', 'text', array(
|
284 |
+
'label' => Mage::helper('esendex_sms')->__('Description'),
|
285 |
+
'name' => 'description',
|
286 |
+
'required' => false,
|
287 |
+
));
|
288 |
+
|
289 |
+
// Add status select
|
290 |
+
$stage1Fieldset->addField('status', 'select', array(
|
291 |
+
'label' => Mage::helper('esendex_sms')->__('Status'),
|
292 |
+
'name' => 'status',
|
293 |
+
'required' => true,
|
294 |
+
'class' => 'required-entry',
|
295 |
+
'values'=> array(
|
296 |
+
array(
|
297 |
+
'value' => 1,
|
298 |
+
'label' => Mage::helper('esendex_sms')->__('Enabled'),
|
299 |
+
),
|
300 |
+
array(
|
301 |
+
'value' => 0,
|
302 |
+
'label' => Mage::helper('esendex_sms')->__('Disabled'),
|
303 |
+
),
|
304 |
+
),
|
305 |
+
));
|
306 |
+
|
307 |
+
// Stage 2 fieldset legend
|
308 |
+
$legend = Mage::helper('esendex_sms')->__("'%s' specific fields", $event->getName());
|
309 |
+
|
310 |
+
// Create stage 2 fieldset
|
311 |
+
$stage2Fieldset = new Varien_Data_Form_Element_Fieldset(array(
|
312 |
+
'legend' => $legend,
|
313 |
+
'html_id' => 'form_additional'
|
314 |
+
));
|
315 |
+
|
316 |
+
// Add the form to the fieldset so the fields set their form correctly.
|
317 |
+
$stage2Fieldset->setForm($this->getForm());
|
318 |
+
|
319 |
+
// Dispatch Event With Empty Form Field set
|
320 |
+
// This lets more complex event types can add their own fields
|
321 |
+
$this->dispatchStage2Event($stage2Fieldset, $this->getSelectedEventName($event));
|
322 |
+
|
323 |
+
// Add the field set to the form if it has been extended
|
324 |
+
if (count($stage2Fieldset->getSortedElements())) {
|
325 |
+
$this->getForm()->addElement($stage2Fieldset);
|
326 |
+
}
|
327 |
+
}
|
328 |
+
|
329 |
+
/**
|
330 |
+
* Dispatch stage 2 event to allow events to extend the form
|
331 |
+
*
|
332 |
+
* @param Varien_Data_Form_Element_Fieldset $fieldset
|
333 |
+
* @param string $eventName
|
334 |
+
*/
|
335 |
+
protected function dispatchStage2Event(Varien_Data_Form_Element_Fieldset $fieldset, $eventName)
|
336 |
+
{
|
337 |
+
$eventName = 'esendex_sms_edit_form_stage2_' . $eventName;
|
338 |
+
Mage::dispatchEvent($eventName, array('fieldset' => $fieldset));
|
339 |
+
}
|
340 |
+
|
341 |
+
/**
|
342 |
+
* Get a nice name for the event
|
343 |
+
*
|
344 |
+
* @param Esendex_Sms_Model_Event $event
|
345 |
+
* @return string
|
346 |
+
*/
|
347 |
+
protected function getSelectedEventName(Esendex_Sms_Model_Event $event)
|
348 |
+
{
|
349 |
+
return strtolower(str_replace(' ', '_', $event->getName()));
|
350 |
+
}
|
351 |
+
|
352 |
+
/**
|
353 |
+
* Get an event by its id
|
354 |
+
*
|
355 |
+
* @param int $eventId
|
356 |
+
* @return Esendex_Sms_Model_Event
|
357 |
+
* @throws Exception
|
358 |
+
*/
|
359 |
+
protected function getEvent($eventId)
|
360 |
+
{
|
361 |
+
foreach ($this->getEvents() as $event) {
|
362 |
+
if ($event->getId() === $eventId) {
|
363 |
+
return $event;
|
364 |
+
}
|
365 |
+
}
|
366 |
+
|
367 |
+
throw new \Exception(sprintf('Event with id: "%s" not found', $eventId));
|
368 |
+
}
|
369 |
+
|
370 |
+
/**
|
371 |
+
* Check if form is currently in stage 2
|
372 |
+
*
|
373 |
+
* @return bool
|
374 |
+
*/
|
375 |
+
protected function isStage2()
|
376 |
+
{
|
377 |
+
return isset($this->currentData['event_id']) && $this->currentData['event_id'];
|
378 |
+
}
|
379 |
+
|
380 |
+
/**
|
381 |
+
* Get the Trigger Events Collection from Cache
|
382 |
+
*
|
383 |
+
* @return Esendex_Sms_Model_Resource_Event_Collection
|
384 |
+
*/
|
385 |
+
protected function getEvents()
|
386 |
+
{
|
387 |
+
return Mage::getSingleton('esendex_sms/event')
|
388 |
+
->getCollection()
|
389 |
+
->notMobileSalesReports();
|
390 |
+
}
|
391 |
+
|
392 |
+
/**
|
393 |
+
* Get the current values for the form
|
394 |
+
*
|
395 |
+
* @return array
|
396 |
+
*/
|
397 |
+
protected function getCurrentValues()
|
398 |
+
{
|
399 |
+
$values = Mage::getModel('esendex_sms/trigger')->getDefaultValues();
|
400 |
+
if (!is_array($values)) {
|
401 |
+
$values = array();
|
402 |
+
}
|
403 |
+
|
404 |
+
// Set default store id
|
405 |
+
$values['store_id'] = array(Mage::app()->getStore(true)->getId());
|
406 |
+
|
407 |
+
if (Mage::registry('current_trigger')) {
|
408 |
+
$values = array_merge(
|
409 |
+
$values,
|
410 |
+
Mage::registry('current_trigger')->getData()
|
411 |
+
);
|
412 |
+
}
|
413 |
+
|
414 |
+
if (isset($values['stores'])) {
|
415 |
+
$values['store_id'] = $values['stores'];
|
416 |
+
unset($values['stores']);
|
417 |
+
}
|
418 |
+
|
419 |
+
// Convert recipients from array to new line delimited string
|
420 |
+
if (isset($values['recipients']) && is_array($values['recipients'])) {
|
421 |
+
$values['recipients'] = implode("\n", $values['recipients']);
|
422 |
+
}
|
423 |
+
|
424 |
+
return $values;
|
425 |
+
}
|
426 |
+
|
427 |
+
/**
|
428 |
+
* @return \Esendex\Model\Account
|
429 |
+
*/
|
430 |
+
public function getEsendexAccount()
|
431 |
+
{
|
432 |
+
return Esendex_Sms_Model_Api_Factory::getAccount();
|
433 |
+
}
|
434 |
+
|
435 |
+
/**
|
436 |
+
* Get Virtual Mobile Number Help Text
|
437 |
+
*
|
438 |
+
* @return string
|
439 |
+
*/
|
440 |
+
protected function getAccountVirtualMobileNumber()
|
441 |
+
{
|
442 |
+
$note = '';
|
443 |
+
try {
|
444 |
+
$account = $this->getEsendexAccount();
|
445 |
+
|
446 |
+
if (!$account) {
|
447 |
+
return $note;
|
448 |
+
}
|
449 |
+
|
450 |
+
if (null !== $account->address() && "" !== $account->address()) {
|
451 |
+
return Mage::helper('esendex_sms')->__(
|
452 |
+
'To receive replies this will need to be set to your virtual mobile number +%s',
|
453 |
+
$account->address()
|
454 |
+
);
|
455 |
+
}
|
456 |
+
|
457 |
+
if (null !== $account->alias() && "" !== $account->alias()) {
|
458 |
+
return Mage::helper('esendex_sms')->__(
|
459 |
+
'To receive replies you will need to purchase a virtual mobile number'
|
460 |
+
);
|
461 |
+
}
|
462 |
+
|
463 |
+
$message = 'Note: To prevent spamming the from address will be ignored for trial accounts. ';
|
464 |
+
$message .= '<a href="%s">Purchase Credits</a> to upgrade your account';
|
465 |
+
return Mage::helper('esendex_sms')->__(
|
466 |
+
$message,
|
467 |
+
'https://www.esendex.com/redirect?i=ecommerce&ls=magento&sc=connectstore&sd=v1&returnUri=%s'
|
468 |
+
);
|
469 |
+
} catch (HttpException $e) {
|
470 |
+
}
|
471 |
+
return $note;
|
472 |
+
}
|
473 |
+
}
|
app/code/community/Esendex/Sms/Block/Adminhtml/Trigger/Grid.php
ADDED
@@ -0,0 +1,230 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Block_Adminhtml_Trigger_Grid
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Block_Adminhtml_Trigger_Grid extends Mage_Adminhtml_Block_Widget_Grid
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* Constructor
|
26 |
+
*/
|
27 |
+
public function __construct()
|
28 |
+
{
|
29 |
+
parent::__construct();
|
30 |
+
$this->setId('triggerGrid');
|
31 |
+
$this->setDefaultSort('entity_id');
|
32 |
+
$this->setDefaultDir('ASC');
|
33 |
+
$this->setSaveParametersInSession(true);
|
34 |
+
$this->setUseAjax(true);
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Prepare collection
|
39 |
+
*
|
40 |
+
* @return self
|
41 |
+
*/
|
42 |
+
protected function _prepareCollection()
|
43 |
+
{
|
44 |
+
if (!$this->getCollection()) {
|
45 |
+
$collection = Mage::getModel('esendex_sms/trigger')
|
46 |
+
->getCollection()
|
47 |
+
->addEvents()
|
48 |
+
->notMobileSalesReports();
|
49 |
+
|
50 |
+
$this->setCollection($collection);
|
51 |
+
}
|
52 |
+
|
53 |
+
return parent::_prepareCollection();
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Prepare grid collection
|
58 |
+
*
|
59 |
+
* @return self
|
60 |
+
*/
|
61 |
+
protected function _prepareColumns()
|
62 |
+
{
|
63 |
+
$this->addColumn('entity_id', array(
|
64 |
+
'header' => Mage::helper('esendex_sms')->__('Id'),
|
65 |
+
'index' => 'entity_id',
|
66 |
+
'type' => 'number'
|
67 |
+
));
|
68 |
+
|
69 |
+
$this->addColumn('name', array(
|
70 |
+
'header' => Mage::helper('esendex_sms')->__('Event'),
|
71 |
+
'align' => 'left',
|
72 |
+
'index' => 'name',
|
73 |
+
'renderer' => 'Esendex_Sms_Block_Adminhtml_Grid_Renderer_Translate'
|
74 |
+
));
|
75 |
+
|
76 |
+
$this->addColumn('description', array(
|
77 |
+
'header' => Mage::helper('esendex_sms')->__('Description'),
|
78 |
+
'align' => 'left',
|
79 |
+
'index' => 'description',
|
80 |
+
));
|
81 |
+
|
82 |
+
$this->addColumn('status', array(
|
83 |
+
'header' => Mage::helper('esendex_sms')->__('Status'),
|
84 |
+
'index' => 'status',
|
85 |
+
'type' => 'options',
|
86 |
+
'options' => array(
|
87 |
+
'1' => Mage::helper('esendex_sms')->__('Enabled'),
|
88 |
+
'0' => Mage::helper('esendex_sms')->__('Disabled'),
|
89 |
+
)
|
90 |
+
));
|
91 |
+
|
92 |
+
$this->addColumn('store_id', array(
|
93 |
+
'header' => Mage::helper('esendex_sms')->__('Store Views'),
|
94 |
+
'index' => 'store_id',
|
95 |
+
'type' => 'store',
|
96 |
+
'store_all' => true,
|
97 |
+
'store_view' => true,
|
98 |
+
'sortable' => false,
|
99 |
+
'filter_condition_callback' => array($this, '_filterStoreCondition'),
|
100 |
+
));
|
101 |
+
|
102 |
+
$this->addColumn('sender', array(
|
103 |
+
'header' => Mage::helper('esendex_sms')->__('From'),
|
104 |
+
'index' => 'sender',
|
105 |
+
'store_all' => true,
|
106 |
+
'store_view' => true,
|
107 |
+
'sortable' => true,
|
108 |
+
));
|
109 |
+
|
110 |
+
$this->addColumn('created_at', array(
|
111 |
+
'header' => Mage::helper('esendex_sms')->__('Created at'),
|
112 |
+
'index' => 'created_at',
|
113 |
+
'width' => '120px',
|
114 |
+
'type' => 'datetime',
|
115 |
+
));
|
116 |
+
$this->addColumn('updated_at', array(
|
117 |
+
'header' => Mage::helper('esendex_sms')->__('Updated at'),
|
118 |
+
'index' => 'updated_at',
|
119 |
+
'width' => '120px',
|
120 |
+
'type' => 'datetime',
|
121 |
+
));
|
122 |
+
|
123 |
+
$this->addColumn('action', array(
|
124 |
+
'header' => Mage::helper('esendex_sms')->__('Action'),
|
125 |
+
'width' => '100',
|
126 |
+
'type' => 'action',
|
127 |
+
'getter' => 'getId',
|
128 |
+
'actions' => array(
|
129 |
+
array(
|
130 |
+
'caption' => Mage::helper('esendex_sms')->__('Edit'),
|
131 |
+
'url' => array('base'=> '*/*/edit'),
|
132 |
+
'field' => 'id'
|
133 |
+
)
|
134 |
+
),
|
135 |
+
'filter' => false,
|
136 |
+
'is_system' => true,
|
137 |
+
'sortable' => false,
|
138 |
+
));
|
139 |
+
|
140 |
+
$this->addExportType('*/*/exportCsv', Mage::helper('esendex_sms')->__('CSV'));
|
141 |
+
$this->addExportType('*/*/exportExcel', Mage::helper('esendex_sms')->__('Excel'));
|
142 |
+
$this->addExportType('*/*/exportXml', Mage::helper('esendex_sms')->__('XML'));
|
143 |
+
|
144 |
+
return parent::_prepareColumns();
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* Prepare mass action
|
149 |
+
*
|
150 |
+
* @return self
|
151 |
+
*/
|
152 |
+
protected function _prepareMassaction()
|
153 |
+
{
|
154 |
+
$this->setMassactionIdField('entity_id');
|
155 |
+
$this->getMassactionBlock()->setFormFieldName('trigger');
|
156 |
+
$this->getMassactionBlock()->addItem('delete', array(
|
157 |
+
'label' => Mage::helper('esendex_sms')->__('Delete'),
|
158 |
+
'url' => $this->getUrl('*/*/massDelete'),
|
159 |
+
'confirm' => Mage::helper('esendex_sms')->__('Are you sure?')
|
160 |
+
));
|
161 |
+
|
162 |
+
$this->getMassactionBlock()->addItem('status', array(
|
163 |
+
'label' => Mage::helper('esendex_sms')->__('Change status'),
|
164 |
+
'url' => $this->getUrl('*/*/massStatus', array('_current'=>true)),
|
165 |
+
'additional' => array(
|
166 |
+
'status' => array(
|
167 |
+
'name' => 'status',
|
168 |
+
'type' => 'select',
|
169 |
+
'class' => 'required-entry',
|
170 |
+
'label' => Mage::helper('esendex_sms')->__('Status'),
|
171 |
+
'values' => array(
|
172 |
+
'1' => Mage::helper('esendex_sms')->__('Enabled'),
|
173 |
+
'0' => Mage::helper('esendex_sms')->__('Disabled'),
|
174 |
+
)
|
175 |
+
)
|
176 |
+
)
|
177 |
+
));
|
178 |
+
|
179 |
+
return $this;
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Get the row url
|
184 |
+
*
|
185 |
+
* @param Esendex_Sms_Model_Trigger
|
186 |
+
* @return string
|
187 |
+
*/
|
188 |
+
public function getRowUrl($row)
|
189 |
+
{
|
190 |
+
return $this->getUrl('*/*/edit', array('id' => $row->getId()));
|
191 |
+
}
|
192 |
+
|
193 |
+
/**
|
194 |
+
* Get the grid url
|
195 |
+
*
|
196 |
+
* @return string
|
197 |
+
*/
|
198 |
+
public function getGridUrl()
|
199 |
+
{
|
200 |
+
return $this->getUrl('*/*/grid', array('_current' => true));
|
201 |
+
}
|
202 |
+
|
203 |
+
/**
|
204 |
+
* after collection load
|
205 |
+
* @return self
|
206 |
+
*/
|
207 |
+
protected function _afterLoadCollection()
|
208 |
+
{
|
209 |
+
$this->getCollection()->walk('afterLoad');
|
210 |
+
parent::_afterLoadCollection();
|
211 |
+
}
|
212 |
+
|
213 |
+
/**
|
214 |
+
* Filter store column
|
215 |
+
*
|
216 |
+
* @param Esendex_Sms_Model_Resource_Trigger_Collection $collection
|
217 |
+
* @param Mage_Adminhtml_Block_Widget_Grid_Column $column
|
218 |
+
* @return self
|
219 |
+
*/
|
220 |
+
protected function _filterStoreCondition(
|
221 |
+
Esendex_Sms_Model_Resource_Trigger_Collection $collection,
|
222 |
+
Mage_Adminhtml_Block_Widget_Grid_Column $column
|
223 |
+
) {
|
224 |
+
if (!$value = $column->getFilter()->getValue()) {
|
225 |
+
return;
|
226 |
+
}
|
227 |
+
$collection->addStoreFilter($value);
|
228 |
+
return $this;
|
229 |
+
}
|
230 |
+
}
|
app/code/community/Esendex/Sms/Helper/Data.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Helper_Data
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Helper_Data extends Mage_Core_Helper_Abstract
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @return bool
|
26 |
+
*/
|
27 |
+
public function hasNotFilledInAccountDetails()
|
28 |
+
{
|
29 |
+
return $this->isFieldFieldEmpty(Mage::getStoreConfig('esendex_sms/sms/account_reference'))
|
30 |
+
&& $this->isFieldFieldEmpty(Mage::getStoreConfig('esendex_sms/sms/email'))
|
31 |
+
&& $this->isFieldFieldEmpty(Mage::getStoreConfig('esendex_sms/sms/password'));
|
32 |
+
}
|
33 |
+
|
34 |
+
/**
|
35 |
+
* @param string $field
|
36 |
+
* @return bool
|
37 |
+
*/
|
38 |
+
private function isFieldFieldEmpty($field)
|
39 |
+
{
|
40 |
+
return null === $field || '' === $field;
|
41 |
+
}
|
42 |
+
}
|
app/code/community/Esendex/Sms/Model/AccountNotifications.php
ADDED
@@ -0,0 +1,199 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Esendex\Model\Account;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Class Esendex_Sms_Model_AccountObserver
|
22 |
+
* @author Michael Woodward <michael@wearejh.com>
|
23 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
24 |
+
*/
|
25 |
+
class Esendex_Sms_Model_AccountNotifications
|
26 |
+
{
|
27 |
+
/**
|
28 |
+
* Buy messages URL when expiring
|
29 |
+
*/
|
30 |
+
const TRIAL_EXPIRING_URL =
|
31 |
+
'https://www.esendex.com/redirect?i=ecommerce&ls=magento&sc=trialexpirybanner&sd=v1';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Buy messages URL when expired
|
35 |
+
*/
|
36 |
+
const TRIAL_EXPIRED_URL =
|
37 |
+
'https://www.esendex.com/redirect?i=ecommerce&ls=magento&sc=trialexpiredbanner&sd=v1';
|
38 |
+
|
39 |
+
/**
|
40 |
+
* @var string
|
41 |
+
*/
|
42 |
+
protected $accountExpiryWarningPeriod = 'P2W'; //2 weeks
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Current date string for better unit tests
|
46 |
+
* @var string
|
47 |
+
*/
|
48 |
+
protected $currentDate = 'today 00:00:00';
|
49 |
+
|
50 |
+
/**
|
51 |
+
* @param Account $account
|
52 |
+
* @return bool
|
53 |
+
*/
|
54 |
+
public function accountExpiryLooming(Account $account)
|
55 |
+
{
|
56 |
+
$now = new DateTime($this->currentDate);
|
57 |
+
|
58 |
+
$expiryWarnDate = clone $account->expiresOn();
|
59 |
+
$expiryWarnDate->sub(new DateInterval($this->accountExpiryWarningPeriod));
|
60 |
+
|
61 |
+
return $now >= $expiryWarnDate;
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* @param Account $account
|
66 |
+
*
|
67 |
+
* @return bool
|
68 |
+
*/
|
69 |
+
public function remainingMessagesBelowThreshold(Account $account)
|
70 |
+
{
|
71 |
+
return $account->messagesRemaining() <= $this->getWarnLimit();
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* @param Account $account
|
76 |
+
* @return string
|
77 |
+
*/
|
78 |
+
public function getExpiryNotification(Account $account)
|
79 |
+
{
|
80 |
+
$now = new DateTime($this->currentDate);
|
81 |
+
$diff = $account->expiresOn()->diff($now);
|
82 |
+
|
83 |
+
$message = '<strong>You have %d days left on your Esendex account %s. </strong>';
|
84 |
+
$message .= '<a href="%s" target="_blank">Buy messages</a> to extend your account.';
|
85 |
+
|
86 |
+
return $this->helper()->__($message, $diff->days, $account->reference(), static::TRIAL_EXPIRING_URL);
|
87 |
+
}
|
88 |
+
|
89 |
+
/**
|
90 |
+
* @param string $savedAccountReference
|
91 |
+
* @return string
|
92 |
+
*/
|
93 |
+
public function getAccountExpiredOrIncorrectDetailsNotification($savedAccountReference)
|
94 |
+
{
|
95 |
+
$message = '<strong>Your Esendex account %s has expired or your account details are incorrect. </strong>';
|
96 |
+
$message .= 'To continue sending SMS <a href="%s" target="_blank">buy messages</a> or ';
|
97 |
+
$message .= 'contact us at <a href="mailto:support@esendex.com">support@esendex.com.</a>';
|
98 |
+
|
99 |
+
return $this->helper()->__(
|
100 |
+
$message,
|
101 |
+
$savedAccountReference,
|
102 |
+
static::TRIAL_EXPIRED_URL
|
103 |
+
);
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* @return string
|
108 |
+
*/
|
109 |
+
public function getInvalidAuthNotification()
|
110 |
+
{
|
111 |
+
$message = '<strong>Your Esendex account %s has expired or your account details are incorrect. </strong>';
|
112 |
+
$message .= 'To continue sending SMS <a href="%s" target="_blank">buy messages</a> or ';
|
113 |
+
$message .= 'contact us at <a href="mailto:support@esendex.com">support@esendex.com.</a>';
|
114 |
+
|
115 |
+
return $this->helper()->__(
|
116 |
+
$message,
|
117 |
+
Mage::getStoreConfig('esendex_sms/sms/account_reference'),
|
118 |
+
static::TRIAL_EXPIRING_URL
|
119 |
+
);
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* @return array|bool
|
124 |
+
*/
|
125 |
+
public function getNotifications()
|
126 |
+
{
|
127 |
+
if ($this->helper()->hasNotFilledInAccountDetails()) {
|
128 |
+
return array();
|
129 |
+
}
|
130 |
+
|
131 |
+
try {
|
132 |
+
$account = Esendex_Sms_Model_Api_Factory::getAccount();
|
133 |
+
} catch (\Esendex\Http\HttpException $e) {
|
134 |
+
//account not authorised
|
135 |
+
$notifications[] = $this->getInvalidAuthNotification();
|
136 |
+
return $notifications;
|
137 |
+
}
|
138 |
+
|
139 |
+
if (null === $account) {
|
140 |
+
return array($this->getAccountExpiredOrIncorrectDetailsNotification(
|
141 |
+
Mage::getStoreConfig('esendex_sms/sms/account_reference')
|
142 |
+
));
|
143 |
+
}
|
144 |
+
|
145 |
+
$notifications = array();
|
146 |
+
if ($this->accountExpiryLooming($account)) {
|
147 |
+
$notifications[] = $this->getExpiryNotification($account);
|
148 |
+
}
|
149 |
+
|
150 |
+
if ($this->hasWarnLimit() && $this->remainingMessagesBelowThreshold($account)) {
|
151 |
+
$notifications[] = $this->helper()->__(
|
152 |
+
'Your Esendex account %1$s has %2$d messages left',
|
153 |
+
$account->reference(),
|
154 |
+
$account->messagesRemaining()
|
155 |
+
);
|
156 |
+
}
|
157 |
+
|
158 |
+
return $notifications;
|
159 |
+
}
|
160 |
+
|
161 |
+
/**
|
162 |
+
* If the warn limit is numerical we will assume that the warn
|
163 |
+
* limit notification should be applied
|
164 |
+
*
|
165 |
+
* @return bool
|
166 |
+
*/
|
167 |
+
protected function hasWarnLimit()
|
168 |
+
{
|
169 |
+
return is_numeric(Mage::getStoreConfig('esendex_sms/sms/warn_me'));
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Get the message limit in which the admin would like to be warned at
|
174 |
+
*
|
175 |
+
* @return int
|
176 |
+
*/
|
177 |
+
protected function getWarnLimit()
|
178 |
+
{
|
179 |
+
return (int) Mage::getStoreConfig('esendex_sms/sms/warn_me');
|
180 |
+
}
|
181 |
+
|
182 |
+
/**
|
183 |
+
* Set the current date for better unit tests
|
184 |
+
*
|
185 |
+
* @param string $date
|
186 |
+
*/
|
187 |
+
public function setCurrentDate($date)
|
188 |
+
{
|
189 |
+
$this->currentDate = $date;
|
190 |
+
}
|
191 |
+
|
192 |
+
/**
|
193 |
+
* @return Esendex_Sms_Helper_Data
|
194 |
+
*/
|
195 |
+
public function helper()
|
196 |
+
{
|
197 |
+
return Mage::helper('esendex_sms');
|
198 |
+
}
|
199 |
+
}
|
app/code/community/Esendex/Sms/Model/AccountObserver.php
ADDED
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Esendex\Http\HttpException;
|
19 |
+
use Esendex\Model\Account;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Class Esendex_Sms_Model_AccountObserver
|
23 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
24 |
+
*/
|
25 |
+
class Esendex_Sms_Model_AccountObserver
|
26 |
+
{
|
27 |
+
/**
|
28 |
+
* Validate whether the account details are valid/active
|
29 |
+
*
|
30 |
+
* @param Varien_Event_Observer $observer
|
31 |
+
*/
|
32 |
+
public function validateAccount(Varien_Event_Observer $observer)
|
33 |
+
{
|
34 |
+
$account = null;
|
35 |
+
try {
|
36 |
+
$account = Esendex_Sms_Model_Api_Factory::getAccount(false);
|
37 |
+
} catch (HttpException $e) {
|
38 |
+
}
|
39 |
+
|
40 |
+
if ($account instanceof Account) {
|
41 |
+
Mage::getSingleton('core/session')->addSuccess(
|
42 |
+
sprintf('Esendex Account %s details are correct', $account->reference())
|
43 |
+
);
|
44 |
+
} else {
|
45 |
+
Mage::getSingleton('core/session')->addError('Account details are invalid or account has expired');
|
46 |
+
}
|
47 |
+
|
48 |
+
Mage::dispatchEvent('esendex_account_details_updated', array('account' => $account));
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Save the Account in the Cache
|
53 |
+
*
|
54 |
+
* @param Varien_Event_Observer $observer
|
55 |
+
*/
|
56 |
+
public function rebuildAccountCache(Varien_Event_Observer $observer)
|
57 |
+
{
|
58 |
+
$account = $observer->getData('account');
|
59 |
+
|
60 |
+
if (!$account instanceof Account) {
|
61 |
+
Mage::app()->getCache()->remove('esendex_account');
|
62 |
+
return;
|
63 |
+
}
|
64 |
+
Mage::app()->getCache()->save(serialize($account), 'esendex_account');
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @param Varien_Event_Observer $observer
|
69 |
+
*/
|
70 |
+
public function refreshAccountCache(Varien_Event_Observer $observer)
|
71 |
+
{
|
72 |
+
if ($this->helper()->hasNotFilledInAccountDetails()) {
|
73 |
+
return false;
|
74 |
+
}
|
75 |
+
|
76 |
+
//event listener will trigger re-cache
|
77 |
+
try {
|
78 |
+
$account = Esendex_Sms_Model_Api_Factory::getAccount(false);
|
79 |
+
} catch (HttpException $e) {
|
80 |
+
}
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* If an Esendex Account is cached, update the remaining messages to reflect what we just sent
|
85 |
+
*
|
86 |
+
* @param Varien_Event_Observer $observer
|
87 |
+
*/
|
88 |
+
public function updateRemainingMessages(Varien_Event_Observer $observer)
|
89 |
+
{
|
90 |
+
$messagesSent = $observer->getData('message_count');
|
91 |
+
|
92 |
+
if ($account = Mage::app()->getCache()->load('esendex_account')) {
|
93 |
+
/** @var Account $account */
|
94 |
+
$account = unserialize($account);
|
95 |
+
$account->messagesRemaining($account->messagesRemaining() - $messagesSent);
|
96 |
+
|
97 |
+
//re-save account to cache
|
98 |
+
Mage::app()->getCache()->save(serialize($account), 'esendex_account');
|
99 |
+
}
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* @return Esendex_Sms_Helper_Data
|
104 |
+
*/
|
105 |
+
public function helper()
|
106 |
+
{
|
107 |
+
return Mage::helper('esendex_sms');
|
108 |
+
}
|
109 |
+
}
|
app/code/community/Esendex/Sms/Model/Api/Api.php
ADDED
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Esendex\DispatchService;
|
19 |
+
use Esendex\SentMessagesService;
|
20 |
+
use Esendex\Exceptions\EsendexException;
|
21 |
+
use Esendex\Model\DispatchMessage;
|
22 |
+
use Esendex\Model\Message;
|
23 |
+
use Psr\Log\LoggerInterface;
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Class Esendex_Sms_Model_Api_Api
|
27 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
28 |
+
*/
|
29 |
+
class Esendex_Sms_Model_Api_Api
|
30 |
+
{
|
31 |
+
|
32 |
+
/**
|
33 |
+
* @var DispatchService
|
34 |
+
*/
|
35 |
+
protected $dispatchService;
|
36 |
+
|
37 |
+
/**
|
38 |
+
* @var SentMessagesService
|
39 |
+
*/
|
40 |
+
protected $sentMessagesService;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* @var bool
|
44 |
+
*/
|
45 |
+
protected $performSend = false;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @var LoggerInterface
|
49 |
+
*/
|
50 |
+
private $logger;
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @param LoggerInterface $logger
|
54 |
+
* @param DispatchService $dispatchService
|
55 |
+
* @param SentMessagesService $sentMessagesService
|
56 |
+
* @param array $config
|
57 |
+
*/
|
58 |
+
public function __construct(
|
59 |
+
LoggerInterface $logger,
|
60 |
+
DispatchService $dispatchService,
|
61 |
+
SentMessagesService $sentMessagesService,
|
62 |
+
array $config
|
63 |
+
) {
|
64 |
+
$this->dispatchService = $dispatchService;
|
65 |
+
$this->sentMessagesService = $sentMessagesService;
|
66 |
+
$this->parseConfig($config);
|
67 |
+
$this->logger = $logger;
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* @param array $config
|
72 |
+
*/
|
73 |
+
public function parseConfig(array $config)
|
74 |
+
{
|
75 |
+
if (isset($config['performSend']) && $config['performSend']) {
|
76 |
+
$this->performSend = true;
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* @param int $startIndex
|
82 |
+
* @param int $count
|
83 |
+
* @return \Esendex\Model\SentMessagesPage
|
84 |
+
*/
|
85 |
+
public function getSentMessages($startIndex = null, $count = null)
|
86 |
+
{
|
87 |
+
return $this->sentMessagesService->latest($startIndex, $count);
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* @param Esendex_Sms_Model_Message[] $messages
|
92 |
+
*/
|
93 |
+
public function sendMultipleMessages(array $messages)
|
94 |
+
{
|
95 |
+
$totalSent = 0;
|
96 |
+
foreach ($messages as $message) {
|
97 |
+
$totalSent += $this->sendMessage($message);
|
98 |
+
}
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* @param Esendex_Sms_Model_Message $message
|
103 |
+
*/
|
104 |
+
public function sendMessage(Esendex_Sms_Model_Message $message)
|
105 |
+
{
|
106 |
+
$totalSent = 0;
|
107 |
+
foreach ($message->getRecipients() as $recipient) {
|
108 |
+
$dispatchMessage = new DispatchMessage(
|
109 |
+
$message->getSender(),
|
110 |
+
$recipient,
|
111 |
+
$message->getMessageBody(),
|
112 |
+
Message::SmsType
|
113 |
+
);
|
114 |
+
|
115 |
+
if ($this->doSend($dispatchMessage)) {
|
116 |
+
$totalSent++;
|
117 |
+
}
|
118 |
+
}
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* Returns true if message was actually sent
|
123 |
+
*
|
124 |
+
* @param DispatchMessage $message
|
125 |
+
* @return bool
|
126 |
+
*/
|
127 |
+
public function doSend(DispatchMessage $message)
|
128 |
+
{
|
129 |
+
$this->logger->debug(sprintf(
|
130 |
+
'Sending Message: "%s", To: "%s", From: "%s"',
|
131 |
+
$message->body(),
|
132 |
+
$message->recipient(),
|
133 |
+
$message->originator()
|
134 |
+
));
|
135 |
+
|
136 |
+
if (!$this->performSend) {
|
137 |
+
$this->logger->debug('Not performing send as specified in configuration');
|
138 |
+
return false;
|
139 |
+
}
|
140 |
+
|
141 |
+
try {
|
142 |
+
$this->dispatchService->send($message);
|
143 |
+
$this->logger->debug('Message was successfully sent');
|
144 |
+
|
145 |
+
} catch (EsendexException $e) {
|
146 |
+
//message failed to send
|
147 |
+
//or error parsing the result
|
148 |
+
$this->logger->critical($e->__toString());
|
149 |
+
return false;
|
150 |
+
}
|
151 |
+
return true;
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* @return LoggerInterface
|
156 |
+
*/
|
157 |
+
public function getLogger()
|
158 |
+
{
|
159 |
+
return $this->logger;
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* @param LoggerInterface $logger
|
164 |
+
*/
|
165 |
+
public function setLogger(LoggerInterface $logger)
|
166 |
+
{
|
167 |
+
$this->logger = $logger;
|
168 |
+
}
|
169 |
+
}
|
app/code/community/Esendex/Sms/Model/Api/Factory.php
ADDED
@@ -0,0 +1,125 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Esendex\DispatchService;
|
19 |
+
use Esendex\SentMessagesService;
|
20 |
+
use Esendex\Exceptions\EsendexException;
|
21 |
+
use Esendex\Authentication\LoginAuthentication;
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Class Esendex_Sms_Model_Api_Api
|
25 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
26 |
+
*/
|
27 |
+
class Esendex_Sms_Model_Api_Factory
|
28 |
+
{
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @return Esendex_Sms_Model_Api_Api
|
32 |
+
*/
|
33 |
+
public static function getInstance()
|
34 |
+
{
|
35 |
+
$authentication = static::getLoginAuth();
|
36 |
+
$dispatchService = new \Esendex\DispatchService($authentication, static::getHttpClient());
|
37 |
+
$sentMessagesService = new SentMessagesService($authentication);
|
38 |
+
|
39 |
+
$config = [
|
40 |
+
'debugMode' => (bool) Mage::getStoreConfig('esendex_sms/sms/debug_mode'),
|
41 |
+
'performSend' => (bool) Mage::getStoreConfig('esendex_sms/sms/send_sms'),
|
42 |
+
];
|
43 |
+
|
44 |
+
$logger = Esendex_Sms_Model_Logger_Factory::getInstance();
|
45 |
+
|
46 |
+
return new Esendex_Sms_Model_Api_Api($logger, $dispatchService, $sentMessagesService, $config);
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* @param bool $loadCached
|
51 |
+
* @return \Esendex\Model\Account
|
52 |
+
*/
|
53 |
+
public static function getAccount($loadCached = true)
|
54 |
+
{
|
55 |
+
if ($loadCached) {
|
56 |
+
$cache = Mage::app()->getCache();
|
57 |
+
if ($account = $cache->load('esendex_account')) {
|
58 |
+
return unserialize($account);
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
$authentication = static::getLoginAuth();
|
63 |
+
$accountService = new Esendex\AccountService($authentication, static::getHttpClient());
|
64 |
+
$account = $accountService->getAccount();
|
65 |
+
|
66 |
+
Mage::dispatchEvent('esendex_account_reloaded', array('account' => $account));
|
67 |
+
return $account;
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* @return LoginAuthentication
|
72 |
+
*/
|
73 |
+
public static function getLoginAuth()
|
74 |
+
{
|
75 |
+
return new LoginAuthentication(
|
76 |
+
Mage::getStoreConfig('esendex_sms/sms/account_reference'),
|
77 |
+
Mage::getStoreConfig('esendex_sms/sms/email'),
|
78 |
+
Mage::getStoreConfig('esendex_sms/sms/password')
|
79 |
+
);
|
80 |
+
}
|
81 |
+
|
82 |
+
/**
|
83 |
+
* @return Esendex_Sms_Model_Http_HttpClient
|
84 |
+
*/
|
85 |
+
public static function getHttpClient()
|
86 |
+
{
|
87 |
+
$apiCertLocations = array(
|
88 |
+
sprintf('%s/lib/ca-bundle.pem', Mage::getBaseDir()),
|
89 |
+
sprintf('%s/../vendor/esendex/sdk/src/ca-bundle.pem', Mage::getBaseDir()),
|
90 |
+
);
|
91 |
+
|
92 |
+
$availableLocations = array_filter(
|
93 |
+
$apiCertLocations,
|
94 |
+
function ($location) {
|
95 |
+
return file_exists($location);
|
96 |
+
}
|
97 |
+
);
|
98 |
+
|
99 |
+
if (!count($availableLocations)) {
|
100 |
+
throw new RuntimeException(
|
101 |
+
sprintf(
|
102 |
+
'Cannot locate Certificate file in either of: "%s"',
|
103 |
+
implode('", "', $apiCertLocations)
|
104 |
+
)
|
105 |
+
);
|
106 |
+
}
|
107 |
+
|
108 |
+
$apiCertLocation = current($availableLocations);
|
109 |
+
$userAgent = static::getUserAgent();
|
110 |
+
return new Esendex_Sms_Model_Http_HttpClient($userAgent, $apiCertLocation, true);
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* @return string
|
115 |
+
*/
|
116 |
+
public static function getUserAgent()
|
117 |
+
{
|
118 |
+
return sprintf(
|
119 |
+
'esendex-magento-plugin/%s magento/%s (%s)',
|
120 |
+
Mage::getConfig()->getModuleConfig("Esendex_Sms")->version,
|
121 |
+
Mage::getVersion(),
|
122 |
+
php_uname()
|
123 |
+
);
|
124 |
+
}
|
125 |
+
}
|
app/code/community/Esendex/Sms/Model/AutoloaderObserver.php
ADDED
@@ -0,0 +1,135 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_AutoloaderObserver
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_AutoloaderObserver
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* Prefixes of classes to autoload
|
26 |
+
*
|
27 |
+
* @var array
|
28 |
+
*/
|
29 |
+
protected static $prefixes = array(
|
30 |
+
'Esendex',
|
31 |
+
'Psr'
|
32 |
+
);
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Whether or not the autoloader has been registered
|
36 |
+
*
|
37 |
+
* @var bool
|
38 |
+
*/
|
39 |
+
protected static $autoloaderRegistered = false;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Register Esendex PSR0 Autoloader, before Varien_Autoload
|
43 |
+
* so we don't get and warnings about varien_Autoload not being able
|
44 |
+
* to find the class.
|
45 |
+
*/
|
46 |
+
public function autoloadEsendexSdk()
|
47 |
+
{
|
48 |
+
if (!static::$autoloaderRegistered) {
|
49 |
+
|
50 |
+
$this->checkLibExistence();
|
51 |
+
|
52 |
+
//find and unregister Varien Autoloader
|
53 |
+
foreach (spl_autoload_functions() as $autoLoader) {
|
54 |
+
if (is_array($autoLoader) && $autoLoader[0] instanceof Varien_Autoload) {
|
55 |
+
$this->register($autoLoader);
|
56 |
+
break;
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
static::$autoloaderRegistered = true;
|
61 |
+
}
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* @param callable $autoLoader
|
66 |
+
*/
|
67 |
+
public function register($autoLoader)
|
68 |
+
{
|
69 |
+
spl_autoload_unregister($autoLoader);
|
70 |
+
//register Esendex Autoloader
|
71 |
+
spl_autoload_register([$this, 'load']);
|
72 |
+
//re-register Magento Autoloader
|
73 |
+
spl_autoload_register($autoLoader);
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Check if Esendex & Psr/Log Library exists in the Magento lib.
|
78 |
+
*
|
79 |
+
* @throws Mage_Core_Exception
|
80 |
+
*/
|
81 |
+
public function checkLibExistence()
|
82 |
+
{
|
83 |
+
$esendexLibDir = sprintf('%s/Esendex', Mage::getBaseDir('lib'));
|
84 |
+
if (!file_exists($esendexLibDir)) {
|
85 |
+
Mage::throwException(
|
86 |
+
sprintf(
|
87 |
+
'Esendex SDK not found in: "%s". If you are using the module via Composer ' .
|
88 |
+
'you should stop this observer from triggering',
|
89 |
+
$esendexLibDir
|
90 |
+
)
|
91 |
+
);
|
92 |
+
}
|
93 |
+
|
94 |
+
$psrLogLibDir = sprintf('%s/Psr/Log', Mage::getBaseDir('lib'));
|
95 |
+
if (!file_exists($psrLogLibDir)) {
|
96 |
+
Mage::throwException(
|
97 |
+
sprintf(
|
98 |
+
'Psr/Log library not found in: "%s". If you are using the module via Composer ' .
|
99 |
+
'you should stop this observer from triggering',
|
100 |
+
$psrLogLibDir
|
101 |
+
)
|
102 |
+
);
|
103 |
+
}}
|
104 |
+
|
105 |
+
/**
|
106 |
+
* @param string $class
|
107 |
+
*/
|
108 |
+
public function load($class)
|
109 |
+
{
|
110 |
+
if (!$this->shouldClassBeAutoLoaded(static::$prefixes, $class)) {
|
111 |
+
return;
|
112 |
+
}
|
113 |
+
|
114 |
+
$parts = explode('\\', $class);
|
115 |
+
$path = sprintf("%s/%s.php", Mage::getBaseDir('lib'), implode('/', $parts));
|
116 |
+
|
117 |
+
if (file_exists($path)) {
|
118 |
+
require_once($path);
|
119 |
+
}
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* If this class name matches any of our defined prefixes, return true
|
124 |
+
*
|
125 |
+
* @param array $prefixes
|
126 |
+
* @param string $className
|
127 |
+
* @return int
|
128 |
+
*/
|
129 |
+
private function shouldClassBeAutoLoaded(array $prefixes, $className)
|
130 |
+
{
|
131 |
+
return count(array_filter($prefixes, function ($prefix) use ($className) {
|
132 |
+
return $prefix === substr($className, 0, strlen($prefix));
|
133 |
+
}));
|
134 |
+
}
|
135 |
+
}
|
app/code/community/Esendex/Sms/Model/Event.php
ADDED
@@ -0,0 +1,105 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Event
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_Event extends Mage_Core_Model_Abstract
|
23 |
+
{
|
24 |
+
const ENTITY = 'esendex_sms_event';
|
25 |
+
const CACHE_TAG = 'esendex_sms_event';
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Trigger types, Magento Cron or Magento Events
|
29 |
+
*/
|
30 |
+
const TRIGGER_TYPE_CRON = 'cron';
|
31 |
+
const TRIGGER_TYPE_EVENT = 'event';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Prefix of model events names
|
35 |
+
*
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
protected $_eventPrefix = 'esendex_sms_event';
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Parameter name in event
|
42 |
+
*
|
43 |
+
* @var string
|
44 |
+
*/
|
45 |
+
protected $_eventObject = 'event';
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Constructor
|
49 |
+
*/
|
50 |
+
public function _construct()
|
51 |
+
{
|
52 |
+
parent::_construct();
|
53 |
+
$this->_init('esendex_sms/event');
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* @return self
|
58 |
+
*/
|
59 |
+
protected function _beforeSave()
|
60 |
+
{
|
61 |
+
parent::_beforeSave();
|
62 |
+
$now = Mage::getSingleton('core/date')->gmtDate();
|
63 |
+
if ($this->isObjectNew()) {
|
64 |
+
$this->setCreatedAt($now);
|
65 |
+
}
|
66 |
+
$this->setUpdatedAt($now);
|
67 |
+
return $this;
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* @return self
|
72 |
+
*/
|
73 |
+
protected function _afterSave()
|
74 |
+
{
|
75 |
+
return parent::_afterSave();
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Get the Event Processor Model for this event
|
80 |
+
*
|
81 |
+
* @return Esendex_Sms_Model_EventProcessor_Interface $model
|
82 |
+
*/
|
83 |
+
public function getEventProcessor()
|
84 |
+
{
|
85 |
+
$modelAlias = $this->getData('event_processor');
|
86 |
+
$eventProcessor = Mage::getModel($modelAlias);
|
87 |
+
|
88 |
+
if (false === $eventProcessor) {
|
89 |
+
throw new \RuntimeException(
|
90 |
+
sprintf('Event Processor Model: "%s" does not have an associated class', $modelAlias)
|
91 |
+
);
|
92 |
+
}
|
93 |
+
|
94 |
+
if (!$eventProcessor instanceof Esendex_Sms_Model_EventProcessor_Interface) {
|
95 |
+
throw new \RuntimeException(
|
96 |
+
sprintf(
|
97 |
+
'Event Processor Model: "%s" must implement: "Esendex_Sms_Model_EventProcessor_Interface"',
|
98 |
+
$modelAlias
|
99 |
+
)
|
100 |
+
);
|
101 |
+
}
|
102 |
+
|
103 |
+
return $eventProcessor;
|
104 |
+
}
|
105 |
+
}
|
app/code/community/Esendex/Sms/Model/EventProcessor/Abstract.php
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_EventProcessor_Abstract
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
abstract class Esendex_Sms_Model_EventProcessor_Abstract
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @var array|Esendex_Sms_Model_Event_Variable[]
|
26 |
+
*/
|
27 |
+
protected $variables = [];
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @var Varien_Object
|
31 |
+
*/
|
32 |
+
protected $parameters = [];
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Check variables
|
36 |
+
*/
|
37 |
+
public function __construct()
|
38 |
+
{
|
39 |
+
if (!is_array($this->variables)) {
|
40 |
+
throw new \RuntimeException(
|
41 |
+
'The property: "variables" must be an array of available variables'
|
42 |
+
);
|
43 |
+
}
|
44 |
+
|
45 |
+
$variables = [];
|
46 |
+
foreach ($this->variables as $path => $name) {
|
47 |
+
$variables[] = new Esendex_Sms_Model_Variable($name, $path);
|
48 |
+
}
|
49 |
+
|
50 |
+
$this->variables = $variables;
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @param Varien_Object $parameters
|
55 |
+
*/
|
56 |
+
public function setParameters(Varien_Object $parameters)
|
57 |
+
{
|
58 |
+
$this->parameters = $parameters;
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* @return Esendex_Sms_Model_Event_Variable[]
|
63 |
+
*/
|
64 |
+
final public function getVariables()
|
65 |
+
{
|
66 |
+
return $this->variables;
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* @return Varien_Object
|
71 |
+
*/
|
72 |
+
public function getVariableContainer(Esendex_Sms_Model_TriggerAbstract $trigger)
|
73 |
+
{
|
74 |
+
$data = [];
|
75 |
+
if ($this->parameters instanceof Varien_Object) {
|
76 |
+
$data = $this->parameters->getData();
|
77 |
+
}
|
78 |
+
|
79 |
+
//here you can either create your own array of variables
|
80 |
+
//or use ones set for you - or merge them!becuase we
|
81 |
+
$container = new Varien_Object($data);
|
82 |
+
return $container;
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* @param string $message
|
87 |
+
* @return string
|
88 |
+
*/
|
89 |
+
public function postProcess($message)
|
90 |
+
{
|
91 |
+
return $message;
|
92 |
+
}
|
93 |
+
}
|
app/code/community/Esendex/Sms/Model/EventProcessor/Interface.php
ADDED
@@ -0,0 +1,80 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_EventProcessor_Interface
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
interface Esendex_Sms_Model_EventProcessor_Interface
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* The variable this message can process
|
26 |
+
*
|
27 |
+
* @return Esendex_Sms_Model_Event_Variable[]
|
28 |
+
*/
|
29 |
+
public function getVariables();
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @param Varien_Object $parameters
|
33 |
+
*
|
34 |
+
* @return void
|
35 |
+
*/
|
36 |
+
public function setParameters(Varien_Object $parameters);
|
37 |
+
|
38 |
+
/**
|
39 |
+
* @return Varien_Object
|
40 |
+
*/
|
41 |
+
public function getVariableContainer(Esendex_Sms_Model_TriggerAbstract $trigger);
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Whether or not a message needs to be sent, based on the current runtime data (event)
|
45 |
+
*
|
46 |
+
* @param Esendex_Sms_Model_TriggerAbstract $trigger
|
47 |
+
*
|
48 |
+
* @return bool
|
49 |
+
*/
|
50 |
+
public function shouldSend(Esendex_Sms_Model_TriggerAbstract $trigger);
|
51 |
+
|
52 |
+
/**
|
53 |
+
* Get the recipients or recipient.
|
54 |
+
*
|
55 |
+
* @param Esendex_Sms_Model_TriggerAbstract $trigger
|
56 |
+
*
|
57 |
+
* @return array|string
|
58 |
+
*/
|
59 |
+
public function getRecipient(Esendex_Sms_Model_TriggerAbstract $trigger);
|
60 |
+
|
61 |
+
/**
|
62 |
+
* The replaced message will be passed to this
|
63 |
+
* function where the implementer can do some finall
|
64 |
+
* post-processing on the message, before it is sent
|
65 |
+
*
|
66 |
+
* @param string $message
|
67 |
+
*
|
68 |
+
* @return string
|
69 |
+
*/
|
70 |
+
public function postProcess($message);
|
71 |
+
|
72 |
+
/**
|
73 |
+
* Get the store ID associated with this event
|
74 |
+
* EG: If an order, it should return the store ID the
|
75 |
+
* order was placed in
|
76 |
+
*
|
77 |
+
* @return int
|
78 |
+
*/
|
79 |
+
public function getStoreId();
|
80 |
+
}
|
app/code/community/Esendex/Sms/Model/Http/HttpClient.php
ADDED
@@ -0,0 +1,237 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Esendex\Authentication\IAuthentication;
|
19 |
+
use Esendex\Http\BadRequestException;
|
20 |
+
use Esendex\Http\IHttp;
|
21 |
+
use Esendex\Http\MethodNotAllowedException;
|
22 |
+
use Esendex\Http\NotImplementedException;
|
23 |
+
use Esendex\Http\PaymentRequiredException;
|
24 |
+
use Esendex\Http\RequestTimedOutException;
|
25 |
+
use Esendex\Http\ResourceNotFoundException;
|
26 |
+
use Esendex\Http\ServerErrorException;
|
27 |
+
use Esendex\Http\ServiceUnavailableException;
|
28 |
+
use Esendex\Http\UnauthorisedException;
|
29 |
+
use Esendex\Http\UserCredentialsException;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Class Esendex_Sms_Model_Http_HttpClient
|
33 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
34 |
+
*/
|
35 |
+
class Esendex_Sms_Model_Http_HttpClient implements IHttp
|
36 |
+
{
|
37 |
+
/**
|
38 |
+
* @var string
|
39 |
+
*/
|
40 |
+
protected $userAgent;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* @var string
|
44 |
+
*/
|
45 |
+
private static $certificateBundle;
|
46 |
+
|
47 |
+
/**
|
48 |
+
* @var bool
|
49 |
+
*/
|
50 |
+
private $isSecure;
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @param string $userAgent
|
54 |
+
* @param string $apiCertLocation
|
55 |
+
* @param bool $secure
|
56 |
+
*/
|
57 |
+
public function __construct($userAgent, $apiCertLocation, $secure = true)
|
58 |
+
{
|
59 |
+
$this->isSecure = $secure;
|
60 |
+
$this->userAgent = $userAgent;
|
61 |
+
|
62 |
+
self::$certificateBundle = $apiCertLocation;
|
63 |
+
if (empty(self::$certificateBundle)) {
|
64 |
+
throw new RuntimeException("WARN: Could not locate CA Bundle. Secure web requests will fail");
|
65 |
+
}
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* @param null|bool $secure
|
70 |
+
* @return bool
|
71 |
+
*/
|
72 |
+
public function isSecure($secure = null)
|
73 |
+
{
|
74 |
+
if (isset($secure) && is_bool($secure)) {
|
75 |
+
$this->isSecure = $secure;
|
76 |
+
}
|
77 |
+
return $this->isSecure;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* @param string $userAgent
|
82 |
+
*/
|
83 |
+
public function setUserAgent($userAgent)
|
84 |
+
{
|
85 |
+
$this->userAgent = $userAgent;
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* @return string
|
90 |
+
*/
|
91 |
+
public function getUserAgentDetail()
|
92 |
+
{
|
93 |
+
return $this->userAgent;
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* @param string $url
|
98 |
+
* @param IAuthentication $authentication
|
99 |
+
*
|
100 |
+
* @return string
|
101 |
+
*/
|
102 |
+
public function get($url, IAuthentication $authentication)
|
103 |
+
{
|
104 |
+
$results = $this->request($url, $authentication, 'GET');
|
105 |
+
return $results['data'];
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* @param string $url
|
110 |
+
* @param IAuthentication $authentication
|
111 |
+
* @param mixed $data
|
112 |
+
*
|
113 |
+
* @return string
|
114 |
+
*/
|
115 |
+
public function put($url, IAuthentication $authentication, $data)
|
116 |
+
{
|
117 |
+
$results = $this->request($url, $authentication, 'PUT', $data);
|
118 |
+
return $results['data'];
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* @param string $url
|
123 |
+
* @param IAuthentication $authentication
|
124 |
+
* @param mixed $data
|
125 |
+
*
|
126 |
+
* @return string
|
127 |
+
*/
|
128 |
+
public function post($url, IAuthentication $authentication, $data)
|
129 |
+
{
|
130 |
+
$results = $this->request($url, $authentication, 'POST', $data);
|
131 |
+
return $results['data'];
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* @param string $url
|
136 |
+
* @param IAuthentication $authentication
|
137 |
+
*
|
138 |
+
* @return int
|
139 |
+
*/
|
140 |
+
public function delete($url, IAuthentication $authentication)
|
141 |
+
{
|
142 |
+
$results = $this->request($url, $authentication, 'DELETE');
|
143 |
+
|
144 |
+
return $results['statuscode'];
|
145 |
+
}
|
146 |
+
|
147 |
+
/**
|
148 |
+
* @param string $url
|
149 |
+
* @param IAuthentication $authentication
|
150 |
+
* @param string $method
|
151 |
+
* @param null|mixed $data
|
152 |
+
*
|
153 |
+
* @return array
|
154 |
+
* @throws Exception
|
155 |
+
*/
|
156 |
+
private function request($url, $authentication, $method, $data = null)
|
157 |
+
{
|
158 |
+
$httpHeaders = array("Authorization: {$authentication->getEncodedValue()}");
|
159 |
+
|
160 |
+
$curlHandle = \curl_init();
|
161 |
+
|
162 |
+
\curl_setopt($curlHandle, CURLOPT_URL, $url);
|
163 |
+
\curl_setopt($curlHandle, CURLOPT_FAILONERROR, false);
|
164 |
+
\curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, true); // Allow redirects.
|
165 |
+
\curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
|
166 |
+
\curl_setopt($curlHandle, CURLOPT_TIMEOUT, 30);
|
167 |
+
\curl_setopt($curlHandle, CURLOPT_HEADER, false);
|
168 |
+
\curl_setopt($curlHandle, CURLOPT_CAINFO, self::$certificateBundle);
|
169 |
+
\curl_setopt($curlHandle, CURLOPT_USERAGENT, $this->userAgent);
|
170 |
+
\curl_setopt($curlHandle, CURLOPT_CUSTOMREQUEST, $method);
|
171 |
+
if ($method == 'PUT' || $method == 'POST') {
|
172 |
+
\curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $data);
|
173 |
+
\curl_setopt($curlHandle, CURLOPT_BINARYTRANSFER, true);
|
174 |
+
if (strlen($data) == 0) {
|
175 |
+
$httpHeaders[] = 'Content-Length: 0';
|
176 |
+
}
|
177 |
+
$httpHeaders[] = 'Content-Type: application/xml; charset=utf-8';
|
178 |
+
}
|
179 |
+
\curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $httpHeaders);
|
180 |
+
|
181 |
+
$result = \curl_exec($curlHandle);
|
182 |
+
$curlInfo = \curl_getinfo($curlHandle);
|
183 |
+
|
184 |
+
$results = array();
|
185 |
+
$results['data'] = $result;
|
186 |
+
$results['statuscode'] = $curlInfo["http_code"];
|
187 |
+
|
188 |
+
\curl_close($curlHandle);
|
189 |
+
|
190 |
+
if ($results['statuscode'] < 200 || $results['statuscode'] >= 300) {
|
191 |
+
throw $this->getHttpException($results, $curlInfo);
|
192 |
+
}
|
193 |
+
|
194 |
+
$results['url'] = $curlInfo['url'];
|
195 |
+
return $results;
|
196 |
+
}
|
197 |
+
|
198 |
+
/**
|
199 |
+
* @param array $result
|
200 |
+
* @param array $info
|
201 |
+
*
|
202 |
+
* @return Exception
|
203 |
+
*/
|
204 |
+
private function getHttpException(array $result, array $info = null)
|
205 |
+
{
|
206 |
+
$http_code = $result["statuscode"];
|
207 |
+
$data = $result["data"];
|
208 |
+
$error_message = strlen($data) != 0 && $data != $http_code
|
209 |
+
? $data
|
210 |
+
: "The requested URL returned error: {$http_code}";
|
211 |
+
switch ($http_code) {
|
212 |
+
case 400:
|
213 |
+
return new BadRequestException($error_message, $http_code, $info);
|
214 |
+
case 401:
|
215 |
+
return new UnauthorisedException($error_message, $http_code, $info);
|
216 |
+
case 402:
|
217 |
+
return new PaymentRequiredException($error_message, $http_code, $info);
|
218 |
+
case 403:
|
219 |
+
return new UserCredentialsException($error_message, $http_code, $info);
|
220 |
+
case 404:
|
221 |
+
return new ResourceNotFoundException($error_message, $http_code, $info);
|
222 |
+
case 405:
|
223 |
+
return new MethodNotAllowedException($error_message, $http_code, $info);
|
224 |
+
case 408:
|
225 |
+
return new RequestTimedOutException($error_message, $http_code, $info);
|
226 |
+
case 500:
|
227 |
+
return new ServerErrorException($error_message, $http_code, $info);
|
228 |
+
case 501:
|
229 |
+
return new NotImplementedException($error_message, $http_code, $info);
|
230 |
+
case 503:
|
231 |
+
return new ServiceUnavailableException($error_message, $http_code, $info);
|
232 |
+
default:
|
233 |
+
$error_message = "An unexpected error occurred processing the web request";
|
234 |
+
return new \Exception($error_message, $http_code);
|
235 |
+
}
|
236 |
+
}
|
237 |
+
}
|
app/code/community/Esendex/Sms/Model/Logger/Factory.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Psr\Log\AbstractLogger;
|
19 |
+
use Psr\Log\LogLevel;
|
20 |
+
use Psr\Log\LoggerInterface;
|
21 |
+
|
22 |
+
/**
|
23 |
+
* Class Esendex_Sms_Model_Logger
|
24 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
25 |
+
*/
|
26 |
+
class Esendex_Sms_Model_Logger_Factory
|
27 |
+
{
|
28 |
+
/**
|
29 |
+
* Esendex Log File
|
30 |
+
*/
|
31 |
+
const LOG_FILE = 'esendex_sms.log';
|
32 |
+
|
33 |
+
/**
|
34 |
+
* @var LoggerInterface
|
35 |
+
*/
|
36 |
+
static $logger;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* @return Esendex_Sms_Model_Logger_Logger
|
40 |
+
*/
|
41 |
+
public static function getInstance()
|
42 |
+
{
|
43 |
+
if (static::$logger) {
|
44 |
+
return static::$logger;
|
45 |
+
}
|
46 |
+
|
47 |
+
$file = sprintf('%s/%s', Mage::getBaseDir('log'), static::LOG_FILE);
|
48 |
+
$logger = new Zend_Log(new Zend_Log_Writer_Stream($file));
|
49 |
+
|
50 |
+
if (!Mage::getStoreConfig('esendex_sms/sms/debug_mode')) {
|
51 |
+
$logger->addFilter(new Zend_Log_Filter_Priority(Zend_Log::CRIT));
|
52 |
+
}
|
53 |
+
|
54 |
+
static::$logger = new Esendex_Sms_Model_Logger_Logger($logger);
|
55 |
+
return static::$logger;
|
56 |
+
}
|
57 |
+
}
|
app/code/community/Esendex/Sms/Model/Logger/Logger.php
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Psr\Log\AbstractLogger;
|
19 |
+
use Psr\Log\LogLevel;
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Class Esendex_Sms_Model_Logger
|
23 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
24 |
+
*/
|
25 |
+
class Esendex_Sms_Model_Logger_Logger extends AbstractLogger
|
26 |
+
{
|
27 |
+
|
28 |
+
/**
|
29 |
+
* Map PSR Log Level to Zend Log Level
|
30 |
+
*
|
31 |
+
* @var array
|
32 |
+
*/
|
33 |
+
private $logMap = [
|
34 |
+
LogLevel::ALERT => Zend_Log::ALERT,
|
35 |
+
LogLevel::CRITICAL => Zend_Log::CRIT,
|
36 |
+
LogLevel::DEBUG => Zend_Log::DEBUG,
|
37 |
+
LogLevel::EMERGENCY => Zend_Log::EMERG,
|
38 |
+
LogLevel::ERROR => Zend_Log::ERR,
|
39 |
+
LogLevel::INFO => Zend_Log::INFO,
|
40 |
+
LogLevel::NOTICE => Zend_Log::NOTICE,
|
41 |
+
LogLevel::WARNING => Zend_Log::WARN,
|
42 |
+
];
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @var Zend_Log
|
46 |
+
*/
|
47 |
+
private $logger;
|
48 |
+
|
49 |
+
/**
|
50 |
+
* @param Zend_Log $logger
|
51 |
+
*/
|
52 |
+
public function __construct(Zend_Log $logger)
|
53 |
+
{
|
54 |
+
$this->logger = $logger;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* Logs with an arbitrary level.
|
59 |
+
*
|
60 |
+
* @param int $level
|
61 |
+
* @param string $message
|
62 |
+
* @param array $context
|
63 |
+
*
|
64 |
+
* @return null
|
65 |
+
*/
|
66 |
+
public function log($level, $message, array $context = [])
|
67 |
+
{
|
68 |
+
if (!isset($this->logMap[$level])) {
|
69 |
+
throw new \InvalidArgumentException('Level is not supported. See "Psr\Log\LogLevel"');
|
70 |
+
}
|
71 |
+
|
72 |
+
$zendLogLevel = $this->logMap[$level];
|
73 |
+
|
74 |
+
//Proxy log
|
75 |
+
$this->logger->log($message, $zendLogLevel);
|
76 |
+
}
|
77 |
+
}
|
app/code/community/Esendex/Sms/Model/Logger/LoggerAwareInterface.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Psr\Log\LoggerInterface;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Interface Esendex_Sms_Model_Logger_LoggerAwareInterface
|
22 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
23 |
+
*/
|
24 |
+
interface Esendex_Sms_Model_Logger_LoggerAwareInterface
|
25 |
+
{
|
26 |
+
/**
|
27 |
+
* @param LoggerInterface $logger
|
28 |
+
* @return void
|
29 |
+
*/
|
30 |
+
public function setLogger(LoggerInterface $logger);
|
31 |
+
|
32 |
+
/**
|
33 |
+
* @return LoggerInterface
|
34 |
+
*/
|
35 |
+
public function getLogger();
|
36 |
+
}
|
app/code/community/Esendex/Sms/Model/Message.php
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Event
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_Message
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @var null|string
|
27 |
+
*/
|
28 |
+
protected $messageBody = null;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @var null|string
|
32 |
+
*/
|
33 |
+
protected $sender = null;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* @var array
|
37 |
+
*/
|
38 |
+
protected $recipients = [];
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @param string $messageBody
|
42 |
+
* @param string $sender
|
43 |
+
* @param array|string $recipients
|
44 |
+
*/
|
45 |
+
public function __construct($messageBody, $sender, $recipients)
|
46 |
+
{
|
47 |
+
|
48 |
+
$this->messageBody = $messageBody;
|
49 |
+
$this->sender = $sender;
|
50 |
+
|
51 |
+
if (!is_string($recipients) && !is_array($recipients)) {
|
52 |
+
throw new \InvalidArgumentException(
|
53 |
+
sprintf(
|
54 |
+
'Senders must be a string or array of strings. Given: "%s"',
|
55 |
+
is_object($recipients) ? get_class($recipients) : gettype($recipients)
|
56 |
+
)
|
57 |
+
);
|
58 |
+
}
|
59 |
+
|
60 |
+
if (is_string($recipients)) {
|
61 |
+
$this->recipients = [$recipients];
|
62 |
+
} else {
|
63 |
+
$this->recipients = $recipients;
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @return null|string
|
69 |
+
*/
|
70 |
+
public function getMessageBody()
|
71 |
+
{
|
72 |
+
return $this->messageBody;
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* @param string $messageBody
|
77 |
+
*/
|
78 |
+
public function setMessageBody($messageBody)
|
79 |
+
{
|
80 |
+
$this->messageBody = $messageBody;
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* @return null|string
|
85 |
+
*/
|
86 |
+
public function getSender()
|
87 |
+
{
|
88 |
+
return $this->sender;
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* @param string $sender
|
93 |
+
*/
|
94 |
+
public function setSender($sender)
|
95 |
+
{
|
96 |
+
$this->sender = $sender;
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* @return array
|
101 |
+
*/
|
102 |
+
public function getRecipients()
|
103 |
+
{
|
104 |
+
return $this->recipients;
|
105 |
+
}
|
106 |
+
|
107 |
+
/**
|
108 |
+
* @param array $recipients
|
109 |
+
*/
|
110 |
+
public function setRecipients($recipients)
|
111 |
+
{
|
112 |
+
$this->recipients = $recipients;
|
113 |
+
}
|
114 |
+
}
|
app/code/community/Esendex/Sms/Model/MessageInterpolator.php
ADDED
@@ -0,0 +1,131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
use Psr\Log\LoggerInterface;
|
18 |
+
|
19 |
+
/**
|
20 |
+
* Class Esendex_Sms_Model_MessageInterpolator
|
21 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
22 |
+
*/
|
23 |
+
class Esendex_Sms_Model_MessageInterpolator
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* @var LoggerInterface
|
27 |
+
*/
|
28 |
+
protected $logger;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @param LoggerInterface $logger
|
32 |
+
*/
|
33 |
+
public function __construct(LoggerInterface $logger)
|
34 |
+
{
|
35 |
+
$this->logger = $logger;
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* @param string $messageTemplate
|
40 |
+
* @param Varien_Object $variableContainer
|
41 |
+
* @param Esendex_Sms_Model_Event_Variable[] $variables
|
42 |
+
*
|
43 |
+
* @return string
|
44 |
+
*/
|
45 |
+
public function interpolate($messageTemplate, Varien_Object $variableContainer, array $variables)
|
46 |
+
{
|
47 |
+
$parsedVariables = [];
|
48 |
+
|
49 |
+
foreach ($variables as $variable) {
|
50 |
+
/** @var $variable Esendex_Sms_Model_Variable */
|
51 |
+
$variableName = $variable->getReplaceName();
|
52 |
+
$parts = $variable->getPathParts();
|
53 |
+
|
54 |
+
$depth = count($parts);
|
55 |
+
$objectToSearch = clone $variableContainer;
|
56 |
+
for ($i = 0; $i < $depth; $i++) {
|
57 |
+
$key = array_shift($parts);
|
58 |
+
|
59 |
+
if (count($parts)) {
|
60 |
+
if ($objectToSearch instanceof Varien_Object && $objectToSearch->hasData($key)) {
|
61 |
+
$objectToSearch = $objectToSearch->getData($key);
|
62 |
+
} else {
|
63 |
+
$this->logNotFoundVariable($key, $variableName, $objectToSearch);
|
64 |
+
$parsedVariables[$variableName] = "";
|
65 |
+
break;
|
66 |
+
}
|
67 |
+
} else {
|
68 |
+
//this is the resulting variable we want to interpolate
|
69 |
+
if ($objectToSearch instanceof Varien_Object && $objectToSearch->hasData($key)) {
|
70 |
+
//add it to the array of vars to be replaced in the message
|
71 |
+
$parsedVariables[$variableName] = $objectToSearch->getData($key);
|
72 |
+
} else {
|
73 |
+
//var doesn't exist so just keep the placeholder so receiver knows something went wrong.
|
74 |
+
$this->logNotFoundVariable($key, $variableName, $objectToSearch);
|
75 |
+
$parsedVariables[$variableName] = "";
|
76 |
+
}
|
77 |
+
}
|
78 |
+
}
|
79 |
+
}
|
80 |
+
|
81 |
+
$message = $messageTemplate;
|
82 |
+
foreach ($parsedVariables as $search => $replace) {
|
83 |
+
if (!is_scalar($replace)) {
|
84 |
+
$this->logger->error(
|
85 |
+
sprintf(
|
86 |
+
'Cannot replace placeholder with a non-scalar value (Eg, String, Integer). Got: "%s"',
|
87 |
+
is_object($replace) ? get_class($replace) : gettype($replace)
|
88 |
+
)
|
89 |
+
);
|
90 |
+
$replace = "";
|
91 |
+
}
|
92 |
+
|
93 |
+
if ($replace === "") {
|
94 |
+
//if the variable didn't exist we want to remove the placeholder from the message
|
95 |
+
|
96 |
+
//match the placeholder and 1 optional space before it
|
97 |
+
//so optional variables like lastname don't leave extra spaces
|
98 |
+
//eg. 'Hello $FIRST$ $LAST$,' would result it in 'Hello $FIRST$ ,' <- Note the extra space
|
99 |
+
|
100 |
+
//preg quote escapes the dollar signs in the variable name as dollars are part of the regex syntax.
|
101 |
+
$message = preg_replace(sprintf('/(\s)?%s/', preg_quote($search)), "", $message);
|
102 |
+
} else {
|
103 |
+
//the variable was found so just do a straight replace
|
104 |
+
$message = str_replace($search, $replace, $message);
|
105 |
+
}
|
106 |
+
}
|
107 |
+
|
108 |
+
return $message;
|
109 |
+
}
|
110 |
+
|
111 |
+
/**
|
112 |
+
* @param string $variablePath
|
113 |
+
* @param string $variableName
|
114 |
+
* @param mixed $variable
|
115 |
+
*/
|
116 |
+
public function logNotFoundVariable($variablePath, $variableName, $variable)
|
117 |
+
{
|
118 |
+
$got = is_object($variable) ? get_class($variable) : gettype($variable);
|
119 |
+
$type = is_object($variable) ? 'object' : 'type';
|
120 |
+
|
121 |
+
$this->logger->debug(
|
122 |
+
sprintf(
|
123 |
+
'Could not find variable: "%s" with path: "%s" on %s %s',
|
124 |
+
$variableName,
|
125 |
+
$variablePath,
|
126 |
+
$type,
|
127 |
+
$got
|
128 |
+
)
|
129 |
+
);
|
130 |
+
}
|
131 |
+
}
|
app/code/community/Esendex/Sms/Model/MessageProcessor/Factory.php
ADDED
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_MessageProcessor_Factory
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_MessageProcessor_Factory
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @return Esendex_Sms_Model_MessageProcessor_MessageProcessor
|
27 |
+
*/
|
28 |
+
public static function getInstance()
|
29 |
+
{
|
30 |
+
$logger = Esendex_Sms_Model_Logger_Factory::getInstance();
|
31 |
+
return new Esendex_Sms_Model_MessageProcessor_MessageProcessor(
|
32 |
+
$logger,
|
33 |
+
new Esendex_Sms_Model_MessageInterpolator($logger)
|
34 |
+
);
|
35 |
+
}
|
36 |
+
}
|
app/code/community/Esendex/Sms/Model/MessageProcessor/MessageProcessor.php
ADDED
@@ -0,0 +1,151 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Psr\Log\LoggerInterface;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Class Esendex_Sms_Model_MessageProcessor_MessageProcessor
|
22 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
23 |
+
*/
|
24 |
+
class Esendex_Sms_Model_MessageProcessor_MessageProcessor
|
25 |
+
{
|
26 |
+
/**
|
27 |
+
* @var LoggerInterface
|
28 |
+
*/
|
29 |
+
protected $logger;
|
30 |
+
|
31 |
+
/**
|
32 |
+
* @var Esendex_Sms_Model_MessageInterpolator
|
33 |
+
*/
|
34 |
+
protected $messageInterpolator;
|
35 |
+
|
36 |
+
/**
|
37 |
+
* @param LoggerInterface $logger
|
38 |
+
* @param Esendex_Sms_Model_MessageInterpolator $messageInterpolator
|
39 |
+
*/
|
40 |
+
public function __construct(
|
41 |
+
LoggerInterface $logger,
|
42 |
+
Esendex_Sms_Model_MessageInterpolator $messageInterpolator
|
43 |
+
) {
|
44 |
+
$this->logger = $logger;
|
45 |
+
$this->messageInterpolator = $messageInterpolator;
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @param Esendex_Sms_Model_Resource_Event_Collection $events
|
50 |
+
* @param Varien_Object|null $variableContainer
|
51 |
+
*
|
52 |
+
* @return array
|
53 |
+
*/
|
54 |
+
public function processEvents(
|
55 |
+
Esendex_Sms_Model_Resource_Event_Collection $events,
|
56 |
+
Varien_Object $variableContainer = null
|
57 |
+
) {
|
58 |
+
$messages = [];
|
59 |
+
foreach ($events as $event) {
|
60 |
+
/** @var Esendex_Sms_Model_Event $event */
|
61 |
+
|
62 |
+
try {
|
63 |
+
/** @var Esendex_Sms_Model_EventProcessor_Interface $eventProcessor */
|
64 |
+
$eventProcessor = $event->getEventProcessor();
|
65 |
+
} catch (\RuntimeException $e) {
|
66 |
+
$this->logger->critical($e->getMessage());
|
67 |
+
continue;
|
68 |
+
}
|
69 |
+
|
70 |
+
if ($eventProcessor instanceof Esendex_Sms_Model_Logger_LoggerAwareInterface) {
|
71 |
+
$eventProcessor->setLogger($this->logger);
|
72 |
+
}
|
73 |
+
|
74 |
+
if (null !== $variableContainer) {
|
75 |
+
$eventProcessor->setParameters($variableContainer);
|
76 |
+
}
|
77 |
+
|
78 |
+
$storeId = $eventProcessor->getStoreId();
|
79 |
+
$triggers = $this->getTriggers($event, $storeId);
|
80 |
+
$messages = array_merge($messages, $this->processTriggers($triggers, $eventProcessor));
|
81 |
+
}
|
82 |
+
|
83 |
+
return $messages;
|
84 |
+
}
|
85 |
+
|
86 |
+
|
87 |
+
/**
|
88 |
+
* @param Esendex_Sms_Model_Event $event
|
89 |
+
* @param int|null $storeId
|
90 |
+
* @return Esendex_Sms_Model_Resource_Trigger_Collection
|
91 |
+
*/
|
92 |
+
protected function getTriggers($event, $storeId = null)
|
93 |
+
{
|
94 |
+
$triggerModel = $event->getSaveModel();
|
95 |
+
|
96 |
+
if (null === $triggerModel) {
|
97 |
+
$triggerModel = 'esendex_sms/trigger';
|
98 |
+
}
|
99 |
+
|
100 |
+
/** @var Esendex_Sms_Model_Resource_Trigger_Collection $triggers */
|
101 |
+
$triggers = Mage::getModel($triggerModel)
|
102 |
+
->getCollection()
|
103 |
+
->addEvents()
|
104 |
+
->addEventIdFilter($event->getId())
|
105 |
+
->addStatusEnabledFilter();
|
106 |
+
|
107 |
+
if (null !== $storeId) {
|
108 |
+
$triggers->addStoreFilter((int) $storeId);
|
109 |
+
}
|
110 |
+
|
111 |
+
return $triggers;
|
112 |
+
}
|
113 |
+
/**
|
114 |
+
* Get the message for each trigger
|
115 |
+
* Do variable replacing and post-processing
|
116 |
+
*
|
117 |
+
* @param Esendex_Sms_Model_Resource_Trigger_Collection $triggers
|
118 |
+
* @param Esendex_Sms_Model_EventProcessor_Interface $eventProcessor
|
119 |
+
*
|
120 |
+
* @return array
|
121 |
+
*/
|
122 |
+
protected function processTriggers(
|
123 |
+
Esendex_Sms_Model_Resource_Trigger_Collection $triggers,
|
124 |
+
Esendex_Sms_Model_EventProcessor_Interface $eventProcessor
|
125 |
+
) {
|
126 |
+
|
127 |
+
$messages = array();
|
128 |
+
foreach ($triggers as $trigger) {
|
129 |
+
|
130 |
+
if (!$eventProcessor->shouldSend($trigger)) {
|
131 |
+
continue;
|
132 |
+
}
|
133 |
+
|
134 |
+
$recipients = $eventProcessor->getRecipient($trigger);
|
135 |
+
$sender = $trigger->getData('sender');
|
136 |
+
|
137 |
+
//replace the placeholders with actual variables
|
138 |
+
$messageBody = $this->messageInterpolator->interpolate(
|
139 |
+
$trigger->getMessageTemplate(),
|
140 |
+
$eventProcessor->getVariableContainer($trigger),
|
141 |
+
$eventProcessor->getVariables()
|
142 |
+
);
|
143 |
+
|
144 |
+
$messageBody = $eventProcessor->postProcess($messageBody);
|
145 |
+
$message = new Esendex_Sms_Model_Message($messageBody, $sender, $recipients);
|
146 |
+
$messages[] = $message;
|
147 |
+
}
|
148 |
+
|
149 |
+
return $messages;
|
150 |
+
}
|
151 |
+
}
|
app/code/community/Esendex/Sms/Model/Observer.php
ADDED
@@ -0,0 +1,113 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Observer
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_Observer
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @var Esendex_Sms_Model_MessageProcessor
|
27 |
+
*/
|
28 |
+
protected $messageProcessor;
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @var Esendex_Sms_Model_Api_Api
|
32 |
+
*/
|
33 |
+
protected $esendexApi;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* @param Esendex_Sms_Model_Resource_Event_Collection $events
|
37 |
+
* @param Varien_Object $variableContainer
|
38 |
+
*/
|
39 |
+
protected function dispatch($events, Varien_Object $variableContainer = null)
|
40 |
+
{
|
41 |
+
$messages = $this->getMessageProcessor()->processEvents($events, $variableContainer);
|
42 |
+
|
43 |
+
if (count($messages) > 0) {
|
44 |
+
$messagesSentCount = $this->getEsendexApi()->sendMultipleMessages($messages);
|
45 |
+
|
46 |
+
Mage::dispatchEvent(
|
47 |
+
'esendex_sms_messages_sent',
|
48 |
+
array('messages' => $messages, 'message_count' => $messagesSentCount)
|
49 |
+
);
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
/**
|
54 |
+
* @param Varien_Event_Observer $e
|
55 |
+
*/
|
56 |
+
public function dispatchEvent(Varien_Event_Observer $e)
|
57 |
+
{
|
58 |
+
$triggerCode = $e->getEvent()->getName();
|
59 |
+
$events = $this->getEvents(Esendex_Sms_Model_Event::TRIGGER_TYPE_EVENT, $triggerCode);
|
60 |
+
|
61 |
+
$this->dispatch($events, $e);
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Dispatch For Cron Jobs
|
66 |
+
*/
|
67 |
+
public function dispatchCron(Mage_Cron_Model_Schedule $schedule)
|
68 |
+
{
|
69 |
+
$triggerCode = $schedule->getJobCode();
|
70 |
+
$events = $this->getEvents(Esendex_Sms_Model_Event::TRIGGER_TYPE_CRON, $triggerCode);
|
71 |
+
|
72 |
+
$this->dispatch($events);
|
73 |
+
}
|
74 |
+
|
75 |
+
/**
|
76 |
+
* @param string $triggerType
|
77 |
+
* @param string $triggerCode
|
78 |
+
*
|
79 |
+
* @return Esendex_Sms_Model_Resource_Event_Collection
|
80 |
+
*/
|
81 |
+
protected function getEvents($triggerType, $triggerCode)
|
82 |
+
{
|
83 |
+
$eventCollection = Mage::getModel('esendex_sms/event')
|
84 |
+
->getCollection()
|
85 |
+
->addTriggerFilter($triggerType, $triggerCode);
|
86 |
+
|
87 |
+
return $eventCollection;
|
88 |
+
}
|
89 |
+
|
90 |
+
/**
|
91 |
+
* @return Esendex_Sms_Model_MessageProcessor_MessageProcessor
|
92 |
+
*/
|
93 |
+
public function getMessageProcessor()
|
94 |
+
{
|
95 |
+
if (null === $this->messageProcessor) {
|
96 |
+
$this->messageProcessor = Esendex_Sms_Model_MessageProcessor_Factory::getInstance();
|
97 |
+
}
|
98 |
+
|
99 |
+
return $this->messageProcessor;
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* @return Esendex_Sms_Model_Api_Api
|
104 |
+
*/
|
105 |
+
public function getEsendexApi()
|
106 |
+
{
|
107 |
+
if (null === $this->esendexApi) {
|
108 |
+
$this->esendexApi = Esendex_Sms_Model_Api_Factory::getInstance();
|
109 |
+
}
|
110 |
+
|
111 |
+
return $this->esendexApi;
|
112 |
+
}
|
113 |
+
}
|
app/code/community/Esendex/Sms/Model/Resource/Event.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Resource_Event
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_Resource_Event extends Mage_Core_Model_Resource_Db_Abstract
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* Constructor
|
26 |
+
*/
|
27 |
+
public function _construct()
|
28 |
+
{
|
29 |
+
$this->_init('esendex_sms/event', 'entity_id');
|
30 |
+
}
|
31 |
+
}
|
app/code/community/Esendex/Sms/Model/Resource/Event/Collection.php
ADDED
@@ -0,0 +1,146 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Resource_Event_Collection
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_Resource_Event_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @var array
|
26 |
+
*/
|
27 |
+
protected $_joinedFields = [];
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Constructor
|
31 |
+
*/
|
32 |
+
protected function _construct()
|
33 |
+
{
|
34 |
+
parent::_construct();
|
35 |
+
$this->_init('esendex_sms/event');
|
36 |
+
|
37 |
+
// Enable caching for collection
|
38 |
+
$cache = Mage::app()->getCacheInstance();
|
39 |
+
$this->initCache($cache, 'esendex_sms_collection', array(Esendex_Sms_Model_Event::CACHE_TAG));
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Init collection select
|
44 |
+
*
|
45 |
+
* @return Mage_Core_Model_Resource_Db_Collection_Abstract
|
46 |
+
*/
|
47 |
+
protected function _initSelect()
|
48 |
+
{
|
49 |
+
$localeCode = Mage::app()->getLocale()->getLocaleCode();
|
50 |
+
$quotedLocaleCode = $this->getSelect()->getAdapter()->quote($localeCode);
|
51 |
+
|
52 |
+
$this->getSelect()
|
53 |
+
->from(array('main_table' => $this->getMainTable()))
|
54 |
+
->joinLeft(
|
55 |
+
[ 's' => $this->getTable('event_sample_message_template')],
|
56 |
+
'main_table.entity_id = s.event_id AND s.locale_code = ' . $quotedLocaleCode ,
|
57 |
+
['sample_message_template' => 's.message_template',]
|
58 |
+
);
|
59 |
+
|
60 |
+
return $this;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Get triggers as array
|
65 |
+
*
|
66 |
+
* @param string $valueField
|
67 |
+
* @param string $labelField
|
68 |
+
* @param array $additional
|
69 |
+
* @return array
|
70 |
+
*/
|
71 |
+
protected function _toOptionArray($valueField = 'entity_id', $labelField = 'name', $additional = [])
|
72 |
+
{
|
73 |
+
$data = parent::_toOptionArray($valueField, $labelField, array('order' => 'order'));
|
74 |
+
|
75 |
+
usort($data, function ($a, $b) {
|
76 |
+
return $a['order'] - $b['order'];
|
77 |
+
});
|
78 |
+
|
79 |
+
return array_map(
|
80 |
+
function (array $row) {
|
81 |
+
unset($row['order']);
|
82 |
+
return $row;
|
83 |
+
},
|
84 |
+
$data
|
85 |
+
);
|
86 |
+
}
|
87 |
+
|
88 |
+
/**
|
89 |
+
* Get options hash
|
90 |
+
*
|
91 |
+
* @param string $valueField
|
92 |
+
* @param string $labelField
|
93 |
+
* @return array
|
94 |
+
*/
|
95 |
+
protected function _toOptionHash($valueField = 'entity_id', $labelField = 'name')
|
96 |
+
{
|
97 |
+
return parent::_toOptionHash($valueField, $labelField);
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* @param $triggerType
|
102 |
+
* @param $triggerCode
|
103 |
+
* @return self
|
104 |
+
*/
|
105 |
+
public function addTriggerFilter($triggerType, $triggerCode)
|
106 |
+
{
|
107 |
+
$this->addFieldToFilter('trigger_type', $triggerType);
|
108 |
+
$this->addFieldToFilter('trigger_code', $triggerCode);
|
109 |
+
return $this;
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Restrict collection to only Mobile Sales Report triggers
|
114 |
+
*
|
115 |
+
* @return $this
|
116 |
+
*/
|
117 |
+
public function onlyMobileSalesReports()
|
118 |
+
{
|
119 |
+
$this->addFieldToFilter('name', array('eq' => 'Admin Sales Report'));
|
120 |
+
return $this;
|
121 |
+
}
|
122 |
+
|
123 |
+
/**
|
124 |
+
* Restrict collection show it does not show Mobile Sales Report triggers
|
125 |
+
*
|
126 |
+
* @return $this
|
127 |
+
*/
|
128 |
+
public function notMobileSalesReports()
|
129 |
+
{
|
130 |
+
$this->addFieldToFilter('name', array('neq' => 'Admin Sales Report'));
|
131 |
+
return $this;
|
132 |
+
}
|
133 |
+
|
134 |
+
/**
|
135 |
+
* Get SQL for get record count.
|
136 |
+
* Extra GROUP BY strip added.
|
137 |
+
*
|
138 |
+
* @return Varien_Db_Select
|
139 |
+
*/
|
140 |
+
public function getSelectCountSql()
|
141 |
+
{
|
142 |
+
$countSelect = parent::getSelectCountSql();
|
143 |
+
$countSelect->reset(Zend_Db_Select::GROUP);
|
144 |
+
return $countSelect;
|
145 |
+
}
|
146 |
+
}
|
app/code/community/Esendex/Sms/Model/Resource/SampleMessage.php
ADDED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Resource_Event
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_Resource_SampleMessage extends Mage_Core_Model_Resource_Db_Abstract
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* Constructor
|
26 |
+
*/
|
27 |
+
public function _construct()
|
28 |
+
{
|
29 |
+
$this->_init('esendex_sms/event_sample_message_template', 'entity_id');
|
30 |
+
}
|
31 |
+
}
|
app/code/community/Esendex/Sms/Model/Resource/SampleMessage/Collection.php
ADDED
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Resource_SampleMessage_Collection
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_Resource_SampleMessage_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
*
|
26 |
+
*/
|
27 |
+
protected function _construct()
|
28 |
+
{
|
29 |
+
parent::_construct();
|
30 |
+
$this->_init('esendex_sms/trigger');
|
31 |
+
}
|
32 |
+
|
33 |
+
/**
|
34 |
+
* @param int $eventId
|
35 |
+
*/
|
36 |
+
public function addEventFilter($eventId)
|
37 |
+
{
|
38 |
+
$this->addFieldToFilter('event_id', array('eq' => (int) $eventId));
|
39 |
+
}
|
40 |
+
}
|
app/code/community/Esendex/Sms/Model/Resource/Setup.php
ADDED
@@ -0,0 +1,211 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Resource_Setup
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* Remove an event using the entity_id
|
26 |
+
*
|
27 |
+
* @param int $id
|
28 |
+
* @return int
|
29 |
+
*/
|
30 |
+
public function removeEvent($id)
|
31 |
+
{
|
32 |
+
$result = $this->getConnection()->delete(
|
33 |
+
$this->getTable('esendex_sms/event'),
|
34 |
+
sprintf('entity_id = %s', $id)
|
35 |
+
);
|
36 |
+
|
37 |
+
//Flush Event Collection from Cache
|
38 |
+
Mage::app()->getCacheInstance()->clean(array(Esendex_Sms_Model_Event::CACHE_TAG));
|
39 |
+
|
40 |
+
return $result;
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Create a new SMS event
|
45 |
+
*
|
46 |
+
* @param string $name
|
47 |
+
* @param string $triggerType
|
48 |
+
* @param string $triggerCode
|
49 |
+
* @param int $order
|
50 |
+
* @param string|null $eventProcessorModel
|
51 |
+
* @param string|null $saveModel
|
52 |
+
*
|
53 |
+
* @internal param string $model
|
54 |
+
*/
|
55 |
+
public function addEvent($name, $triggerType, $triggerCode, $order, $eventProcessorModel = null, $saveModel = null)
|
56 |
+
{
|
57 |
+
if (!is_string($name)) {
|
58 |
+
throw new InvalidArgumentException(
|
59 |
+
sprintf(
|
60 |
+
'Invalid Name. Expected: "string", got: "%s"',
|
61 |
+
is_object($name) ? get_class($name) : gettype($name)
|
62 |
+
)
|
63 |
+
);
|
64 |
+
}
|
65 |
+
|
66 |
+
if (!is_string($triggerCode)) {
|
67 |
+
throw new InvalidArgumentException(
|
68 |
+
sprintf(
|
69 |
+
'Invalid Trigger Code. Expected: "string", got: "%s"',
|
70 |
+
is_object($triggerCode) ? get_class($triggerCode) : gettype($triggerCode)
|
71 |
+
)
|
72 |
+
);
|
73 |
+
}
|
74 |
+
|
75 |
+
if (!is_int($order)) {
|
76 |
+
throw new InvalidArgumentException(
|
77 |
+
sprintf(
|
78 |
+
'Invalid Order. Expected: "int", got: "%s"',
|
79 |
+
is_object($triggerCode) ? get_class($triggerCode) : gettype($triggerCode)
|
80 |
+
)
|
81 |
+
);
|
82 |
+
}
|
83 |
+
|
84 |
+
if ($saveModel !== null) {
|
85 |
+
//Check model exists
|
86 |
+
if (!Mage::getModel($saveModel)) {
|
87 |
+
throw new InvalidArgumentException(sprintf('Save Model: "%s" does not exist', $saveModel));
|
88 |
+
}
|
89 |
+
}
|
90 |
+
|
91 |
+
if ($eventProcessorModel !== null) {
|
92 |
+
//Check model exists
|
93 |
+
if (!Mage::getModel($eventProcessorModel)) {
|
94 |
+
throw new InvalidArgumentException(sprintf('Event Processor Model: "%s" does not exist', $eventProcessorModel));
|
95 |
+
}
|
96 |
+
}
|
97 |
+
|
98 |
+
//Check trigger type
|
99 |
+
if ($triggerType !== Esendex_Sms_Model_Event::TRIGGER_TYPE_EVENT
|
100 |
+
&& $triggerType !== Esendex_Sms_Model_Event::TRIGGER_TYPE_CRON
|
101 |
+
) {
|
102 |
+
throw new InvalidArgumentException(
|
103 |
+
sprintf(
|
104 |
+
'Invalid Trigger Type give: "%s", Accepted types are: "%s"',
|
105 |
+
$triggerType,
|
106 |
+
implode(
|
107 |
+
'", "',
|
108 |
+
array(
|
109 |
+
Esendex_Sms_Model_Event::TRIGGER_TYPE_EVENT,
|
110 |
+
Esendex_Sms_Model_Event::TRIGGER_TYPE_CRON
|
111 |
+
)
|
112 |
+
)
|
113 |
+
)
|
114 |
+
);
|
115 |
+
}
|
116 |
+
|
117 |
+
$this->getConnection()->insert($this->getTable('esendex_sms/event'), array(
|
118 |
+
'save_model' => $saveModel,
|
119 |
+
'event_processor' => $eventProcessorModel,
|
120 |
+
'name' => $name,
|
121 |
+
'trigger_type' => $triggerType,
|
122 |
+
'trigger_code' => $triggerCode,
|
123 |
+
'order' => $order,
|
124 |
+
));
|
125 |
+
|
126 |
+
// Flush Event Collection from Cache
|
127 |
+
Mage::app()->getCacheInstance()->clean(array(Esendex_Sms_Model_Event::CACHE_TAG));
|
128 |
+
|
129 |
+
//Return the ID of the newly created Event
|
130 |
+
return $this->getConnection()->lastInsertId();
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* Add a sample message to a particular event for a particular Locale.
|
135 |
+
*
|
136 |
+
* Eg: addSampleMessage(1, 'en_US', 'Hey $NAME$ - Your Order has shipped!'
|
137 |
+
*
|
138 |
+
* @param $eventIdOrName $eventId
|
139 |
+
* @param string $localeCode
|
140 |
+
* @param string $message
|
141 |
+
*/
|
142 |
+
public function addSampleMessage($eventIdOrName, $localeCode, $message)
|
143 |
+
{
|
144 |
+
|
145 |
+
if (!is_int($eventIdOrName) && !is_string($eventIdOrName)) {
|
146 |
+
throw new InvalidArgumentException(
|
147 |
+
sprintf(
|
148 |
+
'Invalid Event ID. Expected: string or int, got: "%s"',
|
149 |
+
is_object($eventIdOrName) ? get_class($eventIdOrName) : gettype($eventIdOrName)
|
150 |
+
)
|
151 |
+
);
|
152 |
+
}
|
153 |
+
|
154 |
+
if (!is_string($localeCode)) {
|
155 |
+
throw new InvalidArgumentException(
|
156 |
+
sprintf(
|
157 |
+
'Invalid Locale. Expected: "%s", got: "%s"',
|
158 |
+
is_object($localeCode) ? get_class($localeCode) : gettype($localeCode)
|
159 |
+
)
|
160 |
+
);
|
161 |
+
}
|
162 |
+
|
163 |
+
$locales = Zend_Locale::getLocaleList();
|
164 |
+
if (!isset($locales[$localeCode])) {
|
165 |
+
throw new InvalidArgumentException(
|
166 |
+
sprintf('Invalid Locale. "%s" is not a valid Locale', $localeCode)
|
167 |
+
);
|
168 |
+
}
|
169 |
+
|
170 |
+
if (!is_string($message)) {
|
171 |
+
throw new InvalidArgumentException(
|
172 |
+
sprintf(
|
173 |
+
'Invalid Message Template. Expected: "%s", got: "%s"',
|
174 |
+
is_object($message) ? get_class($message) : gettype($message)
|
175 |
+
)
|
176 |
+
);
|
177 |
+
}
|
178 |
+
|
179 |
+
$eventId = $eventIdOrName;
|
180 |
+
if (!is_int($eventIdOrName)) {
|
181 |
+
$event = $this->loadEvent($eventIdOrName);
|
182 |
+
if (!is_array($event)) {
|
183 |
+
throw new \InvalidArgumentException(sprintf('Cannot find event with name: "%s"', $eventIdOrName));
|
184 |
+
}
|
185 |
+
$eventId = $event['entity_id'];
|
186 |
+
}
|
187 |
+
|
188 |
+
$this->getConnection()->insert($this->getTable('esendex_sms/event_sample_message_template'), array(
|
189 |
+
'event_id' => $eventId,
|
190 |
+
'locale_code' => $localeCode,
|
191 |
+
'message_template' => $message,
|
192 |
+
));
|
193 |
+
|
194 |
+
//Flush Event Collection from Cache
|
195 |
+
Mage::app()->getCacheInstance()->clean(array(Esendex_Sms_Model_Event::CACHE_TAG));
|
196 |
+
}
|
197 |
+
|
198 |
+
/**
|
199 |
+
* @param string $eventName
|
200 |
+
*
|
201 |
+
* @return array
|
202 |
+
*/
|
203 |
+
public function loadEvent($eventName)
|
204 |
+
{
|
205 |
+
$select = $this->getConnection()->select()
|
206 |
+
->from(array('e' => $this->getTable('esendex_sms/event')))
|
207 |
+
->where('e.name = ?', $eventName);
|
208 |
+
|
209 |
+
return $this->getConnection()->fetchRow($select);
|
210 |
+
}
|
211 |
+
}
|
app/code/community/Esendex/Sms/Model/Resource/Trigger.php
ADDED
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Resource_Trigger
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
final class Esendex_Sms_Model_Resource_Trigger extends Esendex_Sms_Model_Resource_TriggerAbstract
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @param null $eventId
|
26 |
+
*
|
27 |
+
* @return false|Mage_Core_Model_Abstract
|
28 |
+
*/
|
29 |
+
public function getTriggerModel($eventId = null)
|
30 |
+
{
|
31 |
+
$saveModel = static::DEFAULT_MODEL;
|
32 |
+
|
33 |
+
if (null === $eventId) {
|
34 |
+
return Mage::getModel($saveModel);
|
35 |
+
}
|
36 |
+
|
37 |
+
//$event = Mage::getModel('esendex_sms/event')->load($eventId);
|
38 |
+
|
39 |
+
$select = $this->_getReadAdapter()->select()
|
40 |
+
->from($this->getTable('esendex_sms/event'), ['save_model'])
|
41 |
+
->where('entity_id =?', $eventId);
|
42 |
+
|
43 |
+
$customSaveModel = $this->_getReadAdapter()->fetchOne($select);
|
44 |
+
|
45 |
+
//if there is no save_model specified we use the default model
|
46 |
+
if ($customSaveModel) {
|
47 |
+
$saveModel = $customSaveModel;
|
48 |
+
}
|
49 |
+
|
50 |
+
if (!$trigger = Mage::getModel($saveModel)) {
|
51 |
+
throw new \RuntimeException(sprintf('Save Model: "%s" not found', $saveModel));
|
52 |
+
}
|
53 |
+
|
54 |
+
return $trigger;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* @param int $triggerId
|
59 |
+
*
|
60 |
+
* @return string
|
61 |
+
*/
|
62 |
+
public function getEventIdByTriggerId($triggerId)
|
63 |
+
{
|
64 |
+
$read = $this->_getReadAdapter();
|
65 |
+
$field = $this->getIdFieldName();
|
66 |
+
$fieldColumn = $read
|
67 |
+
->quoteIdentifier(sprintf('%s.%s', $this->getMainTable(), $field));
|
68 |
+
|
69 |
+
$select = $this->_getReadAdapter()->select()
|
70 |
+
->from($this->getMainTable(), ['event_id'])
|
71 |
+
->where($fieldColumn . '=?', $triggerId);
|
72 |
+
|
73 |
+
//get the event id using this trigger ID
|
74 |
+
$eventId = $read->fetchOne($select);
|
75 |
+
return $eventId;
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Load an object
|
80 |
+
*
|
81 |
+
* @param Mage_Core_Model_Abstract $object
|
82 |
+
* @param mixed $value
|
83 |
+
* @param string $field field to load by (defaults to model id)
|
84 |
+
* @return Mage_Core_Model_Resource_Db_Abstract
|
85 |
+
*/
|
86 |
+
public function load(Mage_Core_Model_Abstract $object, $value, $field = null)
|
87 |
+
{
|
88 |
+
if (is_null($field) || $field === $this->getIdFieldName()) {
|
89 |
+
|
90 |
+
$eventId = $this->getEventIdByTriggerId($value);
|
91 |
+
$trigger = $this->getTriggerModel($eventId);
|
92 |
+
|
93 |
+
if ($trigger instanceof Esendex_Sms_Model_Trigger) {
|
94 |
+
parent::load($object, $value, $field);
|
95 |
+
return $object;
|
96 |
+
}
|
97 |
+
|
98 |
+
return $trigger->load($value, $field);
|
99 |
+
}
|
100 |
+
|
101 |
+
return parent::load($object, $value, $field);
|
102 |
+
}
|
103 |
+
}
|
app/code/community/Esendex/Sms/Model/Resource/Trigger/Collection.php
ADDED
@@ -0,0 +1,171 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Resource_Trigger_Collection
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_Resource_Trigger_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @var array
|
27 |
+
*/
|
28 |
+
protected $_joinedFields = [];
|
29 |
+
|
30 |
+
/**
|
31 |
+
*
|
32 |
+
*/
|
33 |
+
protected function _construct()
|
34 |
+
{
|
35 |
+
parent::_construct();
|
36 |
+
$this->_init('esendex_sms/trigger');
|
37 |
+
$this->_map['fields']['store'] = 'store_table.store_id';
|
38 |
+
}
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Add filter by store
|
42 |
+
* @param int|Mage_Core_Model_Store $store
|
43 |
+
* @param bool $withAdmin
|
44 |
+
* @return self
|
45 |
+
*
|
46 |
+
*/
|
47 |
+
public function addStoreFilter($store, $withAdmin = true)
|
48 |
+
{
|
49 |
+
if (!isset($this->_joinedFields['store'])) {
|
50 |
+
if ($store instanceof Mage_Core_Model_Store) {
|
51 |
+
$store = [$store->getId()];
|
52 |
+
}
|
53 |
+
if (!is_array($store)) {
|
54 |
+
$store = [$store];
|
55 |
+
}
|
56 |
+
if ($withAdmin) {
|
57 |
+
$store[] = Mage_Core_Model_App::ADMIN_STORE_ID;
|
58 |
+
}
|
59 |
+
$this->addFilter('store', ['in' => $store], 'public');
|
60 |
+
$this->_joinedFields['store'] = true;
|
61 |
+
}
|
62 |
+
return $this;
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Join Events table
|
67 |
+
*
|
68 |
+
* @return self
|
69 |
+
*/
|
70 |
+
public function addEvents()
|
71 |
+
{
|
72 |
+
$this->join(
|
73 |
+
[ 'e' => 'event'],
|
74 |
+
'main_table.event_id = e.entity_id',
|
75 |
+
[
|
76 |
+
'name' => 'e.name'
|
77 |
+
]
|
78 |
+
);
|
79 |
+
|
80 |
+
return $this;
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* @return self
|
85 |
+
*/
|
86 |
+
public function addStatusEnabledFilter()
|
87 |
+
{
|
88 |
+
$this->addFilter('status', array('eq' => 1));
|
89 |
+
return $this;
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* @param int $eventId
|
94 |
+
* @return self
|
95 |
+
*/
|
96 |
+
public function addEventIdFilter($eventId)
|
97 |
+
{
|
98 |
+
$this->addFilter('event_id', array('eq' => (int) $eventId));
|
99 |
+
return $this;
|
100 |
+
}
|
101 |
+
|
102 |
+
/**
|
103 |
+
* Restrict collection to only Mobile Sales Report triggers
|
104 |
+
*
|
105 |
+
* @return $this
|
106 |
+
*/
|
107 |
+
public function onlyMobileSalesReports()
|
108 |
+
{
|
109 |
+
$select = $this->getConnection()
|
110 |
+
->select()
|
111 |
+
->from($this->getTable('esendex_sms/event'), array('entity_id'))
|
112 |
+
->where('name = ?', 'Admin Sales Report');
|
113 |
+
|
114 |
+
$mobileSalesReportEventId = $this->getConnection()->fetchOne($select);
|
115 |
+
|
116 |
+
$this->addFieldToFilter('event_id', array('eq' => (int) $mobileSalesReportEventId));
|
117 |
+
return $this;
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Restrict collection show it does not show Mobile Sales Report triggers
|
122 |
+
*
|
123 |
+
* @return $this
|
124 |
+
*/
|
125 |
+
public function notMobileSalesReports()
|
126 |
+
{
|
127 |
+
$select = $this->getConnection()
|
128 |
+
->select()
|
129 |
+
->from($this->getTable('esendex_sms/event'), array('entity_id'))
|
130 |
+
->where('name = ?', 'Admin Sales Report');
|
131 |
+
|
132 |
+
$mobileSalesReportEventId = $this->getConnection()->fetchOne($select);
|
133 |
+
|
134 |
+
$this->addFieldToFilter('event_id', array('neq' => (int) $mobileSalesReportEventId));
|
135 |
+
return $this;
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Join store relation table if there is store filter
|
140 |
+
*
|
141 |
+
* @return self
|
142 |
+
*/
|
143 |
+
protected function _renderFiltersBefore()
|
144 |
+
{
|
145 |
+
if ($this->getFilter('store')) {
|
146 |
+
$this->getSelect()->join(
|
147 |
+
['store_table' => $this->getTable('esendex_sms/trigger_store')],
|
148 |
+
'main_table.entity_id = store_table.trigger_id',
|
149 |
+
[]
|
150 |
+
)->group('main_table.entity_id');
|
151 |
+
/*
|
152 |
+
* Allow analytic functions usage because of one field grouping
|
153 |
+
*/
|
154 |
+
$this->_useAnalyticFunction = true;
|
155 |
+
}
|
156 |
+
return parent::_renderFiltersBefore();
|
157 |
+
}
|
158 |
+
|
159 |
+
/**
|
160 |
+
* Get SQL for get record count.
|
161 |
+
* Extra GROUP BY strip added.
|
162 |
+
*
|
163 |
+
* @return Varien_Db_Select
|
164 |
+
*/
|
165 |
+
public function getSelectCountSql()
|
166 |
+
{
|
167 |
+
$countSelect = parent::getSelectCountSql();
|
168 |
+
$countSelect->reset(Zend_Db_Select::GROUP);
|
169 |
+
return $countSelect;
|
170 |
+
}
|
171 |
+
}
|
app/code/community/Esendex/Sms/Model/Resource/TriggerAbstract.php
ADDED
@@ -0,0 +1,127 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Resource_Trigger
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
abstract class Esendex_Sms_Model_Resource_TriggerAbstract extends Mage_Core_Model_Resource_Db_Abstract
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* Default Model to use for triggers
|
26 |
+
*/
|
27 |
+
const DEFAULT_MODEL = 'esendex_sms/trigger';
|
28 |
+
|
29 |
+
/**
|
30 |
+
* Constructor
|
31 |
+
*/
|
32 |
+
public function _construct()
|
33 |
+
{
|
34 |
+
$this->_init('esendex_sms/trigger', 'entity_id');
|
35 |
+
}
|
36 |
+
|
37 |
+
/**
|
38 |
+
* Get store ids to which specified item is assigned
|
39 |
+
*
|
40 |
+
* @param int $triggerId
|
41 |
+
* @return array
|
42 |
+
*/
|
43 |
+
public function lookupStoreIds($triggerId)
|
44 |
+
{
|
45 |
+
$adapter = $this->_getReadAdapter();
|
46 |
+
$select = $adapter->select()
|
47 |
+
->from($this->getTable('esendex_sms/trigger_store'), 'store_id')
|
48 |
+
->where('trigger_id = ?',(int) $triggerId);
|
49 |
+
return $adapter->fetchCol($select);
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @param Mage_Core_Model_Abstract $object
|
54 |
+
* @return self
|
55 |
+
*/
|
56 |
+
protected function _afterLoad(Mage_Core_Model_Abstract $object)
|
57 |
+
{
|
58 |
+
if ($object->getId()) {
|
59 |
+
//get stores
|
60 |
+
$stores = $this->lookupStoreIds($object->getId());
|
61 |
+
$object->setData('store_id', $stores);
|
62 |
+
}
|
63 |
+
return parent::_afterLoad($object);
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Retrieve select object for load object data
|
68 |
+
*
|
69 |
+
* @param string $field
|
70 |
+
* @param mixed $value
|
71 |
+
* @param Esendex_Sms_Model_Trigger $object
|
72 |
+
* @return Zend_Db_Select
|
73 |
+
*/
|
74 |
+
protected function _getLoadSelect($field, $value, $object)
|
75 |
+
{
|
76 |
+
$select = parent::_getLoadSelect($field, $value, $object);
|
77 |
+
if ($object->getStoreId()) {
|
78 |
+
$storeIds = [Mage_Core_Model_App::ADMIN_STORE_ID, (int)$object->getStoreId()];
|
79 |
+
$select->join(
|
80 |
+
['sms_trigger_store' => $this->getTable('esendex_sms/trigger_store')],
|
81 |
+
$this->getMainTable() . '.entity_id = sms_trigger_store.trigger_id',
|
82 |
+
[]
|
83 |
+
)
|
84 |
+
->where('sms_trigger_store.store_id IN (?)', $storeIds)
|
85 |
+
->order('sms_trigger_store.store_id DESC')
|
86 |
+
->limit(1);
|
87 |
+
}
|
88 |
+
|
89 |
+
return $select;
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* Assign trigger to store views
|
94 |
+
*
|
95 |
+
* @param Mage_Core_Model_Abstract $object
|
96 |
+
* @return self
|
97 |
+
*/
|
98 |
+
protected function _afterSave(Mage_Core_Model_Abstract $object)
|
99 |
+
{
|
100 |
+
$oldStores = $this->lookupStoreIds($object->getId());
|
101 |
+
$newStores = (array)$object->getStores();
|
102 |
+
if (empty($newStores)) {
|
103 |
+
$newStores = (array)$object->getStoreId();
|
104 |
+
}
|
105 |
+
$table = $this->getTable('esendex_sms/trigger_store');
|
106 |
+
$insert = array_diff($newStores, $oldStores);
|
107 |
+
$delete = array_diff($oldStores, $newStores);
|
108 |
+
if (count($delete)) {
|
109 |
+
$where = [
|
110 |
+
'trigger_id = ?' => (int) $object->getId(),
|
111 |
+
'store_id IN (?)' => $delete
|
112 |
+
];
|
113 |
+
$this->_getWriteAdapter()->delete($table, $where);
|
114 |
+
}
|
115 |
+
if (count($insert)) {
|
116 |
+
$data = [];
|
117 |
+
foreach ($insert as $storeId) {
|
118 |
+
$data[] = [
|
119 |
+
'trigger_id' => (int) $object->getId(),
|
120 |
+
'store_id' => (int) $storeId
|
121 |
+
];
|
122 |
+
}
|
123 |
+
$this->_getWriteAdapter()->insertMultiple($table, $data);
|
124 |
+
}
|
125 |
+
return parent::_afterSave($object);
|
126 |
+
}
|
127 |
+
}
|
app/code/community/Esendex/Sms/Model/SampleMessage.php
ADDED
@@ -0,0 +1,49 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_SampleMessage
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_SampleMessage extends Mage_Core_Model_Abstract
|
23 |
+
{
|
24 |
+
const ENTITY = 'esendex_sms_sample_message';
|
25 |
+
const CACHE_TAG = 'esendex_sms_sample_message';
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Prefix of model events names
|
29 |
+
*
|
30 |
+
* @var string
|
31 |
+
*/
|
32 |
+
protected $_eventPrefix = 'esendex_sms_sample_message';
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Parameter name in event
|
36 |
+
*
|
37 |
+
* @var string
|
38 |
+
*/
|
39 |
+
protected $_eventObject = 'sample_message';
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Constructor
|
43 |
+
*/
|
44 |
+
public function _construct()
|
45 |
+
{
|
46 |
+
parent::_construct();
|
47 |
+
$this->_init('esendex_sms/sampleMessage');
|
48 |
+
}
|
49 |
+
}
|
app/code/community/Esendex/Sms/Model/SentMessages.php
ADDED
@@ -0,0 +1,155 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Esendex\Http\HttpException;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Class Esendex_Sms_Model_SentMessages
|
22 |
+
*
|
23 |
+
* @author Michael Woodward <michael@wearejh.com>
|
24 |
+
*/
|
25 |
+
class Esendex_Sms_Model_SentMessages extends Varien_Data_Collection
|
26 |
+
{
|
27 |
+
/**
|
28 |
+
* @var Esendex_Sms_Model_Api_Api
|
29 |
+
*/
|
30 |
+
private $esendexApi = null;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* @return Esendex_Sms_Model_Api_Api
|
34 |
+
*/
|
35 |
+
public function getEsendexApi()
|
36 |
+
{
|
37 |
+
if (!$this->esendexApi) {
|
38 |
+
$this->esendexApi = Esendex_Sms_Model_Api_Factory::getInstance();
|
39 |
+
}
|
40 |
+
return $this->esendexApi;
|
41 |
+
}
|
42 |
+
|
43 |
+
/**
|
44 |
+
* @param Esendex_Sms_Model_Api_Api $esendexApi
|
45 |
+
*/
|
46 |
+
public function setEsendexApi(Esendex_Sms_Model_Api_Api $esendexApi)
|
47 |
+
{
|
48 |
+
$this->esendexApi = $esendexApi;
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Get Collection Data from API
|
53 |
+
*
|
54 |
+
* @param bool $printQuery
|
55 |
+
* @param bool $logQuery
|
56 |
+
* @return $this
|
57 |
+
* @throws Exception
|
58 |
+
*/
|
59 |
+
public function loadData($printQuery = false, $logQuery = false)
|
60 |
+
{
|
61 |
+
if (!$this->isLoaded()) {
|
62 |
+
try {
|
63 |
+
// First make an empty API call to get totalSize
|
64 |
+
$this->_totalRecords = $this->getEsendexApi()->getSentMessages(0, 0)->totalCount();
|
65 |
+
|
66 |
+
/**
|
67 |
+
* @var Esendex\Model\SentMessagesPage
|
68 |
+
*/
|
69 |
+
$messages = $this->getEsendexApi()->getSentMessages(
|
70 |
+
($this->getCurPage() -1) * $this->getPageSize(),
|
71 |
+
$this->getPageSize()
|
72 |
+
);
|
73 |
+
} catch (HttpException $e) {
|
74 |
+
throw $e;
|
75 |
+
}
|
76 |
+
|
77 |
+
foreach ($messages as $message) {
|
78 |
+
$messageObj = new Varien_Object();
|
79 |
+
|
80 |
+
$submittedAt = $message->submittedAt() instanceof \DateTime
|
81 |
+
? $message->submittedAt()->format('d/m/Y - H:i:s')
|
82 |
+
: 'Not submitted';
|
83 |
+
|
84 |
+
$lastStatusAt = $message->lastStatusAt() instanceof \DateTime
|
85 |
+
? $message->lastStatusAt()->format('d/m/Y - H:i:s')
|
86 |
+
: 'No updates';
|
87 |
+
|
88 |
+
$sentAt = $message->sentAt() instanceof \DateTime
|
89 |
+
? $message->sentAt()->format('d/m/Y - H:i:s')
|
90 |
+
: 'Not sent';
|
91 |
+
|
92 |
+
$deliveredAt = $message->deliveredAt() instanceof \DateTime
|
93 |
+
? $message->deliveredAt()->format('d/m/Y - H:i:s')
|
94 |
+
: 'Not delivered';
|
95 |
+
|
96 |
+
$messageObj->setData([
|
97 |
+
"type" => $message->type(),
|
98 |
+
"originator" => $message->originator(),
|
99 |
+
"recipient" => $message->recipient(),
|
100 |
+
"summary" => $message->summary(),
|
101 |
+
"status" => $message->status(),
|
102 |
+
"submittedAt" => $submittedAt,
|
103 |
+
"lastStatusAt" => $lastStatusAt,
|
104 |
+
"sentAt" => $sentAt,
|
105 |
+
"deliveredAt" => $deliveredAt
|
106 |
+
]);
|
107 |
+
|
108 |
+
$this->addItem($messageObj);
|
109 |
+
}
|
110 |
+
|
111 |
+
$this->_setIsLoaded();
|
112 |
+
}
|
113 |
+
|
114 |
+
return $this;
|
115 |
+
}
|
116 |
+
|
117 |
+
/**
|
118 |
+
* Get the set size from API call
|
119 |
+
* Override because we don't want an infinite loop by calling load()
|
120 |
+
*
|
121 |
+
* @return int
|
122 |
+
*/
|
123 |
+
public function getSize()
|
124 |
+
{
|
125 |
+
return $this->_totalRecords;
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Set page size
|
130 |
+
* Change loaded flag to false
|
131 |
+
*
|
132 |
+
* @param int $size
|
133 |
+
* @return $this
|
134 |
+
*/
|
135 |
+
public function setPageSize($size)
|
136 |
+
{
|
137 |
+
parent::setPageSize($size);
|
138 |
+
$this->_setIsLoaded(false);
|
139 |
+
return $this;
|
140 |
+
}
|
141 |
+
|
142 |
+
/**
|
143 |
+
* Set the current page
|
144 |
+
* Change loaded flag to false
|
145 |
+
*
|
146 |
+
* @param int $page
|
147 |
+
* @return $this
|
148 |
+
*/
|
149 |
+
public function setCurPage($page)
|
150 |
+
{
|
151 |
+
parent::setCurPage($page);
|
152 |
+
$this->_setIsLoaded(false);
|
153 |
+
return $this;
|
154 |
+
}
|
155 |
+
}
|
app/code/community/Esendex/Sms/Model/Trigger.php
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Trigger
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
final class Esendex_Sms_Model_Trigger extends Esendex_Sms_Model_TriggerAbstract
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* Delete trigger using correct model
|
26 |
+
*
|
27 |
+
* @return self
|
28 |
+
*/
|
29 |
+
public function delete()
|
30 |
+
{
|
31 |
+
$triggerId = $this->getId();
|
32 |
+
$eventId = $this->getResource()->getEventIdByTriggerId($triggerId);
|
33 |
+
$trigger = $this->getResource()->getTriggerModel($eventId);
|
34 |
+
|
35 |
+
$trigger->setId($triggerId);
|
36 |
+
if ($trigger instanceof Esendex_Sms_Model_Trigger) {
|
37 |
+
parent::delete();
|
38 |
+
} else {
|
39 |
+
$trigger->delete();
|
40 |
+
}
|
41 |
+
|
42 |
+
return $this;
|
43 |
+
}
|
44 |
+
}
|
app/code/community/Esendex/Sms/Model/TriggerAbstract.php
ADDED
@@ -0,0 +1,169 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Trigger
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
abstract class Esendex_Sms_Model_TriggerAbstract
|
23 |
+
extends Mage_Core_Model_Abstract
|
24 |
+
implements Esendex_Sms_Model_ValidatableInterface
|
25 |
+
{
|
26 |
+
const ENTITY = 'esendex_sms_trigger';
|
27 |
+
const CACHE_TAG = 'esendex_sms_trigger';
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @var array
|
31 |
+
*/
|
32 |
+
protected $errors = [];
|
33 |
+
|
34 |
+
/**
|
35 |
+
* Prefix of model events names
|
36 |
+
*
|
37 |
+
* @var string
|
38 |
+
*/
|
39 |
+
protected $_eventPrefix = 'esendex_sms_trigger';
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Parameter name in event
|
43 |
+
*
|
44 |
+
* @var string
|
45 |
+
*/
|
46 |
+
protected $_eventObject = 'trigger';
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @var Esendex_Sms_Model_Event|null
|
50 |
+
*/
|
51 |
+
protected $event;
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Constructor
|
55 |
+
*/
|
56 |
+
public function _construct()
|
57 |
+
{
|
58 |
+
parent::_construct();
|
59 |
+
$this->_init('esendex_sms/trigger');
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @return self
|
64 |
+
*/
|
65 |
+
protected function _beforeSave()
|
66 |
+
{
|
67 |
+
parent::_beforeSave();
|
68 |
+
$now = Mage::getSingleton('core/date')->gmtDate();
|
69 |
+
if ($this->isObjectNew()) {
|
70 |
+
$this->setCreatedAt($now);
|
71 |
+
}
|
72 |
+
$this->setUpdatedAt($now);
|
73 |
+
return $this;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* @return self
|
78 |
+
*/
|
79 |
+
protected function _afterSave()
|
80 |
+
{
|
81 |
+
return parent::_afterSave();
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Load the Event for this trigger
|
86 |
+
*/
|
87 |
+
protected function _afterLoad()
|
88 |
+
{
|
89 |
+
$event = Mage::getModel('esendex_sms/event')->load($this->getEventId());
|
90 |
+
$this->setData('event', $event);
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* @return array
|
95 |
+
*/
|
96 |
+
public function getDefaultValues()
|
97 |
+
{
|
98 |
+
$values = [
|
99 |
+
'status' => 1,
|
100 |
+
];
|
101 |
+
return $values;
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* @return Esendex_Sms_Model_Event|null
|
106 |
+
*/
|
107 |
+
public function getEvent()
|
108 |
+
{
|
109 |
+
if (!$this->event && $this->getData('event_id')) {
|
110 |
+
$this->event = Mage::getModel('esendex_sms/event')->load($this->getData('event_id'));
|
111 |
+
}
|
112 |
+
|
113 |
+
return $this->event;
|
114 |
+
}
|
115 |
+
|
116 |
+
/**
|
117 |
+
* Filter & validate data. SOC anyone?
|
118 |
+
*/
|
119 |
+
public function validate()
|
120 |
+
{
|
121 |
+
if ($this->getEvent()) {
|
122 |
+
$eventModel = $this->getEvent()->getEventProcessor();
|
123 |
+
|
124 |
+
$vars = array_map(function (Esendex_Sms_Model_Variable $var) {
|
125 |
+
return $var->getReplaceName();
|
126 |
+
}, $eventModel->getVariables());
|
127 |
+
|
128 |
+
$res = preg_match_all(
|
129 |
+
'/\$[a-zA-Z]+[a-zA-Z\d_]*\$/m',
|
130 |
+
$this->getData('message_template'),
|
131 |
+
$matches
|
132 |
+
);
|
133 |
+
|
134 |
+
if ($res) {
|
135 |
+
foreach ($matches[0] as $placeHolder) {
|
136 |
+
if (!in_array($placeHolder, $vars)) {
|
137 |
+
$this->addError(sprintf('"%s" is not an available variable', $placeHolder));
|
138 |
+
}
|
139 |
+
}
|
140 |
+
}
|
141 |
+
}
|
142 |
+
|
143 |
+
return !$this->hasErrors();
|
144 |
+
}
|
145 |
+
|
146 |
+
/**
|
147 |
+
* @param string $error
|
148 |
+
*/
|
149 |
+
public function addError($error)
|
150 |
+
{
|
151 |
+
$this->errors[] = Mage::helper('esendex_sms')->__($error);
|
152 |
+
}
|
153 |
+
|
154 |
+
/**
|
155 |
+
* @return array
|
156 |
+
*/
|
157 |
+
public function getErrors()
|
158 |
+
{
|
159 |
+
return $this->errors;
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* @return int
|
164 |
+
*/
|
165 |
+
public function hasErrors()
|
166 |
+
{
|
167 |
+
return count($this->errors) > 0;
|
168 |
+
}
|
169 |
+
}
|
app/code/community/Esendex/Sms/Model/ValidatableInterface.php
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Interface ValidatableInterface
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
interface Esendex_Sms_Model_ValidatableInterface
|
23 |
+
{
|
24 |
+
/**
|
25 |
+
* @return bool
|
26 |
+
*/
|
27 |
+
public function validate();
|
28 |
+
|
29 |
+
/**
|
30 |
+
* @param string $error
|
31 |
+
*/
|
32 |
+
public function addError($error);
|
33 |
+
|
34 |
+
/**
|
35 |
+
* @return array
|
36 |
+
*/
|
37 |
+
public function getErrors();
|
38 |
+
}
|
app/code/community/Esendex/Sms/Model/Variable.php
ADDED
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Model_Variable
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Model_Variable
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @var string
|
27 |
+
*/
|
28 |
+
const VAR_NAME_REGEX = '/^[a-zA-Z]+[a-zA-Z\d_]*$/';
|
29 |
+
|
30 |
+
/**
|
31 |
+
* Regex for validating variable path parts
|
32 |
+
*/
|
33 |
+
const VAR_PATH_PART_REGEX = '/^[a-zA-Z]+[a-zA-Z\d_]*$/';
|
34 |
+
|
35 |
+
/**
|
36 |
+
* @var string
|
37 |
+
*/
|
38 |
+
protected $name;
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @var string
|
42 |
+
*/
|
43 |
+
protected $path;
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @param string $variablePath
|
47 |
+
* @return bool|array
|
48 |
+
*/
|
49 |
+
public static function validateVariablePath($variablePath)
|
50 |
+
{
|
51 |
+
$parts = explode("::", $variablePath);
|
52 |
+
|
53 |
+
foreach ($parts as $part) {
|
54 |
+
if (!preg_match(static::VAR_PATH_PART_REGEX, $part)) {
|
55 |
+
return false;
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
return true;
|
60 |
+
}
|
61 |
+
|
62 |
+
/**
|
63 |
+
* @param string $name
|
64 |
+
* @param string $path
|
65 |
+
*/
|
66 |
+
public function __construct($name, $path)
|
67 |
+
{
|
68 |
+
if (!is_string($name)) {
|
69 |
+
throw new \InvalidArgumentException(
|
70 |
+
sprintf('Name should be a string. Given: "%s"', is_object($name) ? get_class($name) : gettype($name))
|
71 |
+
);
|
72 |
+
}
|
73 |
+
|
74 |
+
if (!is_string($path)) {
|
75 |
+
throw new \InvalidArgumentException(
|
76 |
+
sprintf('Path should be a string. Given: "%s"', is_object($path) ? get_class($path) : gettype($path))
|
77 |
+
);
|
78 |
+
}
|
79 |
+
|
80 |
+
if (!static::validateVariablePath($path)) {
|
81 |
+
throw new \InvalidArgumentException(
|
82 |
+
sprintf('Variable path should be in format: "obj::var::var". Given: "%s"', $path)
|
83 |
+
);
|
84 |
+
}
|
85 |
+
|
86 |
+
if (!preg_match(static::VAR_NAME_REGEX, $name)) {
|
87 |
+
throw new \InvalidArgumentException(
|
88 |
+
sprintf('Name should be in format: "%s"', static::VAR_NAME_REGEX)
|
89 |
+
);
|
90 |
+
}
|
91 |
+
|
92 |
+
$this->name = $name;
|
93 |
+
$this->path = $path;
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* @return string
|
98 |
+
*/
|
99 |
+
public function getReplaceName()
|
100 |
+
{
|
101 |
+
return '$' . strtoupper($this->name) . '$';
|
102 |
+
}
|
103 |
+
|
104 |
+
/**
|
105 |
+
* @return string
|
106 |
+
*/
|
107 |
+
public function getPath()
|
108 |
+
{
|
109 |
+
return $this->path;
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Get the path as an array of parts
|
114 |
+
*
|
115 |
+
* @return array
|
116 |
+
*/
|
117 |
+
public function getPathParts()
|
118 |
+
{
|
119 |
+
return explode("::", $this->path);
|
120 |
+
}
|
121 |
+
}
|
app/code/community/Esendex/Sms/controllers/Adminhtml/Sms/MessagesController.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
use Esendex\Http\HttpException;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Class Esendex_Sms_Adminhtml_Sms_MessagesController
|
22 |
+
*
|
23 |
+
* @author Michael Woodward <michael@wearejh.com>
|
24 |
+
*/
|
25 |
+
class Esendex_Sms_Adminhtml_Sms_MessagesController extends Mage_Adminhtml_Controller_Action
|
26 |
+
{
|
27 |
+
/**
|
28 |
+
* Index action
|
29 |
+
*/
|
30 |
+
public function indexAction()
|
31 |
+
{
|
32 |
+
$this->loadLayout();
|
33 |
+
$this->_title(Mage::helper('esendex_sms')->__('Esendex'))
|
34 |
+
->_title(Mage::helper('esendex_sms')->__('Sent Messages'));
|
35 |
+
try {
|
36 |
+
$this->renderLayout();
|
37 |
+
} catch (HttpException $e) {
|
38 |
+
Mage::getSingleton('adminhtml/session')->addError(
|
39 |
+
'Error getting sent messages, please check your credentials'
|
40 |
+
);
|
41 |
+
$this->_redirect('adminhtml/system_config/edit/section/esendex_sms');
|
42 |
+
}
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Grid action
|
47 |
+
*/
|
48 |
+
public function gridAction()
|
49 |
+
{
|
50 |
+
try {
|
51 |
+
$this->loadLayout()->renderLayout();
|
52 |
+
} catch (HttpException $e) {
|
53 |
+
Mage::getSingleton('adminhtml/session')->addError(
|
54 |
+
'Error getting sent messages, please check your credentials'
|
55 |
+
);
|
56 |
+
$this->_redirect('adminhtml/system_config/edit/section/esendex_sms');
|
57 |
+
}
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Check if admin has permissions to visit related pages
|
62 |
+
*/
|
63 |
+
protected function _isAllowed()
|
64 |
+
{
|
65 |
+
return Mage::getSingleton('admin/session')->isAllowed('customer/esendex_sms/messages');
|
66 |
+
}
|
67 |
+
}
|
app/code/community/Esendex/Sms/controllers/Adminhtml/Sms/MobileSalesReportController.php
ADDED
@@ -0,0 +1,55 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
require_once __DIR__ . '/TriggerController.php';
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Class Esendex_Sms_Adminhtml_Sms_MobileSalesReportController
|
22 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
23 |
+
*/
|
24 |
+
class Esendex_Sms_Adminhtml_Sms_MobileSalesReportController extends Esendex_Sms_Adminhtml_Sms_TriggerController
|
25 |
+
{
|
26 |
+
|
27 |
+
/**
|
28 |
+
* The messages and titles used throught this class
|
29 |
+
*
|
30 |
+
* @var array
|
31 |
+
*/
|
32 |
+
protected $messages = array(
|
33 |
+
'index' => 'Manage Mobile Sales Reports',
|
34 |
+
'not-exist' => 'This Mobile Sales Report no longer exists',
|
35 |
+
'edit' => 'Edit Mobile Sales Report',
|
36 |
+
'new' => 'Add Mobile Sales Report',
|
37 |
+
'save-success' => 'Mobile Sales Report was successfully saved',
|
38 |
+
'save-error' => 'There was a problem saving the Mobile Sales Report',
|
39 |
+
'delete-success' => 'Mobile Sales Report was successfully deleted',
|
40 |
+
'delete-error' => 'There was an error deleting Mobile Sales Report',
|
41 |
+
'mass-delete-invalid' => 'Please select Admin Sales Reports to delete',
|
42 |
+
'mass-delete-error' => 'There was an error deleting Admin Sales Reports',
|
43 |
+
'mass-delete-success' => 'Total of %d Admin Sales Reports were successfully deleted',
|
44 |
+
'mass-status-invalid' => 'Please select Admin Sales Reports',
|
45 |
+
'mass-status-error' => 'There was an error updating Admin Sales Reports',
|
46 |
+
'mass-status-success' => 'Total of %d Admin Sales Reports were successfully updated',
|
47 |
+
);
|
48 |
+
|
49 |
+
/**
|
50 |
+
* File prefix
|
51 |
+
*
|
52 |
+
* @var string
|
53 |
+
*/
|
54 |
+
protected $filePrefix = 'admin_sales_reports';
|
55 |
+
}
|
app/code/community/Esendex/Sms/controllers/Adminhtml/Sms/TriggerController.php
ADDED
@@ -0,0 +1,366 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Class Esendex_Sms_Adminhtml_Sms_TriggerController
|
20 |
+
* @author Aydin Hassan <aydin@hotmail.co.uk>
|
21 |
+
*/
|
22 |
+
class Esendex_Sms_Adminhtml_Sms_TriggerController extends Mage_Adminhtml_Controller_Action
|
23 |
+
{
|
24 |
+
|
25 |
+
/**
|
26 |
+
* The messages and titles used throught this class
|
27 |
+
*
|
28 |
+
* @var array
|
29 |
+
*/
|
30 |
+
protected $messages = array(
|
31 |
+
'index' => 'Manage Notifications',
|
32 |
+
'not-exist' => 'This notification no longer exists',
|
33 |
+
'edit' => 'Edit Notification',
|
34 |
+
'new' => 'Add Notification',
|
35 |
+
'save-success' => 'Notification was successfully saved',
|
36 |
+
'save-error' => 'There was a problem saving the notification',
|
37 |
+
'delete-success' => 'Notification was successfully deleted',
|
38 |
+
'delete-error' => 'There was an error deleting notification',
|
39 |
+
'mass-delete-invalid' => 'Please select Notifications to delete',
|
40 |
+
'mass-delete-error' => 'There was an error deleting notifications',
|
41 |
+
'mass-delete-success' => 'Total of %d notification%s %s successfully deleted',
|
42 |
+
'mass-status-invalid' => 'Please select Notifications',
|
43 |
+
'mass-status-error' => 'There was an error updating notifications',
|
44 |
+
'mass-status-success' => 'Total of %d notification%s %s successfully updated',
|
45 |
+
);
|
46 |
+
|
47 |
+
/**
|
48 |
+
* File prefix
|
49 |
+
*
|
50 |
+
* @var string
|
51 |
+
*/
|
52 |
+
protected $filePrefix = 'notifications';
|
53 |
+
|
54 |
+
/**
|
55 |
+
* @param int|null $eventId
|
56 |
+
*
|
57 |
+
* @return Esendex_Sms_Model_Trigger
|
58 |
+
*/
|
59 |
+
public function loadNewTrigger($eventId = null)
|
60 |
+
{
|
61 |
+
$baseTriggerModel = Mage::getModel('esendex_sms/trigger');
|
62 |
+
$triggerModel = $baseTriggerModel->getResource()->getTriggerModel($eventId);
|
63 |
+
Mage::register('current_trigger', $triggerModel);
|
64 |
+
return $triggerModel;
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @param int $triggerId
|
69 |
+
*
|
70 |
+
* @return Esendex_Sms_Model_Trigger
|
71 |
+
*/
|
72 |
+
public function loadExistingTrigger($triggerId)
|
73 |
+
{
|
74 |
+
$baseTriggerModel = Mage::getModel('esendex_sms/trigger');
|
75 |
+
$triggerModel = $baseTriggerModel->getResource()->load($baseTriggerModel, $triggerId);
|
76 |
+
Mage::register('current_trigger', $triggerModel);
|
77 |
+
return $triggerModel;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* Index action
|
82 |
+
*/
|
83 |
+
public function indexAction()
|
84 |
+
{
|
85 |
+
$this->loadLayout();
|
86 |
+
$this->_title(Mage::helper('esendex_sms')->__('Esendex'))
|
87 |
+
->_title(Mage::helper('esendex_sms')->__($this->messages['index']));
|
88 |
+
$this->renderLayout();
|
89 |
+
}
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Grid action
|
93 |
+
*/
|
94 |
+
public function gridAction()
|
95 |
+
{
|
96 |
+
$this->loadLayout()->renderLayout();
|
97 |
+
}
|
98 |
+
|
99 |
+
/**
|
100 |
+
* Edit trigger
|
101 |
+
*/
|
102 |
+
public function editAction()
|
103 |
+
{
|
104 |
+
$triggerId = $this->getRequest()->getParam('id');
|
105 |
+
$data = $this->getRequest()->getPost('trigger');
|
106 |
+
|
107 |
+
if ($triggerId) {
|
108 |
+
$trigger = $this->loadExistingTrigger($triggerId);
|
109 |
+
} else {
|
110 |
+
$trigger = $this->loadNewTrigger($data['event_id']);
|
111 |
+
}
|
112 |
+
|
113 |
+
if ($triggerId && !$trigger->getId()) {
|
114 |
+
$this->_getSession()->addError(Mage::helper('esendex_sms')->__($this->messages['not-exist']));
|
115 |
+
$this->_redirect('*/*/');
|
116 |
+
return;
|
117 |
+
}
|
118 |
+
|
119 |
+
if ($data) {
|
120 |
+
if (!isset($data['event_id']) || !isset($data['stores'])) {
|
121 |
+
$this->_redirect('*/*/');
|
122 |
+
}
|
123 |
+
|
124 |
+
//if event_id is zero
|
125 |
+
//form was submitted without selecting event type
|
126 |
+
if ($data['event_id'] === "0") {
|
127 |
+
|
128 |
+
$this->_getSession()->addError(Mage::helper('esendex_sms')->__('Please select the Event Type'));
|
129 |
+
$this->_redirect('*/*/edit');
|
130 |
+
return;
|
131 |
+
}
|
132 |
+
|
133 |
+
$this->saveStage1FormData($data);
|
134 |
+
$trigger->setData($data);
|
135 |
+
}
|
136 |
+
|
137 |
+
$this->_title(Mage::helper('esendex_sms')->__('Esendex'));
|
138 |
+
|
139 |
+
if ($trigger->getId()) {
|
140 |
+
$this->_title(Mage::helper('esendex_sms')->__($this->messages['edit']));
|
141 |
+
} else {
|
142 |
+
$this->_title(Mage::helper('esendex_sms')->__($this->messages['new']));
|
143 |
+
}
|
144 |
+
|
145 |
+
$this->loadLayout()->renderLayout();
|
146 |
+
}
|
147 |
+
|
148 |
+
/**
|
149 |
+
* @param array $data
|
150 |
+
*/
|
151 |
+
public function saveStage1FormData(array $data)
|
152 |
+
{
|
153 |
+
$session = Mage::getSingleton('core/session');
|
154 |
+
$session->setEsendexSmsStage1FormData(array(
|
155 |
+
'event_id' => $data['event_id'],
|
156 |
+
'stores' => $data['stores']
|
157 |
+
));
|
158 |
+
}
|
159 |
+
|
160 |
+
/**
|
161 |
+
* @return array
|
162 |
+
*/
|
163 |
+
public function getStage1FormData()
|
164 |
+
{
|
165 |
+
$session = mage::getSingleton('core/session');
|
166 |
+
return $session->getEsendexSmsStage1FormData();
|
167 |
+
}
|
168 |
+
|
169 |
+
/**
|
170 |
+
* New trigger action
|
171 |
+
*/
|
172 |
+
public function newAction()
|
173 |
+
{
|
174 |
+
$this->_forward('edit');
|
175 |
+
}
|
176 |
+
|
177 |
+
/**
|
178 |
+
* Save trigger action
|
179 |
+
*/
|
180 |
+
public function saveAction()
|
181 |
+
{
|
182 |
+
$session = $this->_getSession();
|
183 |
+
if (!$data = $this->getRequest()->getPost('trigger')) {
|
184 |
+
return $this->_redirect('*/*/');
|
185 |
+
}
|
186 |
+
|
187 |
+
try {
|
188 |
+
if ($this->getRequest()->getParam('id')) {
|
189 |
+
$trigger = $this->loadExistingTrigger($this->getRequest()->getParam('id'));
|
190 |
+
} else {
|
191 |
+
$data = array_merge($data, $this->getStage1FormData());
|
192 |
+
$trigger = $this->loadNewTrigger($data['event_id']);
|
193 |
+
}
|
194 |
+
$trigger->addData($data);
|
195 |
+
|
196 |
+
//if validatable - do that magic
|
197 |
+
if ($trigger instanceof Esendex_Sms_Model_ValidatableInterface) {
|
198 |
+
if (!$trigger->validate()) {
|
199 |
+
foreach ($trigger->getErrors() as $error) {
|
200 |
+
$session->addError($error);
|
201 |
+
}
|
202 |
+
|
203 |
+
return $this->_redirect('*/*/edit', ['id' => $this->getRequest()->getParam('id')]);
|
204 |
+
}
|
205 |
+
}
|
206 |
+
|
207 |
+
$trigger->save();
|
208 |
+
$session->addSuccess(Mage::helper('esendex_sms')->__($this->messages['save-success']));
|
209 |
+
$session->setFormData(false);
|
210 |
+
|
211 |
+
if ($this->getRequest()->getParam('back')) {
|
212 |
+
return $this->_redirect('*/*/edit', ['id' => $trigger->getId()]);
|
213 |
+
}
|
214 |
+
|
215 |
+
$this->_redirect('*/*/');
|
216 |
+
} catch (Mage_Core_Exception $e) {
|
217 |
+
$session->addError($e->getMessage());
|
218 |
+
$session->setTriggerData($data);
|
219 |
+
$this->_redirect('*/*/edit', ['id' => $this->getRequest()->getParam('id')]);
|
220 |
+
} catch (Exception $e) {
|
221 |
+
Mage::logException($e);
|
222 |
+
$session->addError(Mage::helper('esendex_sms')->__($this->messages['save-error']));
|
223 |
+
$session->setTriggerData($data);
|
224 |
+
$this->_redirect('*/*/edit', ['id' => $this->getRequest()->getParam('id')]);
|
225 |
+
}
|
226 |
+
}
|
227 |
+
|
228 |
+
/**
|
229 |
+
* Delete trigger action
|
230 |
+
*/
|
231 |
+
public function deleteAction()
|
232 |
+
{
|
233 |
+
if (!$this->getRequest()->getParam('id')) {
|
234 |
+
return $this->_redirect('*/*/');
|
235 |
+
}
|
236 |
+
|
237 |
+
try {
|
238 |
+
$id = $this->getRequest()->getParam('id');
|
239 |
+
Mage::getModel('esendex_sms/trigger')
|
240 |
+
->setId($id)
|
241 |
+
->delete();
|
242 |
+
|
243 |
+
$this->_getSession()
|
244 |
+
->addSuccess(Mage::helper('esendex_sms')->__($this->messages['delete-success']));
|
245 |
+
|
246 |
+
$this->_redirect('*/*/');
|
247 |
+
} catch (Mage_Core_Exception $e) {
|
248 |
+
$this->_getSession()
|
249 |
+
->addError($e->getMessage());
|
250 |
+
|
251 |
+
$this->_redirect('*/*/edit', ['id' => $this->getRequest()->getParam('id')]);
|
252 |
+
} catch (Exception $e) {
|
253 |
+
$this->_getSession()
|
254 |
+
->addError(Mage::helper('esendex_sms')->__($this->messages['delete-error']));
|
255 |
+
|
256 |
+
$this->_redirect('*/*/edit', ['id' => $this->getRequest()->getParam('id')]);
|
257 |
+
Mage::logException($e);
|
258 |
+
}
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Mass delete trigger
|
263 |
+
*/
|
264 |
+
public function massDeleteAction()
|
265 |
+
{
|
266 |
+
$triggerIds = $this->getRequest()->getParam('trigger');
|
267 |
+
if (!is_array($triggerIds)) {
|
268 |
+
$this->_getSession()->addError(Mage::helper('esendex_sms')->__($this->messages['mass-delete-invalid']));
|
269 |
+
return $this->_redirect('*/*/index');
|
270 |
+
}
|
271 |
+
|
272 |
+
try {
|
273 |
+
foreach ($triggerIds as $triggerId) {
|
274 |
+
$trigger = Mage::getModel('esendex_sms/trigger');
|
275 |
+
$trigger->setId($triggerId)->delete();
|
276 |
+
}
|
277 |
+
$count = count($triggerIds);
|
278 |
+
$this->_getSession()->addSuccess(Mage::helper('esendex_sms')->__(
|
279 |
+
sprintf(
|
280 |
+
$this->messages['mass-delete-success'],
|
281 |
+
$count > 1 ? 's' : '',
|
282 |
+
$count > 1 ? 'were' : 'was'
|
283 |
+
),
|
284 |
+
$count
|
285 |
+
));
|
286 |
+
} catch (Mage_Core_Exception $e) {
|
287 |
+
$this->_getSession()->addError($e->getMessage());
|
288 |
+
} catch (Exception $e) {
|
289 |
+
$this->_getSession()->addError(Mage::helper('esendex_sms')->__($this->messages['mass-delete-error']));
|
290 |
+
Mage::logException($e);
|
291 |
+
}
|
292 |
+
$this->_redirect('*/*/index');
|
293 |
+
}
|
294 |
+
|
295 |
+
/**
|
296 |
+
* Mass status change
|
297 |
+
*/
|
298 |
+
public function massStatusAction()
|
299 |
+
{
|
300 |
+
$triggerIds = $this->getRequest()->getParam('trigger');
|
301 |
+
if (!is_array($triggerIds)) {
|
302 |
+
$this->_getSession()->addError(Mage::helper('esendex_sms')->__($this->messages['mass-status-invalid']));
|
303 |
+
return $this->_redirect('*/*/index');
|
304 |
+
}
|
305 |
+
|
306 |
+
try {
|
307 |
+
foreach ($triggerIds as $triggerId) {
|
308 |
+
Mage::getModel('esendex_sms/trigger')
|
309 |
+
->setId($triggerId)
|
310 |
+
->setStatus($this->getRequest()->getParam('status'))
|
311 |
+
->save();
|
312 |
+
}
|
313 |
+
$count = count($triggerIds);
|
314 |
+
$this->_getSession()->addSuccess(Mage::helper('esendex_sms')->__(
|
315 |
+
$this->messages['mass-status-success'],
|
316 |
+
$count,
|
317 |
+
$count > 1 ? 's' : '',
|
318 |
+
$count > 1 ? 'were' : 'was'
|
319 |
+
));
|
320 |
+
} catch (Mage_Core_Exception $e) {
|
321 |
+
$this->_getSession()->addError($e->getMessage());
|
322 |
+
} catch (Exception $e) {
|
323 |
+
$this->_getSession()->addError(Mage::helper('esendex_sms')->__($this->messages['mass-status-error']));
|
324 |
+
Mage::logException($e);
|
325 |
+
}
|
326 |
+
$this->_redirect('*/*/index');
|
327 |
+
}
|
328 |
+
|
329 |
+
/**
|
330 |
+
* export as csv - action
|
331 |
+
*/
|
332 |
+
public function exportCsvAction()
|
333 |
+
{
|
334 |
+
$fileName = sprintf('%s.csv', $this->filePrefix);
|
335 |
+
$content = $this->getLayout()->createBlock('esendex_sms/adminhtml_trigger_grid')->getCsv();
|
336 |
+
$this->_prepareDownloadResponse($fileName, $content);
|
337 |
+
}
|
338 |
+
|
339 |
+
/**
|
340 |
+
* export as MsExcel - action
|
341 |
+
*/
|
342 |
+
public function exportExcelAction()
|
343 |
+
{
|
344 |
+
$fileName = sprintf('%s.xls', $this->filePrefix);
|
345 |
+
$content = $this->getLayout()->createBlock('esendex_sms/adminhtml_trigger_grid')->getExcelFile();
|
346 |
+
$this->_prepareDownloadResponse($fileName, $content);
|
347 |
+
}
|
348 |
+
|
349 |
+
/**
|
350 |
+
* export as xml - action
|
351 |
+
*/
|
352 |
+
public function exportXmlAction()
|
353 |
+
{
|
354 |
+
$fileName = sprintf('%s.xml', $this->filePrefix);
|
355 |
+
$content = $this->getLayout()->createBlock('esendex_sms/adminhtml_trigger_grid')->getXml();
|
356 |
+
$this->_prepareDownloadResponse($fileName, $content);
|
357 |
+
}
|
358 |
+
|
359 |
+
/**
|
360 |
+
* Check if admin has permissions to visit related pages
|
361 |
+
*/
|
362 |
+
protected function _isAllowed()
|
363 |
+
{
|
364 |
+
return Mage::getSingleton('admin/session')->isAllowed('esendex');
|
365 |
+
}
|
366 |
+
}
|
app/code/community/Esendex/Sms/etc/adminhtml.xml
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<!--
|
4 |
+
Copyright (C) 2015 Esendex Ltd.
|
5 |
+
|
6 |
+
This program is free software: you can redistribute it and/or modify
|
7 |
+
it under the terms of the Esendex Community License v1.0 as published by
|
8 |
+
the Esendex Ltd.
|
9 |
+
|
10 |
+
This program is distributed in the hope that it will be useful,
|
11 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
Esendex Community Licence v1.0 for more details.
|
14 |
+
|
15 |
+
You should have received a copy of the Esendex Community Licence v1.0
|
16 |
+
along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
17 |
+
-->
|
18 |
+
|
19 |
+
<config>
|
20 |
+
<acl>
|
21 |
+
<resources>
|
22 |
+
<admin>
|
23 |
+
<children>
|
24 |
+
<system>
|
25 |
+
<children>
|
26 |
+
<config>
|
27 |
+
<children>
|
28 |
+
<esendex_sms>
|
29 |
+
<title>Esendex SMS Section</title>
|
30 |
+
</esendex_sms>
|
31 |
+
</children>
|
32 |
+
</config>
|
33 |
+
</children>
|
34 |
+
</system>
|
35 |
+
<esendex translate="title" module="esendex_sms">
|
36 |
+
<title>Sms</title>
|
37 |
+
<sort_order>1000</sort_order>
|
38 |
+
</esendex>
|
39 |
+
</children>
|
40 |
+
</admin>
|
41 |
+
</resources>
|
42 |
+
</acl>
|
43 |
+
<menu>
|
44 |
+
<esendex translate="title" module="esendex_sms">
|
45 |
+
<title>SMS</title>
|
46 |
+
<sort_order>100</sort_order>
|
47 |
+
<children>
|
48 |
+
<create translate="title" module="esendex_sms">
|
49 |
+
<title>Add New Notification</title>
|
50 |
+
<action>adminhtml/sms_trigger/new</action>
|
51 |
+
</create>
|
52 |
+
<manage_notifications translate="title" module="esendex_sms">
|
53 |
+
<title>Manage Existing Notifications</title>
|
54 |
+
<action>adminhtml/sms_trigger/index</action>
|
55 |
+
</manage_notifications>
|
56 |
+
<mobile_sales_report translate="title" module="esendex_sms">
|
57 |
+
<title>Mobile Sales Report</title>
|
58 |
+
<action>adminhtml/sms_mobileSalesReport/index</action>
|
59 |
+
</mobile_sales_report>
|
60 |
+
<sent translate="title" module="esendex_sms">
|
61 |
+
<title>View Sent Messages</title>
|
62 |
+
<action>adminhtml/sms_messages</action>
|
63 |
+
</sent>
|
64 |
+
<settings translate="title" module="esendex_sms">
|
65 |
+
<title>Settings</title>
|
66 |
+
<action>adminhtml/system_config/edit/section/esendex_sms</action>
|
67 |
+
</settings>
|
68 |
+
</children>
|
69 |
+
</esendex>
|
70 |
+
</menu>
|
71 |
+
</config>
|
app/code/community/Esendex/Sms/etc/config.xml
ADDED
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<!--
|
4 |
+
Copyright (C) 2015 Esendex Ltd.
|
5 |
+
|
6 |
+
This program is free software: you can redistribute it and/or modify
|
7 |
+
it under the terms of the Esendex Community License v1.0 as published by
|
8 |
+
the Esendex Ltd.
|
9 |
+
|
10 |
+
This program is distributed in the hope that it will be useful,
|
11 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
Esendex Community Licence v1.0 for more details.
|
14 |
+
|
15 |
+
You should have received a copy of the Esendex Community Licence v1.0
|
16 |
+
along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
17 |
+
-->
|
18 |
+
|
19 |
+
<config>
|
20 |
+
<modules>
|
21 |
+
<Esendex_Sms>
|
22 |
+
<version>0.1.0</version>
|
23 |
+
</Esendex_Sms>
|
24 |
+
</modules>
|
25 |
+
<global>
|
26 |
+
<resources>
|
27 |
+
<esendex_sms_setup>
|
28 |
+
<setup>
|
29 |
+
<module>Esendex_Sms</module>
|
30 |
+
<class>Esendex_Sms_Model_Resource_Setup</class>
|
31 |
+
</setup>
|
32 |
+
</esendex_sms_setup>
|
33 |
+
</resources>
|
34 |
+
<blocks>
|
35 |
+
<esendex_sms>
|
36 |
+
<class>Esendex_Sms_Block</class>
|
37 |
+
</esendex_sms>
|
38 |
+
</blocks>
|
39 |
+
<helpers>
|
40 |
+
<esendex_sms>
|
41 |
+
<class>Esendex_Sms_Helper</class>
|
42 |
+
</esendex_sms>
|
43 |
+
</helpers>
|
44 |
+
<models>
|
45 |
+
<esendex_sms>
|
46 |
+
<class>Esendex_Sms_Model</class>
|
47 |
+
<resourceModel>esendex_sms_resource</resourceModel>
|
48 |
+
</esendex_sms>
|
49 |
+
<esendex_sms_resource>
|
50 |
+
<class>Esendex_Sms_Model_Resource</class>
|
51 |
+
<entities>
|
52 |
+
<trigger>
|
53 |
+
<table>esendex_sms_trigger</table>
|
54 |
+
</trigger>
|
55 |
+
<trigger_store>
|
56 |
+
<table>esendex_sms_trigger_store</table>
|
57 |
+
</trigger_store>
|
58 |
+
<event>
|
59 |
+
<table>esendex_sms_event</table>
|
60 |
+
</event>
|
61 |
+
<event_sample_message_template>
|
62 |
+
<table>esendex_sms_event_sample_message_template</table>
|
63 |
+
</event_sample_message_template>
|
64 |
+
</entities>
|
65 |
+
</esendex_sms_resource>
|
66 |
+
</models>
|
67 |
+
<events>
|
68 |
+
<resource_get_tablename>
|
69 |
+
<observers>
|
70 |
+
<esendexSdkAutoloader>
|
71 |
+
<class>Esendex_Sms_Model_AutoloaderObserver</class>
|
72 |
+
<method>autoloadEsendexSdk</method>
|
73 |
+
</esendexSdkAutoloader>
|
74 |
+
</observers>
|
75 |
+
</resource_get_tablename>
|
76 |
+
|
77 |
+
<!-- Event for when saving config -->
|
78 |
+
<admin_system_config_changed_section_esendex_sms>
|
79 |
+
<observers>
|
80 |
+
<esendex_sms_config_save>
|
81 |
+
<class>esendex_sms/accountObserver</class>
|
82 |
+
<method>validateAccount</method>
|
83 |
+
</esendex_sms_config_save>
|
84 |
+
</observers>
|
85 |
+
</admin_system_config_changed_section_esendex_sms>
|
86 |
+
|
87 |
+
<esendex_account_details_updated>
|
88 |
+
<observers>
|
89 |
+
<esendex_account_details_updated>
|
90 |
+
<class>esendex_sms/accountObserver</class>
|
91 |
+
<method>rebuildAccountCache</method>
|
92 |
+
</esendex_account_details_updated>
|
93 |
+
</observers>
|
94 |
+
</esendex_account_details_updated>
|
95 |
+
|
96 |
+
<esendex_account_reloaded>
|
97 |
+
<observers>
|
98 |
+
<esendex_account_reloaded>
|
99 |
+
<class>esendex_sms/accountObserver</class>
|
100 |
+
<method>rebuildAccountCache</method>
|
101 |
+
</esendex_account_reloaded>
|
102 |
+
</observers>
|
103 |
+
</esendex_account_reloaded>
|
104 |
+
|
105 |
+
<admin_session_user_login_success>
|
106 |
+
<observers>
|
107 |
+
<refresh_esendex_account_cache_on_admin_login>
|
108 |
+
<class>esendex_sms/accountObserver</class>
|
109 |
+
<method>refreshAccountCache</method>
|
110 |
+
</refresh_esendex_account_cache_on_admin_login>
|
111 |
+
</observers>
|
112 |
+
</admin_session_user_login_success>
|
113 |
+
|
114 |
+
<esendex_sms_messages_sent>
|
115 |
+
<observers>
|
116 |
+
<update_esendex_account_remaning_messages>
|
117 |
+
<class>esendex_sms/accountObserver</class>
|
118 |
+
<method>updateRemainingMessages</method>
|
119 |
+
</update_esendex_account_remaning_messages>
|
120 |
+
</observers>
|
121 |
+
</esendex_sms_messages_sent>
|
122 |
+
</events>
|
123 |
+
</global>
|
124 |
+
<adminhtml>
|
125 |
+
<layout>
|
126 |
+
<updates>
|
127 |
+
<esendex_sms>
|
128 |
+
<file>esendex/sms.xml</file>
|
129 |
+
</esendex_sms>
|
130 |
+
</updates>
|
131 |
+
</layout>
|
132 |
+
<translate>
|
133 |
+
<modules>
|
134 |
+
<Esendex_Sms>
|
135 |
+
<files>
|
136 |
+
<default>Esendex_Sms.csv</default>
|
137 |
+
</files>
|
138 |
+
</Esendex_Sms>
|
139 |
+
</modules>
|
140 |
+
</translate>
|
141 |
+
</adminhtml>
|
142 |
+
<admin>
|
143 |
+
<routers>
|
144 |
+
<adminhtml>
|
145 |
+
<args>
|
146 |
+
<modules>
|
147 |
+
<Esendex_Sms before="Mage_Adminhtml">Esendex_Sms_Adminhtml</Esendex_Sms>
|
148 |
+
</modules>
|
149 |
+
</args>
|
150 |
+
</adminhtml>
|
151 |
+
</routers>
|
152 |
+
</admin>
|
153 |
+
<default>
|
154 |
+
<esendex_sms>
|
155 |
+
<sms>
|
156 |
+
<debug_mode>0</debug_mode>
|
157 |
+
<send_sms>1</send_sms>
|
158 |
+
<warn_me>10</warn_me>
|
159 |
+
</sms>
|
160 |
+
</esendex_sms>
|
161 |
+
</default>
|
162 |
+
</config>
|
app/code/community/Esendex/Sms/etc/jstranslator.xml
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<!--
|
4 |
+
Copyright (C) 2015 Esendex Ltd.
|
5 |
+
|
6 |
+
This program is free software: you can redistribute it and/or modify
|
7 |
+
it under the terms of the Esendex Community License v1.0 as published by
|
8 |
+
the Esendex Ltd.
|
9 |
+
|
10 |
+
This program is distributed in the hope that it will be useful,
|
11 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
Esendex Community Licence v1.0 for more details.
|
14 |
+
|
15 |
+
You should have received a copy of the Esendex Community Licence v1.0
|
16 |
+
along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
17 |
+
-->
|
18 |
+
|
19 |
+
<jstranslator>
|
20 |
+
<reset_message_button translate="message" module="esendex_sms">
|
21 |
+
<message>Reset to Default Message</message>
|
22 |
+
</reset_message_button>
|
23 |
+
<message_validation_chars translate="message" module="esendex_sms">>
|
24 |
+
<message>characters</message>
|
25 |
+
</message_validation_chars>
|
26 |
+
<message_validation_parts translate="message" module="esendex_sms">>
|
27 |
+
<message>SMS parts</message>
|
28 |
+
</message_validation_parts>
|
29 |
+
<sender_validation translate="message" module="esendex_sms">
|
30 |
+
<message>The Sender ID must be between 1 and 11 characters when it contains letters, numbers, spaces and special characters (* $ ? ! ” # % <![CDATA[&]]> _ - , . @ ' +), or between 5 and 20 when it contains just numbers.</message>
|
31 |
+
</sender_validation>
|
32 |
+
<message_count_validation translate="message" module="esendex_sms">
|
33 |
+
<message>Message must be between 1 and 612 characters</message>
|
34 |
+
</message_count_validation>
|
35 |
+
<variables_validation translate="message" module="esendex_sms">
|
36 |
+
<message>Message contains variables which are not available</message>
|
37 |
+
</variables_validation>
|
38 |
+
</jstranslator>
|
app/code/community/Esendex/Sms/etc/system.xml
ADDED
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<!--
|
4 |
+
Copyright (C) 2015 Esendex Ltd.
|
5 |
+
|
6 |
+
This program is free software: you can redistribute it and/or modify
|
7 |
+
it under the terms of the Esendex Community License v1.0 as published by
|
8 |
+
the Esendex Ltd.
|
9 |
+
|
10 |
+
This program is distributed in the hope that it will be useful,
|
11 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
Esendex Community Licence v1.0 for more details.
|
14 |
+
|
15 |
+
You should have received a copy of the Esendex Community Licence v1.0
|
16 |
+
along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
17 |
+
-->
|
18 |
+
|
19 |
+
<config>
|
20 |
+
<tabs>
|
21 |
+
<esendex translate="label" module="esendex_sms">
|
22 |
+
<label>Esendex</label>
|
23 |
+
<sort_order>1000</sort_order>
|
24 |
+
</esendex>
|
25 |
+
</tabs>
|
26 |
+
<sections>
|
27 |
+
<esendex_sms translate="label" module="esendex_sms">
|
28 |
+
<label>Esendex Module Configuration</label>
|
29 |
+
<tab>esendex</tab>
|
30 |
+
<sort_order>1</sort_order>
|
31 |
+
<show_in_default>1</show_in_default>
|
32 |
+
<show_in_website>0</show_in_website>
|
33 |
+
<show_in_store>0</show_in_store>
|
34 |
+
<groups>
|
35 |
+
<details module="esendex_sms">
|
36 |
+
<frontend_model>esendex_sms/adminhtml_system_config_section_details</frontend_model>
|
37 |
+
<show_in_default>1</show_in_default>
|
38 |
+
<show_in_website>0</show_in_website>
|
39 |
+
<show_in_store>0</show_in_store>
|
40 |
+
<sort_order>0</sort_order>
|
41 |
+
</details>
|
42 |
+
<sms translate="label" module="esendex_sms">
|
43 |
+
<label>SMS</label>
|
44 |
+
<frontend_type>text</frontend_type>
|
45 |
+
<sort_order>1</sort_order>
|
46 |
+
<show_in_default>1</show_in_default>
|
47 |
+
<show_in_website>0</show_in_website>
|
48 |
+
<show_in_store>0</show_in_store>
|
49 |
+
<fields>
|
50 |
+
<account_reference translate="label">
|
51 |
+
<label>Esendex Account Reference</label>
|
52 |
+
<comment>Your Esendex account reference number e.g. EX0012345</comment>
|
53 |
+
<frontend_type>text</frontend_type>
|
54 |
+
<sort_order>1</sort_order>
|
55 |
+
<show_in_default>1</show_in_default>
|
56 |
+
<show_in_website>0</show_in_website>
|
57 |
+
<show_in_store>0</show_in_store>
|
58 |
+
</account_reference>
|
59 |
+
<email translate="label">
|
60 |
+
<label>Esendex Username</label>
|
61 |
+
<comment>Your Esendex username, typically your email address e.g. joe.bloggs@company.com</comment>
|
62 |
+
<frontend_type>text</frontend_type>
|
63 |
+
<sort_order>2</sort_order>
|
64 |
+
<show_in_default>1</show_in_default>
|
65 |
+
<show_in_website>0</show_in_website>
|
66 |
+
<show_in_store>0</show_in_store>
|
67 |
+
</email>
|
68 |
+
<password translate="label">
|
69 |
+
<label>Esendex Password</label>
|
70 |
+
<comment>Your Esendex password</comment>
|
71 |
+
<frontend_type>password</frontend_type>
|
72 |
+
<sort_order>3</sort_order>
|
73 |
+
<show_in_default>1</show_in_default>
|
74 |
+
<show_in_website>0</show_in_website>
|
75 |
+
<show_in_store>0</show_in_store>
|
76 |
+
</password>
|
77 |
+
<warn_me translate="label">
|
78 |
+
<label>Warn me when messages go below</label>
|
79 |
+
<frontend_type>text</frontend_type>
|
80 |
+
<sort_order>4</sort_order>
|
81 |
+
<show_in_default>1</show_in_default>
|
82 |
+
<show_in_website>0</show_in_website>
|
83 |
+
<show_in_store>0</show_in_store>
|
84 |
+
<validate>validate-number</validate>
|
85 |
+
</warn_me>
|
86 |
+
<debug_mode translate="label">
|
87 |
+
<label>Debug Mode</label>
|
88 |
+
<comment>Toggle debug mode. Useful for logging API calls and other important information</comment>
|
89 |
+
<frontend_type>select</frontend_type>
|
90 |
+
<sort_order>5</sort_order>
|
91 |
+
<show_in_default>1</show_in_default>
|
92 |
+
<show_in_website>0</show_in_website>
|
93 |
+
<show_in_store>0</show_in_store>
|
94 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
95 |
+
</debug_mode>
|
96 |
+
<send_sms translate="label">
|
97 |
+
<label>Enable SMS Sending</label>
|
98 |
+
<comment>Select 'No' to disable SMS sending</comment>
|
99 |
+
<frontend_type>select</frontend_type>
|
100 |
+
<sort_order>6</sort_order>
|
101 |
+
<show_in_default>1</show_in_default>
|
102 |
+
<show_in_website>0</show_in_website>
|
103 |
+
<show_in_store>0</show_in_store>
|
104 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
105 |
+
</send_sms>
|
106 |
+
</fields>
|
107 |
+
</sms>
|
108 |
+
</groups>
|
109 |
+
</esendex_sms>
|
110 |
+
</sections>
|
111 |
+
</config>
|
app/code/community/Esendex/Sms/sql/esendex_sms_setup/install-0.1.0.php
ADDED
@@ -0,0 +1,257 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/** @var $this Esendex_Sms_Model_Resource_Setup */
|
19 |
+
$this->startSetup();
|
20 |
+
|
21 |
+
$table = $this->getConnection()
|
22 |
+
->newTable($this->getTable('esendex_sms/event'))
|
23 |
+
->addColumn(
|
24 |
+
'entity_id',
|
25 |
+
Varien_Db_Ddl_Table::TYPE_INTEGER,
|
26 |
+
null,
|
27 |
+
array(
|
28 |
+
'identity' => true,
|
29 |
+
'nullable' => false,
|
30 |
+
'primary' => true,
|
31 |
+
),
|
32 |
+
'Event ID'
|
33 |
+
)
|
34 |
+
->addColumn(
|
35 |
+
'save_model',
|
36 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
37 |
+
255,
|
38 |
+
array(),
|
39 |
+
'This maps to the model that saves additional data'
|
40 |
+
)
|
41 |
+
->addColumn(
|
42 |
+
'event_processor',
|
43 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
44 |
+
255,
|
45 |
+
array(),
|
46 |
+
'This maps to the event processor model that handles the event'
|
47 |
+
)
|
48 |
+
->addColumn(
|
49 |
+
'name',
|
50 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
51 |
+
75,
|
52 |
+
array(
|
53 |
+
'nullable' => false,
|
54 |
+
),
|
55 |
+
'Event Friendly Name'
|
56 |
+
)
|
57 |
+
->addColumn(
|
58 |
+
'message_template',
|
59 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
60 |
+
1024,
|
61 |
+
array(
|
62 |
+
'nullable' => false,
|
63 |
+
),
|
64 |
+
'Message Template'
|
65 |
+
)
|
66 |
+
->addColumn(
|
67 |
+
'trigger_type',
|
68 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
69 |
+
null,
|
70 |
+
array(
|
71 |
+
'nullable' => false,
|
72 |
+
),
|
73 |
+
'The trigger type, could be a Magento Event or Magento Cron'
|
74 |
+
)
|
75 |
+
->addColumn(
|
76 |
+
'trigger_code',
|
77 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
78 |
+
150,
|
79 |
+
array(
|
80 |
+
'nullable' => false,
|
81 |
+
),
|
82 |
+
'Magento Event or Magento Cron this event maps to'
|
83 |
+
)
|
84 |
+
->addColumn(
|
85 |
+
'order',
|
86 |
+
Varien_Db_Ddl_Table::TYPE_INTEGER,
|
87 |
+
null,
|
88 |
+
array(
|
89 |
+
'nullanle' => false
|
90 |
+
),
|
91 |
+
'Order'
|
92 |
+
)
|
93 |
+
->addIndex(
|
94 |
+
$this->getIdxName('esendex_sms/event', array('name'), Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE),
|
95 |
+
"name" ,
|
96 |
+
array("type" => Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE)
|
97 |
+
)
|
98 |
+
->addIndex($this->getIdxName('esendex_sms/event', array('trigger_code')), 'trigger_code')
|
99 |
+
->setComment('Event Table');
|
100 |
+
|
101 |
+
$this->getConnection()->createTable($table);
|
102 |
+
|
103 |
+
$table = $this->getConnection()
|
104 |
+
->newTable($this->getTable('esendex_sms/trigger'))
|
105 |
+
->addColumn(
|
106 |
+
'entity_id',
|
107 |
+
Varien_Db_Ddl_Table::TYPE_INTEGER,
|
108 |
+
null,
|
109 |
+
array(
|
110 |
+
'identity' => true,
|
111 |
+
'nullable' => false,
|
112 |
+
'primary' => true,
|
113 |
+
),
|
114 |
+
'Trigger ID'
|
115 |
+
)
|
116 |
+
->addColumn(
|
117 |
+
'event_id',
|
118 |
+
Varien_Db_Ddl_Table::TYPE_INTEGER,
|
119 |
+
null,
|
120 |
+
array(
|
121 |
+
'nullable' => false,
|
122 |
+
),
|
123 |
+
'Esendex Event ID'
|
124 |
+
)
|
125 |
+
->addForeignKey(
|
126 |
+
$this->getFkName('esendex_sms/trigger', 'event_id', 'esendex_sms/event', 'entity_id'),
|
127 |
+
'event_id',
|
128 |
+
$this->getTable('esendex_sms/event'),
|
129 |
+
'entity_id'
|
130 |
+
)
|
131 |
+
->addColumn(
|
132 |
+
'sender',
|
133 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
134 |
+
150,
|
135 |
+
array(
|
136 |
+
'nullable' => false,
|
137 |
+
),
|
138 |
+
'Sender'
|
139 |
+
)
|
140 |
+
->addColumn(
|
141 |
+
'description',
|
142 |
+
Varien_Db_Ddl_Table::TYPE_TEXT,
|
143 |
+
null,
|
144 |
+
array(
|
145 |
+
'nullable' => false,
|
146 |
+
),
|
147 |
+
'Trigger description'
|
148 |
+
)
|
149 |
+
->addColumn(
|
150 |
+
'message_template',
|
151 |
+
Varien_Db_Ddl_Table::TYPE_TEXT,
|
152 |
+
null,
|
153 |
+
array(
|
154 |
+
'nullable' => false,
|
155 |
+
),
|
156 |
+
'Message Template'
|
157 |
+
)
|
158 |
+
->addColumn(
|
159 |
+
'status',
|
160 |
+
Varien_Db_Ddl_Table::TYPE_SMALLINT,
|
161 |
+
null,
|
162 |
+
array(),
|
163 |
+
'Enabled'
|
164 |
+
)
|
165 |
+
->addColumn(
|
166 |
+
'updated_at',
|
167 |
+
Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
|
168 |
+
null,
|
169 |
+
array(),
|
170 |
+
'Trigger Modification Time'
|
171 |
+
)
|
172 |
+
->addColumn(
|
173 |
+
'created_at',
|
174 |
+
Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
|
175 |
+
null,
|
176 |
+
array(),
|
177 |
+
'Trigger Creation Time'
|
178 |
+
)
|
179 |
+
->setComment('Table');
|
180 |
+
|
181 |
+
$this->getConnection()->createTable($table);
|
182 |
+
|
183 |
+
$table = $this->getConnection()
|
184 |
+
->newTable($this->getTable('esendex_sms/trigger_store'))
|
185 |
+
->addColumn('trigger_id', Varien_Db_Ddl_Table::TYPE_SMALLINT, null, array(
|
186 |
+
'nullable' => false,
|
187 |
+
'primary' => true,
|
188 |
+
), 'Trigger ID')
|
189 |
+
->addColumn('store_id', Varien_Db_Ddl_Table::TYPE_SMALLINT, null, array(
|
190 |
+
'unsigned' => true,
|
191 |
+
'nullable' => false,
|
192 |
+
'primary' => true,
|
193 |
+
), 'Store ID')
|
194 |
+
->addIndex($this->getIdxName('esendex_sms/trigger_store', array('store_id')), array('store_id'))
|
195 |
+
->addForeignKey($this->getFkName('esendex_sms/trigger_store', 'trigger_id', 'esendex_sms/trigger', 'entity_id'), 'trigger_id', $this->getTable('esendex_sms/trigger'), 'entity_id', Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE)
|
196 |
+
->addForeignKey($this->getFkName('esendex_sms/trigger_store', 'store_id', 'core/store', 'store_id'), 'store_id', $this->getTable('core/store'), 'store_id', Varien_Db_Ddl_Table::ACTION_CASCADE, Varien_Db_Ddl_Table::ACTION_CASCADE)
|
197 |
+
->setComment('Triggers To Store Linkage Table');
|
198 |
+
|
199 |
+
$this->getConnection()->createTable($table);
|
200 |
+
|
201 |
+
// Create New Table for Event Sample Message Template
|
202 |
+
$table = $this->getConnection()
|
203 |
+
->newTable($this->getTable('esendex_sms/event_sample_message_template'))
|
204 |
+
->addColumn(
|
205 |
+
'entity_id',
|
206 |
+
Varien_Db_Ddl_Table::TYPE_INTEGER,
|
207 |
+
null,
|
208 |
+
array(
|
209 |
+
'identity' => true,
|
210 |
+
'nullable' => false,
|
211 |
+
'primary' => true,
|
212 |
+
),
|
213 |
+
'ID'
|
214 |
+
)
|
215 |
+
->addColumn(
|
216 |
+
'event_id',
|
217 |
+
Varien_Db_Ddl_Table::TYPE_INTEGER,
|
218 |
+
null,
|
219 |
+
array(
|
220 |
+
'nullable' => false,
|
221 |
+
),
|
222 |
+
'Event Id'
|
223 |
+
)
|
224 |
+
->addColumn(
|
225 |
+
'locale_code',
|
226 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
227 |
+
10,
|
228 |
+
array(
|
229 |
+
'nullable' => false,
|
230 |
+
),
|
231 |
+
'Locale Code'
|
232 |
+
)
|
233 |
+
->addColumn(
|
234 |
+
'message_template',
|
235 |
+
Varien_Db_Ddl_Table::TYPE_VARCHAR,
|
236 |
+
1024,
|
237 |
+
array(
|
238 |
+
'nullable' => false,
|
239 |
+
),
|
240 |
+
'Sample Message Template'
|
241 |
+
)
|
242 |
+
->addForeignKey(
|
243 |
+
$this->getFkName('esendex_sms/event_sample_message_template', 'event_id', 'esendex_sms/event', 'entity_id'),
|
244 |
+
'event_id',
|
245 |
+
$this->getTable('esendex_sms/event'),
|
246 |
+
'entity_id'
|
247 |
+
)
|
248 |
+
->addIndex(
|
249 |
+
'event_id_locale_code_unique',
|
250 |
+
['event_id', 'locale_code'],
|
251 |
+
['type' => Varien_Db_Adapter_Interface::INDEX_TYPE_UNIQUE]
|
252 |
+
)
|
253 |
+
->setComment('Event Sample Message Template Table');
|
254 |
+
|
255 |
+
$this->getConnection()->createTable($table);
|
256 |
+
|
257 |
+
$this->endSetup();
|
app/design/adminhtml/default/default/layout/esendex/sms.xml
ADDED
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<!--
|
4 |
+
Copyright (C) 2015 Esendex Ltd.
|
5 |
+
|
6 |
+
This program is free software: you can redistribute it and/or modify
|
7 |
+
it under the terms of the Esendex Community License v1.0 as published by
|
8 |
+
the Esendex Ltd.
|
9 |
+
|
10 |
+
This program is distributed in the hope that it will be useful,
|
11 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
Esendex Community Licence v1.0 for more details.
|
14 |
+
|
15 |
+
You should have received a copy of the Esendex Community Licence v1.0
|
16 |
+
along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
17 |
+
-->
|
18 |
+
|
19 |
+
<layout>
|
20 |
+
<adminhtml_sms_trigger_index>
|
21 |
+
<reference name="menu">
|
22 |
+
<action method="setActive">
|
23 |
+
<menupath>esendex</menupath>
|
24 |
+
</action>
|
25 |
+
</reference>
|
26 |
+
<reference name="content">
|
27 |
+
<block type="esendex_sms/adminhtml_trigger" name="trigger" />
|
28 |
+
</reference>
|
29 |
+
</adminhtml_sms_trigger_index>
|
30 |
+
|
31 |
+
<adminhtml_sms_trigger_grid>
|
32 |
+
<block type="core/text_list" name="root" output="toHtml">
|
33 |
+
<block type="esendex_sms/adminhtml_trigger_grid" name="trigger_grid"/>
|
34 |
+
</block>
|
35 |
+
</adminhtml_sms_trigger_grid>
|
36 |
+
|
37 |
+
<!-- Trigger add/edit action -->
|
38 |
+
<adminhtml_sms_trigger_edit>
|
39 |
+
<update handle="editor"/>
|
40 |
+
<reference name="head">
|
41 |
+
<action method="addItem"><type>skin_js</type><script>js/esendex/sms/edit.js</script></action>
|
42 |
+
</reference>
|
43 |
+
|
44 |
+
<reference name="head">
|
45 |
+
<action method="addItem"><type>skin_css</type><css>css/esendex/sms.css</css></action>
|
46 |
+
</reference>
|
47 |
+
|
48 |
+
<reference name="menu">
|
49 |
+
<action method="setActive">
|
50 |
+
<menupath>esendex/create</menupath>
|
51 |
+
</action>
|
52 |
+
</reference>
|
53 |
+
<reference name="content">
|
54 |
+
<block type="esendex_sms/adminhtml_trigger_edit" name="trigger_edit"></block>
|
55 |
+
</reference>
|
56 |
+
</adminhtml_sms_trigger_edit>
|
57 |
+
|
58 |
+
<adminhtml_sms_mobilesalesreport_index>
|
59 |
+
<reference name="menu">
|
60 |
+
<action method="setActive">
|
61 |
+
<menupath>esendex</menupath>
|
62 |
+
</action>
|
63 |
+
</reference>
|
64 |
+
<reference name="content">
|
65 |
+
<block type="esendex_sms/adminhtml_mobileSalesReport" name="mobileSalesReport" />
|
66 |
+
</reference>
|
67 |
+
</adminhtml_sms_mobilesalesreport_index>
|
68 |
+
|
69 |
+
<adminhtml_sms_mobilesalesreport_grid>
|
70 |
+
<block type="core/text_list" name="root" output="toHtml">
|
71 |
+
<block type="esendex_sms/adminhtml_mobileSalesReport_grid" name="mobileSalesReport_grid"/>
|
72 |
+
</block>
|
73 |
+
</adminhtml_sms_mobilesalesreport_grid>
|
74 |
+
|
75 |
+
<adminhtml_sms_mobilesalesreport_edit>
|
76 |
+
<update handle="editor"/>
|
77 |
+
<reference name="head">
|
78 |
+
<action method="addItem"><type>skin_js</type><script>js/esendex/sms/edit.js</script></action>
|
79 |
+
</reference>
|
80 |
+
|
81 |
+
<reference name="head">
|
82 |
+
<action method="addItem"><type>skin_css</type><css>css/esendex/sms.css</css></action>
|
83 |
+
</reference>
|
84 |
+
|
85 |
+
<reference name="menu">
|
86 |
+
<action method="setActive">
|
87 |
+
<menupath>esendex/create</menupath>
|
88 |
+
</action>
|
89 |
+
</reference>
|
90 |
+
<reference name="content">
|
91 |
+
<block type="esendex_sms/adminhtml_mobileSalesReport_edit" name="trigger_edit"></block>
|
92 |
+
</reference>
|
93 |
+
</adminhtml_sms_mobilesalesreport_edit>
|
94 |
+
|
95 |
+
<!-- Sent Messages -->
|
96 |
+
<adminhtml_sms_messages_index>
|
97 |
+
<reference name="menu">
|
98 |
+
<action method="setActive">
|
99 |
+
<menupath>esendex/sent</menupath>
|
100 |
+
</action>
|
101 |
+
</reference>
|
102 |
+
<reference name="content">
|
103 |
+
<block type="core/template" name="messages_info" template="esendex/widget/messages/info.phtml"/>
|
104 |
+
<block type="esendex_sms/adminhtml_messages" name="esendex_messages" />
|
105 |
+
</reference>
|
106 |
+
</adminhtml_sms_messages_index>
|
107 |
+
|
108 |
+
<adminhtml_sms_messages_grid>
|
109 |
+
<block type="core/text_list" name="root" output="toHtml">
|
110 |
+
<block type="esendex_sms/adminhtml_messages_grid" name="messages_grid"/>
|
111 |
+
</block>
|
112 |
+
</adminhtml_sms_messages_grid>
|
113 |
+
|
114 |
+
<!-- System Configuration Block -->
|
115 |
+
<adminhtml_system_config_edit>
|
116 |
+
<reference name="head">
|
117 |
+
<action method="addItem"><type>skin_css</type><css>css/esendex/system.css</css></action>
|
118 |
+
</reference>
|
119 |
+
</adminhtml_system_config_edit>
|
120 |
+
|
121 |
+
<default>
|
122 |
+
<reference name="notifications">
|
123 |
+
<block type="esendex_sms/adminhtml_accountNotifications"
|
124 |
+
name="esendex_sms_account_notifications"
|
125 |
+
template="esendex/sms/notifications.phtml">
|
126 |
+
</block>
|
127 |
+
</reference>
|
128 |
+
</default>
|
129 |
+
</layout>
|
app/design/adminhtml/default/default/template/esendex/sms/notifications.phtml
ADDED
@@ -0,0 +1,24 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
foreach ($this->getNotifications() as $notification): ?>
|
19 |
+
<div class="notification-global">
|
20 |
+
<img style="vertical-align: middle; height:18px" src="<?php echo $this->getLogo() ?>" />
|
21 |
+
<?php echo $notification ?>
|
22 |
+
</div>
|
23 |
+
<?php endforeach; ?>
|
24 |
+
|
app/design/adminhtml/default/default/template/esendex/sms/system/config/section/details.phtml
ADDED
@@ -0,0 +1,122 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/** @var Esendex_Sms_Block_Adminhtml_System_Config_Section_Details $this */
|
19 |
+
|
20 |
+
$helper = Mage::helper('esendex_sms');
|
21 |
+
?>
|
22 |
+
|
23 |
+
<div class="esendex_container">
|
24 |
+
<div class="cf">
|
25 |
+
<img class="esendex_logo" src="<?= $this->getSkinUrl('images/esendex/esendex-logo.png') ?>" alt="Esendex" height="56" width="265" />
|
26 |
+
|
27 |
+
<?php if (!$this->accountDetailsNotFilledIn() && !$this->hasAccountError()): ?>
|
28 |
+
<div class="account-details-data">
|
29 |
+
<p><a href="https://www.esendex.com/home"><span class="bold-text"><?= $this->getAccountReference() ?></span></a></p>
|
30 |
+
<p><span class="bold-text"><?= $this->getAccountType(); ?></span></p>
|
31 |
+
<p><a href="https://www.esendex.com/redirect?i=ecommerce&ls=magento&sc=connectstore&sd=v1">
|
32 |
+
<span class="bold-text"><?= $this->getRemainingMessages(); ?></span>
|
33 |
+
</a>
|
34 |
+
</p>
|
35 |
+
|
36 |
+
</div>
|
37 |
+
<div class="account-details-labels">
|
38 |
+
<p><?= $helper->__('Account Number') ?></p>
|
39 |
+
<p><?= $helper->__('Account Type') ?></p>
|
40 |
+
<p><?= $helper->__('Credits Remaining') ?></p>
|
41 |
+
</div>
|
42 |
+
<?php endif; ?>
|
43 |
+
|
44 |
+
</div>
|
45 |
+
|
46 |
+
|
47 |
+
<?php if ($this->accountDetailsNotFilledIn()) : ?>
|
48 |
+
<p>
|
49 |
+
<?= $helper->__("You'll need to enter your Esendex Account details below to send SMS notifications"); ?>
|
50 |
+
<br>
|
51 |
+
<?=
|
52 |
+
$helper->__(
|
53 |
+
"Don't have an Esendex Account? %sCreate a FREE TRIAL account%s - we'll even give you 25 FREE SMS to get you started!",
|
54 |
+
'<a target="_blank" href="' . $this->getSignUpUrl() . '">',
|
55 |
+
'</a>'
|
56 |
+
);
|
57 |
+
?>
|
58 |
+
<br>
|
59 |
+
</p>
|
60 |
+
<?php elseif ($this->hasAccountError()) : ?>
|
61 |
+
<p><?= $helper->__('Your Esendex Account details were not recognised. Your account may have expired or the details are incorrect'); ?></p>
|
62 |
+
<p><?= $helper->__('Please double check your account details or contact our support team at <a href="mailto:support@esendex.com">support@esendex.com</a>'); ?></p>
|
63 |
+
<?php else : ?>
|
64 |
+
<div class="cf">
|
65 |
+
<a target="_blank" href="<?= $this->getBuyMessagesLink() ?>">
|
66 |
+
<div class="cta-box">
|
67 |
+
<table height="64px" width="100%" border="0" cellspacing="0" cellpadding="10px">
|
68 |
+
<tr valign="middle">
|
69 |
+
<td valign="middle"><img src="<?= $this->getSkinUrl('images/esendex/buy.png') ?>" width="74" height="61" alt="<?= $helper->__('Buy message credits') ?>"></td>
|
70 |
+
<td width="10%"></td>
|
71 |
+
<td valign="middle"><?= $helper->__('Buy message credits') ?></td>
|
72 |
+
</tr>
|
73 |
+
</table>
|
74 |
+
</div>
|
75 |
+
</a>
|
76 |
+
<a target="_blank" href="<?= $this->getSmsMarketingLink() ?>">
|
77 |
+
<div class="cta-box">
|
78 |
+
<table height="64px" width="100%" border="0" cellspacing="0" cellpadding="10px">
|
79 |
+
<tr valign="middle">
|
80 |
+
<td valign="middle"><img src="<?= $this->getSkinUrl('images/esendex/bulksend.png') ?>" width="60" height="56" alt="<?= $helper->__('SMS marketing') ?>"></td>
|
81 |
+
<td width="10%"></td>
|
82 |
+
<td valign="middle"><?= $helper->__('SMS marketing') ?></td>
|
83 |
+
</tr>
|
84 |
+
</table>
|
85 |
+
</div>
|
86 |
+
</a>
|
87 |
+
<a target="_blank" href="<?= $this->getAutoRespondersLink() ?>">
|
88 |
+
<div class="cta-box cta-box">
|
89 |
+
<table height="64px" width="100%" border="0" cellspacing="0" cellpadding="10px">
|
90 |
+
<tr valign="middle">
|
91 |
+
<td valign="middle"><img src="<?= $this->getSkinUrl('images/esendex/autoresponders.png') ?>" width="61" height="50" alt="<?= $helper->__('SMS auto responses') ?>"></td>
|
92 |
+
<td width="10%"></td>
|
93 |
+
<td valign="middle"><?= $helper->__('SMS auto responses') ?></td>
|
94 |
+
</tr>
|
95 |
+
</table>
|
96 |
+
</div>
|
97 |
+
</a>
|
98 |
+
<a target="_blank" href="<?= $this->getSentMessagesLink() ?>">
|
99 |
+
<div class="cta-box cta-box">
|
100 |
+
<table height="64px" width="100%" border="0" cellspacing="0" cellpadding="10px">
|
101 |
+
<tr valign="middle">
|
102 |
+
<td valign="middle"><img src="<?= $this->getSkinUrl('images/esendex/downloadsentitems.png') ?>" width="58" height="54" alt="<?= $helper->__('Download sent items') ?>"></td>
|
103 |
+
<td width="10%"></td>
|
104 |
+
<td valign="middle"><?= $helper->__('Download sent items') ?></td>
|
105 |
+
</tr>
|
106 |
+
</table>
|
107 |
+
</div>
|
108 |
+
</a>
|
109 |
+
<a target="_blank" href="<?= $this->getSupportLink() ?>">
|
110 |
+
<div class="cta-box cta-box-last">
|
111 |
+
<table height="64px" width="100%" border="0" cellspacing="0" cellpadding="10px">
|
112 |
+
<tr valign="middle">
|
113 |
+
<td valign="middle"><img src="<?= $this->getSkinUrl('images/esendex/help.png') ?>" width="52" height="52" alt="<?= $helper->__('Help & Support') ?>"></td>
|
114 |
+
<td width="10%"></td>
|
115 |
+
<td valign="middle"><?= $helper->__('Help & Support') ?></td>
|
116 |
+
</tr>
|
117 |
+
</table>
|
118 |
+
</div>
|
119 |
+
</a>
|
120 |
+
</div>
|
121 |
+
<?php endif; ?>
|
122 |
+
</div>
|
app/design/adminhtml/default/default/template/esendex/widget/messages/grid.phtml
ADDED
@@ -0,0 +1,216 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Template for Esendex_Sms_Block_Adminhtml_Sender_Grid
|
20 |
+
*
|
21 |
+
* Only removes option for 200 on page size
|
22 |
+
*
|
23 |
+
* getId()
|
24 |
+
* getCollection()
|
25 |
+
* getColumns()
|
26 |
+
* getPagerVisibility()
|
27 |
+
* getVarNamePage()
|
28 |
+
*/
|
29 |
+
$numColumns = sizeof($this->getColumns());
|
30 |
+
?>
|
31 |
+
<?php if($this->getCollection()): ?>
|
32 |
+
<?php if($this->canDisplayContainer()): ?>
|
33 |
+
<?php if($this->getGridHeader()): ?>
|
34 |
+
<div class="content-header">
|
35 |
+
<table cellspacing="0">
|
36 |
+
<tr>
|
37 |
+
<td style="width:50%;"><h2><?= $this->getGridHeader(); ?></h2></td>
|
38 |
+
</tr>
|
39 |
+
</table>
|
40 |
+
</div>
|
41 |
+
<?php endif ?>
|
42 |
+
|
43 |
+
<div id="<?= $this->getId() ?>">
|
44 |
+
<?php else: ?>
|
45 |
+
<?= $this->getMessagesBlock()->getGroupedHtml() ?>
|
46 |
+
<?php endif; ?>
|
47 |
+
<?php if($this->getPagerVisibility() || $this->getExportTypes() || $this->getFilterVisibility()): ?>
|
48 |
+
<table cellspacing="0" class="actions">
|
49 |
+
<tr>
|
50 |
+
<?php if($this->getPagerVisibility()): ?>
|
51 |
+
<td class="pager">
|
52 |
+
<?= $this->__('Page') ?>
|
53 |
+
|
54 |
+
<?php $_curPage = $this->getCollection()->getCurPage() ?>
|
55 |
+
<?php $_lastPage = $this->getCollection()->getLastPageNumber() ?>
|
56 |
+
<?php if($_curPage>1): ?>
|
57 |
+
<a href="#" title="<?= $this->__('Previous page') ?>" onclick="<?= $this->getJsObjectName() ?>.setPage('<?= ($_curPage-1) ?>');return false;"><img src="<?= $this->getSkinUrl('images/pager_arrow_left.gif') ?>" alt="Go to Previous page" class="arrow"/></a>
|
58 |
+
<?php else: ?>
|
59 |
+
<img src="<?= $this->getSkinUrl('images/pager_arrow_left_off.gif') ?>" alt="Go to Previous page" class="arrow"/>
|
60 |
+
<?php endif; ?>
|
61 |
+
|
62 |
+
<input type="text" name="<?= $this->getVarNamePage() ?>" value="<?= $_curPage ?>" class="input-text page" onkeypress="<?= $this->getJsObjectName() ?>.inputPage(event, '<?= $_lastPage ?>')"/>
|
63 |
+
|
64 |
+
<?php if($_curPage < $_lastPage): ?>
|
65 |
+
<a href="#" title="<?= $this->__('Next page') ?>" onclick="<?= $this->getJsObjectName() ?>.setPage('<?= ($_curPage+1) ?>');return false;"><img src="<?= $this->getSkinUrl('images/pager_arrow_right.gif') ?>" alt="Go to Next page" class="arrow"/></a>
|
66 |
+
<?php else: ?>
|
67 |
+
<img src="<?= $this->getSkinUrl('images/pager_arrow_right_off.gif') ?>" alt="Go to Previous page" class="arrow"/>
|
68 |
+
<?php endif; ?>
|
69 |
+
|
70 |
+
<?= $this->__('of %s pages', $this->getCollection()->getLastPageNumber()) ?>
|
71 |
+
<span class="separator">|</span>
|
72 |
+
<?= $this->__('View') ?>
|
73 |
+
<select name="<?= $this->getVarNameLimit() ?>" onchange="<?= $this->getJsObjectName() ?>.loadByElement(this)">
|
74 |
+
<option value="20"<?php if($this->getCollection()->getPageSize()==20): ?> selected="selected"<?php endif; ?>>20</option>
|
75 |
+
<option value="30"<?php if($this->getCollection()->getPageSize()==30): ?> selected="selected"<?php endif; ?>>30</option>
|
76 |
+
<option value="50"<?php if($this->getCollection()->getPageSize()==50): ?> selected="selected"<?php endif; ?>>50</option>
|
77 |
+
<option value="100"<?php if($this->getCollection()->getPageSize()==100): ?> selected="selected"<?php endif; ?>>100</option>
|
78 |
+
</select>
|
79 |
+
<?= $this->__('per page') ?><span class="separator">|</span>
|
80 |
+
<?= $this->__('Total %d records found', $this->getCollection()->getSize()) ?>
|
81 |
+
<span id="<?= $this->getHtmlId() ?>-total-count" class="no-display"><?= $this->getCollection()->getSize() ?></span>
|
82 |
+
<?php if($this->getRssLists()): ?>
|
83 |
+
<?php foreach ($this->getRssLists() as $_rss): ?>
|
84 |
+
<span class="separator">|</span><a href="<?= $_rss->getUrl() ?>" class="link-feed"><?= $_rss->getLabel() ?></a>
|
85 |
+
<?php endforeach ?>
|
86 |
+
<?php endif; ?>
|
87 |
+
</td>
|
88 |
+
<?php endif ?>
|
89 |
+
<?php if($this->getExportTypes()): ?>
|
90 |
+
<td class="export a-right">
|
91 |
+
<img src="<?= $this->getSkinUrl('images/icon_export.gif') ?>" alt="" class="v-middle"/> <?= $this->__('Export to:') ?>
|
92 |
+
<select name="<?= $this->getId() ?>_export" id="<?= $this->getId() ?>_export" style="width:8em;">
|
93 |
+
<?php foreach ($this->getExportTypes() as $_type): ?>
|
94 |
+
<option value="<?= $_type->getUrl() ?>"><?= $_type->getLabel() ?></option>
|
95 |
+
<?php endforeach; ?>
|
96 |
+
</select>
|
97 |
+
<?= $this->getExportButtonHtml() ?>
|
98 |
+
</td>
|
99 |
+
<?php endif; ?>
|
100 |
+
</tr>
|
101 |
+
</table>
|
102 |
+
<?php endif; ?>
|
103 |
+
<?php if($this->getMassactionBlock()->isAvailable()): ?>
|
104 |
+
<?= $this->getMassactionBlockHtml() ?>
|
105 |
+
<?php endif ?>
|
106 |
+
<div class="grid">
|
107 |
+
<div class="hor-scroll">
|
108 |
+
<table cellspacing="0" class="data" id="<?= $this->getId() ?>_table">
|
109 |
+
<?php foreach ($this->getColumns() as $_column): ?>
|
110 |
+
<col <?= $_column->getHtmlProperty() ?> />
|
111 |
+
<?php endforeach; ?>
|
112 |
+
<?php if ($this->getHeadersVisibility() || $this->getFilterVisibility()): ?>
|
113 |
+
<thead>
|
114 |
+
<?php if ($this->getHeadersVisibility()): ?>
|
115 |
+
<tr class="headings">
|
116 |
+
<?php foreach ($this->getColumns() as $_column): ?>
|
117 |
+
<th<?= $_column->getHeaderHtmlProperty() ?>><span class="nobr"><?= $_column->getHeaderHtml() ?></span></th>
|
118 |
+
<?php endforeach; ?>
|
119 |
+
</tr>
|
120 |
+
<?php endif; ?>
|
121 |
+
<?php if ($this->getFilterVisibility()): ?>
|
122 |
+
<tr class="filter">
|
123 |
+
<?php $i=0;foreach ($this->getColumns() as $_column): ?>
|
124 |
+
<th<?= $_column->getHeaderHtmlProperty() ?>><?= $_column->getFilterHtml() ?></th>
|
125 |
+
<?php endforeach; ?>
|
126 |
+
</tr>
|
127 |
+
<?php endif ?>
|
128 |
+
</thead>
|
129 |
+
<?php endif; ?>
|
130 |
+
<?php if ($this->getCountTotals()): ?>
|
131 |
+
<tfoot>
|
132 |
+
<tr class="totals">
|
133 |
+
<?php foreach ($this->getColumns() as $_column): ?>
|
134 |
+
<th class="<?= $_column->getCssProperty() ?>"><?= ($_column->hasTotalsLabel()) ? $_column->getTotalsLabel() : $_column->getRowField($_column->getGrid()->getTotals()) ?> </th>
|
135 |
+
<?php endforeach; ?>
|
136 |
+
</tr>
|
137 |
+
</tfoot>
|
138 |
+
<?php endif; ?>
|
139 |
+
|
140 |
+
<tbody>
|
141 |
+
<?php if (($this->getCollection()->getSize()>0) && (!$this->getIsCollapsed())): ?>
|
142 |
+
<?php foreach ($this->getCollection() as $_index=>$_item): ?>
|
143 |
+
<tr title="<?= $this->getRowUrl($_item) ?>"<?php if ($_class = $this->getRowClass($_item)):?> class="<?= $_class; ?>"<?php endif;?> >
|
144 |
+
<?php $i=0;foreach ($this->getColumns() as $_column): ?>
|
145 |
+
|
146 |
+
<?php if ($this->shouldRenderCell($_item, $_column)):?>
|
147 |
+
<?php $_rowspan = $this->getRowspan($_item, $_column);?>
|
148 |
+
<td <?= ($_rowspan ? 'rowspan="' . $_rowspan . '" ' : '') ?>class="<?= $_column->getCssProperty() ?> <?= ++$i==$numColumns?'last':'' ?>">
|
149 |
+
<?= (($_html = $_column->getRowField($_item)) != '' ? $_html : ' ') ?>
|
150 |
+
</td>
|
151 |
+
<?php if ($this->shouldRenderEmptyCell($_item, $_column)):?>
|
152 |
+
<td colspan="<?= $this->getEmptyCellColspan($_item)?>" class="last"><?= $this->getEmptyCellLabel()?></td>
|
153 |
+
<?php endif;?>
|
154 |
+
<?php endif;?>
|
155 |
+
|
156 |
+
<?php endforeach; ?>
|
157 |
+
</tr>
|
158 |
+
<?php if ($_multipleRows = $this->getMultipleRows($_item)):?>
|
159 |
+
<?php foreach ($_multipleRows as $_i):?>
|
160 |
+
<tr>
|
161 |
+
<?php $i=0;foreach ($this->getMultipleRowColumns($_i) as $_column): ?>
|
162 |
+
<td class="<?= $_column->getCssProperty() ?> <?= ++$i==$numColumns-1?'last':'' ?>">
|
163 |
+
<?= (($_html = $_column->getRowField($_i)) != '' ? $_html : ' ') ?>
|
164 |
+
</td>
|
165 |
+
<?php endforeach; ?>
|
166 |
+
</tr>
|
167 |
+
<?php endforeach;?>
|
168 |
+
<?php endif;?>
|
169 |
+
|
170 |
+
<?php if ($this->shouldRenderSubTotal($_item)): ?>
|
171 |
+
<tr class="subtotals">
|
172 |
+
<?php $i = 0; foreach ($this->getSubTotalColumns() as $_column): ?>
|
173 |
+
<td class="<?= $_column->getCssProperty() ?> <?= ++$i == $numColumns ? 'last' : '' ?>">
|
174 |
+
<?= ($_column->hasSubtotalsLabel() ? $_column->getSubtotalsLabel() :
|
175 |
+
$_column->getRowField($this->getSubTotalItem($_item))
|
176 |
+
);
|
177 |
+
?>
|
178 |
+
</td>
|
179 |
+
<?php endforeach; ?>
|
180 |
+
</tr>
|
181 |
+
<?php endif; ?>
|
182 |
+
<?php endforeach; ?>
|
183 |
+
<?php elseif ($this->getEmptyText()): ?>
|
184 |
+
<tr>
|
185 |
+
<td class="empty-text <?= $this->getEmptyTextClass() ?>" colspan="<?= $numColumns ?>"><?= $this->getEmptyText() ?></td>
|
186 |
+
</tr>
|
187 |
+
<?php endif; ?>
|
188 |
+
</tbody>
|
189 |
+
|
190 |
+
</table>
|
191 |
+
</div>
|
192 |
+
</div>
|
193 |
+
<?php if($this->canDisplayContainer()): ?>
|
194 |
+
</div>
|
195 |
+
<script type="text/javascript">
|
196 |
+
//<![CDATA[
|
197 |
+
<?= $this->getJsObjectName() ?> = new varienGrid('<?= $this->getId() ?>', '<?= $this->getGridUrl() ?>', '<?= $this->getVarNamePage() ?>', '<?= $this->getVarNameSort() ?>', '<?= $this->getVarNameDir() ?>', '<?= $this->getVarNameFilter() ?>');
|
198 |
+
<?= $this->getJsObjectName() ?>.useAjax = '<?= $this->getUseAjax() ?>';
|
199 |
+
<?php if($this->getRowClickCallback()): ?>
|
200 |
+
<?= $this->getJsObjectName() ?>.rowClickCallback = <?= $this->getRowClickCallback() ?>;
|
201 |
+
<?php endif; ?>
|
202 |
+
<?php if($this->getCheckboxCheckCallback()): ?>
|
203 |
+
<?= $this->getJsObjectName() ?>.checkboxCheckCallback = <?= $this->getCheckboxCheckCallback() ?>;
|
204 |
+
<?php endif; ?>
|
205 |
+
<?php if($this->getRowInitCallback()): ?>
|
206 |
+
<?= $this->getJsObjectName() ?>.initRowCallback = <?= $this->getRowInitCallback() ?>;
|
207 |
+
<?= $this->getJsObjectName() ?>.initGridRows();
|
208 |
+
<?php endif; ?>
|
209 |
+
<?php if($this->getMassactionBlock()->isAvailable()): ?>
|
210 |
+
<?= $this->getMassactionBlock()->getJavaScript() ?>
|
211 |
+
<?php endif ?>
|
212 |
+
<?= $this->getAdditionalJavaScript(); ?>
|
213 |
+
//]]>
|
214 |
+
</script>
|
215 |
+
<?php endif; ?>
|
216 |
+
<?php endif ?>
|
app/design/adminhtml/default/default/template/esendex/widget/messages/info.phtml
ADDED
@@ -0,0 +1,25 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (C) 2015 Esendex Ltd.
|
4 |
+
*
|
5 |
+
* This program is free software: you can redistribute it and/or modify
|
6 |
+
* it under the terms of the Esendex Community License v1.0 as published by
|
7 |
+
* the Esendex Ltd.
|
8 |
+
*
|
9 |
+
* This program is distributed in the hope that it will be useful,
|
10 |
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11 |
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12 |
+
* Esendex Community Licence v1.0 for more details.
|
13 |
+
*
|
14 |
+
* You should have received a copy of the Esendex Community Licence v1.0
|
15 |
+
* along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
16 |
+
*/
|
17 |
+
|
18 |
+
$helper = Mage::helper('esendex_sms');
|
19 |
+
?>
|
20 |
+
|
21 |
+
<div style="text-align: right;">
|
22 |
+
<a href="https://www.esendex.com/redirect?i=sentmessages&ls=magento&sc=connectstore&sd=v1" title="<?= $helper->__('Download all messages') ?>">
|
23 |
+
<?= $helper->__('Download all messages') ?>
|
24 |
+
</a>
|
25 |
+
</div>
|
app/etc/modules/Esendex_Events.xml
ADDED
@@ -0,0 +1,29 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<!--
|
4 |
+
Copyright (C) 2015 Esendex Ltd.
|
5 |
+
|
6 |
+
This program is free software: you can redistribute it and/or modify
|
7 |
+
it under the terms of the Esendex Community License v1.0 as published by
|
8 |
+
the Esendex Ltd.
|
9 |
+
|
10 |
+
This program is distributed in the hope that it will be useful,
|
11 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
Esendex Community Licence v1.0 for more details.
|
14 |
+
|
15 |
+
You should have received a copy of the Esendex Community Licence v1.0
|
16 |
+
along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
17 |
+
-->
|
18 |
+
|
19 |
+
<config>
|
20 |
+
<modules>
|
21 |
+
<Esendex_Events>
|
22 |
+
<active>true</active>
|
23 |
+
<codePool>community</codePool>
|
24 |
+
<depends>
|
25 |
+
<Esendex_Sms />
|
26 |
+
</depends>
|
27 |
+
</Esendex_Events>
|
28 |
+
</modules>
|
29 |
+
</config>
|
app/etc/modules/Esendex_Sms.xml
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<!--
|
4 |
+
Copyright (C) 2015 Esendex Ltd.
|
5 |
+
|
6 |
+
This program is free software: you can redistribute it and/or modify
|
7 |
+
it under the terms of the Esendex Community License v1.0 as published by
|
8 |
+
the Esendex Ltd.
|
9 |
+
|
10 |
+
This program is distributed in the hope that it will be useful,
|
11 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 |
+
Esendex Community Licence v1.0 for more details.
|
14 |
+
|
15 |
+
You should have received a copy of the Esendex Community Licence v1.0
|
16 |
+
along with this program. If not, see <http://www.esendex.com/esendexcommunitylicence/>
|
17 |
+
-->
|
18 |
+
|
19 |
+
<config>
|
20 |
+
<modules>
|
21 |
+
<Esendex_Sms>
|
22 |
+
<active>true</active>
|
23 |
+
<codePool>community</codePool>
|
24 |
+
<depends></depends>
|
25 |
+
</Esendex_Sms>
|
26 |
+
</modules>
|
27 |
+
</config>
|
app/locale/de_DE/Esendex_Sms.csv
ADDED
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"<strong>Your Esendex account %s has expired or your account details are incorrect. </strong>To continue sending SMS <a href=""%s"" target=""_blank"">buy messages</a> or contact us at <a href=""mailto:support@esendex.com"">support@esendex.com.</a>","<strong>Ihr Esendex-Konto %s ist nicht mehr gültig oder Ihre Kontodaten sind inkorrekt. </strong>Um weiterhin SMS zu versenden, <a href=""%s"" target=""_blank"">kaufen Sie bitte neue Nachrichten</a> oder kontaktieren Sie uns unter <a href=""mailto:support@esendex.de"">support@esendex.de.</a>"
|
2 |
+
"<strong>You have %d days left on your Esendex account %s. </strong><a href=""%s"" target=""_blank"">Buy messages</a> to extend your account.","<strong>Ihr Esendex-Konto ist nur noch %d Tage lang gültig. </strong><a href=""%s"" target=""_blank"">Kaufen Sie neue Nachrichten,</a> um Ihr Konto zu verlängern."
|
3 |
+
"Your Esendex account %1$s has %2$d messages left","Auf Ihrem Esendex-Konto %1$s sind noch %2$d Nachrichten verbleibend."
|
4 |
+
,
|
5 |
+
"Add New Notification","Neue Nachricht hinzufügen"
|
6 |
+
"Manage Existing Notifications","Bestehende Nachrichten verwalten"
|
7 |
+
"Mobile Sales Report","Verkaufsbericht für den mobilen Vertrieb"
|
8 |
+
"View Sent Messages","Gesendete Nachrichten ansehen"
|
9 |
+
"Settings","Einstellungen"
|
10 |
+
,
|
11 |
+
"Esendex Module Configuration","Esendex-Modul Konfiguration"
|
12 |
+
"Esendex Account Reference","Esendex Referenzkonto"
|
13 |
+
"Your Esendex account reference number e.g. EX0012345","Referenznummer Ihres Esendex-Kontos z.B. EX0012345"
|
14 |
+
"Esendex Username","Esendex Benutzername"
|
15 |
+
"Your Esendex username, typically your email address e.g. joe.bloggs@company.com","Ihr Esendex Benutzername, normalerweise Ihre E-Mail Adresse z.B. joe.bloggs@company.com"
|
16 |
+
"Esendex Password","Esendex Passwort"
|
17 |
+
"Your Esendex password","Ihr Esendex Passwort"
|
18 |
+
"Warn me when messages go below","Bitte erinnern, wenn weniger als x Nachrichten verbleibend sind"
|
19 |
+
"Debug Mode","Debug Modus"
|
20 |
+
"Toggle debug mode. Useful for logging API calls and other important information","Debug Modus aktivieren. Hilfreich für API Registrierungs-Anrufe und weitere wichtige Informationen"
|
21 |
+
"Enable SMS Sending","SMS-Versand aktivieren"
|
22 |
+
"Select 'No' to disable SMS sending","""Nein"" auswählen, um den SMS Versand zu deaktivieren"
|
23 |
+
"Schedule Mobile Sales Report","Verkaufsbericht für den mobilen Vertrieb erstellen"
|
24 |
+
"Cron Time","Cron Zeit"
|
25 |
+
"Sales Reports will be sent at this time each day.","Verkaufsberichte werden täglich zu dieser Zeit versendet."
|
26 |
+
,
|
27 |
+
"Order Shipped","Bestellung wurde versendet"
|
28 |
+
"Order Shipped with Tracking","Bestellung wurde mit Nachverfolgung versendet"
|
29 |
+
"Order Status Changed - Canceled","Änderung des Bestellstatus - Storniert"
|
30 |
+
"Order Status Changed - Closed","Änderung des Bestellstatus - Abgeschlossen"
|
31 |
+
"Order Status Changed - Complete","Änderung des Bestellstatus - Fertiggestellt"
|
32 |
+
"Order Status Changed - On Hold","Änderung des Bestellstatus - Angehalten"
|
33 |
+
"Order Status Changed - Payment Review","Änderung des Bestellstatus - Überprüfung der Zahlung"
|
34 |
+
"Order Status Changed - Pending","Änderung des Bestellstatus - Ausstehend"
|
35 |
+
"Order Status Changed - Pending Payment","Änderung des Bestellstatus - Ausstehende Zahlung"
|
36 |
+
"Order Status Changed - Processing","Änderung des Bestellstatus - In Bearbeitung"
|
37 |
+
"Order Status Changed - Suspected Fraud","Änderung des Bestellstatus - Verdacht auf Betrug"
|
38 |
+
,
|
39 |
+
"Add New Notification","Neue Benachrichtigung hinzufügen"
|
40 |
+
"Notification","Benachrichtigung"
|
41 |
+
"Event","Veranstaltung"
|
42 |
+
"Please Select Event","Veranstaltung auswählen"
|
43 |
+
"Store Views","Shop Besuche"
|
44 |
+
"Continue","Weiter"
|
45 |
+
"Save and Continue Edit","Speichern und weiter bearbeiten"
|
46 |
+
,
|
47 |
+
"Add New Notification for Event '%s'","Neue Benachrichtigung zur Veranstaltung hinzufügen '%s'"
|
48 |
+
"Notification","Benachrichtigung"
|
49 |
+
"From","Von"
|
50 |
+
"This is who your message will show as being from on the receiving handset e.g. Mystore.","Das ist der Absender der dem Empfänger auf seinem Empfangsgerät angezeigt wird z.B. Mystore."
|
51 |
+
"Message","Nachricht"
|
52 |
+
"These counts do not include variables.","Diese Anzahl beinhaltet keine Variablen"
|
53 |
+
"Reset to Default Message","Auf Standardnachricht zurücksetzen"
|
54 |
+
"Available Variables","Verfügbare Variablen"
|
55 |
+
"For more information about using variables please visit our <a target=""_blank"" href=""%s"">support page</a>","Für weitere Informationen bezüglich der Verwendung von Variablen besuchen Sie bitte <a target=""_blank"" href=""%s"">unsere Support Seite</a>"
|
56 |
+
"Description","Beschreibung"
|
57 |
+
"Status","Status"
|
58 |
+
"Enabled","Aktiviert"
|
59 |
+
"Disabled","Deaktiviert"
|
60 |
+
"Save Notification","Nachricht speichern"
|
61 |
+
,
|
62 |
+
"Edit Notification '%s' for event '%s'","Nachricht '%s' für die Veranstaltung '%s' ändern"
|
63 |
+
"Delete Notification","Benachrichtigung löschen"
|
64 |
+
,
|
65 |
+
"Please select the Event Type","Bitte Art der Veranstaltung wählen"
|
66 |
+
"Message contains variables which are not available","Nachricht enthält nicht verfügbare Variablen"
|
67 |
+
"Message must be between 1 and 612 characters","Nachricht muss zwischen 1 und 612 Zeichen lang sein"
|
68 |
+
,
|
69 |
+
"Manage Notifications","Benachrichtigungen verwalten"
|
70 |
+
,
|
71 |
+
"Id","ID"
|
72 |
+
"Event","Veranstaltung"
|
73 |
+
"Description","Beschreibung"
|
74 |
+
"Status","Status"
|
75 |
+
"Store Views","Shop Besuche"
|
76 |
+
"From","Von"
|
77 |
+
"Created at","Erstellt am"
|
78 |
+
"Updated at","Aktualisiert am"
|
79 |
+
"Action","Aktion"
|
80 |
+
,
|
81 |
+
"Add Notification","Benachrichtigung hinzufügen"
|
82 |
+
"Edit","Bearbeiten"
|
83 |
+
"Delete","Löschen"
|
84 |
+
"Change status","Status ändern"
|
85 |
+
"Are you sure?","Sind Sie sich sicher?"
|
86 |
+
,
|
87 |
+
"Add Mobile Sales Report","Verkaufsbericht für den mobilen Vertrieb hinzufügen"
|
88 |
+
,
|
89 |
+
"Save Mobile Sales Report","Bericht für den mobilen Vertrieb speichern"
|
90 |
+
"Admin Sales Report","Bericht für den mobilen Vertrieb verwalten"
|
91 |
+
,
|
92 |
+
"Add New Mobile Sales Report","Neuen Bericht für den mobilen Vertrieb hinzufügen"
|
93 |
+
"Admin Sales Report","Verkaufsbericht für den mobilen Vertrieb verwalten"
|
94 |
+
,
|
95 |
+
"Admin Sales Report' specific fields","Spezifische Felder des Verkaufsberichts für den mobilen Vertrieb verwalten"
|
96 |
+
"Recipients","Empfänger"
|
97 |
+
"Enter one mobile number per line. To send internationally please add the country code e.g. +447875123456","Bitte fügen Sie pro Zeile eine Mobilnummer hinzu. Um einen internationalen Versand durchzuführen, fügen Sie bitte den entsprechenden Ländercode hinzu, z.B. +447875123456"
|
98 |
+
"Frequency","Frequenz"
|
99 |
+
"Daily","Täglich"
|
100 |
+
"Weekly","Wöchentlich"
|
101 |
+
"Monthly","Monatlich"
|
102 |
+
"Start Date","Anfangsdatum"
|
103 |
+
"Should be a date in the future","Datum muss in der Zukunft liegen"
|
104 |
+
,
|
105 |
+
"Edit Mobile Sales Report '%s'","Mobile Verkaufsberichte ändern %s"
|
106 |
+
"Delete Mobile Sales Report","Verkaufsbericht für den mobilen Versand löschen"
|
107 |
+
,
|
108 |
+
"The Sender ID must be between 1 and 11 characters when it contains letters, numbers, spaces and special characters (* $ ? ! ” # % & _ - , . @ ' +), or between 5 and 20 when it contains just numbers.","Die Sender-ID muss zwischen 1 und 11 Zeichen lang sein, wenn sie Buchstaben, Zahlen, Leerzeichen und Sonderzeichen (* $ ? ! ” # % & _ - , . @ ' +) enthält , oder zwischen 5 und 20 Zeichen, wenn sie nur Zahlen enthält."
|
109 |
+
,
|
110 |
+
"Sent Messages","Gesendete Nachrichten"
|
111 |
+
,
|
112 |
+
"Type","Typ"
|
113 |
+
"From","Von"
|
114 |
+
"Recipient","Empfänger"
|
115 |
+
"Summary","Übersicht"
|
116 |
+
"Status","Status"
|
117 |
+
"Submitted At","Erstellt"
|
118 |
+
"Sent At","Gesendet"
|
119 |
+
"Delivered At","Zugestellt"
|
120 |
+
"Last Status At","Letzter Status"
|
121 |
+
,
|
122 |
+
"Previous page","Vorherige Seite"
|
123 |
+
"Next page","Nächste Seite"
|
124 |
+
"Page","Seite"
|
125 |
+
"of %s pages","von %s Seiten"
|
126 |
+
"View","Anzeigen"
|
127 |
+
"per page","pro Seite"
|
128 |
+
"Total %d records found","Insgesamt %d Aufzeichnungen gefunden"
|
129 |
+
,
|
130 |
+
"characters","Zeichen"
|
131 |
+
"SMS parts","SMS"
|
132 |
+
,
|
133 |
+
"Account Number","Kontonummer"
|
134 |
+
"Account Type","Kontotyp"
|
135 |
+
"Credits Remaining","Verfügbares Guthaben"
|
136 |
+
"Buy message credits","Nachrichtenguthaben kaufen"
|
137 |
+
"SMS Marketing","SMS Marketing"
|
138 |
+
"SMS auto responses","Automatische SMS Antwort"
|
139 |
+
"Download sent items","Gesendete Nachrichten herunterladen"
|
140 |
+
"Help & Support","Hilfe und Support"
|
141 |
+
"Download all messages","Alle Nachrichten herunterladen"
|
142 |
+
,
|
143 |
+
"No Available Variables","Keine Variablen verfügbar"
|
144 |
+
"To receive replies this will need to be set to your virtual mobile number +%s","Verwenden Sie Ihre virtuelle Mobilnummer +%s, um Antworten empfangen zu können"
|
145 |
+
"To receive replies you will need to purchase a virtual mobile number","Um Antworten empfangen zu können, benötigen Sie eine kostenpflichtige virtuelle Mobilnummer"
|
146 |
+
"Note: To prevent spamming the from address will be ignored for trial accounts. <a href=""%s"">Purchase Credits</a> to upgrade your account","Hinweis: Um Spam zu vermeiden, wird die Absender-Adresse bei Testkontos nicht berücksichtigt. <a href=""%s"">Bitte laden Sie Ihr Guthaben</a> auf für eine optimierte Version Ihres Kontos."
|
147 |
+
,
|
148 |
+
"Total of %d notifications were successfully updated","Insgesamt wurden %d Nachrichten erfolgreich aktualisiert"
|
149 |
+
"Total of %d notification was successfully updated","Insgesamt wurde %d Nachricht erfolgreich aktualisiert"
|
150 |
+
"There was an error updating notifications","Beim Update der Nachrichten ist ein Fehler aufgetreten"
|
151 |
+
"Please select Notifications","Bitte Nachrichten auswählen"
|
152 |
+
"Total of %d notifications were successfully deleted","Alle %d Nachrichten erfolgreich gelöscht"
|
153 |
+
"Total of %d notification was successfully deleted","Insgesamt wurde %d Nachricht erfolgreich gelöscht"
|
154 |
+
"There was an error deleting notifications","Beim Löschen der Nachrichten ist ein Fehler aufgetreten"
|
155 |
+
"Please select Notifications to delete","Bitte Nachrichten die gelöscht werden sollen auswählen"
|
156 |
+
"There was an error deleting notification","Beim Löschen der Nachrichten ist ein Fehler aufgetreten"
|
157 |
+
"Notification was successfully deleted","Nachrichten wurde erfolgreich gelöscht"
|
158 |
+
"There was a problem saving the notification","Beim Speichern der Nachricht ist ein Problem aufgetreten"
|
159 |
+
"Notification was successfully saved","Nachricht wurde erfolgreich gespeichert"
|
160 |
+
"This notification no longer exists","Diese Nachricht existiert nicht mehr"
|
161 |
+
"Total of %d Admin Sales Reports were successfully updated","Alle %d Admin Verkaufsberichte wurden erfolgreich aktualisiert"
|
162 |
+
"There was an error updating Admin Sales Reports","Bei der Aktualisierung der Admin Verkaufsberichte ist ein Fehler aufgetreten"
|
163 |
+
"Please select Admin Sales Reports","Admin Verkaufsbericht bitte auswählen"
|
164 |
+
"Total of %d Admin Sales Reports were successfully deleted","Alle %d Admin Verkaufsberichte wurden erfolgreich gelöscht"
|
165 |
+
"There was an error deleting Admin Sales Reports","Beim Löschen der Admin Verkaufsberichte ist ein Fehler aufgetreten"
|
166 |
+
"Please select Admin Sales Reports to delete","Admin Verkaufsbericht bitte auswählen der gelöscht werden soll"
|
167 |
+
"There was an error deleting Mobile Sales Report","Beim Löschen des Verkaufsberichts zum mobilen Vertrieb ist ein Fehler aufgetreten"
|
168 |
+
"Mobile Sales Report was successfully deleted","Verkaufsbericht zum mobilen Vertrieb erfolgreich gelöscht"
|
169 |
+
"There was a problem saving the Mobile Sales Report","Beim Speichern des Verkaufsberichts zum mobilen Vertrieb ist ein Problem aufgetreten"
|
170 |
+
"Mobile Sales Report was successfully saved","Verkaufsericht zum mobilen Vertrieb wurde erfolgreich gespeichert"
|
171 |
+
"This Mobile Sales Report no longer exists","Dieser Verkaufsbericht zum mobilen Vertrieb existiert nicht mehr"
|
172 |
+
"Manage Mobile Sales Reports","Verkaufsberichte zum mobilen Vertrieb verwalten"
|
173 |
+
"You'll need to enter your Esendex Account details below to send SMS notifications","Bitte die Daten Ihres Esendex-Kontos unten eingeben, um SMS Nachrichten zu versenden"
|
174 |
+
"Don't have an Esendex Account? %sCreate a FREE TRIAL account%s - we'll even give you 25 FREE SMS to get you started!","Haben Sie noch kein Esendex-Konto? %sErstellen Sie ein KOSTENLOSES TESTKONTO%s - wir schenken Ihnen 25 gratis SMS zum Testen!"
|
175 |
+
"Your Esendex Account details were not recognised. Your account may have expired or the details are incorrect","Ihre Esendex-Kontodaten wurden nicht erkannt. Ihr Konto könnte abgelaufen sein oder Ihre Daten sind nicht korrekt. "
|
176 |
+
"Please double check your account details or contact our support team at <a href=""mailto:support@esendex.com"">support@esendex.com</a>","Bitte überprüfen Sie nochmals Ihre Kontodaten oder kontaktieren Sie unser Support Team unter <a href=""mailto:support@esendex.de"">support@esendex.de</a>"
|
app/locale/en_GB/Esendex_Sms.csv
ADDED
File without changes
|
app/locale/en_US/Esendex_Sms.csv
ADDED
File without changes
|
app/locale/es_ES/Esendex_Sms.csv
ADDED
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"<strong>Your Esendex account %s has expired or your account details are incorrect. </strong>To continue sending SMS <a href=""%s"" target=""_blank"">buy messages</a> or contact us at <a href=""mailto:support@esendex.com"">support@esendex.com.</a>","<strong>Tu cuenta de Esendex %s ha expirado o se han introducido datos incorrectos. </strong>Por favor, contacta a <a href=""mailto:soporte@esendex.com"">soporte@esendex.com</a> o entra en tu cuenta para <a href=""%s"" target=""_blank"">comprar más SMS.</a>"
|
2 |
+
"<strong>You have %d days left on your Esendex account %s. </strong><a href=""%s"" target=""_blank"">Buy messages</a> to extend your account.","<strong>Tienes %d días hasta que caduque tu cuenta Esendex %s. </strong><a href=""%s"" target=""_blank"">Puedes comprar mensajes</a> para que tu cuenta no caduque."
|
3 |
+
"Your Esendex account %1$s has %2$d messages left","Tu cuenta %1$s Esendex tiene %2$d créditos SMS disponibles"
|
4 |
+
,
|
5 |
+
"Add New Notification","Añadir Notificación Nueva"
|
6 |
+
"Manage Existing Notifications","Administrar Notificaciones existentes"
|
7 |
+
"Mobile Sales Report","Informe de Ventas Móvil"
|
8 |
+
"View Sent Messages","Ver mensajes enviados"
|
9 |
+
"Settings","Ajustes"
|
10 |
+
,
|
11 |
+
"Esendex Module Configuration","Configuración del modulo Esendex"
|
12 |
+
"Esendex Account Reference","Referencia de cuenta Esendex"
|
13 |
+
"Your Esendex account reference number e.g. EX0012345","Ejemplo de tu número de referencia de cuenta de Esendex EX0012345"
|
14 |
+
"Esendex Username","Nombre de usuario Esendex"
|
15 |
+
"Your Esendex username, typically your email address e.g. joe.bloggs@company.com","Tu nombre de usuario Esendex normalmente es tu email, por ejemplo, joe.bloggs@company.com"
|
16 |
+
"Esendex Password","Contraseña Esendex"
|
17 |
+
"Your Esendex password","Tu contraseña Esendex"
|
18 |
+
"Warn me when messages go below","Avisarme cuando los créditos de SMS esten por debajo de x"
|
19 |
+
"Debug Mode","Modo Debug"
|
20 |
+
"Toggle debug mode. Useful for logging API calls and other important information","Activar el modo debug. Útil para comunicación con una API e información importante"
|
21 |
+
"Enable SMS Sending","Habilitar el envío de SMS"
|
22 |
+
"Select 'No' to disable SMS sending","Selecciona ""No"" para desactivar el envío de SMS"
|
23 |
+
"Schedule Mobile Sales Report","Programa Informe de Ventas Móvil"
|
24 |
+
"Cron Time","Tiempo de Cron"
|
25 |
+
"Sales Reports will be sent at this time each day.","Informes de Ventas se enviarán a esta hora todos los días."
|
26 |
+
,
|
27 |
+
"Order Shipped","Pedido Enviado"
|
28 |
+
"Order Shipped with Tracking","Pedido Enviado con Tracking"
|
29 |
+
"Order Status Changed - Canceled","Cambio en el estado del pedido - Cancelado"
|
30 |
+
"Order Status Changed - Closed","Cambio en el estado del pedido – Cerrado"
|
31 |
+
"Order Status Changed - Complete","Cambio en el estado del pedido - Completa"
|
32 |
+
"Order Status Changed - On Hold","Cambio en el estado del pedido - En Espera"
|
33 |
+
"Order Status Changed - Payment Review","Cambio en el estado del pedido - Revisión de pago"
|
34 |
+
"Order Status Changed - Pending","Cambio en el estado del pedido - Pendiente"
|
35 |
+
"Order Status Changed - Pending Payment","Cambio en el estado del pedido - Pago Pendiente"
|
36 |
+
"Order Status Changed - Processing","Cambio en el estado del pedido - Procesando"
|
37 |
+
"Order Status Changed - Suspected Fraud","Cambio en el estado del pedido - Sospecha Fraude"
|
38 |
+
,
|
39 |
+
"Add New Notification","Añadir Notificación nueva"
|
40 |
+
"Notification","Notificación"
|
41 |
+
"Event","Evento"
|
42 |
+
"Please Select Event","Selección de Evento"
|
43 |
+
"Store Views","Vistas a Tienda "
|
44 |
+
"Continue","Continuar"
|
45 |
+
"Save and Continue Edit","Guardar y continuar editando"
|
46 |
+
,
|
47 |
+
"Add New Notification for Event '%s'","Añadir Notificación de Evento Nueva a '%s'"
|
48 |
+
"Notification","Notificación"
|
49 |
+
"From","De"
|
50 |
+
"This is who your message will show as being from on the receiving handset e.g. Mystore.","Este es el emisor del mensaje que se mostrará al receptor en el teléfono, por ejemplo Mitienda."
|
51 |
+
"Message","Mensaje"
|
52 |
+
"These counts do not include variables.","No incluyen cambios de las variables dinamicas."
|
53 |
+
"Reset to Default Message","Restablecer valores predeterminados del Mensaje"
|
54 |
+
"Available Variables","Variables disponibles"
|
55 |
+
"For more information about using variables please visit our <a target=""_blank"" href=""%s"">support page</a>","Para obtener más información sobre el uso de las variables por favor visita <a target=""_blank"" href=""%s"">nuestra página de soporte</a>"
|
56 |
+
"Description","Descripción"
|
57 |
+
"Status","Estado"
|
58 |
+
"Enabled","Activado"
|
59 |
+
"Disabled","Desactivado"
|
60 |
+
"Save Notification","Guardar Notificación"
|
61 |
+
,
|
62 |
+
"Edit Notification '%s' for event '%s'","Editar Notificación '%s' para el evento '%s'"
|
63 |
+
"Delete Notification","Eliminar Notificación"
|
64 |
+
,
|
65 |
+
"Please select the Event Type","Por favor selecciona el tipo de evento"
|
66 |
+
"Message contains variables which are not available","El mensaje contiene variables que no están disponibles"
|
67 |
+
"Message must be between 1 and 612 characters","El mensaje debe contener entre 1 y 612 caracteres"
|
68 |
+
,
|
69 |
+
"Manage Notifications","Administrar Notificaciones existentes"
|
70 |
+
,
|
71 |
+
"Id","Identificación"
|
72 |
+
"Event","Evento"
|
73 |
+
"Description","Descripción"
|
74 |
+
"Status","Estado"
|
75 |
+
"Store Views","Vistas a Tienda "
|
76 |
+
"From","De"
|
77 |
+
"Created at","Creado"
|
78 |
+
"Updated at","Actualizado"
|
79 |
+
"Action","Acción"
|
80 |
+
,
|
81 |
+
"Add Notification","Añadir Notificación"
|
82 |
+
"Edit","Editar"
|
83 |
+
"Delete","Borrar"
|
84 |
+
"Change status","Cambio de estado"
|
85 |
+
"Are you sure?","Estás seguro?"
|
86 |
+
,
|
87 |
+
"Add Mobile Sales Report","Añadir Informe de Ventas Móvil"
|
88 |
+
,
|
89 |
+
"Save Mobile Sales Report","Guardar Informe de Ventas Móvil"
|
90 |
+
"Admin Sales Report","Admin de Informe de Ventas"
|
91 |
+
,
|
92 |
+
"Add New Mobile Sales Report","Añadir Nuevo Informe de Ventas Móvil"
|
93 |
+
"Admin Sales Report","Admin de Informe de Ventas "
|
94 |
+
,
|
95 |
+
"Admin Sales Report' specific fields","Campos específicos del Informe de Ventas"
|
96 |
+
"Recipients","Destinatarios"
|
97 |
+
"Enter one mobile number per line. To send internationally please add the country code e.g. +447875123456","Introduce un número de móvil por línea. Para enviar de forma internacional hay que añadir el código de país, por ejemplo +447875123456"
|
98 |
+
"Frequency","Frecuencia"
|
99 |
+
"Daily","Diario"
|
100 |
+
"Weekly","Semanal"
|
101 |
+
"Monthly","Mensual"
|
102 |
+
"Start Date","Fecha de Inicio"
|
103 |
+
"Should be a date in the future","Debe ser una fecha en el futuro"
|
104 |
+
,
|
105 |
+
"Edit Mobile Sales Report '%s'","Editar el Informe de Ventas Móvil '%s'"
|
106 |
+
"Delete Mobile Sales Report","Eliminar Informe de Ventas Móvil"
|
107 |
+
,
|
108 |
+
"The Sender ID must be between 1 and 11 characters when it contains letters, numbers, spaces and special characters (* $ ? ! ” # % & _ - , . @ ' +), or between 5 and 20 when it contains just numbers.","La identificación del remitente debe tener entre 1 y 11 caracteres cuando contiene letras, números, espacios y caracteres especiales (* $ ""#% & _ -., @ '+). O entre 5 y 20 cuando contiene sólo números."
|
109 |
+
,
|
110 |
+
"Sent Messages","Mensajes enviados"
|
111 |
+
,
|
112 |
+
"Type","Tipo"
|
113 |
+
"From","De"
|
114 |
+
"Recipient","Destinatario"
|
115 |
+
"Summary","Resumen"
|
116 |
+
"Status","Estado"
|
117 |
+
"Submitted At","Procesado "
|
118 |
+
"Sent At","Enviado "
|
119 |
+
"Delivered At","Entregado"
|
120 |
+
"Last Status At","Último Estado"
|
121 |
+
,
|
122 |
+
"Previous page","Pagina anterior"
|
123 |
+
"Next page","Siguiente página"
|
124 |
+
"Page","Página"
|
125 |
+
"of %s pages","de %s páginas"
|
126 |
+
"View","Vista"
|
127 |
+
"per page","por página"
|
128 |
+
"Total %d records found","Total de %d registros encontrados"
|
129 |
+
,
|
130 |
+
"characters","caracteres"
|
131 |
+
"SMS parts","SMS"
|
132 |
+
,
|
133 |
+
"Account Number","Número de cuenta"
|
134 |
+
"Account Type","Tipo de cuenta"
|
135 |
+
"Credits Remaining","Créditos disponibles"
|
136 |
+
"Buy message credits","Comprar créditos"
|
137 |
+
"SMS Marketing","SMS Marketing"
|
138 |
+
"SMS auto responses","Respuesta automática SMS"
|
139 |
+
"Download sent items","Descargar los mensajes enviados"
|
140 |
+
"Help & Support","Soporte Técnico"
|
141 |
+
"Download all messages","Descargar todos los mensajes"
|
142 |
+
,
|
143 |
+
"No Available Variables","No hay variables dinamicas disponibles"
|
144 |
+
"To receive replies this will need to be set to your virtual mobile number +%s","Para recibir respuestas tendrás que usar tu número de móvil virtual +%s"
|
145 |
+
"To receive replies you will need to purchase a virtual mobile number","Para recibir respuestas tendrás que comprar un número de móvil virtual"
|
146 |
+
"Note: To prevent spamming the from address will be ignored for trial accounts. <a href=""%s"">Purchase Credits</a> to upgrade your account","Nota: Para evitar problemas de spam las cuentas de prueba no pueden editar el emisor del mensaje. <a href=""%s"">Compra créditos</a> para actualizar tu cuenta"
|
147 |
+
,
|
148 |
+
"Total of %d notifications were successfully updated","Un total del %d de notificaciones se han actualizado correctamente"
|
149 |
+
"Total of %d notification was successfully updated","Un total del %d de la notificación se ha actualizado"
|
150 |
+
"There was an error updating notifications","Se ha producido un error al actualizar las notificaciones"
|
151 |
+
"Please select Notifications","Por favor, selecciona las notificaciones"
|
152 |
+
"Total of %d notifications were successfully deleted","Un total del %d de notficiaciones se han eliminado correctamente."
|
153 |
+
"Total of %d notification was successfully deleted","Un total del %d de la notificación se ha eliminado."
|
154 |
+
"There was an error deleting notifications","Se ha producido un error al eliminar las notificaciones"
|
155 |
+
"Please select Notifications to delete","Por favor, selecciona las notificaciones que desee eliminar."
|
156 |
+
"There was an error deleting notification","Se ha producido un error al eliminar la notificación"
|
157 |
+
"Notification was successfully deleted","La notificación ha sido eliminada correctamente"
|
158 |
+
"There was a problem saving the notification","Se ha producido un error al guardar la notificación"
|
159 |
+
"Notification was successfully saved","La notificación se ha guardado correctamente"
|
160 |
+
"This notification no longer exists","Esta notificación ya no existe"
|
161 |
+
"Total of %d Admin Sales Reports were successfully updated","Un total del % de informes de ventas se han actualizado correctamente."
|
162 |
+
"There was an error updating Admin Sales Reports","Se ha producido un error al actualizar los informes de ventas"
|
163 |
+
"Please select Admin Sales Reports","Por favor, selecciona los Informes de Ventas"
|
164 |
+
"Total of %d Admin Sales Reports were successfully deleted","Un total del & de los Informes de Ventas se han eliminado correctamente."
|
165 |
+
"There was an error deleting Admin Sales Reports","Se ha producido un error al eliminar los Informes de Ventas"
|
166 |
+
"Please select Admin Sales Reports to delete","Por favor, selecciona los Informes de Ventas que desee eliminar"
|
167 |
+
"There was an error deleting Mobile Sales Report","Se ha producido un error al eliminar los Informes de Venta Móvil"
|
168 |
+
"Mobile Sales Report was successfully deleted","Los informes de Ventas Móvil se han elimando correctamente."
|
169 |
+
"There was a problem saving the Mobile Sales Report","Se ha producido un problema al guardar los Informes de Ventas Móvil"
|
170 |
+
"Mobile Sales Report was successfully saved","Los Informes de Ventas Móvil se han guardado correctamente."
|
171 |
+
"This Mobile Sales Report no longer exists","Este Informe de Ventas Móvil ya no existe."
|
172 |
+
"Manage Mobile Sales Reports","Administrar Informes de Ventas Móvil"
|
173 |
+
"You'll need to enter your Esendex Account details below to send SMS notifications","A continuación, tendrás que introducir los detalles de tu cuenta de Esendex para enviar notificaciones SMS"
|
174 |
+
"Don't have an Esendex Account? %sCreate a FREE TRIAL account%s - we'll even give you 25 FREE SMS to get you started!","¿No tienes una cuenta de Esendex? %sCrea una cuenta con nuestra prueba gratuita%s y consigue 25 SMS gratis para empezar"
|
175 |
+
"Your Esendex Account details were not recognised. Your account may have expired or the details are incorrect","Los datos de tu Cuenta Esendex no se reconocen. Puede que tu cuenta haya caducado o los datos sean incorrectos."
|
176 |
+
"Please double check your account details or contact our support team at <a href=""mailto:support@esendex.com"">support@esendex.com</a>","Por favor, comprueba los datos de cuenta o contacta con nuestro equipo técnico en: <a href=""mailto:support@esendex.es"">support@esendex.es</a>"
|
app/locale/fr_FR/Esendex_Sms.csv
ADDED
@@ -0,0 +1,176 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"<strong>Your Esendex account %s has expired or your account details are incorrect. </strong>To continue sending SMS <a href=""%s"" target=""_blank"">buy messages</a> or contact us at <a href=""mailto:support@esendex.com"">support@esendex.com.</a>","<strong>Votre compte Esendex %s a expiré ou les paramètres de votre compte sont incorrects. </strong>Pour continuer à envoyer des SMS, veuillez <a href=""%s"" target=""_blank"">acheter des SMS</a> ou nous contacter via <a href=""mailto:support@esendex.fr"">support@esendex.fr.</a>"
|
2 |
+
"<strong>You have %d days left on your Esendex account %s. </strong><a href=""%s"" target=""_blank"">Buy messages</a> to extend your account.","<strong>Votre compte Esendex %2$s sera encore valide durant %1$d jours. </strong><a href=""%3$s"" target=""_blank"">Acheter des SMS</a> afin de prolonger votre compte."
|
3 |
+
"Your Esendex account %1$s has %2$d messages left","Il ne vous reste plus que %2$d crédits disponibles sur votre compte %1$s."
|
4 |
+
,
|
5 |
+
"Add New Notification","Ajouter une Nouvelle Notification"
|
6 |
+
"Manage Existing Notifications","Gérer les Notifications Existantes"
|
7 |
+
"Mobile Sales Report","Rapport de Ventes sur Mobiles"
|
8 |
+
"View Sent Messages","Voir les Messages Envoyés"
|
9 |
+
"Settings","Paramètres"
|
10 |
+
,
|
11 |
+
"Esendex Module Configuration","Configuration du module Esendex"
|
12 |
+
"Esendex Account Reference","Référence de compte Esendex"
|
13 |
+
"Your Esendex account reference number e.g. EX0012345","Le numéro de référence de votre compte Esendex (exemple : EX0012345)"
|
14 |
+
"Esendex Username","Nom d'utilisateur Esendex"
|
15 |
+
"Your Esendex username, typically your email address e.g. joe.bloggs@company.com","Votre nom d'utilisateur Esendex, normalement votre adresse email (exemple : joe.bloggs@company.com)"
|
16 |
+
"Esendex Password","Mot de passe Esendex"
|
17 |
+
"Your Esendex password","Votre mot de passe Esendex"
|
18 |
+
"Warn me when messages go below","Me prévenir quand le nombre de SMS est inférieur à"
|
19 |
+
"Debug Mode","Mode Débogage"
|
20 |
+
"Toggle debug mode. Useful for logging API calls and other important information","Activer le mode débogage. Utile pour les appels API et autres informations importantes"
|
21 |
+
"Enable SMS Sending","Activer l'Envoi de SMS"
|
22 |
+
"Select 'No' to disable SMS sending","Selectionnez ""Non"" pour désactiver l'envoi de SMS"
|
23 |
+
"Schedule Mobile Sales Report","Programmer le Rapport de Ventes sur Mobiles"
|
24 |
+
"Cron Time","Horaire du Cron"
|
25 |
+
"Sales Reports will be sent at this time each day.","Les Rapports de Ventes seront envoyés à cette heure chaque jour."
|
26 |
+
,
|
27 |
+
"Order Shipped","Commande Expédiée"
|
28 |
+
"Order Shipped with Tracking","Commande Expédiée avec Suivi"
|
29 |
+
"Order Status Changed - Canceled","Statut de Commande Changé - Annulée"
|
30 |
+
"Order Status Changed - Closed","Statut de Commande Changé - Fermée"
|
31 |
+
"Order Status Changed - Complete","Statut de Commande Changé - Traitée"
|
32 |
+
"Order Status Changed - On Hold","Statut de Commande Changé - Suspendue"
|
33 |
+
"Order Status Changed - Payment Review","Statut de Commande Changé - Vérification de paiement"
|
34 |
+
"Order Status Changed - Pending","Statut de Commande Changé - En attente"
|
35 |
+
"Order Status Changed - Pending Payment","Statut de Commande Changé - Paiement en attente"
|
36 |
+
"Order Status Changed - Processing","Statut de Commande Changé - En cours de traitement"
|
37 |
+
"Order Status Changed - Suspected Fraud","Statut de Commande Changé - Fraude suspectée"
|
38 |
+
,
|
39 |
+
"Add New Notification","Ajouter une nouvelle Notification"
|
40 |
+
"Notification","Notification"
|
41 |
+
"Event","Événement"
|
42 |
+
"Please Select Event","Veuillez sélectionner un Événement"
|
43 |
+
"Store Views","Vues de Magasins"
|
44 |
+
"Continue","Continuer"
|
45 |
+
"Save and Continue Edit","Sauvegarder et continuer à éditer"
|
46 |
+
,
|
47 |
+
"Add New Notification for Event '%s'","Ajouter une nouvelle Notification pour Événement '%s'"
|
48 |
+
"Notification","Notification"
|
49 |
+
"From","De"
|
50 |
+
"This is who your message will show as being from on the receiving handset e.g. Mystore.","C'est le nom de la personne qui s'affichera comme étant l'émetteur sur le téléphone qui reçoit le message (exemple : Mystore)."
|
51 |
+
"Message","Message"
|
52 |
+
"These counts do not include variables.","Ces chiffres n'incluent pas les champs dynamiques"
|
53 |
+
"Reset to Default Message","Restaurer le Message par Défaut"
|
54 |
+
"Available Variables","Champs Dynamiques Disponibles"
|
55 |
+
"For more information about using variables please visit our <a target=""_blank"" href=""%s"">support page</a>","Pour plus d'informations sur l'utilisation des champs dynamiques, veuillez visiter notre <a target=""_blank"" href=""%s"">page d'assistance</a>"
|
56 |
+
"Description","Description"
|
57 |
+
"Status","Statut"
|
58 |
+
"Enabled","Activée"
|
59 |
+
"Disabled","Désactivée"
|
60 |
+
"Save Notification","Enregistrer la Notification"
|
61 |
+
,
|
62 |
+
"Edit Notification '%s' for event '%s'","Modifier la description de la Notification '%s' pour l'événement '%s'"
|
63 |
+
"Delete Notification","Supprimer la Notification"
|
64 |
+
,
|
65 |
+
"Please select the Event Type","Veuillez sélectionner le type d'Événement"
|
66 |
+
"Message contains variables which are not available","Le message contient des champs dynamiques qui ne sont pas disponibles."
|
67 |
+
"Message must be between 1 and 612 characters","Le message doit contenir entre 1 et 612 caractères."
|
68 |
+
,
|
69 |
+
"Manage Notifications","Gérer les Notifications"
|
70 |
+
,
|
71 |
+
"Id","Id"
|
72 |
+
"Event","Événement"
|
73 |
+
"Description","Description"
|
74 |
+
"Status","Statut"
|
75 |
+
"Store Views","Vues de Magasins"
|
76 |
+
"From","De"
|
77 |
+
"Created at","Créé"
|
78 |
+
"Updated at","Mis à jour"
|
79 |
+
"Action","Action"
|
80 |
+
,
|
81 |
+
"Add Notification","Ajouter une Notification"
|
82 |
+
"Edit","Modifier"
|
83 |
+
"Delete","Supprimer"
|
84 |
+
"Change status","Changer le statut"
|
85 |
+
"Are you sure?","Êtes-vous sûr ?"
|
86 |
+
,
|
87 |
+
"Add Mobile Sales Report","Ajouter un Rapport de Ventes sur Mobiles"
|
88 |
+
,
|
89 |
+
"Save Mobile Sales Report","Enregistrer le Rapport des Ventes sur Mobiles"
|
90 |
+
"Admin Sales Report","Rapport de Ventes Administrateur"
|
91 |
+
,
|
92 |
+
"Add New Mobile Sales Report","Ajouter un Nouveau Rapport de Ventes sur Mobiles"
|
93 |
+
"Admin Sales Report","Rapport de Ventes Administrateur"
|
94 |
+
,
|
95 |
+
"Admin Sales Report' specific fields","Champs spécifiques du Rapport de Ventes Administrateur"
|
96 |
+
"Recipients","Destinataires"
|
97 |
+
"Enter one mobile number per line. To send internationally please add the country code e.g. +447875123456","Entrez un numéro de téléphone mobile par ligne. Pour faire un envoi à l'international, veuillez ajouter l'indicatif pays (exemple : +447875123456)"
|
98 |
+
"Frequency","Fréquence"
|
99 |
+
"Daily","Quotidien"
|
100 |
+
"Weekly","Hebdomadaire"
|
101 |
+
"Monthly","Mensuel"
|
102 |
+
"Start Date","Date de début"
|
103 |
+
"Should be a date in the future","Doit être une date dans le future"
|
104 |
+
,
|
105 |
+
"Edit Mobile Sales Report '%s'","Modifier le Rapport de Ventes sur Mobiles '%s'"
|
106 |
+
"Delete Mobile Sales Report","Supprimer le Rapport de Ventes sur Mobiles"
|
107 |
+
,
|
108 |
+
"The Sender ID must be between 1 and 11 characters when it contains letters, numbers, spaces and special characters (* $ ? ! ” # % & _ - , . @ ' +), or between 5 and 20 when it contains just numbers.","L'identifiant de l'émetteur doit avoir entre 1 et 11 caractères s'il contient des lettres, chiffres, espaces et caractères spéciaux (* $ ? ! "" # % & _ - , . @ ' +), ou entre 5 et 20 caractères s'il ne contient que des chiffres. "
|
109 |
+
,
|
110 |
+
"Sent Messages","Messages envoyés"
|
111 |
+
,
|
112 |
+
"Type","Type"
|
113 |
+
"From","De"
|
114 |
+
"Recipient","Destinataire"
|
115 |
+
"Summary","Résumé"
|
116 |
+
"Status","Statut"
|
117 |
+
"Submitted At","Soumis"
|
118 |
+
"Sent At","Envoyé"
|
119 |
+
"Delivered At","Délivré"
|
120 |
+
"Last Status At","Dernier Statut"
|
121 |
+
,
|
122 |
+
"Previous page","Page précédente"
|
123 |
+
"Next page","Page suivante"
|
124 |
+
"Page","Page"
|
125 |
+
"of %s pages","sur %s pages"
|
126 |
+
"View","Voir"
|
127 |
+
"per page","par page"
|
128 |
+
"Total %d records found","Total %d fichiers trouvés"
|
129 |
+
,
|
130 |
+
"characters","caractères"
|
131 |
+
"SMS parts","message"
|
132 |
+
,
|
133 |
+
"Account Number","Paramètre de compte"
|
134 |
+
"Account Type","Type de compte"
|
135 |
+
"Credits Remaining","Crédits disponibles"
|
136 |
+
"Buy message credits","Acheter des crédits"
|
137 |
+
"SMS Marketing","SMS Marketing"
|
138 |
+
"SMS auto responses","Réponse automatique SMS"
|
139 |
+
"Download sent items","Télécharger les messages envoyés"
|
140 |
+
"Help & Support","Aide et Support"
|
141 |
+
"Download all messages","Télécharger tous les messages"
|
142 |
+
,
|
143 |
+
"No Available Variables","Aucune données dynamiques disponibles."
|
144 |
+
"To receive replies this will need to be set to your virtual mobile number +%s","Pour recevoir des réponses vous devrez indiquer le numéro court vituel +%s"
|
145 |
+
"To receive replies you will need to purchase a virtual mobile number","Pour recevoir des réponses vous devez souscrire au service de numéro court"
|
146 |
+
"Note: To prevent spamming the from address will be ignored for trial accounts. <a href=""%s"">Purchase Credits</a> to upgrade your account","Note : Afin d'éviter les problèmes de SPAM, les comptes de test ne peuvent pas personnaliser le nom d'émetteur. <a href=""%s"">Achetez des crédits</a> pour basculer en compte professionnel et utiliser cette fonctionnalité."
|
147 |
+
,
|
148 |
+
"Total of %d notifications were successfully updated","Un total de %d des notifications actualisées avec succès."
|
149 |
+
"Total of %d notification was successfully updated","Un total de %d de la notification actualisée avec succès."
|
150 |
+
"There was an error updating notifications","Une erreur s'est produite lors de l'actualisation des notifications."
|
151 |
+
"Please select Notifications","Merci de selectionnez les notifications"
|
152 |
+
"Total of %d notifications were successfully deleted","Un total de %d des notifications effacées avec succès."
|
153 |
+
"Total of %d notification was successfully deleted","Un total de %d de la notification effacée avec succès."
|
154 |
+
"There was an error deleting notifications","Une erreur s'est produite lors de l'élimination des notifications."
|
155 |
+
"Please select Notifications to delete","Merci de selectionnez les notifications à supprimer."
|
156 |
+
"There was an error deleting notification","Une erreur s'est produite lors de la suppression de la notification."
|
157 |
+
"Notification was successfully deleted","La notification a été supprimée avec succès."
|
158 |
+
"There was a problem saving the notification","Une erreur s'est produite lors de la sauvegarde de la notification."
|
159 |
+
"Notification was successfully saved","La notification a été sauvegardée avec succès."
|
160 |
+
"This notification no longer exists","Cette notification n'existe plus."
|
161 |
+
"Total of %d Admin Sales Reports were successfully updated","Un total de %d rapports de vente ont été actualisée avec succès."
|
162 |
+
"There was an error updating Admin Sales Reports","Un erreur s'est produite lors de l'actualisation des rapports de vente."
|
163 |
+
"Please select Admin Sales Reports","Merci de selectionner les rapports de vente."
|
164 |
+
"Total of %d Admin Sales Reports were successfully deleted","Un total de %d rapports de vente ont été supprimée avec succès."
|
165 |
+
"There was an error deleting Admin Sales Reports","Une erreur s'est produite lors de l'élimination des rapports de vente."
|
166 |
+
"Please select Admin Sales Reports to delete","Merci de selectionner les rapports de vente à supprimer."
|
167 |
+
"There was an error deleting Mobile Sales Report","Un erreur s'est produite lors de la suppression des rapports de vente."
|
168 |
+
"Mobile Sales Report was successfully deleted","Les rapports de vente ont été supprimée avec succès."
|
169 |
+
"There was a problem saving the Mobile Sales Report","Un erreur s'est produite lors de la sauvegarde des rapport mobiles de vente"
|
170 |
+
"Mobile Sales Report was successfully saved","Les rapport mobiles de vente ont été sauvegardés avec succès."
|
171 |
+
"This Mobile Sales Report no longer exists","Ce rapport mobile de vente n'existe plus."
|
172 |
+
"Manage Mobile Sales Reports","Gerer les rapports mobiles de vente."
|
173 |
+
"You'll need to enter your Esendex Account details below to send SMS notifications","Vous devez insérer les paramètres de votre compte Esendex ci-dessous pour envoyer des notifications SMS."
|
174 |
+
"Don't have an Esendex Account? %sCreate a FREE TRIAL account%s - we'll even give you 25 FREE SMS to get you started!","Vous n'avez pas de compte Esendex ? %sCréez un compte d'essai%s - Nous vous offrons 25 SMS pour commencer."
|
175 |
+
"Your Esendex Account details were not recognised. Your account may have expired or the details are incorrect","Les paramètres de votre compte Esendex n'ont pas été reconnus. Votre compte à peut être expiré ou les paramètres indiqués sont incorrects."
|
176 |
+
"Please double check your account details or contact our support team at <a href=""mailto:support@esendex.com"">support@esendex.com</a>","Merci de vérifier les paramètres de votre compte ou contactez notre équipe de support via <a href=""mailto:support@esendex.fr"">support@esendex.fr</a>"
|
lib/Esendex/AccountService.php
ADDED
@@ -0,0 +1,103 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Service
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex;
|
36 |
+
|
37 |
+
class AccountService
|
38 |
+
{
|
39 |
+
const ACCOUNT_SERVICE = 'accounts';
|
40 |
+
const ACCOUNT_SERVICE_VERSION = 'v1.0';
|
41 |
+
|
42 |
+
private $authentication;
|
43 |
+
private $httpClient;
|
44 |
+
private $parser;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @param Authentication\IAuthentication $authentication
|
48 |
+
* @param Http\IHttp $httpClient
|
49 |
+
* @param Parser\AccountXmlParser $parser
|
50 |
+
*/
|
51 |
+
public function __construct(
|
52 |
+
Authentication\IAuthentication $authentication,
|
53 |
+
Http\IHttp $httpClient = null,
|
54 |
+
Parser\AccountXmlParser $parser = null
|
55 |
+
) {
|
56 |
+
$this->authentication = $authentication;
|
57 |
+
$this->httpClient = (isset($httpClient))
|
58 |
+
? $httpClient
|
59 |
+
: new Http\HttpClient(true);
|
60 |
+
$this->parser = (isset($parser))
|
61 |
+
? $parser
|
62 |
+
: new Parser\AccountXmlParser();
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* @param string $reference
|
67 |
+
* @return Model\Account
|
68 |
+
*/
|
69 |
+
public function getAccount($reference = null)
|
70 |
+
{
|
71 |
+
$target = isset($reference)
|
72 |
+
? $reference
|
73 |
+
: $this->authentication->accountReference();
|
74 |
+
|
75 |
+
$accounts = $this->getAccounts();
|
76 |
+
foreach ($accounts as $account) {
|
77 |
+
if (strcasecmp($account->reference(), $target) == 0) {
|
78 |
+
return $account;
|
79 |
+
}
|
80 |
+
}
|
81 |
+
return null;
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* @return Model\Account[]
|
86 |
+
*/
|
87 |
+
public function getAccounts()
|
88 |
+
{
|
89 |
+
$uri = Http\UriBuilder::serviceUri(
|
90 |
+
self::ACCOUNT_SERVICE_VERSION,
|
91 |
+
self::ACCOUNT_SERVICE,
|
92 |
+
null,
|
93 |
+
$this->httpClient->isSecure()
|
94 |
+
);
|
95 |
+
|
96 |
+
$data = $this->httpClient->get(
|
97 |
+
$uri,
|
98 |
+
$this->authentication
|
99 |
+
);
|
100 |
+
|
101 |
+
return $this->parser->parse($data);
|
102 |
+
}
|
103 |
+
}
|
lib/Esendex/Authentication/AbstractAuthentication.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Authentication
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Authentication;
|
36 |
+
|
37 |
+
abstract class AbstractAuthentication implements IAuthentication
|
38 |
+
{
|
39 |
+
private $accountReference;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @param $accountReference
|
43 |
+
*/
|
44 |
+
protected function __construct($accountReference)
|
45 |
+
{
|
46 |
+
$this->accountReference = (string)$accountReference;
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* @return string
|
51 |
+
*/
|
52 |
+
public function accountReference()
|
53 |
+
{
|
54 |
+
return $this->accountReference;
|
55 |
+
}
|
56 |
+
}
|
lib/Esendex/Authentication/IAuthentication.php
ADDED
@@ -0,0 +1,42 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Authentication
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Authentication;
|
36 |
+
|
37 |
+
interface IAuthentication
|
38 |
+
{
|
39 |
+
function accountReference();
|
40 |
+
|
41 |
+
function getEncodedValue();
|
42 |
+
}
|
lib/Esendex/Authentication/LoginAuthentication.php
ADDED
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Authentication
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Authentication;
|
36 |
+
|
37 |
+
class LoginAuthentication extends AbstractAuthentication
|
38 |
+
{
|
39 |
+
private $username, $password;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @param $accountReference
|
43 |
+
* @param $username
|
44 |
+
* @param $password
|
45 |
+
*/
|
46 |
+
public function __construct($accountReference, $username, $password)
|
47 |
+
{
|
48 |
+
parent::__construct($accountReference);
|
49 |
+
|
50 |
+
$this->username = (string)$username;
|
51 |
+
$this->password = (string)$password;
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* @return string
|
56 |
+
*/
|
57 |
+
function getEncodedValue()
|
58 |
+
{
|
59 |
+
return "Basic " . base64_encode("{$this->username}:{$this->password}");
|
60 |
+
}
|
61 |
+
}
|
lib/Esendex/Authentication/SessionAuthentication.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Authentication
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Authentication;
|
36 |
+
|
37 |
+
class SessionAuthentication extends AbstractAuthentication
|
38 |
+
{
|
39 |
+
private $sessionId;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @param $accountReference
|
43 |
+
* @param $sessionId
|
44 |
+
*/
|
45 |
+
public function __construct($accountReference, $sessionId)
|
46 |
+
{
|
47 |
+
parent::__construct($accountReference);
|
48 |
+
|
49 |
+
$this->sessionId = (string)$sessionId;
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @return string
|
54 |
+
*/
|
55 |
+
public function getEncodedValue()
|
56 |
+
{
|
57 |
+
return "Basic " . base64_encode("{$this->sessionId}");
|
58 |
+
}
|
59 |
+
}
|
lib/Esendex/CheckAccessService.php
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Service
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex;
|
36 |
+
|
37 |
+
class CheckAccessService
|
38 |
+
{
|
39 |
+
const SERVICE = "accounts";
|
40 |
+
const SERVICE_VERSION = 'v1.0';
|
41 |
+
|
42 |
+
private $httpClient;
|
43 |
+
|
44 |
+
public function __construct(Http\IHttp $httpClient = null)
|
45 |
+
{
|
46 |
+
$this->httpClient = (isset($httpClient))
|
47 |
+
? $httpClient
|
48 |
+
: new Http\HttpClient(true);
|
49 |
+
}
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Check that your username, password and account reference is valid
|
53 |
+
*
|
54 |
+
* @param string $accountReference
|
55 |
+
* @param string $username
|
56 |
+
* @param string $password
|
57 |
+
* @return bool
|
58 |
+
*/
|
59 |
+
public function checkAccess($accountReference, $username, $password)
|
60 |
+
{
|
61 |
+
return $this->checkAuthenticationAccess(
|
62 |
+
new Authentication\LoginAuthentication($accountReference, $username, $password)
|
63 |
+
);
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Check if a session is valid, a valid session ID might have timed out and have
|
68 |
+
* been deleted. By calling this method the session will be
|
69 |
+
* 'kept alive'
|
70 |
+
*
|
71 |
+
* @param Authentication\SessionAuthentication $authentication
|
72 |
+
* @return bool
|
73 |
+
*/
|
74 |
+
public function checkSessionAccess(Authentication\SessionAuthentication $authentication)
|
75 |
+
{
|
76 |
+
return $this->checkAuthenticationAccess($authentication);
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Check that any authentication is valid
|
81 |
+
*
|
82 |
+
* @param Authentication\IAuthentication $authentication
|
83 |
+
* @return bool
|
84 |
+
*/
|
85 |
+
public function checkAuthenticationAccess(Authentication\IAuthentication $authentication)
|
86 |
+
{
|
87 |
+
try {
|
88 |
+
$uri = Http\UriBuilder::serviceUri(
|
89 |
+
self::SERVICE_VERSION,
|
90 |
+
self::SERVICE,
|
91 |
+
null,
|
92 |
+
$this->httpClient->isSecure()
|
93 |
+
);
|
94 |
+
|
95 |
+
$xml = $this->httpClient->get($uri, $authentication);
|
96 |
+
$accounts = new \SimpleXMLElement($xml);
|
97 |
+
foreach ($accounts->account as $account) {
|
98 |
+
if (strcasecmp($account->reference, $authentication->accountReference()) == 0) {
|
99 |
+
return true;
|
100 |
+
}
|
101 |
+
}
|
102 |
+
return false;
|
103 |
+
} catch (\Exception $e) {
|
104 |
+
return false;
|
105 |
+
}
|
106 |
+
}
|
107 |
+
}
|
lib/Esendex/DispatchService.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Service
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex;
|
36 |
+
|
37 |
+
class DispatchService
|
38 |
+
{
|
39 |
+
const DISPATCH_SERVICE = "messagedispatcher";
|
40 |
+
const DISPATCH_SERVICE_VERSION = "v1.0";
|
41 |
+
const ACCOUNTS_SERVICE = "accounts";
|
42 |
+
const ACCOUNTS_SERVICE_VERSION = "v1.0";
|
43 |
+
|
44 |
+
private $authentication;
|
45 |
+
private $httpClient;
|
46 |
+
private $parser;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @param Authentication\IAuthentication $authentication
|
50 |
+
* @param Http\IHttp $httpClient
|
51 |
+
* @param Parser\DispatchXmlParser $parser
|
52 |
+
*/
|
53 |
+
public function __construct(
|
54 |
+
Authentication\IAuthentication $authentication,
|
55 |
+
Http\IHttp $httpClient = null,
|
56 |
+
Parser\DispatchXmlParser $parser = null
|
57 |
+
) {
|
58 |
+
$this->authentication = $authentication;
|
59 |
+
$this->httpClient = (isset($httpClient))
|
60 |
+
? $httpClient
|
61 |
+
: new Http\HttpClient(true);
|
62 |
+
$this->parser = (isset($parser))
|
63 |
+
? $parser
|
64 |
+
: new Parser\DispatchXmlParser($authentication->accountReference());
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @param Model\DispatchMessage $message
|
69 |
+
* @return Model\ResultItem
|
70 |
+
* @throws Exceptions\EsendexException
|
71 |
+
*/
|
72 |
+
public function send(Model\DispatchMessage $message)
|
73 |
+
{
|
74 |
+
$xml = $this->parser->encode($message);
|
75 |
+
$uri = Http\UriBuilder::serviceUri(
|
76 |
+
self::DISPATCH_SERVICE_VERSION,
|
77 |
+
self::DISPATCH_SERVICE,
|
78 |
+
null,
|
79 |
+
$this->httpClient->isSecure()
|
80 |
+
);
|
81 |
+
|
82 |
+
$result = $this->httpClient->post(
|
83 |
+
$uri,
|
84 |
+
$this->authentication,
|
85 |
+
$xml
|
86 |
+
);
|
87 |
+
|
88 |
+
$arr = $this->parser->parse($result);
|
89 |
+
|
90 |
+
if (count($arr) >= 1) {
|
91 |
+
return $arr[0];
|
92 |
+
} else {
|
93 |
+
throw new Exceptions\EsendexException("Error parsing the dispatch result", null, array('data_returned' => $result));
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Get the number of remaining credits for your account
|
99 |
+
*
|
100 |
+
* @return int
|
101 |
+
*/
|
102 |
+
public function getCredits()
|
103 |
+
{
|
104 |
+
try {
|
105 |
+
$uri = Http\UriBuilder::serviceUri(
|
106 |
+
self::ACCOUNTS_SERVICE_VERSION,
|
107 |
+
self::ACCOUNTS_SERVICE,
|
108 |
+
null,
|
109 |
+
$this->httpClient->isSecure()
|
110 |
+
);
|
111 |
+
|
112 |
+
$xml = $this->httpClient->get($uri, $this->authentication);
|
113 |
+
$accounts = new \SimpleXMLElement($xml);
|
114 |
+
foreach ($accounts->account as $account) {
|
115 |
+
if (strcasecmp($account->reference, $this->authentication->accountReference()) == 0) {
|
116 |
+
return intval($account->messagesremaining, 10);
|
117 |
+
}
|
118 |
+
}
|
119 |
+
return 0;
|
120 |
+
} catch (\Exception $e) {
|
121 |
+
return 0;
|
122 |
+
}
|
123 |
+
}
|
124 |
+
}
|
lib/Esendex/Exceptions/ArgumentException.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Exceptions
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Exceptions;
|
36 |
+
|
37 |
+
class ArgumentException extends EsendexException {}
|
lib/Esendex/Exceptions/EsendexException.php
ADDED
@@ -0,0 +1,72 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Exceptions
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Exceptions;
|
36 |
+
|
37 |
+
class EsendexException extends \Exception
|
38 |
+
{
|
39 |
+
private $exceptionInfo;
|
40 |
+
|
41 |
+
public function __construct($message = '', $code = null, array $_info = null)
|
42 |
+
{
|
43 |
+
parent::__construct($message, $code);
|
44 |
+
|
45 |
+
$this->exceptionInfo($_info);
|
46 |
+
}
|
47 |
+
|
48 |
+
public function exceptionInfo($exceptionInfo = null)
|
49 |
+
{
|
50 |
+
if ($exceptionInfo != null) {
|
51 |
+
$this->exceptionInfo = $exceptionInfo;
|
52 |
+
}
|
53 |
+
return $this->exceptionInfo;
|
54 |
+
}
|
55 |
+
|
56 |
+
public function __toString()
|
57 |
+
{
|
58 |
+
$error = array(
|
59 |
+
'file' => $this->getFile(),
|
60 |
+
'line' => $this->getLine(),
|
61 |
+
'code' => $this->getCode(),
|
62 |
+
'message' => $this->getMessage(),
|
63 |
+
'stacktrace' => substr($this->getTraceAsString(), 0, 400),
|
64 |
+
);
|
65 |
+
|
66 |
+
if ($this->exceptionInfo != null) {
|
67 |
+
array_merge($error, $this->exceptionInfo());
|
68 |
+
}
|
69 |
+
|
70 |
+
return print_r($error, true);
|
71 |
+
}
|
72 |
+
}
|
lib/Esendex/Exceptions/XmlException.php
ADDED
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Exceptions
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Exceptions;
|
36 |
+
|
37 |
+
class XmlException extends EsendexException
|
38 |
+
{
|
39 |
+
private $xml;
|
40 |
+
|
41 |
+
/**
|
42 |
+
* @param string $message
|
43 |
+
* @param int $code
|
44 |
+
* @param string $xml, The XML string that failed parsing
|
45 |
+
*/
|
46 |
+
public function __construct($message, $code = 0, $xml = '')
|
47 |
+
{
|
48 |
+
parent::__construct($message, $code);
|
49 |
+
|
50 |
+
$this->xml = htmlspecialchars($xml, ENT_QUOTES);
|
51 |
+
}
|
52 |
+
|
53 |
+
public function __toString()
|
54 |
+
{
|
55 |
+
return parent::__toString() . "XML:\n{$this->xml}";
|
56 |
+
}
|
57 |
+
}
|
lib/Esendex/Http/HttpClient.php
ADDED
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Http
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Http;
|
36 |
+
use Esendex\Authentication\IAuthentication;
|
37 |
+
|
38 |
+
class HttpClient implements IHttp
|
39 |
+
{
|
40 |
+
private static $userAgent;
|
41 |
+
private static $certificateBundle;
|
42 |
+
|
43 |
+
public static function init()
|
44 |
+
{
|
45 |
+
$hostInfo = php_uname("s") . " " . php_uname("v") . "; " . php_uname("m");
|
46 |
+
$agent = "esendex-php-sdk/" . \Esendex\Model\Api::getVersion() . " ({$hostInfo})";
|
47 |
+
$agent .= " PHP/" . PHP_VERSION . " (" . PHP_OS . ")";
|
48 |
+
$curlVersion = \curl_version();
|
49 |
+
if (isset($curlVersion["version"])) {
|
50 |
+
$agent .= " curl/" . $curlVersion["version"];
|
51 |
+
}
|
52 |
+
self::$userAgent = $agent;
|
53 |
+
self::$certificateBundle = realpath(dirname(__FILE__) . '/../../ca-bundle.pem');
|
54 |
+
if (empty(self::$certificateBundle)) {
|
55 |
+
echo "WARN: Could not locate CA Bundle. Secure web requests will fail";
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
private $isSecure;
|
60 |
+
|
61 |
+
public function __construct($secure = true)
|
62 |
+
{
|
63 |
+
$this->isSecure = $secure;
|
64 |
+
}
|
65 |
+
|
66 |
+
public function isSecure($secure = null)
|
67 |
+
{
|
68 |
+
if (isset($secure) && is_bool($secure)) {
|
69 |
+
$this->isSecure = $secure;
|
70 |
+
}
|
71 |
+
return $this->isSecure;
|
72 |
+
}
|
73 |
+
|
74 |
+
public function get($url, IAuthentication $authentication)
|
75 |
+
{
|
76 |
+
$results = $this->request($url, $authentication, 'GET');
|
77 |
+
|
78 |
+
return $results['data'];
|
79 |
+
}
|
80 |
+
|
81 |
+
public function put($url, IAuthentication $authentication, $data)
|
82 |
+
{
|
83 |
+
$results = $this->request($url, $authentication, 'PUT', $data);
|
84 |
+
|
85 |
+
return $results['data'];
|
86 |
+
}
|
87 |
+
|
88 |
+
public function post($url, IAuthentication $authentication, $data)
|
89 |
+
{
|
90 |
+
$results = $this->request($url, $authentication, 'POST', $data);
|
91 |
+
|
92 |
+
return $results['data'];
|
93 |
+
}
|
94 |
+
|
95 |
+
public function delete($url, IAuthentication $authentication)
|
96 |
+
{
|
97 |
+
$results = $this->request($url, $authentication, 'DELETE');
|
98 |
+
|
99 |
+
return $results['statuscode'];
|
100 |
+
}
|
101 |
+
|
102 |
+
private function request($url, $authentication, $method, $data = null)
|
103 |
+
{
|
104 |
+
$httpHeaders = array("Authorization: {$authentication->getEncodedValue()}");
|
105 |
+
|
106 |
+
$curlHandle = \curl_init();
|
107 |
+
|
108 |
+
\curl_setopt($curlHandle, CURLOPT_URL, $url);
|
109 |
+
\curl_setopt($curlHandle, CURLOPT_FAILONERROR, false);
|
110 |
+
\curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, true); // Allow redirects.
|
111 |
+
\curl_setopt($curlHandle, CURLOPT_RETURNTRANSFER, true);
|
112 |
+
\curl_setopt($curlHandle, CURLOPT_TIMEOUT, 30);
|
113 |
+
\curl_setopt($curlHandle, CURLOPT_HEADER, false);
|
114 |
+
\curl_setopt($curlHandle, CURLOPT_CAINFO, self::$certificateBundle);
|
115 |
+
\curl_setopt($curlHandle, CURLOPT_USERAGENT, self::$userAgent);
|
116 |
+
\curl_setopt($curlHandle, CURLOPT_CUSTOMREQUEST, $method);
|
117 |
+
if ($method == 'PUT' || $method == 'POST') {
|
118 |
+
\curl_setopt($curlHandle, CURLOPT_POSTFIELDS, $data);
|
119 |
+
\curl_setopt($curlHandle, CURLOPT_BINARYTRANSFER, true);
|
120 |
+
if (strlen($data) == 0) {
|
121 |
+
$httpHeaders[] = 'Content-Length: 0';
|
122 |
+
}
|
123 |
+
$httpHeaders[] = 'Content-Type: application/xml; charset=utf-8';
|
124 |
+
}
|
125 |
+
\curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $httpHeaders);
|
126 |
+
|
127 |
+
$result = \curl_exec($curlHandle);
|
128 |
+
$curlInfo = \curl_getinfo($curlHandle);
|
129 |
+
|
130 |
+
$results = array();
|
131 |
+
$results['data'] = $result;
|
132 |
+
$results['statuscode'] = $curlInfo["http_code"];
|
133 |
+
|
134 |
+
\curl_close($curlHandle);
|
135 |
+
|
136 |
+
if ($results['statuscode'] < 200 || $results['statuscode'] >= 300) {
|
137 |
+
throw $this->getHttpException($results, $curlInfo);
|
138 |
+
}
|
139 |
+
|
140 |
+
$results['url'] = $curlInfo['url'];
|
141 |
+
return $results;
|
142 |
+
}
|
143 |
+
|
144 |
+
private function getHttpException(array $result, array $info = null)
|
145 |
+
{
|
146 |
+
$http_code = $result["statuscode"];
|
147 |
+
$data = $result["data"];
|
148 |
+
$error_message = strlen($data) != 0 && $data != $http_code
|
149 |
+
? $data
|
150 |
+
: "The requested URL returned error: {$http_code}";
|
151 |
+
switch ($http_code) {
|
152 |
+
case 400:
|
153 |
+
return new BadRequestException($error_message, $http_code, $info);
|
154 |
+
case 401:
|
155 |
+
return new UnauthorisedException($error_message, $http_code, $info);
|
156 |
+
case 402:
|
157 |
+
return new PaymentRequiredException($error_message, $http_code, $info);
|
158 |
+
case 403:
|
159 |
+
return new UserCredentialsException($error_message, $http_code, $info);
|
160 |
+
case 404:
|
161 |
+
return new ResourceNotFoundException($error_message, $http_code, $info);
|
162 |
+
case 405:
|
163 |
+
return new MethodNotAllowedException($error_message, $http_code, $info);
|
164 |
+
case 408:
|
165 |
+
return new RequestTimedOutException($error_message, $http_code, $info);
|
166 |
+
case 500:
|
167 |
+
return new ServerErrorException($error_message, $http_code, $info);
|
168 |
+
case 501:
|
169 |
+
return new NotImplementedException($error_message, $http_code, $info);
|
170 |
+
case 503:
|
171 |
+
return new ServiceUnavailableException($error_message, $http_code, $info);
|
172 |
+
default:
|
173 |
+
$error_message = "An unexpected error occurred processing the web request";
|
174 |
+
return new \Exception($error_message, $http_code);
|
175 |
+
}
|
176 |
+
}
|
177 |
+
}
|
178 |
+
|
179 |
+
HttpClient::init();
|
lib/Esendex/Http/IHttp.php
ADDED
@@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Http
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Http;
|
36 |
+
use Esendex\Authentication\IAuthentication;
|
37 |
+
|
38 |
+
interface IHttp
|
39 |
+
{
|
40 |
+
function isSecure($secure = null);
|
41 |
+
|
42 |
+
function get($url, IAuthentication $authentication);
|
43 |
+
|
44 |
+
function put($url, IAuthentication $authentication, $data);
|
45 |
+
|
46 |
+
function post($url, IAuthentication $authentication, $data);
|
47 |
+
|
48 |
+
function delete($url, IAuthentication $authentication);
|
49 |
+
}
|
50 |
+
|
51 |
+
class HttpException extends \Esendex\Exceptions\EsendexException {}
|
52 |
+
|
53 |
+
class BadRequestException extends HttpException {}
|
54 |
+
|
55 |
+
class UnauthorisedException extends HttpException {}
|
56 |
+
|
57 |
+
class PaymentRequiredException extends HttpException {}
|
58 |
+
|
59 |
+
class UserCredentialsException extends HttpException {}
|
60 |
+
|
61 |
+
class ResourceNotFoundException extends HttpException {}
|
62 |
+
|
63 |
+
class MethodNotAllowedException extends HttpException {}
|
64 |
+
|
65 |
+
class RequestTimedOutException extends HttpException {}
|
66 |
+
|
67 |
+
class ServerErrorException extends HttpException {}
|
68 |
+
|
69 |
+
class NotImplementedException extends HttpException {}
|
70 |
+
|
71 |
+
class ServiceUnavailableException extends HttpException {}
|
lib/Esendex/Http/UriBuilder.php
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Http
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Http;
|
36 |
+
|
37 |
+
class UriBuilder
|
38 |
+
{
|
39 |
+
const HOST = "api.esendex.com";
|
40 |
+
private static $url_separator;
|
41 |
+
|
42 |
+
public static function init()
|
43 |
+
{
|
44 |
+
self::$url_separator = ini_get('arg_separator.output');
|
45 |
+
}
|
46 |
+
|
47 |
+
public static function serviceUri($version, $resource, array $parts = null, $secure = true)
|
48 |
+
{
|
49 |
+
$host = defined("ESENDEX_API_HOST") ? ESENDEX_API_HOST : self::HOST;
|
50 |
+
$scheme = ($secure) ? "https" : "http";
|
51 |
+
|
52 |
+
$result = "{$scheme}://{$host}/{$version}/{$resource}";
|
53 |
+
if (isset($parts)) {
|
54 |
+
foreach ($parts as $part) {
|
55 |
+
$encodedPart = rawurlencode($part);
|
56 |
+
$result .= "/{$encodedPart}";
|
57 |
+
}
|
58 |
+
}
|
59 |
+
return $result;
|
60 |
+
}
|
61 |
+
|
62 |
+
public static function buildQuery(array $params)
|
63 |
+
{
|
64 |
+
foreach ($params as $key => $value) {
|
65 |
+
if ($value instanceof \DateTime) {
|
66 |
+
$params[$key] = $value->format(\DateTime::ISO8601);
|
67 |
+
}
|
68 |
+
}
|
69 |
+
|
70 |
+
if (defined("PHP_QUERY_RFC3986")) { // >= 5.4
|
71 |
+
return http_build_query($params, '', self::$url_separator, PHP_QUERY_RFC3986);
|
72 |
+
}
|
73 |
+
|
74 |
+
$result = '';
|
75 |
+
$glue = '';
|
76 |
+
foreach ($params as $key => $value) {
|
77 |
+
$encodedKey = rawurlencode($key);
|
78 |
+
$encodedValue = rawurlencode($value);
|
79 |
+
$result .= "{$glue}{$encodedKey}={$encodedValue}";
|
80 |
+
$glue = self::$url_separator;
|
81 |
+
}
|
82 |
+
return $result;
|
83 |
+
}
|
84 |
+
}
|
85 |
+
UriBuilder::init();
|
lib/Esendex/InboxService.php
ADDED
@@ -0,0 +1,115 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Service
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex;
|
36 |
+
|
37 |
+
class InboxService
|
38 |
+
{
|
39 |
+
const INBOX_SERVICE = 'inbox';
|
40 |
+
const INBOX_SERVICE_VERSION = 'v1.0';
|
41 |
+
|
42 |
+
private $authentication;
|
43 |
+
private $httpClient;
|
44 |
+
private $parser;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @param Authentication\IAuthentication $authentication
|
48 |
+
* @param Http\IHttp $httpClient
|
49 |
+
* @param Parser\InboxXmlParser $parser
|
50 |
+
*/
|
51 |
+
public function __construct(
|
52 |
+
Authentication\IAuthentication $authentication,
|
53 |
+
Http\IHttp $httpClient = null,
|
54 |
+
Parser\InboxXmlParser $parser = null
|
55 |
+
) {
|
56 |
+
$this->authentication = $authentication;
|
57 |
+
$this->httpClient = (isset($httpClient))
|
58 |
+
? $httpClient
|
59 |
+
: new Http\HttpClient(true);
|
60 |
+
$this->parser = (isset($parser))
|
61 |
+
? $parser
|
62 |
+
: new Parser\InboxXmlParser(new Parser\MessageHeaderXmlParser());
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* @param int $startIndex
|
67 |
+
* @param int $count
|
68 |
+
* @return Model\InboxPage
|
69 |
+
*/
|
70 |
+
public function latest($startIndex = null, $count = null)
|
71 |
+
{
|
72 |
+
$uri = Http\UriBuilder::serviceUri(
|
73 |
+
self::INBOX_SERVICE_VERSION,
|
74 |
+
self::INBOX_SERVICE,
|
75 |
+
array($this->authentication->accountReference(), "messages"),
|
76 |
+
$this->httpClient->isSecure()
|
77 |
+
);
|
78 |
+
|
79 |
+
$query = array();
|
80 |
+
if ($startIndex != null && is_int($startIndex)) {
|
81 |
+
$query["startIndex"] = $startIndex;
|
82 |
+
}
|
83 |
+
if ($count != null && is_int($count)) {
|
84 |
+
$query["count"] = $count;
|
85 |
+
}
|
86 |
+
if (count($query) > 0) {
|
87 |
+
$uri .= "?" . Http\UriBuilder::buildQuery($query);
|
88 |
+
}
|
89 |
+
|
90 |
+
$data = $this->httpClient->get(
|
91 |
+
$uri,
|
92 |
+
$this->authentication
|
93 |
+
);
|
94 |
+
|
95 |
+
return $this->parser->parse($data);
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Delete an inbox message using it's messageId
|
100 |
+
*
|
101 |
+
* @param string $messageId
|
102 |
+
* @return bool
|
103 |
+
*/
|
104 |
+
function deleteInboxMessage($messageId)
|
105 |
+
{
|
106 |
+
$uri = Http\UriBuilder::serviceUri(
|
107 |
+
self::INBOX_SERVICE_VERSION,
|
108 |
+
self::INBOX_SERVICE,
|
109 |
+
array("messages", $messageId),
|
110 |
+
$this->httpClient->isSecure()
|
111 |
+
);
|
112 |
+
|
113 |
+
return $this->httpClient->delete($uri, $this->authentication) == 200;
|
114 |
+
}
|
115 |
+
}
|
lib/Esendex/MessageBodyService.php
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Service
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex;
|
36 |
+
use Esendex\Model\MessageBody;
|
37 |
+
|
38 |
+
class MessageBodyService
|
39 |
+
{
|
40 |
+
const SERVICE = "messageheaders";
|
41 |
+
const SERVICE_VERSION = "v1.0";
|
42 |
+
|
43 |
+
private $authentication;
|
44 |
+
private $httpClient;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @param Authentication\IAuthentication $authentication
|
48 |
+
* @param Http\IHttp $httpClient
|
49 |
+
*/
|
50 |
+
function __construct(Authentication\IAuthentication $authentication, Http\IHttp $httpClient = null)
|
51 |
+
{
|
52 |
+
$this->authentication = $authentication;
|
53 |
+
$this->httpClient = (isset($httpClient))
|
54 |
+
? $httpClient
|
55 |
+
: new Http\HttpClient(true);
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* @param string|\Esendex\Model\ResultMessage $object
|
60 |
+
* @return string
|
61 |
+
* @throws Exceptions\ArgumentException
|
62 |
+
*/
|
63 |
+
public function getMessageBody($object)
|
64 |
+
{
|
65 |
+
if ($object instanceof \Esendex\Model\ResultMessage) {
|
66 |
+
return $this->loadMessageBody($object->bodyUri());
|
67 |
+
}
|
68 |
+
|
69 |
+
if (is_string($object)) {
|
70 |
+
return $this->loadMessageBody($object);
|
71 |
+
}
|
72 |
+
|
73 |
+
throw new Exceptions\ArgumentException("Should be either MessageBody Uri or ResultMessage");
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* @param string $messageId
|
78 |
+
* @return string
|
79 |
+
* @throws Exceptions\ArgumentException
|
80 |
+
*/
|
81 |
+
public function getMessageBodyById($messageId)
|
82 |
+
{
|
83 |
+
if ($messageId == null) {
|
84 |
+
throw new Exceptions\ArgumentException("messageId is null");
|
85 |
+
}
|
86 |
+
if (!is_string($messageId)) {
|
87 |
+
throw new Exceptions\ArgumentException("messageId is not a string");
|
88 |
+
}
|
89 |
+
|
90 |
+
$uri = Http\UriBuilder::serviceUri(
|
91 |
+
self::SERVICE_VERSION,
|
92 |
+
self::SERVICE,
|
93 |
+
array($messageId, "body"),
|
94 |
+
$this->httpClient->isSecure()
|
95 |
+
);
|
96 |
+
|
97 |
+
return $this->loadMessageBody($uri);
|
98 |
+
}
|
99 |
+
|
100 |
+
private function loadMessageBody($uri)
|
101 |
+
{
|
102 |
+
$result = $this->httpClient->get(
|
103 |
+
$uri,
|
104 |
+
$this->authentication
|
105 |
+
);
|
106 |
+
|
107 |
+
$messageBody = simplexml_load_string($result);
|
108 |
+
|
109 |
+
$result = new MessageBody();
|
110 |
+
$result->bodyText($messageBody->bodytext);
|
111 |
+
$result->characterSet($messageBody->characterset);
|
112 |
+
return $result;
|
113 |
+
}
|
114 |
+
}
|
lib/Esendex/MessageHeaderService.php
ADDED
@@ -0,0 +1,88 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Service
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex;
|
36 |
+
|
37 |
+
class MessageHeaderService
|
38 |
+
{
|
39 |
+
const SERVICE = "messageheaders";
|
40 |
+
const SERVICE_VERSION = "v1.0";
|
41 |
+
|
42 |
+
private $authentication;
|
43 |
+
private $httpClient;
|
44 |
+
private $parser;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @param Authentication\IAuthentication $authentication
|
48 |
+
* @param Http\IHttp $httpClient
|
49 |
+
* @param Parser\MessageHeaderXmlParser $parser
|
50 |
+
*/
|
51 |
+
public function __construct(
|
52 |
+
Authentication\IAuthentication $authentication,
|
53 |
+
Http\IHttp $httpClient = null,
|
54 |
+
Parser\MessageHeaderXmlParser $parser = null
|
55 |
+
)
|
56 |
+
{
|
57 |
+
$this->authentication = $authentication;
|
58 |
+
$this->httpClient = (isset($httpClient))
|
59 |
+
? $httpClient
|
60 |
+
: new Http\HttpClient(true);
|
61 |
+
$this->parser = (isset($parser))
|
62 |
+
? $parser
|
63 |
+
: new Parser\MessageHeaderXmlParser();
|
64 |
+
}
|
65 |
+
|
66 |
+
/**
|
67 |
+
* Get detailed information about a message from it's messageId.
|
68 |
+
*
|
69 |
+
* @param $messageId
|
70 |
+
* @return Model\InboxMessage|Model\SentMessage
|
71 |
+
*/
|
72 |
+
public function message($messageId)
|
73 |
+
{
|
74 |
+
$uri = Http\UriBuilder::serviceUri(
|
75 |
+
self::SERVICE_VERSION,
|
76 |
+
self::SERVICE,
|
77 |
+
array($messageId),
|
78 |
+
$this->httpClient->isSecure()
|
79 |
+
);
|
80 |
+
|
81 |
+
$result = $this->httpClient->get(
|
82 |
+
$uri,
|
83 |
+
$this->authentication
|
84 |
+
);
|
85 |
+
|
86 |
+
return $this->parser->parse($result);
|
87 |
+
}
|
88 |
+
}
|
lib/Esendex/MessageInformationService.php
ADDED
@@ -0,0 +1,96 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Service
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex;
|
36 |
+
|
37 |
+
use Esendex\Model\MessageBody;
|
38 |
+
|
39 |
+
class MessageInformationService
|
40 |
+
{
|
41 |
+
const SERVICE = "messages/information";
|
42 |
+
const SERVICE_VERSION = "v1.0";
|
43 |
+
|
44 |
+
private $authentication;
|
45 |
+
private $httpClient;
|
46 |
+
private $parser;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @param Authentication\IAuthentication $authentication
|
50 |
+
* @param Http\IHttp $httpClient
|
51 |
+
* @param Parser\MessageInformationXmlParser $parser
|
52 |
+
*/
|
53 |
+
public function __construct(
|
54 |
+
Authentication\IAuthentication $authentication,
|
55 |
+
Http\IHttp $httpClient = null,
|
56 |
+
Parser\MessageInformationXmlParser $parser = null
|
57 |
+
) {
|
58 |
+
$this->authentication = $authentication;
|
59 |
+
$this->httpClient = (isset($httpClient))
|
60 |
+
? $httpClient
|
61 |
+
: new Http\HttpClient(true);
|
62 |
+
$this->parser = (isset($parser))
|
63 |
+
? $parser
|
64 |
+
: new Parser\MessageInformationXmlParser();
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @param string $message
|
69 |
+
* @return Model\ResultItem
|
70 |
+
* @throws Exceptions\EsendexException
|
71 |
+
*/
|
72 |
+
public function getInformation($message, $characterSet = MessageBody::CharsetGSM)
|
73 |
+
{
|
74 |
+
$xml = $this->parser->encode($message, $characterSet);
|
75 |
+
$uri = Http\UriBuilder::serviceUri(
|
76 |
+
self::SERVICE_VERSION,
|
77 |
+
self::SERVICE,
|
78 |
+
null,
|
79 |
+
$this->httpClient->isSecure()
|
80 |
+
);
|
81 |
+
|
82 |
+
$result = $this->httpClient->post(
|
83 |
+
$uri,
|
84 |
+
$this->authentication,
|
85 |
+
$xml
|
86 |
+
);
|
87 |
+
|
88 |
+
$arr = $this->parser->parse($result);
|
89 |
+
|
90 |
+
if (count($arr) == 1) {
|
91 |
+
return $arr[0];
|
92 |
+
} else {
|
93 |
+
throw new Exceptions\EsendexException("Error parsing the result", null, array('data_returned' => $result));
|
94 |
+
}
|
95 |
+
}
|
96 |
+
}
|
lib/Esendex/Model/Account.php
ADDED
@@ -0,0 +1,156 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
class Account
|
38 |
+
{
|
39 |
+
private $id;
|
40 |
+
private $reference;
|
41 |
+
private $label;
|
42 |
+
private $alias;
|
43 |
+
private $address;
|
44 |
+
private $type;
|
45 |
+
private $messagesRemaining;
|
46 |
+
private $expiresOn;
|
47 |
+
private $defaultDialCode;
|
48 |
+
|
49 |
+
/**
|
50 |
+
* @param string $value
|
51 |
+
* @return string
|
52 |
+
*/
|
53 |
+
public function id($value = null)
|
54 |
+
{
|
55 |
+
if ($value != null) {
|
56 |
+
$this->id = (string)$value;
|
57 |
+
}
|
58 |
+
return $this->id;
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* @param string $value
|
63 |
+
* @return string
|
64 |
+
*/
|
65 |
+
public function reference($value = null)
|
66 |
+
{
|
67 |
+
if ($value != null) {
|
68 |
+
$this->reference = (string)$value;
|
69 |
+
}
|
70 |
+
return $this->reference;
|
71 |
+
}
|
72 |
+
|
73 |
+
/**
|
74 |
+
* @param string $value
|
75 |
+
* @return string
|
76 |
+
*/
|
77 |
+
public function label($value = null)
|
78 |
+
{
|
79 |
+
if ($value != null) {
|
80 |
+
$this->label = (string)$value;
|
81 |
+
}
|
82 |
+
return $this->label;
|
83 |
+
}
|
84 |
+
|
85 |
+
/**
|
86 |
+
* @param string $value
|
87 |
+
* @return string
|
88 |
+
*/
|
89 |
+
public function alias($value = null)
|
90 |
+
{
|
91 |
+
if ($value != null) {
|
92 |
+
$this->alias = (string)$value;
|
93 |
+
}
|
94 |
+
return $this->alias;
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* @param string $value
|
99 |
+
* @return string
|
100 |
+
*/
|
101 |
+
public function address($value = null)
|
102 |
+
{
|
103 |
+
if ($value != null) {
|
104 |
+
$this->address = (string)$value;
|
105 |
+
}
|
106 |
+
return $this->address;
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* @param string $value
|
111 |
+
* @return string
|
112 |
+
*/
|
113 |
+
public function type($value = null)
|
114 |
+
{
|
115 |
+
if ($value != null) {
|
116 |
+
$this->type = (string)$value;
|
117 |
+
}
|
118 |
+
return $this->type;
|
119 |
+
}
|
120 |
+
|
121 |
+
/**
|
122 |
+
* @param int $value
|
123 |
+
* @return int
|
124 |
+
*/
|
125 |
+
public function messagesRemaining($value = null)
|
126 |
+
{
|
127 |
+
if ($value != null) {
|
128 |
+
$this->messagesRemaining = (int)$value;
|
129 |
+
}
|
130 |
+
return $this->messagesRemaining;
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* @param \DateTime $value
|
135 |
+
* @return \DateTime
|
136 |
+
*/
|
137 |
+
public function expiresOn($value = null)
|
138 |
+
{
|
139 |
+
if ($value instanceof \DateTime) {
|
140 |
+
$this->expiresOn = $value;
|
141 |
+
}
|
142 |
+
return $this->expiresOn;
|
143 |
+
}
|
144 |
+
|
145 |
+
/**
|
146 |
+
* @param string $value
|
147 |
+
* @return string
|
148 |
+
*/
|
149 |
+
public function defaultDialCode($value = null)
|
150 |
+
{
|
151 |
+
if ($value != null) {
|
152 |
+
$this->defaultDialCode = (string)$value;
|
153 |
+
}
|
154 |
+
return $this->defaultDialCode;
|
155 |
+
}
|
156 |
+
}
|
lib/Esendex/Model/Api.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
class Api
|
38 |
+
{
|
39 |
+
const NS = "http://api.esendex.com/ns/";
|
40 |
+
|
41 |
+
private static $major = 1;
|
42 |
+
private static $minor = 0;
|
43 |
+
private static $patch = 6;
|
44 |
+
|
45 |
+
public static function getVersion()
|
46 |
+
{
|
47 |
+
return sprintf("%d.%d.%d", self::$major, self::$minor, self::$patch);
|
48 |
+
}
|
49 |
+
|
50 |
+
public static function getApiVersion()
|
51 |
+
{
|
52 |
+
return sprintf("%d.%d.0", self::$major, self::$minor);
|
53 |
+
}
|
54 |
+
}
|
lib/Esendex/Model/DispatchMessage.php
ADDED
@@ -0,0 +1,132 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
use Esendex\Exceptions\ArgumentException;
|
37 |
+
use Esendex\Model\MessageBody;
|
38 |
+
|
39 |
+
class DispatchMessage extends Message
|
40 |
+
{
|
41 |
+
const ENGLISH_LANGUAGE = "en-GB";
|
42 |
+
|
43 |
+
private $validityPeriod;
|
44 |
+
private $body;
|
45 |
+
private $language;
|
46 |
+
private $characterSet;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @param string $originator
|
50 |
+
* @param string $recipient
|
51 |
+
* @param string $body
|
52 |
+
* @param string $type
|
53 |
+
* @param int $validityPeriod
|
54 |
+
* @param string $language
|
55 |
+
*/
|
56 |
+
public function __construct(
|
57 |
+
$originator,
|
58 |
+
$recipient,
|
59 |
+
$body,
|
60 |
+
$type,
|
61 |
+
$validityPeriod = 0,
|
62 |
+
$language = self::ENGLISH_LANGUAGE,
|
63 |
+
$characterSet = null
|
64 |
+
) {
|
65 |
+
$this->originator($originator);
|
66 |
+
$this->recipient($recipient);
|
67 |
+
$this->body($body);
|
68 |
+
$this->type($type);
|
69 |
+
$this->validityperiod($validityPeriod);
|
70 |
+
$this->language($language);
|
71 |
+
$this->characterSet($characterSet);
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* @param int $value
|
76 |
+
* @return int
|
77 |
+
*/
|
78 |
+
public function validityPeriod($value = null)
|
79 |
+
{
|
80 |
+
if ($value != null) {
|
81 |
+
$this->validityPeriod = (int)$value;
|
82 |
+
}
|
83 |
+
return $this->validityPeriod;
|
84 |
+
}
|
85 |
+
|
86 |
+
/**
|
87 |
+
* @param string $value
|
88 |
+
* @return string
|
89 |
+
*/
|
90 |
+
public function body($value = null)
|
91 |
+
{
|
92 |
+
if ($value != null) {
|
93 |
+
$this->body = (string)$value;
|
94 |
+
}
|
95 |
+
return $this->body;
|
96 |
+
}
|
97 |
+
|
98 |
+
/**
|
99 |
+
* If the type of message is Voice then the language of the message
|
100 |
+
* can be set so it will be read out to the user in a native way.
|
101 |
+
*
|
102 |
+
* @param string $value
|
103 |
+
* @return string
|
104 |
+
*/
|
105 |
+
public function language($value = null)
|
106 |
+
{
|
107 |
+
if ($value != null) {
|
108 |
+
$this->language = (string)$value;
|
109 |
+
}
|
110 |
+
return $this->language;
|
111 |
+
}
|
112 |
+
|
113 |
+
/**
|
114 |
+
* See http://developers.esendex.com/APIs/REST-API/messagedispatcher for
|
115 |
+
* details of usage.
|
116 |
+
*
|
117 |
+
* @param string $value
|
118 |
+
* @return string
|
119 |
+
*/
|
120 |
+
public function characterSet($value = null)
|
121 |
+
{
|
122 |
+
if ($value != null) {
|
123 |
+
if ($value != MessageBody::CharsetGSM
|
124 |
+
&& $value != MessageBody::CharsetUnicode
|
125 |
+
&& $value != MessageBody::CharsetAuto) {
|
126 |
+
throw new ArgumentException("characterSet() value was '{$value}' and must be one of '" . MessageBody::CharsetGSM . "', '" . MessageBody::CharsetUnicode . "' or '" . MessageBody::CharsetAuto . "'");
|
127 |
+
}
|
128 |
+
$this->characterSet = (string)$value;
|
129 |
+
}
|
130 |
+
return $this->characterSet;
|
131 |
+
}
|
132 |
+
}
|
lib/Esendex/Model/InboxMessage.php
ADDED
@@ -0,0 +1,78 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
class InboxMessage extends ResultMessage
|
38 |
+
{
|
39 |
+
private $receivedAt;
|
40 |
+
private $readAt;
|
41 |
+
private $readBy;
|
42 |
+
|
43 |
+
/**
|
44 |
+
* @param \DateTime $value
|
45 |
+
* @return \DateTime
|
46 |
+
*/
|
47 |
+
public function receivedAt($value = null)
|
48 |
+
{
|
49 |
+
if ($value instanceof \DateTime) {
|
50 |
+
$this->receivedAt = $value;
|
51 |
+
}
|
52 |
+
return $this->receivedAt;
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* @param \DateTime $value
|
57 |
+
* @return \DateTime
|
58 |
+
*/
|
59 |
+
public function readAt($value = null)
|
60 |
+
{
|
61 |
+
if ($value instanceof \DateTime) {
|
62 |
+
$this->readAt = $value;
|
63 |
+
}
|
64 |
+
return $this->readAt;
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
+
* @param string $value
|
69 |
+
* @return string
|
70 |
+
*/
|
71 |
+
public function readBy($value = null)
|
72 |
+
{
|
73 |
+
if ($value != null) {
|
74 |
+
$this->readBy = (string)$value;
|
75 |
+
}
|
76 |
+
return $this->readBy;
|
77 |
+
}
|
78 |
+
}
|
lib/Esendex/Model/InboxPage.php
ADDED
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
class InboxPage implements \ArrayAccess, \Countable, \Iterator
|
38 |
+
{
|
39 |
+
private $startIndex;
|
40 |
+
private $totalCount;
|
41 |
+
private $messages;
|
42 |
+
private $position = 0;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @param $startIndex
|
46 |
+
* @param $totalCount
|
47 |
+
*/
|
48 |
+
public function __construct($startIndex, $totalCount)
|
49 |
+
{
|
50 |
+
$this->startIndex = (int)$startIndex;
|
51 |
+
$this->totalCount = (int)$totalCount;
|
52 |
+
$this->messages = array();
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* @return int
|
57 |
+
*/
|
58 |
+
public function startIndex()
|
59 |
+
{
|
60 |
+
return $this->startIndex;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* @return int
|
65 |
+
*/
|
66 |
+
public function totalCount()
|
67 |
+
{
|
68 |
+
return $this->totalCount;
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* @param int $offset <p>
|
73 |
+
* An offset to check for.
|
74 |
+
* </p>
|
75 |
+
* @return boolean true on success or false on failure.
|
76 |
+
* </p>
|
77 |
+
*/
|
78 |
+
public function offsetExists($offset)
|
79 |
+
{
|
80 |
+
return isset($this->messages[$offset]);
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* @param int $offset <p>
|
85 |
+
* The offset to retrieve.
|
86 |
+
* </p>
|
87 |
+
* @return InboxMessage
|
88 |
+
*/
|
89 |
+
public function offsetGet($offset)
|
90 |
+
{
|
91 |
+
return isset($this->messages[$offset])
|
92 |
+
? $this->messages[$offset]
|
93 |
+
: null;
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* @param int $offset <p>
|
98 |
+
* The offset to assign the value to. Cannot be explicitly set.
|
99 |
+
* </p>
|
100 |
+
* @param InboxMessage $value <p>
|
101 |
+
* The value to set.
|
102 |
+
* </p>
|
103 |
+
* @return void
|
104 |
+
*/
|
105 |
+
public function offsetSet($offset, $value)
|
106 |
+
{
|
107 |
+
if (!is_null($offset)) {
|
108 |
+
throw new \Esendex\Exceptions\ArgumentException("InboxPage does not support explicitly set offsets");
|
109 |
+
}
|
110 |
+
|
111 |
+
$this->messages[] = $value;
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* @param int $offset <p>
|
116 |
+
* The offset to unset.
|
117 |
+
* </p>
|
118 |
+
* @return void
|
119 |
+
*/
|
120 |
+
public function offsetUnset($offset)
|
121 |
+
{
|
122 |
+
unset($this->messages[$offset]);
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* @return int
|
127 |
+
*/
|
128 |
+
public function count()
|
129 |
+
{
|
130 |
+
return count($this->messages);
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* @return InboxMessage
|
135 |
+
*/
|
136 |
+
public function current()
|
137 |
+
{
|
138 |
+
return $this->offsetGet($this->position);
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* @return void
|
143 |
+
*/
|
144 |
+
public function next()
|
145 |
+
{
|
146 |
+
++$this->position;
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* @return int
|
151 |
+
*/
|
152 |
+
public function key()
|
153 |
+
{
|
154 |
+
return $this->position;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* @return boolean true on success or false on failure.
|
159 |
+
*/
|
160 |
+
public function valid()
|
161 |
+
{
|
162 |
+
return $this->offsetExists($this->position);
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* @return void
|
167 |
+
*/
|
168 |
+
public function rewind()
|
169 |
+
{
|
170 |
+
$this->position = 0;
|
171 |
+
}
|
172 |
+
}
|
lib/Esendex/Model/Message.php
ADDED
@@ -0,0 +1,107 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
use Esendex\Exceptions\ArgumentException;
|
38 |
+
|
39 |
+
abstract class Message
|
40 |
+
{
|
41 |
+
const Inbound = 'Inbound';
|
42 |
+
const Outbound = 'Outbound';
|
43 |
+
|
44 |
+
const SmsType = "SMS";
|
45 |
+
const VoiceType = "Voice";
|
46 |
+
|
47 |
+
private $originator;
|
48 |
+
private $recipient;
|
49 |
+
private $status;
|
50 |
+
private $type;
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @param string $value
|
54 |
+
* @return string
|
55 |
+
*/
|
56 |
+
public function originator($value = null)
|
57 |
+
{
|
58 |
+
if ($value != null) {
|
59 |
+
$this->originator = (string)$value;
|
60 |
+
}
|
61 |
+
return $this->originator;
|
62 |
+
}
|
63 |
+
|
64 |
+
/**
|
65 |
+
* @param string $value
|
66 |
+
* @return string
|
67 |
+
* @throws \Esendex\Exceptions\ArgumentException
|
68 |
+
*/
|
69 |
+
public function recipient($value = null)
|
70 |
+
{
|
71 |
+
if ($value != null) {
|
72 |
+
if (strlen($value) == 0) {
|
73 |
+
throw new ArgumentException('The recipient given to this message is empty');
|
74 |
+
}
|
75 |
+
$this->recipient = (string)$value;
|
76 |
+
}
|
77 |
+
return $this->recipient;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* @param string $value
|
82 |
+
* @return string
|
83 |
+
*/
|
84 |
+
public function status($value = null)
|
85 |
+
{
|
86 |
+
if ($value != null) {
|
87 |
+
$this->status = (string)$value;
|
88 |
+
}
|
89 |
+
return $this->status;
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* @param string $value
|
94 |
+
* @return string
|
95 |
+
* @throws \Esendex\Exceptions\ArgumentException
|
96 |
+
*/
|
97 |
+
public function type($value = null)
|
98 |
+
{
|
99 |
+
if ($value != null) {
|
100 |
+
if ($value != self::SmsType && $value != self::VoiceType) {
|
101 |
+
throw new ArgumentException("type() value was '{$value}' and must be either 'SMS' or 'Voice'");
|
102 |
+
}
|
103 |
+
$this->type = (string)$value;
|
104 |
+
}
|
105 |
+
return $this->type;
|
106 |
+
}
|
107 |
+
}
|
lib/Esendex/Model/MessageBody.php
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
use Esendex\Exceptions\ArgumentException;
|
38 |
+
|
39 |
+
class MessageBody
|
40 |
+
{
|
41 |
+
const CharsetGSM = "GSM";
|
42 |
+
const CharsetUnicode = "Unicode";
|
43 |
+
const CharsetAuto = "Auto";
|
44 |
+
|
45 |
+
private $bodyText;
|
46 |
+
private $characterSet;
|
47 |
+
|
48 |
+
/**
|
49 |
+
* @param string $value
|
50 |
+
* @return string
|
51 |
+
*/
|
52 |
+
public function bodyText($value = null)
|
53 |
+
{
|
54 |
+
if ($value != null) {
|
55 |
+
$this->bodyText = (string)$value;
|
56 |
+
}
|
57 |
+
return $this->bodyText;
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* @param string $value
|
62 |
+
* @return string
|
63 |
+
* @throws \Esendex\Exceptions\ArgumentException
|
64 |
+
*/
|
65 |
+
public function characterSet($value = null)
|
66 |
+
{
|
67 |
+
if ($value != null) {
|
68 |
+
if ($value != self::CharsetGSM && $value != self::CharsetUnicode) {
|
69 |
+
throw new ArgumentException(
|
70 |
+
"characterSet() value was '{$value}' and must be either '" .
|
71 |
+
self::CharsetGSM .
|
72 |
+
"' or '" .
|
73 |
+
self::CharsetUnicode .
|
74 |
+
"'"
|
75 |
+
);
|
76 |
+
}
|
77 |
+
$this->characterSet = (string)$value;
|
78 |
+
}
|
79 |
+
return $this->characterSet;
|
80 |
+
}
|
81 |
+
|
82 |
+
public function __toString()
|
83 |
+
{
|
84 |
+
return $this->bodyText;
|
85 |
+
}
|
86 |
+
}
|
lib/Esendex/Model/MessageInformation.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
use Esendex\Exceptions\ArgumentException;
|
38 |
+
|
39 |
+
class MessageInformation
|
40 |
+
{
|
41 |
+
private $parts;
|
42 |
+
private $characterSet;
|
43 |
+
private $availableCharactersInLastPart;
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @param int $value
|
47 |
+
* @return int
|
48 |
+
*/
|
49 |
+
public function parts($value = null)
|
50 |
+
{
|
51 |
+
if ($value != null) {
|
52 |
+
$this->parts = intval($value);
|
53 |
+
}
|
54 |
+
return $this->parts;
|
55 |
+
}
|
56 |
+
|
57 |
+
/**
|
58 |
+
* @param string $value
|
59 |
+
* @return string
|
60 |
+
* @throws \Esendex\Exceptions\ArgumentException
|
61 |
+
*/
|
62 |
+
public function characterSet($value = null)
|
63 |
+
{
|
64 |
+
if ($value != null) {
|
65 |
+
if ($value != MessageBody::CharsetGSM &&
|
66 |
+
$value != MessageBody::CharsetUnicode) {
|
67 |
+
throw new ArgumentException(
|
68 |
+
"characterSet() value was '{$value}' and must be either '" .
|
69 |
+
MessageBody::CharsetGSM .
|
70 |
+
"' or '" .
|
71 |
+
MessageBody::CharsetUnicode .
|
72 |
+
"'"
|
73 |
+
);
|
74 |
+
}
|
75 |
+
$this->characterSet = (string)$value;
|
76 |
+
}
|
77 |
+
return $this->characterSet;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* @param int $value
|
82 |
+
* @return int
|
83 |
+
*/
|
84 |
+
public function availableCharactersInLastPart($value = null)
|
85 |
+
{
|
86 |
+
if ($value != null) {
|
87 |
+
$this->availableCharactersInLastPart = intval($value);
|
88 |
+
}
|
89 |
+
return $this->availableCharactersInLastPart;
|
90 |
+
}
|
91 |
+
}
|
lib/Esendex/Model/ResultItem.php
ADDED
@@ -0,0 +1,67 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
class ResultItem
|
38 |
+
{
|
39 |
+
private $id;
|
40 |
+
private $uri;
|
41 |
+
|
42 |
+
/**
|
43 |
+
* @param $id
|
44 |
+
* @param $uri
|
45 |
+
*/
|
46 |
+
public function __construct($id, $uri)
|
47 |
+
{
|
48 |
+
$this->id = (string)$id;
|
49 |
+
$this->uri = (string)$uri;
|
50 |
+
}
|
51 |
+
|
52 |
+
/**
|
53 |
+
* @return string
|
54 |
+
*/
|
55 |
+
public function id()
|
56 |
+
{
|
57 |
+
return $this->id;
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* @return string
|
62 |
+
*/
|
63 |
+
public function uri()
|
64 |
+
{
|
65 |
+
return $this->uri;
|
66 |
+
}
|
67 |
+
}
|
lib/Esendex/Model/ResultMessage.php
ADDED
@@ -0,0 +1,119 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
abstract class ResultMessage extends Message
|
38 |
+
{
|
39 |
+
private $id;
|
40 |
+
private $direction;
|
41 |
+
private $parts;
|
42 |
+
private $bodyUri;
|
43 |
+
private $summary;
|
44 |
+
private $lastStatusAt;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @param string $value
|
48 |
+
* @return string
|
49 |
+
*/
|
50 |
+
public function id($value = null)
|
51 |
+
{
|
52 |
+
if ($value != null) {
|
53 |
+
$this->id = (string)$value;
|
54 |
+
}
|
55 |
+
return $this->id;
|
56 |
+
}
|
57 |
+
|
58 |
+
/**
|
59 |
+
* @param string $value
|
60 |
+
* @return string
|
61 |
+
*/
|
62 |
+
public function direction($value = null)
|
63 |
+
{
|
64 |
+
if ($value != null) {
|
65 |
+
if ($value == self::Inbound || $value == self::Outbound) {
|
66 |
+
$this->direction = (string)$value;
|
67 |
+
}
|
68 |
+
}
|
69 |
+
return $this->direction;
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* @param int $parts
|
74 |
+
* @return int
|
75 |
+
*/
|
76 |
+
public function parts($parts = null)
|
77 |
+
{
|
78 |
+
if ($parts != null) {
|
79 |
+
$this->parts = (int)$parts;
|
80 |
+
}
|
81 |
+
return $this->parts;
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* @param string $value
|
86 |
+
* @return string
|
87 |
+
*/
|
88 |
+
public function bodyUri($value = null)
|
89 |
+
{
|
90 |
+
if ($value != null) {
|
91 |
+
$this->bodyUri = (string)$value;
|
92 |
+
}
|
93 |
+
return $this->bodyUri;
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* @param string $value
|
98 |
+
* @return string
|
99 |
+
*/
|
100 |
+
public function summary($value = null)
|
101 |
+
{
|
102 |
+
if ($value != null) {
|
103 |
+
$this->summary = (string)$value;
|
104 |
+
}
|
105 |
+
return $this->summary;
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* @param \DateTime $value
|
110 |
+
* @return \DateTime
|
111 |
+
*/
|
112 |
+
public function lastStatusAt($value = null)
|
113 |
+
{
|
114 |
+
if ($value instanceof \DateTime) {
|
115 |
+
$this->lastStatusAt = $value;
|
116 |
+
}
|
117 |
+
return $this->lastStatusAt;
|
118 |
+
}
|
119 |
+
}
|
lib/Esendex/Model/SentMessage.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
class SentMessage extends ResultMessage
|
38 |
+
{
|
39 |
+
private $submittedAt;
|
40 |
+
private $sentAt;
|
41 |
+
private $deliveredAt;
|
42 |
+
private $username;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @param \DateTime $value
|
46 |
+
* @return \DateTime
|
47 |
+
*/
|
48 |
+
public function submittedAt($value = null)
|
49 |
+
{
|
50 |
+
if ($value instanceof \DateTime) {
|
51 |
+
$this->submittedAt = $value;
|
52 |
+
}
|
53 |
+
return $this->submittedAt;
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* @param \DateTime $value
|
58 |
+
* @return \DateTime
|
59 |
+
*/
|
60 |
+
public function sentAt($value = null)
|
61 |
+
{
|
62 |
+
if ($value instanceof \DateTime) {
|
63 |
+
$this->sentAt = $value;
|
64 |
+
}
|
65 |
+
return $this->sentAt;
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* @param \DateTime $value
|
70 |
+
* @return \DateTime
|
71 |
+
*/
|
72 |
+
public function deliveredAt($value = null)
|
73 |
+
{
|
74 |
+
if ($value instanceof \DateTime) {
|
75 |
+
$this->deliveredAt = $value;
|
76 |
+
}
|
77 |
+
return $this->deliveredAt;
|
78 |
+
}
|
79 |
+
|
80 |
+
/**
|
81 |
+
* @param string $value
|
82 |
+
* @return string
|
83 |
+
*/
|
84 |
+
public function username($value = null)
|
85 |
+
{
|
86 |
+
if ($value != null) {
|
87 |
+
$this->username = (string)$value;
|
88 |
+
}
|
89 |
+
return $this->username;
|
90 |
+
}
|
91 |
+
}
|
lib/Esendex/Model/SentMessagesPage.php
ADDED
@@ -0,0 +1,172 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Model
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Model;
|
36 |
+
|
37 |
+
class SentMessagesPage implements \ArrayAccess, \Countable, \Iterator
|
38 |
+
{
|
39 |
+
private $startIndex;
|
40 |
+
private $totalCount;
|
41 |
+
private $messages;
|
42 |
+
private $position = 0;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* @param $startIndex
|
46 |
+
* @param $totalCount
|
47 |
+
*/
|
48 |
+
public function __construct($startIndex, $totalCount)
|
49 |
+
{
|
50 |
+
$this->startIndex = (int)$startIndex;
|
51 |
+
$this->totalCount = (int)$totalCount;
|
52 |
+
$this->messages = array();
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* @return int
|
57 |
+
*/
|
58 |
+
public function startIndex()
|
59 |
+
{
|
60 |
+
return $this->startIndex;
|
61 |
+
}
|
62 |
+
|
63 |
+
/**
|
64 |
+
* @return int
|
65 |
+
*/
|
66 |
+
public function totalCount()
|
67 |
+
{
|
68 |
+
return $this->totalCount;
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* @param int $offset <p>
|
73 |
+
* An offset to check for.
|
74 |
+
* </p>
|
75 |
+
* @return boolean true on success or false on failure.
|
76 |
+
* </p>
|
77 |
+
*/
|
78 |
+
public function offsetExists($offset)
|
79 |
+
{
|
80 |
+
return isset($this->messages[$offset]);
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* @param int $offset <p>
|
85 |
+
* The offset to retrieve.
|
86 |
+
* </p>
|
87 |
+
* @return SentMessage
|
88 |
+
*/
|
89 |
+
public function offsetGet($offset)
|
90 |
+
{
|
91 |
+
return isset($this->messages[$offset])
|
92 |
+
? $this->messages[$offset]
|
93 |
+
: null;
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* @param int $offset <p>
|
98 |
+
* The offset to assign the value to. Cannot be explicitly set.
|
99 |
+
* </p>
|
100 |
+
* @param SentMessage $value <p>
|
101 |
+
* The value to set.
|
102 |
+
* </p>
|
103 |
+
* @return void
|
104 |
+
*/
|
105 |
+
public function offsetSet($offset, $value)
|
106 |
+
{
|
107 |
+
if (!is_null($offset)) {
|
108 |
+
throw new \Esendex\Exceptions\ArgumentException("SentMessagesPage does not support explicitly set offsets");
|
109 |
+
}
|
110 |
+
|
111 |
+
$this->messages[] = $value;
|
112 |
+
}
|
113 |
+
|
114 |
+
/**
|
115 |
+
* @param int $offset <p>
|
116 |
+
* The offset to unset.
|
117 |
+
* </p>
|
118 |
+
* @return void
|
119 |
+
*/
|
120 |
+
public function offsetUnset($offset)
|
121 |
+
{
|
122 |
+
unset($this->messages[$offset]);
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* @return int
|
127 |
+
*/
|
128 |
+
public function count()
|
129 |
+
{
|
130 |
+
return count($this->messages);
|
131 |
+
}
|
132 |
+
|
133 |
+
/**
|
134 |
+
* @return SentMessage
|
135 |
+
*/
|
136 |
+
public function current()
|
137 |
+
{
|
138 |
+
return $this->offsetGet($this->position);
|
139 |
+
}
|
140 |
+
|
141 |
+
/**
|
142 |
+
* @return void
|
143 |
+
*/
|
144 |
+
public function next()
|
145 |
+
{
|
146 |
+
++$this->position;
|
147 |
+
}
|
148 |
+
|
149 |
+
/**
|
150 |
+
* @return int
|
151 |
+
*/
|
152 |
+
public function key()
|
153 |
+
{
|
154 |
+
return $this->position;
|
155 |
+
}
|
156 |
+
|
157 |
+
/**
|
158 |
+
* @return boolean true on success or false on failure.
|
159 |
+
*/
|
160 |
+
public function valid()
|
161 |
+
{
|
162 |
+
return $this->offsetExists($this->position);
|
163 |
+
}
|
164 |
+
|
165 |
+
/**
|
166 |
+
* @return void
|
167 |
+
*/
|
168 |
+
public function rewind()
|
169 |
+
{
|
170 |
+
$this->position = 0;
|
171 |
+
}
|
172 |
+
}
|
lib/Esendex/Parser/AccountXmlParser.php
ADDED
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Parser
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Parser;
|
36 |
+
|
37 |
+
use Esendex\Model\Account;
|
38 |
+
|
39 |
+
class AccountXmlParser
|
40 |
+
{
|
41 |
+
public function parse($xml)
|
42 |
+
{
|
43 |
+
$accounts = simplexml_load_string($xml);
|
44 |
+
$result = array();
|
45 |
+
foreach ($accounts->account as $account) {
|
46 |
+
$result[] = $this->parseAccount($account);
|
47 |
+
}
|
48 |
+
return $result;
|
49 |
+
}
|
50 |
+
|
51 |
+
private function parseAccount($account)
|
52 |
+
{
|
53 |
+
$result = new Account();
|
54 |
+
$result->id($account["id"]);
|
55 |
+
$result->reference($account->reference);
|
56 |
+
$result->label($account->label);
|
57 |
+
$result->address($account->address);
|
58 |
+
$result->alias($account->alias);
|
59 |
+
$result->type($account->type);
|
60 |
+
$result->messagesRemaining(intval($account->messagesremaining, 10));
|
61 |
+
$result->expiresOn($this->parseDateTime($account->expireson));
|
62 |
+
$result->defaultDialCode($account->defaultdialcode);
|
63 |
+
return $result;
|
64 |
+
}
|
65 |
+
|
66 |
+
private function parseDateTime($value)
|
67 |
+
{
|
68 |
+
$value = (strlen($value) < 20)
|
69 |
+
? $value . "Z"
|
70 |
+
: substr($value, 0, 19) . "Z";
|
71 |
+
|
72 |
+
return \DateTime::createFromFormat(\DateTime::ISO8601, $value);
|
73 |
+
}
|
74 |
+
}
|
lib/Esendex/Parser/DispatchXmlParser.php
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Parser
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Parser;
|
36 |
+
use Esendex\Model\Api;
|
37 |
+
use Esendex\Model\Message;
|
38 |
+
use Esendex\Model\ResultItem;
|
39 |
+
use Esendex\Exceptions\ArgumentException;
|
40 |
+
use Esendex\Exceptions\XmlException;
|
41 |
+
|
42 |
+
class DispatchXmlParser
|
43 |
+
{
|
44 |
+
private $reference;
|
45 |
+
|
46 |
+
function __construct($accountReference)
|
47 |
+
{
|
48 |
+
$this->reference = $accountReference;
|
49 |
+
}
|
50 |
+
|
51 |
+
public function encode(\Esendex\Model\DispatchMessage $message)
|
52 |
+
{
|
53 |
+
if ($message->originator() != null) {
|
54 |
+
if (ctype_digit($message->originator())) {
|
55 |
+
if (strlen($message->originator()) > 20)
|
56 |
+
throw new ArgumentException("Numeric originator must be <= 20 digits");
|
57 |
+
} else {
|
58 |
+
if (strlen($message->originator()) > 11)
|
59 |
+
throw new ArgumentException("Alphanumeric originator must <= 11 characters");
|
60 |
+
if (!preg_match("/^[a-zA-Z0-9\*\$\?\!\"\#\%\&_\-\,\.\s@'\+]{1,11}$/",
|
61 |
+
$message->originator()))
|
62 |
+
throw new ArgumentException("Alphanumeric originator contains invalid character(s)");
|
63 |
+
}
|
64 |
+
}
|
65 |
+
if (strlen($message->recipient()) < 1)
|
66 |
+
throw new ArgumentException("Recipient is invalid");
|
67 |
+
if ($message->validityPeriod() > 72)
|
68 |
+
throw new ArgumentException("Validity too long, must be less or equal to than 72");
|
69 |
+
|
70 |
+
$doc = new \SimpleXMLElement("<?xml version=\"1.0\" encoding=\"utf-8\"?><messages />", 0, false, Api::NS);
|
71 |
+
$doc->addAttribute("xmlns", Api::NS);
|
72 |
+
$doc->accountreference = $this->reference;
|
73 |
+
if ($message->characterSet() != null)
|
74 |
+
$doc->characterset = $message->characterSet();
|
75 |
+
|
76 |
+
$child = $doc->addChild("message");
|
77 |
+
if ($message->originator() != null)
|
78 |
+
$child->from = $message->originator();
|
79 |
+
$child->to = $message->recipient();
|
80 |
+
$child->body = $message->body();
|
81 |
+
$child->type = $message->type();
|
82 |
+
if ($message->validityPeriod() > 0)
|
83 |
+
$child->validity = $message->validityPeriod();
|
84 |
+
if ($message->language() != null)
|
85 |
+
$child->lang = $message->language();
|
86 |
+
|
87 |
+
return $doc->asXML();
|
88 |
+
}
|
89 |
+
|
90 |
+
public function parse($xml)
|
91 |
+
{
|
92 |
+
$headers = simplexml_load_string($xml);
|
93 |
+
if ($headers->getName() != "messageheaders")
|
94 |
+
throw new XmlException("Xml is missing <messageheaders /> root element");
|
95 |
+
|
96 |
+
$results = array();
|
97 |
+
foreach ($headers->messageheader as $header)
|
98 |
+
{
|
99 |
+
$results[] = new ResultItem($header["id"], $header["uri"]);
|
100 |
+
}
|
101 |
+
|
102 |
+
return $results;
|
103 |
+
}
|
104 |
+
}
|
lib/Esendex/Parser/InboxXmlParser.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Parser
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Parser;
|
36 |
+
|
37 |
+
class InboxXmlParser
|
38 |
+
{
|
39 |
+
private $headerParser;
|
40 |
+
|
41 |
+
public function __construct(MessageHeaderXmlParser $headerParser)
|
42 |
+
{
|
43 |
+
if (is_null($headerParser))
|
44 |
+
throw new \Esendex\Exceptions\ArgumentException("headerParser must be set");
|
45 |
+
|
46 |
+
$this->headerParser = $headerParser;
|
47 |
+
}
|
48 |
+
|
49 |
+
public function parse($xml)
|
50 |
+
{
|
51 |
+
$headers = simplexml_load_string($xml);
|
52 |
+
$result = new \Esendex\Model\InboxPage($headers["startindex"], $headers["totalcount"]);
|
53 |
+
foreach ($headers->messageheader as $header)
|
54 |
+
{
|
55 |
+
$result[] = $this->headerParser->parseHeader($header);
|
56 |
+
}
|
57 |
+
return $result;
|
58 |
+
}
|
59 |
+
}
|
lib/Esendex/Parser/MessageHeaderXmlParser.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Parser
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Parser;
|
36 |
+
|
37 |
+
use Esendex\Model\Message;
|
38 |
+
use Esendex\Model\SentMessage;
|
39 |
+
use Esendex\Model\InboxMessage;
|
40 |
+
|
41 |
+
class MessageHeaderXmlParser
|
42 |
+
{
|
43 |
+
public function parse($xml)
|
44 |
+
{
|
45 |
+
$header = simplexml_load_string($xml);
|
46 |
+
return $this->parseHeader($header);
|
47 |
+
}
|
48 |
+
|
49 |
+
public function parseHeader($header)
|
50 |
+
{
|
51 |
+
$direction = $header->direction;
|
52 |
+
$result = ($direction == Message::Inbound)
|
53 |
+
? new InboxMessage()
|
54 |
+
: new SentMessage();
|
55 |
+
|
56 |
+
$result->id($header["id"]);
|
57 |
+
$result->originator($header->from->phonenumber);
|
58 |
+
$result->recipient($header->to->phonenumber);
|
59 |
+
$result->status($header->status);
|
60 |
+
$result->type($header->type);
|
61 |
+
$result->direction($direction);
|
62 |
+
$result->parts($header->parts);
|
63 |
+
$result->bodyUri($header->body["uri"]);
|
64 |
+
$result->summary($header->summary);
|
65 |
+
$result->lastStatusAt($this->parseDateTime($header->laststatusat));
|
66 |
+
if ($direction == Message::Outbound) {
|
67 |
+
$result->submittedAt($this->parseDateTime($header->submittedat));
|
68 |
+
$result->sentAt($this->parseDateTime($header->sentat));
|
69 |
+
$result->deliveredAt($this->parseDateTime($header->deliveredat));
|
70 |
+
$result->username($header->username);
|
71 |
+
} else {
|
72 |
+
$result->receivedAt($this->parseDateTime($header->receivedat));
|
73 |
+
$readAt = $header->readat;
|
74 |
+
if (substr($readAt, 0, 2) != "00") {
|
75 |
+
$result->readAt($this->parseDateTime($readAt));
|
76 |
+
$result->readBy($header->readby);
|
77 |
+
}
|
78 |
+
}
|
79 |
+
|
80 |
+
return $result;
|
81 |
+
}
|
82 |
+
|
83 |
+
private function parseDateTime($value)
|
84 |
+
{
|
85 |
+
$value = (strlen($value) > 20)
|
86 |
+
? substr($value, 0, 19) . "Z"
|
87 |
+
: $value;
|
88 |
+
|
89 |
+
return \DateTime::createFromFormat(\DateTime::ISO8601, $value);
|
90 |
+
}
|
91 |
+
}
|
lib/Esendex/Parser/MessageInformationXmlParser.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Parser
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Parser;
|
36 |
+
|
37 |
+
use Esendex\Exceptions\ArgumentException;
|
38 |
+
use Esendex\Model\Api;
|
39 |
+
use Esendex\Model\MessageBody;
|
40 |
+
use Esendex\Model\MessageInformation;
|
41 |
+
|
42 |
+
class MessageInformationXmlParser
|
43 |
+
{
|
44 |
+
public function encode($message, $characterSet)
|
45 |
+
{
|
46 |
+
if ($characterSet != MessageBody::CharsetGSM &&
|
47 |
+
$characterSet != MessageBody::CharsetUnicode &&
|
48 |
+
$characterSet != MessageBody::CharsetAuto) {
|
49 |
+
throw new ArgumentException(
|
50 |
+
"characterSet value was '{$characterSet}' and must be one of '" .
|
51 |
+
MessageBody::CharsetGSM .
|
52 |
+
"', '" .
|
53 |
+
MessageBody::CharsetUnicode .
|
54 |
+
"' or '" .
|
55 |
+
MessageBody::CharsetAuto .
|
56 |
+
"'"
|
57 |
+
);
|
58 |
+
}
|
59 |
+
|
60 |
+
$doc = new \SimpleXMLElement(
|
61 |
+
"<?xml version=\"1.0\" encoding=\"utf-8\"?><messages />",
|
62 |
+
0,
|
63 |
+
false,
|
64 |
+
Api::NS
|
65 |
+
);
|
66 |
+
$doc->addAttribute("xmlns", Api::NS);
|
67 |
+
$child = $doc->addChild("message");
|
68 |
+
$child->body = $message;
|
69 |
+
$child->characterset = $characterSet;
|
70 |
+
return $doc->asXML();
|
71 |
+
}
|
72 |
+
|
73 |
+
public function parse($xml)
|
74 |
+
{
|
75 |
+
$response = simplexml_load_string($xml);
|
76 |
+
$result = array();
|
77 |
+
foreach ($response->messages->message as $message) {
|
78 |
+
$result[] = $this->parseMessageInformation($message);
|
79 |
+
}
|
80 |
+
return $result;
|
81 |
+
}
|
82 |
+
|
83 |
+
private function parseMessageInformation($message)
|
84 |
+
{
|
85 |
+
$result = new MessageInformation();
|
86 |
+
$result->parts($message->parts);
|
87 |
+
$result->characterSet($message->characterset);
|
88 |
+
$result->availableCharactersInLastPart($message->availablecharactersinlastpart);
|
89 |
+
return $result;
|
90 |
+
}
|
91 |
+
}
|
lib/Esendex/Parser/SentMessagesXmlParser.php
ADDED
@@ -0,0 +1,59 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Parser
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex\Parser;
|
36 |
+
|
37 |
+
class SentMessagesXmlParser
|
38 |
+
{
|
39 |
+
private $headerParser;
|
40 |
+
|
41 |
+
public function __construct(MessageHeaderXmlParser $headerParser)
|
42 |
+
{
|
43 |
+
if (is_null($headerParser))
|
44 |
+
throw new \Esendex\Exceptions\ArgumentException("headerParser must be set");
|
45 |
+
|
46 |
+
$this->headerParser = $headerParser;
|
47 |
+
}
|
48 |
+
|
49 |
+
public function parse($xml)
|
50 |
+
{
|
51 |
+
$headers = simplexml_load_string($xml);
|
52 |
+
$result = new \Esendex\Model\SentMessagesPage($headers["startindex"], $headers["totalcount"]);
|
53 |
+
foreach ($headers->messageheader as $header)
|
54 |
+
{
|
55 |
+
$result[] = $this->headerParser->parseHeader($header);
|
56 |
+
}
|
57 |
+
return $result;
|
58 |
+
}
|
59 |
+
}
|
lib/Esendex/SentMessagesService.php
ADDED
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Service
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex;
|
36 |
+
|
37 |
+
class SentMessagesService
|
38 |
+
{
|
39 |
+
const SENT_MESSAGES_SERVICE = 'messageheaders';
|
40 |
+
const SENT_MESSAGES_SERVICE_VERSION = 'v1.0';
|
41 |
+
|
42 |
+
private $authentication;
|
43 |
+
private $httpClient;
|
44 |
+
private $parser;
|
45 |
+
|
46 |
+
/**
|
47 |
+
* @param Authentication\IAuthentication $authentication
|
48 |
+
* @param Http\IHttp $httpClient
|
49 |
+
* @param Parser\SentMessagesXmlParser $parser
|
50 |
+
*/
|
51 |
+
public function __construct(
|
52 |
+
Authentication\IAuthentication $authentication,
|
53 |
+
Http\IHttp $httpClient = null,
|
54 |
+
Parser\SentMessagesXmlParser $parser = null
|
55 |
+
) {
|
56 |
+
$this->authentication = $authentication;
|
57 |
+
$this->httpClient = (isset($httpClient))
|
58 |
+
? $httpClient
|
59 |
+
: new Http\HttpClient(true);
|
60 |
+
$this->parser = (isset($parser))
|
61 |
+
? $parser
|
62 |
+
: new Parser\SentMessagesXmlParser(new Parser\MessageHeaderXmlParser());
|
63 |
+
}
|
64 |
+
|
65 |
+
/**
|
66 |
+
* @param int $startIndex
|
67 |
+
* @param int $count
|
68 |
+
* @return Model\SentMessagesPage
|
69 |
+
*/
|
70 |
+
public function latest($startIndex = null, $count = null)
|
71 |
+
{
|
72 |
+
$query = array();
|
73 |
+
if ($startIndex != null && is_int($startIndex)) {
|
74 |
+
$query["startIndex"] = $startIndex;
|
75 |
+
}
|
76 |
+
if ($count != null && is_int($count)) {
|
77 |
+
$query["count"] = $count;
|
78 |
+
}
|
79 |
+
|
80 |
+
return $this->loadMessages($query);
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* @param array $options
|
85 |
+
* @return Model\SentMessagesPage
|
86 |
+
*/
|
87 |
+
public function loadMessages(array $options)
|
88 |
+
{
|
89 |
+
$uri = Http\UriBuilder::serviceUri(
|
90 |
+
self::SENT_MESSAGES_SERVICE_VERSION,
|
91 |
+
self::SENT_MESSAGES_SERVICE,
|
92 |
+
null,
|
93 |
+
$this->httpClient->isSecure()
|
94 |
+
);
|
95 |
+
|
96 |
+
$options['accountreference'] = $this->authentication->accountReference();
|
97 |
+
$uri .= "?" . Http\UriBuilder::buildQuery($options);
|
98 |
+
|
99 |
+
$data = $this->httpClient->get(
|
100 |
+
$uri,
|
101 |
+
$this->authentication
|
102 |
+
);
|
103 |
+
|
104 |
+
return $this->parser->parse($data);
|
105 |
+
}
|
106 |
+
}
|
lib/Esendex/SessionService.php
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Copyright (c) 2013, Esendex Ltd.
|
4 |
+
* All rights reserved.
|
5 |
+
*
|
6 |
+
* Redistribution and use in source and binary forms, with or without
|
7 |
+
* modification, are permitted provided that the following conditions are met:
|
8 |
+
* * Redistributions of source code must retain the above copyright
|
9 |
+
* notice, this list of conditions and the following disclaimer.
|
10 |
+
* * Redistributions in binary form must reproduce the above copyright
|
11 |
+
* notice, this list of conditions and the following disclaimer in the
|
12 |
+
* documentation and/or other materials provided with the distribution.
|
13 |
+
* * Neither the name of Esendex nor the
|
14 |
+
* names of its contributors may be used to endorse or promote products
|
15 |
+
* derived from this software without specific prior written permission.
|
16 |
+
*
|
17 |
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
18 |
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
19 |
+
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
20 |
+
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
21 |
+
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
22 |
+
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
23 |
+
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
24 |
+
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
25 |
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
26 |
+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27 |
+
*
|
28 |
+
* @category Service
|
29 |
+
* @package Esendex
|
30 |
+
* @author Esendex Support <support@esendex.com>
|
31 |
+
* @copyright 2013 Esendex Ltd.
|
32 |
+
* @license http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause
|
33 |
+
* @link https://github.com/esendex/esendex-php-sdk
|
34 |
+
*/
|
35 |
+
namespace Esendex;
|
36 |
+
|
37 |
+
class SessionService
|
38 |
+
{
|
39 |
+
const SERVICE = 'session';
|
40 |
+
const SERVICE_VERSION = 'v1.0';
|
41 |
+
|
42 |
+
function __construct(Http\IHttp $httpClient = null)
|
43 |
+
{
|
44 |
+
$this->httpUtil = (isset($httpClient))
|
45 |
+
? $httpClient
|
46 |
+
: new Http\HttpClient(true);
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Retrieve a SessionAuthentication instance
|
51 |
+
*
|
52 |
+
* @param string $accountRef
|
53 |
+
* @param string $username
|
54 |
+
* @param string $password
|
55 |
+
* @return SessionAuthentication
|
56 |
+
*/
|
57 |
+
function startSession($accountRef, $username, $password)
|
58 |
+
{
|
59 |
+
$login = new Authentication\LoginAuthentication($accountRef, $username, $password);
|
60 |
+
|
61 |
+
$uri = Http\UriBuilder::serviceUri(
|
62 |
+
self::SERVICE_VERSION,
|
63 |
+
self::SERVICE,
|
64 |
+
array("constructor"),
|
65 |
+
$this->httpUtil->isSecure()
|
66 |
+
);
|
67 |
+
|
68 |
+
$result = $this->httpUtil->post($uri, $login, '');
|
69 |
+
$session = simplexml_load_string($result);
|
70 |
+
|
71 |
+
return new Authentication\SessionAuthentication($accountRef, $session->id);
|
72 |
+
}
|
73 |
+
}
|
lib/Psr/Log/AbstractLogger.php
ADDED
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Psr\Log;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* This is a simple Logger implementation that other Loggers can inherit from.
|
7 |
+
*
|
8 |
+
* It simply delegates all log-level-specific methods to the `log` method to
|
9 |
+
* reduce boilerplate code that a simple Logger that does the same thing with
|
10 |
+
* messages regardless of the error level has to implement.
|
11 |
+
*/
|
12 |
+
abstract class AbstractLogger implements LoggerInterface
|
13 |
+
{
|
14 |
+
/**
|
15 |
+
* System is unusable.
|
16 |
+
*
|
17 |
+
* @param string $message
|
18 |
+
* @param array $context
|
19 |
+
* @return null
|
20 |
+
*/
|
21 |
+
public function emergency($message, array $context = array())
|
22 |
+
{
|
23 |
+
$this->log(LogLevel::EMERGENCY, $message, $context);
|
24 |
+
}
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Action must be taken immediately.
|
28 |
+
*
|
29 |
+
* Example: Entire website down, database unavailable, etc. This should
|
30 |
+
* trigger the SMS alerts and wake you up.
|
31 |
+
*
|
32 |
+
* @param string $message
|
33 |
+
* @param array $context
|
34 |
+
* @return null
|
35 |
+
*/
|
36 |
+
public function alert($message, array $context = array())
|
37 |
+
{
|
38 |
+
$this->log(LogLevel::ALERT, $message, $context);
|
39 |
+
}
|
40 |
+
|
41 |
+
/**
|
42 |
+
* Critical conditions.
|
43 |
+
*
|
44 |
+
* Example: Application component unavailable, unexpected exception.
|
45 |
+
*
|
46 |
+
* @param string $message
|
47 |
+
* @param array $context
|
48 |
+
* @return null
|
49 |
+
*/
|
50 |
+
public function critical($message, array $context = array())
|
51 |
+
{
|
52 |
+
$this->log(LogLevel::CRITICAL, $message, $context);
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Runtime errors that do not require immediate action but should typically
|
57 |
+
* be logged and monitored.
|
58 |
+
*
|
59 |
+
* @param string $message
|
60 |
+
* @param array $context
|
61 |
+
* @return null
|
62 |
+
*/
|
63 |
+
public function error($message, array $context = array())
|
64 |
+
{
|
65 |
+
$this->log(LogLevel::ERROR, $message, $context);
|
66 |
+
}
|
67 |
+
|
68 |
+
/**
|
69 |
+
* Exceptional occurrences that are not errors.
|
70 |
+
*
|
71 |
+
* Example: Use of deprecated APIs, poor use of an API, undesirable things
|
72 |
+
* that are not necessarily wrong.
|
73 |
+
*
|
74 |
+
* @param string $message
|
75 |
+
* @param array $context
|
76 |
+
* @return null
|
77 |
+
*/
|
78 |
+
public function warning($message, array $context = array())
|
79 |
+
{
|
80 |
+
$this->log(LogLevel::WARNING, $message, $context);
|
81 |
+
}
|
82 |
+
|
83 |
+
/**
|
84 |
+
* Normal but significant events.
|
85 |
+
*
|
86 |
+
* @param string $message
|
87 |
+
* @param array $context
|
88 |
+
* @return null
|
89 |
+
*/
|
90 |
+
public function notice($message, array $context = array())
|
91 |
+
{
|
92 |
+
$this->log(LogLevel::NOTICE, $message, $context);
|
93 |
+
}
|
94 |
+
|
95 |
+
/**
|
96 |
+
* Interesting events.
|
97 |
+
*
|
98 |
+
* Example: User logs in, SQL logs.
|
99 |
+
*
|
100 |
+
* @param string $message
|
101 |
+
* @param array $context
|
102 |
+
* @return null
|
103 |
+
*/
|
104 |
+
public function info($message, array $context = array())
|
105 |
+
{
|
106 |
+
$this->log(LogLevel::INFO, $message, $context);
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Detailed debug information.
|
111 |
+
*
|
112 |
+
* @param string $message
|
113 |
+
* @param array $context
|
114 |
+
* @return null
|
115 |
+
*/
|
116 |
+
public function debug($message, array $context = array())
|
117 |
+
{
|
118 |
+
$this->log(LogLevel::DEBUG, $message, $context);
|
119 |
+
}
|
120 |
+
}
|
lib/Psr/Log/InvalidArgumentException.php
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Psr\Log;
|
4 |
+
|
5 |
+
class InvalidArgumentException extends \InvalidArgumentException
|
6 |
+
{
|
7 |
+
}
|
lib/Psr/Log/LogLevel.php
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Psr\Log;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Describes log levels
|
7 |
+
*/
|
8 |
+
class LogLevel
|
9 |
+
{
|
10 |
+
const EMERGENCY = 'emergency';
|
11 |
+
const ALERT = 'alert';
|
12 |
+
const CRITICAL = 'critical';
|
13 |
+
const ERROR = 'error';
|
14 |
+
const WARNING = 'warning';
|
15 |
+
const NOTICE = 'notice';
|
16 |
+
const INFO = 'info';
|
17 |
+
const DEBUG = 'debug';
|
18 |
+
}
|
lib/Psr/Log/LoggerAwareInterface.php
ADDED
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Psr\Log;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Describes a logger-aware instance
|
7 |
+
*/
|
8 |
+
interface LoggerAwareInterface
|
9 |
+
{
|
10 |
+
/**
|
11 |
+
* Sets a logger instance on the object
|
12 |
+
*
|
13 |
+
* @param LoggerInterface $logger
|
14 |
+
* @return null
|
15 |
+
*/
|
16 |
+
public function setLogger(LoggerInterface $logger);
|
17 |
+
}
|
lib/Psr/Log/LoggerAwareTrait.php
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Psr\Log;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Basic Implementation of LoggerAwareInterface.
|
7 |
+
*/
|
8 |
+
trait LoggerAwareTrait
|
9 |
+
{
|
10 |
+
/** @var LoggerInterface */
|
11 |
+
protected $logger;
|
12 |
+
|
13 |
+
/**
|
14 |
+
* Sets a logger.
|
15 |
+
*
|
16 |
+
* @param LoggerInterface $logger
|
17 |
+
*/
|
18 |
+
public function setLogger(LoggerInterface $logger)
|
19 |
+
{
|
20 |
+
$this->logger = $logger;
|
21 |
+
}
|
22 |
+
}
|
lib/Psr/Log/LoggerInterface.php
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Psr\Log;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* Describes a logger instance
|
7 |
+
*
|
8 |
+
* The message MUST be a string or object implementing __toString().
|
9 |
+
*
|
10 |
+
* The message MAY contain placeholders in the form: {foo} where foo
|
11 |
+
* will be replaced by the context data in key "foo".
|
12 |
+
*
|
13 |
+
* The context array can contain arbitrary data, the only assumption that
|
14 |
+
* can be made by implementors is that if an Exception instance is given
|
15 |
+
* to produce a stack trace, it MUST be in a key named "exception".
|
16 |
+
*
|
17 |
+
* See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
|
18 |
+
* for the full interface specification.
|
19 |
+
*/
|
20 |
+
interface LoggerInterface
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* System is unusable.
|
24 |
+
*
|
25 |
+
* @param string $message
|
26 |
+
* @param array $context
|
27 |
+
* @return null
|
28 |
+
*/
|
29 |
+
public function emergency($message, array $context = array());
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Action must be taken immediately.
|
33 |
+
*
|
34 |
+
* Example: Entire website down, database unavailable, etc. This should
|
35 |
+
* trigger the SMS alerts and wake you up.
|
36 |
+
*
|
37 |
+
* @param string $message
|
38 |
+
* @param array $context
|
39 |
+
* @return null
|
40 |
+
*/
|
41 |
+
public function alert($message, array $context = array());
|
42 |
+
|
43 |
+
/**
|
44 |
+
* Critical conditions.
|
45 |
+
*
|
46 |
+
* Example: Application component unavailable, unexpected exception.
|
47 |
+
*
|
48 |
+
* @param string $message
|
49 |
+
* @param array $context
|
50 |
+
* @return null
|
51 |
+
*/
|
52 |
+
public function critical($message, array $context = array());
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Runtime errors that do not require immediate action but should typically
|
56 |
+
* be logged and monitored.
|
57 |
+
*
|
58 |
+
* @param string $message
|
59 |
+
* @param array $context
|
60 |
+
* @return null
|
61 |
+
*/
|
62 |
+
public function error($message, array $context = array());
|
63 |
+
|
64 |
+
/**
|
65 |
+
* Exceptional occurrences that are not errors.
|
66 |
+
*
|
67 |
+
* Example: Use of deprecated APIs, poor use of an API, undesirable things
|
68 |
+
* that are not necessarily wrong.
|
69 |
+
*
|
70 |
+
* @param string $message
|
71 |
+
* @param array $context
|
72 |
+
* @return null
|
73 |
+
*/
|
74 |
+
public function warning($message, array $context = array());
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Normal but significant events.
|
78 |
+
*
|
79 |
+
* @param string $message
|
80 |
+
* @param array $context
|
81 |
+
* @return null
|
82 |
+
*/
|
83 |
+
public function notice($message, array $context = array());
|
84 |
+
|
85 |
+
/**
|
86 |
+
* Interesting events.
|
87 |
+
*
|
88 |
+
* Example: User logs in, SQL logs.
|
89 |
+
*
|
90 |
+
* @param string $message
|
91 |
+
* @param array $context
|
92 |
+
* @return null
|
93 |
+
*/
|
94 |
+
public function info($message, array $context = array());
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Detailed debug information.
|
98 |
+
*
|
99 |
+
* @param string $message
|
100 |
+
* @param array $context
|
101 |
+
* @return null
|
102 |
+
*/
|
103 |
+
public function debug($message, array $context = array());
|
104 |
+
|
105 |
+
/**
|
106 |
+
* Logs with an arbitrary level.
|
107 |
+
*
|
108 |
+
* @param mixed $level
|
109 |
+
* @param string $message
|
110 |
+
* @param array $context
|
111 |
+
* @return null
|
112 |
+
*/
|
113 |
+
public function log($level, $message, array $context = array());
|
114 |
+
}
|
lib/Psr/Log/LoggerTrait.php
ADDED
@@ -0,0 +1,131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Psr\Log;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* This is a simple Logger trait that classes unable to extend AbstractLogger
|
7 |
+
* (because they extend another class, etc) can include.
|
8 |
+
*
|
9 |
+
* It simply delegates all log-level-specific methods to the `log` method to
|
10 |
+
* reduce boilerplate code that a simple Logger that does the same thing with
|
11 |
+
* messages regardless of the error level has to implement.
|
12 |
+
*/
|
13 |
+
trait LoggerTrait
|
14 |
+
{
|
15 |
+
/**
|
16 |
+
* System is unusable.
|
17 |
+
*
|
18 |
+
* @param string $message
|
19 |
+
* @param array $context
|
20 |
+
* @return null
|
21 |
+
*/
|
22 |
+
public function emergency($message, array $context = array())
|
23 |
+
{
|
24 |
+
$this->log(LogLevel::EMERGENCY, $message, $context);
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Action must be taken immediately.
|
29 |
+
*
|
30 |
+
* Example: Entire website down, database unavailable, etc. This should
|
31 |
+
* trigger the SMS alerts and wake you up.
|
32 |
+
*
|
33 |
+
* @param string $message
|
34 |
+
* @param array $context
|
35 |
+
* @return null
|
36 |
+
*/
|
37 |
+
public function alert($message, array $context = array())
|
38 |
+
{
|
39 |
+
$this->log(LogLevel::ALERT, $message, $context);
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Critical conditions.
|
44 |
+
*
|
45 |
+
* Example: Application component unavailable, unexpected exception.
|
46 |
+
*
|
47 |
+
* @param string $message
|
48 |
+
* @param array $context
|
49 |
+
* @return null
|
50 |
+
*/
|
51 |
+
public function critical($message, array $context = array())
|
52 |
+
{
|
53 |
+
$this->log(LogLevel::CRITICAL, $message, $context);
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Runtime errors that do not require immediate action but should typically
|
58 |
+
* be logged and monitored.
|
59 |
+
*
|
60 |
+
* @param string $message
|
61 |
+
* @param array $context
|
62 |
+
* @return null
|
63 |
+
*/
|
64 |
+
public function error($message, array $context = array())
|
65 |
+
{
|
66 |
+
$this->log(LogLevel::ERROR, $message, $context);
|
67 |
+
}
|
68 |
+
|
69 |
+
/**
|
70 |
+
* Exceptional occurrences that are not errors.
|
71 |
+
*
|
72 |
+
* Example: Use of deprecated APIs, poor use of an API, undesirable things
|
73 |
+
* that are not necessarily wrong.
|
74 |
+
*
|
75 |
+
* @param string $message
|
76 |
+
* @param array $context
|
77 |
+
* @return null
|
78 |
+
*/
|
79 |
+
public function warning($message, array $context = array())
|
80 |
+
{
|
81 |
+
$this->log(LogLevel::WARNING, $message, $context);
|
82 |
+
}
|
83 |
+
|
84 |
+
/**
|
85 |
+
* Normal but significant events.
|
86 |
+
*
|
87 |
+
* @param string $message
|
88 |
+
* @param array $context
|
89 |
+
* @return null
|
90 |
+
*/
|
91 |
+
public function notice($message, array $context = array())
|
92 |
+
{
|
93 |
+
$this->log(LogLevel::NOTICE, $message, $context);
|
94 |
+
}
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Interesting events.
|
98 |
+
*
|
99 |
+
* Example: User logs in, SQL logs.
|
100 |
+
*
|
101 |
+
* @param string $message
|
102 |
+
* @param array $context
|
103 |
+
* @return null
|
104 |
+
*/
|
105 |
+
public function info($message, array $context = array())
|
106 |
+
{
|
107 |
+
$this->log(LogLevel::INFO, $message, $context);
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Detailed debug information.
|
112 |
+
*
|
113 |
+
* @param string $message
|
114 |
+
* @param array $context
|
115 |
+
* @return null
|
116 |
+
*/
|
117 |
+
public function debug($message, array $context = array())
|
118 |
+
{
|
119 |
+
$this->log(LogLevel::DEBUG, $message, $context);
|
120 |
+
}
|
121 |
+
|
122 |
+
/**
|
123 |
+
* Logs with an arbitrary level.
|
124 |
+
*
|
125 |
+
* @param mixed $level
|
126 |
+
* @param string $message
|
127 |
+
* @param array $context
|
128 |
+
* @return null
|
129 |
+
*/
|
130 |
+
abstract public function log($level, $message, array $context = array());
|
131 |
+
}
|
lib/Psr/Log/NullLogger.php
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Psr\Log;
|
4 |
+
|
5 |
+
/**
|
6 |
+
* This Logger can be used to avoid conditional log calls
|
7 |
+
*
|
8 |
+
* Logging should always be optional, and if no logger is provided to your
|
9 |
+
* library creating a NullLogger instance to have something to throw logs at
|
10 |
+
* is a good way to avoid littering your code with `if ($this->logger) { }`
|
11 |
+
* blocks.
|
12 |
+
*/
|
13 |
+
class NullLogger extends AbstractLogger
|
14 |
+
{
|
15 |
+
/**
|
16 |
+
* Logs with an arbitrary level.
|
17 |
+
*
|
18 |
+
* @param mixed $level
|
19 |
+
* @param string $message
|
20 |
+
* @param array $context
|
21 |
+
* @return null
|
22 |
+
*/
|
23 |
+
public function log($level, $message, array $context = array())
|
24 |
+
{
|
25 |
+
// noop
|
26 |
+
}
|
27 |
+
}
|
lib/ca-bundle.pem
ADDED
@@ -0,0 +1,3848 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
##
|
2 |
+
## ca-bundle.crt -- Bundle of CA Root Certificates
|
3 |
+
##
|
4 |
+
## Converted at: 25/02/2013 14:37:18
|
5 |
+
##
|
6 |
+
## This is a bundle of X.509 certificates of public Certificate Authorities
|
7 |
+
## (CA). These were automatically extracted from Mozilla's root certificates
|
8 |
+
## file (certdata.txt). This file can be found in the mozilla source tree:
|
9 |
+
## '/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt'
|
10 |
+
##
|
11 |
+
## It contains the certificates in PEM format and therefore
|
12 |
+
## can be directly used with curl / libcurl / php_curl, or with
|
13 |
+
## an Apache+mod_ssl webserver for SSL client authentication.
|
14 |
+
## Just configure this file as the SSLCACertificateFile.
|
15 |
+
##
|
16 |
+
|
17 |
+
# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.87 $ $Date: 2012/12/29 16:32:45 $
|
18 |
+
|
19 |
+
GTE CyberTrust Global Root
|
20 |
+
==========================
|
21 |
+
-----BEGIN CERTIFICATE-----
|
22 |
+
MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg
|
23 |
+
Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG
|
24 |
+
A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz
|
25 |
+
MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL
|
26 |
+
Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0
|
27 |
+
IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u
|
28 |
+
sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql
|
29 |
+
HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID
|
30 |
+
AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW
|
31 |
+
M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF
|
32 |
+
NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
|
33 |
+
-----END CERTIFICATE-----
|
34 |
+
|
35 |
+
Thawte Server CA
|
36 |
+
================
|
37 |
+
-----BEGIN CERTIFICATE-----
|
38 |
+
MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
39 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
40 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE
|
41 |
+
AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j
|
42 |
+
b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV
|
43 |
+
BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u
|
44 |
+
c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG
|
45 |
+
A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0
|
46 |
+
ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl
|
47 |
+
/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7
|
48 |
+
1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR
|
49 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J
|
50 |
+
GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ
|
51 |
+
GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc=
|
52 |
+
-----END CERTIFICATE-----
|
53 |
+
|
54 |
+
Thawte Premium Server CA
|
55 |
+
========================
|
56 |
+
-----BEGIN CERTIFICATE-----
|
57 |
+
MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT
|
58 |
+
DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs
|
59 |
+
dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE
|
60 |
+
AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl
|
61 |
+
ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT
|
62 |
+
AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU
|
63 |
+
VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2
|
64 |
+
aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ
|
65 |
+
cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2
|
66 |
+
aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh
|
67 |
+
Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/
|
68 |
+
qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm
|
69 |
+
SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf
|
70 |
+
8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t
|
71 |
+
UCemDaYj+bvLpgcUQg==
|
72 |
+
-----END CERTIFICATE-----
|
73 |
+
|
74 |
+
Equifax Secure CA
|
75 |
+
=================
|
76 |
+
-----BEGIN CERTIFICATE-----
|
77 |
+
MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE
|
78 |
+
ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
|
79 |
+
MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT
|
80 |
+
B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB
|
81 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR
|
82 |
+
fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW
|
83 |
+
8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG
|
84 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE
|
85 |
+
CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG
|
86 |
+
A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS
|
87 |
+
spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB
|
88 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961
|
89 |
+
zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB
|
90 |
+
BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95
|
91 |
+
70+sB3c4
|
92 |
+
-----END CERTIFICATE-----
|
93 |
+
|
94 |
+
Digital Signature Trust Co. Global CA 1
|
95 |
+
=======================================
|
96 |
+
-----BEGIN CERTIFICATE-----
|
97 |
+
MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
98 |
+
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy
|
99 |
+
MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
100 |
+
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA
|
101 |
+
A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE
|
102 |
+
NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i
|
103 |
+
o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
104 |
+
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
105 |
+
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
106 |
+
IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
107 |
+
MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM
|
108 |
+
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
109 |
+
ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq
|
110 |
+
kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4
|
111 |
+
RbyhkwS7hp86W0N6w4pl
|
112 |
+
-----END CERTIFICATE-----
|
113 |
+
|
114 |
+
Digital Signature Trust Co. Global CA 3
|
115 |
+
=======================================
|
116 |
+
-----BEGIN CERTIFICATE-----
|
117 |
+
MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE
|
118 |
+
ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy
|
119 |
+
MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs
|
120 |
+
IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA
|
121 |
+
A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD
|
122 |
+
VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS
|
123 |
+
xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo
|
124 |
+
BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0
|
125 |
+
dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw
|
126 |
+
IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY
|
127 |
+
MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM
|
128 |
+
BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB
|
129 |
+
AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi
|
130 |
+
up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1
|
131 |
+
mPnHfxsb1gYgAlihw6ID
|
132 |
+
-----END CERTIFICATE-----
|
133 |
+
|
134 |
+
Verisign Class 3 Public Primary Certification Authority
|
135 |
+
=======================================================
|
136 |
+
-----BEGIN CERTIFICATE-----
|
137 |
+
MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx
|
138 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
139 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow
|
140 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
141 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
142 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
143 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
144 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA
|
145 |
+
TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah
|
146 |
+
WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf
|
147 |
+
Tqj/ZA1k
|
148 |
+
-----END CERTIFICATE-----
|
149 |
+
|
150 |
+
Verisign Class 1 Public Primary Certification Authority - G2
|
151 |
+
============================================================
|
152 |
+
-----BEGIN CERTIFICATE-----
|
153 |
+
MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
154 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
155 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
156 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
157 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
158 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy
|
159 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
160 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
161 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd
|
162 |
+
k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq
|
163 |
+
WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB
|
164 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM
|
165 |
+
XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC
|
166 |
+
lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ
|
167 |
+
-----END CERTIFICATE-----
|
168 |
+
|
169 |
+
Verisign Class 2 Public Primary Certification Authority - G2
|
170 |
+
============================================================
|
171 |
+
-----BEGIN CERTIFICATE-----
|
172 |
+
MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV
|
173 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
174 |
+
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
175 |
+
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
176 |
+
c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV
|
177 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h
|
178 |
+
cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp
|
179 |
+
Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
180 |
+
c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx
|
181 |
+
nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC
|
182 |
+
wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA
|
183 |
+
ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK
|
184 |
+
1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk
|
185 |
+
LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg==
|
186 |
+
-----END CERTIFICATE-----
|
187 |
+
|
188 |
+
Verisign Class 3 Public Primary Certification Authority - G2
|
189 |
+
============================================================
|
190 |
+
-----BEGIN CERTIFICATE-----
|
191 |
+
MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT
|
192 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
193 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
194 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
195 |
+
dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT
|
196 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy
|
197 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln
|
198 |
+
biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz
|
199 |
+
dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO
|
200 |
+
FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71
|
201 |
+
lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB
|
202 |
+
MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT
|
203 |
+
1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD
|
204 |
+
Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9
|
205 |
+
-----END CERTIFICATE-----
|
206 |
+
|
207 |
+
GlobalSign Root CA
|
208 |
+
==================
|
209 |
+
-----BEGIN CERTIFICATE-----
|
210 |
+
MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
|
211 |
+
GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
|
212 |
+
b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
|
213 |
+
BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
|
214 |
+
VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
|
215 |
+
DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
|
216 |
+
THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
|
217 |
+
Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
|
218 |
+
c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
|
219 |
+
gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
|
220 |
+
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
|
221 |
+
AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
|
222 |
+
Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
|
223 |
+
j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
|
224 |
+
hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
|
225 |
+
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
|
226 |
+
-----END CERTIFICATE-----
|
227 |
+
|
228 |
+
GlobalSign Root CA - R2
|
229 |
+
=======================
|
230 |
+
-----BEGIN CERTIFICATE-----
|
231 |
+
MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
|
232 |
+
YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
233 |
+
bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
234 |
+
aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
235 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
|
236 |
+
ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
|
237 |
+
s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
|
238 |
+
S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
|
239 |
+
TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
|
240 |
+
ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
|
241 |
+
FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
|
242 |
+
YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
|
243 |
+
BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
|
244 |
+
9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
|
245 |
+
01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
|
246 |
+
9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
|
247 |
+
TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
|
248 |
+
-----END CERTIFICATE-----
|
249 |
+
|
250 |
+
ValiCert Class 1 VA
|
251 |
+
===================
|
252 |
+
-----BEGIN CERTIFICATE-----
|
253 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
254 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
255 |
+
YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
256 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy
|
257 |
+
MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
258 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg
|
259 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
260 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
261 |
+
A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi
|
262 |
+
GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm
|
263 |
+
DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG
|
264 |
+
lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX
|
265 |
+
icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP
|
266 |
+
Orf1LXLI
|
267 |
+
-----END CERTIFICATE-----
|
268 |
+
|
269 |
+
ValiCert Class 2 VA
|
270 |
+
===================
|
271 |
+
-----BEGIN CERTIFICATE-----
|
272 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
273 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
274 |
+
YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
275 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
276 |
+
MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
277 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg
|
278 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
279 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
280 |
+
A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC
|
281 |
+
CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf
|
282 |
+
ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ
|
283 |
+
SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV
|
284 |
+
UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8
|
285 |
+
W9ViH0Pd
|
286 |
+
-----END CERTIFICATE-----
|
287 |
+
|
288 |
+
RSA Root Certificate 1
|
289 |
+
======================
|
290 |
+
-----BEGIN CERTIFICATE-----
|
291 |
+
MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp
|
292 |
+
b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs
|
293 |
+
YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh
|
294 |
+
bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw
|
295 |
+
MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0
|
296 |
+
d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg
|
297 |
+
UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0
|
298 |
+
LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA
|
299 |
+
A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td
|
300 |
+
3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H
|
301 |
+
BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs
|
302 |
+
3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF
|
303 |
+
V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r
|
304 |
+
on+jjBXu
|
305 |
+
-----END CERTIFICATE-----
|
306 |
+
|
307 |
+
Verisign Class 1 Public Primary Certification Authority - G3
|
308 |
+
============================================================
|
309 |
+
-----BEGIN CERTIFICATE-----
|
310 |
+
MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
311 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
312 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
313 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
314 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
315 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
316 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
317 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg
|
318 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
319 |
+
ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E
|
320 |
+
bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ
|
321 |
+
rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+
|
322 |
+
Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB
|
323 |
+
FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
324 |
+
q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N
|
325 |
+
y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3
|
326 |
+
ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h
|
327 |
+
a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc
|
328 |
+
D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g==
|
329 |
+
-----END CERTIFICATE-----
|
330 |
+
|
331 |
+
Verisign Class 2 Public Primary Certification Authority - G3
|
332 |
+
============================================================
|
333 |
+
-----BEGIN CERTIFICATE-----
|
334 |
+
MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT
|
335 |
+
MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y
|
336 |
+
azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug
|
337 |
+
b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0
|
338 |
+
aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ
|
339 |
+
BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1
|
340 |
+
c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y
|
341 |
+
aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD
|
342 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
343 |
+
AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6
|
344 |
+
tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7
|
345 |
+
C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS
|
346 |
+
0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs
|
347 |
+
Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0
|
348 |
+
JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf
|
349 |
+
0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU
|
350 |
+
sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx
|
351 |
+
JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j
|
352 |
+
GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q
|
353 |
+
-----END CERTIFICATE-----
|
354 |
+
|
355 |
+
Verisign Class 3 Public Primary Certification Authority - G3
|
356 |
+
============================================================
|
357 |
+
-----BEGIN CERTIFICATE-----
|
358 |
+
MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
359 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
360 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
361 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
362 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
363 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
364 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
365 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
|
366 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
367 |
+
ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
|
368 |
+
EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
|
369 |
+
cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
|
370 |
+
EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
|
371 |
+
055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
372 |
+
ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
|
373 |
+
j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
|
374 |
+
/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
|
375 |
+
xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
|
376 |
+
t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
|
377 |
+
-----END CERTIFICATE-----
|
378 |
+
|
379 |
+
Verisign Class 4 Public Primary Certification Authority - G3
|
380 |
+
============================================================
|
381 |
+
-----BEGIN CERTIFICATE-----
|
382 |
+
MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
|
383 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
384 |
+
cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
385 |
+
IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
|
386 |
+
dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
|
387 |
+
CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
|
388 |
+
dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
|
389 |
+
cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg
|
390 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
391 |
+
ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS
|
392 |
+
tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM
|
393 |
+
8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW
|
394 |
+
Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX
|
395 |
+
Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
|
396 |
+
j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt
|
397 |
+
mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm
|
398 |
+
fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd
|
399 |
+
RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG
|
400 |
+
UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg==
|
401 |
+
-----END CERTIFICATE-----
|
402 |
+
|
403 |
+
Entrust.net Secure Server CA
|
404 |
+
============================
|
405 |
+
-----BEGIN CERTIFICATE-----
|
406 |
+
MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV
|
407 |
+
BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg
|
408 |
+
cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl
|
409 |
+
ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
410 |
+
cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG
|
411 |
+
A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi
|
412 |
+
eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p
|
413 |
+
dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0
|
414 |
+
aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ
|
415 |
+
aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5
|
416 |
+
gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw
|
417 |
+
ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw
|
418 |
+
CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l
|
419 |
+
dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF
|
420 |
+
bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl
|
421 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu
|
422 |
+
dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw
|
423 |
+
NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow
|
424 |
+
HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA
|
425 |
+
BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN
|
426 |
+
Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9
|
427 |
+
n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI=
|
428 |
+
-----END CERTIFICATE-----
|
429 |
+
|
430 |
+
Entrust.net Premium 2048 Secure Server CA
|
431 |
+
=========================================
|
432 |
+
-----BEGIN CERTIFICATE-----
|
433 |
+
MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
|
434 |
+
ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
|
435 |
+
bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
|
436 |
+
BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
|
437 |
+
NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
|
438 |
+
d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
|
439 |
+
MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
|
440 |
+
ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
441 |
+
MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
|
442 |
+
Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
|
443 |
+
hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
|
444 |
+
nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
|
445 |
+
VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC
|
446 |
+
AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER
|
447 |
+
gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B
|
448 |
+
AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo
|
449 |
+
oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS
|
450 |
+
o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z
|
451 |
+
2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX
|
452 |
+
OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ==
|
453 |
+
-----END CERTIFICATE-----
|
454 |
+
|
455 |
+
Baltimore CyberTrust Root
|
456 |
+
=========================
|
457 |
+
-----BEGIN CERTIFICATE-----
|
458 |
+
MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
|
459 |
+
ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
|
460 |
+
ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
|
461 |
+
SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
|
462 |
+
dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
|
463 |
+
uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
|
464 |
+
UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
|
465 |
+
G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
|
466 |
+
XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
|
467 |
+
l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
|
468 |
+
VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
|
469 |
+
BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
|
470 |
+
cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
|
471 |
+
hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
|
472 |
+
Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
|
473 |
+
RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
|
474 |
+
-----END CERTIFICATE-----
|
475 |
+
|
476 |
+
Equifax Secure Global eBusiness CA
|
477 |
+
==================================
|
478 |
+
-----BEGIN CERTIFICATE-----
|
479 |
+
MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
480 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp
|
481 |
+
bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx
|
482 |
+
HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds
|
483 |
+
b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV
|
484 |
+
PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN
|
485 |
+
qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn
|
486 |
+
hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j
|
487 |
+
BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs
|
488 |
+
MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN
|
489 |
+
I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY
|
490 |
+
NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV
|
491 |
+
-----END CERTIFICATE-----
|
492 |
+
|
493 |
+
Equifax Secure eBusiness CA 1
|
494 |
+
=============================
|
495 |
+
-----BEGIN CERTIFICATE-----
|
496 |
+
MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
497 |
+
RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB
|
498 |
+
LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE
|
499 |
+
ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz
|
500 |
+
IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ
|
501 |
+
1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a
|
502 |
+
IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk
|
503 |
+
MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW
|
504 |
+
Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF
|
505 |
+
AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5
|
506 |
+
lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+
|
507 |
+
KpYrtWKmpj29f5JZzVoqgrI3eQ==
|
508 |
+
-----END CERTIFICATE-----
|
509 |
+
|
510 |
+
Equifax Secure eBusiness CA 2
|
511 |
+
=============================
|
512 |
+
-----BEGIN CERTIFICATE-----
|
513 |
+
MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE
|
514 |
+
ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y
|
515 |
+
MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT
|
516 |
+
DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB
|
517 |
+
nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn
|
518 |
+
2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5
|
519 |
+
BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG
|
520 |
+
A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx
|
521 |
+
JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG
|
522 |
+
A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e
|
523 |
+
uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB
|
524 |
+
Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1
|
525 |
+
jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia
|
526 |
+
78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm
|
527 |
+
V+GRMOrN
|
528 |
+
-----END CERTIFICATE-----
|
529 |
+
|
530 |
+
AddTrust Low-Value Services Root
|
531 |
+
================================
|
532 |
+
-----BEGIN CERTIFICATE-----
|
533 |
+
MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
534 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
|
535 |
+
cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
|
536 |
+
CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
|
537 |
+
ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
|
538 |
+
AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
|
539 |
+
54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
|
540 |
+
oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
|
541 |
+
Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
|
542 |
+
GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
|
543 |
+
HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
|
544 |
+
AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
|
545 |
+
RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
|
546 |
+
HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
|
547 |
+
ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
|
548 |
+
iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
|
549 |
+
eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
|
550 |
+
mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
|
551 |
+
ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
|
552 |
+
-----END CERTIFICATE-----
|
553 |
+
|
554 |
+
AddTrust External Root
|
555 |
+
======================
|
556 |
+
-----BEGIN CERTIFICATE-----
|
557 |
+
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
558 |
+
QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
|
559 |
+
VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
|
560 |
+
NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
|
561 |
+
cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
|
562 |
+
Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
|
563 |
+
+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
|
564 |
+
Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
|
565 |
+
aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
|
566 |
+
2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
|
567 |
+
7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
|
568 |
+
BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
|
569 |
+
VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
|
570 |
+
VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
|
571 |
+
IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
|
572 |
+
j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
|
573 |
+
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
|
574 |
+
e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
|
575 |
+
G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
|
576 |
+
-----END CERTIFICATE-----
|
577 |
+
|
578 |
+
AddTrust Public Services Root
|
579 |
+
=============================
|
580 |
+
-----BEGIN CERTIFICATE-----
|
581 |
+
MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
582 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
|
583 |
+
cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
|
584 |
+
BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
|
585 |
+
dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
|
586 |
+
AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
|
587 |
+
nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
|
588 |
+
d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
|
589 |
+
Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
|
590 |
+
HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
|
591 |
+
A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
592 |
+
/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
|
593 |
+
FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
|
594 |
+
A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
|
595 |
+
JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
|
596 |
+
+YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
|
597 |
+
GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
|
598 |
+
Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
|
599 |
+
EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
|
600 |
+
-----END CERTIFICATE-----
|
601 |
+
|
602 |
+
AddTrust Qualified Certificates Root
|
603 |
+
====================================
|
604 |
+
-----BEGIN CERTIFICATE-----
|
605 |
+
MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
|
606 |
+
QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
|
607 |
+
cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
|
608 |
+
CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
|
609 |
+
IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
|
610 |
+
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
|
611 |
+
64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
|
612 |
+
KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
|
613 |
+
L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
|
614 |
+
wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
|
615 |
+
MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
|
616 |
+
BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
|
617 |
+
BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
|
618 |
+
azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
|
619 |
+
ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
|
620 |
+
GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
|
621 |
+
dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
|
622 |
+
RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
|
623 |
+
iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
|
624 |
+
-----END CERTIFICATE-----
|
625 |
+
|
626 |
+
Entrust Root Certification Authority
|
627 |
+
====================================
|
628 |
+
-----BEGIN CERTIFICATE-----
|
629 |
+
MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
|
630 |
+
BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
|
631 |
+
b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
|
632 |
+
A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
|
633 |
+
MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
|
634 |
+
MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
|
635 |
+
Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
|
636 |
+
dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
637 |
+
ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
|
638 |
+
A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
|
639 |
+
Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
|
640 |
+
j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
|
641 |
+
rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
|
642 |
+
DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
|
643 |
+
MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
|
644 |
+
hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
|
645 |
+
A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
|
646 |
+
Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
|
647 |
+
v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
|
648 |
+
W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
|
649 |
+
tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
|
650 |
+
-----END CERTIFICATE-----
|
651 |
+
|
652 |
+
RSA Security 2048 v3
|
653 |
+
====================
|
654 |
+
-----BEGIN CERTIFICATE-----
|
655 |
+
MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
|
656 |
+
ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
|
657 |
+
MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
|
658 |
+
BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
659 |
+
AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
|
660 |
+
Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
|
661 |
+
WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
|
662 |
+
KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
|
663 |
+
+Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
|
664 |
+
MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
|
665 |
+
FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
|
666 |
+
v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
|
667 |
+
0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
|
668 |
+
VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
|
669 |
+
nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
|
670 |
+
pKnXwiJPZ9d37CAFYd4=
|
671 |
+
-----END CERTIFICATE-----
|
672 |
+
|
673 |
+
GeoTrust Global CA
|
674 |
+
==================
|
675 |
+
-----BEGIN CERTIFICATE-----
|
676 |
+
MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
|
677 |
+
Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
|
678 |
+
MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
679 |
+
LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
680 |
+
CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
|
681 |
+
BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
|
682 |
+
8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
|
683 |
+
T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
|
684 |
+
vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
|
685 |
+
AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
|
686 |
+
DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
|
687 |
+
zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
|
688 |
+
d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
|
689 |
+
mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
|
690 |
+
XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
|
691 |
+
Mw==
|
692 |
+
-----END CERTIFICATE-----
|
693 |
+
|
694 |
+
GeoTrust Global CA 2
|
695 |
+
====================
|
696 |
+
-----BEGIN CERTIFICATE-----
|
697 |
+
MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
|
698 |
+
R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
|
699 |
+
MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
|
700 |
+
LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
701 |
+
ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
|
702 |
+
NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
|
703 |
+
LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
|
704 |
+
Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
|
705 |
+
HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
|
706 |
+
MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
|
707 |
+
K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
|
708 |
+
srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
|
709 |
+
ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
|
710 |
+
OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
|
711 |
+
x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
|
712 |
+
H4z1Ir+rzoPz4iIprn2DQKi6bA==
|
713 |
+
-----END CERTIFICATE-----
|
714 |
+
|
715 |
+
GeoTrust Universal CA
|
716 |
+
=====================
|
717 |
+
-----BEGIN CERTIFICATE-----
|
718 |
+
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
|
742 |
+
P/rmMuGNG2+k5o7Y+SlIis5z/iw=
|
743 |
+
-----END CERTIFICATE-----
|
744 |
+
|
745 |
+
GeoTrust Universal CA 2
|
746 |
+
=======================
|
747 |
+
-----BEGIN CERTIFICATE-----
|
748 |
+
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
|
772 |
+
X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
|
773 |
+
-----END CERTIFICATE-----
|
774 |
+
|
775 |
+
UTN-USER First-Network Applications
|
776 |
+
===================================
|
777 |
+
-----BEGIN CERTIFICATE-----
|
778 |
+
MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE
|
779 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
780 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp
|
781 |
+
BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5
|
782 |
+
WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T
|
783 |
+
YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho
|
784 |
+
dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB
|
785 |
+
cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug
|
786 |
+
mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj
|
787 |
+
DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu
|
788 |
+
Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi
|
789 |
+
P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE
|
790 |
+
j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w
|
791 |
+
HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j
|
792 |
+
cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G
|
793 |
+
CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y
|
794 |
+
IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK
|
795 |
+
RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp
|
796 |
+
xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq
|
797 |
+
DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE
|
798 |
+
-----END CERTIFICATE-----
|
799 |
+
|
800 |
+
America Online Root Certification Authority 1
|
801 |
+
=============================================
|
802 |
+
-----BEGIN CERTIFICATE-----
|
803 |
+
MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT
|
804 |
+
QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp
|
805 |
+
Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG
|
806 |
+
A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg
|
807 |
+
T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD
|
808 |
+
ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG
|
809 |
+
v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z
|
810 |
+
DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh
|
811 |
+
sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP
|
812 |
+
8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T
|
813 |
+
AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z
|
814 |
+
o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf
|
815 |
+
GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF
|
816 |
+
VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft
|
817 |
+
3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g
|
818 |
+
Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds
|
819 |
+
sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7
|
820 |
+
-----END CERTIFICATE-----
|
821 |
+
|
822 |
+
America Online Root Certification Authority 2
|
823 |
+
=============================================
|
824 |
+
-----BEGIN CERTIFICATE-----
|
825 |
+
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
|
850 |
+
cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk=
|
851 |
+
-----END CERTIFICATE-----
|
852 |
+
|
853 |
+
Visa eCommerce Root
|
854 |
+
===================
|
855 |
+
-----BEGIN CERTIFICATE-----
|
856 |
+
MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
|
857 |
+
EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
|
858 |
+
QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
|
859 |
+
WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
|
860 |
+
VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
|
861 |
+
bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
|
862 |
+
F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
|
863 |
+
RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
|
864 |
+
TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
|
865 |
+
/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
|
866 |
+
GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
|
867 |
+
MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
|
868 |
+
CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
|
869 |
+
YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
|
870 |
+
zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
|
871 |
+
YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
|
872 |
+
398znM/jra6O1I7mT1GvFpLgXPYHDw==
|
873 |
+
-----END CERTIFICATE-----
|
874 |
+
|
875 |
+
Certum Root CA
|
876 |
+
==============
|
877 |
+
-----BEGIN CERTIFICATE-----
|
878 |
+
MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
|
879 |
+
ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
|
880 |
+
Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
|
881 |
+
by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
|
882 |
+
wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
|
883 |
+
kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
|
884 |
+
89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
|
885 |
+
Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
|
886 |
+
NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
|
887 |
+
hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
|
888 |
+
GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
|
889 |
+
GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
|
890 |
+
0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
|
891 |
+
qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
|
892 |
+
-----END CERTIFICATE-----
|
893 |
+
|
894 |
+
Comodo AAA Services root
|
895 |
+
========================
|
896 |
+
-----BEGIN CERTIFICATE-----
|
897 |
+
MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
898 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
899 |
+
TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
|
900 |
+
MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
|
901 |
+
c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
|
902 |
+
BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
903 |
+
ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
|
904 |
+
C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
|
905 |
+
i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
|
906 |
+
Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
|
907 |
+
Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
|
908 |
+
Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
|
909 |
+
BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
|
910 |
+
cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
|
911 |
+
LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
|
912 |
+
7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
|
913 |
+
Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
|
914 |
+
8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
|
915 |
+
12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
|
916 |
+
-----END CERTIFICATE-----
|
917 |
+
|
918 |
+
Comodo Secure Services root
|
919 |
+
===========================
|
920 |
+
-----BEGIN CERTIFICATE-----
|
921 |
+
MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
922 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
923 |
+
TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
|
924 |
+
MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
|
925 |
+
Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
|
926 |
+
BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
927 |
+
ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
|
928 |
+
9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
|
929 |
+
rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
|
930 |
+
oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
|
931 |
+
p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
|
932 |
+
FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
|
933 |
+
gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
|
934 |
+
YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
|
935 |
+
aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
|
936 |
+
4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
|
937 |
+
Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
|
938 |
+
DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
|
939 |
+
pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
|
940 |
+
RR3B7Hzs/Sk=
|
941 |
+
-----END CERTIFICATE-----
|
942 |
+
|
943 |
+
Comodo Trusted Services root
|
944 |
+
============================
|
945 |
+
-----BEGIN CERTIFICATE-----
|
946 |
+
MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
|
947 |
+
R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
|
948 |
+
TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
|
949 |
+
MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
|
950 |
+
bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
|
951 |
+
IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
952 |
+
AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
|
953 |
+
3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
|
954 |
+
/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
|
955 |
+
juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
|
956 |
+
ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
|
957 |
+
DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
|
958 |
+
/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
|
959 |
+
ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
|
960 |
+
cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
|
961 |
+
uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
|
962 |
+
pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
|
963 |
+
BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
|
964 |
+
R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
|
965 |
+
9y5Xt5hwXsjEeLBi
|
966 |
+
-----END CERTIFICATE-----
|
967 |
+
|
968 |
+
QuoVadis Root CA
|
969 |
+
================
|
970 |
+
-----BEGIN CERTIFICATE-----
|
971 |
+
MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
|
972 |
+
ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
|
973 |
+
eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
|
974 |
+
MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
|
975 |
+
cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
|
976 |
+
EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
|
977 |
+
AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
|
978 |
+
J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
|
979 |
+
F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
|
980 |
+
YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
|
981 |
+
AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
|
982 |
+
PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
|
983 |
+
ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
|
984 |
+
MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
|
985 |
+
YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
|
986 |
+
ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
|
987 |
+
Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
|
988 |
+
Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
|
989 |
+
BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
|
990 |
+
FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
|
991 |
+
aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
|
992 |
+
tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
|
993 |
+
fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
|
994 |
+
LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
|
995 |
+
gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
|
996 |
+
5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
|
997 |
+
5nrQNiOKSnQ2+Q==
|
998 |
+
-----END CERTIFICATE-----
|
999 |
+
|
1000 |
+
QuoVadis Root CA 2
|
1001 |
+
==================
|
1002 |
+
-----BEGIN CERTIFICATE-----
|
1003 |
+
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
|
1029 |
+
-----END CERTIFICATE-----
|
1030 |
+
|
1031 |
+
QuoVadis Root CA 3
|
1032 |
+
==================
|
1033 |
+
-----BEGIN CERTIFICATE-----
|
1034 |
+
MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
|
1035 |
+
EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
|
1036 |
+
OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
|
1037 |
+
aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
|
1038 |
+
DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
|
1039 |
+
DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
|
1040 |
+
KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
|
1041 |
+
DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
|
1042 |
+
BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
|
1043 |
+
p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
|
1044 |
+
nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
|
1045 |
+
MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
|
1046 |
+
Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
|
1047 |
+
uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
|
1048 |
+
BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
|
1049 |
+
YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
|
1050 |
+
aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
|
1051 |
+
BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
|
1052 |
+
VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
|
1053 |
+
ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
|
1054 |
+
AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
|
1055 |
+
qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
|
1056 |
+
hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
|
1057 |
+
POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
|
1058 |
+
Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
|
1059 |
+
8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
|
1060 |
+
bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
|
1061 |
+
g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
|
1062 |
+
vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
|
1063 |
+
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
|
1064 |
+
-----END CERTIFICATE-----
|
1065 |
+
|
1066 |
+
Security Communication Root CA
|
1067 |
+
==============================
|
1068 |
+
-----BEGIN CERTIFICATE-----
|
1069 |
+
MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1070 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1071 |
+
HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
|
1072 |
+
U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
|
1073 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
|
1074 |
+
8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
|
1075 |
+
DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
|
1076 |
+
5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
|
1077 |
+
DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
|
1078 |
+
JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
|
1079 |
+
DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
|
1080 |
+
0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
|
1081 |
+
mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
|
1082 |
+
s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
|
1083 |
+
6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
|
1084 |
+
FL39vmwLAw==
|
1085 |
+
-----END CERTIFICATE-----
|
1086 |
+
|
1087 |
+
Sonera Class 1 Root CA
|
1088 |
+
======================
|
1089 |
+
-----BEGIN CERTIFICATE-----
|
1090 |
+
MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1091 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw
|
1092 |
+
NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1093 |
+
IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88
|
1094 |
+
7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9
|
1095 |
+
EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl
|
1096 |
+
0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645
|
1097 |
+
2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa
|
1098 |
+
HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT
|
1099 |
+
iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9
|
1100 |
+
28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV
|
1101 |
+
yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR
|
1102 |
+
vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P
|
1103 |
+
qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z
|
1104 |
+
IRlXvVWa
|
1105 |
+
-----END CERTIFICATE-----
|
1106 |
+
|
1107 |
+
Sonera Class 2 Root CA
|
1108 |
+
======================
|
1109 |
+
-----BEGIN CERTIFICATE-----
|
1110 |
+
MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
|
1111 |
+
U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
|
1112 |
+
NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
|
1113 |
+
IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
|
1114 |
+
/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
|
1115 |
+
dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
|
1116 |
+
f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
|
1117 |
+
tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
|
1118 |
+
nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
|
1119 |
+
XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
|
1120 |
+
0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
|
1121 |
+
cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
|
1122 |
+
Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
|
1123 |
+
EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
|
1124 |
+
llpwrN9M
|
1125 |
+
-----END CERTIFICATE-----
|
1126 |
+
|
1127 |
+
Staat der Nederlanden Root CA
|
1128 |
+
=============================
|
1129 |
+
-----BEGIN CERTIFICATE-----
|
1130 |
+
MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
|
1131 |
+
ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
|
1132 |
+
Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
|
1133 |
+
HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
|
1134 |
+
bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
|
1135 |
+
vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
|
1136 |
+
jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
|
1137 |
+
C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
|
1138 |
+
vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
|
1139 |
+
22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
|
1140 |
+
HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
|
1141 |
+
dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
|
1142 |
+
BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
|
1143 |
+
EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
|
1144 |
+
MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
|
1145 |
+
nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
|
1146 |
+
iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
|
1147 |
+
-----END CERTIFICATE-----
|
1148 |
+
|
1149 |
+
TDC Internet Root CA
|
1150 |
+
====================
|
1151 |
+
-----BEGIN CERTIFICATE-----
|
1152 |
+
MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE
|
1153 |
+
ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx
|
1154 |
+
NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu
|
1155 |
+
ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
1156 |
+
MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j
|
1157 |
+
xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL
|
1158 |
+
znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc
|
1159 |
+
5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6
|
1160 |
+
otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI
|
1161 |
+
AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM
|
1162 |
+
VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM
|
1163 |
+
MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC
|
1164 |
+
AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe
|
1165 |
+
UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G
|
1166 |
+
CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m
|
1167 |
+
gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+
|
1168 |
+
2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb
|
1169 |
+
O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU
|
1170 |
+
Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l
|
1171 |
+
-----END CERTIFICATE-----
|
1172 |
+
|
1173 |
+
TDC OCES Root CA
|
1174 |
+
================
|
1175 |
+
-----BEGIN CERTIFICATE-----
|
1176 |
+
MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE
|
1177 |
+
ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5
|
1178 |
+
MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB
|
1179 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH
|
1180 |
+
nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0
|
1181 |
+
zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV
|
1182 |
+
iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde
|
1183 |
+
dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO
|
1184 |
+
3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB
|
1185 |
+
5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k
|
1186 |
+
ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm
|
1187 |
+
cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp
|
1188 |
+
Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x
|
1189 |
+
LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM
|
1190 |
+
MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm
|
1191 |
+
aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy
|
1192 |
+
MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647
|
1193 |
+
+RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6
|
1194 |
+
NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4
|
1195 |
+
A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc
|
1196 |
+
A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9
|
1197 |
+
AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1
|
1198 |
+
AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw==
|
1199 |
+
-----END CERTIFICATE-----
|
1200 |
+
|
1201 |
+
UTN DATACorp SGC Root CA
|
1202 |
+
========================
|
1203 |
+
-----BEGIN CERTIFICATE-----
|
1204 |
+
MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE
|
1205 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1206 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ
|
1207 |
+
BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa
|
1208 |
+
MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w
|
1209 |
+
HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy
|
1210 |
+
dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1211 |
+
AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys
|
1212 |
+
raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo
|
1213 |
+
wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA
|
1214 |
+
9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv
|
1215 |
+
33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud
|
1216 |
+
DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9
|
1217 |
+
BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD
|
1218 |
+
LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3
|
1219 |
+
DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft
|
1220 |
+
Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0
|
1221 |
+
I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx
|
1222 |
+
EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP
|
1223 |
+
DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI
|
1224 |
+
-----END CERTIFICATE-----
|
1225 |
+
|
1226 |
+
UTN USERFirst Email Root CA
|
1227 |
+
===========================
|
1228 |
+
-----BEGIN CERTIFICATE-----
|
1229 |
+
MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
|
1230 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1231 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0
|
1232 |
+
BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05
|
1233 |
+
OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx
|
1234 |
+
FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx
|
1235 |
+
ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz
|
1236 |
+
dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
1237 |
+
MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx
|
1238 |
+
B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8
|
1239 |
+
om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG
|
1240 |
+
TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl
|
1241 |
+
yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE
|
1242 |
+
AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV
|
1243 |
+
HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll
|
1244 |
+
bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH
|
1245 |
+
AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne
|
1246 |
+
xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+
|
1247 |
+
5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV
|
1248 |
+
NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ
|
1249 |
+
w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ=
|
1250 |
+
-----END CERTIFICATE-----
|
1251 |
+
|
1252 |
+
UTN USERFirst Hardware Root CA
|
1253 |
+
==============================
|
1254 |
+
-----BEGIN CERTIFICATE-----
|
1255 |
+
MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
|
1256 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1257 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
|
1258 |
+
BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
|
1259 |
+
OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
|
1260 |
+
eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
|
1261 |
+
ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
|
1262 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
|
1263 |
+
wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
|
1264 |
+
tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
|
1265 |
+
i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
|
1266 |
+
Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
|
1267 |
+
gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
|
1268 |
+
lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
|
1269 |
+
UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
|
1270 |
+
BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
|
1271 |
+
//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
|
1272 |
+
XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
|
1273 |
+
lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
|
1274 |
+
iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
|
1275 |
+
nfhmqA==
|
1276 |
+
-----END CERTIFICATE-----
|
1277 |
+
|
1278 |
+
UTN USERFirst Object Root CA
|
1279 |
+
============================
|
1280 |
+
-----BEGIN CERTIFICATE-----
|
1281 |
+
MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE
|
1282 |
+
BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
|
1283 |
+
IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb
|
1284 |
+
BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz
|
1285 |
+
NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx
|
1286 |
+
HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy
|
1287 |
+
dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB
|
1288 |
+
BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR
|
1289 |
+
loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ
|
1290 |
+
w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu
|
1291 |
+
lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7
|
1292 |
+
RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL
|
1293 |
+
BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8
|
1294 |
+
ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly
|
1295 |
+
c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw
|
1296 |
+
DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw
|
1297 |
+
NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO
|
1298 |
+
PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE
|
1299 |
+
qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG
|
1300 |
+
hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g=
|
1301 |
+
-----END CERTIFICATE-----
|
1302 |
+
|
1303 |
+
Camerfirma Chambers of Commerce Root
|
1304 |
+
====================================
|
1305 |
+
-----BEGIN CERTIFICATE-----
|
1306 |
+
MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1307 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1308 |
+
ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
|
1309 |
+
NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
|
1310 |
+
cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
|
1311 |
+
MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
|
1312 |
+
AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
|
1313 |
+
xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
|
1314 |
+
NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
|
1315 |
+
DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
|
1316 |
+
d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
|
1317 |
+
EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
|
1318 |
+
cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
|
1319 |
+
AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
|
1320 |
+
bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
|
1321 |
+
VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
|
1322 |
+
aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
|
1323 |
+
fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
|
1324 |
+
L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
|
1325 |
+
UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
|
1326 |
+
ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
|
1327 |
+
erfutGWaIZDgqtCYvDi1czyL+Nw=
|
1328 |
+
-----END CERTIFICATE-----
|
1329 |
+
|
1330 |
+
Camerfirma Global Chambersign Root
|
1331 |
+
==================================
|
1332 |
+
-----BEGIN CERTIFICATE-----
|
1333 |
+
MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
|
1334 |
+
QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
|
1335 |
+
ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
|
1336 |
+
NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
|
1337 |
+
YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
|
1338 |
+
MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
|
1339 |
+
ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
|
1340 |
+
1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
|
1341 |
+
by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
|
1342 |
+
6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
|
1343 |
+
8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
|
1344 |
+
BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
|
1345 |
+
aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
|
1346 |
+
Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
|
1347 |
+
aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
|
1348 |
+
ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
|
1349 |
+
bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
|
1350 |
+
PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
|
1351 |
+
gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
|
1352 |
+
PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
|
1353 |
+
IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
|
1354 |
+
t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
|
1355 |
+
-----END CERTIFICATE-----
|
1356 |
+
|
1357 |
+
NetLock Qualified (Class QA) Root
|
1358 |
+
=================================
|
1359 |
+
-----BEGIN CERTIFICATE-----
|
1360 |
+
MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1361 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1362 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn
|
1363 |
+
eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0
|
1364 |
+
bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER
|
1365 |
+
MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0
|
1366 |
+
LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0
|
1367 |
+
dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP
|
1368 |
+
aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV
|
1369 |
+
CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e
|
1370 |
+
8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb
|
1371 |
+
m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ
|
1372 |
+
0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM
|
1373 |
+
0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
1374 |
+
HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2
|
1375 |
+
YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh
|
1376 |
+
biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p
|
1377 |
+
a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz
|
1378 |
+
YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg
|
1379 |
+
YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg
|
1380 |
+
ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov
|
1381 |
+
L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr
|
1382 |
+
Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0
|
1383 |
+
aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg
|
1384 |
+
YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0
|
1385 |
+
IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3
|
1386 |
+
DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN
|
1387 |
+
wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg
|
1388 |
+
W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc
|
1389 |
+
R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR
|
1390 |
+
5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko
|
1391 |
+
-----END CERTIFICATE-----
|
1392 |
+
|
1393 |
+
NetLock Notary (Class A) Root
|
1394 |
+
=============================
|
1395 |
+
-----BEGIN CERTIFICATE-----
|
1396 |
+
MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
|
1397 |
+
EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1398 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
|
1399 |
+
ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
|
1400 |
+
DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
|
1401 |
+
EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
|
1402 |
+
VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
|
1403 |
+
cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
|
1404 |
+
D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
|
1405 |
+
z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
|
1406 |
+
/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
|
1407 |
+
tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
|
1408 |
+
4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
|
1409 |
+
A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
|
1410 |
+
Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
|
1411 |
+
bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
|
1412 |
+
IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
|
1413 |
+
LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
|
1414 |
+
ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
|
1415 |
+
IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
|
1416 |
+
IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
|
1417 |
+
b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
|
1418 |
+
bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
|
1419 |
+
Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
|
1420 |
+
bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
|
1421 |
+
ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
|
1422 |
+
ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
|
1423 |
+
CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
|
1424 |
+
KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
|
1425 |
+
8CgHrTwXZoi1/baI
|
1426 |
+
-----END CERTIFICATE-----
|
1427 |
+
|
1428 |
+
NetLock Business (Class B) Root
|
1429 |
+
===============================
|
1430 |
+
-----BEGIN CERTIFICATE-----
|
1431 |
+
MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1432 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1433 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg
|
1434 |
+
VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD
|
1435 |
+
VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv
|
1436 |
+
bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg
|
1437 |
+
VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
|
1438 |
+
iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S
|
1439 |
+
o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr
|
1440 |
+
1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV
|
1441 |
+
HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ
|
1442 |
+
RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh
|
1443 |
+
dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0
|
1444 |
+
ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv
|
1445 |
+
c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg
|
1446 |
+
YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh
|
1447 |
+
c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz
|
1448 |
+
Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA
|
1449 |
+
bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl
|
1450 |
+
IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2
|
1451 |
+
YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj
|
1452 |
+
cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM
|
1453 |
+
43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR
|
1454 |
+
stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI
|
1455 |
+
-----END CERTIFICATE-----
|
1456 |
+
|
1457 |
+
NetLock Express (Class C) Root
|
1458 |
+
==============================
|
1459 |
+
-----BEGIN CERTIFICATE-----
|
1460 |
+
MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT
|
1461 |
+
CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV
|
1462 |
+
BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD
|
1463 |
+
KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ
|
1464 |
+
BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
|
1465 |
+
dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j
|
1466 |
+
ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB
|
1467 |
+
jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z
|
1468 |
+
W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63
|
1469 |
+
euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw
|
1470 |
+
DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN
|
1471 |
+
RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn
|
1472 |
+
YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB
|
1473 |
+
IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i
|
1474 |
+
aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0
|
1475 |
+
ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs
|
1476 |
+
ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo
|
1477 |
+
dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y
|
1478 |
+
emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k
|
1479 |
+
IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ
|
1480 |
+
UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg
|
1481 |
+
YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2
|
1482 |
+
xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW
|
1483 |
+
gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A==
|
1484 |
+
-----END CERTIFICATE-----
|
1485 |
+
|
1486 |
+
XRamp Global CA Root
|
1487 |
+
====================
|
1488 |
+
-----BEGIN CERTIFICATE-----
|
1489 |
+
MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
|
1490 |
+
BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
|
1491 |
+
dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
|
1492 |
+
dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
|
1493 |
+
HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
|
1494 |
+
U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
|
1495 |
+
dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
|
1496 |
+
IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
|
1497 |
+
foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
|
1498 |
+
zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
|
1499 |
+
AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
|
1500 |
+
xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
1501 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
|
1502 |
+
oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
|
1503 |
+
AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
|
1504 |
+
/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
|
1505 |
+
qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
|
1506 |
+
nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
|
1507 |
+
8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
|
1508 |
+
-----END CERTIFICATE-----
|
1509 |
+
|
1510 |
+
Go Daddy Class 2 CA
|
1511 |
+
===================
|
1512 |
+
-----BEGIN CERTIFICATE-----
|
1513 |
+
MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
|
1514 |
+
VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
|
1515 |
+
ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
|
1516 |
+
A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
|
1517 |
+
RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
|
1518 |
+
ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
|
1519 |
+
2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
|
1520 |
+
qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
|
1521 |
+
YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
|
1522 |
+
vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
|
1523 |
+
BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
|
1524 |
+
atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
|
1525 |
+
MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
|
1526 |
+
A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
|
1527 |
+
PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
|
1528 |
+
I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
|
1529 |
+
HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
|
1530 |
+
Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
|
1531 |
+
vZ8=
|
1532 |
+
-----END CERTIFICATE-----
|
1533 |
+
|
1534 |
+
Starfield Class 2 CA
|
1535 |
+
====================
|
1536 |
+
-----BEGIN CERTIFICATE-----
|
1537 |
+
MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
|
1538 |
+
U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
|
1539 |
+
Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
|
1540 |
+
MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
|
1541 |
+
A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
|
1542 |
+
SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
|
1543 |
+
bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
|
1544 |
+
JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
|
1545 |
+
epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
|
1546 |
+
F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
|
1547 |
+
MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
|
1548 |
+
hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
|
1549 |
+
bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
|
1550 |
+
QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
|
1551 |
+
afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
|
1552 |
+
PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
|
1553 |
+
xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
|
1554 |
+
KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
|
1555 |
+
QBFGmh95DmK/D5fs4C8fF5Q=
|
1556 |
+
-----END CERTIFICATE-----
|
1557 |
+
|
1558 |
+
StartCom Certification Authority
|
1559 |
+
================================
|
1560 |
+
-----BEGIN CERTIFICATE-----
|
1561 |
+
MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
1562 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
1563 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
1564 |
+
NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
1565 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
1566 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
1567 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
1568 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
1569 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
1570 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
1571 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
1572 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
1573 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
1574 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
1575 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
1576 |
+
37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
|
1577 |
+
FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
|
1578 |
+
Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
|
1579 |
+
YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
|
1580 |
+
AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
|
1581 |
+
Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
|
1582 |
+
U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
|
1583 |
+
LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
|
1584 |
+
cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
|
1585 |
+
cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
|
1586 |
+
dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
|
1587 |
+
AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
|
1588 |
+
3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
|
1589 |
+
vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
|
1590 |
+
fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
|
1591 |
+
fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
|
1592 |
+
EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
|
1593 |
+
yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
|
1594 |
+
1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
|
1595 |
+
lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
|
1596 |
+
g14=
|
1597 |
+
-----END CERTIFICATE-----
|
1598 |
+
|
1599 |
+
Taiwan GRCA
|
1600 |
+
===========
|
1601 |
+
-----BEGIN CERTIFICATE-----
|
1602 |
+
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
|
1627 |
+
-----END CERTIFICATE-----
|
1628 |
+
|
1629 |
+
Firmaprofesional Root CA
|
1630 |
+
========================
|
1631 |
+
-----BEGIN CERTIFICATE-----
|
1632 |
+
MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT
|
1633 |
+
GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp
|
1634 |
+
Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA
|
1635 |
+
ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL
|
1636 |
+
MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT
|
1637 |
+
OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2
|
1638 |
+
ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB
|
1639 |
+
AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V
|
1640 |
+
j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH
|
1641 |
+
lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf
|
1642 |
+
3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8
|
1643 |
+
NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww
|
1644 |
+
KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG
|
1645 |
+
AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud
|
1646 |
+
DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD
|
1647 |
+
ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq
|
1648 |
+
u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf
|
1649 |
+
wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm
|
1650 |
+
7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG
|
1651 |
+
VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA=
|
1652 |
+
-----END CERTIFICATE-----
|
1653 |
+
|
1654 |
+
Wells Fargo Root CA
|
1655 |
+
===================
|
1656 |
+
-----BEGIN CERTIFICATE-----
|
1657 |
+
MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV
|
1658 |
+
BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv
|
1659 |
+
cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
1660 |
+
MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl
|
1661 |
+
bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv
|
1662 |
+
MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG
|
1663 |
+
SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX
|
1664 |
+
x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3
|
1665 |
+
E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5
|
1666 |
+
OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j
|
1667 |
+
sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj
|
1668 |
+
YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF
|
1669 |
+
BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD
|
1670 |
+
ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv
|
1671 |
+
m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R
|
1672 |
+
OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx
|
1673 |
+
x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023
|
1674 |
+
tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s=
|
1675 |
+
-----END CERTIFICATE-----
|
1676 |
+
|
1677 |
+
Swisscom Root CA 1
|
1678 |
+
==================
|
1679 |
+
-----BEGIN CERTIFICATE-----
|
1680 |
+
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
|
1706 |
+
NY6E0F/6MBr1mmz0DlP5OlvRHA==
|
1707 |
+
-----END CERTIFICATE-----
|
1708 |
+
|
1709 |
+
DigiCert Assured ID Root CA
|
1710 |
+
===========================
|
1711 |
+
-----BEGIN CERTIFICATE-----
|
1712 |
+
MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
|
1713 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
|
1714 |
+
IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
|
1715 |
+
MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
|
1716 |
+
ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
|
1717 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
|
1718 |
+
9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
|
1719 |
+
UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
|
1720 |
+
/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
|
1721 |
+
oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
|
1722 |
+
GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
|
1723 |
+
66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
|
1724 |
+
hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
|
1725 |
+
EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
|
1726 |
+
SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
|
1727 |
+
8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
|
1728 |
+
+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
|
1729 |
+
-----END CERTIFICATE-----
|
1730 |
+
|
1731 |
+
DigiCert Global Root CA
|
1732 |
+
=======================
|
1733 |
+
-----BEGIN CERTIFICATE-----
|
1734 |
+
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
|
1735 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
|
1736 |
+
HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
|
1737 |
+
MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
|
1738 |
+
dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
|
1739 |
+
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
|
1740 |
+
TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
|
1741 |
+
BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
|
1742 |
+
4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
|
1743 |
+
7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
|
1744 |
+
o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
|
1745 |
+
8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
|
1746 |
+
BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
|
1747 |
+
EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
|
1748 |
+
tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
|
1749 |
+
UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
1750 |
+
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
1751 |
+
-----END CERTIFICATE-----
|
1752 |
+
|
1753 |
+
DigiCert High Assurance EV Root CA
|
1754 |
+
==================================
|
1755 |
+
-----BEGIN CERTIFICATE-----
|
1756 |
+
MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
|
1757 |
+
EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
|
1758 |
+
KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
|
1759 |
+
MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
|
1760 |
+
MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
|
1761 |
+
Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
|
1762 |
+
Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
|
1763 |
+
OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
|
1764 |
+
MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
|
1765 |
+
NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
|
1766 |
+
h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
|
1767 |
+
Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
|
1768 |
+
JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
|
1769 |
+
V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
|
1770 |
+
myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
|
1771 |
+
mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
|
1772 |
+
vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
|
1773 |
+
-----END CERTIFICATE-----
|
1774 |
+
|
1775 |
+
Certplus Class 2 Primary CA
|
1776 |
+
===========================
|
1777 |
+
-----BEGIN CERTIFICATE-----
|
1778 |
+
MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
|
1779 |
+
BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
|
1780 |
+
OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
|
1781 |
+
dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
1782 |
+
ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
|
1783 |
+
5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
|
1784 |
+
Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
|
1785 |
+
YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
|
1786 |
+
e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
|
1787 |
+
CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
|
1788 |
+
YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
|
1789 |
+
L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
|
1790 |
+
P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
|
1791 |
+
TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
|
1792 |
+
7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
|
1793 |
+
//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
|
1794 |
+
l7+ijrRU
|
1795 |
+
-----END CERTIFICATE-----
|
1796 |
+
|
1797 |
+
DST Root CA X3
|
1798 |
+
==============
|
1799 |
+
-----BEGIN CERTIFICATE-----
|
1800 |
+
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
|
1801 |
+
ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
|
1802 |
+
DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
|
1803 |
+
cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
|
1804 |
+
ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
|
1805 |
+
rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
|
1806 |
+
UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
|
1807 |
+
xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
|
1808 |
+
utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
|
1809 |
+
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
|
1810 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
|
1811 |
+
dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
|
1812 |
+
GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
|
1813 |
+
RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
|
1814 |
+
fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
|
1815 |
+
-----END CERTIFICATE-----
|
1816 |
+
|
1817 |
+
DST ACES CA X6
|
1818 |
+
==============
|
1819 |
+
-----BEGIN CERTIFICATE-----
|
1820 |
+
MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
|
1821 |
+
EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
|
1822 |
+
MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
|
1823 |
+
MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
|
1824 |
+
CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1825 |
+
AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
|
1826 |
+
DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
|
1827 |
+
pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
|
1828 |
+
GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
|
1829 |
+
MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
|
1830 |
+
EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
|
1831 |
+
Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
|
1832 |
+
dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
|
1833 |
+
CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
|
1834 |
+
5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
|
1835 |
+
Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
|
1836 |
+
nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
|
1837 |
+
vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
|
1838 |
+
oKfN5XozNmr6mis=
|
1839 |
+
-----END CERTIFICATE-----
|
1840 |
+
|
1841 |
+
TURKTRUST Certificate Services Provider Root 1
|
1842 |
+
==============================================
|
1843 |
+
-----BEGIN CERTIFICATE-----
|
1844 |
+
MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1845 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP
|
1846 |
+
MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0
|
1847 |
+
acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx
|
1848 |
+
MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg
|
1849 |
+
U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB
|
1850 |
+
TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC
|
1851 |
+
aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
1852 |
+
AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX
|
1853 |
+
yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i
|
1854 |
+
Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ
|
1855 |
+
8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4
|
1856 |
+
W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME
|
1857 |
+
BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46
|
1858 |
+
sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE
|
1859 |
+
q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy
|
1860 |
+
B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY
|
1861 |
+
nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H
|
1862 |
+
-----END CERTIFICATE-----
|
1863 |
+
|
1864 |
+
TURKTRUST Certificate Services Provider Root 2
|
1865 |
+
==============================================
|
1866 |
+
-----BEGIN CERTIFICATE-----
|
1867 |
+
MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF
|
1868 |
+
bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
|
1869 |
+
MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
|
1870 |
+
QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN
|
1871 |
+
MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr
|
1872 |
+
dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G
|
1873 |
+
A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
|
1874 |
+
acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G
|
1875 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe
|
1876 |
+
LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI
|
1877 |
+
x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g
|
1878 |
+
QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr
|
1879 |
+
5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB
|
1880 |
+
AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G
|
1881 |
+
A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt
|
1882 |
+
Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4
|
1883 |
+
Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+
|
1884 |
+
hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P
|
1885 |
+
9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5
|
1886 |
+
UrbnBEI=
|
1887 |
+
-----END CERTIFICATE-----
|
1888 |
+
|
1889 |
+
SwissSign Platinum CA - G2
|
1890 |
+
==========================
|
1891 |
+
-----BEGIN CERTIFICATE-----
|
1892 |
+
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
|
1918 |
+
-----END CERTIFICATE-----
|
1919 |
+
|
1920 |
+
SwissSign Gold CA - G2
|
1921 |
+
======================
|
1922 |
+
-----BEGIN CERTIFICATE-----
|
1923 |
+
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
|
1949 |
+
-----END CERTIFICATE-----
|
1950 |
+
|
1951 |
+
SwissSign Silver CA - G2
|
1952 |
+
========================
|
1953 |
+
-----BEGIN CERTIFICATE-----
|
1954 |
+
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
|
1980 |
+
-----END CERTIFICATE-----
|
1981 |
+
|
1982 |
+
GeoTrust Primary Certification Authority
|
1983 |
+
========================================
|
1984 |
+
-----BEGIN CERTIFICATE-----
|
1985 |
+
MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
|
1986 |
+
EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
|
1987 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
|
1988 |
+
CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
|
1989 |
+
cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
1990 |
+
CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
|
1991 |
+
b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
|
1992 |
+
nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
|
1993 |
+
RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
|
1994 |
+
tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
|
1995 |
+
AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
|
1996 |
+
hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
|
1997 |
+
Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
|
1998 |
+
NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
|
1999 |
+
Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
|
2000 |
+
1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
|
2001 |
+
-----END CERTIFICATE-----
|
2002 |
+
|
2003 |
+
thawte Primary Root CA
|
2004 |
+
======================
|
2005 |
+
-----BEGIN CERTIFICATE-----
|
2006 |
+
MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
|
2007 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2008 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2009 |
+
cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
|
2010 |
+
MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
|
2011 |
+
SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
|
2012 |
+
KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
|
2013 |
+
FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
|
2014 |
+
oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
|
2015 |
+
1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
|
2016 |
+
q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
|
2017 |
+
aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
|
2018 |
+
afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
|
2019 |
+
VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
|
2020 |
+
AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
|
2021 |
+
uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
|
2022 |
+
xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
|
2023 |
+
jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
|
2024 |
+
z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
|
2025 |
+
-----END CERTIFICATE-----
|
2026 |
+
|
2027 |
+
VeriSign Class 3 Public Primary Certification Authority - G5
|
2028 |
+
============================================================
|
2029 |
+
-----BEGIN CERTIFICATE-----
|
2030 |
+
MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
|
2031 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2032 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2033 |
+
IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
|
2034 |
+
ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
|
2035 |
+
yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
|
2036 |
+
biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
|
2037 |
+
dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
|
2038 |
+
YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2039 |
+
ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
|
2040 |
+
j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
|
2041 |
+
Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
|
2042 |
+
Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
|
2043 |
+
fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
|
2044 |
+
BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
|
2045 |
+
Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
|
2046 |
+
aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
|
2047 |
+
SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
|
2048 |
+
X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
|
2049 |
+
KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
|
2050 |
+
Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
|
2051 |
+
ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
|
2052 |
+
-----END CERTIFICATE-----
|
2053 |
+
|
2054 |
+
SecureTrust CA
|
2055 |
+
==============
|
2056 |
+
-----BEGIN CERTIFICATE-----
|
2057 |
+
MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
|
2058 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
|
2059 |
+
dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
|
2060 |
+
BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
|
2061 |
+
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
|
2062 |
+
OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
|
2063 |
+
DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
|
2064 |
+
GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
|
2065 |
+
01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
|
2066 |
+
ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
|
2067 |
+
BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
|
2068 |
+
aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2069 |
+
KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
|
2070 |
+
SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
|
2071 |
+
mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
|
2072 |
+
nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
|
2073 |
+
3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
|
2074 |
+
-----END CERTIFICATE-----
|
2075 |
+
|
2076 |
+
Secure Global CA
|
2077 |
+
================
|
2078 |
+
-----BEGIN CERTIFICATE-----
|
2079 |
+
MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
|
2080 |
+
EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
|
2081 |
+
bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
|
2082 |
+
MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
|
2083 |
+
Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
|
2084 |
+
YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
|
2085 |
+
bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
|
2086 |
+
8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
|
2087 |
+
HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
|
2088 |
+
0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
|
2089 |
+
EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
|
2090 |
+
oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
|
2091 |
+
MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
|
2092 |
+
OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
|
2093 |
+
CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
|
2094 |
+
3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
|
2095 |
+
f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
|
2096 |
+
-----END CERTIFICATE-----
|
2097 |
+
|
2098 |
+
COMODO Certification Authority
|
2099 |
+
==============================
|
2100 |
+
-----BEGIN CERTIFICATE-----
|
2101 |
+
MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
|
2102 |
+
BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
|
2103 |
+
A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
|
2104 |
+
dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
|
2105 |
+
MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
|
2106 |
+
T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
2107 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
|
2108 |
+
+7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
|
2109 |
+
xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
|
2110 |
+
4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
|
2111 |
+
1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
|
2112 |
+
rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
|
2113 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
|
2114 |
+
b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
|
2115 |
+
AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
|
2116 |
+
OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
|
2117 |
+
RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
|
2118 |
+
IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
|
2119 |
+
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
|
2120 |
+
-----END CERTIFICATE-----
|
2121 |
+
|
2122 |
+
Network Solutions Certificate Authority
|
2123 |
+
=======================================
|
2124 |
+
-----BEGIN CERTIFICATE-----
|
2125 |
+
MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
|
2126 |
+
EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
|
2127 |
+
IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
|
2128 |
+
MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
|
2129 |
+
MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
2130 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
|
2131 |
+
jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
|
2132 |
+
aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
|
2133 |
+
crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
|
2134 |
+
/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
|
2135 |
+
AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
|
2136 |
+
BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
|
2137 |
+
bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
|
2138 |
+
A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
|
2139 |
+
4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
|
2140 |
+
GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
|
2141 |
+
wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
|
2142 |
+
ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
|
2143 |
+
-----END CERTIFICATE-----
|
2144 |
+
|
2145 |
+
WellsSecure Public Root Certificate Authority
|
2146 |
+
=============================================
|
2147 |
+
-----BEGIN CERTIFICATE-----
|
2148 |
+
MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
|
2149 |
+
F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
|
2150 |
+
NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
|
2151 |
+
MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
|
2152 |
+
bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
|
2153 |
+
VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
|
2154 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
|
2155 |
+
iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
|
2156 |
+
i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
|
2157 |
+
bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
|
2158 |
+
K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
|
2159 |
+
AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
|
2160 |
+
cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
|
2161 |
+
lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
|
2162 |
+
i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
|
2163 |
+
GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
|
2164 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
|
2165 |
+
K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
|
2166 |
+
bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
|
2167 |
+
qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
|
2168 |
+
E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
|
2169 |
+
tylv2G0xffX8oRAHh84vWdw+WNs=
|
2170 |
+
-----END CERTIFICATE-----
|
2171 |
+
|
2172 |
+
COMODO ECC Certification Authority
|
2173 |
+
==================================
|
2174 |
+
-----BEGIN CERTIFICATE-----
|
2175 |
+
MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
|
2176 |
+
R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
|
2177 |
+
ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
|
2178 |
+
dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
|
2179 |
+
GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
|
2180 |
+
Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
|
2181 |
+
b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
|
2182 |
+
4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
|
2183 |
+
wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
|
2184 |
+
BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
|
2185 |
+
FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
|
2186 |
+
U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
|
2187 |
+
-----END CERTIFICATE-----
|
2188 |
+
|
2189 |
+
IGC/A
|
2190 |
+
=====
|
2191 |
+
-----BEGIN CERTIFICATE-----
|
2192 |
+
MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
|
2193 |
+
VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
|
2194 |
+
Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
|
2195 |
+
MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
|
2196 |
+
EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
|
2197 |
+
STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
|
2198 |
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
|
2199 |
+
TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
|
2200 |
+
So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
|
2201 |
+
HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
|
2202 |
+
frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
|
2203 |
+
tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
|
2204 |
+
egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
|
2205 |
+
iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
|
2206 |
+
q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
|
2207 |
+
MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
|
2208 |
+
Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
|
2209 |
+
lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
|
2210 |
+
0mBWWg==
|
2211 |
+
-----END CERTIFICATE-----
|
2212 |
+
|
2213 |
+
Security Communication EV RootCA1
|
2214 |
+
=================================
|
2215 |
+
-----BEGIN CERTIFICATE-----
|
2216 |
+
MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
2217 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
|
2218 |
+
dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
|
2219 |
+
BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
|
2220 |
+
Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2221 |
+
AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
|
2222 |
+
/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
|
2223 |
+
WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
|
2224 |
+
ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
|
2225 |
+
bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
|
2226 |
+
9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
|
2227 |
+
SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
|
2228 |
+
iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
|
2229 |
+
Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
|
2230 |
+
mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
|
2231 |
+
T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
|
2232 |
+
-----END CERTIFICATE-----
|
2233 |
+
|
2234 |
+
OISTE WISeKey Global Root GA CA
|
2235 |
+
===============================
|
2236 |
+
-----BEGIN CERTIFICATE-----
|
2237 |
+
MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
|
2238 |
+
BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
|
2239 |
+
A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
|
2240 |
+
bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
|
2241 |
+
VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
|
2242 |
+
IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
|
2243 |
+
IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
|
2244 |
+
Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
|
2245 |
+
Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
|
2246 |
+
d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
|
2247 |
+
/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
|
2248 |
+
LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
|
2249 |
+
AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
|
2250 |
+
KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
|
2251 |
+
MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
|
2252 |
+
+vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
|
2253 |
+
hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
|
2254 |
+
okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
|
2255 |
+
-----END CERTIFICATE-----
|
2256 |
+
|
2257 |
+
S-TRUST Authentication and Encryption Root CA 2005 PN
|
2258 |
+
=====================================================
|
2259 |
+
-----BEGIN CERTIFICATE-----
|
2260 |
+
MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE
|
2261 |
+
BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh
|
2262 |
+
cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT
|
2263 |
+
LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w
|
2264 |
+
NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk
|
2265 |
+
ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj
|
2266 |
+
aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp
|
2267 |
+
b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2268 |
+
MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob
|
2269 |
+
4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL
|
2270 |
+
g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf
|
2271 |
+
eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3
|
2272 |
+
KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB
|
2273 |
+
/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv
|
2274 |
+
bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU
|
2275 |
+
D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD
|
2276 |
+
pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08
|
2277 |
+
P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA
|
2278 |
+
nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit
|
2279 |
+
F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b
|
2280 |
+
Hz2eBIPdltkdOpQ=
|
2281 |
+
-----END CERTIFICATE-----
|
2282 |
+
|
2283 |
+
Microsec e-Szigno Root CA
|
2284 |
+
=========================
|
2285 |
+
-----BEGIN CERTIFICATE-----
|
2286 |
+
MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
|
2287 |
+
BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
|
2288 |
+
EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
|
2289 |
+
MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
|
2290 |
+
dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
|
2291 |
+
GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
|
2292 |
+
AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
|
2293 |
+
d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
|
2294 |
+
oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
|
2295 |
+
QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
|
2296 |
+
PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
|
2297 |
+
MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
|
2298 |
+
IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
|
2299 |
+
VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
|
2300 |
+
LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
|
2301 |
+
dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
|
2302 |
+
AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
|
2303 |
+
4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
|
2304 |
+
AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
|
2305 |
+
egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
|
2306 |
+
Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
|
2307 |
+
PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
|
2308 |
+
c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
|
2309 |
+
cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
|
2310 |
+
IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
|
2311 |
+
WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
|
2312 |
+
MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
|
2313 |
+
MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
|
2314 |
+
Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
|
2315 |
+
HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
|
2316 |
+
nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
|
2317 |
+
aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
|
2318 |
+
86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
|
2319 |
+
yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
|
2320 |
+
S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
|
2321 |
+
-----END CERTIFICATE-----
|
2322 |
+
|
2323 |
+
Certigna
|
2324 |
+
========
|
2325 |
+
-----BEGIN CERTIFICATE-----
|
2326 |
+
MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
|
2327 |
+
EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
|
2328 |
+
MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
|
2329 |
+
Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
|
2330 |
+
XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
|
2331 |
+
GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
|
2332 |
+
ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
|
2333 |
+
DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
|
2334 |
+
Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
|
2335 |
+
tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
|
2336 |
+
BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
|
2337 |
+
SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
|
2338 |
+
hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
|
2339 |
+
ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
|
2340 |
+
PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
|
2341 |
+
1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
|
2342 |
+
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
|
2343 |
+
-----END CERTIFICATE-----
|
2344 |
+
|
2345 |
+
AC Ra\xC3\xADz Certic\xC3\xA1mara S.A.
|
2346 |
+
======================================
|
2347 |
+
-----BEGIN CERTIFICATE-----
|
2348 |
+
MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT
|
2349 |
+
AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg
|
2350 |
+
LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w
|
2351 |
+
HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+
|
2352 |
+
U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh
|
2353 |
+
IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B
|
2354 |
+
AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN
|
2355 |
+
yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU
|
2356 |
+
2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3
|
2357 |
+
4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP
|
2358 |
+
2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm
|
2359 |
+
8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf
|
2360 |
+
HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa
|
2361 |
+
Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK
|
2362 |
+
5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b
|
2363 |
+
czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE
|
2364 |
+
AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g
|
2365 |
+
ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF
|
2366 |
+
BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug
|
2367 |
+
cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf
|
2368 |
+
AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX
|
2369 |
+
EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v
|
2370 |
+
/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3
|
2371 |
+
MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4
|
2372 |
+
3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk
|
2373 |
+
eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f
|
2374 |
+
/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h
|
2375 |
+
RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU
|
2376 |
+
Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ==
|
2377 |
+
-----END CERTIFICATE-----
|
2378 |
+
|
2379 |
+
TC TrustCenter Class 2 CA II
|
2380 |
+
============================
|
2381 |
+
-----BEGIN CERTIFICATE-----
|
2382 |
+
MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2383 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2384 |
+
IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw
|
2385 |
+
MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2386 |
+
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE
|
2387 |
+
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2388 |
+
AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw
|
2389 |
+
IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2
|
2390 |
+
xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ
|
2391 |
+
Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u
|
2392 |
+
SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2393 |
+
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB
|
2394 |
+
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2395 |
+
Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2396 |
+
cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2397 |
+
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2398 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G
|
2399 |
+
dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ
|
2400 |
+
KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj
|
2401 |
+
TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP
|
2402 |
+
JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk
|
2403 |
+
vQ==
|
2404 |
+
-----END CERTIFICATE-----
|
2405 |
+
|
2406 |
+
TC TrustCenter Class 3 CA II
|
2407 |
+
============================
|
2408 |
+
-----BEGIN CERTIFICATE-----
|
2409 |
+
MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC
|
2410 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy
|
2411 |
+
IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw
|
2412 |
+
MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1
|
2413 |
+
c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE
|
2414 |
+
AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
2415 |
+
AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W
|
2416 |
+
yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo
|
2417 |
+
6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ
|
2418 |
+
uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk
|
2419 |
+
2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB
|
2420 |
+
/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB
|
2421 |
+
7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90
|
2422 |
+
Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU
|
2423 |
+
cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i
|
2424 |
+
SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u
|
2425 |
+
TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE
|
2426 |
+
O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8
|
2427 |
+
yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9
|
2428 |
+
IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal
|
2429 |
+
092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc
|
2430 |
+
5A==
|
2431 |
+
-----END CERTIFICATE-----
|
2432 |
+
|
2433 |
+
TC TrustCenter Universal CA I
|
2434 |
+
=============================
|
2435 |
+
-----BEGIN CERTIFICATE-----
|
2436 |
+
MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC
|
2437 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
2438 |
+
IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN
|
2439 |
+
MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg
|
2440 |
+
VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw
|
2441 |
+
JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD
|
2442 |
+
ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC
|
2443 |
+
qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv
|
2444 |
+
xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw
|
2445 |
+
ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O
|
2446 |
+
gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j
|
2447 |
+
BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
2448 |
+
AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG
|
2449 |
+
1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy
|
2450 |
+
vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3
|
2451 |
+
ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT
|
2452 |
+
ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a
|
2453 |
+
7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY
|
2454 |
+
-----END CERTIFICATE-----
|
2455 |
+
|
2456 |
+
Deutsche Telekom Root CA 2
|
2457 |
+
==========================
|
2458 |
+
-----BEGIN CERTIFICATE-----
|
2459 |
+
MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
|
2460 |
+
RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
|
2461 |
+
A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
|
2462 |
+
MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
|
2463 |
+
A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
|
2464 |
+
b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
|
2465 |
+
bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
|
2466 |
+
KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
|
2467 |
+
AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
|
2468 |
+
Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
|
2469 |
+
jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
|
2470 |
+
HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
|
2471 |
+
E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
|
2472 |
+
zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
|
2473 |
+
rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
|
2474 |
+
dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
|
2475 |
+
Cm26OWMohpLzGITY+9HPBVZkVw==
|
2476 |
+
-----END CERTIFICATE-----
|
2477 |
+
|
2478 |
+
ComSign CA
|
2479 |
+
==========
|
2480 |
+
-----BEGIN CERTIFICATE-----
|
2481 |
+
MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD
|
2482 |
+
EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy
|
2483 |
+
MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp
|
2484 |
+
Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q
|
2485 |
+
ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy
|
2486 |
+
P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN
|
2487 |
+
GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk
|
2488 |
+
YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM
|
2489 |
+
rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy
|
2490 |
+
oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P
|
2491 |
+
AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+
|
2492 |
+
VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2
|
2493 |
+
QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI
|
2494 |
+
mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb
|
2495 |
+
/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG
|
2496 |
+
zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U
|
2497 |
+
AGegcQCCSA==
|
2498 |
+
-----END CERTIFICATE-----
|
2499 |
+
|
2500 |
+
ComSign Secured CA
|
2501 |
+
==================
|
2502 |
+
-----BEGIN CERTIFICATE-----
|
2503 |
+
MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE
|
2504 |
+
AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w
|
2505 |
+
NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD
|
2506 |
+
QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
2507 |
+
ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs
|
2508 |
+
49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH
|
2509 |
+
7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB
|
2510 |
+
kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1
|
2511 |
+
9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw
|
2512 |
+
AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t
|
2513 |
+
U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA
|
2514 |
+
j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC
|
2515 |
+
AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a
|
2516 |
+
BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp
|
2517 |
+
FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP
|
2518 |
+
51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz
|
2519 |
+
OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw==
|
2520 |
+
-----END CERTIFICATE-----
|
2521 |
+
|
2522 |
+
Cybertrust Global Root
|
2523 |
+
======================
|
2524 |
+
-----BEGIN CERTIFICATE-----
|
2525 |
+
MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
|
2526 |
+
ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
|
2527 |
+
MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
|
2528 |
+
ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
|
2529 |
+
+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
|
2530 |
+
0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
|
2531 |
+
AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
|
2532 |
+
89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
|
2533 |
+
8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
|
2534 |
+
BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
|
2535 |
+
MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
|
2536 |
+
A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
|
2537 |
+
lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
|
2538 |
+
5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
|
2539 |
+
hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
|
2540 |
+
X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
|
2541 |
+
WL1WMRJOEcgh4LMRkWXbtKaIOM5V
|
2542 |
+
-----END CERTIFICATE-----
|
2543 |
+
|
2544 |
+
ePKI Root Certification Authority
|
2545 |
+
=================================
|
2546 |
+
-----BEGIN CERTIFICATE-----
|
2547 |
+
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
|
2573 |
+
-----END CERTIFICATE-----
|
2574 |
+
|
2575 |
+
T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
|
2576 |
+
=============================================================================================================================
|
2577 |
+
-----BEGIN CERTIFICATE-----
|
2578 |
+
MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
|
2579 |
+
DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
|
2580 |
+
aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
|
2581 |
+
b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
|
2582 |
+
BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
|
2583 |
+
S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
|
2584 |
+
MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
|
2585 |
+
IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
|
2586 |
+
n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
|
2587 |
+
IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
|
2588 |
+
dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
|
2589 |
+
cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
|
2590 |
+
AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
|
2591 |
+
Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
|
2592 |
+
xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
|
2593 |
+
6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
|
2594 |
+
hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
|
2595 |
+
BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
|
2596 |
+
MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
|
2597 |
+
N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
|
2598 |
+
y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
|
2599 |
+
LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
|
2600 |
+
dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
|
2601 |
+
-----END CERTIFICATE-----
|
2602 |
+
|
2603 |
+
Buypass Class 2 CA 1
|
2604 |
+
====================
|
2605 |
+
-----BEGIN CERTIFICATE-----
|
2606 |
+
MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2607 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
|
2608 |
+
MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2609 |
+
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
|
2610 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
|
2611 |
+
cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
|
2612 |
+
0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
|
2613 |
+
0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
|
2614 |
+
uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
|
2615 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
|
2616 |
+
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
|
2617 |
+
1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
|
2618 |
+
7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
|
2619 |
+
fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
|
2620 |
+
wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
|
2621 |
+
-----END CERTIFICATE-----
|
2622 |
+
|
2623 |
+
Buypass Class 3 CA 1
|
2624 |
+
====================
|
2625 |
+
-----BEGIN CERTIFICATE-----
|
2626 |
+
MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
|
2627 |
+
QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1
|
2628 |
+
MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
|
2629 |
+
c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI
|
2630 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx
|
2631 |
+
ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0
|
2632 |
+
n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia
|
2633 |
+
AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c
|
2634 |
+
1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC
|
2635 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P
|
2636 |
+
AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7
|
2637 |
+
pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA
|
2638 |
+
EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5
|
2639 |
+
htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj
|
2640 |
+
el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915
|
2641 |
+
-----END CERTIFICATE-----
|
2642 |
+
|
2643 |
+
EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
|
2644 |
+
==========================================================================
|
2645 |
+
-----BEGIN CERTIFICATE-----
|
2646 |
+
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
|
2673 |
+
-----END CERTIFICATE-----
|
2674 |
+
|
2675 |
+
certSIGN ROOT CA
|
2676 |
+
================
|
2677 |
+
-----BEGIN CERTIFICATE-----
|
2678 |
+
MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
|
2679 |
+
VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
|
2680 |
+
Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
|
2681 |
+
CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
|
2682 |
+
JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
|
2683 |
+
rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
|
2684 |
+
ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
|
2685 |
+
0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
|
2686 |
+
AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
|
2687 |
+
Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
|
2688 |
+
AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
|
2689 |
+
SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
|
2690 |
+
x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
|
2691 |
+
vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
|
2692 |
+
TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
|
2693 |
+
-----END CERTIFICATE-----
|
2694 |
+
|
2695 |
+
CNNIC ROOT
|
2696 |
+
==========
|
2697 |
+
-----BEGIN CERTIFICATE-----
|
2698 |
+
MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
|
2699 |
+
ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
|
2700 |
+
OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
|
2701 |
+
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
|
2702 |
+
o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
|
2703 |
+
VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
|
2704 |
+
VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
|
2705 |
+
czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
|
2706 |
+
y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
|
2707 |
+
wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
|
2708 |
+
lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
|
2709 |
+
Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
|
2710 |
+
O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
|
2711 |
+
BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
|
2712 |
+
G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
|
2713 |
+
mxE=
|
2714 |
+
-----END CERTIFICATE-----
|
2715 |
+
|
2716 |
+
ApplicationCA - Japanese Government
|
2717 |
+
===================================
|
2718 |
+
-----BEGIN CERTIFICATE-----
|
2719 |
+
MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
|
2720 |
+
SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
|
2721 |
+
MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
|
2722 |
+
cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
|
2723 |
+
CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
|
2724 |
+
fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
|
2725 |
+
wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
|
2726 |
+
jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
|
2727 |
+
nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
|
2728 |
+
WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
|
2729 |
+
BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
|
2730 |
+
vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
|
2731 |
+
o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
|
2732 |
+
/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
|
2733 |
+
io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
|
2734 |
+
dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
|
2735 |
+
rosot4LKGAfmt1t06SAZf7IbiVQ=
|
2736 |
+
-----END CERTIFICATE-----
|
2737 |
+
|
2738 |
+
GeoTrust Primary Certification Authority - G3
|
2739 |
+
=============================================
|
2740 |
+
-----BEGIN CERTIFICATE-----
|
2741 |
+
MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
|
2742 |
+
BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
|
2743 |
+
IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
|
2744 |
+
eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
|
2745 |
+
NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
|
2746 |
+
YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
|
2747 |
+
LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
|
2748 |
+
hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
|
2749 |
+
K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
|
2750 |
+
c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
|
2751 |
+
IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
|
2752 |
+
dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
|
2753 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
|
2754 |
+
2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
|
2755 |
+
cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
|
2756 |
+
Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
|
2757 |
+
AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
|
2758 |
+
t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
|
2759 |
+
-----END CERTIFICATE-----
|
2760 |
+
|
2761 |
+
thawte Primary Root CA - G2
|
2762 |
+
===========================
|
2763 |
+
-----BEGIN CERTIFICATE-----
|
2764 |
+
MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
|
2765 |
+
VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
|
2766 |
+
IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
|
2767 |
+
Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
|
2768 |
+
MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
|
2769 |
+
b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
|
2770 |
+
IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
|
2771 |
+
LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
|
2772 |
+
8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
|
2773 |
+
mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
|
2774 |
+
G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
|
2775 |
+
rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
|
2776 |
+
-----END CERTIFICATE-----
|
2777 |
+
|
2778 |
+
thawte Primary Root CA - G3
|
2779 |
+
===========================
|
2780 |
+
-----BEGIN CERTIFICATE-----
|
2781 |
+
MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
|
2782 |
+
BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
|
2783 |
+
aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
|
2784 |
+
cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
|
2785 |
+
ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
|
2786 |
+
d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
|
2787 |
+
VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
|
2788 |
+
A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
2789 |
+
MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
|
2790 |
+
P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
|
2791 |
+
+BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
|
2792 |
+
7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
|
2793 |
+
vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
|
2794 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
|
2795 |
+
KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
|
2796 |
+
A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
|
2797 |
+
t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
|
2798 |
+
8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
|
2799 |
+
er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
|
2800 |
+
-----END CERTIFICATE-----
|
2801 |
+
|
2802 |
+
GeoTrust Primary Certification Authority - G2
|
2803 |
+
=============================================
|
2804 |
+
-----BEGIN CERTIFICATE-----
|
2805 |
+
MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
|
2806 |
+
VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
|
2807 |
+
Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
|
2808 |
+
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
|
2809 |
+
OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
|
2810 |
+
MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
|
2811 |
+
b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
|
2812 |
+
BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
|
2813 |
+
KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
|
2814 |
+
VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
|
2815 |
+
EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
|
2816 |
+
ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
|
2817 |
+
npaqBA+K
|
2818 |
+
-----END CERTIFICATE-----
|
2819 |
+
|
2820 |
+
VeriSign Universal Root Certification Authority
|
2821 |
+
===============================================
|
2822 |
+
-----BEGIN CERTIFICATE-----
|
2823 |
+
MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
|
2824 |
+
BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
|
2825 |
+
ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
|
2826 |
+
IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
|
2827 |
+
IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
|
2828 |
+
UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
|
2829 |
+
cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
|
2830 |
+
IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
|
2831 |
+
aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
|
2832 |
+
1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
|
2833 |
+
MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
|
2834 |
+
9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
|
2835 |
+
AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
|
2836 |
+
tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
|
2837 |
+
CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
|
2838 |
+
a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
|
2839 |
+
DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
|
2840 |
+
Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
|
2841 |
+
Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
|
2842 |
+
P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
|
2843 |
+
wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
|
2844 |
+
mJO37M2CYfE45k+XmCpajQ==
|
2845 |
+
-----END CERTIFICATE-----
|
2846 |
+
|
2847 |
+
VeriSign Class 3 Public Primary Certification Authority - G4
|
2848 |
+
============================================================
|
2849 |
+
-----BEGIN CERTIFICATE-----
|
2850 |
+
MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
|
2851 |
+
VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
|
2852 |
+
b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
|
2853 |
+
ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
|
2854 |
+
YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
|
2855 |
+
MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
|
2856 |
+
cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
|
2857 |
+
b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
2858 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
|
2859 |
+
Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
|
2860 |
+
rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
|
2861 |
+
/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
|
2862 |
+
HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
|
2863 |
+
Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
|
2864 |
+
A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
|
2865 |
+
AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
|
2866 |
+
-----END CERTIFICATE-----
|
2867 |
+
|
2868 |
+
NetLock Arany (Class Gold) FEtanC:sC-tvC!ny
|
2869 |
+
============================================
|
2870 |
+
-----BEGIN CERTIFICATE-----
|
2871 |
+
MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
|
2872 |
+
A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
|
2873 |
+
dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
|
2874 |
+
cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
|
2875 |
+
MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
|
2876 |
+
ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
|
2877 |
+
biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
|
2878 |
+
c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
|
2879 |
+
0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
|
2880 |
+
/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
|
2881 |
+
H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
|
2882 |
+
fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
|
2883 |
+
neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
|
2884 |
+
BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
|
2885 |
+
qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
|
2886 |
+
YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
|
2887 |
+
bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
|
2888 |
+
NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
|
2889 |
+
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
|
2890 |
+
-----END CERTIFICATE-----
|
2891 |
+
|
2892 |
+
Staat der Nederlanden Root CA - G2
|
2893 |
+
==================================
|
2894 |
+
-----BEGIN CERTIFICATE-----
|
2895 |
+
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
|
2921 |
+
66+KAQ==
|
2922 |
+
-----END CERTIFICATE-----
|
2923 |
+
|
2924 |
+
CA Disig
|
2925 |
+
========
|
2926 |
+
-----BEGIN CERTIFICATE-----
|
2927 |
+
MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
|
2928 |
+
QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
|
2929 |
+
MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
|
2930 |
+
bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
|
2931 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
|
2932 |
+
GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
|
2933 |
+
Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
|
2934 |
+
hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
|
2935 |
+
ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
|
2936 |
+
gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
|
2937 |
+
AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
|
2938 |
+
aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
|
2939 |
+
ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
|
2940 |
+
BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
|
2941 |
+
WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
|
2942 |
+
mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
|
2943 |
+
CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
|
2944 |
+
ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
|
2945 |
+
4Z7CRneC9VkGjCFMhwnN5ag=
|
2946 |
+
-----END CERTIFICATE-----
|
2947 |
+
|
2948 |
+
Juur-SK
|
2949 |
+
=======
|
2950 |
+
-----BEGIN CERTIFICATE-----
|
2951 |
+
MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
|
2952 |
+
c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
|
2953 |
+
DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
|
2954 |
+
SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
|
2955 |
+
aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
2956 |
+
ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
|
2957 |
+
TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
|
2958 |
+
+Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
|
2959 |
+
UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
|
2960 |
+
Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
|
2961 |
+
MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
|
2962 |
+
HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
|
2963 |
+
AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
|
2964 |
+
cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
|
2965 |
+
AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
|
2966 |
+
cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
|
2967 |
+
FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
|
2968 |
+
A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
|
2969 |
+
ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
|
2970 |
+
abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
|
2971 |
+
IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
|
2972 |
+
Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
|
2973 |
+
yyqcjg==
|
2974 |
+
-----END CERTIFICATE-----
|
2975 |
+
|
2976 |
+
Hongkong Post Root CA 1
|
2977 |
+
=======================
|
2978 |
+
-----BEGIN CERTIFICATE-----
|
2979 |
+
MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
|
2980 |
+
DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
|
2981 |
+
NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
|
2982 |
+
IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
|
2983 |
+
AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
|
2984 |
+
ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
|
2985 |
+
auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
|
2986 |
+
qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
|
2987 |
+
V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
|
2988 |
+
HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
|
2989 |
+
h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
|
2990 |
+
l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
|
2991 |
+
IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
|
2992 |
+
T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
|
2993 |
+
c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
|
2994 |
+
-----END CERTIFICATE-----
|
2995 |
+
|
2996 |
+
SecureSign RootCA11
|
2997 |
+
===================
|
2998 |
+
-----BEGIN CERTIFICATE-----
|
2999 |
+
MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
|
3000 |
+
SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
|
3001 |
+
b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
|
3002 |
+
KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
|
3003 |
+
cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
|
3004 |
+
TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
|
3005 |
+
wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
|
3006 |
+
g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
|
3007 |
+
O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
|
3008 |
+
bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
|
3009 |
+
t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
|
3010 |
+
OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
|
3011 |
+
bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
|
3012 |
+
Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
|
3013 |
+
y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
|
3014 |
+
lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
|
3015 |
+
-----END CERTIFICATE-----
|
3016 |
+
|
3017 |
+
ACEDICOM Root
|
3018 |
+
=============
|
3019 |
+
-----BEGIN CERTIFICATE-----
|
3020 |
+
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
|
3046 |
+
-----END CERTIFICATE-----
|
3047 |
+
|
3048 |
+
Verisign Class 1 Public Primary Certification Authority
|
3049 |
+
=======================================================
|
3050 |
+
-----BEGIN CERTIFICATE-----
|
3051 |
+
MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
3052 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5
|
3053 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
3054 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx
|
3055 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
3056 |
+
A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ
|
3057 |
+
VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2
|
3058 |
+
yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa
|
3059 |
+
XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n
|
3060 |
+
0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ
|
3061 |
+
RjXZ+Hxb
|
3062 |
+
-----END CERTIFICATE-----
|
3063 |
+
|
3064 |
+
Verisign Class 3 Public Primary Certification Authority
|
3065 |
+
=======================================================
|
3066 |
+
-----BEGIN CERTIFICATE-----
|
3067 |
+
MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx
|
3068 |
+
FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5
|
3069 |
+
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow
|
3070 |
+
XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz
|
3071 |
+
IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA
|
3072 |
+
A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94
|
3073 |
+
f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol
|
3074 |
+
hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky
|
3075 |
+
CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX
|
3076 |
+
bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/
|
3077 |
+
D/xwzoiQ
|
3078 |
+
-----END CERTIFICATE-----
|
3079 |
+
|
3080 |
+
Microsec e-Szigno Root CA 2009
|
3081 |
+
==============================
|
3082 |
+
-----BEGIN CERTIFICATE-----
|
3083 |
+
MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
|
3084 |
+
MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
|
3085 |
+
c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
|
3086 |
+
dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
|
3087 |
+
BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
|
3088 |
+
U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
|
3089 |
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
|
3090 |
+
fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
|
3091 |
+
0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
|
3092 |
+
pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
|
3093 |
+
1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
|
3094 |
+
AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
|
3095 |
+
QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
|
3096 |
+
FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
|
3097 |
+
lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
|
3098 |
+
I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
|
3099 |
+
tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
|
3100 |
+
yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
|
3101 |
+
LXpUq3DDfSJlgnCW
|
3102 |
+
-----END CERTIFICATE-----
|
3103 |
+
|
3104 |
+
E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi
|
3105 |
+
===================================================
|
3106 |
+
-----BEGIN CERTIFICATE-----
|
3107 |
+
MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
|
3108 |
+
EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz
|
3109 |
+
ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3
|
3110 |
+
MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0
|
3111 |
+
cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u
|
3112 |
+
aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
3113 |
+
AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY
|
3114 |
+
8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y
|
3115 |
+
jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI
|
3116 |
+
JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk
|
3117 |
+
9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD
|
3118 |
+
AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG
|
3119 |
+
SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d
|
3120 |
+
F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq
|
3121 |
+
D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4
|
3122 |
+
Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq
|
3123 |
+
fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX
|
3124 |
+
-----END CERTIFICATE-----
|
3125 |
+
|
3126 |
+
GlobalSign Root CA - R3
|
3127 |
+
=======================
|
3128 |
+
-----BEGIN CERTIFICATE-----
|
3129 |
+
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
|
3130 |
+
YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
|
3131 |
+
bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
|
3132 |
+
aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
|
3133 |
+
bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
|
3134 |
+
iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
|
3135 |
+
0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
|
3136 |
+
rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
|
3137 |
+
OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
|
3138 |
+
xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
|
3139 |
+
FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
|
3140 |
+
lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
|
3141 |
+
EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
|
3142 |
+
bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
|
3143 |
+
YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
|
3144 |
+
kpeDMdmztcpHWD9f
|
3145 |
+
-----END CERTIFICATE-----
|
3146 |
+
|
3147 |
+
TC TrustCenter Universal CA III
|
3148 |
+
===============================
|
3149 |
+
-----BEGIN CERTIFICATE-----
|
3150 |
+
MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC
|
3151 |
+
REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy
|
3152 |
+
IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe
|
3153 |
+
Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU
|
3154 |
+
QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex
|
3155 |
+
KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB
|
3156 |
+
AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt
|
3157 |
+
QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO
|
3158 |
+
juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut
|
3159 |
+
CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1
|
3160 |
+
M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G
|
3161 |
+
A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/
|
3162 |
+
BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA
|
3163 |
+
g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+
|
3164 |
+
KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK
|
3165 |
+
BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV
|
3166 |
+
CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq
|
3167 |
+
woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg==
|
3168 |
+
-----END CERTIFICATE-----
|
3169 |
+
|
3170 |
+
Autoridad de Certificacion Firmaprofesional CIF A62634068
|
3171 |
+
=========================================================
|
3172 |
+
-----BEGIN CERTIFICATE-----
|
3173 |
+
MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
|
3174 |
+
BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
|
3175 |
+
MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
|
3176 |
+
QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
|
3177 |
+
NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
|
3178 |
+
Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
|
3179 |
+
B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
|
3180 |
+
7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
|
3181 |
+
ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
|
3182 |
+
plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
|
3183 |
+
MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
|
3184 |
+
LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
|
3185 |
+
bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
|
3186 |
+
vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
|
3187 |
+
EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
|
3188 |
+
DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
|
3189 |
+
cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
|
3190 |
+
bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
|
3191 |
+
ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
|
3192 |
+
51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
|
3193 |
+
R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
|
3194 |
+
T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
|
3195 |
+
Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
|
3196 |
+
osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
|
3197 |
+
crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
|
3198 |
+
saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
|
3199 |
+
KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
|
3200 |
+
6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
|
3201 |
+
-----END CERTIFICATE-----
|
3202 |
+
|
3203 |
+
Izenpe.com
|
3204 |
+
==========
|
3205 |
+
-----BEGIN CERTIFICATE-----
|
3206 |
+
MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG
|
3207 |
+
EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz
|
3208 |
+
MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu
|
3209 |
+
QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ
|
3210 |
+
03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK
|
3211 |
+
ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU
|
3212 |
+
+zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC
|
3213 |
+
PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT
|
3214 |
+
OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK
|
3215 |
+
F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK
|
3216 |
+
0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+
|
3217 |
+
0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB
|
3218 |
+
leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID
|
3219 |
+
AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+
|
3220 |
+
SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG
|
3221 |
+
NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx
|
3222 |
+
MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O
|
3223 |
+
BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l
|
3224 |
+
Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga
|
3225 |
+
kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q
|
3226 |
+
hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs
|
3227 |
+
g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5
|
3228 |
+
aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5
|
3229 |
+
nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC
|
3230 |
+
ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo
|
3231 |
+
Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z
|
3232 |
+
WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw==
|
3233 |
+
-----END CERTIFICATE-----
|
3234 |
+
|
3235 |
+
Chambers of Commerce Root - 2008
|
3236 |
+
================================
|
3237 |
+
-----BEGIN CERTIFICATE-----
|
3238 |
+
MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
|
3239 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
3240 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
3241 |
+
QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
|
3242 |
+
Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
|
3243 |
+
ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
|
3244 |
+
EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
|
3245 |
+
cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
|
3246 |
+
AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
|
3247 |
+
XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
|
3248 |
+
h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
|
3249 |
+
ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
|
3250 |
+
NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
|
3251 |
+
D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
|
3252 |
+
lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
|
3253 |
+
0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
|
3254 |
+
ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
|
3255 |
+
EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
|
3256 |
+
G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
|
3257 |
+
BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
|
3258 |
+
bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
|
3259 |
+
bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
|
3260 |
+
CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
|
3261 |
+
AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
|
3262 |
+
wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
|
3263 |
+
3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
|
3264 |
+
RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
|
3265 |
+
M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
|
3266 |
+
YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
|
3267 |
+
9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
|
3268 |
+
zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
|
3269 |
+
nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
|
3270 |
+
OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
|
3271 |
+
-----END CERTIFICATE-----
|
3272 |
+
|
3273 |
+
Global Chambersign Root - 2008
|
3274 |
+
==============================
|
3275 |
+
-----BEGIN CERTIFICATE-----
|
3276 |
+
MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
|
3277 |
+
MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
|
3278 |
+
bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
|
3279 |
+
QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
|
3280 |
+
NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
|
3281 |
+
Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
|
3282 |
+
QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
|
3283 |
+
aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
|
3284 |
+
VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
|
3285 |
+
XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
|
3286 |
+
ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
|
3287 |
+
/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
|
3288 |
+
TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
|
3289 |
+
H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
|
3290 |
+
Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
|
3291 |
+
HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
|
3292 |
+
wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
|
3293 |
+
AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
|
3294 |
+
BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
|
3295 |
+
BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
|
3296 |
+
aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
|
3297 |
+
aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
|
3298 |
+
1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
|
3299 |
+
dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
|
3300 |
+
/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
|
3301 |
+
ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
|
3302 |
+
dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
|
3303 |
+
9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
|
3304 |
+
foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
|
3305 |
+
qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
|
3306 |
+
P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
|
3307 |
+
c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
|
3308 |
+
09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
|
3309 |
+
-----END CERTIFICATE-----
|
3310 |
+
|
3311 |
+
Go Daddy Root Certificate Authority - G2
|
3312 |
+
========================================
|
3313 |
+
-----BEGIN CERTIFICATE-----
|
3314 |
+
MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3315 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
|
3316 |
+
MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
|
3317 |
+
MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
|
3318 |
+
b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
|
3319 |
+
A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
|
3320 |
+
hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
|
3321 |
+
9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
|
3322 |
+
+qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
|
3323 |
+
fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
|
3324 |
+
NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
|
3325 |
+
MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
|
3326 |
+
BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
|
3327 |
+
vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
|
3328 |
+
5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
|
3329 |
+
N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
|
3330 |
+
LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
|
3331 |
+
-----END CERTIFICATE-----
|
3332 |
+
|
3333 |
+
Starfield Root Certificate Authority - G2
|
3334 |
+
=========================================
|
3335 |
+
-----BEGIN CERTIFICATE-----
|
3336 |
+
MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3337 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
3338 |
+
b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
|
3339 |
+
eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
|
3340 |
+
DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
|
3341 |
+
VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
|
3342 |
+
dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
|
3343 |
+
W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
|
3344 |
+
bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
|
3345 |
+
N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
|
3346 |
+
ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
|
3347 |
+
JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3348 |
+
AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
|
3349 |
+
TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
|
3350 |
+
4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
|
3351 |
+
F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
|
3352 |
+
pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
|
3353 |
+
c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
|
3354 |
+
-----END CERTIFICATE-----
|
3355 |
+
|
3356 |
+
Starfield Services Root Certificate Authority - G2
|
3357 |
+
==================================================
|
3358 |
+
-----BEGIN CERTIFICATE-----
|
3359 |
+
MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
|
3360 |
+
B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
|
3361 |
+
b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
|
3362 |
+
IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
|
3363 |
+
BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
|
3364 |
+
dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
|
3365 |
+
Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
|
3366 |
+
AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
|
3367 |
+
h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
|
3368 |
+
hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
|
3369 |
+
LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
|
3370 |
+
rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
|
3371 |
+
AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
|
3372 |
+
SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
|
3373 |
+
E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
|
3374 |
+
xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
|
3375 |
+
iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
|
3376 |
+
YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
|
3377 |
+
-----END CERTIFICATE-----
|
3378 |
+
|
3379 |
+
AffirmTrust Commercial
|
3380 |
+
======================
|
3381 |
+
-----BEGIN CERTIFICATE-----
|
3382 |
+
MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
3383 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
|
3384 |
+
MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
3385 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
|
3386 |
+
AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
|
3387 |
+
DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
|
3388 |
+
C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
|
3389 |
+
BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
|
3390 |
+
MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
|
3391 |
+
HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3392 |
+
AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
|
3393 |
+
hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
|
3394 |
+
qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
|
3395 |
+
0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
|
3396 |
+
sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
|
3397 |
+
-----END CERTIFICATE-----
|
3398 |
+
|
3399 |
+
AffirmTrust Networking
|
3400 |
+
======================
|
3401 |
+
-----BEGIN CERTIFICATE-----
|
3402 |
+
MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
|
3403 |
+
BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
|
3404 |
+
MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
|
3405 |
+
bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
|
3406 |
+
AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
|
3407 |
+
Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
|
3408 |
+
dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
|
3409 |
+
/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
|
3410 |
+
h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
|
3411 |
+
HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
|
3412 |
+
AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
|
3413 |
+
UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
|
3414 |
+
12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
|
3415 |
+
WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
|
3416 |
+
/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
|
3417 |
+
-----END CERTIFICATE-----
|
3418 |
+
|
3419 |
+
AffirmTrust Premium
|
3420 |
+
===================
|
3421 |
+
-----BEGIN CERTIFICATE-----
|
3422 |
+
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
|
3446 |
+
-----END CERTIFICATE-----
|
3447 |
+
|
3448 |
+
AffirmTrust Premium ECC
|
3449 |
+
=======================
|
3450 |
+
-----BEGIN CERTIFICATE-----
|
3451 |
+
MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
|
3452 |
+
BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
|
3453 |
+
MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
|
3454 |
+
cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
|
3455 |
+
IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
|
3456 |
+
N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
|
3457 |
+
BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
|
3458 |
+
BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
|
3459 |
+
57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
|
3460 |
+
eQ==
|
3461 |
+
-----END CERTIFICATE-----
|
3462 |
+
|
3463 |
+
Certum Trusted Network CA
|
3464 |
+
=========================
|
3465 |
+
-----BEGIN CERTIFICATE-----
|
3466 |
+
MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
|
3467 |
+
ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
|
3468 |
+
biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
|
3469 |
+
MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
|
3470 |
+
ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
|
3471 |
+
MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
|
3472 |
+
AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
|
3473 |
+
l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
|
3474 |
+
J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
|
3475 |
+
fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
|
3476 |
+
cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
|
3477 |
+
Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
|
3478 |
+
DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
|
3479 |
+
jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
|
3480 |
+
mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
|
3481 |
+
Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
|
3482 |
+
03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
|
3483 |
+
-----END CERTIFICATE-----
|
3484 |
+
|
3485 |
+
Certinomis - AutoritC) Racine
|
3486 |
+
=============================
|
3487 |
+
-----BEGIN CERTIFICATE-----
|
3488 |
+
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
|
3513 |
+
vgt2Fl43N+bYdJeimUV5
|
3514 |
+
-----END CERTIFICATE-----
|
3515 |
+
|
3516 |
+
Root CA Generalitat Valenciana
|
3517 |
+
==============================
|
3518 |
+
-----BEGIN CERTIFICATE-----
|
3519 |
+
MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
|
3520 |
+
ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
|
3521 |
+
IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
|
3522 |
+
WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
|
3523 |
+
CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
|
3524 |
+
CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
|
3525 |
+
F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
|
3526 |
+
ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
|
3527 |
+
D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
|
3528 |
+
JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
|
3529 |
+
AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
|
3530 |
+
dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
|
3531 |
+
ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
|
3532 |
+
AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
|
3533 |
+
YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
|
3534 |
+
AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
|
3535 |
+
aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
|
3536 |
+
AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
|
3537 |
+
YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
|
3538 |
+
AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
|
3539 |
+
OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
|
3540 |
+
dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
|
3541 |
+
BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
|
3542 |
+
A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
|
3543 |
+
b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
|
3544 |
+
TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
|
3545 |
+
Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
|
3546 |
+
NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
|
3547 |
+
iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
|
3548 |
+
+GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
|
3549 |
+
-----END CERTIFICATE-----
|
3550 |
+
|
3551 |
+
A-Trust-nQual-03
|
3552 |
+
================
|
3553 |
+
-----BEGIN CERTIFICATE-----
|
3554 |
+
MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE
|
3555 |
+
Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
|
3556 |
+
a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R
|
3557 |
+
dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw
|
3558 |
+
RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
|
3559 |
+
ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1
|
3560 |
+
c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA
|
3561 |
+
zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n
|
3562 |
+
yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE
|
3563 |
+
SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4
|
3564 |
+
iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V
|
3565 |
+
cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV
|
3566 |
+
eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40
|
3567 |
+
ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr
|
3568 |
+
sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd
|
3569 |
+
JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS
|
3570 |
+
mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6
|
3571 |
+
ahq97BvIxYSazQ==
|
3572 |
+
-----END CERTIFICATE-----
|
3573 |
+
|
3574 |
+
TWCA Root Certification Authority
|
3575 |
+
=================================
|
3576 |
+
-----BEGIN CERTIFICATE-----
|
3577 |
+
MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
|
3578 |
+
VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
|
3579 |
+
dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
|
3580 |
+
EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
|
3581 |
+
IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
3582 |
+
AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
|
3583 |
+
QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
|
3584 |
+
oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
|
3585 |
+
4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
|
3586 |
+
y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
|
3587 |
+
BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
|
3588 |
+
9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
|
3589 |
+
mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
|
3590 |
+
QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
|
3591 |
+
T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
|
3592 |
+
Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
|
3593 |
+
-----END CERTIFICATE-----
|
3594 |
+
|
3595 |
+
Security Communication RootCA2
|
3596 |
+
==============================
|
3597 |
+
-----BEGIN CERTIFICATE-----
|
3598 |
+
MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
|
3599 |
+
U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
|
3600 |
+
dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
|
3601 |
+
SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
|
3602 |
+
aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
|
3603 |
+
ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
|
3604 |
+
+T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
|
3605 |
+
3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
|
3606 |
+
spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
|
3607 |
+
EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
|
3608 |
+
QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
|
3609 |
+
CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
|
3610 |
+
u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
|
3611 |
+
3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
|
3612 |
+
tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
|
3613 |
+
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
|
3614 |
+
-----END CERTIFICATE-----
|
3615 |
+
|
3616 |
+
EC-ACC
|
3617 |
+
======
|
3618 |
+
-----BEGIN CERTIFICATE-----
|
3619 |
+
MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
|
3620 |
+
BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
|
3621 |
+
ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
|
3622 |
+
VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
|
3623 |
+
CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
|
3624 |
+
BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
|
3625 |
+
MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
|
3626 |
+
SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
|
3627 |
+
Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
|
3628 |
+
cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
|
3629 |
+
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
|
3630 |
+
w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
|
3631 |
+
ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
|
3632 |
+
HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
|
3633 |
+
E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
|
3634 |
+
0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
|
3635 |
+
BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
|
3636 |
+
VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
|
3637 |
+
Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
|
3638 |
+
dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
|
3639 |
+
lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
|
3640 |
+
Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
|
3641 |
+
l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
|
3642 |
+
E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
|
3643 |
+
5EI=
|
3644 |
+
-----END CERTIFICATE-----
|
3645 |
+
|
3646 |
+
Actalis Authentication Root CA
|
3647 |
+
==============================
|
3648 |
+
-----BEGIN CERTIFICATE-----
|
3649 |
+
MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
|
3650 |
+
BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
|
3651 |
+
AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
|
3652 |
+
MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
|
3653 |
+
IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
|
3654 |
+
IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
|
3655 |
+
wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
|
3656 |
+
by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
|
3657 |
+
zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
|
3658 |
+
YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
|
3659 |
+
oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
|
3660 |
+
EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
|
3661 |
+
hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
|
3662 |
+
EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
|
3663 |
+
jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
|
3664 |
+
iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
|
3665 |
+
ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
|
3666 |
+
WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
|
3667 |
+
JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
|
3668 |
+
K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
|
3669 |
+
Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
|
3670 |
+
4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
|
3671 |
+
2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
|
3672 |
+
lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
|
3673 |
+
OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
|
3674 |
+
vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
|
3675 |
+
-----END CERTIFICATE-----
|
3676 |
+
|
3677 |
+
Trustis FPS Root CA
|
3678 |
+
===================
|
3679 |
+
-----BEGIN CERTIFICATE-----
|
3680 |
+
MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
|
3681 |
+
EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
|
3682 |
+
IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
|
3683 |
+
BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
|
3684 |
+
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
|
3685 |
+
RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
|
3686 |
+
H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
|
3687 |
+
cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
|
3688 |
+
o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
|
3689 |
+
AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
|
3690 |
+
BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
|
3691 |
+
GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
|
3692 |
+
yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
|
3693 |
+
8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
|
3694 |
+
l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
|
3695 |
+
iB6XzCGcKQENZetX2fNXlrtIzYE=
|
3696 |
+
-----END CERTIFICATE-----
|
3697 |
+
|
3698 |
+
StartCom Certification Authority
|
3699 |
+
================================
|
3700 |
+
-----BEGIN CERTIFICATE-----
|
3701 |
+
MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
|
3702 |
+
U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
|
3703 |
+
ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
|
3704 |
+
NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
|
3705 |
+
LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
|
3706 |
+
U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
|
3707 |
+
ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
|
3708 |
+
o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
|
3709 |
+
Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
|
3710 |
+
eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
|
3711 |
+
2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
|
3712 |
+
6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
|
3713 |
+
osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
|
3714 |
+
untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
|
3715 |
+
UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
|
3716 |
+
37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
|
3717 |
+
VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
|
3718 |
+
Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
|
3719 |
+
dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
|
3720 |
+
c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
|
3721 |
+
bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
|
3722 |
+
aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
|
3723 |
+
aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
|
3724 |
+
L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
|
3725 |
+
cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
|
3726 |
+
fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
|
3727 |
+
N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
|
3728 |
+
Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
|
3729 |
+
tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
|
3730 |
+
e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
|
3731 |
+
2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
|
3732 |
+
HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
|
3733 |
+
JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
|
3734 |
+
D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
|
3735 |
+
-----END CERTIFICATE-----
|
3736 |
+
|
3737 |
+
StartCom Certification Authority G2
|
3738 |
+
===================================
|
3739 |
+
-----BEGIN CERTIFICATE-----
|
3740 |
+
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
|
3764 |
+
obp573PYtlNXLfbQ4ddI
|
3765 |
+
-----END CERTIFICATE-----
|
3766 |
+
|
3767 |
+
Buypass Class 2 Root CA
|
3768 |
+
=======================
|
3769 |
+
-----BEGIN CERTIFICATE-----
|
3770 |
+
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
|
3794 |
+
rJgWVqA=
|
3795 |
+
-----END CERTIFICATE-----
|
3796 |
+
|
3797 |
+
Buypass Class 3 Root CA
|
3798 |
+
=======================
|
3799 |
+
-----BEGIN CERTIFICATE-----
|
3800 |
+
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
|
3824 |
+
Cp/HuZc=
|
3825 |
+
-----END CERTIFICATE-----
|
3826 |
+
|
3827 |
+
T-TeleSec GlobalRoot Class 3
|
3828 |
+
============================
|
3829 |
+
-----BEGIN CERTIFICATE-----
|
3830 |
+
MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
|
3831 |
+
IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
|
3832 |
+
cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
|
3833 |
+
MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
|
3834 |
+
dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
|
3835 |
+
ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
|
3836 |
+
DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
|
3837 |
+
9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
|
3838 |
+
NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
|
3839 |
+
iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
|
3840 |
+
0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
|
3841 |
+
MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
|
3842 |
+
AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
|
3843 |
+
fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
|
3844 |
+
ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
|
3845 |
+
P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
|
3846 |
+
e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
|
3847 |
+
-----END CERTIFICATE-----
|
3848 |
+
|
package.xml
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package><name>Esendex_SMS</name><version>0.1.0</version><stability>stable</stability><license>MIT</license><channel>community</channel><extends></extends><summary>Esendex SMS</summary><description>Esendex SMS</description><notes>Esendex SMS</notes><authors><author><name>Esendex</name><user>esendex</user><email>esendex@esendex.com</email></author></authors><date>2015-09-10</date><time>3:52:42</time><compatible></compatible><dependencies><required><php><min>5.3.0</min><max>6.0.0</max></php></required></dependencies><contents><target name="mage"><file name="LICENSE.md" hash="a537b3ebc32cf55aa4bca6089232b5d9"/><dir name="app"><dir name="code"><dir name="community"><dir name="Esendex"><dir name="Events"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><file name="CronTime.php" hash="6180cefe3e032746f1270f6015d8aea1"/></dir></dir></dir></dir><dir name="etc"><file name="config.xml" hash="b7f275a2a480eaccc82dad82f3c3d232"/><file name="system.xml" hash="32be5415898296ae4a401326639d30dd"/></dir><dir name="Helper"><file name="Data.php" hash="e3fd138eb981a20b7277319c0eedc490"/></dir><dir name="Model"><file name="AdminSalesReport.php" hash="a67bab413a3a45f95d085ae21338d9c0"/><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Backend"><file name="CronTime.php" hash="7711c65668da52d1e0fa9f3746076edf"/></dir></dir></dir></dir><dir name="EventProcessor"><file name="AdminSalesReport.php" hash="163572bcd8352c74ca6b7cc209cad878"/><file name="OrderAbstract.php" hash="bfdf7502475b32a7ba7120185c8a799e"/><file name="OrderShipped.php" hash="11275d5b4a019dcb214557334833433f"/><file name="OrderShippedWithTracking.php" hash="e98f20750ea951d9dccb6aaa04b7692d"/><dir name="OrderStatusChange"><file name="Abstract.php" hash="da4de25005ce851ed91762a430f6adca"/><file name="Canceled.php" hash="5c84f10a39d9ad28b6651fde29ff13a0"/><file name="Closed.php" hash="7598a555bc49c51960c10ef3cb724d52"/><file name="Complete.php" hash="2544816772c879cc707e3a055ac7cffd"/><file name="OnHold.php" hash="a3f96aaeec9796580bf85fca1aaedf5d"/><file name="PaymentReview.php" hash="6028c4fadbe87e061c91e89492f5ca37"/><file name="Pending.php" hash="21b3fa1752ed8b54bbd3f9a64a10e625"/><file name="PendingPayment.php" hash="bb00b3a2cf76268c0d647725a717334c"/><file name="PendingPaypal.php" hash="ece202177c76e508a4a77f4d9f9751b7"/><file name="Processing.php" hash="a194d8846990120a51de0bf76e4a32f6"/><file name="SuspectedFraud.php" hash="ea3299fa68061a7ea28f1568509b404d"/></dir></dir><dir name="Listener"><dir name="TriggerCreate"><file name="AdminSalesReport.php" hash="56226262cd3037d1acab7b18309b33d8"/><file name="OrderStatusChange.php" hash="120a7041496456ae894592d8f1ca53cc"/></dir></dir><dir name="Resource"><file name="AdminSalesReport.php" hash="fe844cca28ab9141674f4fcfab2fb76d"/><dir name="AdminSalesReport"><file name="Collection.php" hash="b3ad5fbf01229137c541cd68d2af35b1"/><dir name="Order"><file name="Collection.php" hash="3330422e88154f0ff01c9ceb37fbb6a5"/></dir></dir></dir></dir><dir name="sql"><dir name="esendex_events_setup"><file name="install-0.1.0.php" hash="985a9f46a9f19ac474712ba862a7c674"/><file name="upgrade-0.1.0-0.2.0.php" hash="bf1e05ac5f87c1e9a237aa67032a7d74"/></dir></dir></dir><dir name="Sms"><dir name="Block"><dir name="Adminhtml"><file name="AccountNotifications.php" hash="288beec544f80f34443d7c71a6784117"/><file name="Messages.php" hash="3cd779f8e67036ced4be05e01d7c7687"/><file name="MobileSalesReport.php" hash="6b12bd010fde15402cd0c388c397971b"/><file name="Trigger.php" hash="f2a6e61c2b132d63d782d46a81d62e34"/><dir name="Grid"><dir name="Renderer"><file name="Translate.php" hash="fb5c1d9abf3d8248764935e68a7dcce7"/></dir></dir><dir name="Messages"><file name="Grid.php" hash="f110affb66753f6d7d2473e3757c8eb1"/></dir><dir name="MobileSalesReport"><file name="Edit.php" hash="2425facf1cb13f2441f8319749ac66cb"/><file name="Grid.php" hash="b5a50c5299c803e7b35fe36706c896a8"/><dir name="Edit"><file name="Form.php" hash="41064ace34d1c123ed1d53ac2f34cdb8"/></dir></dir><dir name="System"><dir name="Config"><dir name="Section"><file name="Details.php" hash="8217896a5df191056a467adaf8d69a7c"/></dir></dir></dir><dir name="Trigger"><file name="Edit.php" hash="87761d0b1872fd558108d55fe64a3ac7"/><file name="Grid.php" hash="d15cc4684d097f877e6df00a52ee94cb"/><dir name="Edit"><file name="Form.php" hash="73bce4bb9a56a8573add6d1e04de87fb"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Sms"><file name="MessagesController.php" hash="cff4f070ca68eda9a8f67fca08ab604c"/><file name="MobileSalesReportController.php" hash="27ac99affba3af08e75e399a51068ab5"/><file name="TriggerController.php" hash="7f8d1ff0745e4f3fb7b72d893087a253"/></dir></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="7f9fa48d452069720f6558ce2d93c6fd"/><file name="config.xml" hash="4259ab81ff0a5eaa49b8e21fe44da033"/><file name="jstranslator.xml" hash="e968266f3be6b62dd7a91f7d96546a0e"/><file name="system.xml" hash="37f176da0e79d19d62bd15000f577075"/></dir><dir name="Helper"><file name="Data.php" hash="efb9908143cd27ea2776075ca04c7a1d"/></dir><dir name="Model"><file name="AccountNotifications.php" hash="7c40a1c29d8c090edbc1a09bd67d14d8"/><file name="AccountObserver.php" hash="7a1554ee73b5f8cc7e07d87462fcfdb9"/><file name="AutoloaderObserver.php" hash="ed3783fce1f87bcae82637b864a78359"/><file name="Event.php" hash="e5cf2826d83fca67ab056d3cebbf518d"/><file name="Message.php" hash="3a262eae055186cbed21ab1402c38c62"/><file name="MessageInterpolator.php" hash="d2c43a50cf9880d39b00e9f1b2c5f665"/><file name="Observer.php" hash="66b2f257ade546894972291c3a593aba"/><file name="SampleMessage.php" hash="f48f5485b0326eda7affa7c88151ab21"/><file name="SentMessages.php" hash="f37c3203014970eb9e55208a58bce142"/><file name="Trigger.php" hash="246ebedc7acaea697dc81d21de1427cf"/><file name="TriggerAbstract.php" hash="14c8c5d0e7c7c5ef68612acfef1087c7"/><file name="ValidatableInterface.php" hash="abe9bf74c6822da329b2f13b5a0a7f96"/><file name="Variable.php" hash="6062e8625886541076a66a63f8e857ef"/><dir name="Api"><file name="Api.php" hash="0b7d290399f1c2c42b306b331096c47b"/><file name="Factory.php" hash="a7a517b0aabd38ec37f49c8ca996f5d8"/></dir><dir name="EventProcessor"><file name="Abstract.php" hash="a9c186a4e8d5b41f2abd5a62345908d2"/><file name="Interface.php" hash="6549c2ba78d66992241c9f1ecc7e92ee"/></dir><dir name="Http"><file name="HttpClient.php" hash="243fea113a37f072176159fc9dcb3ab4"/></dir><dir name="Logger"><file name="Factory.php" hash="d9bef6a777e235e467b17e5eeafffab6"/><file name="Logger.php" hash="63397a3ef4a7fcdd168971b9680d0287"/><file name="LoggerAwareInterface.php" hash="c9c8fbcbde465fe24fe3432f4259e1d0"/></dir><dir name="MessageProcessor"><file name="Factory.php" hash="db4ee7365f04324f5fc4105e6f5230e5"/><file name="MessageProcessor.php" hash="e4fbd86029b405a20c0d0b924e5fd26c"/></dir><dir name="Resource"><file name="Event.php" hash="7b909425a99dcb8d8a89acf93bb539eb"/><file name="SampleMessage.php" hash="7bd3a462796206a90c847a25717b6749"/><file name="Setup.php" hash="269d5fb350b96e0f230c0ced09396a29"/><file name="Trigger.php" hash="64efbb914a21f242ac04b744be3e775d"/><file name="TriggerAbstract.php" hash="da314fb3ff93f23c44a9068ab5906c23"/><dir name="Event"><file name="Collection.php" hash="dd480bed00da834d943f53733cb0d5fd"/></dir><dir name="SampleMessage"><file name="Collection.php" hash="c5c7b26422b1d8ed2759738cd59f2b2d"/></dir><dir name="Trigger"><file name="Collection.php" hash="d4cdbdeb8047f297813048c64aa6d1e2"/></dir></dir></dir><dir name="sql"><dir name="esendex_sms_setup"><file name="install-0.1.0.php" hash="5588c43a0f53d02d3896f64cdfe8cc0e"/></dir></dir></dir></dir></dir></dir><dir name="design"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="esendex"><file name="sms.xml" hash="c9e1237d40b910e4a9371f63dfa2bcac"/></dir></dir><dir name="template"><dir name="esendex"><dir name="sms"><file name="notifications.phtml" hash="34e5767ba2a7336fdf5218f9a86287e3"/><dir name="system"><dir name="config"><dir name="section"><file name="details.phtml" hash="0ae608f89b72da4304343be3f27d84f7"/></dir></dir></dir></dir><dir name="widget"><dir name="messages"><file name="grid.phtml" hash="59c59f862924f00d84270235eedb283d"/><file name="info.phtml" hash="3e4b33c44bdfa1b32f27a3645b6f6876"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="etc"><dir name="modules"><file name="Esendex_Events.xml" hash="76a48db195ba71e103e3938c9aa846ec"/><file name="Esendex_Sms.xml" hash="6fed7fba8d87f389eb295b6e701e4a3c"/></dir></dir><dir name="locale"><dir name="de_DE"><file name="Esendex_Sms.csv" hash="baf7706e6a947872ed49c488ccf1e49b"/></dir><dir name="en_GB"><file name="Esendex_Sms.csv" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><dir name="en_US"><file name="Esendex_Sms.csv" hash="d41d8cd98f00b204e9800998ecf8427e"/></dir><dir name="es_ES"><file name="Esendex_Sms.csv" hash="b8150506cdd7ce742fde76d0053f4de4"/></dir><dir name="fr_FR"><file name="Esendex_Sms.csv" hash="c93973b1eb829a4f2bb1b70e1a1e7680"/></dir></dir></dir><dir name="lib"><file name="ca-bundle.pem" hash="3685decf6b8feb9080cd5f03cbeb8e3e"/><dir name="Esendex"><file name="AccountService.php" hash="726827f41a6651c10ce53e4e287dbfdc"/><file name="CheckAccessService.php" hash="733a20888259d627d391b28a3be69b89"/><file name="DispatchService.php" hash="7e8baf964728e9c56f3edf137a6179bc"/><file name="InboxService.php" hash="73375d2eb1cb3852b6e04d51da3443d8"/><file name="MessageBodyService.php" hash="bc4e90f3147c8bc69ea4ed8b8feced8e"/><file name="MessageHeaderService.php" hash="5b113b60c873f8fdd66d70dfd6e819a4"/><file name="MessageInformationService.php" hash="d7b36d30b0ebc5d69f25e6c0a103338f"/><file name="SentMessagesService.php" hash="695d8163dbdea99ab14c37c920ae9854"/><file name="SessionService.php" hash="18604d2b3f945cb36aa6231ecdb0daa1"/><dir name="Authentication"><file name="AbstractAuthentication.php" hash="8ed6d800614b07d81c2491092694a17a"/><file name="IAuthentication.php" hash="31bb6a84acfe900099df55db834114e7"/><file name="LoginAuthentication.php" hash="242211e678d13d2e1878b20ee16fab2c"/><file name="SessionAuthentication.php" hash="b06e8fed2ad9c50379e59e3622544fa4"/></dir><dir name="Exceptions"><file name="ArgumentException.php" hash="a3db0e3cd0a0e8f036f5c868ea5c0b77"/><file name="EsendexException.php" hash="ec402e8051eba2a1eb4b1e1b7413a769"/><file name="XmlException.php" hash="2ba0072af3aa0f57d0a80453ba6eed49"/></dir><dir name="Http"><file name="HttpClient.php" hash="3c3b35a652b578a2cf659d6cb428a111"/><file name="IHttp.php" hash="4d4a142c4365afb46d046c285a0fedf2"/><file name="UriBuilder.php" hash="f75554b5b211f53898f1105c8425ac8f"/></dir><dir name="Model"><file name="Account.php" hash="f96720187ca96b62a1701aad48c46df0"/><file name="Api.php" hash="9674b6a9d50d90ab45fe3436a39c62c9"/><file name="DispatchMessage.php" hash="7f3059f02f9cc136c36079c730357182"/><file name="InboxMessage.php" hash="c88a1610ce150f604d868ad893e73b28"/><file name="InboxPage.php" hash="d24bab5e2f412a1d71240b9f7b1222d5"/><file name="Message.php" hash="03da7e0098bdbb1aac27b94b538ba808"/><file name="MessageBody.php" hash="e58bebadacb41fa93c397e515a99ad69"/><file name="MessageInformation.php" hash="17c31ff7a02197e5db452a8a9aa9b4d7"/><file name="ResultItem.php" hash="64a15c5e559f29f356f221d7bc408307"/><file name="ResultMessage.php" hash="2ec8a00417e52421a61f103f68b8541c"/><file name="SentMessage.php" hash="baa681bc2b9ddd33d4069bdcd2f19ab7"/><file name="SentMessagesPage.php" hash="510f9cd265f3263b3cc42ee476305caa"/></dir><dir name="Parser"><file name="AccountXmlParser.php" hash="d5d16494658bc97aa1248292ab59c5c4"/><file name="DispatchXmlParser.php" hash="a4a04721f7a7e1d1a6f7b80c4fac072e"/><file name="InboxXmlParser.php" hash="c357fec9f413672a2cb5996c5e06aff3"/><file name="MessageHeaderXmlParser.php" hash="10176098ff1576d469b8a5c6e16d8eaa"/><file name="MessageInformationXmlParser.php" hash="cd5525e5f7314caa9fce1eb52f29f6d8"/><file name="SentMessagesXmlParser.php" hash="fb52ab787b560cfef68d07a22656a7a7"/></dir></dir><dir name="Psr"><dir name="Log"><file name="AbstractLogger.php" hash="a57c1be541193b72d09307bb0dfb9ed2"/><file name="InvalidArgumentException.php" hash="7d2f0bd1583524d739fff12f0507de65"/><file name="LogLevel.php" hash="19ab55cc711ed2f3ab2ec72e7f0600cb"/><file name="LoggerAwareInterface.php" hash="3ba5ffac8108e1da7657b1fad8651900"/><file name="LoggerAwareTrait.php" hash="5b3adf6c4f09c61d7488b0f9ac2c696a"/><file name="LoggerInterface.php" hash="023885df6a26d8137d5a13da51f066d2"/><file name="LoggerTrait.php" hash="1cb8db6d0b81cf85f81b6c7c09db7a9a"/><file name="NullLogger.php" hash="e71559fea0239b7441d221f8c7beae5b"/></dir></dir></dir><dir name="skin"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="css"><dir name="esendex"><file name="sms.css" hash="c112ae08b26c5d4ac62cbc3bff79fc1d"/><file name="system.css" hash="25e4fc16f4a90a97a1ee950df5d639e4"/></dir></dir><dir name="images"><dir name="esendex"><file name="autoresponders.png" hash="2596e132c5a3958025a7d032a76dc7ac"/><file name="bulksend.png" hash="b27271eb31fcd1aa1f0ff734b4477cdf"/><file name="buy.png" hash="29f9d41a1b3dd5c18860cd83d49e969a"/><file name="downloadsentitems.png" hash="ba3948d474819abf6a3f5a30fa406203"/><file name="esendex-logo.png" hash="d85a0c17585d465af6796e55fd25cafd"/><file name="help.png" hash="8d43d3751cdd87633ab18058e4111515"/></dir></dir><dir name="js"><dir name="esendex"><dir name="sms"><file name="edit.js" hash="cc0041fc5d0d25c89c889118264f6c65"/></dir></dir></dir></dir></dir></dir></dir></target></contents></package>
|
skin/adminhtml/default/default/css/esendex/sms.css
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#available-variables-container {
|
2 |
+
height: 160px;
|
3 |
+
overflow-y: auto;
|
4 |
+
overflow-x: hidden;
|
5 |
+
border: 1px solid #d6d6d6;
|
6 |
+
padding-left: 10px;
|
7 |
+
width: 260px;
|
8 |
+
}
|
9 |
+
|
10 |
+
.hidden {
|
11 |
+
display: none;
|
12 |
+
}
|
13 |
+
|
14 |
+
.validation-advice {
|
15 |
+
clear: both;
|
16 |
+
min-height: 15px;
|
17 |
+
margin: 3px 0 0 9px;
|
18 |
+
background: url(../../images/validation_advice_bg.gif) no-repeat 2px 1px;
|
19 |
+
margin-left: 0px;
|
20 |
+
font-size: .95em;
|
21 |
+
font-weight: bold;
|
22 |
+
line-height: 1.25em;
|
23 |
+
width: 265px;
|
24 |
+
}
|
25 |
+
|
26 |
+
#reset-template {
|
27 |
+
margin-bottom: 8px;
|
28 |
+
}
|
29 |
+
|
30 |
+
#variable-help-link {
|
31 |
+
margin-top: 6px;
|
32 |
+
}
|
skin/adminhtml/default/default/css/esendex/system.css
ADDED
@@ -0,0 +1,132 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
.esendex_container ol,
|
3 |
+
.esendex_container ul {
|
4 |
+
list-style: none;
|
5 |
+
}
|
6 |
+
.esendex_container blockquote,
|
7 |
+
.esendex_container q {
|
8 |
+
quotes: none;
|
9 |
+
}
|
10 |
+
.esendex_container blockquote:before,
|
11 |
+
.esendex_container blockquote:after,
|
12 |
+
.esendex_container q:before,
|
13 |
+
.esendex_container q:after {
|
14 |
+
content: '';
|
15 |
+
content: none;
|
16 |
+
}
|
17 |
+
.esendex_container table {
|
18 |
+
border-collapse: collapse;
|
19 |
+
border-spacing: 0;
|
20 |
+
|
21 |
+
}
|
22 |
+
.esendex_container td {
|
23 |
+
vertical-align:middle;
|
24 |
+
}
|
25 |
+
|
26 |
+
.esendex_container .cf:before,
|
27 |
+
.esendex_container .cf:after {
|
28 |
+
content: " "; /* 1 */
|
29 |
+
display: table; /* 2 */
|
30 |
+
}
|
31 |
+
|
32 |
+
.esendex_container .cf:after {
|
33 |
+
clear: both;
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* For IE 6/7 only
|
38 |
+
* Include this rule to trigger hasLayout and contain floats.
|
39 |
+
*/
|
40 |
+
.esendex_container .cf {
|
41 |
+
*zoom: 1;
|
42 |
+
}
|
43 |
+
|
44 |
+
/**********/
|
45 |
+
|
46 |
+
.esendex_container {
|
47 |
+
box-sizing: border-box;
|
48 |
+
padding: 1%;
|
49 |
+
font-family: "Arial", sans-serif;
|
50 |
+
font-size: 16px;
|
51 |
+
color: #686868 ;
|
52 |
+
}
|
53 |
+
|
54 |
+
.esendex_container .account-details-labels {
|
55 |
+
float: right;
|
56 |
+
text-align: right;
|
57 |
+
padding-right: 0.5em;
|
58 |
+
}
|
59 |
+
.account-details-data {
|
60 |
+
float: right;
|
61 |
+
text-align: left;
|
62 |
+
}
|
63 |
+
|
64 |
+
.cta-box {
|
65 |
+
float: left;
|
66 |
+
box-sizing: border-box;
|
67 |
+
width: 19.2%;
|
68 |
+
min-width: 150px;
|
69 |
+
min-height: 63px;
|
70 |
+
padding: 1%;
|
71 |
+
margin-right: 1%;
|
72 |
+
margin-bottom: 1%;
|
73 |
+
background-color: #f9f9f9 ;
|
74 |
+
border: 1px solid #e1e1e1 ;
|
75 |
+
text-align: center;
|
76 |
+
vertical-align:middle;
|
77 |
+
}
|
78 |
+
|
79 |
+
.cta-box:hover {
|
80 |
+
background-color: #f1f1f1;
|
81 |
+
|
82 |
+
}
|
83 |
+
|
84 |
+
.cta-box-last {
|
85 |
+
margin-right: 0;
|
86 |
+
}
|
87 |
+
|
88 |
+
.button-image {
|
89 |
+
padding: .5em ;
|
90 |
+
text-align: center;
|
91 |
+
vertical-align:middle;
|
92 |
+
}
|
93 |
+
|
94 |
+
.esendex_container .button-text {
|
95 |
+
padding: .5em ;
|
96 |
+
text-align: center;
|
97 |
+
vertical-align:middle;
|
98 |
+
}
|
99 |
+
|
100 |
+
|
101 |
+
.esendex_container p {
|
102 |
+
font-size: 1em;
|
103 |
+
line-height: 1.3125em;
|
104 |
+
}
|
105 |
+
|
106 |
+
.esendex_container p.credit-reminder {
|
107 |
+
font-size: 1.25em;
|
108 |
+
font-weight: bold;
|
109 |
+
}
|
110 |
+
|
111 |
+
.esendex_container p.subheading {
|
112 |
+
font-size: 0.875em;
|
113 |
+
}
|
114 |
+
|
115 |
+
.esendex_container .bold-text {
|
116 |
+
font-weight: bold;
|
117 |
+
}
|
118 |
+
|
119 |
+
.esendex_container a {
|
120 |
+
font-size: 1em;
|
121 |
+
color: inherit;
|
122 |
+
text-decoration: underline;
|
123 |
+
}
|
124 |
+
|
125 |
+
.esendex_container a:hover {
|
126 |
+
color: #999 ;
|
127 |
+
}
|
128 |
+
|
129 |
+
.esendex_container img.esendex_logo {
|
130 |
+
float: left;
|
131 |
+
margin-bottom: 2em;
|
132 |
+
}
|
skin/adminhtml/default/default/images/esendex/autoresponders.png
ADDED
Binary file
|
skin/adminhtml/default/default/images/esendex/bulksend.png
ADDED
Binary file
|
skin/adminhtml/default/default/images/esendex/buy.png
ADDED
Binary file
|
skin/adminhtml/default/default/images/esendex/downloadsentitems.png
ADDED
Binary file
|
skin/adminhtml/default/default/images/esendex/esendex-logo.png
ADDED
Binary file
|
skin/adminhtml/default/default/images/esendex/help.png
ADDED
Binary file
|
skin/adminhtml/default/default/js/esendex/sms/edit.js
ADDED
@@ -0,0 +1,188 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var TriggerForm = Class.create({
|
2 |
+
initialize : function() {
|
3 |
+
|
4 |
+
var defaultMessage = $("default-message-template");
|
5 |
+
if (null === defaultMessage) {
|
6 |
+
//this will be undefined on stage1 of the form
|
7 |
+
return;
|
8 |
+
}
|
9 |
+
|
10 |
+
if (defaultMessage.innerHTML !== "") {
|
11 |
+
var defaultButton =
|
12 |
+
'<div class="reset-tmpl-btn-container"><button id="reset-template" type="button"' +
|
13 |
+
'class="scalable">' + Translator.translate('Reset to Default Message') + '</button></div>';
|
14 |
+
|
15 |
+
var availableVariables = $("available-variables-container");
|
16 |
+
availableVariables.setStyle({
|
17 |
+
height: '118px'
|
18 |
+
});
|
19 |
+
|
20 |
+
availableVariables.previous().setStyle({
|
21 |
+
'padding-top': '14px'
|
22 |
+
});
|
23 |
+
|
24 |
+
var parent = availableVariables.up();
|
25 |
+
parent.update(defaultButton + parent.innerHTML);
|
26 |
+
|
27 |
+
var triggerMessage = $("trigger_message_template");
|
28 |
+
Event.observe("reset-template", 'click', function(e) {
|
29 |
+
triggerMessage.setValue(defaultMessage.innerHTML);
|
30 |
+
this.updateMessageTotals($("trigger_message_template").value);
|
31 |
+
}.bind(this));
|
32 |
+
}
|
33 |
+
|
34 |
+
this.updateMessageTotals($("trigger_message_template").value);
|
35 |
+
Event.observe("trigger_message_template", 'keyup', function(e) {
|
36 |
+
this.updateMessageTotals(e.target.value);
|
37 |
+
}.bind(this));
|
38 |
+
},
|
39 |
+
|
40 |
+
updateMessageTotals: function(message) {
|
41 |
+
var counter = $("message-counter");
|
42 |
+
if (counter === null) {
|
43 |
+
counter = '<div id="message-counter"></div>';
|
44 |
+
var triggerMessage = $("trigger_message_template");
|
45 |
+
triggerMessage.insert({after: counter});
|
46 |
+
counter = $("message-counter");
|
47 |
+
}
|
48 |
+
|
49 |
+
//strip out variables
|
50 |
+
message = message.replace(/\$[a-zA-Z]+[a-zA-Z\d_]*\$/ig, '');
|
51 |
+
|
52 |
+
var smsStats = new SMSMessageStatistics(message);
|
53 |
+
var totals = smsStats.getCharacterCount() + " "
|
54 |
+
+ Translator.translate('characters') + " / "
|
55 |
+
+ smsStats.getMessagePartCount() + " "
|
56 |
+
+ Translator.translate('SMS parts');
|
57 |
+
|
58 |
+
//call Magento's form validator to validate the particular element
|
59 |
+
//but only for the validate-message-count test
|
60 |
+
Validation.test('validate-message-count', $('trigger_message_template'));
|
61 |
+
|
62 |
+
totals = '<p class="not-no-bg"><small>' + totals + '</small></div>';
|
63 |
+
counter.update(totals);
|
64 |
+
},
|
65 |
+
|
66 |
+
removeSuccessMessages: function() {
|
67 |
+
//delete old saved success message, in-case validation failed
|
68 |
+
$$('ul.messages > li.success-msg').each(function(element) {
|
69 |
+
element.remove();
|
70 |
+
});
|
71 |
+
},
|
72 |
+
|
73 |
+
submit: function() {
|
74 |
+
this.removeSuccessMessages();
|
75 |
+
editForm.submit();
|
76 |
+
},
|
77 |
+
|
78 |
+
submitAndContinue: function() {
|
79 |
+
this.removeSuccessMessages();
|
80 |
+
saveAndContinueEdit();
|
81 |
+
}
|
82 |
+
});
|
83 |
+
|
84 |
+
Validation.add('validate-sender-format', 'The Sender ID must be between 1 and 11 characters when it contains letters, numbers, spaces and special characters (* $ ? ! ” # % & _ - , . @ \' +), or between 5 and 20 when it contains just numbers.', function(v) {
|
85 |
+
if (v.match(/^\d+$/)) {
|
86 |
+
return v.match(/^\d{5,20}$/);
|
87 |
+
}
|
88 |
+
return v.match(/^[A-Za-z\d\*\$\?!"#%&_\-,\.@'\+\s]{1,11}$/);
|
89 |
+
});
|
90 |
+
|
91 |
+
Validation.add('validate-message-count', 'Message must be between 1 and 612 characters', function(v) {
|
92 |
+
//strip out variables
|
93 |
+
v = v.replace(/\$[a-zA-Z]+[a-zA-Z\d_]*\$/ig, '');
|
94 |
+
var smsStats = new SMSMessageStatistics(v);
|
95 |
+
return smsStats.getCharacterCount() <= smsStats.maximumCharacterCount;
|
96 |
+
});
|
97 |
+
|
98 |
+
/**
|
99 |
+
* Validate whether there are variables used which are not available
|
100 |
+
*/
|
101 |
+
Validation.add('validate-variables', 'Message contains variables which are not available', function(v) {
|
102 |
+
var availableVariablesLi = $("available-variables").childElements();
|
103 |
+
var availableVariables = [];
|
104 |
+
|
105 |
+
for (var i = 0; i < availableVariablesLi.length; i++) {
|
106 |
+
var textContent = availableVariablesLi[i].textContent || availableVariablesLi[i].innerText;
|
107 |
+
availableVariables.push(textContent);
|
108 |
+
}
|
109 |
+
|
110 |
+
var variables = v.match(/\$[a-zA-Z]+[a-zA-Z\d_]*\$/ig);
|
111 |
+
|
112 |
+
if (null === variables) {
|
113 |
+
//no variables were used
|
114 |
+
return true;
|
115 |
+
}
|
116 |
+
|
117 |
+
for (var i = 0; i < variables.length; i++) {
|
118 |
+
variables[i] = variables[i].toUpperCase();
|
119 |
+
}
|
120 |
+
|
121 |
+
var notAvailableVariables = variables.filter(function(variable) {
|
122 |
+
return availableVariables.indexOf(variable) === -1;
|
123 |
+
});
|
124 |
+
|
125 |
+
return notAvailableVariables.length === 0;
|
126 |
+
});
|
127 |
+
|
128 |
+
var SMSMessageStatistics = function (messageText, onMessageTruncated) {
|
129 |
+
this.messageText = messageText;
|
130 |
+
this.messageTruncatedCallback = onMessageTruncated;
|
131 |
+
this.maximumCharacterCount = 612;
|
132 |
+
};
|
133 |
+
|
134 |
+
SMSMessageStatistics.prototype = {
|
135 |
+
getCharacterCount: function () {
|
136 |
+
var getExtendedCharacterCount = function (messageText) {
|
137 |
+
var extendedCharacterList = '^{}\\[]~|\u20AC';
|
138 |
+
var extendedCharacters = 0;
|
139 |
+
|
140 |
+
for (var i = 0; i < messageText.length; i++) {
|
141 |
+
if (extendedCharacterList.indexOf(messageText.charAt(i)) > -1) {
|
142 |
+
extendedCharacters++;
|
143 |
+
}
|
144 |
+
}
|
145 |
+
return extendedCharacters;
|
146 |
+
};
|
147 |
+
|
148 |
+
var trimEnd = function(messageText) {
|
149 |
+
return messageText.replace(/\s+$/g, '');
|
150 |
+
};
|
151 |
+
|
152 |
+
var inputText = trimEnd(this.messageText.replace(/\r\n/g, '\n'));
|
153 |
+
var extendedCharacterCount = getExtendedCharacterCount(inputText);
|
154 |
+
var characterCount = inputText.length + extendedCharacterCount;
|
155 |
+
|
156 |
+
if (this.messageTruncatedCallback) {
|
157 |
+
var characterLimit = this.maximumCharacterCount - extendedCharacterCount;
|
158 |
+
if (characterCount > this.maximumCharacterCount) {
|
159 |
+
inputText = trimEnd(this.messageText.substring(0, characterLimit));
|
160 |
+
|
161 |
+
this.messageTruncatedCallback(inputText);
|
162 |
+
|
163 |
+
extendedCharacterCount = getExtendedCharacterCount(inputText);
|
164 |
+
characterCount = inputText.length + extendedCharacterCount;
|
165 |
+
}
|
166 |
+
}
|
167 |
+
|
168 |
+
return characterCount;
|
169 |
+
},
|
170 |
+
getMessagePartCount: function () {
|
171 |
+
var characterCount = this.getCharacterCount();
|
172 |
+
var messagePartsCount = 1;
|
173 |
+
|
174 |
+
if (characterCount >= 161 && characterCount <= 306) {
|
175 |
+
messagePartsCount = 2;
|
176 |
+
} else if (characterCount >= 307 && characterCount <= 459) {
|
177 |
+
messagePartsCount = 3;
|
178 |
+
} else if (characterCount >= 460) {
|
179 |
+
messagePartsCount = 4;
|
180 |
+
}
|
181 |
+
|
182 |
+
return messagePartsCount;
|
183 |
+
},
|
184 |
+
getCreditCount: function (recipientsCount) {
|
185 |
+
return this.getMessagePartCount() * recipientsCount;
|
186 |
+
}
|
187 |
+
};
|
188 |
+
|