| 1 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,212 +0,0 @@ |
| 1 |
-======= CHANGELOG ======= |
|
| 2 |
- |
|
| 3 |
-Versions: |
|
| 4 |
- |
|
| 5 |
-== 1.0.0 - 2022-1-27 == |
|
| 6 |
-* Initial release. |
|
| 7 |
- |
|
| 8 |
-== 1.0.1 - 2022-3-31 == |
|
| 9 |
-* Changed presentation text. |
|
| 10 |
- |
|
| 11 |
-== 1.0.2 - 2022-4-13 == |
|
| 12 |
-* Changed application controller class, to respect custom path of 'datadirectory'. |
|
| 13 |
-* Fixed filters row arrow not showing up when using Apache. |
|
| 14 |
-* Added the 'Contributors.txt' file. |
|
| 15 |
- |
|
| 16 |
-== 1.0.3 - 2022-4-15 == |
|
| 17 |
-* Changed the way the app gets the timezone. |
|
| 18 |
- |
|
| 19 |
-== 1.0.4 - 2022-5-7 == |
|
| 20 |
-* Changed the data type of the 'message' column in the 'sms_relent_sent' and 'sms_relent_received' tables. |
|
| 21 |
- |
|
| 22 |
-== 1.0.5 - 2022-5-9 == |
|
| 23 |
-* Changed string length for 'message' column in 'sms_relent_sent' and 'sms_relent_received' tables. |
|
| 24 |
-* Changed syntax of SQL queries and of encryption function. |
|
| 25 |
-* Changed structure of webhook URLs in case Nextcloud is served on a subdirectory. |
|
| 26 |
- |
|
| 27 |
-== 1.0.6 - 2022-8-13 == |
|
| 28 |
-* Added support for Twilio. |
|
| 29 |
-* Added support for new lines in messages and email notifications. |
|
| 30 |
-* Solved column width issue in sent/received SMS tables. |
|
| 31 |
-* Minor explanatory text changes. |
|
| 32 |
- |
|
| 33 |
-== 1.0.7 - 2022-8-16 == |
|
| 34 |
-* Solved bug related to receiving messages on Twilio number when it's not associated with any Messaging Service. |
|
| 35 |
-* Changed css properties for Network column. |
|
| 36 |
- |
|
| 37 |
-== 1.0.8 - 2022-8-23 == |
|
| 38 |
-* Added support for Flowroute. |
|
| 39 |
-* Added automatic scrolling to bottom of received/sent messages table when clicking on 'Received/Sent SMS Messages' button. |
|
| 40 |
-* Added scroll bar to info pop-up notes. |
|
| 41 |
- |
|
| 42 |
-== 1.0.9 - 2022-9-3 == |
|
| 43 |
-* Added support for MMS. |
|
| 44 |
-* Minor CSS improvements. |
|
| 45 |
-* Small changes to explanatory text. |
|
| 46 |
- |
|
| 47 |
-== 1.1.0 - 2022-9-5 == |
|
| 48 |
-* Solved issue with previewing images picked from Nextcloud. |
|
| 49 |
-* Text changes to README.md. |
|
| 50 |
- |
|
| 51 |
-== 1.1.1 - 2022-9-9 == |
|
| 52 |
-* Changed signature verification process for Twilio. |
|
| 53 |
-* Removed Alphanumeric Sender ID for Flowroute, since it's not supported. |
|
| 54 |
-* Minor text changes on presentation page and settings page. |
|
| 55 |
- |
|
| 56 |
-== 1.1.2 - 2022-10-27 == |
|
| 57 |
-* Changed CSS settings to match the modifications introduced in Nextcloud 25. |
|
| 58 |
- |
|
| 59 |
-== 1.1.3 - 2022-12-1 == |
|
| 60 |
-* Fixed SQL error that appeared in fresh installations. |
|
| 61 |
-* Added support for dark themes. |
|
| 62 |
-* Updated explanatory text for Telnyx on the Settings page. |
|
| 63 |
- |
|
| 64 |
-== 1.1.4 - 2022-12-2 == |
|
| 65 |
-* Changed migration files to prevent installation errors. |
|
| 66 |
-* Modified 3 svg files converting text objects to paths. |
|
| 67 |
- |
|
| 68 |
-== 1.1.5 - 2023-2-28 == |
|
| 69 |
-* Fixed issue related to Twilio message signing. |
|
| 70 |
-* Updated message pricing information in app description. |
|
| 71 |
- |
|
| 72 |
-== 1.1.6 - 2023-5-8 == |
|
| 73 |
-* Implemented showing display names of message authors before their messages. |
|
| 74 |
-* Added checkbox to enable/disable prepending display names before messages. |
|
| 75 |
-* Custom display names can be now saved for external phone numbers. |
|
| 76 |
-* Restrictions for groups or users can be placed on phone numbers by admins. |
|
| 77 |
-* Admins can see just their own messages or all the messages in their message tables. |
|
| 78 |
-* Auto-replies with 'daily mode' and 'vacation mode' can be configured for any controlled phone number. |
|
| 79 |
-* Added a new message table that lists all the messages grouped by phone numbers. |
|
| 80 |
-* Added the ability to see all the messages sent/received to/from a phone number, by clicking on |
|
| 81 |
- a button located below the number, in the 'Received SMS Messages' and 'Sent SMS Messages' tables |
|
| 82 |
- |
|
| 83 |
-== 1.1.7 - 2023-5-9 == |
|
| 84 |
-* Fixed bug related to not being able to see messages in pop-up windows and on grouped messages table. |
|
| 85 |
- |
|
| 86 |
-== 1.1.8 - 2023-5-9 == |
|
| 87 |
-* Fixed migration issue bug. |
|
| 88 |
- |
|
| 89 |
-== 1.1.9 - 2023-5-9 == |
|
| 90 |
-* Made the app available to upgrade to for Nextcloud 26. |
|
| 91 |
- |
|
| 92 |
-== 1.2.0 - 2023-5-20 == |
|
| 93 |
-* Fixed auto-reply bug. |
|
| 94 |
-* Moved the API keys and alphanumeric sender ID fields from the Personal settings page to the Admin |
|
| 95 |
- settings page. |
|
| 96 |
-* Available phone numbers are loaded automatically when the app's icon is clicked. |
|
| 97 |
-* When only one phone number is available, it is selected automatically in the 'Set ID' field. |
|
| 98 |
-* Admins can share their API keys with other non-admins. |
|
| 99 |
-* Admins can see only their messages and the messages of the non-admins whith whom they share their API |
|
| 100 |
- keys. Non-admins can see only their messages. |
|
| 101 |
-* Added pop-up window that shows the messages exchanged between 2 phone numbers and allows sending replies. |
|
| 102 |
- |
|
| 103 |
-== 1.2.1 - 2023-5-23 == |
|
| 104 |
-* Allowed non-admin users to see incoming messages received on the phone numbers they are restricted to. |
|
| 105 |
-* Customized confirm pop-up windows. |
|
| 106 |
- |
|
| 107 |
-== 1.2.2 - 2023-5-24 == |
|
| 108 |
-* Changed how non-admins view sent messages. |
|
| 109 |
- |
|
| 110 |
-== 1.2.3 - 2023-5-24 == |
|
| 111 |
-* Fixed 'Load more messages' bug. |
|
| 112 |
-* Changed the way the display name is searched for and added to old messages, during app upgrade. |
|
| 113 |
- |
|
| 114 |
-== 1.2.4 - 2023-5-30 == |
|
| 115 |
-* Fixed MMS files domain problem. |
|
| 116 |
-* Made MMS URLs clickable. |
|
| 117 |
-* Added refresh button for messages in pop-up windows. |
|
| 118 |
- |
|
| 119 |
-== 1.2.5 - 2023-6-3 == |
|
| 120 |
-* Fixed incoming MMS issue. |
|
| 121 |
-* Added checkbox on Settings page to allow users to include their display names in the text |
|
| 122 |
- of the message itself. |
|
| 123 |
- |
|
| 124 |
-== 1.2.6 - 2023-6-22 == |
|
| 125 |
-* Fixed messages display issue for non-admins. |
|
| 126 |
-* Fixed how non-admins are able to see the messages sent/received from/to the numbers that are |
|
| 127 |
- shared with them but not restricted to them. |
|
| 128 |
- |
|
| 129 |
-== 1.2.7 - 2023-7-15 == |
|
| 130 |
-* Fixed alert messages issue. |
|
| 131 |
-* Fixed text color for dark themes. |
|
| 132 |
-* Added 'full-day' exception to auto-reply. |
|
| 133 |
-* Added auto-refresh button on received/sent messages pages. |
|
| 134 |
- |
|
| 135 |
-== 1.2.8 - 2023-10-30 == |
|
| 136 |
-* Changed main screenshot and modified presentation text. |
|
| 137 |
-* Changed text on Settings page. |
|
| 138 |
-* Marked the app as compatible with Nextcloud 27. |
|
| 139 |
- |
|
| 140 |
-== 1.2.9 - 2023-11-1 == |
|
| 141 |
-* Changed how the app sends notifications for incoming messages. |
|
| 142 |
- |
|
| 143 |
-== 1.3.0 - 2023-11-3 == |
|
| 144 |
-* Changed notifications mechanism so that non-admin users receive notifications |
|
| 145 |
- for messages received on phone numbers shared with them. |
|
| 146 |
-* Fixed bug related to listing received messages for non-admin users. |
|
| 147 |
-* Minor text modifications on the settings pages. |
|
| 148 |
- |
|
| 149 |
-== 1.3.1 - 2023-11-6 == |
|
| 150 |
-* Simplified some complex prepared SQL queries. |
|
| 151 |
- |
|
| 152 |
-== 1.3.2 - 2023-12-18 == |
|
| 153 |
-* Replaced default fonts with 2 free and open source fonts ('Open Sans' and 'Inter'),
|
|
| 154 |
- included in the 'fonts' directory. |
|
| 155 |
-* Fixed minor CSS issues. |
|
| 156 |
- |
|
| 157 |
-== 1.3.3 - 2024-2-15 == |
|
| 158 |
-* Implemented auto-refresh of the received messages table, when new messages arrive. |
|
| 159 |
-* Fixed bug related to listing received messages, for non-admins. |
|
| 160 |
-* Removed the 'Start auto refresh' button on pop-up windows. |
|
| 161 |
-* Made the app completely functional when installed in a custom 'apps' directory. |
|
| 162 |
- |
|
| 163 |
-== 1.3.4 - 2024-4-2 == |
|
| 164 |
-* Removed the right of non-admin users to delete sent/received messages. |
|
| 165 |
-* Added the 'Conversations' page, to list the messages exchanged between pairs of numbers and allow tagging, flagging and archiving conversations. |
|
| 166 |
-* Improved mobile compatibility. |
|
| 167 |
-* Changed the presentation text. |
|
| 168 |
- |
|
| 169 |
-== 1.3.5 - 2024-4-20 == |
|
| 170 |
-* Added checkboxes to allow admins to give non-admins permission to delete messages |
|
| 171 |
- sent from or received on phone numbers shared with them. |
|
| 172 |
-* Fixed bug related to removing deleted messages from the conversations list. |
|
| 173 |
- |
|
| 174 |
-== 1.3.6 - 2024-5-2 == |
|
| 175 |
-* Changed the way non-admins retrieve the credentials shared with them by the admins to solve message sending issue. |
|
| 176 |
-* Made minor CSS changes. |
|
| 177 |
-* Marked the app as compatible with Nextcloud 29. |
|
| 178 |
- |
|
| 179 |
-== 1.3.7 - 2024-5-3 == |
|
| 180 |
-* Fixed auto-reply bug. |
|
| 181 |
- |
|
| 182 |
-== 1.3.8 - 2024-10-09 == |
|
| 183 |
-* Fixed warning related to absolute path of notification icon. |
|
| 184 |
-* Made minor CSS changes. |
|
| 185 |
-* Marked the app as compatible with Nextcloud 30. |
|
| 186 |
- |
|
| 187 |
-== 1.3.9 - 2024-10-09 == |
|
| 188 |
-* Fixed headings in 'appinfo/info.xml'. |
|
| 189 |
- |
|
| 190 |
-== 1.4.0 - 2025-01-08 == |
|
| 191 |
-* Fixed auto-reply bug related to server timezone. |
|
| 192 |
- |
|
| 193 |
-== 1.4.1 - 2025-01-31 == |
|
| 194 |
-* Fixed saving settings as regular user. |
|
| 195 |
-* Fixed sending messages as regular user. |
|
| 196 |
- |
|
| 197 |
-== 1.4.2 - 2025-03-06 == |
|
| 198 |
-* Added a 'User Activity' table to display how many messages a user has sent over a time period. |
|
| 199 |
-* Verfied compatibility with Nextcloud 31 and marked the app as compatible. |
|
| 200 |
- |
|
| 201 |
-== 1.4.3 - 2025-09-22 == |
|
| 202 |
-* Fixed a security vulnerability. |
|
| 203 |
-* Made minor CSS changes. |
|
| 204 |
- |
|
| 205 |
-== 1.4.4 - 2025-11-05 == |
|
| 206 |
-* Updated Plivo PHP library to fix guzzlehttp/psr7 related errors. |
|
| 207 |
-* Verfied compatibility with Nextcloud 32 and marked the app as compatible. |
|
| 208 |
- |
|
| 209 |
-== 1.4.5 - 2026-01-23 == |
|
| 210 |
-* Changed methods used in file manipulation. |
|
| 211 |
-* Fixed 'string instead of array' bug. |
|
| 212 |
-* Verfied compatibility with Nextcloud 33 and marked the app as compatible. |
| 213 | 0 |
deleted file mode 100644 |
| ... | ... |
@@ -1,101 +0,0 @@ |
| 1 |
-<?xml version="1.0"?> |
|
| 2 |
-<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" |
|
| 3 |
- xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd"> |
|
| 4 |
- <id>sms_relentless</id> |
|
| 5 |
- <name>SMS Relentless</name> |
|
| 6 |
- <summary>Send and receive SMS in Nextcloud</summary> |
|
| 7 |
- <description>< |
|
| 52 |
- |
|
| 53 |
-### Donations |
|
| 54 |
- |
|
| 55 |
-* 🎁 [Donate](https://www.doublebastion.com/donations/) |
|
| 56 |
- |
|
| 57 |
- ]]></description> |
|
| 58 |
- <version>1.4.5</version> |
|
| 59 |
- <licence>AGPL</licence> |
|
| 60 |
- <author homepage="https://www.doublebastion.com">Double Bastion LLC</author> |
|
| 61 |
- <namespace>SMSRelentless</namespace> |
|
| 62 |
- <documentation> |
|
| 63 |
- <admin>https://www.doublebastion.com/install-nextcloud/#install-sms-relentless</admin> |
|
| 64 |
- </documentation> |
|
| 65 |
- <category>office</category> |
|
| 66 |
- <category>organization</category> |
|
| 67 |
- |
|
| 68 |
- <website>https://www.doublebastion.com/sms-relentless/</website> |
|
| 69 |
- <bugs>https://git.doublebastion.com/sms-relentless/issues/develop</bugs> |
|
| 70 |
- <repository>https://git.doublebastion.com/sms-relentless/develop/</repository> |
|
| 71 |
- |
|
| 72 |
- <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_sent_messages.png</screenshot> |
|
| 73 |
- <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_received_messages.png</screenshot> |
|
| 74 |
- <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/active_archived_conversations.png</screenshot> |
|
| 75 |
- <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_grouped_by_number.png</screenshot> |
|
| 76 |
- <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_exchanged_messages_popup.png</screenshot> |
|
| 77 |
- <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_send_mms.png</screenshot> |
|
| 78 |
- <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/sms_relentless_on_mobile.png</screenshot> |
|
| 79 |
- <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/received_messages_on_mobile.png</screenshot> |
|
| 80 |
- <screenshot>https://git.doublebastion.com/sms-relentless/raw/develop/img/reply_to_message_on_mobile.png</screenshot> |
|
| 81 |
- |
|
| 82 |
- <dependencies> |
|
| 83 |
- <nextcloud min-version="26" max-version="33" /> |
|
| 84 |
- </dependencies> |
|
| 85 |
- |
|
| 86 |
- <navigations> |
|
| 87 |
- <navigation> |
|
| 88 |
- <name>SMS Relentless</name> |
|
| 89 |
- <route>sms_relentless.page.index</route> |
|
| 90 |
- <order>102</order> |
|
| 91 |
- <icon>sms_relentless.svg</icon> |
|
| 92 |
- </navigation> |
|
| 93 |
- </navigations> |
|
| 94 |
- |
|
| 95 |
- <settings> |
|
| 96 |
- <personal>OCA\SMSRelentless\Settings\Personal</personal> |
|
| 97 |
- <personal-section>OCA\SMSRelentless\Settings\PersonalSection</personal-section> |
|
| 98 |
- <admin>OCA\SMSRelentless\Settings\Admin</admin> |
|
| 99 |
- <admin-section>OCA\SMSRelentless\Settings\AdminSection</admin-section> |
|
| 100 |
- </settings> |
|
| 101 |
-</info> |
| 102 | 0 |
deleted file mode 100644 |
| ... | ... |
@@ -1,1085 +0,0 @@ |
| 1 |
-{
|
|
| 2 |
- "hashes": {
|
|
| 3 |
- "CHANGELOG.txt": "ff4d525e7160e92702a5982ea6303be52fd5438731dc20615e3e8bde699dc08be1873c31fd2dd2fe883117d73edda04c6950d85dfc4d7ed8ee514b265ab5f3a0", |
|
| 4 |
- "COPYING.txt": "a0a86214ea153fb07ff35ceec0848dd1703eae22de036a825efc8394e50f65e3044832f3b49cf7e45a39edc470bdf738abc36a3a78ca7df3a6e73c14eaef94a8", |
|
| 5 |
- "Contributors.txt": "8ab4ea9b8c38e4d115af6ca08e8e27592198b763982bd166b67f38ee0b9f2b7e093cd58ce0927ae38ee3bc015b129add2ffeb3967288c804da493241bc67ba9b", |
|
| 6 |
- "README.md": "593e8b8ffd899357e54f1a4cc3d83b3e6b62fe123c298a59daf1a177b1623713b769a7ba2db01560009400ddc8599289cf1916ce9208db71d03ac52b8417b744", |
|
| 7 |
- "appinfo\/info.xml": "f64bfcaf94917de9a0a52a72b8066c9817dd8e139416eaa82772ec1c19beed8ea9c9e58542ba319f3970870e00de2b3cc0a21ea47975f4cd37d61f403356d7be", |
|
| 8 |
- "appinfo\/routes.php": "5f7da91636bba67f20b6c3922a3748e2faeb28c040a6d83f02e4284a4d97a96171536ad9d2f23a9968c1b5f3dcf4ad4f4105d288e331f244a96d464662d81eab", |
|
| 9 |
- "css\/style.css": "55338d07d4ef1ebd4d642d99b1b5ae9dee33d22cafb10b6256807ef2f87e1a4440aae5c0d3a32793f5fa2ba1f1de2eca366f39af7338b33d4dab799e5efba478", |
|
| 10 |
- "fonts\/Apache_License_v2.0_Open_Sans.txt": "fdae7ed259455ca9fa45939e7f25cbb4de29831cda16d9151de25a5f6e9d9be43b053f4fd3b896026239fca77abce04f543d591c501ecf4ce18c854bc0a51660", |
|
| 11 |
- "fonts\/Inter-Bold.woff": "f34ed611dc0ba6e7c0bf7242bad7c02e09f208bfbdd21d6649ebf9b41bc06696d8856707851944786c80c718df455e619caab170c70bfe97ba2043d651d4532e", |
|
| 12 |
- "fonts\/Inter-Bold.woff2": "736b4aaf8a2de0c17fbd5396a338577227326f078ee0646072d851d328b58a8058989af8735ac073f935b05f291d9310797d95c963e5e3ff0ea61a87f21c9da5", |
|
| 13 |
- "fonts\/Inter-BoldItalic.woff": "619e398d37249fae96ba0deb06fcf5dab215ba888740024287e2c8f1278b33273124cd5b9ea8f7525a17657566b72a1661b688ca670bc068ca6ddf466b7e7ffe", |
|
| 14 |
- "fonts\/Inter-BoldItalic.woff2": "a24bdb558a9b26fbe7631d6cf90b8db8f5f0164c3c814a2971fb7d45e807b0856454893bbd0d5bd0d9f060689f2be5f5bb1b69e4bdea0293d1122e13ad28e96f", |
|
| 15 |
- "fonts\/Inter-Italic.woff": "72defeb5040f6375683dba41d4ce43654fdbae4f64aea88b01feb023b3e894c278c8a8c7e5583b6d83d980495ca0d5afa5ec7e1bfcc731be08d3dbe1b8b3f348", |
|
| 16 |
- "fonts\/Inter-Italic.woff2": "b128da83c81fe4a28026dc0a2a75c7920f37d4e04d6d6bde4e60b3a9527dbff04ff0ebc8b300874db9bd90036a41a52f4c9d82eb2f78fb8e99a35bb04defa1c2", |
|
| 17 |
- "fonts\/Inter-Medium.woff": "1f7c25aeb1ed534a106254fdba6bf59dfa03542f813489dca31fe067e2a22ab9549babb48af4cd465ab3ef0ef2f4b0f46532efcc8aae8942ad2cf98d0a5a4a3f", |
|
| 18 |
- "fonts\/Inter-Medium.woff2": "ce94d1a0cea81d42546ebc0247403b02c6fae24d3afba618cf658436734557a8b2b8ebed54319a9f66b233bd224da3685f848470866de63a144c8c28070491d4", |
|
| 19 |
- "fonts\/Inter-MediumItalic.woff": "7b7bef9c7a7717c6d52d619059e5ec258b537f538ada38325c2c7bfa4968ff53109bc9ee17a57819ef37d0a145a973f4a7c8e4d8d09e71d3faa4d0fe14cbf487", |
|
| 20 |
- "fonts\/Inter-MediumItalic.woff2": "4a2c5dc8c2ece82489e63b16cd8b1536b8f5502cf8f93307b0c71c6d54594a28ec2a80b8e58dfbbcc1d38a51aa8dd6d6fa025aed2cdc1429a462745a2bf2d414", |
|
| 21 |
- "fonts\/Inter-Regular.woff": "e37409956d19653617af32af2f99f4038c815a3664f2dcb2fef5e6a1a7345c78aaac3badc2ae499b1423514076ad676ab4bd5d936ef9d159899a6f668d991e4c", |
|
| 22 |
- "fonts\/Inter-Regular.woff2": "731924aedf31d6ef8fcd57a3b74182331ec7ba743d64033d8912d350ba98fd5b1942decaa4268f4dc925be2ed711c71a77200b2497bec10cae499b452fb27138", |
|
| 23 |
- "fonts\/Inter-SemiBold.woff": "684602b1f45bf7a9ca5ea6b1aca2cc2046e07ac79eb63b920099463f25866f50cca77ca253f16078d3a6e781ca23b964a69c87389621fa101d5cfffdb292d132", |
|
| 24 |
- "fonts\/Inter-SemiBold.woff2": "12b7680eccc54f56f800ac3ea4eff0490f515911d0fc83f99f62fa0f72d848155c8a7186918301a372d0fd0238d8093109c7b9b3c05168058e3cb47b1f7216ae", |
|
| 25 |
- "fonts\/Inter-SemiBoldItalic.woff": "9623d9c91148b651b7d4a642751e4f9eaeda68b6f4c33355d0173e303252039b3bcd301556a1d8451ffbd36d7996c1e8fc5ca1276884636cf57468e38c9e442a", |
|
| 26 |
- "fonts\/Inter-SemiBoldItalic.woff2": "97b7d8ab268ebcbc00876bd69ca9cc7cf2ae9ba5a6a30c13e3412e41a88f1f5ed758a6d9abbab3a14359943a003b14307cbc379bb11505c014b002322fd53c6e", |
|
| 27 |
- "fonts\/SIL_Open_Font_License_v1.1_Inter.txt": "073e141d4e45a3adfd2cb569db6a4fd217b1721dd6aeab8159e36940b984df5ebdc345deb0eb6be65367f943e516a12dff41eb1238a322d248ca3478c50ef9b6", |
|
| 28 |
- "fonts\/opensans-bold.woff": "d094832745611e047ffa87fdb21bac41befabdb07aecade483d4dc5a5b97bad00f1d4a5dca2a615789cd494791f0ab4209be537eb4b1bc7cbee7c42eb5e201dc", |
|
| 29 |
- "fonts\/opensans-bold.woff2": "096abb618c9ce1a534f0198aeea53c6d1138000f98b883131ab49ee48b80b483af635f0196ac40a1c1bde679f63b3c3b907b8f9b0102a752862d623dd22393a5", |
|
| 30 |
- "fonts\/opensans-bolditalic.woff": "c80f105a10d37c812f5d1b29445cd21cbc95594f71d9c5fc1b3aeeb9985c5465ba017654f1453baefdc56cc27aa325b586d77323012073eb713ab8f88f08dab4", |
|
| 31 |
- "fonts\/opensans-bolditalic.woff2": "38b99ebf320264d74a456fe590fc610580b003bc77a39d97ff42dec41353a8f908d6f680b4777cdb34ed544d9b4ed20dce8c418317de1d721e25ab670f49fc1d", |
|
| 32 |
- "fonts\/opensans-extrabold.woff": "6636a395ba345853ada2237b8e1f81c52e54bfb65559cbcb8de143cac00232f20cf34c764c9c4d4b80e82dae79cba3064ebdf22999cce8839df2d5709ee64092", |
|
| 33 |
- "fonts\/opensans-extrabold.woff2": "758c90eb07c6db7e78cb703ea285f82b443ca2cfab792328a3f8c14acc1f932ae79ec2987b8b94bf19b3cc16fae31c76f3164c9437a2591283fb1592e40ec33d", |
|
| 34 |
- "fonts\/opensans-extrabolditalic.woff": "ab1966f1ab3bb436e489c2d6ee562cf22d05b6b8c9bbca17e903518311aa45659efc329255e08ab597e2b8effe3bda602a7fb56b7d0c1d872b69337537d49dff", |
|
| 35 |
- "fonts\/opensans-extrabolditalic.woff2": "2132d6309969f868521f2d788b991bc9bcf3239f1768db9a2b90faf8838c35efea85225b24db256f54c86d0a7915ecd50a7f5348e6ab040e0f172ba7510598cd", |
|
| 36 |
- "fonts\/opensans-italic.woff": "a9751e7ac7a3c3d9f739d1fe00730a545b68e4a6473beafee8edf583f175b34fd5e0b60a14ec3707c8691fdbebea17e191c51707f50a21281e76be46f55a1140", |
|
| 37 |
- "fonts\/opensans-italic.woff2": "7a80c01d34562e2fe248a71078ffa9413c04c9c320d27acb0bce96cc295101eb9e80a25e97dab3e67c184c40937862be820581441aa4100bd512a26ef2d523cf", |
|
| 38 |
- "fonts\/opensans-light.woff": "cca2c5d207e0935c1848e22965972cb6feea39aa93b1b546051cfabe5ab16e909934d007a7ccd174eda1e7671d838f477890dedcb93d68ba722eda39a16d0bb8", |
|
| 39 |
- "fonts\/opensans-light.woff2": "cdc332de1b13eb0f05cc9dd1ebc905fa5ce948eab71e2fdb1bc538ad54a0de980bf83352090becd650af9c101ec9a6898d2e4798e4fb777e41c20fae85fd568b", |
|
| 40 |
- "fonts\/opensans-lightitalic.woff": "26e7759869088d8abba380f0bb22bbb9fdf0a985c0999519390cbd85099e3f48864d866f4639a8ff1992e7c81c755b0bbf66f525d4d38a929067886e9b54eb88", |
|
| 41 |
- "fonts\/opensans-lightitalic.woff2": "b7f80b69abeca9d0369f5d46da192e98a6329cf1f948c897fb7130e0d815f73e293c37f0e6d0047273fe3f13a19e648d1bd06cfa2fac2142ec38ac244e7f0940", |
|
| 42 |
- "fonts\/opensans-regular.woff": "3a526ba177f8f16ad95941c185411f350fab7e5202b9f56ea9c5f972c62912781d66da10e278e065cc6748a4bc9ab9182d68b27eaf380131c602195148e4b8b4", |
|
| 43 |
- "fonts\/opensans-regular.woff2": "66b3e915b891f7b37b441ee18e40f01274fe19f2515470760e503f428fc1c524ccfbe832191978c2c5f6bc4b7ef46937e4f77f5457b6efbf878c97c054cb45f2", |
|
| 44 |
- "fonts\/opensans-semibold.woff": "173f703ab767d0fcff014dac2fa3dcac787ffd0eb39f0c532b6679935c0105daacfa6a32bca97de13e420e10194b701ad2487bfd35d28807563ebf0b16d0ca35", |
|
| 45 |
- "fonts\/opensans-semibold.woff2": "75068ba76befc2356fe83b198bf6da70e177e53cc3128af09d0d9f69dfe538013f2828b2363c6f533fcaca4d4b2a5ec5159b5eb6f288504ac73d33ac5d1d2c4d", |
|
| 46 |
- "fonts\/opensans-semibolditalic.woff": "9e1e965095991d4a12a0658fa22a116b043ce20fd5f73bb9655d870ae49c46170cec52827510be323332b535002eb96445f79c3d1e4dd0550ff622fda0465f1d", |
|
| 47 |
- "fonts\/opensans-semibolditalic.woff2": "d7e43f05802e26f4cb80ab6a492b01c398c5b41168c7f61356ca3ffc5f4fccabae5ba332956f0aecad69ccabb6b7526efbc0395552cc5d68e47bec00bc660ad7", |
|
| 48 |
- "img\/active.svg": "3ab8794185150eceb9d54b7cebb6e2a925fa1baa8c979336f4f7b033278b4c48f1a9f4edeb92c2dd633fd4b2bfd199ed6634ec5db5fe20bd59bdeecd6da74463", |
|
| 49 |
- "img\/active_archived_conversations.png": "7432aa1588a1e5a9ff0d087b9268f904ff4d372791ea17eaecf9850dda3ebf568fed67f369c3ced0ee430d22eb8aef1b488d56431e396712e5e2a6a34cb2ae65", |
|
| 50 |
- "img\/active_small.svg": "c9076edc03da508e2c9ed3744db125cd961fae8e12a152b0fd8b9de9ff9c94531f558e436c81a358dcc62a0e3f53e09c565eb949fe5e7781494ca463a5c426aa", |
|
| 51 |
- "img\/add.svg": "5711a740d20d8243b4fa9a52783689af96b3b01af6e422ec6a9f0aca16db068869a5a302e6960168d9c90e2dc0a69eed851d69e7f1bf33684304cf861f990604", |
|
| 52 |
- "img\/app-dark.svg": "cbe97fe9fe636790ea0b415035cd78321ff53ec93ab1276d4ef609555592fa13d09b2037c20e06bbb9024fcfcc0ebb806c89572b08adcfe4ee9d06c6466b685a", |
|
| 53 |
- "img\/app.svg": "010ad7cee20f3a256a24bee2482b6798f042a3992c7df5d56ba803cca93552c3cda2a68d1772e67143ce45207b89d397e34ba6909f6b8515134db64e2c5497eb", |
|
| 54 |
- "img\/archive.svg": "ec3fd9dfd0724a1ca352043be8d1bea5ed6de6ef74e72dbb8e852d9579a330a74f16423587fe22b4a515cc593e45bc598a5f9b0128650a6003d7ccfc88522be4", |
|
| 55 |
- "img\/archive_red.svg": "0e43899668cfd9ce3992e02c8a99a3d011b9c94bbff57ed2777305d58350e031aea33d71aaf4e48d879bd19c6a29d981fa7e37351d4f13d84aca4cef42ce419d", |
|
| 56 |
- "img\/archived.svg": "6fb344ce2d1927a0245379857d2069c3b22acb9645ccd4c7b2d159575298433bfeb2e91fb2cde4e3f8536f197b0baa885d8c1546fdffb7b1587dbc2ec1013add", |
|
| 57 |
- "img\/archived_small.svg": "70c8c0a692bce23a07416d8782a6fd8ed2a68d27dbc384d8488968c933743d9304df82ab5f4cfeb4748449c38874e5c3b8fc8ec325c1742451548e7697b85726", |
|
| 58 |
- "img\/arrow-top-small.svg": "3fba2fbf3a27f4d6b44d1c94da2260d025bbe682a3db18c21b9aa548f4878609770cdaa2e5c24e8b5cd97249647187b7499ab18bcd843ae7ee145def41561bbf", |
|
| 59 |
- "img\/arrow-top.svg": "d89358d5d6316e6298789bfaee21aad3a48468f3744888e32325da04e70be385a0f72b97f77e9bb3c80e5907a4c6721a1454b2958c7fd35f6739512a2f2c2b9b", |
|
| 60 |
- "img\/arrowDown.svg": "6fb30b189e848b26369238f7446eb1533327a4e99c70b699c10bb03088eeb7d47393f18d4f16bc03edb945f36cf13b96f05b763dba821c0b04b209cd81624103", |
|
| 61 |
- "img\/arrowDown_small.svg": "cb41e401624082681d60fe5a753fbb3de0d9934b9313ff2f683cbef349ec5e5dbe43f59f60d96f76bb2474517a2a98cc48e1391e8e10c382c85ec9b8d5b3ad03", |
|
| 62 |
- "img\/arrowUp.svg": "4f6a413d836635fd7e2e4d5846ee257c9a13e80624468e444ec906febfcf07a1c84f48d29cce730f29729cc8fbbbd3dab490e2192e5beb2707a6a4b1036bfd76", |
|
| 63 |
- "img\/arrowUp_small.svg": "817c225554678442d19f5bb75733ffff789a97a54313aeac543a3a5dfd90d59b79eeb8032190d2264c8a35a46ec9fa0e2c6ec22e28016fcbbc757fd2668a2c0c", |
|
| 64 |
- "img\/between.svg": "8e7f4309dde5c83b0ef55b72bdac1d5b9ac26b8cc13d134f13a1819a6d214ddada19937cdd2012aa210dc612c0953e3bbb266aa98a02fe55607a0bc028251ca7", |
|
| 65 |
- "img\/check.svg": "aff77744fbd4e8eef8d91fd9e128e9e8be2830a93db9ba8d8a8277e78c8610d6ea5ec9678b3dfd2b8f2b4f8970dc40c4111e7af5011b0873bf461f5fbdeeaa88", |
|
| 66 |
- "img\/clearfilters.svg": "dd92c6c434ebcef78659c8b1f2f80444e25c6977e3ba86f3490baf6d9fe98581901a5d5279f78912b0e7b6df434a552c51e7223015579e632ad88665104004a8", |
|
| 67 |
- "img\/clearfilters_small.svg": "ab3500542d45d66ccc2a7d852ab3fe25e942f270cf0400efb07790eef182c891a7d7d349657c9d447a2cdc7361d063bb7ab05053aa74cd7f7d0b98aa2b872437", |
|
| 68 |
- "img\/clock.svg": "d8aa7359883b08e96bdc3c870cecaf482b149bf135f3ecabac77081ad0d7db02caeeb516aaa111d031bbea3e0fda05a295069a8c00d579ff23f140e99409155a", |
|
| 69 |
- "img\/closeconvpart.svg": "6253cc849d6322ff6395d3fe82106aeec1318f25e482b08db7407ef39ef7b02a3a6fef0916dade71c2f6f6238626a7a6edd11a4aaa266af478bd3c642856a3dc", |
|
| 70 |
- "img\/closewnd.svg": "38f6ba89d70905ab3d2c7d524fee42ce08f007622bb1256d04556cccdf40f549d39ab2fc455c878e6c318c03a8680d042c8e7d0dff9360a921e397e38567bf9a", |
|
| 71 |
- "img\/conversations.svg": "412ce4a14bb38b633ec0ff7d714c785f45f9153e0e5d77d04a051eb551e378374961e68255e124a2c5042a70d7c11fffce95631336529502503f920844d3c25c", |
|
| 72 |
- "img\/description.svg": "e024846cea431279325a17c92c964490a09e485cd3828f232cf69dc9c10233b7feda3c8bd0fb1500a0899fe356a2d7d7df9bd18a88bfb4076296f10181097b1b", |
|
| 73 |
- "img\/description_added.svg": "35e922d182e98be95edc056b3d2ff7eacd0443f49c294cbe7d0d3353284b590db1a7c4f72fb3505da4b2c65021074e41dff84473a88b0c92fa271675345bc49f", |
|
| 74 |
- "img\/dots.svg": "e4a46301c4b70f3820be8d6906ccec273a96edaaab44d7c133bb58f5499f2fc6381f2029c27d0393e3d31e1cf10bc55ee98f05347fa6af3533cc74290d9bb909", |
|
| 75 |
- "img\/filter_blue.svg": "740f464212882e0f785ecefceb3954ac836ffaff5e77d1cad83d1296c88fa469eafc1241a111a48d720124cc94ccc362ecf2da4121613e6a512f596057506df8", |
|
| 76 |
- "img\/filter_icon.svg": "5258d0d0e3677c10a8ae5d8cc37318855e5a6d5071d5a61ee6d29aad7109292502d60571f2c5ae716295dd8f93a327c060ec7c65f2f9cbfee4b85086682a385e", |
|
| 77 |
- "img\/flag_empty.svg": "a009b1228f4b504fc1e72b33a06ae0c8f1173b011c03bb5051409f8d732b5c51fc97158e234b2ca29e58522ce84931b925a6b710bf7d25240fbad4375f252748", |
|
| 78 |
- "img\/flag_red.svg": "1f3590d7a9fbe9f083970481af1cc4b945cfd0604fc91cd31da129aed67b1e6bb875f0e54221d217c6b3635446c291b7009c65b822a00779752ce6a30cebcadf", |
|
| 79 |
- "img\/garbage.svg": "b76cde0659b7f127a810406d2b734f03871e3a7c8bc53acb723c2a97fa6ca0801a26cfebd4ceaa28d2ad237a67a222e00aafaecaf7e749cc8e8f93ae35a4c4f3", |
|
| 80 |
- "img\/garbage_bright.svg": "45bbad63a659b6add876294f8aebda1cf03790b0c253ba442f04fd9677c1a35795eb823dbb92bbf38066e8cdf89fb34671763dabbcdad4722aba3ffcaa21581b", |
|
| 81 |
- "img\/garbage_grey.svg": "8b3f724edd0a1ac3e1161af3b37708bbd007aab58413c7e55f4f43abddea740b5a7956ce1f8c845bf99117f0f99716d6b5efdb7b221d92502ce4c89176345a80", |
|
| 82 |
- "img\/group.svg": "fbc10073fb9f5ac1780ccad2c61586512a922359b48ff76194bc5be2711ba99efcf9ce42a694e4cf1209dc78cf2bd077e12f98590c1fe1123260a23419cd256f", |
|
| 83 |
- "img\/incoming.svg": "c8f6e4c7e55c7fff5c74a87fe14e9f404fe5954a546949f148fd60cae7dd2e9165e883c34f1a3eb5500c12ae2bf281ab1607e04c4b75bd6322571ccf7e6ccc25", |
|
| 84 |
- "img\/list.svg": "2364a4ad93d0e4c85345a293f4f6b0e4135cbfb8b7b5e1ecd81d08affd0e0441439f9cd9e60da77eaa53052ef20cec20b49263e387b500c1fb4a3607b081e73f", |
|
| 85 |
- "img\/network.svg": "8778d56a1827da8787bf74704f1b296f4b882e04a1a36434e91dfee52f8f00925bdc72905de3b3833e3f79aa9f51d9a3cc7855aecade6892edf84a042668664f", |
|
| 86 |
- "img\/nextcloud_logo.svg": "4e0d3f0c371d668d83d443e5b1f69f0eedcc759092601d8fe8710dd97b16fd53aa3f9667bba7f305dc3aacfbc14e29b09b78da8b7bf6f41dcb83f5b16473991e", |
|
| 87 |
- "img\/nextcloud_logo_bright.svg": "aeab941556e29f9537508171583bb3309372866122c150c887c21d6a567c5aa06d2653db67c7151b064d4e2fa25f1fc63df21c786ede02ca5f40f12e5c1bad26", |
|
| 88 |
- "img\/outgoing.svg": "b5be7538df66570991b975b1fdca452144fdc27a14521dfb2ae4d0393d0f3b8abb6837458892e04adbdec0182ee3fd25ae33c6792457154dc2cab6e35bd6eb9e", |
|
| 89 |
- "img\/participants.svg": "83cf03ce7bda7cd15a87da78e5e4a8b7db674ff59ebd377cee909fc90b0cd746714123597d019e9b8ce208ce86f4fe03890c9c11b8e858b2e4e0f704aeaf165e", |
|
| 90 |
- "img\/participants_red.svg": "6a26e9d9a45d29f90e6ff335adf644310e55907d36af92cb7441babd76c826c6b31dfb3297465c42193caf450e1e84f8ae2f01a89cd8a58167a035ccc168e4c5", |
|
| 91 |
- "img\/question.svg": "c2bb43256a2b8c43997dd6b40a2db8c811e3a2a28a0ebc11c8e87d71c21b8cfea3367a39730e6675ca77c9ec6e9adb4bab65cee474c02276f905b4477e28b1bf", |
|
| 92 |
- "img\/received_messages_on_mobile.png": "ead85cbf9d328caca3840dc3d92d2247f744ac002c3628750e096aaca8ec865a56cd0d77a38c5e46c7f440ebdda0256c2e1dafdd78c6ee883f462f37f9c66900", |
|
| 93 |
- "img\/refresh.svg": "a95a19645bbde5e2146a3ec669950bc6029bfc6104886552eaeb4746733657ecbe4f9199e676ee2e9852ef0c5adb612d93e300e3fa9713fc611e1f8e7c1d5183", |
|
| 94 |
- "img\/reply.svg": "6c603311ec3fdb28314cb8c8477ec491e4d5b04ebc71f3f68409ff80b97fab8397c34a5d576c369cadfbe4bec7cd1fb177ee4963bc9bfca376126979afbadb42", |
|
| 95 |
- "img\/reply_to_message_on_mobile.png": "5b5b3ad0a668b15418c37d0832b1c252125006664d60fc58928bb7ce789fe6afb6a046bdf6c28a8b4e58d358d87f0880c8ac3b2e390bfad77d35f0970cf1d036", |
|
| 96 |
- "img\/sms_relentless.svg": "010ad7cee20f3a256a24bee2482b6798f042a3992c7df5d56ba803cca93552c3cda2a68d1772e67143ce45207b89d397e34ba6909f6b8515134db64e2c5497eb", |
|
| 97 |
- "img\/sms_relentless_dark.svg": "cbe97fe9fe636790ea0b415035cd78321ff53ec93ab1276d4ef609555592fa13d09b2037c20e06bbb9024fcfcc0ebb806c89572b08adcfe4ee9d06c6466b685a", |
|
| 98 |
- "img\/sms_relentless_delete_old_messages.png": "733610c212ba9c66daa8ceb2adb590e056a3cd665726cd8181a90ce8dd1fa186ffb66ddbe6b99da079d80e61f11705bda75bd3bc85fac5fe1edd42087f07c26b", |
|
| 99 |
- "img\/sms_relentless_exchanged_messages_popup.png": "7f64fb5e59222335a45fc93eb1ecf58e67635441d7768ecf3939dbee2ff3cb55f3e0f4c1b4e6b6e38744d86be65609ceca3e839538f185e62d98601218e16ee8", |
|
| 100 |
- "img\/sms_relentless_filter_messages_by_date_and_keyword.png": "d61047f211bfd6f51bb4222ec68fd13ec69af764964461f6e24194d99fab49c74c7e80c411c9be52f52e83357963a49fd7b2c0abe53dd60a145e5ef10993da26", |
|
| 101 |
- "img\/sms_relentless_grey.svg": "ffac810d151f22067a4ce4985b6c84ec6f6bbf7f1c0a8711ad4a374b838251d3681edfa8439e18c1fcb78160fcdfa20d4f08527a594c5080938aa611991acb2e", |
|
| 102 |
- "img\/sms_relentless_grouped_by_number.png": "313f8b316205c238da4976e7f6b47bed98e21797e8b1049a53aa5e0189bfa245abe9bd77440fd0d5ec298248efd5052a959d115395424794ba6c29aeb82b4121", |
|
| 103 |
- "img\/sms_relentless_logo.png": "bcc8bc7301aa9c4811ee875b5deb4ed21d9c7eca187970643962f0ae11a7483adc5257e26b307c41644dfef63ec82c4e61a221f133c62827e1d4418928c253c5", |
|
| 104 |
- "img\/sms_relentless_messages_to_from_popup.png": "a465c0c318bef7600610c345d3f88beee50bcfffa7b11986b1a8030f98797d73ab25f4eb1c773562566c0e0e02b69048f927a6da2a99e638f3ac09368b0ee0bb", |
|
| 105 |
- "img\/sms_relentless_on_mobile.png": "dcf7c74ed512afb2f296b675c4c6008bbab511ea77150cde4523eff16fce8a4fe67da9bc1adbd76ed0e9e3f27589ec900edc936ee7c3a9ac5be0b1720ed8b3ea", |
|
| 106 |
- "img\/sms_relentless_received_messages.png": "c661692d3f1a766aac5e453a387f5d72cf374691010790f80087f35e78152652e963b937ff9f74bafc3513ae56561e4bae5409b5711cdd792aa09a10b7d17355", |
|
| 107 |
- "img\/sms_relentless_send_mass_sms.png": "277796f41a62a36683d9fc8f3b125dee29114be6e2cf6544c5023219c032f8ed2667ce02543b7550c0c72ccfc29f54d4a5e6d41d47c3dcbfa38eb8a48072c779", |
|
| 108 |
- "img\/sms_relentless_send_mms.png": "af7fa40084cb677f72f940585550c0a3515bec5989df70b56ed6e3a99d894b2fbc2a1faeb31135f897520d478f6aeb39ed5c3632a2375f4d8ca23a2b65a07474", |
|
| 109 |
- "img\/sms_relentless_send_sms.png": "75955a572f44c24c5e35a556de66d60f7af356d8c5b3a95134dc9165143326d285c4ec42a8154cc017fd4020d44a7df911461f00d2f3514cb2bbb6e519b206de", |
|
| 110 |
- "img\/sms_relentless_sent_messages.png": "a3a86ec64277b467a2d5571ac6c3d1bf550d5be71a6b7b2136732d6b4071a167dfc510f8bda42ca034bb8fb34d04f1a480bd2fada749525790c63ca47174797a", |
|
| 111 |
- "img\/tag.svg": "7c554ae1a7b31af214bff8429fcac39ea4218bf55a83846b53b695bfd2fed43859efa7aa99a7dd6b2389a904baddf54f09e171378b02d9aeca6d0bfb74632289", |
|
| 112 |
- "img\/tag_added.svg": "346f3b192dc194bc100614e6afd3958eb52f76f641b402674da4d0b7273262345a6bf0fad18f9962a0edde724af5c231933e3c5391a6fdf8150ef784087eed46", |
|
| 113 |
- "img\/unarchive.svg": "a278a8e54b20c462cbb283dac6f5ecaebf863b055b377d32bb77e8cd443cba4e961d147729ca737816df1e90afe0b28b6b551f88a4f5753f14c87eb35dc55005", |
|
| 114 |
- "img\/unarchive_red.svg": "331ca9e9e9d51b70bca279366d7481153a24130cb19fbd6a0fea72a425967c9167bbe575c0d54b88b76d83a533b9fc2737b019aaa75e12b781b5d2e0d1c103fb", |
|
| 115 |
- "img\/user-grey.svg": "1128d96d0a4281591140149de57924e014a1d709ab97d351100c901569bbabc8c8834caf1a5932408b7918997547c323b8b9f4f410e1f03a4eeb89045bd95ff8", |
|
| 116 |
- "img\/user.svg": "d69cf4ee448f7ba5d46fcee24895e8705c297f078d943ecee1ea242b470c5e89318a5eb077c81e9c2a656f903c4e869298cc2935cf05a4a5f79e295dbf86df60", |
|
| 117 |
- "js\/adminsettings.js": "503a03325afa5600b49ba0ddd31556c07b8d8e614c2aed2e3fe567747c99b96a0851bd6b208fe252abd06123082db70668073f0a9f452bf552a8db8d1bb00bf5", |
|
| 118 |
- "js\/arrowup.js": "f7d5c5aa20b49cf936f88e8ba0d3dc8574481f842edf3867fc761ce4b20699604a66a611dbcf999f25c3122fdd2b97d5f7e84e090453fd8563067f9821044478", |
|
| 119 |
- "js\/deleteoldsms.js": "bc03036fed3b6c248eb61c75db9ad4ae42ecdef799b52001fe60634b5f292f4887de790e9bbabd3ccb7deb8ca3acc89ee174896256d28e4769a2b9288c9cdbfb", |
|
| 120 |
- "js\/sendsms.js": "8e841141d86928a61b9bfec996cdbe3ff92e764802b9bdb159354db053277c05e5429ab4192d14c7da01934d8b5feccc0b29fc101231738c2b91e17e30e77229", |
|
| 121 |
- "js\/settings.js": "a9f3ac93911008b796f71c8ea16d53d8e207213d1aa1b835dd40b01b82ad1ea04ab41814afea20ed4d16286e87e1dddaba99d6b1ebc789d9111e7346bcc01cae", |
|
| 122 |
- "js\/showsmstables.js": "61f560bf1e8faf91df16a284d94d1154903a0642a05c416e34da4c4ce2be6dfdec8c5aebc6bbe0686670167b14fe879d72938c3366a5b0045ff271f181fbe2ad", |
|
| 123 |
- "js\/tiff.js": "0c20e8d4f9f602ef497a26a50d8fd253abd55cf53afb0699638264550e931aba9b5b41c1ab0fdabee064046aab13b921c8d6988d76048f6c9795bed5aaac8aa7", |
|
| 124 |
- "js\/tiff.min.js": "c35f67b587aab62db7a3de662779a7b3264d70f5f856142cae88eadd1b477e474977f2b8c5ab31c16be002cb7ca9b52282e6de533b6fd79a02e6d33815919cb4", |
|
| 125 |
- "l10n\/en_GB.js": "21a4c2152f259f505581c7de77a275d0d9776c5f327b4ea72981c781145a9840582683f086dd3cf5cf52c214d3e05e643885e67f6bc783b8055884e74d560a82", |
|
| 126 |
- "l10n\/en_GB.json": "b0aa88fc96f5d5172137f46bfcf061cfd59b4d091822455b4b048e6ec9e7e30094f630c27e0f1bc436c071f27c2fe6c1c933bb4f897a44efd8cf7d29039e6e88", |
|
| 127 |
- "l10n\/en_US.js": "21a4c2152f259f505581c7de77a275d0d9776c5f327b4ea72981c781145a9840582683f086dd3cf5cf52c214d3e05e643885e67f6bc783b8055884e74d560a82", |
|
| 128 |
- "l10n\/en_US.json": "b0aa88fc96f5d5172137f46bfcf061cfd59b4d091822455b4b048e6ec9e7e30094f630c27e0f1bc436c071f27c2fe6c1c933bb4f897a44efd8cf7d29039e6e88", |
|
| 129 |
- "lib\/AppConfig.php": "c52269913ee80151397520bbebe4f0c725526910ce18f8717ba1c8016a5f4dcdc9a6f9350bc56c8a6b607ea342ee0cbe0f65afd9f03c31902190c008f41c9672", |
|
| 130 |
- "lib\/AppInfo\/Application.php": "bba71b4bfadad9041f696d2bcd7ef9040dc21b30aff122c9ecb349d46b4b4458039ac4a2c501fbf363699720018feffbf3542525c0677dea3f04397d7a66216d", |
|
| 131 |
- "lib\/Controller\/AuthorApiController.php": "8a77b2eee623ccd92f96ca37476ef67b7508604703bfe3a73ba76b9f75633a1b226c26663d65bb8ec8a7e13fc605ce151d269f6448436a74e9bd632732ea58a1", |
|
| 132 |
- "lib\/Controller\/PageController.php": "07da5883ea41b3f7993a3e358a03a3db592a30fa81ea1ed0f26a234fcc3824a243316b76824fb9a24f40304ae945c48118dd4bed1f0d2f6993e479ab2c1dcab6", |
|
| 133 |
- "lib\/Controller\/SmsrelentlessController.php": "8e41353015ce4e9e5b03d1ececcb619ef931e96a2726812ac81fb6b86dc6e7f676863fa146278520e854bfe507b278f9205c285146eb1f544f2f593efb7f665b", |
|
| 134 |
- "lib\/Migration\/Version100Date20211106192148.php": "96b9793edf72598c0330aed9f0c6c27ebf02287bd84b6b7a0285fc784bdf6442b560bc5dd2e55b464bb384a24831ae17d7ea144b0896d9b11cb82a27fbf602ff", |
|
| 135 |
- "lib\/Migration\/Version106Date20220813144231.php": "33f1f2953e038350e37c670462cc79fa48ab3a72b595f5fce970fdcc6d7eefa3401722da4cc532c7114d0c8aab7fbf0281afb374a695d5c1c1b311c30f64c9b8", |
|
| 136 |
- "lib\/Migration\/Version108Date20220823132408.php": "5d94388496cd88cec1dbbe67a2e9d6ae6fd5db7ed42d4bc737710d3c51ad4d8ad29d53a62739e05e2986e2d4c96374f4660a53dd7b7808d30e44e5c605105971", |
|
| 137 |
- "lib\/Migration\/Version114Date20221202011625.php": "920ee001204afad537bf2b7dbdb7c78e95b4ad0c79f5f693bd56347a1df91045cd83348f99e2ad714df2a735cf1a1d85aeb385c675ef6e90eed26f18b0b7d344", |
|
| 138 |
- "lib\/Migration\/Version116Date20230508212745.php": "556137e5580eb33beffbf6198447581b71de677c2a2561508c0d7f2f51e3ab7ca9feb0715b994a2753616838ad732e01e6cacbcfb521eaf559fb40200f0594fd", |
|
| 139 |
- "lib\/Migration\/Version117Date20230509183517.php": "dd289fe9ed0947b1174390dbd921ee696b50af9bdb360585376a6d5334e390dbcae65833c13c332732309f8fbaf8d83d047df6accb8118c9e4fdde8370db7b18", |
|
| 140 |
- "lib\/Migration\/Version118Date20230509194216.php": "165c805c76bedec7f48811fb4a83685287daa07660cf369b952ed2dbd9a6c0bf1bee2b78d3642478acc37ebd597f0df7d9eb7035c047acfc69146b664afdd286", |
|
| 141 |
- "lib\/Migration\/Version120Date20230520072431.php": "322eda5d5112d5e52a466c91ba02c40f1e77231c627c155e00cf6a924fbe16b4d6cee69978b0b3789c5daa03dfdb3fbf0f33b42fd40811aa366c7a227db4c31e", |
|
| 142 |
- "lib\/Migration\/Version121Date20230523201743.php": "d4f5e1520213a4f0a1d74c6faa1da8a4988dacf8d3f3c7aa8bb932744789a366e1758e2a9be14c7768ca7114ac0e7588ad53b7a9ad6bc1a45da5ef22806126b4", |
|
| 143 |
- "lib\/Migration\/Version123Date20230524182156.php": "7bc033f8852ac9b79e15bea2e13421c603acfcc443304bd36cb0f015991a0816b90950e6b45a84ebe5e03e92c4604e3473dbc90bd72810166a6a20f97eec546c", |
|
| 144 |
- "lib\/Migration\/Version125Date20230603224815.php": "430f98229247d0ca7e3c96f44d810e84a04a9b971c42f645eaaad08b213ec87506b4253c013b47b4c06d7f595aad414a17e3a9078b0fac9c9ed0d980bc39b4d9", |
|
| 145 |
- "lib\/Migration\/Version133Date20240215094712.php": "a47381d134e326413d2b8214f602d0abe5de30f99107c3f68bc2959fa6a601426d1f3f8f5a40b2ec7e297de696234918aa96eee51dea504ea76dd9fb63926958", |
|
| 146 |
- "lib\/Migration\/Version134Date20240402032516.php": "0dd7ecee413ef1bfe1768a2fa795210100acb9234c447fb1a0fd80239e7949485d33f1509408a09425db9171bc18dc2ec94989bb6160337078ae60c2e2fff732", |
|
| 147 |
- "lib\/Migration\/Version135Date20240420221527.php": "da9eeb59daf3988cfcde8fe389b2992066ba1004ba17b099a17e342cd25a8c75aa2998b374ffb99ceedf0b223e7bb54d5db95985449051206437982e6f1706f7", |
|
| 148 |
- "lib\/Migration\/Version136Date20240502081941.php": "1873c51de3d4a281a205d424c4c9de31c033a9f6f2801b507ccd4b874ab33140e0f0ade472998894c8a48af0ccaba189241439a54dd5b3ced41d7174daa56f29", |
|
| 149 |
- "lib\/Notification\/Notifier.php": "ee827c26698b38046a1770ad90ddd706b7c9a72505797850368017723fdc4d0281fa1ca9f8ef73c396d44bfed2462d0fe89bb6a9707b542427718acbf0cdbabb", |
|
| 150 |
- "lib\/Service\/SmsrelentlessService.php": "c2ce06995c7c13c579f8a409781e64bc4da9876afe03f6b9bec606ca4a16658daea5e78a3e185c708fe8e35e2220cda0ff12e00b3e9eb1cae6a74b6fa9464716", |
|
| 151 |
- "lib\/Settings\/Admin.php": "e4e5f6e8fc5748b11c90b676326dc228fbc52fe1f77a07e7b7460c6dbf2a8013b5e0b0f9084aac3f941478ae6ae75c47be17df3d229d8a998363b9a1d289f405", |
|
| 152 |
- "lib\/Settings\/AdminSection.php": "1c8fb26e8347d67c69af385b0aa33be2764135a4672b872b6c6d41bef3eac6733ca2796c393c8ff334ff56accd7ed4d4c38ca50baff2360d8d8be02b9f8a7c08", |
|
| 153 |
- "lib\/Settings\/Personal.php": "db6fc80342c865841edcae7d2cce5e50d04473a9ac47e26c2daabce493bbb1bbb922bbe9eb7353d759965506dbf1b4c99ce8e9c93f5c43769e1064cba19f95dd", |
|
| 154 |
- "lib\/Settings\/PersonalSection.php": "e65e1a8939e3818e7cd295ce86581a603b1e2fedb732ce51ed1fce62cb61ebae9b93742b1d923f08e14cdc6bd5cf2818d47917321e0aa1736932830c05a81682", |
|
| 155 |
- "providers\/Flowroute\/readme.txt": "25f08fea0f30105e850dbf07bb7a9351e47883640dd87d26981cf50f02ab5af8ef59dbd1fbe5e4127c0e019e13ce036f9414401b9d3f3a924c4125c291e53446", |
|
| 156 |
- "providers\/Plivo\/composer.json": "39431b4960638f40009c387fe36341192f3ad6033d41469122e60a7a80b5dfe97b75ebc7804d2b12fbd8f0480359bb3ac1cd1216f23b48cb9c9e182a35ec64e4", |
|
| 157 |
- "providers\/Plivo\/composer.lock": "0f495bf973c59495e0259f0169796db0f2b79dfd89fe4a9b500a81ecd9f6500cac1daef2c4c68fb1dd71a954a0deb3ad0937cf44be2d43b9cfa9df7cbfceea29", |
|
| 158 |
- "providers\/Plivo\/vendor\/autoload.php": "25382cfeadb7710be0011386ab64c7d37473fe86cc9e1a8e79dc1cd873ab472b95af9fac5767ca894353216f74ebb504a1d95df9289c7d3087ad4e6dabea453a", |
|
| 159 |
- "providers\/Plivo\/vendor\/composer\/ClassLoader.php": "f73af132ef1159370f4da75d1477541c8fd55e82d64e1a29b199e8963597b3558853edd48f703118bb139680e80bbae5cd601580c9f62355f3e749214b40e162", |
|
| 160 |
- "providers\/Plivo\/vendor\/composer\/InstalledVersions.php": "61b2c318b8e7928642a15094a56f42581abd4270c47a5fa0b2fe53a6a655ee383a0d1fd97c8cf2edc2cda5dae4cf032227ffab218265233a439238b87c1ea20d", |
|
| 161 |
- "providers\/Plivo\/vendor\/composer\/LICENSE": "f3bb64009f41a425df5a9bbab53490f0eb9b74fa8d6aaa2f57efb928edc4ffff330260666edeaa04a91fed708c3663371cf01b284f3a08d6698aaef7a23f355a", |
|
| 162 |
- "providers\/Plivo\/vendor\/composer\/autoload_classmap.php": "d699b70750e05825dab9c19ea193fd16c875dcd13267804d09e823bdf938e81f03680f6c8ef5c26cd4ada4165fdc7a4bcf2ee4420bcb60db504b9921f2efa3fc", |
|
| 163 |
- "providers\/Plivo\/vendor\/composer\/autoload_files.php": "091f2473642520711a82d6c71b8ec6ab63675ecf0c12e9b4888bcf30b934657011f9259d28821514ade102031f3ee7dc8f4c1b87450f78e35b457424e21055af", |
|
| 164 |
- "providers\/Plivo\/vendor\/composer\/autoload_namespaces.php": "30324cf2dc20c214c5b5c8fdc2099b67772149ddea1d1d51969c711be9a83d036e43746c600f958a6b49969b16a10ef93e9b1e3d5af9714721ead916b9aef344", |
|
| 165 |
- "providers\/Plivo\/vendor\/composer\/autoload_psr4.php": "48a5c39154e3152bfe902ea5c58849e297878ba514ca4f66bd841a987e8ff654030d54e228d8012aca91d01ce0d8b91f397db8723d0c3a9fc5bdf3e05668be55", |
|
| 166 |
- "providers\/Plivo\/vendor\/composer\/autoload_real.php": "c05b62a20a4019dbefd4ae0dc8b3d6b257ce46bd3cd11ec7b77a5992646b799dd2c1786de084ac00a1f8d943315897b91532d94cb6ee714baaf5308a11cc759b", |
|
| 167 |
- "providers\/Plivo\/vendor\/composer\/autoload_static.php": "fd0c7396258d60fc41623a17de7805be638325946c76afdc601d60bbb802f11d3241586e16ed7e98187796f0f1d7ca2afd559f7251124defa11d275f16b1cdf2", |
|
| 168 |
- "providers\/Plivo\/vendor\/composer\/installed.json": "2a36092d05dc6b64f3990b5a4a2cdbc791b4716009caa2e3acec0a4316a92d965f05d83db944ce268dd9683d13e5b7ab500f4db1503236b43ab6dc94abb4b66a", |
|
| 169 |
- "providers\/Plivo\/vendor\/composer\/installed.php": "d5c689c20dfadca0859a4edbe81ad33706bd3fe5e1c3c4829a2478f13599c61c006cc3725795d24554647a6a32ef74137b2c38f03f1b852a42c968a41fafda00", |
|
| 170 |
- "providers\/Plivo\/vendor\/composer\/platform_check.php": "2608c790d925a13163179b807539c4dd302e6c48b18d0983510ec738510f8741cd9420e8569c0640b7dc7e0fedca06c001de80a43a9460fc728b6ad3a5420130", |
|
| 171 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/CHANGELOG.md": "6e8d207764f69685cce0fa8ceaa631b7f52d7e197ac318c23934c27c1359c750a0b863c75e523e54eeb882fa85b4158c23d9166be1973dbe187dfa04d561dd45", |
|
| 172 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/LICENSE": "e782cba00ab3d7bbd105e2ccc83a2c3bf6b615e8c403af6d10da092f18a7a700e4df3d77ec0f4893651e04a0261d527aee78122e42831a4d08bea50b47a08300", |
|
| 173 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/README.md": "1689ee61d284201bf3037021ba5f8ffecc101fc9da786a42f37bf50c388b1b2f0f10f8d13d15a5329b72d46fca201a33e84d72a554197c560e0f5df31ef3f9cf", |
|
| 174 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/composer.json": "29a5e01238a018cc19e3ce794503252cfadc66943dd1bb983f8072d539b12cdad5ef7e52072a98f26f713cc2d55e268d2d711cd622b914c7a649aaf65758b1c5", |
|
| 175 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/BeforeValidException.php": "7777262d347a8fe6d2fc2c70876dabb33bb559db485b287f88f9e21c724b80c1e25fc81625ea253d8e8a8c6477575d8a42ed0919c093cc6866b5a1856464f2ca", |
|
| 176 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/CachedKeySet.php": "0b5d493d16d7c60c5ac7442a707c19128b584f2e8ffd8be0cd4e254efbd2046509a5ff0190e0ecec90b8f90620a02a1b388e03c2623747e40b02efcdaf37363f", |
|
| 177 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/ExpiredException.php": "5f46ca528efc269ba3b7fe051903eb40e009d545f2340c1f895bf757d3d3db874a3f0e940d9aba6c72b4ddd05abef9d9ab30ed96a9fe2ee3bb79e6b3e2bd2694", |
|
| 178 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/JWK.php": "5917dd7163dfaba3e542ab21ff7fc6609fbb4b56d8bbf8d04dfdc165b7d1767be3a6d5e6a58e2d227c3abdf864367daad315e491ddb2c4eba6e90f0a0dbefc28", |
|
| 179 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/JWT.php": "4c0079a379e4dff369307b19c1a8b2e87a3aac247f58b7e96ea914c2147c8903f0dc22a899ce458542d374b090fdce5bf8e8797009b976662db242dea95b2679", |
|
| 180 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/JWTExceptionWithPayloadInterface.php": "39aedd5bf7927dd8cc3c941b64b17d2a9c79e36aface118694cb996b60b62dfd097778e01f1c2a4b145c257e554e1ec2b1d83214042713fbef10b1be0bcc7270", |
|
| 181 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/Key.php": "564e8950702d4450d4d85da107346d3dc8cee908e2813476380e83c5d64c39c123fee27980e45305ce4d158ba3962f1afc5a0a433d80780d9c845ead190adfcf", |
|
| 182 |
- "providers\/Plivo\/vendor\/firebase\/php-jwt\/src\/SignatureInvalidException.php": "c33385652ceea18da9862d84858e75a4e08ef2aa9790c59530bfa5f71142e1afb36a6fec5d16ca113c946aa4e2c5894c501c3a3a99cd8df457af0621ab916dda", |
|
| 183 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/CHANGELOG.md": "a8cb8314cb0ad36b7406b24057c476a0eb9e45b2885334960b8bca8b625b6e042db3be7988d81f591344c98c2af17b1f90e56e8ebe4c526c0d912333ebf769b4", |
|
| 184 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/LICENSE": "7385c774eecce151e830cd7d9c59737f1b79642d3b2e0d639920361ae32421f9b511115dbe414bde56f9c9062aea29806a5022a1b8f62b8559b61b2cbec9faa2", |
|
| 185 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/README.md": "13687b9bd4b36f3e44fdaad3991707fa1d68abceab8e567557fdc2b853d9c342eaad4e3011feedaf73f0101983256f5fb36bf827c7cdab427fbec9464a57e524", |
|
| 186 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/UPGRADING.md": "7e1d03204ca7cec2b0821beaa085ab6377a2468b61bd09117513984a21018633dbc4cddd6e363a2c6ab184488925a628d5a5f171ef306347348a3c1c72050ebc", |
|
| 187 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/composer.json": "e8ffa8f2b3e73e3ab372b58db416f32a60c21fdd8e8bfcda9e0d9cdbce6dc029d40efa9eed65a632dc1bd80ec9869361ed3d768c16aced231837ffeca9b61721", |
|
| 188 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/package-lock.json": "122b9a1abfd400e1ed511e74491fbfb51668eae4e6d571e38398e8d3c371b554892151ea6dfbcb0ca1cf1922f3c2fcb04476bedd141acf593f7d842181904b92", |
|
| 189 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/BodySummarizer.php": "955afcb0de85fd37e526e091f1beada7a92d3104414541aec7e7791a5cbd8be5c5817ef40a5d17924dea92f5ba85e4f010c60ae4608853136a97be8b14d8bd51", |
|
| 190 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/BodySummarizerInterface.php": "d0a1271ad03136dca5752c0dfaa7fa678c6fb03890be828780201cd9fbdc8169ff4fd7c17867cf82ef1672ecf0e9f871f682ade1a8ff37e7b84d24c572e1b962", |
|
| 191 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Client.php": "76baea765b3f74b41a8130642191dbeb4b57b65387990d0796c5dcec2a48e85043191d6cef36fdaf252fe5f987d555b5300586484d1457cf2fc84b64899e3250", |
|
| 192 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/ClientInterface.php": "1f919b8afa4aa32d8a7e493e21debd626ac1e9a1ddde1a59c91228fd435cdf5432eeeb6ee384bd2e718c01964497254c1f50330f0b2e85c31e3779ab0d119a27", |
|
| 193 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/ClientTrait.php": "ec1e95b2f1c56e4443c6fcf695ede88e02f1129b7027287f968a0ef2f7debb7533ce2371a27b5ee07f78818786b0a6d1b3d2f8ce28f44f4a8f7e275bbd1b6727", |
|
| 194 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/CookieJar.php": "217dce0bd77a33bb7b9c53576be931112a9b0dca23e2f76836a242ebc253af4f0784c1b20169628abc8fb564ac633ac7f83547b809314fcddca6d1217fc7217c", |
|
| 195 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/CookieJarInterface.php": "64c03527fc1ab9183a3e7b0f04fb0bf8b24b4ddb42528dcd285cea47bedff27500c181bfbc08a448511be48986c929d6eda92fcb100eb4ce030c4eac8cca3ff0", |
|
| 196 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/FileCookieJar.php": "35111b9229059f54b537baec960b8480d5e3caf2961ca3e7e45de3fa5ad5bd0b0a91c2c4231f6386a4966bf9d97aa308a7e444000dae9b21f8c58b6832dee68b", |
|
| 197 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/SessionCookieJar.php": "508c5fd8c83494073c9ec011197921f5555aea040036b9255bfc9fd6fe1ca85b6ed476f3389f5eeb18aa223add084318dce53f7c1e295775efa76d501a3818a2", |
|
| 198 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Cookie\/SetCookie.php": "3ed7441235af9e97a15e8c4fe040bc18cc248239afbd7457488fdc4aa7b15ecdeb315ef7e512c402fdda823de90faa18af558cc72c4f9c21e6e3626ad2245537", |
|
| 199 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/BadResponseException.php": "1954f3c518f489dc571d69d491f4cc10261f56f10b1d29ad8ba56b7c6c779ac704653b15074f725e9b3b0edb9b3e6542466d5563e7dcd4da6e557665a13f3c4a", |
|
| 200 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/ClientException.php": "0011418b0cd07eff70f99645a008c30e9a6a90b9ec396e8cf70ffc281140054bf313eba40d97ed34b59e04e5fd6712330d34268353493d112b8029c1c42e5046", |
|
| 201 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/ConnectException.php": "0617caa8f7ac3a9dbf2383d0abb86efc35d13378076777557a031a842290fb8ab9359966d4819cf42da5fb56dc2f6a90f7717c525a3400c4365813785f7c3106", |
|
| 202 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/GuzzleException.php": "444ae2d2847cc99d9a3895e2d23f0abe59bf0eae279809f7a4983e34098ee0a0ad7408d251df821c4029621060aff1ea0dc890615535ea4368e5796151a767cb", |
|
| 203 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/InvalidArgumentException.php": "2647ca6c297960b01b29435db7522ece3a997def6b3af71e26113abd43ca4493501c130e7767b845db0e723f9955164ce33664d49bd67a45bd29d270a66e0e3b", |
|
| 204 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/RequestException.php": "9ac70067683a6d17536ebb26c250786a0bf39ab04c9defdd55d9b498e109b39f5505db59c5e4ab1a2a57bc793a99acfa62c0a0160a4dc5f9a711802576d7a5a6", |
|
| 205 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/ServerException.php": "9cab599fd913d8f0bb1b8f448932ae0b5c5b1cd7d83fc4e1e4c13fec29b0a849a5385a6c40183b8dc58404ed020227b9ea4483ac89d135c6c82e4c7985604044", |
|
| 206 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/TooManyRedirectsException.php": "99c4e6f908a5dc03939ca083232cf48cecd742616e00839ae25ca173ec458e6da10be2690b98588b76e0f3c24ee7f35c09ed5c848f9348c639c414aecedf6c2d", |
|
| 207 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Exception\/TransferException.php": "665600a8617328454b70a43fbb72c81ea196584dc22e10324b3c861974aa55ff5867b30b86a65123f1bd4fece75049a9f6c4bfeef5410a9f29913d350358178b", |
|
| 208 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlFactory.php": "8030393509d80ec3769edfcc750c9b77f1e1f245e349b41c0c4203159e8a4936982885cb948604c11c1d5f14ccc2e547fd307577c9f30e559c48685b4df06c26", |
|
| 209 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlFactoryInterface.php": "0d063ee120e0ff6042a58d29b109bf6573494d427e20184a4d448ef31fe0cb0cedd60bb47c7289d5f6e1027413a28f9f57921823605d4f11086da5c9be8c0902", |
|
| 210 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlHandler.php": "fc5a059ffa37db0e91462f296c83b2868b1d79dc51e8d4fbf2cef2711be92c027202f57b9029a9c1d6a286c778bd1a08c762c0367654b21a06694ca6838905a3", |
|
| 211 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/CurlMultiHandler.php": "febc6f5c7d9253aea398c2dd6af179bb205e773b7eb9237482f311d7a5daa14b75e88dea21fad27d839349256a1ef25ae405c58a191c58ade4303b92460e10f4", |
|
| 212 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/EasyHandle.php": "2b221a19dd3b379871e09a5da6f50bebd7f43e6948bda87d2b8f6f0ad270ea074abd4327e69c4a7b113bb0efa53d3229b6718de98485018966c19ef4cf817ca2", |
|
| 213 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/HeaderProcessor.php": "346b1611f1a1f4a8e74dc93cc7095e452b9b9b251a00f334951d0b36166341aa3a819fc19a6c4b9e11151b8b7d777d8e8fd0fc6ac697a5411cbed5f8bab8ef9e", |
|
| 214 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/MockHandler.php": "1ea558bf3fb3913c060a4847d9da273dd4cddaaf87dc485814e55d2521cec36bdad4225bd899478efc2c28cbb4161ebb56753a56585471234feb3da3ffde7832", |
|
| 215 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/Proxy.php": "0b01439af2476fa3bb51874c73b1a57dec0c867b9bb7944e62e66d23e84abc60ce03a6384d1e02007f34f82fa964285db1c13ee0aa9416058cceaa5f78871994", |
|
| 216 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Handler\/StreamHandler.php": "daf9bac21eab934102cf1197d987724ebed3fc679dd83e2e119dac2070d5468479ab08b70d802a0bcc178f61d2f7a5244c546dc95ad92c4148b7085f93be6cf2", |
|
| 217 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/HandlerStack.php": "ac6a425b7a6422afb02c92b71d735b0314754838e43da35788365673dcfb02972a72e905106821d212fa0a97c8dff280a8b6d55f4d85ffc59a47979310443255", |
|
| 218 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/MessageFormatter.php": "38bf2fc8c4b0e9f22c651babebf9a47c6eb02128c0eecf14f924f544f19cc78647d096586f2dfd224301e678dba7d045f78e1ca9accc297582d9de5ae2d54cf2", |
|
| 219 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/MessageFormatterInterface.php": "609462659ab00682e7fdd1bb56aed5ad3cf54a2ee3b641623175b9dca0136b4e1cbd3cb0541526ed86d05174a18a9333ba52a9e50f4c05ece55cdc636815e385", |
|
| 220 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Middleware.php": "6065593fdbe5f73e2aabdabe077415ae2cec99c1968f8c46e3e0f961cf12d4453711467d2e31c6adbcdad53c0ae64ef1b2ae738e00e1799cf73c4474a0726348", |
|
| 221 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Pool.php": "82c10fa24071fcb21699e9bf7cafe9bf75bb89d8ac69237bc178611040c033f11a9f3689526877d08f6988036994bfa85cbb9b57fb96f3cd86e96a6605653aef", |
|
| 222 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/PrepareBodyMiddleware.php": "ca7a65b7984355b13e4758749e92f7713f037b564aa94ca62040231e5d9d3473cddf3fbc7f06ffca0d1475a966680f573597c730af9459b81afa6bec57440818", |
|
| 223 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/RedirectMiddleware.php": "9cfb2e48531f6a1b4d18add9799c10e7e7340d3ec406ded4d06729442eb7c2155e2bdc2f47877ab30d48d6db62a05338e99b18b1fa36617843909eaebf199e34", |
|
| 224 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/RequestOptions.php": "d40dadd1532835ab6e24cb51aefb984d9831f63f3bc89474bced3a1be0bff342208e9a299770ab5ac074a60b50e1588b841956c0c7d0279df512b39e62ad35ca", |
|
| 225 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/RetryMiddleware.php": "2d5513fa1d5f5f51bbfab4cf77cc1b1eb4f2369256942b5624cdb763ad8735fc1b832aeee18fe02c991d6ffd3ee2798fc727d448832431f07afdd5e2dc8f0269", |
|
| 226 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/TransferStats.php": "e8591e38cf6bb969dd8fc58155ae5cfc05d2a1bae2e286eb5271b79f10e598e746eba69ab85b2bb9d83d8cc82f6ed4623821bf56fada26f290f5abbe87c9aedd", |
|
| 227 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/Utils.php": "c6463380132bf3918509ee5e9b1748e8c2a759dcc8ee70df54d868fcd228f1254501aab5a94da8325b18b9f3bd27aa65e9ff897d7ee96075f7555e7f9d9f87fa", |
|
| 228 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/functions.php": "c776758965d4523a5617a60f92dd0a068f542297cf987ad98efa1d98d29bf6c96a2b977f7cc825fa8ef9a94d0900b9392f541e73920dacf8b1ae807739060fa4", |
|
| 229 |
- "providers\/Plivo\/vendor\/guzzlehttp\/guzzle\/src\/functions_include.php": "946d50350b61f74a5eb301e12a09c540ebfcf148f85b744b5e3ee4a5c217bc33bed98f5839e3d8ca20bb82539e38e76be5708dfa1e081b38efca6bdf99a58769", |
|
| 230 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/CHANGELOG.md": "74b23b0da1a5c6440715d68ee837e369be8bddfacfbc294f258c7619b09849f1f79c6be084f65aebcb006c4589f49b40c5e895667c08c777dd97190cb85d146a", |
|
| 231 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/LICENSE": "2b09edd1622bfc25a45e47c8186d5dee8a856e91494c5cb251dad7cc7b5cc054fe3f7257a6e1153a7054eefce4f301fa85c241fc6bb3f7f739f3f1c3c2d76a23", |
|
| 232 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/README.md": "519fba05cdc3732e044c6778dc2ccebeefca0a405151a487dd49db3f8779fd0076b4de135c93e89818915ab8d686fa957ab8f593fc2ea332317a0e8a26de6c5a", |
|
| 233 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/composer.json": "3735629860fcf96084ffab8f11a2df523e58a600dc630f29203668b98b7ede10ceb7b5d5a2826f99c88208e6e8988e09ddf18515d50998200f3e38fb3a41ab02", |
|
| 234 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/AggregateException.php": "0fb84a0dfdee671b31ddedbde684b6e611ea119b35b6de7f20d5f1958f627fa33fb6dfb8d466c2dc4064b4125fdcd98d1d40b7c7dccaab02206cabdd2181871f", |
|
| 235 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/CancellationException.php": "dd4d63ae2081743fc33268719df577968cdf232867b8a31bea9a9e6a77d9b2c7ee108d6b23b6fc9e9416f4c4b438fd64b7f6f3b1715964112babf40dfcf61fe6", |
|
| 236 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Coroutine.php": "858f60f87e67c85c2ef556809e86ccaa816b5c96f17b3556a22b517787bca4d033c716ed092bfeb5ab428f4d8e690b00f94bb98c5e12a11babb800cfef1169a0", |
|
| 237 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Create.php": "b5a42b44c3c54c3ac15a91636606423e36807760fc5fb57663687ae36015dbd483f06414bbe432f302644cfe595150a4dff99932cbaf3f0d2edb2677d8c35cc9", |
|
| 238 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Each.php": "ede94cdd0252e78c857e595076a5ae18f92b6754e2e461172c69fd7aa7b88fd83a90e27f10ef625ace81c0d25aa0547b1e5938c1107e967d33b6cad56e61678b", |
|
| 239 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/EachPromise.php": "ccbb9d1f6a387458f6145bb36a529e1576703fce3062ffe143e6304bc663f9fd862e4604d21c8c68de1e71acd924d965818e65097e30d71bdc83c9a815e112cd", |
|
| 240 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/FulfilledPromise.php": "018b727e21c8a870423b8518e52d75a49d7bd9c3d9099317adcaf5588ab76e9aee31b074c0f745d53bb38cb98925c5057c40734b944d7f0bbac336cf119b2725", |
|
| 241 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Is.php": "cdf2cff0401a26efd7a26c8fbc752b8738b8cb1d839ef55703ca5ba1f01c7e4a8e76431b701acfe261d046095b2b4d62da5e225caa414f606d3f04e2afd94e9c", |
|
| 242 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Promise.php": "12c4312e465e5db1899e3da283281b66a0c7d2a1c3eab6cdc56c98e29bce547e13d8b214db2d21c4b1b4c54c9342a486fb34624543777cc635bbe1b1253f2757", |
|
| 243 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/PromiseInterface.php": "b75befb93ca4f4a2292d38e85c82900dcb7f4ebbc0f043b316971c6b7fc50e341f81ea4aa9b354f7af5cbc58fed80f476345fb249cbab616bca04f64168fbf68", |
|
| 244 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/PromisorInterface.php": "9c8a517e726dea78c694596a5d53bb44b0515795f1d392cac790213f61b0e8e458e88e9db2ac7f0ccef7907659bb28dc26a6fa2d9ed269efea5b64a139d20d05", |
|
| 245 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/RejectedPromise.php": "9bbc04cee124a479692639b4e8b91787433e4e0836994af974393e0ce1b66cea645cc1710298edffffeff36d8359bc275385440d683907e6c3847d2702e51c41", |
|
| 246 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/RejectionException.php": "bd6a47972744e5d5ba8692a75cc43d073f5d924578f74236d93c54696ae8ed208114d945e5cb8064a6ab5bc241231e5f6a1c823af9cbdf50bec93acf020a113e", |
|
| 247 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/TaskQueue.php": "2cf3f2d23a6dd4a17b75b8399166f0f8c59bd0e57492d30960bd01b7c0a32d44f5d2dfa329ad4f60bd2c3dab188e2e23b880e9c93d378fd747c34deefa297402", |
|
| 248 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/TaskQueueInterface.php": "645bcacb2cc07ef2c54297d3ff91c455da761befc9213c1220c9c00de8bc7ab71b08f01225f7692e990b22e2aea26ee3472f9e8dba6136650cc52609af266b4c", |
|
| 249 |
- "providers\/Plivo\/vendor\/guzzlehttp\/promises\/src\/Utils.php": "bb9680c3b3a5fe5b2b61823ac59b92eff6239fae26049752df09a7d7d80d2626e65bd4188aafec58e09c549ad162df643916e80483ac8aff6eeafcd06d71a95b", |
|
| 250 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/CHANGELOG.md": "ba2e8eacc669bf757cb634b20cf9d26f3c0abda9e0908a5c46e23213def37f4de65191b3005536ac3ea0c70f00467d1d7ed34385616db4fc25f2bc759aa721af", |
|
| 251 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/LICENSE": "2eea594a8419c8b8121ee702155700e68763e97c0cce0d3775a30f66af36b7aa2e3c5a654e84b979fbbe26f09929ba05be8cd32a05df90fed0777c85c5c85ff6", |
|
| 252 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/README.md": "4b432192f25081a01ed20912e3d04f375e44d5a805bfff35e3523c711e15b9bbf20a2a38b2b0f72e5c07eab39abfb5f2dc3f9705c02009d129bac2cbc03a6af4", |
|
| 253 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/composer.json": "d8108df0869f93c6958b763595cb53ea8dc74ccc93af7e68784308b69ad3df5c8dab778fa95a7caeba3b59ab4ef3799de90b0225f583c30660b09db84df68b00", |
|
| 254 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/AppendStream.php": "e0510de9a1819ff803cebfaf1d65f17ce300addde95c7714a63f75cd3dc7036f96a6c5498871c71fe787893aebdf9a741e5171fd38a2f1373ed7c21a4e34c660", |
|
| 255 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/BufferStream.php": "eafec7f4d5495ef0d4e90791b276b1aad1c96863e116ce908f623c57580bbc2bfc7a8d1489eb94a55542b89087a0c823caeae5fcc56448182e54563d1195974a", |
|
| 256 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/CachingStream.php": "2265ec2c120f06b604b17cecca33a1673a0f9143bdf52f786131cebdd13012de208047f1a340c2456bb782ed9f0657fe4dc42e30c912981d86588d33e6d1108a", |
|
| 257 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/DroppingStream.php": "c4d0611886098d0b1ec5ecc165ebe7ac6ddad45b4dcedd859af1f8602d2b32b454283e2fe2d22ca33956a30b3ad12157c2d18cbd017d2db760963134a69fcdb3", |
|
| 258 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Exception\/MalformedUriException.php": "805d382ce964df44127ee87027829b969749abe83f22d2964b035bf64a856da37ae0b9f586acb94c5b49e6edad7101ae0f3576d5c5339fb0dc430dbea0df0e42", |
|
| 259 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/FnStream.php": "166962fa856c364628f57172da67bdf7ab9911ff771adf21970a3969e80f2cb21dea015b1617e5bc67a4f926aa2c1dc8cd6dbf3c4333fb469b1c9acbcdd7e16c", |
|
| 260 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Header.php": "c53af4765f7ea79753185e6f5d62fcad35574d895563a04338c402cd54c8ed2ea4e82cbe897a0c5b58da4267d023a1973437b8c203d8816b931dd6323e5cc47e", |
|
| 261 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/HttpFactory.php": "0dd3d5f5bc622f6c6b2fb1f3874038599fd00ef46ca0c23ca4ace6087096ff5c81767b61bf636e0a66bbb5a0bcf3b858763bfd56fe0b53df3b12cb45fc7825d9", |
|
| 262 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/InflateStream.php": "477dc053e71b07220789cea6b92e6504353e32afea0de5bd39c89ef643a7c468a17f728093bbcb600b4895eff145139f0f37059c8f134c1fe941ff625f46ef02", |
|
| 263 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/LazyOpenStream.php": "33da0620f98acd12895d5f8a85d0c6d068720bfa9b94cb81641de2879feae8229fe34dc353e33a30ca56bd30e791ee80a654792bc12c681b2a452594450e7001", |
|
| 264 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/LimitStream.php": "7030eaa5b6e4e12cd7fbf1a2c200670ec088cb72bdab32e1466aa695c768f1a37131a86fe3ad4e5553e7b4840fa1128a5d46492d583a3d8b185cc7d223a2ad76", |
|
| 265 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Message.php": "8e94c9aa033a00e58091d42cc1e500ad2a45393448bfa7f8d3b1a70d6728469381dbac889afd214da77fcf82e434e1738ed8d4603309399c510379aadb34ea47", |
|
| 266 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/MessageTrait.php": "46fa3a64e34f746b047416b56edec0757d0eab524ca715b3dc9c363a1017f27f4611eae9bb0ec01ca57b129a40564ce32bac521e39b31c1561e8de05acfc998f", |
|
| 267 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/MimeType.php": "828bcd6b6e2beb76f917f2ac09b09b3e7a8d5586ba13d279f44167ff7401107dd0bbc2407166cb45088b074bfd2014d883ccf5aca723b9bf90dd7d0c6ee7a672", |
|
| 268 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/MultipartStream.php": "f0a304d794d36f6431cfa9dedb7e34de21f4c154231f132e88a02937e3ecfbdaaecce2c82dde75a0610563062a7863ec4fb0f4f2db409a524a4c07d032caf70a", |
|
| 269 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/NoSeekStream.php": "c9e832459d9cfdc1828b2ab4e60fed809f5b2a7e137b14271ffe58c895776fa635707afc94fc666f16fbff123d632883c1c25548bdf9dc4e963acaaa732a83c9", |
|
| 270 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/PumpStream.php": "b558397ccd044ac8e9b826b3e10db1e0ed00c37435d7a70efb8b92b7d944d45e65fb4bf5d449e1db3f76656bd4ba1a94b70fc1149c6710196cf699a97b924d65", |
|
| 271 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Query.php": "dfdd12a3b6e218d97c211c901327b80ab78480717a36ea62942b30e6201d620c3791627c038644797e6130520cf5df7efa30f5de7566a3e03e14af9d9ca70ce4", |
|
| 272 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Request.php": "ff6d05427989eda87ecda8222e30243267cae1e078a3e1e221bd00f9449dc2d2c2e5f59daf414164d4d51e12f470850165233160743d79ba719bb966a7d35f8f", |
|
| 273 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Response.php": "1f07f65bacfdcfea0326570afbe38e67c7685ddaf741365b6fc60d56c612b0b9f2915d26c8acfc12c37cce035c28bb04c2f9488f061a5482c3a03d9aa8679a60", |
|
| 274 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Rfc7230.php": "f556eb86e6858961923d036af3c5ab0f0637134285a9291b9bf6a56d0a9ab2d99577313f53151972c19ca53af4f152636d0055d6b054895d9a08d7d0043282b6", |
|
| 275 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/ServerRequest.php": "9c56b8881432b2ea2077a5405bb5c62069878144804dc7e5408c892567e062d4087b2ac995cd3ccd7888ed071b3eaf3410cea3f501f750a6d417da1292bb036d", |
|
| 276 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Stream.php": "979d8fd9b42c9da53434a061252cdd451d4825b297ee33e5f3c25aa23f92ad3aa95ce5da938b346d54ebeee00b8f51cc2ae5622a6b17871ae9e8c1699d384cbd", |
|
| 277 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/StreamDecoratorTrait.php": "51fb74b77fbd0938d0bd70c2a1677704a270bf65121ee20e7345253484a655dbe29254fea68aba8fae73d2aa6d15984fa6d1b338902d47be50a62c3fd4a9c850", |
|
| 278 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/StreamWrapper.php": "d0e45d161d9260e9049b41966d954b143721eb29163acaef85dd69f12fd267bcd5cfb99955056e585ae3875e5cf3c2201c2f92cf4b45efc4af2c979b1c375ba4", |
|
| 279 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/UploadedFile.php": "86750fa357c468dca0fa06f99f90be331bc04f38be3a0185a8f21d7c56106578ab9111d9ae36d7fd910740c8c840e77c1b296641c2ff06685e19bb355ab1fa48", |
|
| 280 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Uri.php": "f92bfd82b472ddd107f0c12cdeac731fa90fe2755b4187e83389f263490d6013cd572f3836046cece750268537920454a0cb8e1ebbbc7e35bfd6e970b93f348f", |
|
| 281 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/UriComparator.php": "679aa5523173810e33ca7f1c8c63aeabe14f25218d3f5697c293ed54b35779dbbb7806a16275c1d11db5b01a25c0998544016b61925fc18e979b7e717e77cbb4", |
|
| 282 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/UriNormalizer.php": "754b61fd0151ca5d53e8369c0d7064dade5e18e65f47d086fa9cc2572983e7a643823552417eadf7825b5a7c57ca53f1699019521d76e7e1b4a6eb88b225bbdf", |
|
| 283 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/UriResolver.php": "ea8b845be1e69df941ca090daed6cbf0f036411a1e69a620319a19a8754fa6d19b1b9e5160e5342d38ffc59bb935da4bcc93b3fafd52e95779fb15f1d81584d9", |
|
| 284 |
- "providers\/Plivo\/vendor\/guzzlehttp\/psr7\/src\/Utils.php": "8046ac4459ea4ba0b11ac51fa7c543a9846af77e643b1217e4d0f4fc539a6c1f599bc1940fe88cff3a1af499b4a31624e0eda05f44aa37d92768e9aa1bee8fd2", |
|
| 285 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/.github\/workflows\/unitTests.yml": "68c095ecab06488c9a1c74e92c617fb4f605d8977018daaa15f83402a5b22efb9f8b47687f1f05e8539dfea6de52c2cf6ecd8bb861372b954892baa409bccc2f", |
|
| 286 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/.gitignore": "4af477a5fece6655668a29023de3bf68e2c745b0c459d8a5319d3be2b1ac531a6d5a9646b41cb2ad891d05ac472a848bff3b55009b8d466076408611a6e3857e", |
|
| 287 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/AUTHORS.md": "bd202fc574c862a7c3d4a27653605b6fa377823744a793a7848ddaa7001166fd645d6047892d79c8488786d82fee785b87b19e9af1d04512503eb195bd300aad", |
|
| 288 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/CHANGELOG.md": "8bf571c60c7b59625481e8b54106c7f265e8a242c334d4c86928a42cc3a444c20912445643b4a2769c779c4260679cc5099c5d1de306f7304a185036f3d313cd", |
|
| 289 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/Dockerfile": "19a0035c774bbcb18bdd1cebb1aa148d36333f515c39f309dca45f8e6ee8f42e6a1f5605044e871eea802d79c185c3b288376f870fed89b4884d137bf5c40ff4", |
|
| 290 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/Jenkinsfile": "98d95e7185d040e9aea6e75118ec17ac34e38e17f8ad5a38d869ea02c0c9de5dd79d208a78da23ccb87444df7b7de827b314469027ee7573cc51423521786320", |
|
| 291 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/LICENSE.txt": "0974968907abaaf61b640ece98a502e3c677b7cf734ccc82cb522b3e166c50eaccb189b4d31b03bdfe8e61a97b3ce06917a7ff5c7c60887e2ae944f909fb6e72", |
|
| 292 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/Makefile": "72676e667bf20c1b47980fe26a2730fb18b89db72c3f9b01cef679da5af685e1ef4eece3878fac1d034ea05a1b69add4cc45026c7e02ee19999e4e8feefcbd85", |
|
| 293 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/README.md": "325e57c14b36324a6d02d9276fb0cf7be68c04fa4f7025c38a900ecbfb59b46283c2729bf05ba3222c7caf59a1a8ef11ad871ec16b72bc50be1adcc25ed9c15d", |
|
| 294 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/ci\/config.yml": "11aa18670047b2a6431df89b097ffd4882856e47ed5d6bcc409a79edae2c7eedf81836a652be9762980a7a7b57d303912180e8caf668073bccfaf04781f9ac72", |
|
| 295 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/composer.json": "95331587ad5e24056ea5a501826f38ce3e2f06641db5448815feffaba5485028e45a066e622294bfe7d4396e359d67a61a1103b2b13c6078fc9d305be225a263", |
|
| 296 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/docker-compose.yml": "70043bd20d67ff0b5213e29b01a9f0d924ae79a247adbaa68d3336a16ac543a27faa207144ee0e3c0680d36f330a067628d896b90b1400d0d33094cc935b1080", |
|
| 297 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/setup_sdk.sh": "43b615c56cc32dd3eae4dbab6578ab622ac67f3dc3623441968b2a555d17c0b1e2b97212f5fc2a5a83be2b531f928b16252a31da6c4964e9f98b908e0ad99f9a", |
|
| 298 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/HostedMessage.php": "7dc4009bf70142ecf9ee0b767b58256bcbfdeab78cf3bbd4102e9f6fc7cbc18655aae1785bf8f0027cc4807e256105af358ec95ab318f5f235d536ab8de39f49", |
|
| 299 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/JWT.php": "ee8052cfd45be4eac77df60902c518a14bf2df07ae7218322493a8e2d115280b87c65f9637ca766a63d82dce36c7c78e894984dc83031a9b7a8d5a6345d38214", |
|
| 300 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/Number.php": "8344d2e7f1adf7028a39b9dba41a8958533a52e9e6080d32e0b09aa2dd3559c02747194b3c1600a7a56e93f905165156a9941b413990dc793da033072df455b6", |
|
| 301 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/Phlo.php": "f9d6482c51987aaa3d7f0db59cd45030e17284262681866999309205161094d96a55a39dd2898d0b7980074d764e1bde6cb6ad1f50be8a40cc9d557431c1bf91", |
|
| 302 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/RegulatoryCompliance.php": "b2e94a834fa6e202ae5d55bb1046fb176fea510394a9816288e1f3659a5115f9b9d942828142240de84aff1236fecc96d4d9564c585869de62113c382d0c9725", |
|
| 303 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/SSML.php": "932a827eedcd81956c275529815a2f7542636b0cb887fcf182648e8f972006f6ba8ea4a763b3de48aac989f26a5e44752c7d3a62df256ee2b6a1c922de677e14", |
|
| 304 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Examples\/TollfreeVerification.php": "7de032cdc72ebe8a004256147a9e3280d584f854a4fab8ad7e51660060e91307b3ce4b97bd2874340c13fdba3f390accc48f5a8305ed43d4984b987ad7b95f4e", |
|
| 305 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Authentication\/BasicAuth.php": "42c036c38225556834ad5cb916db0c4783c7127909053ef623e7f71aa51c9fc968b9523fe5dcdaebee769cecdb0c4c76215116cbf5959b268c8792fa96754531", |
|
| 306 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/BaseClient.php": "bf84bf419ae903719cfd51e2664fe615ff4da2f29492201d4c86f3021c8e1199d99ee3819ca85074364562d36b67139247958053ce6bed019ba54b2909152018", |
|
| 307 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoAuthenticationException.php": "7ee7458999adea1ab1722358f669467cb35265eb616ef2eb16e6bc3d42a7f3c2fcb0b42655df8f4f21127bfecded765bcb479a6923dbf1a184e00f6e26321ab4", |
|
| 308 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoNotFoundException.php": "bf54dd70534e988c27d5e7d17bf8edf9dc65191b77677d9ffbf95ae3bd019f1ba368065e82440e04f9a0d7045cd62b5915943273b5d8d72ba01676ebf2975edb", |
|
| 309 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoRequestException.php": "6655a36e42e700283235b84889088e378bab6861ae98ea99c20bde017ed39b83dc743e5c166e8129b9910a434b119578b23523fdfd5e9e1dcf3d57c5cf9375ef", |
|
| 310 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoResponseException.php": "a98fe7e821244a4436dcd95e51344fd2e182693241f8b72c89046e0f81d98b0feca0d5bc5f4dc5dd7437760b67093d8a929808b087df52287ff36aa2e4526f20", |
|
| 311 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoRestException.php": "758babb40ea45fb50dafe5231605196214736f014860618af9ca7161157255cdf20c5b0bf534f6f6b30a4f9bf612b5ff5edd2f7adc45553ef12555354f82c15a", |
|
| 312 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoServerException.php": "b2b8f6d1d03a720885ce5718b1c80bc75c7f483f72a1d2d2313b98a37e152ca78bb688f7923f025563517a52de7e915325cf86e463a2083c30ca2473446b91c6", |
|
| 313 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoValidationException.php": "5faec3f351037d6affa710c10f733c57a7919cb04820f93ef0c19f75b2f2b2b8ae1a0d004c216673977539b713ca31475f233fdd21698a390319364d2b9a4ba3", |
|
| 314 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Exceptions\/PlivoXMLException.php": "a66429863ac7caad7e0d77f7a1fc105fea0a45e7eecb753e64bfd5a76c89b5eb06e4228bd63a78134090774458a646e10a11417855d3e72b2a6fd75aa754c625", |
|
| 315 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Http\/PlivoRequest.php": "f3ee560c9d9f059a20ce2c54cfb4fdad84361083761beba1e6ef37b6517e5bca9b87490bcd5477dff78318e8ce8584ba43f6d60cabcadbde05f1ad921785b44e", |
|
| 316 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Http\/PlivoResponse.php": "da74c73287181038242117884b1ab40c0957cee678737f90dffffa3c6534d2b127278b628d0de1da7c97ebd5e44bc95e0e94b2a2197b48a6e809e5b1fa28538b", |
|
| 317 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/HttpClients\/HttpClientsFactory.php": "a9fbd6c007260fc2169648c9c764ff7b5988af0874b21211f8e85e8a995897d597cbc0c9fce4ec5c8d60a901ea05c5a8cd70684c2302ea17bff528ac674ea578", |
|
| 318 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/HttpClients\/PlivoGuzzleHttpClient.php": "24e55439508438d992fb2cde1063bb09d1bb47c9aa65efb67d127c4e74010434c8bdbd75ec045d6f2ddff14ad0889a5849dc22f64ef2629576422a8678bee146", |
|
| 319 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/HttpClients\/PlivoHttpClientInterface.php": "61a18efcb4383bea7598ad9167ffe49a73e295d2ed3229c015f9a5ea08b00362005df1388cf6846f1c331b123b187290a1651341c76ce2cd4233926c927b6e9c", |
|
| 320 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/MessageClient.php": "f96e09d05b71a2e0b6675300132634f5664026bbb84472a1e7ca5f72b679390170ed5aa0d4e21a4dd1bc646cf0267f0f9240c931657f7cca9b2bdea501586d26", |
|
| 321 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/Account.php": "22bf526a376e6045fe9045ef4eaef52c769ceb8a7c3ef11902e66acdbb673fa521f70f446e6724155c8499cc700a6cf4f4d435ed06d81baab69f638cb15651ef", |
|
| 322 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/AccountInterface.php": "5093f51c3803de918f3a500f1754f47a3dbf990008804c07e543da253a22641b96ca2ae5faa7e6800cfa10a41f7d407e5d29e9907c0970a9183a8795be9f7543", |
|
| 323 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/Address\/Address.php": "7ba3e1e7e136d43989fa0449b29882d78fcea39cb764e54228c7a4a899d5ce4db2deae9d9ff9ed5cc53a8af72f98c55914c10be3dbb7b9a354b8a06e17cce829", |
|
| 324 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Account\/Address\/AddressInterface.php": "36182073184f67cb024e0c020307d4d74c8b5c65e3ac7affcb76e189c91af9750c318404d8ba3a5a6e104d64459c59c80d7a944395796f0f5aaad18d43d93720", |
|
| 325 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/Application.php": "e8613b34a71fd166032edc338f392101c9fa1b42670758d058002022761774a0cdda0257797063435f2ef2325333f6c64c6fc73b5a8e1d879d31fe1579545d0b", |
|
| 326 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/ApplicationCreateResponse.php": "cb1167e6057eb71e102d55ad2ac3cc2c7aa2a757b317cc97d8d08dc400548d4ac56379653583d53185ee8ab37c4dd189b66af011bc9a32baae55991922c41466", |
|
| 327 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/ApplicationInterface.php": "cdcb2a0a880ed8c7bed139ae7076d0d48a10670bf5983718e29e858a49e6e005a02989a3c39935c8dc49ccf9fad9d4310ac4c07452586af48200c3ef6f9db5b5", |
|
| 328 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Application\/ApplicationList.php": "0840ebcf3a0d9688cc68a82f11484339d8dadc9d1a50787ee11b3849a361a421f30417ad4322633c53633b4cf58ff7980de6ef87471fc88b16d090f127763450", |
|
| 329 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Brand\/Brand.php": "29b420d9401577765f9063dad9b8978668b9f6433be22afd7b540effa0eb887b60e994068089874cfd2a19ef777ca010878e80367a254c07e43768d755272bcf", |
|
| 330 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Brand\/BrandInterface.php": "d5b60c0ff569ea600c7ba02af065a474f3ad16f4dbe078615f224f48ad9a41356f923866f3780590eaef7ed13d2a18802555fc720e4f4dbcb374e82e4977d89a", |
|
| 331 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Brand\/BrandUsecase.php": "eeb99ca424e67b05f2b785ebe560371db5391fe6cb98bbb52b770a08e54521bbd2e7ab1ee7e9cc4c138a46a458d7b4742c01e2edf551affe52ed4a2016363b00", |
|
| 332 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/Call.php": "2d58ddc4d1aadccf54bd7b9efd409bf45d02077acf34d2731f2e5e47dcd0abb6294bafad724a55a5308d450f93cd7f737d1112ec8b25e779a256b6ade1277fab", |
|
| 333 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallCreateResponse.php": "a3a07958282fc5a6e7b99978427e2361e8828a63c06a940159a7fbb356ab9621a899e6e2a25c27d445fb92ac34b63d8e5a8b6f0782b7f20c7d9f4308306903ee", |
|
| 334 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallInterface.php": "f76e90d97f2e86db5832fc4828055d9cd53a668c810ada79b6479aea26a92447d88c8b4fc6af68ed0bc1639b64318d42c3805c511ef4540636a7d31efeb2bf79", |
|
| 335 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallList.php": "9883c38a74497c496cbf7c4a837051cb6bfa0ed0b9ca9298f8908e7195a000196f7c79b4846417c64af0aeddb6327e45ad4b36352a28e8300c977e21db0fbd0e", |
|
| 336 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallLive.php": "5a8aab3024646a3ee385d74bd4736961c222413518a81e3e631d2c6f83cf90b81303a78d59b05759fe4a42c682de4c2924752d03ee52efff450c14b58ca17eb8", |
|
| 337 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallQueued.php": "64552d83e5911b11202ae4a965bcd7c408643c446566c3d09aebb0bd02fac0dca41477988aae62e91bfb42913900f1eeae9d20693c6bc29651e2734b06cf18da", |
|
| 338 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallRecording.php": "d23438ea994b0ab936c3917d77ae9bb38bc9ca14dff4c5c120a0f583db46891af3bde1a8c3f55d15bacae99723e510184c14c60eb6d3d411d46aa90c5c8acfa8", |
|
| 339 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallStream.php": "c6e3c24b7acb13987d778ce34b45e071467623dec6f53ec9a627b85239bc535b875dc1e3dcf820d6ad9a6d0deab54f72986701b93b81238342446214d1b692be", |
|
| 340 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallStreamGetAllResponse.php": "2db0e9ce43fad40082086d54dbe7a5cf4150bb71d6750ae245f9b440b568d1ee7974001a2cbb5199418ee044d9ea53028ae505e7b264f9271bf4a032f4bca1d9", |
|
| 341 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Call\/CallStreamGetSpecificResponse.php": "36808052b0ee043bb1af4229803dc338f5b0fae0e54f98ffefd3d3287d8e1c4e8189849aa0c797815f029193c8c367b4181ceaad2a3beaf0a3d93b2ea0a6bc40", |
|
| 342 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/CallFeedback\/CallFeedbackCreateResponse.php": "cff0c47988bfee02787a2d73df6b3165749844c1a93b1fb91e87e80582bd28c8c7efe101fcd532bdab62886eadc6354924eea81278da5037ad9d3ee5d8dc8f29", |
|
| 343 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/CallFeedback\/CallFeedbackInterface.php": "7860708568f488bd0832e626123f4bb5ab986fa5d54f305d4744503ceb4e919857b78a02b766e7241d324a77d86592f60f26d1ed78955f5550bd0fcc7bbabcab", |
|
| 344 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Campaign\/Campaign.php": "3a9dec3253800d8211784fbe81d81fe88069a85dcfcaddbc816259794a3a75175401d9a40834df41c4346152b5d000698012b4acbe3cd72c6a8d564407689432", |
|
| 345 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Campaign\/CampaignInterface.php": "eec2fbeb2c1e9251d2fec6eae74e1330487998bfee978bb6adcc6d7459080624434ee6d6c5267233928ae97934e887bfa2529567bdbcbed10ff86a0704fe4123", |
|
| 346 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/Conference.php": "8b97d6c9abee836cce410fa1216fdb5aa8a4df0c8543a75c2415bb31a5ee2d87531d5d162b218660a33cdc30539861cb09d85a780feab2d5321d0e8ce06194cc", |
|
| 347 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/ConferenceInterface.php": "34f563cac4a75ca234e4517cb4678998461011440f30f9d81895adfdbb2e1960009114773ac30901dfbd2596d327554fd335057de66516b656f7a96446f4b06b", |
|
| 348 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/ConferenceMember.php": "1a880200a2988394ed0436702f805ce60762be1774e1d156f38e45be39cc72203fd4f04411a521ceba8fa9647cb00f6d1bc6d94798b66f12175fc68d88c51dcb", |
|
| 349 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Conference\/ConferenceRecording.php": "1c3239209726556971c2cccc812ce5bb5a3fc8c7a0e4f3ef520e037acde32d9659dea1dc5d3803e1f7cfd39e945a1680983bdeba8cf62459fc168f0df731adab", |
|
| 350 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Endpoint\/Endpoint.php": "4c9a87fd6042a3eb486af5dc899d1e4c0948de5ebb1467cc85704030947e2588e79d23407ff662a21b097fb46a05925c3df29dd6e2a038555cf44844342cb206", |
|
| 351 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Endpoint\/EndpointCreateReponse.php": "f77356f3ca29ef7163e47530004a5d79c1da73e922b17333a89512e39c7d3cc842b161d9dcbc745075f6a6c7ae27b7f7cf85f56a6d5bb796b87db4efbb8425ae", |
|
| 352 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Endpoint\/EndpointInterface.php": "d891464a10ab83de9c3c0de1eeb9accbe94db84f3bee5181ccd794e236369d820c60b6d043dd54eea3320bddc4b724ef0db65d021b83c034f7cf4d625a6e70db", |
|
| 353 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/HostedMessaging\/HostedMessageCreateResponse.php": "2da65c66b99a383d449415218c5b20e2e416da49d4bf7405064bd41ed014a1b4250942beb279048b78a0e8f45ae16a1d8033ab688a79a08450c2a7a90484f677", |
|
| 354 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/HostedMessaging\/HostedMessageLOA.php": "0d7199e7dd906cf2a88d909067bf252997304eff57db60a3e8b186eda6959205c6737f9e3240ef03a29e4863bef36822dedccf7ab1a88ace2346e7f8dd7c5ece", |
|
| 355 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/HostedMessaging\/HostedMessageLOACreateResponse.php": "ca424aab683c6862983784a7f52da0e15c0b95f1799c98dc3270d670ccc4e5689bdf040a9087800176b4d0f182b3cb19328792cff66d9337c49b48ec7c403249", |
|
| 356 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/HostedMessaging\/HostedMessageLOAInterface.php": "66f48aee49a4a623de804b879f42f7e41415e457026d7b63c05a60780fbbd7e0310ad3fb429a5ddef02e49adf374e704c26acf1cc152a97311cb13b124b8132c", |
|
| 357 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/HostedMessaging\/HostedMessageNumber.php": "f26ae6ba1e8e6a4278e6c21bdf6ce03ee762c3940d11d0814ce18b5627c85c34ce1ae71a544b0038fa2632da3e3b89e85864d8f7829e8194658bb5c427b6a397", |
|
| 358 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/HostedMessaging\/HostedMessagingNumberInterface.php": "afb3204799afb858d033e23424b995b7d8c627185401cb10995f5d4e2607338a4fc9d697843c9bce080b68970a8619817cd1f98ec01355b03485c844ffd54532", |
|
| 359 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Lookup\/LookupInterface.php": "040b0a2c01ca3c0c02c2c8450b47e8d1847ab7158014ae161ce971e330712d14d389cd746a353707d2bd2667dc604e55c662af8eb15796cfc613f285e170ed15", |
|
| 360 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/MaskingSession\/MaskingSession.php": "fe3f9da1ab879616ed763bc7bab0e2be6bf4121b978ce7c5f58d432e34cc4b6f8e88338eed6f37e6712cf48f008ff4574d09768cc86982a06c85a0c8a2a757e9", |
|
| 361 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/MaskingSession\/MaskingSessionCreateResponse.php": "cd7a0c616f3edaf2a8af2c2dffc3250d8c113e79de56f74255f4837a8e4ddae3d14a26518d5da01a46cb4e09a4006111fc2e1fb2bab889a3fa92c82298a0cbbb", |
|
| 362 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/MaskingSession\/MaskingSessionInterface.php": "cbb9c6ea7e0d14336837d58d3879afc2040b11104d48c9f91d7fe87673ace593b7faeaf16cb97b3fed81619a0fd846e6856915fe6c937d30ad0d1bf9580bdf05", |
|
| 363 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/MaskingSession\/MaskingSessionListResponse.php": "9bd1606c7911473506fa47fb32b880af0243b83316982a19ca1f5afb33a4c6ab59ac9528f1f6442d4700cb6cc44f7dcb3233d38fa7386f45549f60925623d766", |
|
| 364 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/MaskingSession\/MaskingSessionUpdateResponse.php": "d57e63242b56a51e2db8eb266d1edab9aeec53c6275fcf3f594b89d43d2cf978aaac477aa42a498c80c7919f6ffea187f31f9ae578a5d92a473057b4075c54a3", |
|
| 365 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Media\/Media.php": "72b83f02669ec7b942dd898a74c22e909cd9b058ea2e903e92ef4dd9e985305311d53c30a0c54a3f0c210433aeb7b8bd04a4b3a768c853aa73ee4dad9c621a56", |
|
| 366 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Media\/MediaInterface.php": "1cda06754bd1ba503a8405561594f9d3cd5befee2cc6d9cee98542886c71601bd8744899e7ede346df6b90552f05a9eadeec4cb4d11fdab3269de88170cae961", |
|
| 367 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/Message.php": "f72a04fc19e1fb91fbe4c5145097c2dceb89b83cc0c69c105947ae0e88aaba66b65c995361f92a429d1e17f5ec71e37c284b32663419e1793915fc6afe335d40", |
|
| 368 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/MessageCreateErrorResponse.php": "7eeaba3233f5fa579db4ea0862bc3fe555437dc59d84018787a3fe43363eb7c1d2a11e801f15cc599ba3d4bc81673e12525193bab9e8ab91f016e57933415a69", |
|
| 369 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/MessageCreateResponse.php": "7d567438e7f7982087c4036a763ca3b8790b1e6c690d0e0bb33c8b7b5eb22837f13e6e15e94802cb8e81c33ca9450d89531a6177a446073a03c31232b66165ad", |
|
| 370 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/MessageInterface.php": "f4a9d060694790972b2cae803154ccc05620b7f8fae0495c7708e772ef3ecaf955d7ced7e71d4066081d87a1ce5206ed715eb43721fa96403b866ce087050656", |
|
| 371 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Message\/MessageList.php": "a34c9e7b14a28bbc8acf237ef57121af74693a2e2471fe7e335b1a5a96e4818e358312cc1079bce2a5e1a375e9f029efccf9f5fd312f5e84dd0d4c534af8bf96", |
|
| 372 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/MultiPartyCall\/MultiPartyCallInterface.php": "95db6c4f91f2653090673b9b4999779bd690d550e8ba0ff60734979d415c3e729f092ae3ccc9de170b39c50a21aa0a854a9185cde12c4e73c7c79cd33fa06d60", |
|
| 373 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Number\/Number.php": "f9a10d8466ac4a76b4166da7c0d53af36117bf53a8edaea0f3fbf8074551d4c33b544e51b65fe1a8942a06736df419bb3ef66138515fbaca6d429131f6f421b1", |
|
| 374 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Number\/NumberInterface.php": "6c1c1a9ca3deda73d371b606e6a9e0c78fa833321e6c22bef803982abe0bdca21213ea9bb5593a6ac990d0b01286c8bb3861ae7f8ad8eca3c87ce17dacb5822d", |
|
| 375 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/ConferenceBridge\/ConferenceBridge.php": "3da97309ccefdb15596bab5180d386e2a78cf938823225820f5b206d8d8f366209dcf96bd139cd0364729c8b733612ae067d03e1e29aef472c4dc82527d3002f", |
|
| 376 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/ConferenceBridge\/ConferenceBridgeMember.php": "9ee728dc1f37fc183fd4890ca5d213bb1f47899d2379a16009de7ae32b75b459444a1a329357faff349909ee89843ac5798c75699fb2b8d939501f61dc09b564", |
|
| 377 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/MultiiPartyCall\/MultiPartyCall.php": "d13d863ee416714a697600882f33b88a8bc9de8d5603149fa199f787d7d904d55aaa6646cfdb3d71caa99e4e95d7e352199e8b54230d3c64cfb81924f1b603f9", |
|
| 378 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/MultiiPartyCall\/MultiPartyCallMember.php": "6e8f1c6a1177d0c933352bc2d8bd54c989db7679f2feb893f430e9e634c446d033d01a82ea740185b1926734f285facdb3d99b18ffcefe83be723fc08b50fc12", |
|
| 379 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Node\/NodeClass.php": "b8a08dfe16a42c08ea66d141b3b4471caffd2bbf89fa4b360a1b16a7072ea29d538792c16b93f1e3f1a1a01d564acf1a40906c32482c4cef0ef42f1647e483d8", |
|
| 380 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Node\/NodeMember.php": "e13f76753f278f07e8778f1d0ad64c9ff401633423ab2476700ad0711ea5534f7caa871b5e10fbb26096feca64471205082f9ba45de607e7ce71eccda0e7db91", |
|
| 381 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Phlo.php": "da8e7b69e9290d876b6ebe6778c09ab68f47f13cb22438ac92d6eb880b7fe72ffcc68c681cbb9be074e36f3ce4afefc69680e7a3493d3046a04ca9ec432d7a99", |
|
| 382 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/PhloRestClient.php": "5f3b9bb5e3f7dd96572f1dc71531caeb0b14b21ba7c291561c1ebb040c3ded22bfc0dbd9030843cfeda8b4f83e69d86ed9db2b3b7d0cc8b311ec64000f3b935c", |
|
| 383 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PHLO\/Phlorunner.php": "c1f3764aa4a4c14a33614bc7cdaa05043d268b24f88cb2312bec3596e5e7e5286e9d0429edb8583b640723784b28ebf69df691d5e4ec53b7d7912252832c3ed9", |
|
| 384 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PhoneNumber\/PhoneNumber.php": "8bf9dbbacff1fde79f41e0d97f33d1b1af12aa00fc04bf796f88c585790b07cd87d9f04c0280612ef71c9207e24c88c10b5b86ee969ed3c1a297254aec951fe7", |
|
| 385 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PhoneNumber\/PhoneNumberBuyResponse.php": "0466cbbd9beca8c60ebc557bba613ce55b92871caea33f0fff58fc8c21d44aa1c647194c7c0f2d3cdb0d5d55ea08f1fea2776fa79a69f9ac76f2af03dbdec118", |
|
| 386 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PhoneNumber\/PhoneNumberInterface.php": "b884f7543d8296ca8ecc67b6ba067899a551b1a7f4d95353edf2693a41f81b18ba80f637dfb96cb90cbe1165d06be554f5b3d5f0175de6d8486f96c1fefee7c6", |
|
| 387 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/PhoneNumber\/PhoneNumberListResponse.php": "a0230d00285c9ca11ecf55c38db0a0301bd6f3fad7e35c06252cb100efcbf184b515942f6b3bf9bda4e9dca612f55d0b7a1b0be4ad436a631632bd8f688f6b7e", |
|
| 388 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Numberpool.php": "a774de315b1d34a61c9b9af9b21b8fd1f624b48bcdbc7ed1302ed25cc21093e05ce1533c0ce4788ad36ab28792878321a99b941cf9e1a8ec7fa2f2ab1d16f872", |
|
| 389 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Numbers.php": "9bfaf540ba5358e97c64d31510f2580dd65eb7c0bb4e4de2c23dac9f701bdaa5356e19db1179dd0355a6458e6d272528b2cf18f3ed1f5edddbbfd251a4a59267", |
|
| 390 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Powerpack.php": "f9027e960daac00ee079a4afbf9dccec4840c3997a12e1c11c64a7c693d8ff740ca2e0d2b6217a1a9bc85459d9a2329280e35e35571142d0801eaecc19b135f0", |
|
| 391 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/PowerpackInterface.php": "e09a8e4e67ece27935a81730b7587bf29afe72ff9aac57b6c0efa6fdbc4b7cf4c91d60bdcc506a2c0b86f7a4cf7df70c38135e295504417d39024a4671b3cd33", |
|
| 392 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Shortcode.php": "21a9aa490134e13f1b8e85bff8fe8c274af83c6531e55ebc891cec3c5bdfbcb2b02345d297c5d614f0f3e0f04bb17fff04f2525dfcfcd2b325bf1c4a1a94c350", |
|
| 393 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Powerpack\/Tollfree.php": "55ffdb890fe410cdbbc946e3860d50e6c547750d8ffebd057b3cfac7feaa54c306558b8b406723f2720feb345861aa55875dba5c1272826954484ed07f89b73d", |
|
| 394 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Inbound.php": "285fd073a2fbf84c533af3c0e60b369689592882364413a1879691a025655bf4bdc40831d13d96c59ec7a8827233e92d478c14d1d648df885c75fbe3d054351b", |
|
| 395 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Local.php": "5140df58e671179a4edbfa82fcb7b7277e440706406200255ade35177e9a715c3340f5920c4a57c351b6e222f7bb1ef20b207d0830c487bd14b9fa713d3d8c4f", |
|
| 396 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Message.php": "ae4e8bbe3a668748ba57bfa571cabcd97932d6cb7a8a63ea04689863ccf75a63e0aa867fad60c39e263cc685521a8465b46f730014933dcdc941ebf152fc437b", |
|
| 397 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Outbound.php": "7656989e6b1da4e4887f8443304e422ad2aa01c9c05aea5b5245b4f3edc333935be4f573fc5105e13cf03ba6ed0ee0ea323cc76c833846bc5cfa01f3a0f33763", |
|
| 398 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/OutboundNetwork.php": "900ae54c0c0aa0f85af4f02da252a34907999bcd311e9e39ef8d8e27a16fc6c8bbde5d5f6460af6b8e68cf584419ccd7fbc4de177cb827cabb5ae9b2c896494e", |
|
| 399 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/PhoneNumbers.php": "cb51001dfd504ac52dfd39e2a0fcd01686de42e78464c76767f99fbc7884cc2d6e304cedd72e66dde42852f72cd833dc49dc1e92fe1487b2682648432e7979fa", |
|
| 400 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Pricing.php": "5d197bd5eef109ba3d877f6de48f8567f135466adf1d811d32908d8d4fa7c8961592733d6bdbaa4f646c3d25a31c8098768dff183d192617b2c1726e8f41c447", |
|
| 401 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/PricingInterface.php": "dc940fc2f0338348b06fefb22caa65b98fbfd37063621fb4e4f1e23c5dfe21149e2e648c1a32b09012b34c5bd622fe28126bd33ba1255c6ae3c370dabce6ee97", |
|
| 402 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Tollfree.php": "ad733c0d904ecfd646e79a3b6bb3ade270f99df5e6353bd6c8695322a71238fae107a55d33167063dc2e4b1b905273bb0631f051d06cbfcf5d01c94e9252fbdb", |
|
| 403 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Pricing\/Voice.php": "ab645548152bfd840951e981c0d18aad23d613afefd4453af077a6055f902d6bea6a0bcc805288f130da6686d8419913e86422cae35b57c1087eea3371b7e799", |
|
| 404 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Profile\/Profile.php": "7dada22f61c8f518390718040ea83aa3139db2189a4ca311992c278a29b1e97861330fdc5491f964495624e1faa61d76c69a91b62850d2baad9f69b552395125", |
|
| 405 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Profile\/ProfileInterface.php": "97f3fdb5016496dfe06a697b4c116ecbe38e196bda865a05f793c32fc502bcf9ea0da7278b2f6cd2f02480a5999ef291d6a4393f5f46523fae4b5e7b624ecdff", |
|
| 406 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Recording\/Recording.php": "8ee0387f92076589ed801b03df3ed3e0d9001c9ef98acbd02828bbb2eb27b86c78413b8008f73e500e63f91f2c0baf93de73523de70b187800ba62f80355e6c1", |
|
| 407 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Recording\/RecordingInterface.php": "52ed754a7adb7657b2ab07ddef50cc8f9261e86531be06c6cde3eb44453f9ec69546244c17e49bdfff9081cba4c8f723dc4a5bacdac476eacd6bea67de90917c", |
|
| 408 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/ComplianceApplication.php": "396a37b451d73f8f94185d2742fb91c329c5485a77ea9e60c0c7e2793b5dfaf8ea27fa85ac210fde086daef2135342d5903c01f107eae73661fac98424f76a99", |
|
| 409 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/ComplianceApplicationCreateResponse.php": "52260318f5d91e50613eec727124cb8eeb5bcac82133abe382dd0ecc9d8fb076a02dab83f89827de876fe27142fbc7eef8e4ac9ec7e014b1a20522d04b522d7f", |
|
| 410 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/ComplianceApplicationInterface.php": "c088876527303e67a996349b297d04978bd9bf07a6dfa46074bfa8f657493b1d98138922e66370cde5bc0e59107729367dd5a75dcd70ca66b5e43913163d577b", |
|
| 411 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/ComplianceDocument.php": "330fdbb461b2b45afc4b875eebc2bb7030e935e8d0975070f7b6b23566b1208d6126e1bc05b3816e86f24714e2ecc3b8d7e454267408350117ec287007a5a63d", |
|
| 412 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/ComplianceDocumentCreateResponse.php": "7d7442132ae15c2d68d9bf0ac5710302ffc62ae6f3599564799725767dd98410591512830a9b4069fcfcd2cbac139f1b41d844e133f4948f0154d32a51a90efc", |
|
| 413 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/ComplianceDocumentInterface.php": "9c30e57b61c33a3af617cef25759fb2c0d936c4375000f6062596558839bbdc629080146c1924aa7e99db875f1099402880984474e26a7cb2fb57796b2045ffd", |
|
| 414 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/ComplianceDocumentType.php": "70103b042b9c4676a0dfcbf35bd3ad23f60ea471a2c84d6629a85776a35ec4a1e875301a8dcf53a90282f2f7d438d5f772261fe5c0ea8c21154a8d3e4a95b8d5", |
|
| 415 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/ComplianceDocumentTypeInterface.php": "101b89772c2a7b5babbb8d25bebfe0f2c201083be587a3fb8563665f2196fd1e4f265ab507aaf397cb2b2aa307b0814de8d456e649c95890990174b61f30c10f", |
|
| 416 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/ComplianceRequirement.php": "c2895239331453b085eb921a929ddae5e563764c10e6f2f2c39efec995551433335d8a047a36087a83cab6a7be218ea2f0ee7636cbf48c43aa66429840f2b7c1", |
|
| 417 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/ComplianceRequirementInterface.php": "9df2f195703f9d4a748a88aafa58e7225aafb1e658ddf122457998ecff128e11493b829c647c9eccd81dfcdd78bb11a58c8b3fdfdde662797424dff767ebe17f", |
|
| 418 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/EndUser.php": "4df7e44043daa889ce8e040375524de7ef658ad3e231bc3ee29654e0a27002056a95ae2865504d4e402242f1a3cc05f61281b5c7e896d536d50a54b725aff116", |
|
| 419 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/EndUserCreateResponse.php": "6ba32951ce0c1a752af96ff9b6b7ac552e0b17109925e9967008210e3017b63e9160f57b334cce1a30e768c255fb18a5678798be90e3f53ea8dbc2a3de28086d", |
|
| 420 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/RegulatoryCompliance\/EndUserInterface.php": "4fd76578109199926b79662516552b0b3d51fed2e747a27c50411e6dcb674b5c02131df08cb0802753849d81a5cc51886c8d8b0ee34eb4169fbdf952ad7765e7", |
|
| 421 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Resource.php": "b8a8f583217c43c3eceedcb8f047efa1569bfe5f440fcf4f252f1a8402f484e18abff63229521f89697c1f7df21a2ff919488fcd9df42b5aaf7a160a50f0c62a", |
|
| 422 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResourceInterface.php": "85bde5b0479b85aefa79139d36192ac334e3deb3a07353b7b1b0cea1180a050a92dcb563ef4a968b6436f60ac990fc5c1322ba3ee6f4ffd41d2997d604653b6b", |
|
| 423 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResourceList.php": "ae8cc402322fd35b15e5e26209b761df0371b9da0f02ed3de657d2e77d3ac5a06660e98457bc347a67b3565a47078c61e2d421e3b570e5d8fe295e6ef6b024f0", |
|
| 424 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResponseDelete.php": "3acf13bc2797c0ed58c78abac46ae2822a67b9c9194b3c9864738516847618c0033fe12c5a62d9dcb7d110ffd4264c534fded370d04a2960a2da32059fecaa8e", |
|
| 425 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/ResponseUpdate.php": "4db3ee43405d0a456dbc23801c2c0d71676c3f88ac7c4161395ad275e7fd0dc6b53aee99a882706da4f14fc6c35844d54143a7fa3b6597a5a25d59ed67e0e6bc", |
|
| 426 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccount.php": "b39e628ab06827320f3dcb47d3ea55d459af1a133430e8e51e8e6aed5216c31b54498c836cfd2a5c5f2d9cda4bcac03ac476bd8ae81c3ee2c7865ddfcd359dfb", |
|
| 427 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccountCreateResponse.php": "3b92a7ef8da848a7a5d7b79436ae557657e97141ecb2bad076e69d495d78f94f6e9c68464dd7e790d64dc563428e4567a1baf96df1f8bc97cfdcb946e60e94ce", |
|
| 428 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccountInterface.php": "a4cec509ce127faf30261cf75555a2905c6e551223b4b90949251f0822dc20d7b97efadbcb6bb189cc9302acffed8106ceab79628a7531c161f4f713d6a26c4e", |
|
| 429 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/SubAccount\/SubAccountList.php": "228e0fc0fc27fb523c9d2d9e62de77a5deb3bb2a29c10d91d7c59b6cf36b3e12b8b1935a69fb0ceda72c4008b2a04436e6aa3f84740edf265d0f647eed7c52d4", |
|
| 430 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Token\/Token.php": "c24e97086dc651668cfaa593e3b783b06953f2a465764200fad6941af59586b86c2350c062d43f4bc8f61f792ec03a848dd59fb4b14fd2aa2db0db758f8284df", |
|
| 431 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Token\/TokenCreateResponse.php": "31d61d7a6a250106a37cd2fd26f9b0b4a5a36d55622b007c890934ea7eca1056b13f6ccbc84c628a967555fdf7d53370485250182d84f3b69090004a66011558", |
|
| 432 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Token\/TokenInterface.php": "5c0919893e92c36093ef3cfaec86a1870b66bbfc2d997b94e8929098ab874180a09ce55cfb308010e39732ad647a39d98651edba97efdc4a9e67f792ae0adf12", |
|
| 433 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/TollfreeVerification\/TollfreeVerification.php": "4e62927c96c81852344a4b05ed4769d6a2a2ef4fbd62fff32069c1473af637297b0df4ca672ff575c9828c65c5c3009944ac7e4a5c25dc19da2b22e492746a76", |
|
| 434 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/TollfreeVerification\/TollfreeVerificationCreateResponse.php": "01b0e4222ec198ccd1d197c014ce6a44a4decafc8f59265a6abb7b67f86bfbf04370912f48758abe76c4232df7c1d7db3425ee40512523daf8eaab84371c1a02", |
|
| 435 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/TollfreeVerification\/TollfreeVerificationInterface.php": "14984b40ac4260c7b794f410cb9d9a830758f5f7b31157a3be999533d7d097f9a2d6297f0ed6a9b0c9a58cfe57fe8a5fd0f451c95ab31e33020f1da1e33722da", |
|
| 436 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Verify\/VerifySession.php": "ccec56beb492ce50059271d765d039982efc538af08be4e5ab442ef43fd1f2bf0166fee490641a655d54fbcddf7d61b6d787271b4187d1653fd29d028549bf78", |
|
| 437 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Verify\/VerifySessionCreateResponse.php": "b95fadebcc97c3ab93bc218bd7a7eb7a4613907ff20c5eaa2a7693c124f42f8f8f0587866001e8b3de1ffe3d09abb6426d266f2a7c6d16dbbd41cbcf2aadf300", |
|
| 438 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Verify\/VerifySessionInterface.php": "54efa870143566b27fc6fb59273ec258ae5526ef5b3c1f3a2771554d49aafc8d72411960bc1979bb444b0879ebdf9050871de9f938e3493ed69377d116f54ce5", |
|
| 439 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Verify\/VerifySessionList.php": "a12a0f552c5a534a45a36639a6408cc5d9fd4f8d708ec906afe0c57c07f8b905122dee6e9efcd748b599c65fb14422495a8f43bacab1425ed6139ce83cc08b31", |
|
| 440 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/VerifyCallerId\/InitiateVerifyResponse.php": "7185b0c772adb46c0be4a315085aa45126620e30e791ce5dcd55fda3b0cc18295aef93e508123460f25f5c3ac67b36f12420691b920de577ccfdd11d542922c1", |
|
| 441 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/VerifyCallerId\/ListVerifiedCallerIdResponse.php": "b95bd74f560aea2ae35c72d29520a7de515958ebf6cd98d3b2c18ec984774f7c7273a16b42a4c0bb3b5ab7a14e249f0c7d99acef289aeba69fe44300067a7587", |
|
| 442 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/VerifyCallerId\/Verify.php": "1c49028c28531b623c4b62f4a680b1e3a6184864ca631693140fc9cda9d9f0864b056107203033b76769ee136b802eb4b13d3fd20bd39f6d635444e57e03af8f", |
|
| 443 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/VerifyCallerId\/VerifyCallerIdResponse.php": "fa596c9b0a5c8e1d17d27d9d504ec0cfc98618825b3b3e6dc82797e256a907f104801bc9976e3d0a104e365e725d3ff25fc086d9de39a2562261434c8246ac6b", |
|
| 444 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/VerifyCallerId\/VerifyInterface.php": "a46d10a4ba72332dce99b2b7397e834ccbf832a9621e181df00dadc72e1d1379b62f2810dcf78ecc025ee0add95464d653cdd2d46830c374a94dcf3f36c87b89", |
|
| 445 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Zentrunk\/Zentrunk.php": "c7be954afad4f1da56ab9b294d22aba11e0130b5c7069941f848dbbeea5af45000d578078d14daa73449048fbd0aac05a38b5b4e9953f4f9f286073db42d5a60", |
|
| 446 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Zentrunk\/ZentrunkInterface.php": "fbd7be05c64711d4a6fec79c524e084a6639e046c55b16a338e363d79ed63d397efee33834bf616386ed77c9c6fbaa591c18c90ae8016c3b9ec3a160f5536ddc", |
|
| 447 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Resources\/Zentrunk\/ZentrunkList.php": "58d03f614dabd3cd2cf896d4ad0a5b7cb4661b5e3ad713b9c277a5f685d2213ae975664769c67052ec736399f7ebf52a7ff2d0120b08839b05f7d45e3cb3178a", |
|
| 448 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/RestClient.php": "45c8884e81daeb389b9847648e1627c9e6e7e25984f45b005380ac37fe8c617c99949e78dae8f2e1638f0afab38f9db7be2c4d0bbbbd6cf5f294073a416b3ea0", |
|
| 449 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/ArrayOperations.php": "04a84eb09d1ba33c3414dfc74d1c4b31c3149dc8e3a038912be632673a92e693da8e531a987c5ce747aa11fe01bf65bc05ac91924ccbb8f157c15c62f8ce9694", |
|
| 450 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/MPCUtils.php": "66fcf2a93c0ecfd5fa00fc4d8e059b41d0742586795b2d7be7ffdc8fc4f60dcb64780f786fbb36372a5949004b08a52c05e5b77533d2cccffb38cf1693db84da", |
|
| 451 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/interactive.php": "96ea9a12a93fd7201544cf67c8fda4b622e436c5c9c71806f9a6beadec4bc83f115014a20321310f12c35bbedd19647ff3c0597405bdb310a485ff5dadcac71e", |
|
| 452 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/jwt.php": "61ef00cfe10afee4047149729431595a9e21d44b25de3e8808014312a869110bc22898552fd9216cda6906c91de2b3ef9d723ff0d4e18020d1b7f5d1050fe810", |
|
| 453 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/location.php": "d5635bdb7addb3c01ac04566cf3b9204999d079dffc172118c313dc81879f28893140a188d96b35c6b794c48d6545280816b610fe1ac55b39d8ec2463fb45c34", |
|
| 454 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/signatureValidation.php": "2bf40afd282bd8711459cff1b366510ea253508349adca2f64ad101b6c4e3e20bf405194b9e421ea7cad5b738716624127969de5497e16e3647872e0b3bfc6a6", |
|
| 455 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/template.php": "56d63efbc4b570366674d219cd620e66916c1ee1ca003a20a8d82a73ec5da318b860872711eebead8dccc6d4524b783b920d40525abc36a6bcadb4eefaa8fe2d", |
|
| 456 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Util\/v3SignatureValidation.php": "783d3189885b88afe370720c8f18f2300726447cc3365dd2abf030f0224ca0a902a70b18889cb5b2451e5e203565846af9b8aa6baf20cd4793ed6c4feaea6b10", |
|
| 457 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/Version.php": "cfcea3930073edc7bea68707247760d608d950e51a434bbb46d9c5d5515c684837370e72796443aba914eae2f31c7ceb05c0114370b613327c7fe842ae2f975c", |
|
| 458 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Break.php": "89a669d486a72465efc2c6128deb6760dd86c9fb69cd8c0f57c209d10eb74067efb50bc6f0e68e2d1c9c2f39862ef3fa03a35c65b7395aea6ca963a013869658", |
|
| 459 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Conference.php": "bf673327e263996b05a0b45e323168e3d44b27a65efb8a8acb0eccb0276360c1a0391f08edc34ac617aa079c6c2b1f45eba6142446a7ae2286e23f337819caef", |
|
| 460 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Cont.php": "45ed9435166f1b72dc5ee98afaf3547ae646d16d41677ce5409a6005ccb9ff23743e4c528385a1e0a8f5570eb7ec9374433f609bb8cdcbdfe756842f1005c52f", |
|
| 461 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/DTMF.php": "14c619e3f01d6dee2dbbe9b718c6c64458a97bf70ae333455aa45c9cce91e4bab693f5265de0099c9cef2334a5310bb85e3374c5f0cde9b93c3051cdf5b57a4f", |
|
| 462 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Dial.php": "5fee202e0bbbd3009bee9cd96530efa7b3308f17b633ba2b13a230748cd428ba1f5aa14a0f23465fa04e23996dec8b24ffb21c7a9c3091f38030070cea13b476", |
|
| 463 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Element.php": "2e01c08bc58f0da55a59c6fcd2e00c3757e250aeda47adfb4a989459f7d0a4a98fe5079b63d79c3583e0b2229a5250a7ad851cd9607c01baf6c7222e99eda9da", |
|
| 464 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Emphasis.php": "d6fda7993f909d3a1a50441ef74003811252d68a33ec2da63d3551236a005952d3b6c7e2bcdf5d9c85d33bee2a9255dbc2b95988cbe0e115b42eeb667d58ca38", |
|
| 465 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/GetDigits.php": "e41a4e05fd55fec82a24cb2a545db122000251abc0986715a4d5866dc64604ac340c59cf0a30a35ffeeaf17713eed730a7705f32aa20aa3b14ffea368cdddfe2", |
|
| 466 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/GetInput.php": "cb11a5e0311d3b8938f7d94462d24c5d4b8a2ea4d733943253ffcf36aaa648cd3a4337d732799f382526e0e2b2059dd1489e9ac7fc5ae478eb1db07b3830a711", |
|
| 467 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Hangup.php": "6a7ac35846ffaf61d8de286929bdce05974799b26b17f4d61e68b6f740cff49bc4a0b72899d1150ae03d72e4f8c4dc7cac491872e76be0aec6b1a665446a9226", |
|
| 468 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Lang.php": "c16c3db519373df61712fb1748f91785d79ba0fcd7e85a32cff1d17ae89768cbc10b3c4cbceab380fa9762cc1b6948d8fa56054d78185f8c9c1d6c60a012f527", |
|
| 469 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Message.php": "541a76d5dc1e25633d7bf67c83d1fa123820296b4755e7e48aca094040ba0c2acc6215eb29176551516941b8e8225e6084fbf89892893557e12f678cbe2abb86", |
|
| 470 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/MultiPartyCall.php": "e180fc9b3e7c245eaf199a8155b2cfab7a709879722ed12b82eff924ec5a12650f111806990fec283ef8117ba553e24928a4a7cf644d24efd6fd2b03f9eea216", |
|
| 471 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Number.php": "82569de717d895eca9c4270a3fc48022e666e59e6d6c74dffe4982a8db1f6031d80c51863226c750cef5db111f0de940878baaafb352153bd0d053f716c43fe2", |
|
| 472 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/P.php": "d8bc0f70c13af91549bf4c37ce4c95b6683590ac9c9a3006bf2a4dc02d85ea63a33d0d8fce4a6465f25e0f86b35994d98e7bf75c07e30737305a7f2707ceb444", |
|
| 473 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Phoneme.php": "9bce52123dcc7451f21ecb2e155884479b7530715d78d175cd616da86198151481632af22cfc19f9c70a4cf0f29f3262f335982fc9988e4aa3a435cd74f14c59", |
|
| 474 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Play.php": "9b25a9f3a6149ad856c4aa008c405192bf2804432d83d3a572cf066dbb151b8298272b0a9185bb26a5faa51c03d069aed172ddb135d4dff3fb99af9fe982ded5", |
|
| 475 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/PlivoXML.php": "03c37815022f4b4e7ea917f69b5516c3bb5499e68b65ed1b50f7427d9827de1e84037745d25b420c1f81ab829f51ae752b126943005c82b06a668c8ff895e923", |
|
| 476 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/PreAnswer.php": "f66f22bedaae6dce341d650d5ded5007d867361c570162a642e0a15f5fd6e90b49a4c8fac2d3a1cb5fea446c75e30834a1106a3acd1ac02a87b5a7df7c1d5af2", |
|
| 477 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Prosody.php": "12c8b634b226bad4ec0a7dea7b8249959943bc5ab0e71f75fd42afbf6d1413834563c38430e9348bde2cdf1059f266a2ef59fb7a8f6187ecec135ee9d5dede4b", |
|
| 478 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Record.php": "bbead6ca5af5854190250f565f1f581b421efdff63c46d7a34820b2e539f189e97f9835addfc789ebbbc6c111a1fa1323e51ed06f8c59894264b0a5643bd3158", |
|
| 479 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Redirect.php": "34e09e0b208c4dde1c4b53c451b09f23985c8f74737e73f4675053494cfc81b14920afd6620ff161877c4e1b7b6e7381cf3f824a2b06508d84299aa4e0e45690", |
|
| 480 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Response.php": "33867813ee731ce7eaeb5aee909015df7a989ec775e5984e156a6695186074a19cab688409d824e6bfc472462c9a0ec68441a50cd1312a48f19a30f85c9ce57d", |
|
| 481 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/S.php": "d0dc3f3bcc818d107fd8e4be38718587edf610e3f840d7e6763ce8fef51a1e96de3b49076995802aac9edc7d8a976ef024a1d45ef634599a56d13c56a8ba73de", |
|
| 482 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/SayAs.php": "46c8fff6a9dbb36df1bb14d0c4247569e00ce77b37730d7f8fe6fc4a404a632ae70e48c774f40c4ac0e19b10ecca7c09686c7d5a6fc7d5311edcba657177b6db", |
|
| 483 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Speak.php": "39f068c04e8fe3d3621b271f42808d785e163cc05396bdbfbbc86a6a20ac7148baa041d3d866cea1c47dbb28c92ae617d5e4dc77b999a4e4ec1a7939f30f1596", |
|
| 484 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Stream.php": "77ea8ed3dd1ff1171c1d1e0f237ce8834be4ee8e3f824e7fafb955f05fa1f779e02b85f1045ae7137a537c3b3c415e9d2d7248635c11005567394976679dc091", |
|
| 485 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Sub.php": "9d34d26e76074e65fc01a3a477ac176027b1ceb5dca2fff450111bd2cfc0027c7f7338777b494728ae2617a27075888ea699d4226b60049c4fec633d42cff8d5", |
|
| 486 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/User.php": "2dab0ac6bb38d9216c1b39b81ce20f1a2af1d385c90ea13aa566176eeb288f8ce80e11048209abf8c38151207137cc86b754b7784cc478dcfa1f567fcf929520", |
|
| 487 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/W.php": "798d6f10e6d07a54b29916216dbb2382f25bbf2f96e15906f842cd2ae4aee22b8f3e56535264b1da6d40835d5b9da6a9f4346303f7602c9562587b29fa419f3b", |
|
| 488 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/src\/Plivo\/XML\/Wait.php": "99e6e66fb4d2a81f0419ac823be64ea8c81e6ffc8313934b41d6189519d053b54b5e95dbc7b869dc979b72b551b5654dcd6eef0540c3b01eb900716e97d52dd9", |
|
| 489 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/BaseTestCase.php": "ef9378421d0bf1d8a7afb4be13e116c47bf34691a8523ef377dd387ef4a0c64d970fae9861c51204dbf073071aae48a9221202d93e979bc01fa438479f242f52", |
|
| 490 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/accountGetResponse.json": "1ee7d7e260e8678fa70fa47206ac7c4645e9d698da7017ab05fb56266710e34bce48b19d3c65541a084be28cfe918e81fd52073064071daba77355af2eddbbf2", |
|
| 491 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/accountModifyResponse.json": "ef0e777d38b4605ab58d951f26e975566b61a26ebe5710b9c8c7588aae799c68cf76dc5860f44aaa666864f3fc1f74185b5eba888c1dfa8c2004fb8baf6d859a", |
|
| 492 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationCreateResponse.json": "19336630707d50a021e3dd3cbcd8a229f9f6123211e27fdba211494bc40e9b9fc5573ef328806bf00b937106e7c894ef96a98080f6003d91cdec67f50196849d", |
|
| 493 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationGetResponse.json": "7412a7404bef63d5e61aa34e905296bfce87b2acd71740fdee65ad95147648e744a70275413bbafcd7f4ea8fdfe3b737573935cce789099bc604a1d7cde2a8b7", |
|
| 494 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationListResponse.json": "911014a848b0b94d215fe61cb6cdf9fd4ed61d3d2c4e86af554ed9a48ec4c601c8487fd6c64b9f7a8d358ca1a749c1be46c05a868e918bdbbc601132e129af7e", |
|
| 495 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/applicationModifyResponse.json": "742b49b7f428a281b1189fd5f23811931f2d6c71fa271ead086b6acfac63bafed22b86f2e460fcea35d8bdd46786c5db83707f35c7a855efbb92e51ec01a4859", |
|
| 496 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/brandCreationResponse.json": "20ce2bf53bc64562bd03b307b4325d7e061de2ef18e7ce37a613e5fe21f9fcf569d20f128a204f94ecb274e5e6c9ba2328a5a57f95e3429469ae96e85c379ecb", |
|
| 497 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/brandDeleteResponse.json": "2bcbb7be9a170213dd4b450853d2735d5d918bf97bf78dd7ada6d032d55f70dea2bbf484ec44ed5791ccd267dc7b79dded94265b18c2becf87deafc1dc609b31", |
|
| 498 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/brandGetResponse.json": "8af8374474d5e37f59e8b53be2c64a9a5dfbda1a7f27a71b33e91524e0ed4c5db8bc203b40dfd63b7ab88da281a0b60bf7956b267688d2320ea7820447c12762", |
|
| 499 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/brandGetUsecasesResponse.json": "4aab69493994aac0488cc7cd675ed59cd07f5e7259fe95304e3bef23a38670edab76123ab86b7b87b3c81e48a8aa3e9aeefad74193f1251b5579e2e377470df3", |
|
| 500 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/brandListResponse.json": "ae8c3ec54fd8b300f07598f6f7a00627c11f464874a9a1248e7f400e303143af8bb171415199842ba2ea7d1b6190077fa3cea1283482575144cb6fbe7cabeda7", |
|
| 501 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/break.xml": "6707a46a4316a9f23104a23e4ce9c79f8b4f969639c08f5196a9aa94ba3abd4a1972a29d6131e563a685732e8cb0a4fc90a76f2d0ff5b72637fba2f974abecd3", |
|
| 502 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callCreateResponse.json": "513446e1e7fb97b30b86dad2119bc9fe73e70f01f4976ac40e57e41e7d96a2faf978fc72fe2ff49e3326fdef8e17cb4da24bf665be81089aad1232716e42e114", |
|
| 503 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callGetResponse.json": "6b95cf6036352713517aee44487e69c15e78f481291b3bab21a16f396fa05b1ab92af188a706ee03e4ae2fe1bd55d780b9873f428bbb4d948922215e8b5fc75c", |
|
| 504 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callListResponse.json": "e98a502897768070dddaebcc7cc52c4b5268cd2495e6e379672d76d44767544f80058bf9d2fa521df3f8e215c29e40b60345d3695f3e4129d5e99be42052db00", |
|
| 505 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/callUpdateResponse.json": "06be7ca7ccaf82f24f23e8c33382d372ba639662283023a9b6ef555fa24d273efd845ab27fd423dd4267d66a8df24604f96113aa3bb8f8dcfa49e713f3d71bbf", |
|
| 506 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/campaignCreationResponse.json": "0833fa268f612a634563f99b47936a85c9700697f00d928b7480ef38f529c7108d9fc560486692b3dfc3aa4df8c93ed8f24636f6bb9820f0a7f5b0e7ac42fa13", |
|
| 507 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/campaignDeleteResponse.json": "72c2f3fe959b854088ce52e958cbc4b8d82c66603dfb4132cbd84e75f1dd2b22e4e77b6e378cbbf4d2a66135b8e9921f62b32aae0c5c991e01ea5278e09691b1", |
|
| 508 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/campaignGetNumberResponse.json": "bab70194c4391a8aa301fbc103b176479d8c7b9410fffa8263d9f7531e9011b197efd44a895986556446b2da21b6b479b78ccf66b3ccc515bfce0d3420a19f79", |
|
| 509 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/campaignGetResponse.json": "ba0df7b9b5366dd7de55188b604127e7dc73a4952d0f5d801033274668553418acc257fc9458cb4fbab643607096cccae32ad0b982a83a3b25d7bfbb7f15daa8", |
|
| 510 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/campaignImportResponse.json": "87b5c0c144e7bf69d33c79cedbfc0831a575f4eee9c109ed030d1d169ce469f47a8a76a84b2200ebf69ccd66f977974e79787d20c97a5d58c43cfffe340316a1", |
|
| 511 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/campaignListNumberResponse.json": "d872192029676ce99acade8518542447ebdb7f413deb29c9ed90c2380196936eed9d11f52d2a2434d91ac40ed55f0a1b5bb8596688a7cfc218c05b94c0031603", |
|
| 512 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/campaignListResponse.json": "bd89864cf389980858ca018f32c00ed4377cda7911beb33f84ea331386072dacb140cc50a09c951796d0c8c52eeac614cf54a174545ca0fc01f0730e6beb31ef", |
|
| 513 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/campaignUpdateResponse.json": "a9f4507af99370a6ced41b58e2c23042e10cf515ad87711b83a636f38d974961d0864580f327e486aeda23945075eab21308b5de9aa8384ac3b01646f9a1ba5b", |
|
| 514 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceDeleteAllResponse.json": "6722c7663c8877f4bd5d417638d5a0fde3db7cd2ba1880dc66a7ce9ad25a14de60b4942d84647cc21c0b12211227161349109162ef3eafc2a9607c2645d3c93a", |
|
| 515 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceDeleteResponse.json": "9a8baf62bab7971a89490d637633a3d498d4442bb11ca29486d21a3dde432ca6c0cb36d236bbc94859efac83b2e56d33442a13a4395f4b026dfece2103ca790d", |
|
| 516 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceGetResponse.json": "950fb7d6e6e120ce670da43937ab4ce9e7a7df5296848cb52261f5f854bd89d47f26d76f89929adc59bdadbc8d0e77de79f29edc5d6e6b4b73aff1a0c126bd43", |
|
| 517 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceListResponse.json": "9f5635d9e0988b03c2bffa8457962cb6870a39d4354ec6c065b58949850b188d2829fcd3db1761ec42a4bed30ee3704b6c353d2b9372742cd6d8b00bff273dc3", |
|
| 518 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberDeafCreateResponse.json": "b39ae8d7a1de7d5732afdc00da955a91850b855f6463b143b5837023dd8281b450fa79635a3fc729b5b198c6af5cb57f9c6797c8eb56daf72b7c7131196fb4da", |
|
| 519 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberDeleteResponse.json": "ec18404f82674de8b7ca25eaf95074cefef51b13b038de14dc9ed5f2664c6e6c5c87d3f7a08eeab3926869e171ac26d1647ba1cca03253085a194cb0fbe16975", |
|
| 520 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberKickCreateResponse.json": "9f924beac462c4ad9f42a705f7bfde5aafe5e73563b07e98ac9db42e95d3c657f5c4ba0d6ea64b01e2e061563fec41d53f8ae8fbd7f5e08857a903c948019e1c", |
|
| 521 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberMuteCreateResponse.json": "c3f1c38b6c8295b28d531c446199454fd7422d00e3cf71fdd318a821edca4afba444f8cea38175c0853b34dcda5dcc2c6317a9f3103e16474fb36c43241a52de", |
|
| 522 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberPlayCreateResponse.json": "ac345d15512ca5debe0a20092d8a4bba1f725a581799a632bbdccea771f1b6094b6df3362120a29c1d9109cd8ca8857447c3be08436fa94a5a4304725b75ef4d", |
|
| 523 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberPlayDeleteResponse.json": "10b6ab89ba98b9d6d08dba8637971ca9260757c318a4842521c7d2bb2a1b967498453aee4cef6fd964cf2e614c25364f543412a0a88b877154b3faa9f18ab3ca", |
|
| 524 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberSpeakCreateResponse.json": "b2b01526d4838a72c816ad9c6ca7f9cb473a89818d4444b48aefc269d0173fc9eeed1e2473667517280c18315d67a548f41937ab4b7d26f2edd4d0e13486aff7", |
|
| 525 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceMemberSpeakDeleteResponse.json": "d42658e98680911d21be32033be208b53071e3ee2c514a86809ef4d06cc138ca0a74d9b2e546c54b51c66f3aa891cf0ba3b4db9a6a07e7f06ed37bfb39ef3a6f", |
|
| 526 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/conferenceRecordCreateResponse.json": "c9d8570ab20fea79181b1416cdc44b8e9f8b18b06ad446a0929ecbec53a6bb3d66ddc8609a2baff92d8ddf9bb68b802ac4eb3d62e958d2cdc1485711a6286ed8", |
|
| 527 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/contSpeak.xml": "1115d194144f96d3b4ba895d45268e346e7e56bd308b4b7c58bf62712380908bb71d5250323bfa6d13b8d25e64a86580437f7ac1f2c63896965e3c13909c240d", |
|
| 528 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/defaultSpeak.xml": "2449ff96f102465168a4551ddac6ff85bc680370b423d46ee10b345c128755560e0bf48c070081e8045839503450c0f8b443fe0b33b455410ad5dfd639a6adb0", |
|
| 529 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/emphasisSpeak.xml": "1ae7422578c6921013c5dd65650f0c1efa50512824b429334cc150ee6872dd2a7981a125b07a8023e360d8a881a32333de24f1b595c95a339507dfb29732af83", |
|
| 530 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointCreateResponse.json": "e0cd43507839270c51117e48fdf3158e67662c1bdf9c8c964b57a13c15517ab7c83483855764b763f63bfee011bb893c20eca7e7a0b3b8872bbb1f26228ed720", |
|
| 531 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointGetResponse.json": "05359131cc3ed432c1b29f3766d019be556f58e5e7f7b502d866d0057c04917ad7011bea5afd7ca8f2814dc75c45a52930d48464f7fd740ae94b45d0a07d3627", |
|
| 532 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointListResponse.json": "d6488ec5e6277af9a34629d901a211e37c9a522107f84ea77f861c417345ddfa409d7de389ae69b719997600a0495289bcde64791ef07c257f75bdef4fa8006e", |
|
| 533 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/endpointUpdateResponse.json": "3f20870d3ef78c57407bd42cd424775a7014473d891020bfc41fd78c9187acc3d7fc2a2d7a137eb5bf9e8741525db9aec853889b11d2d3ff508f7fb16a4bfc88", |
|
| 534 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/initiateVerifyResponse.json": "e6da36fc1fe436436703108cbf5840ab9f6995854ba92faf255ded27b0027f86abe0002103ddb70fb0d0bd64b80efafcdfe96a19336b2e09c8cde29c68d449d0", |
|
| 535 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/langSpeak.xml": "1eb16f6028ee00a12e677560ec9b3ca4921deb2d6da15b3686c43f506e9a13ab0cf811d71e942e1f225989f3a486ee39b4949d17d8692ac0a50574845491cc8f", |
|
| 536 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/listVerifiedCallerIdResponse.json": "23af434fba0588608ac41f0bf5e4574517ccc2cc09a22c1ac5c118eb293a63405c02f940007ec7f9a46d29626595f0fab58bdec5aecc3b942b6c0602c3aba662", |
|
| 537 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallDtmfCreateResponse.json": "f30ceb762f24445068ff4a688935a84cb64840310bd518806c1259ec26fd60da6a8be9f11c9c0882d08c857058944cf1c69c95035517716dba322a1a865435f2", |
|
| 538 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallGetResponse.json": "833a4ca5e483a625459d43944588c984e082aa36fe97d52d092ebc3b856c4d0f9e626fcbfc06a7bde2dcce426ee8ad16d91b60a4cf93a67df4e20bd6e46bf7bf", |
|
| 539 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallListGetResponse.json": "7e8efa8df76422d6a9bb0133c81d96b9ed932f7f529644a109b35e9f8f301b3a548e8e7f6a9213e301f25e914b98c3855160ca7e0d6f0283e947cd6fc95c5ed8", |
|
| 540 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallPlayCreateResponse.json": "4cf2ddd4f3087fdcdf772219c5ed84ffe1dc027208540059bc532961b6c4cad382bce98dec481e0245c99e288c9523e8f33ae7c3c35316c8130f49f81db40604", |
|
| 541 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallRecordCreateResponse.json": "02f2c4c88fc63e5585f6e5988d5f615488507a7d7eba442430753a60f0cc2763c38abf905042c9ae0f7d017dc50caf67f269267972b5a7fdd4fe7675572589a6", |
|
| 542 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallSpeakCreateResponse.json": "ef69736cd0199704894c2fd938e4f84768b09a6b9d2f334ef0a83b1750db0bf0eab538471fead4397b49ffa8e86011da111e867d5d8b3532bf3f4250958d6146", |
|
| 543 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallSpeakDeleteResponse.json": "63a9fda757cfbe1a338c42f19532609e8607f3c2c8a317ec8e5aa2a164b0e9f9a652129bbf7fbf9fe05c38a0f68138ba10b4d256f48dda1fa292c18f2b717d3b", |
|
| 544 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallStreamCreateResponse.json": "8e92d7661485997bd727f45ed03df352d2395a99d8526a96b6119f3a02d9e08802eaace790573fa2720340cc940550c9a4d2d666f5f8ccaafd1dd5c57755141d", |
|
| 545 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/liveCallStreamGetAllResponse.json": "2180442eea527015f3e473e8b5ee781a092e5dc52fdc4377221eb40e234c89f921477c9ff068cb598925c40bfeb79cc16ef5d0c63dd515064de6101900d31753", |
|
| 546 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/lookupGetResponse.json": "6b2dd461ce651012160ed88d092de0859ff1cc132c57091a1064b5745b83cd6e5144e8204b6810da7bb675eca802fff54fa298f03be6ef858c59058acd24e640", |
|
| 547 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/maskingSessionCreateResponse.json": "d846004dd2701946c345cc6f71db57abbcc4cccbc0bb3fd3dc5c0a7472dec8604d54fcbe42fc6a5055925f0f31b5879b2f01330b1952f4550e799612efff00e5", |
|
| 548 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/maskingSessionDeleteResponse.json": "e186ed9502a56ac1b714dc66b34c560da4363980bb2bc1918e2122822b47cecd3bd973d308acfbb398fb85f0d6abff09876067900b41d1ee1271f16ed50e2ed2", |
|
| 549 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/maskingSessionGetResponse.json": "6a40cba5f0cd7b1f4832a5f207d0ec771bbdf91ef31977e523ea01e05806de7fc6ae50c131419274132fa3ada949bc9e79b4c24dbb0aa76c0e2013b1de1cef9c", |
|
| 550 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/maskingSessionListResponse.json": "29a7a5507cf1015bd5fbaaa4c976a3a027a6e3291554d3c2ce3d3348c6b33c0d0fb358943bc5db76fd1eb50bdc1b2e1849f4df374de136d2dbad408fc70db681", |
|
| 551 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/maskingSessionUpdateResponse.json": "5ad155993e4ba54c3277ca037aa421578ac3fc2ce03ca7b7e56f5708c992b9d637524e138147610b343abf0ab8202405494d5b4eda4a410189c37c47b575c0e3", |
|
| 552 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mediaGetResponse.json": "251c9d7226411a160031776b1c7039d7e7f3d715ad7bb89131353611a2509a570656b8e29577e505102cf588ba50cab34b3b74351dd33e2a99333676d48b7aaf", |
|
| 553 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mediaListResponse.json": "1512baf046701056ae6b5ef06a1e6405cd62a27d4b82f5b38ed2b2ef6faddfd147b6d57074d04d77cc14325d50d7908c0446acd4a5a0355e9dd9316f80b0f448", |
|
| 554 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mediaResponse.json": "329e01ec90033528ca170704dc7a3de8f5d004a609fda5abaee4ad610b1559464a97b423ca27248f49fa3696f12ce6c1b3ef69ba198ae57877927ff78257231f", |
|
| 555 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/messageGetResponse.json": "77f19d0c05822a5c388159fb42fba2bec23fd4601e18cdf90b8e87f87178675765c3aaba228ca00f06a7332324be17ed7efc41cca10fd479c2d649ec12acd65a", |
|
| 556 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/messageListResponse.json": "94ab010bd28118bc2c216bb0030f4d9789760dd8105e943d75575c776ef6b2f980f780b9507570cd4ccb7e1474daf02ccf2cadcce7ab5a52e477417f027553b0", |
|
| 557 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/messageSendResponse.json": "ae5ef8b7e2a5db03fc5c04e96cef35b3f819f1670cce72e0e729b57de018bd6ffc254e00f20fa7c662eea100f78bb1824f0080275ac270f7e1229566683fc62a", |
|
| 558 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/mmsmediaListResponse.json": "fa4d1e3885b6c84d72c9f9a4a414de7d1ae1d574db325cd773600c7a17f83fcbe2a84c0daa8fc690d5f5d95431b1ffe5097c17279593ccb4155d5f99b1a853c6", |
|
| 559 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/multiPartyCallsAddParticipantResponse.json": "d9d52a259bbbc840e74ba37e091d7ed40aa426d136e8cd430b664e70fde2f271f9af004ce96bc79052b01ec07d124aaff7a7fa7a9607707e93ed796449e17181", |
|
| 560 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/multiPartyCallsGetParticipantResponse.json": "fce004c1b488f4ebbd7f18502c3b65dae33eb8d8f0e3e3f274720bde26532a7d3d8987edb7436149a17b3697384d684e051fd72c414191158afe806a4a0d8f6b", |
|
| 561 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/multiPartyCallsGetResponse.json": "4132272b142bc6535feabf2c88a1d73d44ba37455c3f6e577b9648a425611ef7853f4b0a3cb687bddba97fc3327bf30f5128ddcf5d8abeaca9e1521e0c77860c", |
|
| 562 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/multiPartyCallsListParticipantsResponse.json": "8f234fa5e68ac507abc74dbc74aefcd41631516c4c64550c53f22030daa645d8d54ec447d3da6a25476d161c3ea3e57348e38fdf7dea7d67f34769ebd913a3e9", |
|
| 563 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/multiPartyCallsListResponse.json": "705f7e78050298bd240d9d2ee77170fa3b66e5947323427cf7368768252faba367c1689fe50081d4f731457ffeac5e6d566e447e81a5c2d96dfc46fd0bfe3ae2", |
|
| 564 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/multiPartyCallsStartParticipantRecordingResponse.json": "ecaf15e79822e6f06edf3c1acba42d77370e7896a2911d3e43056fa38649051a6a4b5899b2219146e6ca43e1b0b88bd9bfddd1f249559003623a4401a2685bd3", |
|
| 565 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/multiPartyCallsStartPlayAudioResponse.json": "16f425bfb84727c5fc531dae2714e735e6c78ab50262b7d622a37972ef6e93b31b7f9aef02e20e1954e7359a91a01eeecda32faeec59dd995b364f1ead5f9c01", |
|
| 566 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/multiPartyCallsStartRecordingResponse.json": "f2534ffc90644864e38946b735d0dd76fc107cf4dada2e2861b639e2662b56f78fb58e80631a4710aa7325ff969be4f2032bf4bbccd3f80ae3ed03e0813c6727", |
|
| 567 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/multiPartyCallsUpdateParticipantResponse.json": "1b1455bc814f6e96cabfa21ce4ce3eeeb5230a21dfff2b60f822fbee5da218f72036a773042e37f225cec4839fc491a41e81df50c1feb393b556c342963e00d1", |
|
| 568 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberCreateResponse.json": "e7acbc2aac3a716dd50e27de2e8937e27fe70da7dfcce17561f4d81a2de53e8cdfb5a695255e1ac65c8c49e4b894722e7ecc9297b9d040dadff97d1cb61ea414", |
|
| 569 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberGetResponse.json": "3f5c754f19b2480191862d8c571be3c443606e32a69ab8f4821f3e23cc3072c3c594888badc61d01ec50aa8983f79ec673ca0a8af8eb6f62afe01a12d63404cc", |
|
| 570 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberListResponse.json": "9a7a70008cfce59d92435998a53719da9a7bafe2fd544d272bee7805cc9e02a3eec4d26cc032a35b109f29ced120f995c7ac69826b637b92fb6a1842ee229058", |
|
| 571 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberUpdateResponse.json": "e7acbc2aac3a716dd50e27de2e8937e27fe70da7dfcce17561f4d81a2de53e8cdfb5a695255e1ac65c8c49e4b894722e7ecc9297b9d040dadff97d1cb61ea414", |
|
| 572 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberpoolListResponse.json": "961fe25a8fe8c35dee1b0608a24d741b6ab91f2104a9f2af2080279d6cbe4e631416d7b3d8e3772715e376a603cb740d652435a0f2d7971e64e00eb44e7cd518", |
|
| 573 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/numberpoolResponse.json": "c725314dd96d000028683c175528d15657c046cb421add91a927472c235ae5c1ee1aab060aa0eec56b6c717138623684f827a2de50bdbec1017e7bff937b437f", |
|
| 574 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/pSpeak.xml": "1e49af0752b825db21fc50126642fde3f39dd8b63cec3db00c3df92ca38935d58b8752ad14928278b98ef23421d0926d624b6aae948f9473398d25e2d087b963", |
|
| 575 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/paramBreak.xml": "1202da39615a87758a5fd85096a4d98f6c2726d705ef0b1086cfc66cd0f456b15e3f79d9850e1bb8b99e9114e41b3ca19ee4fd269a42c002c205de005c72ceef", |
|
| 576 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/phoneNumberCreateResponse.json": "a1dd38958ee69b5036aaa1c86cc730802dc2d7612eb1de9266f9a6651f6f067cf9a42d44c736bf85d1f40048f01f99fa05ccb3fb26baf3875e3bea98fbb9bbd8", |
|
| 577 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/phoneNumberListResponse.json": "fcf71cf133871d0750bb90d9f9481940c863628b2ef39eb4e700f13a78cd407883418f6b66ad98372cc7ef28db9779ade36b3fa865ca6f29d0b953d3fe8ed5ac", |
|
| 578 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/phonemeSpeak.xml": "30620187252e4a92154e06e611a2cda1ca881a0d85b1c6c36e3c713734c0be9ce79bb9ad38a11e040cff437c5676c01638eecbacc5b50a20e0adb506565a9475", |
|
| 579 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/powerpackDeleteResponse.json": "f170bba1b0b6bb42c88bc74353ea4db09b82f07f5a2166f693d0579e5b7d6beacb8cf11e39cff546345333b14752456212584e284c2c360cc673d009fd2aa018", |
|
| 580 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/powerpackListResponse.json": "0cf4f36945bf4f73377a6688f99bb3efb0c35924ca9278bd777ecd0081c3f667d45de4a34f7101588b7a7b3b20179d18a393dcc468ed88df8eb53b5e2463d7c1", |
|
| 581 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/powerpackResponse.json": "2a2fe080a3ca85e09f71a0b3ba7dd23ccca8de3fda96a5fdb93eb247a1a8e747588c061eb17388d4294a235b3f61345d99834ecbed1b744f1317d2266ebc27e2", |
|
| 582 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/pricingGetResponse.json": "25a616f338c147cb22228535abafa9c1439f663230d1fc5109af24f4f11a637c5d0cfdbfbf3b2762b87d0b4693f14223254e431f3b8ab1f518b32ea884e2d1fd", |
|
| 583 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/profileCreateResponse.json": "f98639e2d9e1ee1463845ef5ddf06d360d988ed1e5ee3dbd878e502675b647096dda02e4cb412c02d3c1013bc0bc3771e0be9bd515eeb9f90459c5ea437c7af5", |
|
| 584 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/profileDeleteResponse.json": "e0f3e389e97e95dd62816d48838f9183d3f033c80344a010d703f4f69a03288e8bb90e62dd544f09cfa49ce868b9cefae3657a4c051b45061b4de2f2265867f7", |
|
| 585 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/profileGetResponse.json": "ad2f4047363b6fe03ef30ac4425f3ac7ba9b021db2ba173ebf708708e23284b884369f6285f7d7985ad5c22eb9d1b340ff44ef318263539c9051b60f68374026", |
|
| 586 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/profileListResponse.json": "312da94c12b7f2c8d374056c16b8e0074b0448cebe8313be49364b3df22167d631229db394cdc0fd44f4166ee99cb5c3c8de33c6d3c771faa94209652ccfdfd3", |
|
| 587 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/profileUpdateResponse.json": "93e6c083265baa61310cb506f0b5dfa6ea7d7ae8c2a3afc3c726097e7b748434d95d4e2294eea0919d97c184cf6333f6ded1d3bc18628eaa1e973d32fa629532", |
|
| 588 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/prosodySpeak.xml": "0529a04b9ebbfc245e7d50bce1177e3eea9f0f6ede900e9fd3a447f86078ca86fe8c9911fad4645494cc784394194c5e6b63141a2a9125a1ecdde2cbe8bd7c86", |
|
| 589 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/recordingGetResponse.json": "5c25060d0acc3ee312cbfde736d11693a3988fa1f1b21548f928fa6e308015cbcdee8c0350620f9c95761a105736f5b4e0b3703481844d4c3c51b3debb86e390", |
|
| 590 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/recordingListResponse.json": "26704abe41a9cf1f64801068df60f704e56930f520b9c8d82fe8c36d24e562cebfea4f50b2b6a31d95728b23f62e55f25c256032440d4b2a06d34f58aa9b64d9", |
|
| 591 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/sSpeak.xml": "b81f50357fb60ad968d8e949aed15c7544abed0a45c26c5bdcd4b166fa1d9bf74f57137fcfd378fec345e1fb2281ac38c30b2a3150cc6fcdc13581ea29379796", |
|
| 592 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/sayAsSpeak.xml": "84e2d4a310c8d1fccc5be4be4cab026e1dde129ed2e18ab4fedcd50512cee91a52cf437606cc936c474cbfa508a105f36272edb6bcae29388f2a75bcb354de6b", |
|
| 593 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/shortcodeListResponse.json": "449e0c165ad81254715b4521e5f4d39b0a6d1ecd583bf337e8b85ba40550a0942c04a8e33b69e5327a275fca4e42e31dd1719f100c8d6e459939a3696ede1a71", |
|
| 594 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/shortcodeResponse.json": "867e2309b5c912c9dac5b06929a835b578b0dd3391c43f6e0d454adccf997060e1e5013051b394a94d44af3e5cfea67a88f4376088a376a031d6fde5fafa09be", |
|
| 595 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/speak.xml": "a781afeb86ed31833e74d834de6d9834783264ec43678fe3e70a7f963e97a9dfd05dcb5ae75f51fdeec1d5d8d299d8c476454307a23efb830022a477500c02f2", |
|
| 596 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/stream.xml": "f51abafec602e44f7a975adc86dfc8a972dd7710c0aad0597984d32e2b738878e54c5a7c2ed64304cb0cf191a8ac4cbc296068344250a94fe4423248fd25be06", |
|
| 597 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subSpeak.xml": "06ff8e0c15b36727265d9f80c736a1781438c04445e91bd563b73a1f9ed4b501458f7e3ec22607dcd96e9f95da6e6d874c39381ca061a768c2b664a1b4bfc504", |
|
| 598 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountCreateResponse.json": "7fb28239b065aab21f14d158e51ab6bfff6b10de97ca558da02adb639fd15e99343ca54277d0e0b0dc6be11c01abe6517fcc2f0e862d5a3538342f86bea87994", |
|
| 599 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountGetResponse.json": "929de7e767657a691c8bf34be8abe52990835f9787114256bca7a1fd6016b34798d36e2318ad3d4a2a8931986d8034e2310e4b4247fa38a84314658402aa3bc3", |
|
| 600 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountListResponse.json": "c57bcf1f52d302550eacbe5492bbb1cc17bd399d03b6c83971bebd83fa8be975e97859063a2115edfed47f622adfb413d5c28d6cc180710211bce192d867052c", |
|
| 601 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/subaccountModifyResponse.json": "a06022b797598bdabfd7029128d9ebc9934784edf77175292c17b60152e7464938f78ddb8ab2883e0da22fdf94e584d0fe8d766c40228bc0a564e6ce76c39365", |
|
| 602 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/tokenCreteResponse.json": "9833a837e1fef523f40e81bb1930f7926722a074d8bd3741d6f184d6c1b376d76347f2cc276083d56cb7bba7e4bf8ecd090a7d72e1c5cedce5cddfeb492b5b01", |
|
| 603 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/tollfreeVerificationCreateResponse.json": "bf6b041815676b22dee17be7b561edb690584a35ef1ddc2a023c98d52a08f00197744233f8df95b476b26b36738d33a85bffba79438c4e025bfde0ea32e8ec82", |
|
| 604 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/tollfreeVerificationListResponse.json": "81a04007c780beca3ccb4e4fa1d8e0f1889a5d4b23af2f6fc48b88c7cb9b148ea264208a80e9ae9eb13b52a9fbfb5ffd07512f47b78383e910fd7065156e2b00", |
|
| 605 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/tollfreeVerificationUpdateResponse.json": "092a6abd5e8001ff051f41755f3687f84a2765c32c267b7ca9f8d2c9986c390aefb888a69cf2d0a23ac4df178b9810603735e265a2f9ee899997827d194f91f9", |
|
| 606 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/tollfreeverificationGetResponse.json": "adc5db7c68f4435cca7a55bd4bd2a48d1aff9ecf69507527315199ac7584303a556a4c8d77cb787afea644c9dfcc7b0ec0300f0f4e0db831960d9277cc042df7", |
|
| 607 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/updateVerifiedCallerIdResponse.json": "4366a46d485a252d48617ab314867ae82764f62a5601f16a02d3988a100192896667ef6bfbb40abcbcc7a2998f4b88b636f558c88d29490f2c883b48c8bd3102", |
|
| 608 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/uploadmedia.json": "35f19877904dd5eacf97183a286db18153002e37159f6e007c9c70644843d73963e9293a5e64c1854665821e36592f5ca11289d2ece86fafb3ddc4b8b758dc4f", |
|
| 609 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/verifyCallerIdResponse.json": "7c32c879e4bd7affc209fbf744c2988513201f0c2949ebb2376e797dc9a4ab232c5630ee737afa77c43501115dde1ab80e64f282d6cf31393dda6454e2667af7", |
|
| 610 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/verifySessionCreateResponse.json": "3ba4d01cc566ed4bdeb19e251f9d66adf0ea8217f082a64f0de25a815f8dc8a7245a8d81c437469a000d2a71d137412abea3de1f972e28a12232162363763383", |
|
| 611 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/verifySessionGetResponse.json": "19a581773500cc504276ce382b48a09f950933c5249504bf3e271226ce393f8deac96ba0a25d91e6dbbc0af1996ee7e1f809b0f969777aca0de810926033e98a", |
|
| 612 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/verifySessionListResponse.json": "2e79235acd5b416f559eaa774635f0e7f1da3f068e4a15e7114f2d15fe244f047074f3ed1ee039ce57cce5157e91d4dad4936f57b6482126fb3fc1aa80cf4bfd", |
|
| 613 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/verifySessionValidateResponse.json": "136e3115f8ea8fa403577ea9f3648c700ed3435bb6adea11138b6f2bec66abc64465b0694e620b408591be4a48d65720589812035684b0f0266fc6f89f39c820", |
|
| 614 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/wSpeak.xml": "05cdd9418d049dc33432e02bc305b10635daf3bda936c695c4136bc4bb8167ac63e6ae809202a566e5a1488d8543c06fd9c52f869b03a474bfc3db560769c00b", |
|
| 615 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Mocks\/zentrunkCallsListResponse.json": "bc78073a1eb2e5c33050de9bda5bfbf6fa61bb9436b1cd9394561a89e96808f21f98e23ac44ae7773756abf48174d17f8f5310dbd3250db95df11a853f4c12f9", |
|
| 616 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/AccountTest.php": "8a98fbb165ab60db8a7423252e78d9db1da922dc2e1de9ef5cde32488c04380ab01e8fe53f4f542c602b28e574966adf58385456388fb4aff543dc04467de668", |
|
| 617 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/ApplicationTest.php": "e23381682056702928ea1c587bf8241f71743e4349cb30b621f2c843711c108c0811689c953ecd52515b2c780c50c134f959e4ef77ad2c0dd65dfccfa8c79c2c", |
|
| 618 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/BrandTest.php": "72cee43aa3715b0b9329cff0ba8d39e28dd1f82dce5178035da15925addf07ad4394398eecaf8e4bdfed45867814d0e6cf99b24bcf118aecc44af5d660a10fc7", |
|
| 619 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/CallTest.php": "6eb4cbc3229fee0b92260fe5f92f5c3a225b1cdf930d21a7fec11da86fbdb96bd958d6d01239c7e4eecfb0d88763ebd73edd2d9da14c5ff8c36caa12a424c5f9", |
|
| 620 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/CampaignTest.php": "08066e3818b3a253c2c78a722ec6fb45ebe4b8a80c0bc97647d43fa25f0776e30b222d211aa27c415dcebaf693f3e003175867d2fa9f4c32f5123de5bef71e60", |
|
| 621 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/ConferenceTest.php": "3d1149c50cc760ec57de791d7a1eb46a5210c113fe91e1756dc642d2d94b333067c9c3c5ff9d0c90d9ad8981963394d332287b57b84c634c8e4008ec5cb2356c", |
|
| 622 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/EndpointTest.php": "aae4c23a72674a9d4da6261986147a3b3a1c5e4da03d2efe7f4ec21336e03d352ddc0f7e47dab3c9b4063a170d37e0eebeba649ecd1159d85a3c5553789c51b1", |
|
| 623 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/LookupTest.php": "c436483d9ad54681ed44ef7a6b44d4899d06b7b421be27d2a076aa4bbef23a5d160d5098c60d5c380a8e66ebf8245c917074edf6a7b682d056f9f60e082de032", |
|
| 624 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/MaskingSessionTest.php": "a2e5964652225bda54e48af0951ae13f366e10e9cde38bdb065bbc959a2d7279685b2931f8b8f0d298a82615cf305ea1d410ce5234794c122e881c5ba5baab74", |
|
| 625 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/MediaTest.php": "3b945b03f369ab7f33c03078a3bdf89b89b73750406899986f7ed3acb90f0164d984a85c0996573165ed8738350b874eb7edb74f8b581072bf324dd0b6df9f1e", |
|
| 626 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/MessageTest.php": "581853a137af8a24c8dbe6f7b93e3a657869e3957a55ddb0b9e2153a82ed660b9549737209a8b9812c23e3d2887fcf75e4b843be5fc63a06ef9fbbb9eff4b5da", |
|
| 627 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/MultiPartyCallTest.php": "97d1f87e5697115368c5c5511627df332a9adf9831608d51d2d510f07f96c5d02722662a560bd2a5764f3e005d2791c27d64e333b58168ef0b43587bb0526be3", |
|
| 628 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/NumberTest.php": "9123fe40158482d314279a729e4c5c0eecf3733884ea39df16de986e775e93e90b8d9c7ad35fbde8f3d4cde3e02b33c70ebe87cbb27039615de8213cc27aad47", |
|
| 629 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/PhoneNumberTest.php": "4b52dd78392c66e1d1803a278ab98bb03e4bfe5275e28b043e4f672357125b4373acece1c2c5668081be021a683acd2796e6ba5ff2646baf3435dda1d6de7667", |
|
| 630 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/PowerpackTest.php": "7d6eb6d9a88bbb3ce49e0d1071f4e5288363c035234e038c7c44aee755a215c98b3b6041c335b4f9a691d23f25173738abb7909693a2b12ad31e3d35292a02fc", |
|
| 631 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/PricingTest.php": "91a088d32f726c2eb49160363f7a77d351f3f65d43a9282cbea646310e2d01a33d22a2adff9ce5795f949bd205c0b6e77571f0a231265514704f42bdefbc51bf", |
|
| 632 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/ProfileTest.php": "a27b09f4fd8a3c93374a54cd9df7f3689232f72ccefcb52e2e8f1170cac435bdc97d74ccb69cf393dc46120f45da56c20bf884d6aef8addb747311e8131538e4", |
|
| 633 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/RecordingTest.php": "353008dcfc66ae09e915787634877d598930e60fff3f1e6eec0aa5590881f66d78ebd79aa1ba2b2a20409e4b9372eef9ab28406c9fd29f95ca6c773d8c83fa63", |
|
| 634 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/SubAccountTest.php": "6dd803629402c6f7b8d923753477f6c03d6cfbd50aa59fcd63556527cdbc3d932557b318cf8c7a9f5a9d3ff8ff143ef15f31256e488fa8c35cd62bf80ae04d5a", |
|
| 635 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/TokenTest.php": "afe76222f0ae20ed52afed42970328b2a7dbdd4df8a4e5cfae67f7b68ee3dd3c2209c4a3ce4091c7d210d34f8292d33fc3439158f1800c312b92ab4e87e33b47", |
|
| 636 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/TollfreeVerificationTest.php": "9bd010e23f6dc394722f17ae7c2d5a40459796d5743e63b1600934bc3fe580e4dad792d12644a21ab75865454bf18c9a0312c891bb93ad27ab78596286ba70ea", |
|
| 637 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/VerifySessionTest.php": "fca37f4caeb2cccd6db99ab3bf72c8830b64ebb35ae8249ea49fa65c2a9a3fe038b290805d2ce9716b839d7d43f82afbef991c1af818aadc333b319918510807", |
|
| 638 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/VerifyTest.php": "c35435770d313e5906c99ec9b4770ed7c499f27511c5ffb96ce7c8587f86f071c92e516f026a57d4ea6b2329db2bbc9cafeb0caece8676fe1e258382313d6cb2", |
|
| 639 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/Resources\/ZentrunkCallTest.php": "81b00daaa2b4bbdd0838ecfb009da020890da4c858130807f9f91137ed4434e16e5ea555621b6a4a96207977dbd04e0129298348263ce9f13b5e1dee64ddf639", |
|
| 640 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/TestClient.php": "8917a380e2cc030228dbb37a7a3aaedd2cd624d8102eee1fc3469a9838f31f7ee734a40cd45e510d63bf4c1526da4bb3af8d45bd4ebd4382cc9fd5bc2ba178c1", |
|
| 641 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/UtilTest.php": "6a66cd73b0cd403f64f8a4752381964bbac7507b4449e81c9aaa64d61db244128c604a8995327dd8e8ccc8a30cee7a3a57fc617b845ebe65a65ac38125ca7394", |
|
| 642 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/BreakTest.php": "740c84bc38e7044f5138e3816b72c6a94bca3accb592733421578a6eee2080bc6721d85cefeb8b6f1db751e2056fbf722e0dae61d260b089dd803e72cd9cc0d7", |
|
| 643 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/ContSpeakTest.php": "f3b641231907bf807c5c09b65a13409ea054b0116b9b36f5bbcc2bfa651592ae1f4707be5780c37c5b9f1516044a9f524f4ca829cd0b5387a6a32526ba11cc94", |
|
| 644 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/EmphasisTest.php": "b76b6d0eee048b44965f87fa6f59614e64d885864ef3ff0aa2310746d76304fb5ac6cc6d0c714e7560e5472e018fd0183cf9a918d3e4ee5415723314d7d219e6", |
|
| 645 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/LangTest.php": "1a4ef409ded7d9c7abd8c63994dd3e221b16bd1fcca8133ce43e04b300a28468cea68e430098393acafb78e537e37b0574644735cb84fd08e33dbd828e2fb071", |
|
| 646 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/PTest.php": "9084715ad9065f1a926e8dfdabc5816b16a385dd5cd74f16f6fdfd1aef043b7d344d9cdac4b9dc43df85e8e63f329909553e20b86d995d9eb6d25d716fc5fd1b", |
|
| 647 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/PhonemeTest.php": "f85a3119f95615c3d3e16c0a4c1d2aec7b2191629b60de276cedb769b23e11546fc27fff57e329c1ac6cb52868208d29f88d1412b452932b573d88cee9fbd68c", |
|
| 648 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/ProsodyTest.php": "5aecbb6cb41b0269b0895e580bf87dae24703c3116dd39774c11d52406635f4167bf55ed0b950cb4d8af9138c03361161527c7f0e08867053034d8aea1fb1daa", |
|
| 649 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/STest.php": "55343bd191ba9b88fdafcc409c1685224cd6673225c1ecdc006d4c3643d9e4f71fde0a07ead3f1bfda80bed486f09a7fdf42e16cf3d4fe66f592bb72397320bf", |
|
| 650 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/SayAsTest.php": "005fb0efa4803847719d9e7d52438ada0026b3860d7143fa4deb96a80826ff0f8608b3dd9302617547dd36cdee5293ec25570dd6513cd81a921ff483379574ab", |
|
| 651 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/SpeakTest.php": "cc92de5d0f5df6de17b121249074752bb191265335a6e50dcc4739fe525cc9d0014c187a7d15cd0c1226c56360277469ba10da72dc56dde01f478acc510a8dad", |
|
| 652 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/StreamTest.php": "8199e4e25ef08934676c0fd227db39d0e8f392b0e00a0d927c78ca8e3c6feccc78c75439e53b26a5bd0d839e2da6a0a0527798041cb0b120e4312c03fea2868f", |
|
| 653 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/SubTest.php": "5c113371cb363691313226362512772facc38c30afdc32e96976aa309d6ac33aa32bab7d4ba674cd566182641048434dc65cf1403f25ea4adfdf6c6793db2fc9", |
|
| 654 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XML\/WTest.php": "f7cb4983bde61290a90fac15c009ff1780b02fb81c8568d0e8a1f40fab97dc1ec2245cd477b5ec669c6f54e56bcf7351e38c09caac7255756174baf4070c9284", |
|
| 655 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/XmlTest.php": "6a24300f84a38acd53f5d1eb44cadc2fb694add61344d1a375ab5b2e9969f09d573807676fd9de572a480cf217888bd02cf30d9a7221aa109dff4a425382ba3b", |
|
| 656 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/bootstrap.php": "fb1c83cc2a11ffef9903eaf721f4cbcda4767f70368be33a0980aec4e5b515fa8258750f6e19fca0eff6843d0294de9c35b8e95af0e62f51a94442be0099720d", |
|
| 657 |
- "providers\/Plivo\/vendor\/plivo\/plivo-php\/tests\/phpunit.xml": "74191aa62aebbcf797167fc2bfb6bb304cb3d309287a73919caa1c43c188dcef47a1f1905e56143952e4b342ef183a84887dacd6976c18e58025582d5f672035", |
|
| 658 |
- "providers\/Plivo\/vendor\/psr\/http-client\/CHANGELOG.md": "b5dca1a123788658f449dcdfcf066fd2fadf6dd0581bbf817b555779bb1930bcf288261629be8ed31f87e901e60879930f891445b5b2ec61fb030fa28a2883cd", |
|
| 659 |
- "providers\/Plivo\/vendor\/psr\/http-client\/LICENSE": "3e0ee70fc857b6dda26ef2eafa55ef09384d82bb2f85b4289abcd94a60201c698eb477dcf03a73858b2cbb9efcf00affa199e848344b84dd4a4c135601e886ce", |
|
| 660 |
- "providers\/Plivo\/vendor\/psr\/http-client\/README.md": "8beb6f331edfc4ee0b64b68efce676f0616dfb5f9add2b5f2c2e869989fa6c90a7991fb47f7b731365219c64a1735f5ec1714fe9fc74427b805eae4732a519d0", |
|
| 661 |
- "providers\/Plivo\/vendor\/psr\/http-client\/composer.json": "704976d4a783ffda1fa29ca53206feb9e57ec66a72492732891aa9b7b9f5846412f5663c5bc1709a65a9196d0d97b5dd30609510d3ecf6e898192900d72e45df", |
|
| 662 |
- "providers\/Plivo\/vendor\/psr\/http-client\/src\/ClientExceptionInterface.php": "33aededf573747615cbf7b8bc6aa10faea7762c903a0cc98bc43803043f9bad58460f09f7301814c22e95f2a6d0269388d8ca899ab76fcf0f2bd8d82aea5d9c3", |
|
| 663 |
- "providers\/Plivo\/vendor\/psr\/http-client\/src\/ClientInterface.php": "11b1cee24748c4ed1a41681b1b6e43e865e08150be14452de885daaca737f4029d65e8381632a23910789d3cf5e9f9d02f4999aad62e4e8c80a2fda9ac96a4ed", |
|
| 664 |
- "providers\/Plivo\/vendor\/psr\/http-client\/src\/NetworkExceptionInterface.php": "6d3d81d18a51f451e8a1b74a16b3ac8ce6c5642013a2d1375ce6718090de5369779f9d6f594675aeeb7bc3f55a11f1b9396036354c4e9ae0c90183ff369fd65e", |
|
| 665 |
- "providers\/Plivo\/vendor\/psr\/http-client\/src\/RequestExceptionInterface.php": "46391124b679cd54538ce5ae6b05d7fcfb6b9ef7680f33c8771f94b38075a366788293b757ccc674060d615783476e1151d0ab8a5f2a10e24578c9b46cc1433f", |
|
| 666 |
- "providers\/Plivo\/vendor\/psr\/http-factory\/LICENSE": "93e35d2d52b6d557959d57c62352b586032a791aba7df66eb33fb4560142f13366455eb9492a5499b2dee8ad7f5fc4090154c458a19def25661829e3c3bf8008", |
|
| 667 |
- "providers\/Plivo\/vendor\/psr\/http-factory\/README.md": "7fb24284fa53f27cafbbb0f645fbc160b8c82034e97367c781258b14bf8454909ff432b4994af396805b3fb27ed052d2f6b2d21331a511baf87dd4f158bce99a", |
|
| 668 |
- "providers\/Plivo\/vendor\/psr\/http-factory\/composer.json": "4e4705f871f5a19e46d366d2dd0c85333e1268b8950e83ea5305dc68d92510ca7e235827feae4742ffb2f49f7d08f0bf9d393c7e2c56b667f721cc0e590c8e5d", |
|
| 669 |
- "providers\/Plivo\/vendor\/psr\/http-factory\/src\/RequestFactoryInterface.php": "4df5b7352402727425f560d68824668bcd7cba02e05cb38d3c703fcfd1b533b1428f24d3efa9e0e0a48d265d342e6c963c4db163b59d4e1e4c8b13e3b5c60e87", |
|
| 670 |
- "providers\/Plivo\/vendor\/psr\/http-factory\/src\/ResponseFactoryInterface.php": "f07c95ef461baa88c830f6431bc613153ade8725cf05cd372a94bab28ac17355d802795e2b6a5f33f842bd0b64d934731bc3f03685293de51ec2520a20f0011f", |
|
| 671 |
- "providers\/Plivo\/vendor\/psr\/http-factory\/src\/ServerRequestFactoryInterface.php": "bd92c91420660a6001f775e396511dcbefde447703655969f212d4c4f4f07cf1ed53ad0ecd82139a0c5a780f4f55813ab6d2ffb7751ff513207f56d74c2d1f65", |
|
| 672 |
- "providers\/Plivo\/vendor\/psr\/http-factory\/src\/StreamFactoryInterface.php": "860008213dbf608eab9b80ccdcd2afdf4b47883fb821f9231ea6f3df4442e27460df8992d81519ae9c241273483c7f37ecaefacea874b28e8e8094501eca240d", |
|
| 673 |
- "providers\/Plivo\/vendor\/psr\/http-factory\/src\/UploadedFileFactoryInterface.php": "96c64ff5e469d8a4cbb34d348219d561e04069210f62d9a1222ef8450482cb5be0359447722dc4500db8c4fa2252e8887c115545ae593dba872414e55c8101c3", |
|
| 674 |
- "providers\/Plivo\/vendor\/psr\/http-factory\/src\/UriFactoryInterface.php": "557569ddee17f6c917eb6e24714df3b0e8dddf61ea66a4005b2acea5141c00184cca05108cd23c9a6fef2fdd3cf9e37cfc3e1bc003d09a3ad7d4db37735bb565", |
|
| 675 |
- "providers\/Plivo\/vendor\/psr\/http-message\/CHANGELOG.md": "5567e49c016bd259491fd13a96e5b88629fe67ccaa0d75f7aa7c54096edd663fc743930eeade981a041cf7524d9f65104718c129fa36a200397d30c0e5d2c954", |
|
| 676 |
- "providers\/Plivo\/vendor\/psr\/http-message\/LICENSE": "22ef0ac33682fbed60a5274a5b25991308decbb45c6ed45fb3222cc045bb9e552fa7310b1ab6f38329b63f53a02c25e7bc5e955ad23c5bb2366b417563cb71de", |
|
| 677 |
- "providers\/Plivo\/vendor\/psr\/http-message\/README.md": "d3bb63df729c39d3deeb1682a432be6a29d17854556cc40bb379f04908d6d15626617d04b72105f8c4b884642816e32992df1e7d69a21418c723f773a2daec49", |
|
| 678 |
- "providers\/Plivo\/vendor\/psr\/http-message\/composer.json": "27f53c7a2f760e1986ca5020ccb52edf38c0871b76d2006704fa3698863ebe268d1f180d1c1190779415f92699d5d62af9abb439dad367bd645089ecbb47aee3", |
|
| 679 |
- "providers\/Plivo\/vendor\/psr\/http-message\/docs\/PSR7-Interfaces.md": "ea6198a9ad3383299d6a740fe8ca2f6c0b5d5f5db3f8e5049c95c7412a875a82d0f9853dcb9a0850e04c3ac68c4ce8a5ea14940977c50ad762a780b64fb72cac", |
|
| 680 |
- "providers\/Plivo\/vendor\/psr\/http-message\/docs\/PSR7-Usage.md": "3a97f77d4fa66fd5ae5f103500128bb9d8e71db27daba4e071b1666c42d621f7d9d23275eaaf14c460596fa63e866d5d39e0d09296f784fc7648e357612e1775", |
|
| 681 |
- "providers\/Plivo\/vendor\/psr\/http-message\/src\/MessageInterface.php": "97811c53f603d5fd1cb7f9dccf4a85f53c52968f41471c0785b41240e797347e16c02aba96fc0fd1b5050f7945dce1eb590948476bce091267865d6372f36abb", |
|
| 682 |
- "providers\/Plivo\/vendor\/psr\/http-message\/src\/RequestInterface.php": "00b454292246b6cca294a242446cb71d597af88a65fd3d7fc8595e99eee00199ab0a2542694136a4f27b8c0efcbced890926b72fd63f725fc444ad9db0967cbf", |
|
| 683 |
- "providers\/Plivo\/vendor\/psr\/http-message\/src\/ResponseInterface.php": "814c210dc671589cbc3dd9968381bf0862c050841b841fb30626e6294310f23c5f70d1353127afff1863a486057ac092ab25f4baa1c1b16b73182ee935d98020", |
|
| 684 |
- "providers\/Plivo\/vendor\/psr\/http-message\/src\/ServerRequestInterface.php": "39a029191df311166bc23fbfe4878817587322ccef231dfe6e85758956b38aed238088972b532db85656a009672d53cffccabe7f6b6d3dc68e061f3726275cef", |
|
| 685 |
- "providers\/Plivo\/vendor\/psr\/http-message\/src\/StreamInterface.php": "24488c469715d19d5b53f0a111a22e041b1b3e7b93a2b4da37f2a99a6518348adc77355172ce05002c41401365922715a6b2b30f3a1afca5bfbd95d9b9a598ce", |
|
| 686 |
- "providers\/Plivo\/vendor\/psr\/http-message\/src\/UploadedFileInterface.php": "a77870d2f1399de366c75aeb43c78ca3a3a8cf2a07a3b29ebbe87becc7147413cfe1cb079dce649c0cb33d614409e253307e47f4500988c092e26df1f2f4cbbd", |
|
| 687 |
- "providers\/Plivo\/vendor\/psr\/http-message\/src\/UriInterface.php": "078229ff2bd764d4bb8fff86b89657375790c3a24e963dcc7a6571f780e8a7e22954249d4c08c75a9f979e9b026e94fb7ec5430bb842bc2a37baf8ba44bace03", |
|
| 688 |
- "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/LICENSE": "ba7ad111dab105773d8a75d20024b48c4222cba6f7836b7b608fddf34f367cd218302829a1926a675bfd22660f4562b0e9a679d15b41162412924ebcc1a4e557", |
|
| 689 |
- "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/README.md": "48ce2def80836640ced369db92da9f9e943b319849cc89441023bc260edd6919c710d08c91fbdf04864c6e08bf89e60a397f5e814b3e9699b48df574f5799522", |
|
| 690 |
- "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/composer.json": "495b111d0e0b4f4496ccaec984dc89c897f189a67d840c09b0cf17034629e1c896c37c4ddb1afdceb7d5a188dd0d90405ce34aad409d3b7722169628411d3ca4", |
|
| 691 |
- "providers\/Plivo\/vendor\/ralouphie\/getallheaders\/src\/getallheaders.php": "a61a5f91f21a68108c7e9c8eef22282e4b1b6f6f14ff997c5f47c83f39acd08ec60f4b9d25d306d67fdc68ec57c7f71a44a1f63ebf7c25b40ad61fa1cb4e58a6", |
|
| 692 |
- "providers\/Plivo\/vendor\/symfony\/deprecation-contracts\/CHANGELOG.md": "ebbac8e43765fa6a443be6ea4400e93d980be078db8602c3a8670c27de500134afa5defb995838ce9d357297fef25aa307260adbf1ac8fc76a8e135a328187f2", |
|
| 693 |
- "providers\/Plivo\/vendor\/symfony\/deprecation-contracts\/LICENSE": "1fd8b5d3730452f1b97cf16d36855a77639d1f7a768ff6b9ca95e1f1c16bceed8d7a5fa339f106e3e21e74c6d477a360512c7c7a2154444e2cc93280eebd8ab0", |
|
| 694 |
- "providers\/Plivo\/vendor\/symfony\/deprecation-contracts\/README.md": "22ae6d728e12e6f0d47a4656c005b93dbd238d1eb5de78b4b5ad422b5d09d7ba3e4e2ac84d8047f65b6d02f92b136766738eab57ed2a25b0c148c4ce681d2911", |
|
| 695 |
- "providers\/Plivo\/vendor\/symfony\/deprecation-contracts\/composer.json": "4178f10f858221efbfebba7a6715a8fb46fa9d3b83f688b360ae86dad9f554f01b56805e2a16c27bbf8737f6aa48530b61c237dd7052ba791a342facd7103417", |
|
| 696 |
- "providers\/Plivo\/vendor\/symfony\/deprecation-contracts\/function.php": "dc7fb71782b8fefbb3e565eba914f32420a948fc9762f46491ecf8bcdc9bb5becb97efad5fcb52ff0b6723692a834fde463a5eacd50d71fa33924262634d6c0a", |
|
| 697 |
- "providers\/Telnyx\/CHANGELOG.md": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e", |
|
| 698 |
- "providers\/Telnyx\/LICENSE": "8756122099aea86ddf6f176a480c0454f2be6dd278e475bd6be7d7ab3d572162f1bd44c9f623e52e53514cb15336be6e84a5eafc8e2a347b481ab5799ebd6e17", |
|
| 699 |
- "providers\/Telnyx\/README.md": "321748e1de717ff62ccd3fb2c10fbed8ce92a66271f2047c83be8929f965c179cd163e429175b44893ae30addef3623f96659b98528a405a585f7afc7394e866", |
|
| 700 |
- "providers\/Telnyx\/VERSION": "7558cccb74c98362a480e1c0ae17e711de8e5d6cd10f508a31395105c0efb22cdea79aa6f9f6f890837d519acafc2cb3c429d3ab17a283e1992e5aca5053e25b", |
|
| 701 |
- "providers\/Telnyx\/build.php": "485d76b827a54d8455550e8a8f8d14862f9444381da251e66c2bb8ceaf2106a554c1cd339666b1260450749d0244d6b9ba0c6d0a2220ab2411aa4041fc83f8ad", |
|
| 702 |
- "providers\/Telnyx\/composer.json": "7ab90dcc0b5854786b213e5f2ee8c8030b21f65b2f8d0f74a3aa6d771ca1054ae5e1ba58ad6684dd1234e7eb7244be537cdb0a6888172cffcdaefcc7f5908dd5", |
|
| 703 |
- "providers\/Telnyx\/composer.lock": "1e4b665caeb711f94b1e7f0ce6388e91ada9973159c1230d4e60f0dcfd44ba9af2dd236e6acaa27564e91b4a89dde817d5a73cad8682aa9cb93b203f467c6be0", |
|
| 704 |
- "providers\/Telnyx\/data\/ca-certificates.crt": "66816e077ee99ceb9535a472e6bbf4f0e48ca838099c8a97c7baf3297fcada9a43016ea1ded63a455ee56a8f18501417a0f744fc17b215bb599cafd76b754518", |
|
| 705 |
- "providers\/Telnyx\/docker-compose.yml": "1fe4c651e406095f0ff1bfc196406d473184bf53cf80f7c67dc79f1aa94b26db74174e0e9bc47adc95eb2a5f6eb950255c4a5cf44ccb7029ba712df3be9e6384", |
|
| 706 |
- "providers\/Telnyx\/docker\/Dockerfile": "a63d1fabd8c19fef37b90922aa4bb21fbd1094635666cf2a3a4db47009888bfd3f1ad5c34c05184e2ccc8f581971f6dae91c1ff137730821422cd482c39e9390", |
|
| 707 |
- "providers\/Telnyx\/docker\/entrypoint.sh": "2bf3911c365a271fc52d17a0aac1687abf52e5286a5d52cd34367e18651dcfd6ef1f791b54105b7742f5d691564ddca3c05a9ba4ce8edfbc68fe919e0bdf6c1e", |
|
| 708 |
- "providers\/Telnyx\/init.php": "e590e355286b775423b39dd23b5aa0d3383d8a85ed2d1346802e0c487cb834154b4ba1b0ca41ae112ba81cf5afbcc9133db8747e08565c00fa3b0ea04fa7ccbd", |
|
| 709 |
- "providers\/Telnyx\/lib\/AlphanumericSenderID.php": "c6f7d381cd9901af59d67c66fbe6ace0729c77ac2b2962ce41351ed076cb39c9049aeeb72ba0e3933ebce4ab8a936b86a7e21d30a1c07b2b08cad9da2abcda1e", |
|
| 710 |
- "providers\/Telnyx\/lib\/ApiOperations\/All.php": "5caeaf5bede40fa19422387d224255ed534a866638b22a7a832111cada5496764bc0434cb1aa7365e1d4e0a8ad55545bb05a42a17ae5f2b361ed42c12166a229", |
|
| 711 |
- "providers\/Telnyx\/lib\/ApiOperations\/Create.php": "811f9227ecc5acb172e8e7120541227de0bc22cbf66a41490b743b3e49647a38889d5cfa5d64139b602572f0fcc0fbb96e3971c78801ed9acf7b50db2ab7499c", |
|
| 712 |
- "providers\/Telnyx\/lib\/ApiOperations\/Delete.php": "4c03010d81be8014694e366cf93244dd2f73dfb38fe8a1f3066b6ce179b999967de5a9d3e3140b3076d0dbbeccea329ac750ebb93915ced1e44891ab589f0c7f", |
|
| 713 |
- "providers\/Telnyx\/lib\/ApiOperations\/NestedResource.php": "390efb020ed7c101b32379716bc2111e83273e2a7092da61623f85295c67ad1f6ac2fda617ec91eb28d02ed52a86db9992ee044356f3d96aff2e3474b16da601", |
|
| 714 |
- "providers\/Telnyx\/lib\/ApiOperations\/Request.php": "5b947c7171a05a754fce9c5bcb81f93c1614db086fd4ceef9be1a57977f8bfa7311af0a60a2879d8cb9380c64ddbf7c991738e5b5a4e4b2feb5d88e25c822f3d", |
|
| 715 |
- "providers\/Telnyx\/lib\/ApiOperations\/Retrieve.php": "d2a5aed1aaab9421f2f2b41f69047a70bdea46082e118cd94e087f4082865313d7c67aa037fac194063c53b06d9dccbfa5e65582a9adbbcaaa2982396cbda01c", |
|
| 716 |
- "providers\/Telnyx\/lib\/ApiOperations\/Update.php": "a102e823a46dca1eea6c0bd67b4b7c63bdc0d074c97b42a830de18006782309d3c5f77103b32e82c778f670aade73d3c31f49da49682d9ac204560bd868cd526", |
|
| 717 |
- "providers\/Telnyx\/lib\/ApiRequestor.php": "617ebb71c97dbd896ad736a4e1235f784ea7b89dd73a980a2b259820e3dde0ae935fa532d1fc8e0d9e14a63f843e880e074319bab2f9c519c1ec19467f80bbd7", |
|
| 718 |
- "providers\/Telnyx\/lib\/ApiResource.php": "5adbc90947859652ee20745236c330c5a3124edd3140cb54cb2d4ecb46409d4d825024708b6bc0a44a418f181fd5631a65b41381aae7a55d7c98d80ca9751b5e", |
|
| 719 |
- "providers\/Telnyx\/lib\/ApiResponse.php": "0d292d053a85224f4ac839f54253decab0eec5ae9861ca95314e98cad0fec2d2f0a7e712a8ec433adb302b6702d69262c8866b20fd08d67b2d18571965bf6789", |
|
| 720 |
- "providers\/Telnyx\/lib\/AvailablePhoneNumber.php": "7c82ca4fa28264c4fdd910c71741270657e52cdbc760343339bbb7c1d5980d27b7af476f7e1bd431926d428dba685a6e34d250f9678ef0a4e3cd8c4b06289e55", |
|
| 721 |
- "providers\/Telnyx\/lib\/Collection.php": "8953b7490974401e598cfdba09be005dcc037ff74d7eed660d11afca7a45d62c47f6b6c4f31b3b3003f3d9401599283122034362618a9c3d487eb131d05cfa13", |
|
| 722 |
- "providers\/Telnyx\/lib\/Error\/Api.php": "5c496f65e000a74652c5e7e3c79303befb693e497d67dab4e13287ebe72722c9651fa04c4de4065ea969e140f7a2f74ccaee2ab728f05790ee26200558d0085c", |
|
| 723 |
- "providers\/Telnyx\/lib\/Error\/ApiConnection.php": "469821ef557d096a088d2997f762b4a39c82c49bcf22ca707bcbf611b20006106522150d6365835e0c7e23e3303bd407d78181fb7b5d86bd35095645e68da158", |
|
| 724 |
- "providers\/Telnyx\/lib\/Error\/Authentication.php": "e1c7a938a695fcd8602e5a972086989efd349a6d8d5e3abddbf6f548ba2e1f9bdabe708b5ea75474f7c3588ba7cca8a1dc60970a8be70a80962f90342e67c13c", |
|
| 725 |
- "providers\/Telnyx\/lib\/Error\/Base.php": "9d311a5445b2f3d9c4e25c42094734c3d6243fdc5025c7e5a609ce49d2b2a47f01ea2f163154917f3330e1a92d30a736319c4daf3ae18bb6ddc41d131afae0ff", |
|
| 726 |
- "providers\/Telnyx\/lib\/Error\/Idempotency.php": "cde2f56479baab53e74c6784878c7914e7393b655bfdbf7a36e0619fa9c521671c105c3d5002983b3759989a22eafa0bba7b4aedd4801d7d6b820842c0285e35", |
|
| 727 |
- "providers\/Telnyx\/lib\/Error\/InvalidRequest.php": "0c5748224174c20020155c9f0c734121d07c752460ef63648b08a2392bb6d8b6ff0a9eba13ed1cfb8988545f6dc8c70930de6e78da03c63da0e59bc5fa109a9f", |
|
| 728 |
- "providers\/Telnyx\/lib\/Error\/Permission.php": "3a03b08e77e6fd0897de16d69fb3769707f6fb46717b2a00f1282d7b3e33527f5ca5ea94b6df03c883ea177520140ab2dce4986e0ee0977cce8c375e8a5011fd", |
|
| 729 |
- "providers\/Telnyx\/lib\/Error\/RateLimit.php": "0ceb884f1078559f5bbfbba6153e6bacd6ebc49dac2d047da9e7c64d45c7cff0abc067711366aaec74a4f2736b7205c02ae9de8c214871a82ed1fc53faf4be73", |
|
| 730 |
- "providers\/Telnyx\/lib\/Error\/SignatureVerification.php": "8aec6ea46f62c2b6ecf845cadb726332f89a6c0dd92f4864ac71ffd25268b2af0468cfa83b32a24e91c735ae947498bdc6181efe09857c6bfa799cec721dadda", |
|
| 731 |
- "providers\/Telnyx\/lib\/HttpClient\/ClientInterface.php": "f47e88048bac320e8cabb1b61869f138f84a04858afc3b7aff4de858db9b3efc507d1607037bf07ec5fb1f1df4069b71bf8ec1d0edf953bd1eb8255e67651ae9", |
|
| 732 |
- "providers\/Telnyx\/lib\/HttpClient\/CurlClient.php": "fed4939d221213da7fa7865b4405e5c0b7dc092375e5acd890bfdf178baa6572ec7ac7ad57cb02caab5af24d2aa52763bae1b21679f3b94e6f7ba659cee7a438", |
|
| 733 |
- "providers\/Telnyx\/lib\/Message.php": "18acf4bf51ec27d330df16216924c65a45db59895b610a3c803ef1d09beb7d96d20753b4ec16be06ed40f2886ad46bb3d866f14a87021484ede5d33ac1a93c4a", |
|
| 734 |
- "providers\/Telnyx\/lib\/MessagingPhoneNumber.php": "2a2caa5e44efc5de92ef9b0f8ed0a68af1ab2c80932f4cd7fe79caa87ca1e146af3bd0e1d16d977738da2a3af1fb3cef77081c32a0dac50bbe8ef54a108efbc9", |
|
| 735 |
- "providers\/Telnyx\/lib\/MessagingProfile.php": "351d96a913427c045f534b6993c37fa6ce2ecbdd7a398502ae6447d631ff322ce146cd73dcd1161c999f6bc9ab9764221b4bd3567888dd14c110b98bdc4432b3", |
|
| 736 |
- "providers\/Telnyx\/lib\/NumberOrder.php": "52067d9999c150fbefcbba9969b308bb6118eabe25bd08f30cc4978cdebd68fce4479e53d71ce29632133e8c69bb4ce9276301f5a36ea95bd77d29fd057f5d46", |
|
| 737 |
- "providers\/Telnyx\/lib\/NumberReservation.php": "2b44bfa3fdcce2e21668004d458e9e6bcdb5e33cc37e9a0c980bbdcacec945dc4e06e489bf5b9d0194df00229a79e39bc2a62395d44e4072473441e258841baa", |
|
| 738 |
- "providers\/Telnyx\/lib\/Reporting\/ReportRun.php": "2a7b066db83e08b86e3da4c0b2d041c4d53ce0a1fc95ca3dab76ad2bbf549d74f9a97974be6bbbf0d7b592a814a00b514bb26ad13c7621b5c229f9bc40abac7c", |
|
| 739 |
- "providers\/Telnyx\/lib\/Reporting\/ReportType.php": "92ad055c626d39d9f878666310ffec1c425d4625af9e7803547d50f1684c166ea1dc67d79c35580ae08850bb6e570a81994014e82f4d4080377cfbc664c4fbc5", |
|
| 740 |
- "providers\/Telnyx\/lib\/RequestTelemetry.php": "cefdb55dce61e5f276bd49f6b49e57c78085338537e56cce6fea5a81cd1d2235f1eaa78be326cbd513117be88a046177afb628659088b66ce423799995c53709", |
|
| 741 |
- "providers\/Telnyx\/lib\/ShortCode.php": "4abc882d0dbc72becbff07212d17b8e1383b0efb43818a7eab983fd2a08c3f591a4f4ba2f185003fab0622a43329c969d2fcc80b23cb94410007a0879309ad49", |
|
| 742 |
- "providers\/Telnyx\/lib\/SingletonApiResource.php": "f11599b789dfaef76ef6cf10bade1b426d2e16749bd207c6d08ddd007fea470fdbf0492f9a59cf8bc9f8589aa4532cd6c3887629cf27060696c3f086b0a48673", |
|
| 743 |
- "providers\/Telnyx\/lib\/Telnyx.php": "4971ff61049149242b0cfdca4a15dce213c465ee697cb444eb47da8215eddf2737508164c59393bd7661cf40b1a525afa9fc0df0dae8a071a59f3646a5ec44b9", |
|
| 744 |
- "providers\/Telnyx\/lib\/TelnyxObject.php": "a1bb11b6bfecd69ba694dd34d6309707e916ef45edea1e81e160c572dc404aa4e16841f3be7a82b3965037efef24db7c7c9730fbb65d26e8a188d30fa9af01f6", |
|
| 745 |
- "providers\/Telnyx\/lib\/Util\/AutoPagingIterator.php": "d03ac3841bb553d847be9ea73ab9debd8c1f2c829b0d38ac4416a121ac535a5ece2ecd9943d89e720cb5abb1c907ca9b96df899a561c190ccd6843bde785114b", |
|
| 746 |
- "providers\/Telnyx\/lib\/Util\/CaseInsensitiveArray.php": "bcdf3fba35ae234bc63ba6cdb5429aaa5fd6baed85857991abb9eff854b23eb7a878184ed038636292ac470b67f91c6bf8d79c20a6214d31c872d22fe51833a5", |
|
| 747 |
- "providers\/Telnyx\/lib\/Util\/DefaultLogger.php": "50a69f9f6ad628e489a05fdad0df811c926c957c301adb0b4b906dcce9733a0598f6c2eb126865c54a0100131dc4230a834b1e98275237ce8e90bff2e96cd0fb", |
|
| 748 |
- "providers\/Telnyx\/lib\/Util\/LoggerInterface.php": "8d2dc2c59af5e625eaeef0b85b09f78a42e533b62fee84717d67a4c706fbacd94674f439d3ac60984c0a3947b7d2f5a8ccfb64e071c41d063b8298f57578f88c", |
|
| 749 |
- "providers\/Telnyx\/lib\/Util\/RandomGenerator.php": "292c880420b28390e3d734c6343acd48f322db0c474f80430402916de1dcbf8e988b3d2753a7c18e763e632f474284b213ccc8e8fe4e52f00569e72728dcccb4", |
|
| 750 |
- "providers\/Telnyx\/lib\/Util\/RequestOptions.php": "61a13e62a72e7fc4a1f4d2a707d03ca785af36dd8566e037efa4b1a07d91debe1bccc637bbae6ab9dd836b20a4133cdb7316d6c2628da0d13d2164d6613f1e3f", |
|
| 751 |
- "providers\/Telnyx\/lib\/Util\/Set.php": "1381d2144748a490fd27329fe231e9d3a9a8b428499d4005f9ff18a946c350d8dda1ea90285314a1a99f5d351b1b235ad37a74823c37d7345da8af528dbbba87", |
|
| 752 |
- "providers\/Telnyx\/lib\/Util\/Util.php": "d7c35dbf5a2832ced6059800a6730fbe75338252641edab902adfb134a179d96e162f05bca2902c6c2d99cf4827d5b89b0daac826162c7d460e17017ee405606", |
|
| 753 |
- "providers\/Telnyx\/phpunit.no_autoload.xml": "06ad2f4fe0a292902757629f5605509f32a0d1dca527550619c98a61519d83fc70f3c886b12f5e5734b1031186fd9c7fed6fba813cd816b0f07d36c2a6bf11e4", |
|
| 754 |
- "providers\/Telnyx\/phpunit.xml": "82ac037adc20f2aa76682878094e8bffbfe31782dc6a94e2987bac5546e3ffec90577d03715f4ce481cc977685eec9e4109a61b4b46bc19351c2cad555d7cadf", |
|
| 755 |
- "providers\/Telnyx\/tests\/TelnyxMock.php": "e8e93ca1114530cb7e9cad46eb20e32072934496d515a9391ce8093773450dd60f3288f9d3ba46533a0f650fe67b508d5e54bbfc6e1642443d1fc043b88eaaeb", |
|
| 756 |
- "providers\/Telnyx\/tests\/TestCase.php": "9945df738b56e344648cc00d3d4b94345c15d8749ce511b5095a87d5e52aed35d8e3c773276d9dde9d9fa04eada784a55e4876ebf70a198ba719c8e94c8c32d8", |
|
| 757 |
- "providers\/Telnyx\/tests\/api_resources\/AlphanumericSenderIDTest.php": "1db47c5c215f1dccbc0456035edb1619cb7575dfe2b152924a6e1abe4a021bf63be3b1d1cf1b86285c5425f5df46c8e396cd66b6ff6a27534e402e145e5fb194", |
|
| 758 |
- "providers\/Telnyx\/tests\/api_resources\/AvailablePhoneNumberTest.php": "823ab5138035a84a790d70c9bc5964e7aa163f195aeaa2fb50d2cfc7068f1a77440f09a134bec36a187cf57cca6c735b428b225239a263aa26cc5cecbecdf6d5", |
|
| 759 |
- "providers\/Telnyx\/tests\/api_resources\/CollectionTest.php": "af248a4d4c4504f5fb7148e8f5ddbce3a05cc859a761f57cffb8335be10b07ef6d4e808002601f92eff2968e86873fbbc3fad838420db0694f81b9cd95091452", |
|
| 760 |
- "providers\/Telnyx\/tests\/api_resources\/MessageTest.php": "a616a69339b599526dfd24a25d8e99eefc99c2341bb7d4f635d1b4984f41dc38a3eb6bca3e4242caccb974b141a490624669b5c2b2f5315b6cb07540d74fcad7", |
|
| 761 |
- "providers\/Telnyx\/tests\/api_resources\/MessagingPhoneNumberTest.php": "40409c270a6f9a683bc690f6e91051fe1ac4c8a6cb1b4e5536416d64fc3f8c81f327f33e562ee94cee1481e0ec2f13148b0dc3f76f3f20a49a9d80adfa5c1afa", |
|
| 762 |
- "providers\/Telnyx\/tests\/api_resources\/MessagingProfileTest.php": "1ca7abc2b47f221b491ebbe7def5569deada6eaf4184bd6e6327f7bf2da15669d1fff581e24c466621e8462e816c0a12d02e0aa1d91aa3746092f8a09a9131ae", |
|
| 763 |
- "providers\/Telnyx\/tests\/api_resources\/NumberOrderTest.php": "dd6e4382dcdb0cd60ded9d9db6262bbc7f523e8f5eb842e15655fe8ba4e24ad5192b8be40bbc762de2c62de3aeec31e1373063420a99e39bf02f5bf74915d5ab", |
|
| 764 |
- "providers\/Telnyx\/tests\/api_resources\/NumberReservationTest.php": "8b8386c0e044e120b6d60f97433c9ecf0ddc272f805034768300bf01bfbc731a3f6f964758e509d650013df03bca66eb1db13fa1a24315df76ea55fd86287fd6", |
|
| 765 |
- "providers\/Telnyx\/tests\/api_resources\/ShortCodeTest.php": "8aef092868b89adda6517905c7f05245b3c39affed4c7723e5a32cf17b8e39528e8925923aad4b2add5a0bbce9049a8f934141b87a790fcb002eaf77aa494258", |
|
| 766 |
- "providers\/Telnyx\/tests\/bootstrap.no_autoload.php": "cb002f7c8f77834b6414db6535f083bcd227ee6085363fa3cb0f66b55226680a45c8562fd8458249868465957b2aeae134b3379f8ee2ed22c96425475e9c0af1", |
|
| 767 |
- "providers\/Telnyx\/tests\/bootstrap.php": "50e143ed68aceb91d3e119d5a31521e76bfe9876bd780c90ac83afb7ca4f32be48ff81c33c134109eafe1d22f35e0957a9a834966b8853df99dc1df04795adf4", |
|
| 768 |
- "providers\/Telnyx\/tests\/data\/test.png": "6ad523f5b65487369d305613366b9f68dcdeee225291766e3b25faf45439ca069f614030c08ca54c714fdbf7a944fac489b1515a8bf9e0d3191e1bcbbfe6a9df", |
|
| 769 |
- "providers\/Telnyx\/tests\/openapi\/README.md": "0c54fffd5b7a5f393358864ff9e3bd3793075d6060cc1336603b2455d60f16d160ffd47b52bca6834acf0d9713855b386f69580099a3dcc131e8d5d617975ff2", |
|
| 770 |
- "providers\/Telnyx\/update_certs.php": "46dfc1129c3dff2211cdd8274fadd8629c450e94a7a1c8527373221b25a0664b6043d6b007351ac9afa4b40ba349a7fdbf4ad2e088cf0a8d864f7cbb81145fb9", |
|
| 771 |
- "providers\/Telnyx\/vendor\/autoload.php": "1d4735a3ebfd65901ce478f8bb98ac576ef9ba2706f17a1c6ab125979a882ec7ff463b577fed1c418f817c1a56e842fc25b6aeb8e7ce6dcdd554a25e03959c3a", |
|
| 772 |
- "providers\/Telnyx\/vendor\/composer\/ClassLoader.php": "866e8cbde808b4e7774c5d9e2bdda44e84ff9bc84268785aff1a75277bd7918dc26ceeb27732718c9ea93756777ec0d16c09c15f9c1179be3cbb410c7914d295", |
|
| 773 |
- "providers\/Telnyx\/vendor\/composer\/InstalledVersions.php": "86ebb1216b59b01b7cd1f3b2e66311cd6295b58fab91a9a82603f903c6d2f716d7697a82d625372538f809e9e45f7dbd257a00e2b95d23c3785e4eeb3a6ebb60", |
|
| 774 |
- "providers\/Telnyx\/vendor\/composer\/LICENSE": "f3bb64009f41a425df5a9bbab53490f0eb9b74fa8d6aaa2f57efb928edc4ffff330260666edeaa04a91fed708c3663371cf01b284f3a08d6698aaef7a23f355a", |
|
| 775 |
- "providers\/Telnyx\/vendor\/composer\/autoload_classmap.php": "a298b75d605ec9a330a5efe11769e79f02cf202f49d8b241afbd175c7fcfa0ac4db8e72a29aa1d839138e3b181fbfeca525181eb57e998a4a2c14ec9e457cf1a", |
|
| 776 |
- "providers\/Telnyx\/vendor\/composer\/autoload_files.php": "107b2d75757e7b39e2d279e373fd4291d57e91a7f442b0f880b51d07e7119beb9d41d1cdf916131bba717e8da953e2117ff83f1bd9ef850fc1d9056d0f02996f", |
|
| 777 |
- "providers\/Telnyx\/vendor\/composer\/autoload_namespaces.php": "30324cf2dc20c214c5b5c8fdc2099b67772149ddea1d1d51969c711be9a83d036e43746c600f958a6b49969b16a10ef93e9b1e3d5af9714721ead916b9aef344", |
|
| 778 |
- "providers\/Telnyx\/vendor\/composer\/autoload_psr4.php": "02804e683dc13b4eb2ad98284be2dff3eeb97f0ae9054c3a45641ce7e6144a3b5f34ae36eb764fd2faae39fe5dd4131b4dffd4649c6ba3220ef24aeab45efcb4", |
|
| 779 |
- "providers\/Telnyx\/vendor\/composer\/autoload_real.php": "469f95fde429006c3262cabe72cd49970b0cd6098b743d8e5a646af25679dfe539c98d3337b51a8faf7f30d9c64e1def8d131a93e8897f801830e7e1c4da5874", |
|
| 780 |
- "providers\/Telnyx\/vendor\/composer\/autoload_static.php": "4845f043e32744886f456f358ea87cdcfd641508151ba6c3b0169c9aa53fe111f05b78b82e204368da01da68d7007709c9140d08dce4e7dca3cc4c9f60397dcb", |
|
| 781 |
- "providers\/Telnyx\/vendor\/composer\/installed.json": "5ca47a408f164e118f7ccba81577933913002efce47331f2eeb13f3e24d78878521db08454026d270deaa6552095260d745f0a424c91eb7efd36f6a9a20adfba", |
|
| 782 |
- "providers\/Telnyx\/vendor\/composer\/installed.php": "38fb24f1f4e4aa0435926d601c7b78797c231eb0e3621e370b17078645f5d238a1d02da3a29cd14a9125f78f53964445f4326311f6e830cf8faa24e944215ce4", |
|
| 783 |
- "providers\/Telnyx\/vendor\/composer\/platform_check.php": "4d385b31994301facce94382fa007a56ee32268d2e1cdbe7c9f9cfa834ed4195d3cf8e8e7c9a800c97aafe2c9b46f3c1a93e632c7415e8a9e4a282c083cc6f9a", |
|
| 784 |
- "providers\/Telnyx\/vendor\/paragonie\/random_compat\/LICENSE": "0c0bf603f7e196edaf56d02acbb2e14df7f73a2da0617d62b5fc811f088c29865ecdbc7c6925a19bda63132cc651c56f1cdac79dfa02aaeb3fcca49033636ee0", |
|
| 785 |
- "providers\/Telnyx\/vendor\/paragonie\/random_compat\/build-phar.sh": "a5ecc580bc6e95a9c901ad1a0097fd47ab857dee79d0221ae463e27f27cc8b2227e1975ab2699b9d0782f0b0396ed9b3ac0106f53fe61315cd2954ae54beb333", |
|
| 786 |
- "providers\/Telnyx\/vendor\/paragonie\/random_compat\/composer.json": "c400438df2f41ace7bff40d284236bb06c6095ac03b58caef5b062e7ef317bac5a6bf551c94459ffc838acdae7df6cdfc615dfc3cbecd16be37ba67bd948415f", |
|
| 787 |
- "providers\/Telnyx\/vendor\/paragonie\/random_compat\/dist\/random_compat.phar.pubkey": "e8909663e5350be2fa9416e28c6b179c41e87feab8da0d6fa6a41c294c9b00e8cc40ae8bcd03997770056f70d946315fd530f72f42974f63195f14b3c675e3c9", |
|
| 788 |
- "providers\/Telnyx\/vendor\/paragonie\/random_compat\/dist\/random_compat.phar.pubkey.asc": "f07fb9c7b00f297e73127dddb1f3986fcebdb0760454765f6ce0977347919c0c74ea197ed310bcd86dca7ed227812bfa6d1595c44e40f10c085cbcbf602e163f", |
|
| 789 |
- "providers\/Telnyx\/vendor\/paragonie\/random_compat\/lib\/random.php": "fe4539e2b55b47dfff1e2256c91498e5a41a85e28e42d790fdbcc42102c16abb09b0d7a0e2268ee004c555e1001241a9925fab1eeaa16c11ae2188e1f01540b9", |
|
| 790 |
- "providers\/Telnyx\/vendor\/paragonie\/random_compat\/other\/build_phar.php": "370c622746a37b65aa6e36c2fb94486b4fb01f2db3f3c9539a7fde711d1abe3f9e9c30bc61f4200e6da9b47086c207b03cd7258d77dd2ea6b48126a618e2fa0e", |
|
| 791 |
- "providers\/Telnyx\/vendor\/paragonie\/random_compat\/psalm-autoload.php": "f05ea11c8e973ddffde4d60688b161701217ac8e5c9237cfb57babf7113482d5e19ea441f5092eb1448a21b95ceed75f994427d6febfe0de100c376ed17e91c3", |
|
| 792 |
- "providers\/Telnyx\/vendor\/paragonie\/random_compat\/psalm.xml": "88c631fb2f70a79d0e56a4484fb7ae8b6b3502ed2a9599757e7a3302c42b0adfc6f0c45c9916b88d7430f209d8934b6121221dd8b424dd913c49236db7ef01c4", |
|
| 793 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/LICENSE": "db260eb10b8775cb408f675dcbe11bfb1a738d638f4215467df6c4bd03b8265dec7712fffa30dbcd38b5ef944266c3963343d033f497eaa6dc602f55fdd8729d", |
|
| 794 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/README.md": "82f123f85b02a7e91c3ebece404b85ef5a0950e0ca79bb0841735a5a03b88d1a3efed4bc8229b3ee1db245471cf58b81923ac9800586ace3b794421f379f7bb3", |
|
| 795 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/appveyor.yml": "ed6f025871e47d5afb1eda2e0705a2185670c447279cadd8c0fa796779fa2f1d7a5f17efaf6412c403e40bee345ac3224a45f9aa0e5143f06ea5e25ba8cb848a", |
|
| 796 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-fast.php": "a40c6c77f211a2257d3339ad80ae7197ede8ba0a94c76b48052cfbcc8ce903959dbd8e3434e6660bfce2c5e935cb9f38568f96cf00819d03f4a1c46cd6b7b0b1", |
|
| 797 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-pedantic.php": "c1a0e8a5b461135bc58ebf0a37d75e865d9e44ce666aba9a95d6416cc7d57a834aae6fb6ef4a9cb4176690a4e41cdd8638106a11b32a155f3a8ca3acebf7a504", |
|
| 798 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-php7.php": "0ac98043c8df48e7bdd3a20c11688ad3702a06271687e1019c2a7288288532ea593e7e462635b806c0b18dacbb8f2bd6d9c700a61d2b1deb90eba0b49660b008", |
|
| 799 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload-phpunit.php": "d34cda9cd77a67d93817d5b9b1bb51a13521b2539f9a8d0189debb1938934df1d5fd51fd2a82c9d4775f5a8613708a1e78687fab86c3afdc356bc4b02045bc66", |
|
| 800 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/autoload.php": "91c2a6366a27a76a0390c69dc4cf061c73cb03a22a3303aad673cd08e8cd659c7fa7e6796acdd9d2d271f015eb16b15663c5d21d8a538fe14f459519c9f9e8d1", |
|
| 801 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/build-phar.sh": "5bc154a32c62797e85b82595da69ed11676d98deb9644b62a12d5ec169d3edfd4d3b24c67170143f12ca63d9bea06cd0803f68d5e63a7849ea9c4dc9483f7b4e", |
|
| 802 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/composer-php52.json": "10cd40189c6ef385b9e21311b8b2bc8f7943273552227c8006a38889d743fde82c8c61286484d59bebfb83e645a87cf6d99f29409439a1057fd16a4ca7727417", |
|
| 803 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/composer.json": "e9b03b450c47dc1a593e35493c7c80c373f958ac5ddbe89a163f15e7a30a8139ac0f9868466610899e3d5e5d573d517bf09acfc68d2b9420e3301b39e7736aad", |
|
| 804 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/dist\/Makefile": "1cb0cca3e1413538bad70b8c8a22dd68d17bcb6450e0c4ee41fab9fab09c36bffb4816dd0f7ea2f40ca1b4cec6b030c5c0cc17955d2c83ec08759e748b04d965", |
|
| 805 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/dist\/box.json": "47543b120abf7596f26b58f9911963e9bd0cbe2297b65d43f74dc52130e503ce09049a4be53146387b7fb42b7640f6577e3c1f4862540d4f8a0e668b0001e62c", |
|
| 806 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/constants.php": "4e0597dadc39ae7b81e46ef5f3f045812a11753d9116215bf0d905e0bb3760bc44639988f1ec8f0ae8998f507e0c99eecbd19705f5399edfacb87172d7a577ba", |
|
| 807 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/namespaced.php": "c550633d5dbd23c1bb2fe9a14b787e239bd5fa898932ddb8a1b1f8909a57393e01f12337fcc53f54b24bc48a97c3ed89de03da089ffbea71ef90d48c5091e200", |
|
| 808 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/php72compat.php": "85b52455b2764ef4b80d60b8d99d5f65264b2a2e7d770b2ab05871a5aad213ad35f2cd755a8b5d19b5ddcea758c024175480f2dbc89ec75dc86ccdb453f5fc25", |
|
| 809 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/php72compat_const.php": "177d6b1b8fb5286842400019be1465fa0438e06dfce2fbf5e93e93d0715c161ad07c0c31c17394cb0c6673a058f34544454cc0845893242dfb5a998655c93701", |
|
| 810 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/ristretto255.php": "f2c36f65a9a556c43bf9f2fcad02f1c87c29d89bb5b3d81634112defbae7ac0c85e558fb3b5a5e74d95906a4b543e7a2cf16fd444ff28888ef09d73fb9e6b6f9", |
|
| 811 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/sodium_compat.php": "75e3119fb1d400aba554506a562c64c1b1b82e66277383bf307406fd1f4c68499a32b82108529d5af99878890e3551dfd1fef1ab62ae86982c27dc975dd39155", |
|
| 812 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/lib\/stream-xchacha20.php": "4cf0cb7bf023249c18f2261057f994faf8c4233022651285fdf8978fe9a71d7eae0511ea1f64faf2f3fcb1ae5b010112a5a4ebe8df9fea7ce908916cc2ec90af", |
|
| 813 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Compat.php": "7a8389a0ca9cb8e544b7f345c60705e1cca41769105531211219142f15c83bd60b442dbe8bd62042a5fddf31040a19ba1f3f00ba6c2a44c3160089a2605099da", |
|
| 814 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/BLAKE2b.php": "91aa0293c7c821d238f36fbb1f4327e67a718b53c13f0ea0f4d6e1d1675618bdadf183d842d4dea103017be863d40762a20c644a4f3619c7549991f11a19445b", |
|
| 815 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/ChaCha20.php": "7e09160954fc59c77890f28e75f7ce8b75fdf08b9d5461c5e7dc1f49bc664bcb1b7ac74e3f5437657a20729c2db965d968060b27309a4a06a252d22b7f8dd4f6", |
|
| 816 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/ChaCha20\/Ctx.php": "f19f61e54d42bf154182d203594613371f430d7c78f5b8229cb9bb94e19e42bb9a8e434639accff18497cd728ef391a1128d0145b8958f8d4350ee340340df39", |
|
| 817 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/ChaCha20\/IetfCtx.php": "41ac6fb53ae553db13ef5c12d8c1c16d017267f130e8a00e9c2a8ad10d723aaee5ee08f2888f016babe4d712a0f1fa50012e4ebe6626b34973c26ad6728e36da", |
|
| 818 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519.php": "5404d91b94a8e6c442c3eb30b763f1dd0c1234b845b967b7048f71d5a0b6e1ab287b44f43e06ae5bd6fce31f78154b8655353d7df86b6ac699a41200b9df33d7", |
|
| 819 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Fe.php": "937defa56e99d4f38a81b88c03c649deca5b0f41f5d0b8e340cadccb34ef0677563f18967bb9f63e9547137a2a1827f9e37c62005fe745aff3764e39adf86cee", |
|
| 820 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/Cached.php": "3db1263681f9414d237a8318c08ad07bbe3279b7310e21a40c22033f5d90eb5d7074dbde430eec7910a8d7e4286fa6c0131938c92045520f56fe6acc37af70af", |
|
| 821 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/P1p1.php": "d757efd8638aa0c1609d59c47f3b18608a0fc6e1e5bc3cb94f16fd3fa2d6125872a796f4837cd8b940ca6988db92d3c668bba684c721476ee5fdb6fb6d50670e", |
|
| 822 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/P2.php": "cd70c62efef16eb21967d5bb0489dadef845fb3cd4faf0b1bb7d080a8685164b2b0fde4d8865dec22037795eea6df605dc2151f20871c31d5e9e0084f0066219", |
|
| 823 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/P3.php": "56c14b848691af72c00f5dcc3d31281a300d0ea9b6ec273ff929cf30d2279cf34d51891729a5b095445fffa8a63b8c8147f4d1ea24935c86b0216b3c40aa4241", |
|
| 824 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/Ge\/Precomp.php": "f6c53daf36931b4289248a231da52759e91e5c38af10b2cb89a1bd7e55d29e316dc77d144fb9e52ca1cbf50db84234aeebf13603c62d58d5b3ee58dc19cc18f0", |
|
| 825 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Curve25519\/H.php": "c2e48f6273cabcdc40f20fd0f7ea55975fc9da5a419b1c9cb834b694c858533f9a0d3e3ce768b532ea6b69ff5d2df1ae4c246a15b7129916d4034ac497ca2be4", |
|
| 826 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Ed25519.php": "eda61c7ee144449df655ea9a9142d0b26624644542012652598bdc51493f61938c13651b32b05e942d31d3cfbfb7899b8621f4ebd8a5909a1ed12704b2bcfbca", |
|
| 827 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/HChaCha20.php": "b5005439c15ef7aed83b566e670053819f59c415d9c5f607550c756622d7161ca32fe65dad8f688e6a292f88192637260d859302064b416465c08bbf7f6dbe13", |
|
| 828 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/HSalsa20.php": "c882b541376c8eea8ab3bb63d8b51dddb345cc45ade8d5d264dbaa96427f72f0201aea828e696808155da7a978c4a1fad09723d42ec393117693e48187cf2a4f", |
|
| 829 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Poly1305.php": "c438e61d6b330be26cff863f8b5c42fa3284d6e8abdd1e43a2023c2695dec643d2641b2239a9b0fbea1a34e9e8011d5094b4eb024b111b6fa903a1c026328747", |
|
| 830 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Poly1305\/State.php": "4558eb5b05c7664408a4e793c2b85a4c2593ab8a1118c3b89db712f337a12346e2e882a0c638c32af733f5589a310b4a528c9bc02c136692ae82f3ac7e6cddab", |
|
| 831 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Salsa20.php": "2836d7eeeec597187c456ec790107a5dc478a1f79c1c1e4ede4314bb830f865f189e048e3dc55742703e2fb7bf31275f515cca57ab5bc47332961bbdcac7c490", |
|
| 832 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/SipHash.php": "345fc6b9f37659ec9830c9b3bd1459257b81568dc73809c023c551dd825981b0da6b150b6b7cd57b00097ae9cd3b742d730ebfda2d2e459ebd7d5257fc967156", |
|
| 833 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Util.php": "81aac8187fcd44a14ae856e34d7337c012ff3603c606e1b9ff5a95fd5cdeb962725b70672a57b600d344fb2f34aeea00ddc8f1d4d8f8888961fae9171f8262d1", |
|
| 834 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/X25519.php": "d11fca34bc3d313e365ca47981a0efb880a3cc8be3e2cb00da7df69de8d52f2f1fc793c1654cce1385ea66aec40eb5339c5cbf120c127cb399b72fe84b7297c4", |
|
| 835 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/XChaCha20.php": "de5d7f3dd4402fe3c99b66a92fa4f0766beec66928c8996b3754b2f7a8869b65035c6ebafcc8ba2fe9b309adf541e89eba9491554f1ba548af6139770aedabf8", |
|
| 836 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Core\/Xsalsa20.php": "6abb7e9217d5463d373023d5aab49c41cd3e1026835985dd13256e68374ef63b90b7dd033f7fe14ea60229a98e5e64d0d0f23b7a382ecc9d8b41746bbe3fec11", |
|
| 837 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/Crypto.php": "257d3d05f1acc745b21f25652ddf0b09b5a68b2b75abaa9216bee10ea958f8ed1d3c964dda5326216366d9cca4a71e8678c23994fd07eca2582e3d8c8aa75500", |
|
| 838 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/namespaced\/File.php": "d7cce5179670dc18544eace3bf8b8b9863e62fc9520526da2870e45d5d400004fdeeb3c0f44a90caf0742f89b633e7fe3f996bd5f89af4c7f52ea37f429e453b", |
|
| 839 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/phpunit.xml.dist": "0f8b25b7effe47068dfafdc568c3298d7c5f2d4eb1abc040c8dcda1b0daea8523a1f82d8e00d6475ffde3cb566c18d17ccfd07db59c72bda11f40d555b692d32", |
|
| 840 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/psalm-above-3.xml": "5bb5402c96cd45a0d88542bfaa12ee03c26c3242f42f1e33a2a32e5a16143e6b66e7dd4bca7cbe30f73ee9eea7e72862e356f1bc4c4daaaaf1ebcb248d63b230", |
|
| 841 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/psalm-below-3.xml": "9ef67d2d8ee81c94d0ed80d592894be0c200045b295178f246865d12a54d963e97b4a8d75ab88595bbb73d74c75ab2275a54b9a33733bea2d15487c5894f515c", |
|
| 842 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Compat.php": "1c233a4b931c13b00e243f699eed9e81fc683846e089a24ad90dd17f786bfdec9ab32509eb9666074c9fc2a168ea8d411144274e6c4d4413996c78bd3c536515", |
|
| 843 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/BLAKE2b.php": "27fdd20dc655cc7f58454cfa97fb974e4d99f6da5b97d79e669d41b9c5bfd1be18fa34f0ef7a353731a3bebb11b56fcb68818cabb3d8ff026682e7b39106c6f5", |
|
| 844 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Base64\/Common.php": "c8512fc6d570a3198107493c7b8d20f38539caec221adb14161d7efbd6ab7d1d0bef4cb5528fcd84cd9484f1a9e0fbeb45aaa2365012680b0106ea92f8873281", |
|
| 845 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Base64\/Original.php": "4564f7cfef60c318abe626832bcd355cffbe04d020e04d18c5554fc1610c4a1b0ae8d1111681e2a458ae0b9d7ef3528bd62aef019fe3c1a3f9d28b5ae58da86f", |
|
| 846 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Base64\/UrlSafe.php": "dcbd158a52f33b9c64c8046c8f091d9af95657a562ac694c9ac0beb3a1876d55a3f23cd42c1777d9cf2a55cdae38d88ec54628b2d5fccd6befc92d4d51eaca2a", |
|
| 847 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/ChaCha20.php": "f0015a4f95fb6028c015c954992233d76ff0b07c7c60de6347e7b7ff1cf704e80de4ed5b3e236502fddd3c56071aa8012758d905031d6154f965c4898251329c", |
|
| 848 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/ChaCha20\/Ctx.php": "aeb8c31a1bb46b8519f280f23d349fa93911bf766715c0964c0a901369d0f0599e87c6e13459734f582a04ce74d9ba9f3ed7553d4b7214855a815424a8a8610d", |
|
| 849 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/ChaCha20\/IetfCtx.php": "d22a84b5bbe07297fa80c989e93681b27b3ee502a9b77b63e2b08eccdca03cb98c39834feec5fce3cb0e1915f2944b06e94fe555da123de982fedc61b30c1f91", |
|
| 850 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519.php": "b25ba0383cbaa00339f5cbaff6b400a25f3bd4d244d2fe70a08b987ead0ebb04a7f51b9476baf01fea5967610911f809114e39d21d4e278a9be72b48ca39b09e", |
|
| 851 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Fe.php": "0fad7d424e7f3fbc0abd6a4f9113c83523aadc3f9d3423a94da0954f56d31705ca567ffad0972794bfbba00c4909c8638130b99a983cc52022d262d6b7d145bb", |
|
| 852 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/Cached.php": "58ed8181f08dd61076c0ae9ce176455d951de04b9b1b03260c593d009414e9757d9120ea9e94040ddc1e0867f8a6574dc55e3acf82f946100d03d4506c9f778b", |
|
| 853 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/P1p1.php": "63b5f5a6c7061826799c2e3285884ac2108adb19ea246475b98fb68a26aebd694eeba56191fe15fbc1a9ecb9b85c139bf9e8b65b4456b8fb42652fcf29097fad", |
|
| 854 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/P2.php": "4caf0b912ad4bd82f8c447fc25829177323ba7af6d2355a7709b8ef99a855b51158e5252a1739cf6e9ae72b780e415af0cf3d510bded3fbce3542c99cf057535", |
|
| 855 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/P3.php": "5bd84bc8087c48e62e9d29451c0165376ae8486ad9288556c81e4cb897822cdaf95a2df6093f16e2a336839d0a4ea7c1535361bf041d8be0fddeb1eb245eae55", |
|
| 856 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/Ge\/Precomp.php": "a58cbf2c93a75948b4576395ba1ebcef5a35b6dfb4625690e872010a44edd92939ba146b145cf40bc2cb6e45da0e19f169a45b575d813a70428f171459ee2d8c", |
|
| 857 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/H.php": "0ce669e4f370acdbf6cf27d5a525b0a3a3bb7c794b8a2ccc7b2f3a3670fbb048a8493e3e6306a5f148204f50a5458d47ffe4a2705520e15631b02d45d39b0676", |
|
| 858 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Curve25519\/README.md": "3f50765b54a3cf172c9cdaf2541a54273b811df61330af83883de5309103d6309a0900ecbae056f60aa831e438543c16c809fe183cc15c6a2f2bf15f6f910cf7", |
|
| 859 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Ed25519.php": "89eada60bdd8739af528cd74b771a2ac04e36aa3e588549c7e8a82d2267a4df5eb4ef13c806185ac65bcd33fcba0f49a03cdbc03f143ffaa576ba6f4ab5efaa7", |
|
| 860 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/HChaCha20.php": "e221d5f3c4818256a895cc05a8e68ae2b3cced7eaf4e425f3c373d59b2cec31fa7b498e5e42af7e374e70c3a176f966da3cccc4be97b646182a8bef2817986cd", |
|
| 861 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/HSalsa20.php": "05e5376ceaa53ddb24971a43ded855892cf37fe0f03647660f573334ca79e61edafdd511c418cdb3d42e62298462e729c69b4dae3eb802c4749774b43d659536", |
|
| 862 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Poly1305.php": "1bc3f6e6323d44ab76eca14cce61e7043ee98d8f7c50f29a5e29704c35adee345faaac767af588e1c6566f5732c1ec40ea815c51711056737460c9143adef1e8", |
|
| 863 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Poly1305\/State.php": "9a69f92ff7c3e384cd57c0d5fddf9111d57abc9849acebb329ffd1ac4f53e539e1548140f4a430f628cb378d7fc980494307df13e4d1837b0af377bd7811c6d5", |
|
| 864 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Ristretto255.php": "c4fcc5c22d8ece4e704c847ca01ce6edba7682fb2b9b91d74d664a204cd5955128c3bf8089a855312244f28c4ef6953927832ed989a03edf6eaec5c26df1722e", |
|
| 865 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Salsa20.php": "8c2ad19b46f527ef9c091cbab17f64d36610745ef32f778e3911e1aa2a142e88c0f6e005ced046a678d66982d2e9ca48677f082697af3999cb62fecee4d800bb", |
|
| 866 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/SecretStream\/State.php": "629c6f96a7bba323ddb8eb422e7048839c188560932cb4306b9f11ba8a2b15afdfc037fc14ce8725ed3efc72c26700cf6cd2ca4a85870fa885aad6b6d57a4a0c", |
|
| 867 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/SipHash.php": "6f24cd7d32eb80c943461199a0937b0acdf01560542c54ca916fae6843c3dc5fa65d751380434508aa50501f7dfb6c227e9330996956c4a8c8b32b6ae55bebba", |
|
| 868 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/Util.php": "fe12c7259ad5daa7eecd8e199c77f822e612333169878309cec5b5483a9bcc775261c344a31023c2741d53f37f05a0f6dc6289dc45c7d7b8ac7fedafd5458d57", |
|
| 869 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/X25519.php": "ea1d665ec23534de7f18c4f48094de4463753baf8b9ba011e38b969873bbaaa32e6b90bbbd0597baed3687c28e37fe394c224a229d734671b7d7e03197d039f1", |
|
| 870 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/XChaCha20.php": "56d827be22c68fe9a2cc01b9f5890846197c5831c3c0f129d9b8c522391b7d7391a217a2dc48a4bd78e81c3d2f3bd8187546d311f991148fdf43a8a67730c81e", |
|
| 871 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core\/XSalsa20.php": "c0367d97622bfb654340a6a7948e8ca4ed399d106dd8b27169a9f5d9bc6532129548b4dabf9f12ffba654f490b8adfa07b0b76935bda15705560feb7c590a3bb", |
|
| 872 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/BLAKE2b.php": "97cb339b44cc54299394b4fc27c8ab13d5a8d48aa4c8fce71733a27cea5d3226df4341bf9722fb4f4ba71c38f5491d677774245d75bd91a693269aaba0487036", |
|
| 873 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/ChaCha20.php": "da693dd0be25c739b477673933d361ed4b2f83110ae98f7c6805af20789fb4379b4b7a4ae34aca588666cfbdf61c2dd5776f8a4b1ee0215dae64ea09c6479a10", |
|
| 874 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/ChaCha20\/Ctx.php": "621194fbbe2eb42c04c9d94e45e3a0ebafdb4cd87195b924705f8c2a9e54c9dc52fa6dcb39967ea1dc4ceeb6f2d20659a1b0aced8035529376f6244ffaa96f07", |
|
| 875 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/ChaCha20\/IetfCtx.php": "b4a0690f9af7ace9fb3f8c10ca78989573a1cd49d3309f9c0011501daa3c44f7b616868e417096076846b19502ddaaaacb7c85f9b5c8622c57e4882982e09a10", |
|
| 876 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519.php": "fd10531c29a88f84f8b7de7c09a0e9e66472658827bcbdc55dcb1fba54f620b32dfe9359788e67abe4f6ffed3e4841e6b74939d7504188cfda243512a86c7eb4", |
|
| 877 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Fe.php": "e6e5ce11b327d42167d51d2fa462ca6a54bf180229261af9ac1189fab30941148136ddabfff606dcf656985cb9da9bee93902f1863a84a3e5d42bfccbb0111d3", |
|
| 878 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/Cached.php": "350f529a5a178921a2f40818a1668c3effdeac12b9b8aded2f57f1654343d0f7f535c780c5a271d9b7772969fff9381befcb85aaf676650c67b6e583d616c064", |
|
| 879 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/P1p1.php": "fc8344d196cfa17fb61ab576b0a73f0ecbdfdf03de53d669cbf56bf10cf13eabd8c8a83d3eab7d9f9436b4dbb8d0785f9929c190059e0695579811405f3c840a", |
|
| 880 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/P2.php": "6c4051bff3e25a7863fcfef3b9c1f028fa8b94d301e4de5dcb6654c629bc95f44978fdb697698375e3cfd1dfb9ae6a3c8dfcad0bd5138e51cd5d5315b5e5b788", |
|
| 881 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/P3.php": "d6ee2e6bd34cba83a2025bd79e2d8a829d39f148c65ceee5a382662ef25b1c684552e0486ca29215f52d5d1e140176bdf6e2c40febd55970db55675b76d448e2", |
|
| 882 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/Ge\/Precomp.php": "397b94e8292ad4f09cc37f1b08a7f364e12d6acb74f125ff0148c5562631f632a2ecc44db517cbd5ea61865e70732e6223a0c736b831c751df859a7d2afc4ae6", |
|
| 883 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/H.php": "7bd14df9e3afbf8bc2ba27d5faf6ba72f17eed218cb7e89f4a458f500f6d9a60c52eaf5f1fd656d7de492246b0b0ac3d5904da319c5d85b754c64ce4b1f1b433", |
|
| 884 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Curve25519\/README.md": "3f50765b54a3cf172c9cdaf2541a54273b811df61330af83883de5309103d6309a0900ecbae056f60aa831e438543c16c809fe183cc15c6a2f2bf15f6f910cf7", |
|
| 885 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Ed25519.php": "30b970fe798803452a504ac453c70b5a2b51cf3094639dc58195b3c8e44fc37089c58bec2337d7f79ca60c91c4951af5dfa89e9dfbe3ae327084a806a6b8db7f", |
|
| 886 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/HChaCha20.php": "d4fdd553cde5a1ff277805bbba85128e3ea59e4fc32eaacbc8502414148933c760ef6da06fd967bc594f9d22523c62e45ebd7cc9411ad4b76e2d76c0fc2c00c5", |
|
| 887 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/HSalsa20.php": "8bbde85156bb88b6f0f14cab67840cabf1e1c456f9459edc145e09907161bd6fbea93fd37f121678064de6922102e78789cbfa3c2eddfcb40b93178fa3fbab6e", |
|
| 888 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Int32.php": "325772c5cadd6953316e83afe2a04804041292f25cb16e6027ea230e20aebcdd819c937977918161eeb9c43187fc105be2824949c9d6059e9c0a39e0cbc42219", |
|
| 889 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Int64.php": "8fde2b57266d78e8b03d8c3f89a1fbca3329bb6d0ed4526b3c6dbf5a0e92ef9d8e9e3697cd23b7eb5f7524fba7474cc5a2e06f1ba6faa04f7cb8729c985a5794", |
|
| 890 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Poly1305.php": "f0cc2f5cf32a37ad6c3dbaff1a8a155ff334995eab78ab42f2e5bd950390babaee0c1588e3f17d4e73cf970b8e3c34f536096d7da23182f526b0eed704e3ecc8", |
|
| 891 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Poly1305\/State.php": "8656ebf7aa0c2c7e8cf01546a261bf5e9f6c374eb5f40f8133bcb33e35bda2f19f47471b2ae6af6224df7ab9bf3886cc43b88049e8ddbe54b8dd129b28491129", |
|
| 892 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Salsa20.php": "bbb3dc0a30030d9c5f5ef1ef63e36f9a067d67891185b9620ebee17a67bee31a7abc420abb7b82f38e913b5de54d235859f0e8f5f718d8f02316f4fb03e24b2a", |
|
| 893 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/SecretStream\/State.php": "69d505517dbbdd2e77cf5aed72673edffa2aa008e70325db88877ba5673ac3ac070bc4c19cf13707932b0b4d71ee0a9b007e06a0f822292ec278a60def7cf511", |
|
| 894 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/SipHash.php": "8c3c2d2e4c656ee6f7af729856cc4c79918ae2e09a167d6d0cb92f7dc9240c0bdaa36e65a167f5b63961d9f9ac4df2c19e50c848e5a6da5855566deb5b9ab8b4", |
|
| 895 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/Util.php": "d6ff44eb1015687847600f8b7f6a80974f4de1cb80224ea7f733e908fd53ba2aa669b97d891fe89bf0bb8d358c15a2bbf0661a779e68a715cde0405455127eb4", |
|
| 896 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/X25519.php": "9e2d803c100fc9a3749100dda30fabe25c6ec59382be64f9995b6505e1652d5b2762111f2243b69316abd942c88106fa5239adcae842971f22fedd8e3aedd954", |
|
| 897 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/XChaCha20.php": "1d4ef660701da25af79c9d4af2f158e3f62afbc1e5c2aa062f64b970dd33378d5f67c9f0172991985ddd65a976759e09f4604ffdf6ae158bd8a98f4e97af851d", |
|
| 898 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Core32\/XSalsa20.php": "ffcbccb7d8a1d0262c5e74cbc679022bbcf1acf9160599ce2b92f66e261996f0e93b419231fd41ca95852e09b7a892dd8e98101c3426d30cb294f869908ee21b", |
|
| 899 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Crypto.php": "1af076765319483b5e0c2a3ed9d5a12133fd41b7172cd15073da3723200c41cdf077dbee04f1e4badc2b86ee5e23965dfd0e8f3af3f52b3b584ab2f775f64cf7", |
|
| 900 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/Crypto32.php": "9fd3ecc6e6faec645f2c5166ca551cbb4ff8430664bdb46c383da399048de42ab505a05c709b6ed0de245402a1abd701f21398252f059003a59fd55bffd6399b", |
|
| 901 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/File.php": "4f2a6c996bd3fe4a07e4e1d49d2790e68798add08c4887efb3d7bdc7beb5ec2c1601b8e77a0b40e570211f7d3b4e5a5f97471f60df8b31434487495677052640", |
|
| 902 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/PHP52\/SplFixedArray.php": "2adc50710dd4bc2cc1138b741cde09f225f727f2177d006ce8ca82691de0336dc51b6c30384938eef1693ae92628460f8984aaacf336815dea092de4ed1521b5", |
|
| 903 |
- "providers\/Telnyx\/vendor\/paragonie\/sodium_compat\/src\/SodiumException.php": "705f6e9777db6be71970f7e218339e36d50023abf723446195cef782976d7431f815a90d1ed83e32ec527303057287f890215b4b0a9a8c992a13d111e8bfb947", |
|
| 904 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/CHANGELOG.md": "cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e", |
|
| 905 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/LICENSE": "8756122099aea86ddf6f176a480c0454f2be6dd278e475bd6be7d7ab3d572162f1bd44c9f623e52e53514cb15336be6e84a5eafc8e2a347b481ab5799ebd6e17", |
|
| 906 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/README.md": "b552bcb37ad765a0aba888fe43d2e2f41b5bee6c90e734c365797e74dd0b8c4df017ae74dab2458edb410630299efd7b649438db57acd53fefb1723e233416f3", |
|
| 907 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/VERSION": "294108697ec66acf16af2f9518c5999605a8585058ad25dc9303029fd890e6835b2fcda23fff2ad60058f8f6a8a19c945d998e4e228453d4946e395b9aa2055d", |
|
| 908 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/build.php": "485d76b827a54d8455550e8a8f8d14862f9444381da251e66c2bb8ceaf2106a554c1cd339666b1260450749d0244d6b9ba0c6d0a2220ab2411aa4041fc83f8ad", |
|
| 909 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/composer.json": "e05f4af7ceef33d82ed5704be36e1b9839236d13073d0e23ef77d33ce7ec303cc2cfc2ddcd25318f1a5295bbe3b61a13bc2fe72f55c226e2f072e2a0b1959481", |
|
| 910 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/composer.lock": "2b8c24986c6cbd290c0ce53ac4f773836751aebfd65a2350fd07b4cf45292ce2667a54494fa098da13a385ce7a9e10a2ed55d20f7c8dd6817f93f33a6cc710fd", |
|
| 911 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/data\/ca-certificates.crt": "659e8d36bcb65a7fdd299ee008fc4ecd42be87d8ae7d7d15828567b9be44b4ed8a316978f2f7d3d5d7e96a4da0b30bb8bdcfae5202ef099691daa796318a869e", |
|
| 912 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/docker-compose.yml": "1fe4c651e406095f0ff1bfc196406d473184bf53cf80f7c67dc79f1aa94b26db74174e0e9bc47adc95eb2a5f6eb950255c4a5cf44ccb7029ba712df3be9e6384", |
|
| 913 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/docker\/Dockerfile": "a63d1fabd8c19fef37b90922aa4bb21fbd1094635666cf2a3a4db47009888bfd3f1ad5c34c05184e2ccc8f581971f6dae91c1ff137730821422cd482c39e9390", |
|
| 914 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/docker\/entrypoint.sh": "2bf3911c365a271fc52d17a0aac1687abf52e5286a5d52cd34367e18651dcfd6ef1f791b54105b7742f5d691564ddca3c05a9ba4ce8edfbc68fe919e0bdf6c1e", |
|
| 915 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/examples\/example_webhook.php": "336b92a647e49d8c994c8e6dc6b26670f0a58cb57d4679d0ba7177fa1f56a84a628e5385dd4c1c25a1395b1d8499e54d34eb2c20f9742a2a2a3d0cb20c36be08", |
|
| 916 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/examples\/simple_webhook.php": "ed299912ca9a55170796df76b25c5c92462660b065ef7eabf24bf7f552e75fe44512fc3fa977fae2a9dd5e9be1ea28100a456de926fd7f24c32152f577f8e46b", |
|
| 917 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/examples\/verify_sms_demo.php": "042dee741d4fe90d78edcd0614df6a371cee77d1a95d34623b4e558ead69378c693a33d044f450ea204efd7253e7eeee1e5a4119708dfddbafeea358bc5408b0", |
|
| 918 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/init.php": "82a207681a76c9b00d1a35fcfe64753cf286d9d0122366f8c1f3009ecd6c548369d2b65d5b4e03f20faa9502b967a3bdae30865e5bf8598eba630b5f9555542f", |
|
| 919 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Address.php": "a01e1efcaab0209fa7cf32ed85722ff793b9c0f750daf7d3bcd0499037dea764f2a61defa54b4bbaf602f8d0f5f477fd4198e35d6d8b47b82fd13c7a7e70ad59", |
|
| 920 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/AlphanumericSenderID.php": "c6f7d381cd9901af59d67c66fbe6ace0729c77ac2b2962ce41351ed076cb39c9049aeeb72ba0e3933ebce4ab8a936b86a7e21d30a1c07b2b08cad9da2abcda1e", |
|
| 921 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/All.php": "5a6381d1492e2ebd1498fb4371b55c7e112ebf2c898e1861d7dfd2345db8c56df221795208a29b2a0e42295846fcf98f6a60fa8839df7e28fb66b9bde9226ce5", |
|
| 922 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Create.php": "811f9227ecc5acb172e8e7120541227de0bc22cbf66a41490b743b3e49647a38889d5cfa5d64139b602572f0fcc0fbb96e3971c78801ed9acf7b50db2ab7499c", |
|
| 923 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Delete.php": "e3cde9f67ab7281870c7399c4e76ff5807791b94b595567f56ee4ee494574e0f6f282a8d0c024c78c1709940198460f386ab8de6118a85de7d8a52feea0b0dd9", |
|
| 924 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/NestedResource.php": "209aecf9e6abb679b4f1ec2b59b1ce363a73970f6d389829b77802cb88b7bb368506e4d0aad42f090b715b4d4a580fdbe5c8479c02227102b4d147d615fbdb8e", |
|
| 925 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Request.php": "afcba7de3fa312bc9e532e43bdcab8fcc5ca8b532c6f7bec08f94a8d7b2849467266f98af029bd688a136ac24ab2b7f438ca2fc666395c589d578e9d0156053b", |
|
| 926 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Retrieve.php": "6f29bd2711e3c6b586c2bf6d9805b986a5f76fb0cd8c98c63259cd9873eeacd679f9718dd333110966ec3bb772e2ad06da7b1586bb590180770bf300aef63c8f", |
|
| 927 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiOperations\/Update.php": "1d353ac81bc74cd57c75f01da21d6c59e053813930a0eb0fa054417bc87b6a140f64393bc04ac312b8c16803bb4c3eabae278839973f772e3202df32828480c0", |
|
| 928 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiRequestor.php": "deeca798d9ba058eced71d846bd22cac360cbb25bd1271db25cd0ebdb29b1af9ee863b362849035e8a9f6ee62bd49b8415cec97e1fc01e674ad6942ac987b6e0", |
|
| 929 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiResource.php": "f093051a36277165763e1ee66594056cc266fdb89caec9ab9223ae6af9add8ea4a20e6e3ea6fff4e9625fcbb95f430686f1f89db36f981d7d54034d79bf397a4", |
|
| 930 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ApiResponse.php": "0d292d053a85224f4ac839f54253decab0eec5ae9861ca95314e98cad0fec2d2f0a7e712a8ec433adb302b6702d69262c8866b20fd08d67b2d18571965bf6789", |
|
| 931 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/AvailablePhoneNumber.php": "7c82ca4fa28264c4fdd910c71741270657e52cdbc760343339bbb7c1d5980d27b7af476f7e1bd431926d428dba685a6e34d250f9678ef0a4e3cd8c4b06289e55", |
|
| 932 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Balance.php": "333bbe5f278ca247d8287c8da5cf3b3f6a96c896a82e3c3b54d01277e3cdc82dd5bbda2a1253fb473a29c49d3030b73b24eb8231cc34f85b0a43bd853682e000", |
|
| 933 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/BillingGroup.php": "60d9fed23d1520237a50a707986709f3b700d42d049e4070a48fbb50f257a98eab779f45a15939af3d5bce811014c01abbcb86fa1b9ccc5b89d55f44c4b1a308", |
|
| 934 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Call.php": "eec97591c5e7af2b057dac6e6498cbb2c1fee0439b1b7f31c2d879a5a0fdb5a3eb5ba3bb7e3c5a9195d9019e9df82c99a491ec52f15bec59b496435c0787d43e", |
|
| 935 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/CallControlApplication.php": "fee499465ecfdd2d5aee0479d3770a80219a5837bed934e0930413e6dde740be21bcd965216c782e0765ba18fd71714ac69a5ee887497845ccc1bd7797d6cac4", |
|
| 936 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Collection.php": "ba4afd20a921ae7c838a74bd9efcc4e468fc12ecae86b2222f97c9405d376a77533f55924bd1d577429825e746ac59142f6d4576f4d446cb3757cb36b65894fd", |
|
| 937 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Conference.php": "ef9da126fc06537687947c8eea71fc34a53a7d44607d60bcaea7d8c7f55e76a94a9d7e0057f9abf7efb1f4f270680cba042112a127c2c487fe3c617c5102be29", |
|
| 938 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Connection.php": "c5f43a62ff80b2e91556dc63ad2f78cd83b4fcae4a7a28ede36388177591fbfc6c20b244f6fd4e540cd9401e34b04946bf422eedfce25316e61c89f15de97665", |
|
| 939 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/CredentialConnection.php": "fe9d8b7b34a24f5b3b83d6a2597359fedce871db3a526124832d4bf4129e7515366ae16517b8dae259305ae69f95655aaa8b4710a9addc23fffee0e70b70b74c", |
|
| 940 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ErrorObject.php": "cf83764f49da72bbc816c8741644e15b9a74481145c6c0c11c390221ee4c7ae485cfc09d77db24a48b0756b69c85570242bb2b903c39ca699e636a299ec4dd31", |
|
| 941 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Event.php": "4e4ccaef81755432630c46881a958928c8b633ef1dea76d05f05711da17f68bf6e5b7b77395abf297b3ab128c065da7b4ed38d1be3a45306eb6d7a1080e72994", |
|
| 942 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/ApiConnectionException.php": "b2a920958f3e1664a6ea5c5f32c73f9914b3f59d8a927c4e920d385ce87a6676475823729f203b09f5530da667f52e3dc3d4471fa498277270ee9360d0797b5f", |
|
| 943 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/ApiErrorException.php": "b775efde92c04d1a53dd3f948f2efd92baf1f1dcb5092ed0863f37bb71fe03052562fa89349b1030f3d27a0dffa974ee47c9a3655b40a3941b05e721e7fe97c9", |
|
| 944 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/AuthenticationException.php": "f8154528a04642cdd24f3de876b1a38d6f97e357d36badafd39e596ca739df7fb77f4259de1efde8bc300f126b20f6e242db4c1e3a25503565df579b62676ec7", |
|
| 945 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/BadMethodCallException.php": "5e6df108c1df11bc1275948d96829f0ca6ff039126934ec57dbeee74913af00a64e6a9f2b58f42bf74aebeb94596c45cbcf66e5a4afa8924b238ca63d424f452", |
|
| 946 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/ExceptionInterface.php": "77d5904b79a9a5b265ef121cd19d91b952f631ac7436e7896bb0786d9afc0b7ffe54c7ea901091baefa0154b91abfbb3f9f3a7fcfea4053f27cb44be2d7cb23f", |
|
| 947 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/InvalidArgumentException.php": "f2872cf684dba5abd50bf876971e32364a23c9259c1e85a01575348614274453d00cc655b01c2dbf2c78c88f4a6143cb486c786dd1664204dc7676a64a9cac4c", |
|
| 948 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/InvalidRequestException.php": "fa310ff5d5ea8f02f731089c27e6903d9b0e692a3faf272efd19ae4f1075a2a1219d167730b21cac6a30e705816c4230e2511fdda981fb47714f4d81606ffcdd", |
|
| 949 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/PermissionException.php": "4cc209df863027760738530c5c01962702970a73ac7f11be232234413376dfd34db049f4e49305c8a15ee1f016b26f1c128312930e10cab174e80d6ba20cb12f", |
|
| 950 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/RateLimitException.php": "c37157b02475d2a3940dc7d007b84cc3c86cab88b42e841a392e3ce4919e637c9b59bc7b33ad3ed8b4b32e74dddafd8e61a6f30d60029b8b1ecc82b8faad4833", |
|
| 951 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/SignatureVerificationException.php": "3aaa44cc52efcc4caeaee624c070e8ec87b665decbdf00d8aef04ac857358028e4bc0495c4a86c504f3ccc6d753413c5ed685816e3b80851026bf2034514cb59", |
|
| 952 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/UnexpectedValueException.php": "33504e45241779bae5e9c1d6ace82a75d545e6f7ae76f7d7f071fa4bbab13b2c23d11e59230da3c242b548ee7b5386bf4795e0d06d1719812348d1f9efb0c1cb", |
|
| 953 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Exception\/UnknownApiErrorException.php": "cf5cc44f46c03d9d0de656e2ae61d7b077d123a4b6666a4b0f57fafa2033e072ceb5b14d6a47987bb14e0acd48ae00b39d4d6ac1849fadc879bcc43ed1acb44a", |
|
| 954 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/FQDN.php": "b7d44de17cfcd207ac1fe6aada6c24871a98dadafc4cddebe28b135c6e507634608e1b6c7052a40cc750f6515fe19c2de29864d4b9551e7002fd800cc6cc05fa", |
|
| 955 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/FQDNConnection.php": "527d18ad480447e4d79e567e7a91796ca31bb778f10011aa9fafafba6e769d387fdfbc306a6f1ba58e583bc7c37a9a66f1961494d3639dcdcd8912efcd0e6a55", |
|
| 956 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Fax.php": "fd8af5f711fb5341e2b86a7fc66a49707bd31efabd2cd63a1d5153c24462f07341d6af618b7e82ff1faeb9bdc203f62b6dd5570d74754e052300d0d7edd0424b", |
|
| 957 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/FaxApplication.php": "f489a9e161565a6e7f55a4d90fc05bdc8147a8947788a757a2b5464059ff2c49e61fa26b6d1f0b43fbf9ce8d0c08328e276442ab4d2d100e7ef34e9b2e0860c0", |
|
| 958 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/HttpClient\/ClientInterface.php": "da6ee5de3e8aec8ac144511858cb3bec53bfd2aa0b5ff27eb43c7f72dcdbfb1646da223cbd861db7595db904007ff4c8d6a010122547a98bc1d2c07139328a80", |
|
| 959 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/HttpClient\/CurlClient.php": "dfcbf2f40053699b94de74defc4a57461c2e07280976a377cf4ec3600e6279fa9cc434060b0291c7e10a634647e1a86e67cbaaadc49783eb532681ca25256a42", |
|
| 960 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/IP.php": "624821d6dcc5d30a1a08368bacba88cc7ce8b768bb3315b3f8013606e303fa8940c13da8ece0c67a43329a0cfd86d8bd09682963eb54138f4253eb2f159c7560", |
|
| 961 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/IPConnection.php": "01239dc2096fbe207ce1a5a58dad8d25795b9a8a81dbdd4290730009f2fafee76d74335aa951fb7b54e930e4e9530a0566daa9ef7e99ea60a50b8daf956f11dd", |
|
| 962 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/InboundChannel.php": "c37478b08abc62ca491806db6e2814c4a28a11357fef873f6aff8867e179dc8d89817ee3db3fdaa84150111cbeb426ad0282dfd7550eb815dca100843f542178", |
|
| 963 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Message.php": "18acf4bf51ec27d330df16216924c65a45db59895b610a3c803ef1d09beb7d96d20753b4ec16be06ed40f2886ad46bb3d866f14a87021484ede5d33ac1a93c4a", |
|
| 964 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MessagingHostedNumberOrder.php": "ecee6ab7a46ebf03b93870017aba4ce00c10ee36342a6d3ead209078aacf4ebcb798ae129535fb15af860355b52ea72ae6bcbf0e5261a9d66224e43560858227", |
|
| 965 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MessagingPhoneNumber.php": "2a2caa5e44efc5de92ef9b0f8ed0a68af1ab2c80932f4cd7fe79caa87ca1e146af3bd0e1d16d977738da2a3af1fb3cef77081c32a0dac50bbe8ef54a108efbc9", |
|
| 966 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MessagingProfile.php": "7a561dcea7b45a4ad4c3dbfc6baa766f011de2b2dee9a23e512689b374017b05f4fcc5c3510f19111a9d8484ed93a5e05d3dc01f35d75e356f475a894596dc49", |
|
| 967 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/MobileOperatorNetwork.php": "d4436bfd9a628713889a37846829763909033339a086b6983eac792e9af42c0df2a8bcbd688c5c54a196d1fcb3d22aae7b45e9e18c015592d979e9a924c42ffd", |
|
| 968 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberLookup.php": "cac3b5f1ea0ca30f9121849a8aa52ed2e18b7776c4f1d552dca4c3536e0d4eb96af45267bb687319a9ec715972bc95a19c7dda54c33a2701e20cff9564dfcee5", |
|
| 969 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberOrder.php": "52067d9999c150fbefcbba9969b308bb6118eabe25bd08f30cc4978cdebd68fce4479e53d71ce29632133e8c69bb4ce9276301f5a36ea95bd77d29fd057f5d46", |
|
| 970 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberOrderDocument.php": "007830f9c03979a7811a4e0dd0c74c4b2b6d05e05b56b9d6ceb5a6e55167eb95b2546087ae17328715e01d486c0e58e396bc41816b44866391b98d48ca246d03", |
|
| 971 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/NumberReservation.php": "988c853084f13e0d86445d6638517f84ef3d90c3f618c2c85c0bd8ab790012c3986a1a3eb3e00fef7759d04a6a1957bd9521bb8da6ade8c05fd2e02a8040f6a3", |
|
| 972 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/OtaUpdate.php": "3c9579c6ac1ef6f31ff572fa3fb7562b3618182cb36eab3f406d8fbe6fc7b1d35a996e47923074428583ee3653aaff3792f9fdc47eabe1627f1a85722fd9dbf0", |
|
| 973 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/OutboundVoiceProfile.php": "d0c5985f6f629904f4c95b892e329f280f7e0e13b8794d1950e216ef4c28ede7b94baa99f18803ff6f60b09d6178ad39fe5d3c182e984c2b4b57e9732991597e", |
|
| 974 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PhoneNumber.php": "8106765a769bf3f6190783917aa923f3f7690af5b7bf971e3dbe73ee5f227b27531a553cff9cc425ccfc7cf2ac52bcfc685f3d3b178875f8fa837a5de99a077c", |
|
| 975 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PhoneNumber\/Messaging.php": "d0aded1cbbd4c6108b0fc6e6773dbd03040af54c967f0a8aa9b2523db769317182889c882e6efe6fb0e187ac3f2919563aa6a937c77f4c1ff94e5bbc31f4d9d6", |
|
| 976 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PhoneNumber\/Voice.php": "e7e8184351cb186fee77019e88600dcb15da0435161d1878799433686e012167ab3347d7f02efb5cd511b5d02cd7b6547453f6ecaab623ed23fac7c91b0a7333", |
|
| 977 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PortingOrder.php": "ad9a683aab02c8817796e62131fa9cad6f3490d3afe231b5718b3b4f0689a535543362a88333ab808c36e9c41bfc8b7b6178be7fbd5b12f38b6d806053726997", |
|
| 978 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/PortingPhoneNumber.php": "ff2e1e98371b6a7b0cc5265d1ab82f053d97711a72633a7d3911a4211dacf75c08083d6629aa4fc028643c0dc929d3ab56132f6f21808b875a9ce679e56fe055", |
|
| 979 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Portout.php": "71de0eb22350f649e5023b2c4a374b3d10a4beb0f8066d67482c62f68a39219d9cda4bd95d91e1df2fc215479f45b1ab79bfc0ccc2d39267d2f268356ae83ec8", |
|
| 980 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/RegulatoryRequirement.php": "0658d49bc2c20a9a16ac72ea01b5306eda422d81747529c3373333facb5ce1940252387aa498d2957dec62f0eeaa8aac3979ffd84ca72308e660a1a0708796d4", |
|
| 981 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/RequestTelemetry.php": "cefdb55dce61e5f276bd49f6b49e57c78085338537e56cce6fea5a81cd1d2235f1eaa78be326cbd513117be88a046177afb628659088b66ce423799995c53709", |
|
| 982 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/ShortCode.php": "4abc882d0dbc72becbff07212d17b8e1383b0efb43818a7eab983fd2a08c3f591a4f4ba2f185003fab0622a43329c969d2fcc80b23cb94410007a0879309ad49", |
|
| 983 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/SimCard.php": "46289711eda27b37931b0d9f7e9624c114ef9c1e997ea88055dfdf6fe6dfaf7f9169b9a67cbfe48100dc4df2b73ba4d27328b0ca3ff0af3655789535ec3c0b26", |
|
| 984 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/TelephonyCredential.php": "497a3dde2d7fcf8bf57b502c71daa5e166010daae45e30e1db7ebacb3a37028fc70c7cdcf39a356dd32f845664e8e9723a366fa69610c8f9bd31fa59b3300624", |
|
| 985 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Telnyx.php": "f5ecf9589eaf7db991051de8482d582b36edc387b8a7ca48c80a419c1a99e1393d7f099aa4ad3e87adb4706ab62c8714dc843c9a8ce77d6fe6ea5ab929d9a882", |
|
| 986 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/TelnyxObject.php": "0f45c91559ef686a3eb4ce3777ab7d43ba288b380ffd1031cc3c562138410d3582c251e2d986e8a84a2c189257ed4307500e3fa0d662a48a30b28a9622ae8ad2", |
|
| 987 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/AutoPagingIterator.php": "d03ac3841bb553d847be9ea73ab9debd8c1f2c829b0d38ac4416a121ac535a5ece2ecd9943d89e720cb5abb1c907ca9b96df899a561c190ccd6843bde785114b", |
|
| 988 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/CaseInsensitiveArray.php": "d5bcc37aeab4fcbbe0b9f4a9057a5654f6080ed899ae54f8ef18bfc907f244071a6693386dd306caceb6bf338883a13c7972574ac5d700aa00e22ec363932cd6", |
|
| 989 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/DefaultLogger.php": "50a69f9f6ad628e489a05fdad0df811c926c957c301adb0b4b906dcce9733a0598f6c2eb126865c54a0100131dc4230a834b1e98275237ce8e90bff2e96cd0fb", |
|
| 990 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/LoggerInterface.php": "8d2dc2c59af5e625eaeef0b85b09f78a42e533b62fee84717d67a4c706fbacd94674f439d3ac60984c0a3947b7d2f5a8ccfb64e071c41d063b8298f57578f88c", |
|
| 991 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/ObjectTypes.php": "99ce4f7d4d4d9d43e24f3124a7c21b9540267aa160c780efe69d6559843a12948f3790b179db66282b0adda384309a793636d71aeb97d9aab0a62dccfbe2b51b", |
|
| 992 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/RandomGenerator.php": "292c880420b28390e3d734c6343acd48f322db0c474f80430402916de1dcbf8e988b3d2753a7c18e763e632f474284b213ccc8e8fe4e52f00569e72728dcccb4", |
|
| 993 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/RequestOptions.php": "00b6d4890b5a38f42f13ffdca556bbf1377c05c8a79ad2d6d0b69b7e27deb70252c15088458da4bbd56e7832cc6b2828e261241661dc344727e2bfb170465de2", |
|
| 994 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/Set.php": "9cfa1c1bc6c012e8a7a797ba8a7893382eeeb234da73f93594a159f78b9858c984dec1e42da5a6cdb240f00d27d250e3fd6a7842d40c23513661201a148a6c5e", |
|
| 995 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Util\/Util.php": "4556fc8b785486adfb60ea8001296ad0ae7b13d785f92d545324b557fc4aad85a69ec19dbca27dd868050d64670e4e2be2e3a4f50e4aaac609b0089c0e9e2749", |
|
| 996 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Verification.php": "b63d4f9d717ba204dcedd1c3315db3300567fe09563faed0e4b8f1415171e43e0068fb06ebb2f42c808602248f623f5773414a1612539a873070f461398be650", |
|
| 997 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/VerifyProfile.php": "fbdf0818dbe1fdcd6bf13720f21ab6552a3ee7930c80a9adc44c3863ebb3df990b18adc8beee6770f4fca9bcda0d514a689d051c129d871eca48f2c0eccd7649", |
|
| 998 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/VerifyVerification.php": "f2883946ac990666dfa62e07dad649ae0c9de75d5682857cd22419fda8926d45d504ce4fbf38896a1cbf25323a604a818d3b89f05baf58d91cef497c54d981e7", |
|
| 999 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/Webhook.php": "b451d90496fcad105eb4f61d5716b93878405315742c09d7c4be96c6b9c0427e35c03c1a664ab2f30f1288566b45117f87b069a3ce96d64111ef6a1ef289ac9e", |
|
| 1000 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/lib\/WebhookSignature.php": "ad990cd80d771718468e39aab1b06809a0efb9bb47f5ea4d42a649dbe481f5929fcbd502da6140f1438920e96ce2e4af82d9cfd810b0ddd0eaea391599685c0d", |
|
| 1001 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/phpunit.no_autoload.xml": "06ad2f4fe0a292902757629f5605509f32a0d1dca527550619c98a61519d83fc70f3c886b12f5e5734b1031186fd9c7fed6fba813cd816b0f07d36c2a6bf11e4", |
|
| 1002 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/phpunit.xml": "82ac037adc20f2aa76682878094e8bffbfe31782dc6a94e2987bac5546e3ffec90577d03715f4ce481cc977685eec9e4109a61b4b46bc19351c2cad555d7cadf", |
|
| 1003 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/TelnyxMock.php": "e8e93ca1114530cb7e9cad46eb20e32072934496d515a9391ce8093773450dd60f3288f9d3ba46533a0f650fe67b508d5e54bbfc6e1642443d1fc043b88eaaeb", |
|
| 1004 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/TestCase.php": "9945df738b56e344648cc00d3d4b94345c15d8749ce511b5095a87d5e52aed35d8e3c773276d9dde9d9fa04eada784a55e4876ebf70a198ba719c8e94c8c32d8", |
|
| 1005 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/AddressTest.php": "dd980e7890ad3dc1d12858f2d241a461689a34892bd780a8db034e620c23d01587996042c2c12d82333b2072bfcca6585afb06213694b7415b0b13d3084b83f5", |
|
| 1006 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/AllTest.php": "6031bc6fa9e899f06af9465468fb9e15bf5a9a7c1051fb52fbd383ea879842e72ba4b5347d07566182c632b5f66d5f2d4bdf73c1368a3581c6010330bff91ec9", |
|
| 1007 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/CreateTest.php": "c94c7e854a40716aec0e257c4d7fa279c3e941d64a37e167d4885dae5a0e22a513c8f3b018c436eff90ee045432c5e34b96aeb7d879380e9386c2bc177b94f39", |
|
| 1008 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/DeleteTest.php": "02ea2d3adfd1d83770f10dc42cc2c12c28079ca80933fbe02219ea79fe7eb6958d2b1d76cb7a0bfee9e308c01efb1eff61901e22d192e15e89ae67f7edcabe5e", |
|
| 1009 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/RequestTest.php": "f6e158958616f0637f827b94cce168e873e0d3be09e4ec27165f984af3d89c0be4d5d5cd3ed66df5b6237bf183003a0de1c652f599827fd01a2ee7ad47d5fd61", |
|
| 1010 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/RetrieveTest.php": "b26b8f61eb3cb893ce4ff9517817295fe9b727dd570b1cf79ace36e16902e0ab9f460d6b65342afa28c59236b59ec0ba0809e1cee673f69ea26489fdbf5f4f42", |
|
| 1011 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiOperations\/UpdateTest.php": "6aafed3640a1173822ac9a26c002168eeef552f9b681fab9ec4f191df4f988a920d8c290b2f875c02596ef613273ed003e4b5a6bb6e0bc2760f54ffff445cdd1", |
|
| 1012 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiRequestorTest.php": "5a1234c4a1e4107aaf970bf87f0fdb1420979dd575a548e589b046cd7feea4dc914f25bf15474fe5bcd9773c94184b610d06b309d48639964a78e6137078cb5a", |
|
| 1013 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiResourceTest.php": "05562966c7ecea541b0ae95f67a11d9e2b86e45439b436b319e252d5998e0eb7a6c9b677e233572fc616caee856d9764b56feed80fd07cc1bec0d861490753b4", |
|
| 1014 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ApiResponseTest.php": "6f8d458b49e34df5c0634276659fd441e4140fb4dade92b384230e4e2b897e0da6d0e82c373b1eca98770dc3396ffc8b924672ce2141426706c624d00ffc7af9", |
|
| 1015 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/AvailablePhoneNumberTest.php": "354326429958fdd199df78d11bbc582a0988018b8f907d93808cbd53243f50332482c0603bf4ff12db2a8977ffe7e663ea9d6e8cb5f485aece0d46ae8942833d", |
|
| 1016 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/BalanceTest.php": "8f866f88a8a59754e2fce7d5fe2a0bf50399fd21711cef171873a45308ff96f929b23163495c273e96c9894b7ea39ee5149c45e764fa0de3b51807a329c674c6", |
|
| 1017 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/BillingGroupTest.php": "4333c81ee3ac767fa600095d95f324286d289c7e105ab251f635d9a942e75c418bde60f96c5954ae29dc152ee5fe7679bc5a8b67452f5fa1f59a411dc4854c69", |
|
| 1018 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CallControlApplicationTest.php": "2bb4f83cdf82457840352c5beaaed8963aba1dcb59711e310d5aaed0d35429730796b412f1aa4e85d5be5a2288ebdd12fc2be9ad75549506d1a613d604d20749", |
|
| 1019 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CallTest.php": "50f830a3a3c28953ec53c244d22381910307513ba18b7199d5e7bffc5747863e4da975fa972114b2f8a81d0c24afb2f72df8315010febd8d606d086d79d82165", |
|
| 1020 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CollectionTest.php": "9e742f72d8a223e64bf1a25362f9a28356c0b55037811510692880a359ee5e39266d9e76aa0832de39530e26798806929fb9ab9795a04651ff316f609e2211f8", |
|
| 1021 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ConferenceTest.php": "4e8ab0baaf21da65e3942b0d98caff11b7a30c24bae10ba546b82f7031d7a85b9d88087f9ac8172e69546eb7635bc1cf8f39b509017b82116e0e13b557bc1f7e", |
|
| 1022 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ConnectionTest.php": "429f80316a563f45783c87db6b6d3dd1564190b5c6a259f254e91ad8b71b2aa5e6ed40b9cf1a98632b7c89b66441e07f0285d434c78dd9729c032c7a4891d4ee", |
|
| 1023 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/CredentialConnectionTest.php": "a1c37f36e418debb034faa2b7df5095eee175ac8801baed517089622123dcc4af642448aecde7aa8b19cf67629de087e4995ec816d791b5007923ee614590c1c", |
|
| 1024 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ErrorObjectTest.php": "97344e9d24c204ae429b856d0b32299de4380ec52e9cfbdef6090add25355d268e3dd3ec35ae7c5e0893f5bb204624930d1a856932243180bb71b40e5a1dc08f", |
|
| 1025 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/EventTest.php": "5152c008cb3de14a47586eeaf3ef778629b2beef87fe154a2c40c337c3f918d664c0ea44d8339e22846fedc696fe6b98f0bb0b557d3f88a3ac62990445a55ec5", |
|
| 1026 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Exception\/ApiErrorExceptionTest.php": "7d54379e1ab9f7d6bddb721ea1c284a8d023674e24e99d115f388ae367250089e10b5962e2bd091e3ebbedd0cc83bb4f821eb0a986ae11487e341569ef7f5c6e", |
|
| 1027 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Exception\/InvalidRequestExceptionTest.php": "a7da1818af1dfb3eaade1e1a122a8a3224e03a557396e11528af75b13cfae07764f82a282a3161d514358b4c55312193c73b5a8900fd70463fe0a66b448cc9f8", |
|
| 1028 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Exception\/SignatureVerificationExceptionTest.php": "1bb0fd1563a5c91b78b02e4f66f3cf0288986f546a0805830e0d4ad1ac449549930558caf86c06cdc578279323c43e4739747961065d5ddfa198dbbcd9540599", |
|
| 1029 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FQDNConnectionTest.php": "0af10bfb2398682865c4ee72cfb34425fe73b0fd20c86b51c61c4cf72f8c4d39a4ecfa21e4ae2e07a67fdf956057549f0c8c4f77e27e65dc1b75dae8b9b849c9", |
|
| 1030 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FQDNTest.php": "625370468fb338819fb823fbd38656799a8750f5093eebf75c02cfb592969a8635a442ec2febfe07705a5d6feea362b7644c25c67ae653a245bdf55fc178a2ed", |
|
| 1031 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FaxApplicationTest.php": "64a60460c62983cb0afc2c76880628e16270f14b0b761a8d62766cbe4c0fb33dfc7bd93ae0cb62de25a8f2b3e1994826fcbfe300ea37353f398c4cc8ed7dd62b", |
|
| 1032 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/FaxTest.php": "a920c8ac18021bedbbc4972109afb0cd0afc16e5d86df2fffa2f8e0bdf837e5684124f926f01daf0bae439473022899498441a770ad8cc52479da3d012f1ea1f", |
|
| 1033 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/HttpClient\/CurlClientTest.php": "cff15215b95a804e4ee233df60671c5c1e9270f621025f6ea7cd5a0bdbb55175caa6c43c62e176300bde05c9ee90d84efda0dcdf0d0b5dda4dab2a47d1a669b7", |
|
| 1034 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/IPConnectionTest.php": "6e034e287616ac89e5059d337c682e3fde010130f4403dc76fe4efa12742c40dac114ddc1aaf7ce9e553c597d9ac27170419c5e33fb1439c31c6b585953ff1a4", |
|
| 1035 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/IPTest.php": "7ff33e91d1c7b8bdbef1ca1f5e373150a05f709e524d5a62b000b5c8b8d697ce42306ea8df917305d9ef2a4ea19f797ca28e2f8d0d5f9e3e31c4ebe5eab55ee9", |
|
| 1036 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/InboundChannelTest.php": "c430f6df3eb5add5bda2342e4b4a3acd77b33d74758516782ee0a045d75e7387aaccf36017fdaef18d71cf8865a28faaa0cf07a4f31c9876858719d84d479657", |
|
| 1037 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessageTest.php": "08ae5ad7b98362fa7c1478254f851078ef7e9a223c74f3fc57619d2b9c255259edefefc400e261cceafce7072fa7457b8c1cb4dc8dda29b51e432f6d274a8c3a", |
|
| 1038 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessagingHostedNumberOrderTest.php": "f8f8ac7271fb01b07815e2a92d7a0974e4320de63942eadc12df307c9458a7cbda7ddae505a731c491e4aa6bcdda7bec04786890df80dd9acd422593f2a02c0e", |
|
| 1039 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessagingPhoneNumberTest.php": "7827d12be3191d1329168c6b277899b81df17aa18b775be538b9b29ec9a90868969c05cf61d53715c42105b92cc37977270c1a7b78bee3d13214d8ece51172f2", |
|
| 1040 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MessagingProfileTest.php": "0949c56ac67ee6f87854959635dbd003391e497325305692784905987d114b399e4c648252f314bc1147e385daf4e60198cbfd6aa940a6cb24992b8cb5abc24e", |
|
| 1041 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/MobileOperatorNetworkTest.php": "6cdaa23aa8cd0a0e9cc43b6f17c86d9c1f7793f7eb30b774f4a8ae9754488e59e0c180823c31d062abaa356578a8718c65f367588c61015e5e36f9f98e7a5cbe", |
|
| 1042 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberLookupTest.php": "e03a73e589abd73cf52a637dd7d273dd2477533b66bcb75685552b77b47f7b58116c4637477da7f9ccb36a408909d91d3f0d3079396aca9bee996b862f358499", |
|
| 1043 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberOrderDocumentTest.php": "06f3e8f8e8dcf5d8c96f25a6f1888d59e9433654ff060701bcc5cb9f54b07357bb3606ac17af3e3913033fb639358df85c6d5c55bff114407168333d7d49cbec", |
|
| 1044 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberOrderTest.php": "176ca2e94df05262e8a43f14e112fb62108ce886bd90a690e8b907881c696e35bd223f08a4960fb58ebebd20cd42bd4217ffa14132e53ddac260926c6d7e8842", |
|
| 1045 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/NumberReservationTest.php": "11742f7449c279908848fd493817731f3f1343895e16d3426a7a7f9fc3d4cc27e275a858e16d7efb8e9c18d32de1ffffc92929e8e3ba277157ab7304c3023c86", |
|
| 1046 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/OtaUpdateTest.php": "14830affab4936804afdd723714f2dc76c520fc2fd6e4d36d7bb255ef566836eafb6b29c18c5adb8785eed39f4bab030e3cd1aab1ef0293d9660b38a10fd6a45", |
|
| 1047 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/OutboundVoiceProfileTest.php": "e49828087e2114fb11569db7387a0acb7cce8bdb0cd655b280b567445ba2dbf16f8b66a88369876e7a2530fb282bf5a04be702719adf4ace871c2b6df8fa5edf", |
|
| 1048 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PhoneNumber\/MessagingTest.php": "b3c5665f4661624f58f02b814ab1edbee5ceb8c26643bd356b486f049dbb498a44da0af43daf200890c79acad16d51c169d7aa1a2ad4befe074b0ac539ebe3c0", |
|
| 1049 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PhoneNumber\/VoiceTest.php": "af08b444289d0194437c414916a8ec9285b98413d78e74d1c832b9b45583f9037832a538751628b5dc86b5a13c40c63e9dd360b719501762e8e868fcaa6fb215", |
|
| 1050 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PhoneNumberTest.php": "7a07f41165e45e5fab268b0e01523c2f67f0ad146965c401856582c4b4a3f63e53324585b1785b41cbeb637d8e61e26e2bfdb57feaf6c6c04cc33be8e4864df8", |
|
| 1051 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PortingOrderTest.php": "48d2ed4bb9354c772eef6484a0c9a195487c39f26bee3d143ddf64ae7da15e42e5f280a3e26eaa280940230fdee52ea09b7e5320823d4baefa73eec4490537ad", |
|
| 1052 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PortingPhoneNumberTest.php": "476748b7e467c4f5a648c394eb19dbf297aebc2c16357c946dbc4f363241639dd1001985a7bb21166d5bc77bff1e31edce6e379dbda10f04406377dafcae1bd5", |
|
| 1053 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/PortoutTest.php": "cd262d5eae7c9ef9ba8c76856ef2d4f604484e6bf8646e9ad5231e89f5d45c8176a8ac33a757c53e4be8e2c98e6bb750c6041aefe8b2a589ac1e70a2db4493b2", |
|
| 1054 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/RegulatoryRequirementTest.php": "daa2836606e7c3f34fa122045e982e42f5da86b46f367ddcd7fe9b12e2a3fe5d472d4f38403d4b63aa0c58473d3b5901b8dd49b93a56fa3e76a0bdcf88ebade0", |
|
| 1055 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/RequestTelemetryTest.php": "61190b3601f7c2c72f55e9b1634cfaf11ca53231cf4b5f854ab14859b97f5dc0f07f6c95b8f7c3516ed253e13768b7d4ed9c1d15d0772fd1850eb894f5821152", |
|
| 1056 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/ShortCodeTest.php": "f2e867e0b75d8334ccce51f7bdce842b350e7028319e8d388e0512b5e119585952a54ea79762010f12de8ffcd1c440638ba5300ddbe59adfdcefc712d8e079ac", |
|
| 1057 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/SimCardTest.php": "7000edb2f9b739bdbd44fceeee2e4a16c708efb22c7e38483569d5416f3c107bcecdc759e2e6108553193ba99acc542f5bf3bc353ee1428593a81b80d89ad7c8", |
|
| 1058 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelephonyCredentialTest.php": "1f65bad536cd49b2df684db54533b9799856b32464b80700bed5008c9379c414f756d075ab8e231d83f5bd9c1729dba064a5ab5c7e515ca5c32e85698e2036ad", |
|
| 1059 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelnyxObjectTest.php": "6214f2c38865c7a183f6a3fd64bc79e7f04963bd726fc124a87b65412075fd236e00cb5f5ed514a3ca2847faec77f4e7a14c59e8906478543daea9c4ddecb7b7", |
|
| 1060 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelnyxTelemetryTest.php": "ced938d8d20bdcd0d465155e1bd3ffbaec8ba96a6392c42dbec27a1d10a04da17b90fd3b91322c94b54fcd5a974528e6f10d081ca9b1915a8c8166e0727ceb31", |
|
| 1061 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/TelnyxTest.php": "d88d70053ebb64905acccf7e3cf651ea40c9155130e351d56135c96ada96263311faeabc83d4cef1e72387302ea4a11edf338c3744093d9828e056351eefe11a", |
|
| 1062 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/CaseInsensitiveArrayTest.php": "671262198a48a16dc2ddb7ecf1c7fd309241db9c74c11072d86cbd2f56403973e4bb17ca5bc6c489bddf46cc391098dd6b666b134fded9430c211c2a3193fc58", |
|
| 1063 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/DefaultLoggerTest.php": "39942a071430588bf6c089f5d0c97596b3b46b5b7a2b45d900cc41670dcf4bcf0d34e37895e494f0c89242e52d11d8a62f419650407c26ed91b43ea18c816e9e", |
|
| 1064 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/ObjectTypesTest.php": "2d697994485e6c8f9084f9155a5a5b753261bcd2afcc9dfc5760daa5d4196b7c5baee49b264142a705ca7dd6c5d2cde227db3c1f860173aee6769299db95cd83", |
|
| 1065 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/RequestOptionsTest.php": "86d628c4b19e4b7d057cac471219603643b6405e83745535b6c5f743fe84d5cf918a273f9e8e22c5eded36cc20ce49453e90c0ae05a9ed437059ddc287ccb5f7", |
|
| 1066 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/SetTest.php": "c91cbf6d983f16e033eec154e56705b1d942243371df25d5cec7cb375a359faf29fec0c87fa5f3e4d7aad512d7e757361cf409e60d643fff7fa8fef72d9ff172", |
|
| 1067 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/Util\/UtilTest.php": "10f13d306d3ac2211b67e759a6e1fbbbdcbc1cb791db4531ac799a8f84be67b3ab43cc85498b786b0630510324bf5039ac7ed39e2252f607f7937e802f9b578d", |
|
| 1068 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/VerificationTest.php": "8ea7985bfc5075c0e5d3a8b0b703af578479e481d769a0e8659d4b0996314aae15de36cc7022e087c0625c5976255aae323f9ac141e9e4fef3939a23fda6d260", |
|
| 1069 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/VerifyProfileTest.php": "c0986530c0ddd14e2227cbf9ceb0614aeec3c3b2dc37b5bce0de0d174ebd047f61fa28ba0787b4de1fd3efb5d77d5924e36ebf6fbba09711d0237f520365e8fc", |
|
| 1070 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/api_resources\/WebhookTest.php": "7e06c31d714348c6c9a6cf14c4a21a1f593287fe61e41630a6d766f15cf2595dccb1cd92981578cc205f6c89839a07c7c845efca2b44521d0aa36c0be9e444f7", |
|
| 1071 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/bootstrap.no_autoload.php": "cb002f7c8f77834b6414db6535f083bcd227ee6085363fa3cb0f66b55226680a45c8562fd8458249868465957b2aeae134b3379f8ee2ed22c96425475e9c0af1", |
|
| 1072 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/bootstrap.php": "50e143ed68aceb91d3e119d5a31521e76bfe9876bd780c90ac83afb7ca4f32be48ff81c33c134109eafe1d22f35e0957a9a834966b8853df99dc1df04795adf4", |
|
| 1073 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/data\/test.png": "6ad523f5b65487369d305613366b9f68dcdeee225291766e3b25faf45439ca069f614030c08ca54c714fdbf7a944fac489b1515a8bf9e0d3191e1bcbbfe6a9df", |
|
| 1074 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/tests\/openapi\/README.md": "0c54fffd5b7a5f393358864ff9e3bd3793075d6060cc1336603b2455d60f16d160ffd47b52bca6834acf0d9713855b386f69580099a3dcc131e8d5d617975ff2", |
|
| 1075 |
- "providers\/Telnyx\/vendor\/telnyx\/telnyx-php\/update_certs.php": "6a7fd896832dbc4c039fc907c74f25fad01f26882809d1ed0bef2870ba7db5d5930311208e2864190209862a077e4397dabcc1760ef2ec7e29127868016fc0d8", |
|
| 1076 |
- "providers\/Twilio\/readme.txt": "879f75eaefe03b56788a884a5cb031533b33a94acd816b9e3e51a9cf0db826de700062955fc45d9561bd4c69f71178e2976f702e801fc06c3c076494c55c8bcb", |
|
| 1077 |
- "templates\/content\/index.php": "63d6e27dee39188b80cef2b095db84791e02af0526b80d41bd37845386714f9f82cc9dafaf97fa355b927ab9b74527199ec70604480e09feb10a2b076e313b5a", |
|
| 1078 |
- "templates\/index.php": "15ea019ef66fa303773941fa9ca673e472e9521b3f9fdb9052870e6f0596ca3939b247c8924ec0d67e0f3fee6e612e2c447a1297cf23cb5b6144e58a6197d65e", |
|
| 1079 |
- "templates\/navigation\/index.php": "6ce760f102938667db140d27c08d5a23a8dcd1a8faf42607854f6b0e7d930a01882602ad039b9ea4eed20752ce633cadfd45a27754c839353b5b16625f8d9f91", |
|
| 1080 |
- "templates\/settings\/admin.php": "7f3cadb77fb5b44146cd296cbba7d7502b17b281b0882a8de7ce5c57489e2511f071cc38fb6bd1bd6f7500b4b04cb4f14465b78a41ae154dd21cdce4eeaf8c46", |
|
| 1081 |
- "templates\/settings\/personal.php": "014fd60a0c314287e8518f2fc7e2f2c1e6a297607360619e76f618820d95566fcb908a64674e0916954a7964a641c17728b6cb90d80ef0aa35a733e3e7b334fa" |
|
| 1082 |
- }, |
|
| 1083 |
- "signature": "VrScnCppkn4XyEFOVADISHD0ZVi8uvEIrq8IR\/FcjX6UodJeutABEdaPEQ\/+6ePye9K7ij8hZzFNeIRrhShS7hDnoE4C3tKhffBACCsVyyWv2hUy0cJ5hyt6w1ylKC7v0MoKOi8QbB\/3BjRLV9NITsyzn2\/dUzjUEaiNSZD25vgnwG6praibtaa7HRxGfSmPJDpj5s4fy2WchkpEpDoV2fa1WRBecdAdOVHqtXspAuPvcPCQhQ64eBkobrPahWzEbV\/mGwBhrLZcQJXMh1x9icP+28ztkzB5lZIiqu2yOFYJvM3sazUMOuKs3PrDBw5l0lrTdi5vpJTHfWGkBqoNMsNlvGJ7wbBcoHMZ3C3kHSnBdoQR3CTSZIBihuQW7uRZvu6epHLDxIAmZ21ni8ZNAl2gvvKAGDv2x9HihGDPADCGII3FeAD8849oGKDU1MXavXy+TBXYuHoiMfIYRhH98G2FwGXyfIVzMJzpg8GvpPxexbZs77vkD\/405l5dsqpXGLm7IRknVbkIMq\/ju7DDWfveh8UWo3UQhFESduJZ\/SmGR+5bk2Fu5xc26XSt0cv3hKclmAlF1p+QXyp7Ei7Ru2n+JagDuQYge16xdXcPSqUh7ACtkecolf5MFqb61vNNrPyUPfd5LJ4Uwd7n5Q00pM+JddzJaLUHogxhsMqgPeM=", |
|
| 1084 |
- "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIECTCCAvECAhG8MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD\r\nVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI\r\nMTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB\r\ndXRob3JpdHkwHhcNMjIwMjI1MTYwMjIyWhcNMzIwNjAyMTYwMjIyWjAZMRcwFQYD\r\nVQQDDA5zbXNfcmVsZW50bGVzczCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC\r\nggIBALbJJdLJIooOqb46AyOdNlWR9LXm3hWzjNBkH0o8wtMFEnotUOLcbaXbmTun\r\niG0Q0eunZGLSF6in+kY5M420Jh9bbDP6bYI8iDG6CSDkmKgnfcdJRlB6i7g0qBG8\r\noMzOB1x7ZVTef8Ho2ylTMWCxCfTlcQ15okAUpLU1G37I5rg0DZH2fPdGs9PMg11a\r\n64Tofl2GJSf9aHsgLi0AXXVzSN\/96wmK2fJYBqTVsPo5qIqKtMVWduhDXsb9yT4q\r\nDMYzyHrr8ydrMSGPwfs940R00hG2qHJcuKKGjYCCtu7djMfpKA9fqsGZBE6IWlVH\r\nCZxYIHPaEfHOybPR5d2GIKzncUQjtO2\/9rsju31GwzrVswG7w0tQUIIaj5AFLIL3\r\njnagjo2LH11ta9mB+DikaZDfd4VYEEfkTJA4BjnNCDa9pYOaFBGGwJMBSH3eWJCZ\r\nURBtk2NBnIheFRaGWRAzUpKAc+ZYdnmuAqe3Eh1en9GNlKTMCO+mAHkFJp3z8Nai\r\n1ijEVK+PIgtrzqc48ft0r6L43Zd184JnSIscBm\/9GUb0sCf+Uv4WFBKm4c7nrWtM\r\nC1LMKqmj2OYD1fZJ65M1VrkAqh8VXNtqQI1caBGMkcs4\/\/1eo\/XomL6sEkvfa9Y2\r\n1OywnVt52ZeLHyUS2P1mvPyWZgL8AxIie82Mtp7ZWX9Q8ubbAgMBAAEwDQYJKoZI\r\nhvcNAQELBQADggEBAI6OdKpKpevWVprPZ1TzUpq5ATj2JyCZySYC71Ud8l3lAEmn\r\nuh9ok5P7ccY\/c\/9\/ePWuvGxNSHmk1+nEEWC8XNXY5OoU9+i+g7vXd6EKOsowallw\r\nvWZB2rjl6+eNC\/AVa0NE2d9C6AWZtLxiV6rVsmkNUbBS6orHq8JJ2PSJKPT0\/nfM\r\nWL+ZORuFguWazEsy9oZBlplaWNxyAgq\/L66SKXynQPe74kZeVdZ5aQluHnBKZAoh\r\n6v0c2YiaoG5Mg6tDWcx4zM8HXv39Nbg2hcAtP2j3F9EkHZaytW9nM7nTIOxZJtR\/\r\nuGJtkj5+e1NQaMYn2NDiYSZALGUQ3YkHv4OIzDY=\r\n-----END CERTIFICATE-----" |
|
| 1085 |
-} |
|
| 1086 | 0 |
\ No newline at end of file |
| 1087 | 1 |
deleted file mode 100644 |
| ... | ... |
@@ -1,1514 +0,0 @@ |
| 1 |
-<?php |
|
| 2 |
-/** |
|
| 3 |
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com> |
|
| 4 |
- * |
|
| 5 |
- * @author Double Bastion LLC |
|
| 6 |
- * |
|
| 7 |
- * @license GNU AGPL version 3 or any later version |
|
| 8 |
- * |
|
| 9 |
- * This program is free software; you can redistribute it and/or |
|
| 10 |
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE |
|
| 11 |
- * License as published by the Free Software Foundation; either |
|
| 12 |
- * version 3 of the License, or any later version. |
|
| 13 |
- * |
|
| 14 |
- * This program is distributed in the hope that it will be useful, |
|
| 15 |
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 16 |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 17 |
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details. |
|
| 18 |
- * |
|
| 19 |
- * You should have received a copy of the GNU Affero General Public |
|
| 20 |
- * License along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 21 |
- * |
|
| 22 |
- */ |
|
| 23 |
- |
|
| 24 |
-declare(strict_types=1); |
|
| 25 |
- |
|
| 26 |
-namespace OCA\SMSRelentless\Controller; |
|
| 27 |
- |
|
| 28 |
-use OCP\AppFramework\ApiController; |
|
| 29 |
-use OCP\IRequest; |
|
| 30 |
-use OCA\SMSRelentless\Service\SmsrelentlessService; |
|
| 31 |
-use OCP\AppFramework\Http\DataResponse; |
|
| 32 |
-use OCP\AppFramework\OCSController; |
|
| 33 |
-use OCP\IUserSession; |
|
| 34 |
-use OCP\IConfig; |
|
| 35 |
-use \DateTime; |
|
| 36 |
-use OCP\AppFramework\Controller; |
|
| 37 |
-use OCP\Files\IAppData; |
|
| 38 |
-use OCP\AppFramework\App; |
|
| 39 |
-use OCP\Files\NotPermittedException; |
|
| 40 |
-use \ReflectionClass; |
|
| 41 |
-use OCP\Notification\INotification; |
|
| 42 |
-use OCP\Notification\IManager; |
|
| 43 |
-use OCP\IDBConnection; |
|
| 44 |
-use OCP\IUserManager; |
|
| 45 |
-use Plivo\RestClient; |
|
| 46 |
-use Plivo\Util\signatureValidation; |
|
| 47 |
- |
|
| 48 |
- |
|
| 49 |
-class AuthorApiController extends ApiController {
|
|
| 50 |
- |
|
| 51 |
- private $service; |
|
| 52 |
- private $userId; |
|
| 53 |
- private $config; |
|
| 54 |
- private $connection; |
|
| 55 |
- private $userManager; |
|
| 56 |
- private $manager; |
|
| 57 |
- |
|
| 58 |
- public function __construct($appName, IRequest $request, SmsrelentlessService $service, $userId, IConfig $config, IDBConnection $connection, IUserManager $userManager, IManager $manager) {
|
|
| 59 |
- parent::__construct( |
|
| 60 |
- $appName, |
|
| 61 |
- $request, |
|
| 62 |
- 'PUT, POST, GET, DELETE, PATCH', |
|
| 63 |
- 'Authorization, Content-Type, Accept', |
|
| 64 |
- 1728000); |
|
| 65 |
- |
|
| 66 |
- $this->service = $service; |
|
| 67 |
- $this->userId = $userId; |
|
| 68 |
- $this->config = $config; |
|
| 69 |
- $this->connection = $connection; |
|
| 70 |
- $this->userManager = $userManager; |
|
| 71 |
- $this->manager = $manager; |
|
| 72 |
- } |
|
| 73 |
- |
|
| 74 |
- |
|
| 75 |
- /** |
|
| 76 |
- * @NoAdminRequired |
|
| 77 |
- */ |
|
| 78 |
- public function object_to_array($obj) {
|
|
| 79 |
- if(is_object($obj)) $obj = (array)$this->dismount($obj); |
|
| 80 |
- if(is_array($obj)) {
|
|
| 81 |
- $new = array(); |
|
| 82 |
- foreach($obj as $key => $val) {
|
|
| 83 |
- $new[$key] = $this->object_to_array($val); |
|
| 84 |
- } |
|
| 85 |
- } |
|
| 86 |
- else $new = $obj; |
|
| 87 |
- return $new; |
|
| 88 |
- } |
|
| 89 |
- |
|
| 90 |
- |
|
| 91 |
- /** |
|
| 92 |
- * @NoAdminRequired |
|
| 93 |
- */ |
|
| 94 |
- public function dismount($object) {
|
|
| 95 |
- $reflectionClass = new ReflectionClass(get_class($object)); |
|
| 96 |
- $array = array(); |
|
| 97 |
- foreach ($reflectionClass->getProperties() as $property) {
|
|
| 98 |
- $property->setAccessible(true); |
|
| 99 |
- $array[$property->getName()] = $property->getValue($object); |
|
| 100 |
- $property->setAccessible(false); |
|
| 101 |
- } |
|
| 102 |
- return $array; |
|
| 103 |
- } |
|
| 104 |
- |
|
| 105 |
- |
|
| 106 |
- /** |
|
| 107 |
- * @NoAdminRequired |
|
| 108 |
- */ |
|
| 109 |
- public function createMessageId() {
|
|
| 110 |
- |
|
| 111 |
- // Create a random string to use as message id for messages that don't have it |
|
| 112 |
- $keypassin = substr(sha1((string) mt_rand()), 0, 32); |
|
| 113 |
- $keysaltin = openssl_random_pseudo_bytes(24); |
|
| 114 |
- $keyLengthin = 32; |
|
| 115 |
- $iterationin = 50; |
|
| 116 |
- $generated_keyin = openssl_pbkdf2($keypassin, $keysaltin, $keyLengthin, $iterationin, 'sha256'); |
|
| 117 |
- $ctdMessageId = "generated-id-" . bin2hex($generated_keyin); |
|
| 118 |
- return $ctdMessageId; |
|
| 119 |
- } |
|
| 120 |
- |
|
| 121 |
- |
|
| 122 |
- /** |
|
| 123 |
- * @NoAdminRequired |
|
| 124 |
- */ |
|
| 125 |
- public function verifyHeader($receiveddata, $signature_header, $timestamp, $public_key = '', $tolerance = null ) {
|
|
| 126 |
- // Typecast timestamp to int for comparisons |
|
| 127 |
- $timestamp = (int)$timestamp; |
|
| 128 |
- |
|
| 129 |
- // Check if timestamp is within tolerance |
|
| 130 |
- if (($tolerance > 0) && (\abs(\time() - $timestamp) > $tolerance)) {
|
|
| 131 |
- return false; |
|
| 132 |
- } else {
|
|
| 133 |
- |
|
| 134 |
- // Convert base64 string to bytes for sodium crypto functions |
|
| 135 |
- $public_key_bytes = base64_decode($public_key); |
|
| 136 |
- $signature_header_bytes = base64_decode($signature_header); |
|
| 137 |
- |
|
| 138 |
- // Construct a message to test against the signature header using the timestamp and payload |
|
| 139 |
- $constructed_string = $timestamp . '|' . $receiveddata; |
|
| 140 |
- |
|
| 141 |
- if (!\sodium_crypto_sign_verify_detached($signature_header_bytes, $constructed_string, $public_key_bytes)) {
|
|
| 142 |
- return false; |
|
| 143 |
- } else {
|
|
| 144 |
- return true; |
|
| 145 |
- } |
|
| 146 |
- } |
|
| 147 |
- } |
|
| 148 |
- |
|
| 149 |
- |
|
| 150 |
- /** |
|
| 151 |
- * @NoAdminRequired |
|
| 152 |
- * @NoCSRFRequired |
|
| 153 |
- * @PublicPage |
|
| 154 |
- */ |
|
| 155 |
- public function recdeliveryreptel() {
|
|
| 156 |
- |
|
| 157 |
- $request = file_get_contents("php://input");
|
|
| 158 |
- $recdata = json_decode($request, TRUE); |
|
| 159 |
- |
|
| 160 |
- $delsmswebhookurl = $recdata["data"]["payload"]["webhook_url"]; |
|
| 161 |
- $ncuserfortelnyxdel = $this->service->getuserbyteldelrwhurl($delsmswebhookurl); |
|
| 162 |
- |
|
| 163 |
- if ($ncuserfortelnyxdel) {
|
|
| 164 |
- |
|
| 165 |
- $messageid = $recdata["data"]["payload"]["id"]; |
|
| 166 |
- |
|
| 167 |
- $network = $recdata["data"]["payload"]["to"][0]["carrier"]; |
|
| 168 |
- $messageprice = $recdata["data"]["payload"]["cost"]["amount"]; |
|
| 169 |
- $deliverystatus = $recdata["data"]["payload"]["to"][0]["status"]; |
|
| 170 |
- |
|
| 171 |
- $goterrorinit = $recdata["data"]["payload"]["errors"]; |
|
| 172 |
- |
|
| 173 |
- if (!empty($goterrorinit)) {
|
|
| 174 |
- $retrievedtitle = $recdata["data"]["payload"]["errors"][0]["title"]; |
|
| 175 |
- $retrievedcode = $recdata["data"]["payload"]["errors"][0]["code"]; |
|
| 176 |
- $messagestatus = "(Error " . $retrievedcode . ") " . $retrievedtitle; |
|
| 177 |
- } else {
|
|
| 178 |
- $messagestatus = "Success ! The message has been successfully accepted for delivery."; |
|
| 179 |
- } |
|
| 180 |
- |
|
| 181 |
- return $this->service->updatedeliverystatustel($ncuserfortelnyxdel, $messageid, $network, $messageprice, $messagestatus, $deliverystatus); |
|
| 182 |
- |
|
| 183 |
- } else { return "access denied"; }
|
|
| 184 |
- |
|
| 185 |
- } |
|
| 186 |
- |
|
| 187 |
- |
|
| 188 |
- /** |
|
| 189 |
- * @NoAdminRequired |
|
| 190 |
- * @NoCSRFRequired |
|
| 191 |
- * @PublicPage |
|
| 192 |
- */ |
|
| 193 |
- public function recdeliveryrepnex() {
|
|
| 194 |
- |
|
| 195 |
- $plivodrurl = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; |
|
| 196 |
- |
|
| 197 |
- $ncuserforplivodel = $this->service->getuserbyplivodelrwhurl($plivodrurl); |
|
| 198 |
- |
|
| 199 |
- if ($ncuserforplivodel) {
|
|
| 200 |
- |
|
| 201 |
- $networkcode = ""; |
|
| 202 |
- $mStatus = ""; |
|
| 203 |
- |
|
| 204 |
- if (isset($_REQUEST["MessageUUID"])) { $messageid = $_REQUEST["MessageUUID"]; } else { $messageid = ''; }
|
|
| 205 |
- if (isset($_REQUEST["MCC"]) && isset($_REQUEST["MNC"])) { $networkcode = $_REQUEST["MCC"] . " " . $_REQUEST["MNC"]; } else { $networkcode = ''; }
|
|
| 206 |
- if (isset($_REQUEST["TotalAmount"])) { $messageprice = $_REQUEST["TotalAmount"]; } else { $messageprice = ''; }
|
|
| 207 |
- if (isset($_REQUEST["ErrorCode"]) && $_REQUEST["ErrorCode"] == "") {
|
|
| 208 |
- $mStatus = "Success ! The message has been successfully accepted for delivery."; |
|
| 209 |
- } elseif (isset($_REQUEST["ErrorCode"]) && $_REQUEST["ErrorCode"] != "") {
|
|
| 210 |
- $mStatus = "Error " . $_REQUEST["ErrorCode"]; |
|
| 211 |
- } else { $mStatus = ''; }
|
|
| 212 |
- |
|
| 213 |
- if (isset($_REQUEST["Status"])) { $deliverystatus = $_REQUEST["Status"]; }
|
|
| 214 |
- |
|
| 215 |
- return $this->service->updatedeliverystatusnex($ncuserforplivodel, $messageid, $networkcode, $messageprice, $mStatus, $deliverystatus); |
|
| 216 |
- |
|
| 217 |
- } else { return "access denied"; }
|
|
| 218 |
- |
|
| 219 |
- } |
|
| 220 |
- |
|
| 221 |
- |
|
| 222 |
- /** |
|
| 223 |
- * @NoAdminRequired |
|
| 224 |
- * @NoCSRFRequired |
|
| 225 |
- * @PublicPage |
|
| 226 |
- */ |
|
| 227 |
- public function recdeliveryreptwil() {
|
|
| 228 |
- |
|
| 229 |
- $twildrurl = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; |
|
| 230 |
- |
|
| 231 |
- $ncuserfortwildel = $this->service->getuserbytwildelrwhurl($twildrurl); |
|
| 232 |
- |
|
| 233 |
- if ($ncuserfortwildel) {
|
|
| 234 |
- |
|
| 235 |
- $messageid = $_REQUEST["SmsSid"]; |
|
| 236 |
- |
|
| 237 |
- if ($messageid != null) {
|
|
| 238 |
- |
|
| 239 |
- $credentialstw = $this->service->getapicredentials($ncuserfortwildel, 'twilio'); |
|
| 240 |
- $sidtw = $credentialstw[15]; |
|
| 241 |
- $tokentw = $credentialstw[16]; |
|
| 242 |
- $msdetails = json_decode(file_get_contents("https://".$sidtw.":".$tokentw."@api.twilio.com/2010-04-01/Accounts/".$sidtw."/Messages/".$messageid.".json"));
|
|
| 243 |
- $errorMessage = $msdetails->error_message; |
|
| 244 |
- $errorCode = $msdetails->error_code; |
|
| 245 |
- $deliverystatus = $msdetails->status; |
|
| 246 |
- |
|
| 247 |
- if ($errorCode == null) {
|
|
| 248 |
- $mStatus = 'Success ! The message has been successfully accepted for delivery.'; |
|
| 249 |
- } else { $mStatus = 'Error ' . $errorCode . '. '. ($errorMessage != '') ? 'Message: '. $errorMessage : ''; }
|
|
| 250 |
- |
|
| 251 |
- $messagepricepre = $msdetails->price; |
|
| 252 |
- |
|
| 253 |
- if ($messagepricepre) {
|
|
| 254 |
- $messageprice = str_replace("-", "", $messagepricepre);
|
|
| 255 |
- } else { $messageprice = ""; }
|
|
| 256 |
- |
|
| 257 |
- $networkcode = ''; |
|
| 258 |
- |
|
| 259 |
- return $this->service->updatedeliverystatustwil($ncuserfortwildel, $messageid, $networkcode, $messageprice, $mStatus, $deliverystatus); |
|
| 260 |
- |
|
| 261 |
- } else { exit(); }
|
|
| 262 |
- |
|
| 263 |
- } else { exit(); }
|
|
| 264 |
- |
|
| 265 |
- } |
|
| 266 |
- |
|
| 267 |
- |
|
| 268 |
- /** |
|
| 269 |
- * @NoAdminRequired |
|
| 270 |
- * @NoCSRFRequired |
|
| 271 |
- * @PublicPage |
|
| 272 |
- */ |
|
| 273 |
- public function recdeliveryrepflow() {
|
|
| 274 |
- |
|
| 275 |
- $flowdrurl = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; |
|
| 276 |
- |
|
| 277 |
- $ncuserforflowdel = $this->service->getuserbyflowdelrwhurl($flowdrurl); |
|
| 278 |
- |
|
| 279 |
- if ($ncuserforflowdel) {
|
|
| 280 |
- |
|
| 281 |
- $receivereq = file_get_contents('php://input');
|
|
| 282 |
- $recmdec = json_decode($receivereq, true); |
|
| 283 |
- $recmsid = $recmdec['data']['id']; |
|
| 284 |
- |
|
| 285 |
- $smsapicredfl = $this->service->getapicredentials($ncuserforflowdel, 'flowroute'); |
|
| 286 |
- $flowapikey = $smsapicredfl[20]; |
|
| 287 |
- $flowapisecret = $smsapicredfl[21]; |
|
| 288 |
- |
|
| 289 |
- $getmsdetails = json_decode(file_get_contents("https://".$flowapikey.":".$flowapisecret."@api.flowroute.com/v2.1/messages/".$recmsid.""), true);
|
|
| 290 |
- $messagepriceflinit = $getmsdetails['data']['attributes']['amount_display']; |
|
| 291 |
- $messagepricefl = str_replace("$", "", $messagepriceflinit);
|
|
| 292 |
- |
|
| 293 |
- $mdeliveryflinit = $getmsdetails['data']['attributes']['delivery_receipts'][0]['status']; |
|
| 294 |
- |
|
| 295 |
- if ($mdeliveryflinit != 'message buffered') {
|
|
| 296 |
- if ($mdeliveryflinit == 'Ok') {
|
|
| 297 |
- $messagedeliveryfl = "Issues"; |
|
| 298 |
- } else { $messagedeliveryfl = $mdeliveryflinit; }
|
|
| 299 |
- } else { $messagedeliveryfl = 'delivered'; }
|
|
| 300 |
- |
|
| 301 |
- $messagestatuscode = $getmsdetails['data']['attributes']['delivery_receipts'][0]['status_code']; |
|
| 302 |
- $messagestatusdescr = $getmsdetails['data']['attributes']['delivery_receipts'][0]['status_code_description']; |
|
| 303 |
- |
|
| 304 |
- if ($messagestatuscode != '') {
|
|
| 305 |
- $messagestatusfl = (($messagestatusdescr != '') ? $messagestatusdescr . ". " : "") . "Status code: " . $messagestatuscode; |
|
| 306 |
- } else { $messagestatusfl = "There were issues with message delivery."; }
|
|
| 307 |
- |
|
| 308 |
- $networkcodefl = ''; |
|
| 309 |
- |
|
| 310 |
- return $this->service->updatedeliverystatusflow($ncuserforflowdel, $recmsid, $networkcodefl, $messagepricefl, $messagestatusfl, $messagedeliveryfl); |
|
| 311 |
- |
|
| 312 |
- } else { return "access denied"; }
|
|
| 313 |
- |
|
| 314 |
- } |
|
| 315 |
- |
|
| 316 |
- |
|
| 317 |
- /** |
|
| 318 |
- * @NoAdminRequired |
|
| 319 |
- * @NoCSRFRequired |
|
| 320 |
- * @PublicPage |
|
| 321 |
- */ |
|
| 322 |
- public function receivesmstel() {
|
|
| 323 |
- |
|
| 324 |
- $signature = $_SERVER['HTTP_TELNYX_SIGNATURE_ED25519']; |
|
| 325 |
- $timestamp = $_SERVER['HTTP_TELNYX_TIMESTAMP']; |
|
| 326 |
- |
|
| 327 |
- $receivereq = file_get_contents('php://input');
|
|
| 328 |
- |
|
| 329 |
- $recmesdata = json_decode($receivereq, TRUE); |
|
| 330 |
- |
|
| 331 |
- $recsmswebhookurl = $recmesdata["data"]["payload"]["webhook_url"]; |
|
| 332 |
- |
|
| 333 |
- $ncuserfortelnyx = $this->service->getuserbytelrecwhurl($recsmswebhookurl); |
|
| 334 |
- |
|
| 335 |
- $txcredentials = $this->service->getapicredentials($ncuserfortelnyx, 'telnyx'); |
|
| 336 |
- |
|
| 337 |
- $telpubkey = $txcredentials[1]; |
|
| 338 |
- $telnyxkey = $txcredentials[0]; |
|
| 339 |
- $teldelrecurl = $txcredentials[3]; |
|
| 340 |
- $messagingprofid = $txcredentials[4]; |
|
| 341 |
- |
|
| 342 |
- // Verify message signature |
|
| 343 |
- $signatureverify = $this->verifyHeader($receivereq, $signature, $timestamp, $telpubkey, $tolerance = 30); |
|
| 344 |
- |
|
| 345 |
- if ($signatureverify) {
|
|
| 346 |
- |
|
| 347 |
- if ($ncuserfortelnyx) {
|
|
| 348 |
- |
|
| 349 |
- if ($recmesdata) {
|
|
| 350 |
- if (isset($recmesdata["data"]["payload"]["id"])) {
|
|
| 351 |
- $messageid = $recmesdata["data"]["payload"]["id"]; |
|
| 352 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 353 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 354 |
- |
|
| 355 |
- $messagedate = date("Y-m-d H:i:s");
|
|
| 356 |
- |
|
| 357 |
- $messagefrom = $recmesdata["data"]["payload"]["from"]["phone_number"]; |
|
| 358 |
- |
|
| 359 |
- $messageto = "Telnyx: " . $recmesdata["data"]["payload"]["to"][0]["phone_number"]; |
|
| 360 |
- |
|
| 361 |
- $messagetopr = $recmesdata["data"]["payload"]["to"][0]["phone_number"]; |
|
| 362 |
- |
|
| 363 |
- $messagetoprtx = "Tx: " . $messagetopr; |
|
| 364 |
- |
|
| 365 |
- // Check if the message is a MMS |
|
| 366 |
- if ($recmesdata["data"]["payload"]['type'] == 'MMS') {
|
|
| 367 |
- |
|
| 368 |
- $includedFilestx = ''; |
|
| 369 |
- |
|
| 370 |
- foreach ($recmesdata["data"]["payload"]['media'] as $telkey => $telvalue) {
|
|
| 371 |
- if (is_array($telvalue)) {
|
|
| 372 |
- foreach ($telvalue as $telkeysec => $telvaluesec) {
|
|
| 373 |
- if ($telkeysec == "url") {
|
|
| 374 |
- $includedFilestx .= $telvaluesec . "<br><br>"; |
|
| 375 |
- } |
|
| 376 |
- } |
|
| 377 |
- } |
|
| 378 |
- } |
|
| 379 |
- |
|
| 380 |
- $messagetexttel = $recmesdata["data"]["payload"]["text"] . "<br><br><br></b>--- The files included in the MMS follow. Download them only if you trust the sender and the domains of the URLs ---<br><br><br>" . $includedFilestx; |
|
| 381 |
- $ismmstel = 1; |
|
| 382 |
- } else {
|
|
| 383 |
- $messagetexttel = $recmesdata["data"]["payload"]["text"]; |
|
| 384 |
- $ismmstel = 0; |
|
| 385 |
- } |
|
| 386 |
- |
|
| 387 |
- $recmessagearr = [$messageid, $messagedate, $messagefrom, $messageto, $messagetexttel]; |
|
| 388 |
- |
|
| 389 |
- $this->service->insertrecsms($ncuserfortelnyx, $recmessagearr); |
|
| 390 |
- |
|
| 391 |
- |
|
| 392 |
- // Check if there is any auto-reply configured for the receiving number |
|
| 393 |
- $telgetarpl = $this->connection->prepare('SELECT `phone_number`, `days_of_week`, `daily_start`, `daily_end`, `vacation_start`, `vacation_end`, `message_text` FROM
|
|
| 394 |
- `*PREFIX*sms_relent_autorply` WHERE `phone_number` = ?'); |
|
| 395 |
- $telgetarplres = $telgetarpl->execute([$messagetoprtx]); |
|
| 396 |
- $telarpldata = $telgetarplres->fetch(); |
|
| 397 |
- $telgetarplres->closeCursor(); |
|
| 398 |
- |
|
| 399 |
- if ($telarpldata) {
|
|
| 400 |
- |
|
| 401 |
- $autoreplytext = $telarpldata['message_text']; |
|
| 402 |
- |
|
| 403 |
- // Get the Display Name of the current user |
|
| 404 |
- $crtuser = $this->userManager->get($ncuserfortelnyx); |
|
| 405 |
- $displaynm = $crtuser->getDisplayName(); |
|
| 406 |
- |
|
| 407 |
- // Check if the auto-reply is in 'daily mode' |
|
| 408 |
- if ($telarpldata['days_of_week']) {
|
|
| 409 |
- |
|
| 410 |
- // Check if the auto-reply should be sent |
|
| 411 |
- $daysofweekarrinit = explode(",", $telarpldata['days_of_week']);
|
|
| 412 |
- |
|
| 413 |
- $daysofweekarr = []; |
|
| 414 |
- $fulldays = []; |
|
| 415 |
- foreach ($daysofweekarrinit as $crtday) {
|
|
| 416 |
- if (strpos($crtday, "full") !== false) {
|
|
| 417 |
- $fulldays[] = $crtday; |
|
| 418 |
- } else {
|
|
| 419 |
- $daysofweekarr[] = $crtday; |
|
| 420 |
- } |
|
| 421 |
- } |
|
| 422 |
- |
|
| 423 |
- $dailystart = $telarpldata['daily_start']; |
|
| 424 |
- $dailyend = $telarpldata['daily_end']; |
|
| 425 |
- |
|
| 426 |
- $crntdate = date("Y-m-d");
|
|
| 427 |
- $crntDayNumber = date('N', strtotime($crntdate));
|
|
| 428 |
- |
|
| 429 |
- if (in_array($crntDayNumber, $daysofweekarr)) {
|
|
| 430 |
- |
|
| 431 |
- $crntimehrmin = date("H:i");
|
|
| 432 |
- $crntdatefmt = new DateTime($crntimehrmin); |
|
| 433 |
- $startdatefmt = new DateTime($dailystart); |
|
| 434 |
- $enddatefmt = new DateTime($dailyend); |
|
| 435 |
- |
|
| 436 |
- if ($crntdatefmt >= $startdatefmt && $enddatefmt > $crntdatefmt) {
|
|
| 437 |
- // OK |
|
| 438 |
- } else {
|
|
| 439 |
- |
|
| 440 |
- // Send the auto-reply |
|
| 441 |
- \Telnyx\Telnyx::setApiKey($telnyxkey); |
|
| 442 |
- $messagedate = date("Y-m-d H:i:s");
|
|
| 443 |
- $message = \Telnyx\Message::Create(["from" => $messagetopr, "to" => $messagefrom, "text" => $autoreplytext, "webhook_url" => $teldelrecurl]); |
|
| 444 |
- |
|
| 445 |
- // Insert the sent SMS in the 'sms_relent_sent' table |
|
| 446 |
- if ($message) {
|
|
| 447 |
- if (isset($message['id'])) {
|
|
| 448 |
- $messageid = $message['id']; |
|
| 449 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 450 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 451 |
- |
|
| 452 |
- $messagefromtx = "Telnyx: " . $messagetopr; |
|
| 453 |
- $messagetotx = $messagefrom; |
|
| 454 |
- $messagenetwork = null; |
|
| 455 |
- $messageprice = null; |
|
| 456 |
- $messagestatus = $message['to'][0]['status']; |
|
| 457 |
- $messagedelivery = null; |
|
| 458 |
- |
|
| 459 |
- $sentmessagearr = [$messageid, $messagedate, $messagefromtx, $messagetotx, $messagenetwork, $messageprice, $messagestatus, $messagedelivery, $autoreplytext]; |
|
| 460 |
- |
|
| 461 |
- $this->service->insertsentsms($ncuserfortelnyx, $displaynm, $sentmessagearr); |
|
| 462 |
- } |
|
| 463 |
- } |
|
| 464 |
- |
|
| 465 |
- if (in_array($crntDayNumber . "(full)", $fulldays)) {
|
|
| 466 |
- |
|
| 467 |
- // Send the auto-reply |
|
| 468 |
- \Telnyx\Telnyx::setApiKey($telnyxkey); |
|
| 469 |
- $messagedate = date("Y-m-d H:i:s");
|
|
| 470 |
- $message = \Telnyx\Message::Create(["from" => $messagetopr, "to" => $messagefrom, "text" => $autoreplytext, "webhook_url" => $teldelrecurl]); |
|
| 471 |
- |
|
| 472 |
- // Insert the sent SMS in the 'sms_relent_sent' table |
|
| 473 |
- if ($message) {
|
|
| 474 |
- if (isset($message['id'])) {
|
|
| 475 |
- $messageid = $message['id']; |
|
| 476 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 477 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 478 |
- $messagefromtx = "Telnyx: " . $messagetopr; |
|
| 479 |
- $messagetotx = $messagefrom; |
|
| 480 |
- $messagenetwork = null; |
|
| 481 |
- $messageprice = null; |
|
| 482 |
- $messagestatus = $message['to'][0]['status']; |
|
| 483 |
- $messagedelivery = null; |
|
| 484 |
- |
|
| 485 |
- $sentmessagearr = [$messageid, $messagedate, $messagefromtx, $messagetotx, $messagenetwork, $messageprice, $messagestatus, $messagedelivery, $autoreplytext]; |
|
| 486 |
- |
|
| 487 |
- $this->service->insertsentsms($ncuserfortelnyx, $displaynm, $sentmessagearr); |
|
| 488 |
- } |
|
| 489 |
- |
|
| 490 |
- } elseif ($telarpldata['vacation_start'] && $telarpldata['vacation_end']) {
|
|
| 491 |
- |
|
| 492 |
- $vacationstart = $telarpldata['vacation_start']; |
|
| 493 |
- $vacationend = $telarpldata['vacation_end']; |
|
| 494 |
- |
|
| 495 |
- $crntimeymd = date("Y-m-d H:i:s");
|
|
| 496 |
- $crntdatevcfmt = new DateTime($crntimeymd); |
|
| 497 |
- $startdatevcfmt = new DateTime($vacationstart); |
|
| 498 |
- $enddatefvcmt = new DateTime($vacationend); |
|
| 499 |
- |
|
| 500 |
- if ($startdatevcfmt <= $crntdatevcfmt && $crntdatevcfmt <= $enddatefvcmt) {
|
|
| 501 |
- |
|
| 502 |
- // Send the auto-reply |
|
| 503 |
- \Telnyx\Telnyx::setApiKey($telnyxkey); |
|
| 504 |
- $messagedate = date("Y-m-d H:i:s");
|
|
| 505 |
- $message = \Telnyx\Message::Create(["from" => $messagetopr, "to" => $messagefrom, "text" => $autoreplytext, "webhook_url" => $teldelrecurl]); |
|
| 506 |
- |
|
| 507 |
- // Insert the sent SMS in the 'sms_relent_sent' table |
|
| 508 |
- if ($message) {
|
|
| 509 |
- if (isset($message['id'])) {
|
|
| 510 |
- $messageid = $message['id']; |
|
| 511 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 512 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 513 |
- $messagefromtx = "Telnyx: " . $messagetopr; |
|
| 514 |
- $messagetotx = $messagefrom; |
|
| 515 |
- $messagenetwork = null; |
|
| 516 |
- $messageprice = null; |
|
| 517 |
- $messagestatus = $message['to'][0]['status']; |
|
| 518 |
- $messagedelivery = null; |
|
| 519 |
- |
|
| 520 |
- $sentmessagearr = [$messageid, $messagedate, $messagefromtx, $messagetotx, $messagenetwork, $messageprice, $messagestatus, $messagedelivery, $autoreplytext]; |
|
| 521 |
- |
|
| 522 |
- $this->service->insertsentsms($ncuserfortelnyx, $displaynm, $sentmessagearr); |
|
| 523 |
- } |
|
| 524 |
- |
|
| 525 |
- } |
|
| 526 |
- } |
|
| 527 |
- |
|
| 528 |
- |
|
| 529 |
- // Send notifications |
|
| 530 |
- $nameofhost = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST']; |
|
| 531 |
- |
|
| 532 |
- $telsmsapicred = $this->service->getapicredentials($ncuserfortelnyx, 'telnyx'); |
|
| 533 |
- $telnotify = $telsmsapicred[12]; |
|
| 534 |
- $emailaddress = $telsmsapicred[13]; |
|
| 535 |
- $includemessageinemail = $telsmsapicred[14]; |
|
| 536 |
- |
|
| 537 |
- if ($ismmstel == 0) { $smsormmstel = "SMS"; } else { $smsormmstel = "MMS"; }
|
|
| 538 |
- |
|
| 539 |
- // Send the Nextcloud notification(s) |
|
| 540 |
- if ($telnotify != 0 ) {
|
|
| 541 |
- |
|
| 542 |
- $allalloweduserstx = $this->service->getallowedusers($ncuserfortelnyx); |
|
| 543 |
- |
|
| 544 |
- foreach ($allalloweduserstx as $alusrkeytx => $specusrnametx) {
|
|
| 545 |
- |
|
| 546 |
- $notificationtx = $this->manager->createNotification(); |
|
| 547 |
- $notificationtx->setApp('sms_relentless')
|
|
| 548 |
- ->setUser($specusrnametx) |
|
| 549 |
- ->setDateTime(new \DateTime()) |
|
| 550 |
- ->setObject('sms_relentless', '11')
|
|
| 551 |
- ->setSubject('New SMS Message');
|
|
| 552 |
- $this->manager->notify($notificationtx); |
|
| 553 |
- } |
|
| 554 |
- } |
|
| 555 |
- |
|
| 556 |
- // Send the email notification |
|
| 557 |
- if ($emailaddress != '') {
|
|
| 558 |
- |
|
| 559 |
- $gmtind = "UTC " . date('P');
|
|
| 560 |
- $smsdateinit = date("Y-m-d H:i:s");
|
|
| 561 |
- $smsdate = $smsdateinit . " " . $gmtind; |
|
| 562 |
- |
|
| 563 |
- $subject = "New ". $smsormmstel ." message received"; |
|
| 564 |
- |
|
| 565 |
- $messagetextnltel = str_replace("\n", "<br>", $messagetexttel);
|
|
| 566 |
- |
|
| 567 |
- if ($includemessageinemail == 0) {
|
|
| 568 |
- $message = "Hello, <br><br> You have received a new message on ".$smsdate." .<br> You can check the new message by going to 'SMS Relentless' > 'Received SMS Messages'. <br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '" . $nameofhost . "' <br>"; |
|
| 569 |
- } else {
|
|
| 570 |
- $message = "Hello, <br><br> You have received a new message on ".$smsdate." :<br><br><br> Message ID: ".$messageid." <br> Message Date: ".$messagedate." <br> From: ".$messagefrom." <br> To: ".$messageto."<br> Message Text: <br><br><b>".$messagetextnltel."</b><br><br>____________<br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>"; |
|
| 571 |
- } |
|
| 572 |
- |
|
| 573 |
- $messagefin = chunk_split(base64_encode($message)); |
|
| 574 |
- |
|
| 575 |
- $headers = "MIME-Version: 1.0" . "\r\n"; |
|
| 576 |
- $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n"; |
|
| 577 |
- $headers .= "Content-Transfer-Encoding: base64" . "\r\n"; |
|
| 578 |
- |
|
| 579 |
- // Set the email sender |
|
| 580 |
- $headers .= "From: " . $emailaddress . "\r\n"; |
|
| 581 |
- $headers .= "Reply-To: " . $emailaddress . "\r\n"; |
|
| 582 |
- |
|
| 583 |
- mail($emailaddress, $subject, $messagefin, $headers); |
|
| 584 |
- } |
|
| 585 |
- |
|
| 586 |
- return http_response_code(200); |
|
| 587 |
- |
|
| 588 |
- } else { return "access denied"; }
|
|
| 589 |
- |
|
| 590 |
- } else { return "access denied"; }
|
|
| 591 |
- |
|
| 592 |
- } |
|
| 593 |
- |
|
| 594 |
- |
|
| 595 |
- /** |
|
| 596 |
- * @NoAdminRequired |
|
| 597 |
- * @NoCSRFRequired |
|
| 598 |
- * @PublicPage |
|
| 599 |
- */ |
|
| 600 |
- public function receivesmsnex() {
|
|
| 601 |
- |
|
| 602 |
- $plivosignature = $_SERVER['HTTP_X_PLIVO_SIGNATURE_V2']; |
|
| 603 |
- $plivononce = $_SERVER["HTTP_X_PLIVO_SIGNATURE_V2_NONCE"]; |
|
| 604 |
- |
|
| 605 |
- $plivorecurl = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; |
|
| 606 |
- |
|
| 607 |
- $ncuserforplivo = $this->service->getuserbyplivorecwhurl($plivorecurl); |
|
| 608 |
- |
|
| 609 |
- $smsapicred = $this->service->getapicredentials($ncuserforplivo, 'plivo'); |
|
| 610 |
- |
|
| 611 |
- $plivoapikey = $smsapicred[5]; |
|
| 612 |
- $plivoauthtoken = $smsapicred[6]; |
|
| 613 |
- $plivowhdelrcpt = $smsapicred[8]; |
|
| 614 |
- |
|
| 615 |
- $baseplivourlinit = explode("?", $plivorecurl);
|
|
| 616 |
- $baseplivoURI = $baseplivourlinit[0]; |
|
| 617 |
- |
|
| 618 |
- // Verify message signature |
|
| 619 |
- $SigValidation = new signatureValidation(); |
|
| 620 |
- $signverify = $SigValidation->validateSignature($baseplivoURI, $plivononce, $plivosignature, $plivoauthtoken); |
|
| 621 |
- |
|
| 622 |
- if ($signverify) {
|
|
| 623 |
- |
|
| 624 |
- if ($ncuserforplivo) {
|
|
| 625 |
- |
|
| 626 |
- if ($_REQUEST) {
|
|
| 627 |
- if (isset($_REQUEST["MessageUUID"])) {
|
|
| 628 |
- $messageid = $_REQUEST["MessageUUID"]; |
|
| 629 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 630 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 631 |
- |
|
| 632 |
- $messagedate = date("Y-m-d H:i:s");
|
|
| 633 |
- |
|
| 634 |
- $messagefrom = "+" . $_REQUEST['From']; |
|
| 635 |
- $messageto = "Plivo: +" . $_REQUEST['To']; |
|
| 636 |
- $messagetoprpl = "Pl: +" . $_REQUEST['To']; |
|
| 637 |
- $messagetoplsp = "+" . $_REQUEST['To']; |
|
| 638 |
- |
|
| 639 |
- // Check if the message is a MMS |
|
| 640 |
- if ($_REQUEST['Type'] == 'mms') {
|
|
| 641 |
- |
|
| 642 |
- $includedFilespl = ''; |
|
| 643 |
- foreach ($_REQUEST as $plkey => $plvalue) {
|
|
| 644 |
- |
|
| 645 |
- if (strpos($plkey, "Media") !== false && $plkey != "MediaCount") {
|
|
| 646 |
- $includedFilespl .= $plvalue . "<br><br>"; |
|
| 647 |
- } |
|
| 648 |
- } |
|
| 649 |
- |
|
| 650 |
- $messagetextpl = $_REQUEST['Body'] . "<br><br><br></b>--- The files included in the MMS follow. Download them only if you trust the sender and the domains of the URLs ---<br><br><br>" . $includedFilespl; |
|
| 651 |
- $ismmspl = 1; |
|
| 652 |
- } else {
|
|
| 653 |
- $messagetextpl = $_REQUEST['Text']; |
|
| 654 |
- $ismmspl = 0; |
|
| 655 |
- } |
|
| 656 |
- |
|
| 657 |
- $recmessagearr = [$messageid, $messagedate, $messagefrom, $messageto, $messagetextpl]; |
|
| 658 |
- |
|
| 659 |
- $this->service->insertrecsms($ncuserforplivo, $recmessagearr); |
|
| 660 |
- |
|
| 661 |
- |
|
| 662 |
- // Check if there is any auto-reply configured for the receiving number |
|
| 663 |
- $plgetarpl = $this->connection->prepare('SELECT `phone_number`, `days_of_week`, `daily_start`, `daily_end`, `vacation_start`, `vacation_end`, `message_text` FROM
|
|
| 664 |
- `*PREFIX*sms_relent_autorply` WHERE `phone_number` = ?'); |
|
| 665 |
- $plgetarplres = $plgetarpl->execute([$messagetoprpl]); |
|
| 666 |
- $plarpldata = $plgetarplres->fetch(); |
|
| 667 |
- $plgetarplres->closeCursor(); |
|
| 668 |
- |
|
| 669 |
- if ($plarpldata) {
|
|
| 670 |
- |
|
| 671 |
- $autoreplytext = $plarpldata['message_text']; |
|
| 672 |
- |
|
| 673 |
- // Get the Display Name of the current user |
|
| 674 |
- $crtuser = $this->userManager->get($ncuserforplivo); |
|
| 675 |
- $displaynm = $crtuser->getDisplayName(); |
|
| 676 |
- |
|
| 677 |
- // Check if the auto-reply is in 'daily mode' |
|
| 678 |
- if ($plarpldata['days_of_week']) {
|
|
| 679 |
- |
|
| 680 |
- // Check if the auto-reply should be sent |
|
| 681 |
- $daysofweekarrinit = explode(",", $plarpldata['days_of_week']);
|
|
| 682 |
- |
|
| 683 |
- $daysofweekarr = []; |
|
| 684 |
- $fulldays = []; |
|
| 685 |
- foreach ($daysofweekarrinit as $crtday) {
|
|
| 686 |
- if (strpos($crtday, "full") !== false) {
|
|
| 687 |
- $fulldays[] = $crtday; |
|
| 688 |
- } else {
|
|
| 689 |
- $daysofweekarr[] = $crtday; |
|
| 690 |
- } |
|
| 691 |
- } |
|
| 692 |
- |
|
| 693 |
- $dailystart = $plarpldata['daily_start']; |
|
| 694 |
- $dailyend = $plarpldata['daily_end']; |
|
| 695 |
- |
|
| 696 |
- $crntdate = date("Y-m-d");
|
|
| 697 |
- $crntDayNumber = date('N', strtotime($crntdate));
|
|
| 698 |
- |
|
| 699 |
- if (in_array($crntDayNumber, $daysofweekarr)) {
|
|
| 700 |
- |
|
| 701 |
- $crntimehrmin = date("H:i");
|
|
| 702 |
- $crntdatefmt = new DateTime($crntimehrmin); |
|
| 703 |
- $startdatefmt = new DateTime($dailystart); |
|
| 704 |
- $enddatefmt = new DateTime($dailyend); |
|
| 705 |
- |
|
| 706 |
- if ($crntdatefmt >= $startdatefmt && $enddatefmt > $crntdatefmt) {
|
|
| 707 |
- // OK |
|
| 708 |
- } else {
|
|
| 709 |
- |
|
| 710 |
- // Send the auto-reply |
|
| 711 |
- $client = new RestClient($plivoapikey, $plivoauthtoken); |
|
| 712 |
- $messagedatepl = date("Y-m-d H:i:s");
|
|
| 713 |
- $response = $client->messages->create($messagetoplsp,[$messagefrom],$autoreplytext,["url" => $plivowhdelrcpt]); |
|
| 714 |
- $messageidinit = $response->getmessageUuid(0); |
|
| 715 |
- |
|
| 716 |
- if ($messageidinit) {
|
|
| 717 |
- if (isset($messageidinit[0])) {
|
|
| 718 |
- $messageid = $messageidinit[0]; |
|
| 719 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 720 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 721 |
- |
|
| 722 |
- if (property_exists($response, 'error')) {
|
|
| 723 |
- $messagestatus = "Error: " . $response->error; |
|
| 724 |
- } else { $messagestatus = 'The message has been accepted for delivery.'; }
|
|
| 725 |
- |
|
| 726 |
- $messagefrompl = $messageto; |
|
| 727 |
- $messagetopl = $messagefrom; |
|
| 728 |
- $messagenetwork = ''; |
|
| 729 |
- $messageprice = ''; |
|
| 730 |
- |
|
| 731 |
- $messagedelivery = ''; |
|
| 732 |
- |
|
| 733 |
- $sentmessagearr = [$messageid, $messagedatepl, $messagefrompl, $messagetopl, $messagenetwork, $messageprice, $messagestatus, $messagedelivery, $autoreplytext]; |
|
| 734 |
- |
|
| 735 |
- $this->service->insertsentsms($ncuserforplivo, $displaynm, $sentmessagearr); |
|
| 736 |
- } |
|
| 737 |
- } |
|
| 738 |
- |
|
| 739 |
- if (in_array($crntDayNumber, $fulldays)) {
|
|
| 740 |
- |
|
| 741 |
- // Send the auto-reply |
|
| 742 |
- $client = new RestClient($plivoapikey, $plivoauthtoken); |
|
| 743 |
- $messagedatepl = date("Y-m-d H:i:s");
|
|
| 744 |
- $response = $client->messages->create($messagetoplsp,[$messagefrom],$autoreplytext,["url" => $plivowhdelrcpt]); |
|
| 745 |
- $messageidinit = $response->getmessageUuid(0); |
|
| 746 |
- |
|
| 747 |
- if ($messageidinit) {
|
|
| 748 |
- if (isset($messageidinit[0])) {
|
|
| 749 |
- $messageid = $messageidinit[0]; |
|
| 750 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 751 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 752 |
- |
|
| 753 |
- if (property_exists($response, 'error')) {
|
|
| 754 |
- $messagestatus = "Error: " . $response->error; |
|
| 755 |
- } else { $messagestatus = 'The message has been accepted for delivery.'; }
|
|
| 756 |
- |
|
| 757 |
- $messagefrompl = $messageto; |
|
| 758 |
- $messagetopl = $messagefrom; |
|
| 759 |
- $messagenetwork = ''; |
|
| 760 |
- $messageprice = ''; |
|
| 761 |
- |
|
| 762 |
- $messagedelivery = ''; |
|
| 763 |
- |
|
| 764 |
- $sentmessagearr = [$messageid, $messagedatepl, $messagefrompl, $messagetopl, $messagenetwork, $messageprice, $messagestatus, $messagedelivery, $autoreplytext]; |
|
| 765 |
- |
|
| 766 |
- $this->service->insertsentsms($ncuserforplivo, $displaynm, $sentmessagearr); |
|
| 767 |
- } |
|
| 768 |
- |
|
| 769 |
- } elseif ($plarpldata['vacation_start'] && $plarpldata['vacation_end']) {
|
|
| 770 |
- |
|
| 771 |
- $vacationstart = $plarpldata['vacation_start']; |
|
| 772 |
- $vacationend = $plarpldata['vacation_end']; |
|
| 773 |
- |
|
| 774 |
- $crntimeymd = date("Y-m-d H:i:s");
|
|
| 775 |
- $crntdatevcfmt = new DateTime($crntimeymd); |
|
| 776 |
- $startdatevcfmt = new DateTime($vacationstart); |
|
| 777 |
- $enddatefvcmt = new DateTime($vacationend); |
|
| 778 |
- |
|
| 779 |
- if ($startdatevcfmt <= $crntdatevcfmt && $crntdatevcfmt <= $enddatefvcmt) {
|
|
| 780 |
- |
|
| 781 |
- $client = new RestClient($plivoapikey, $plivoauthtoken); |
|
| 782 |
- $messagedatepl = date("Y-m-d H:i:s");
|
|
| 783 |
- $response = $client->messages->create($messagetoplsp,[$messagefrom],$autoreplytext,["url" => $plivowhdelrcpt]); |
|
| 784 |
- |
|
| 785 |
- $messageidinit = $response->getmessageUuid(0); |
|
| 786 |
- |
|
| 787 |
- if ($messageidinit) {
|
|
| 788 |
- if (isset($messageidinit[0])) {
|
|
| 789 |
- $messageid = $messageidinit[0]; |
|
| 790 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 791 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 792 |
- |
|
| 793 |
- if (property_exists($response, 'error')) {
|
|
| 794 |
- $messagestatus = "Error: " . $response->error; |
|
| 795 |
- } else { $messagestatus = 'The message has been accepted for delivery.'; }
|
|
| 796 |
- |
|
| 797 |
- $messagefrompl = $messageto; |
|
| 798 |
- $messagetopl = $messagefrom; |
|
| 799 |
- $messagenetwork = ''; |
|
| 800 |
- $messageprice = ''; |
|
| 801 |
- |
|
| 802 |
- $messagedelivery = ''; |
|
| 803 |
- |
|
| 804 |
- $sentmessagearr = [$messageid, $messagedatepl, $messagefrompl, $messagetopl, $messagenetwork, $messageprice, $messagestatus, $messagedelivery, $autoreplytext]; |
|
| 805 |
- |
|
| 806 |
- $this->service->insertsentsms($ncuserforplivo, $displaynm, $sentmessagearr); |
|
| 807 |
- } |
|
| 808 |
- |
|
| 809 |
- } |
|
| 810 |
- } |
|
| 811 |
- |
|
| 812 |
- |
|
| 813 |
- // Send notifications |
|
| 814 |
- $nameofhost = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST']; |
|
| 815 |
- |
|
| 816 |
- $nextnotify = $smsapicred[12]; |
|
| 817 |
- $emailaddress = $smsapicred[13]; |
|
| 818 |
- $includemessageinemail = $smsapicred[14]; |
|
| 819 |
- |
|
| 820 |
- if ($ismmspl == 0) { $smsormmspl = "SMS"; } else { $smsormmspl = "MMS"; }
|
|
| 821 |
- |
|
| 822 |
- // Send the Nextcloud notification(s) |
|
| 823 |
- if ($nextnotify != 0 ) {
|
|
| 824 |
- |
|
| 825 |
- $allalloweduserspl = $this->service->getallowedusers($ncuserforplivo); |
|
| 826 |
- |
|
| 827 |
- foreach ($allalloweduserspl as $alusrkeypl => $specusrnamepl) {
|
|
| 828 |
- |
|
| 829 |
- $notificationpl = $this->manager->createNotification(); |
|
| 830 |
- $notificationpl->setApp('sms_relentless')
|
|
| 831 |
- ->setUser($specusrnamepl) |
|
| 832 |
- ->setDateTime(new \DateTime()) |
|
| 833 |
- ->setObject('sms_relentless', '11')
|
|
| 834 |
- ->setSubject('New SMS Message');
|
|
| 835 |
- $this->manager->notify($notificationpl); |
|
| 836 |
- } |
|
| 837 |
- } |
|
| 838 |
- |
|
| 839 |
- // Send the email notification |
|
| 840 |
- if ($emailaddress != '') {
|
|
| 841 |
- |
|
| 842 |
- $gmtind = "UTC " . date('P');
|
|
| 843 |
- $smsdateinit = date("Y-m-d H:i:s");
|
|
| 844 |
- $smsdate = $smsdateinit . " " . $gmtind; |
|
| 845 |
- |
|
| 846 |
- $subject = "New ". $smsormmspl ." message received"; |
|
| 847 |
- |
|
| 848 |
- $messagetextnlpl = str_replace("\n", "<br>", $messagetextpl);
|
|
| 849 |
- |
|
| 850 |
- if ($includemessageinemail == 0) {
|
|
| 851 |
- $message = "Hello, <br><br> You have received a new message on ".$smsdate." .<br> You can check the new message by going to 'SMS Relentless' > 'Received SMS Messages'. <br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>"; |
|
| 852 |
- } else {
|
|
| 853 |
- $message = "Hello, <br><br> You have received a new message on ".$smsdate." :<br><br><br> Message ID: ".$messageid." <br> Message Date: ".$messagedate." <br> From: ".$messagefrom." <br> To: ".$messageto."<br> Message Text: <br><br><b>".$messagetextnlpl."</b><br><br>____________<br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>"; |
|
| 854 |
- } |
|
| 855 |
- |
|
| 856 |
- $messagefin = chunk_split(base64_encode($message)); |
|
| 857 |
- |
|
| 858 |
- $headers = "MIME-Version: 1.0" . "\r\n"; |
|
| 859 |
- $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n"; |
|
| 860 |
- $headers .= "Content-Transfer-Encoding: base64" . "\r\n"; |
|
| 861 |
- |
|
| 862 |
- // Set the email sender |
|
| 863 |
- $headers .= "From: " . $emailaddress . "\r\n"; |
|
| 864 |
- $headers .= "Reply-To: " . $emailaddress . "\r\n"; |
|
| 865 |
- |
|
| 866 |
- mail($emailaddress, $subject, $messagefin, $headers); |
|
| 867 |
- } |
|
| 868 |
- |
|
| 869 |
- return http_response_code(200); |
|
| 870 |
- |
|
| 871 |
- } else { return "access denied"; }
|
|
| 872 |
- |
|
| 873 |
- } else { return "access denied"; }
|
|
| 874 |
- } |
|
| 875 |
- |
|
| 876 |
- |
|
| 877 |
- /** |
|
| 878 |
- * @NoAdminRequired |
|
| 879 |
- * @NoCSRFRequired |
|
| 880 |
- * @PublicPage |
|
| 881 |
- */ |
|
| 882 |
- public function receivesmstwil() {
|
|
| 883 |
- |
|
| 884 |
- $twilsig = $_SERVER['HTTP_X_TWILIO_SIGNATURE']; |
|
| 885 |
- |
|
| 886 |
- $basepath = $this->config->getSystemValue('overwrite.cli.url');
|
|
| 887 |
- $twilrecprm = $_GET["twilrecparam"]; |
|
| 888 |
- $twilrecurl = $basepath . "/apps/sms_relentless/api/recsmstwil?twilrecparam=" . $twilrecprm; |
|
| 889 |
- |
|
| 890 |
- $ncuserfortwil = $this->service->getuserbytwilrecwhurl($twilrecurl); |
|
| 891 |
- |
|
| 892 |
- $smsapicred = $this->service->getapicredentials($ncuserfortwil, 'twilio'); |
|
| 893 |
- $apikeyTw = $smsapicred[15]; |
|
| 894 |
- $authTokenTw = $smsapicred[16]; |
|
| 895 |
- $apidelrecurltw = $smsapicred[18]; |
|
| 896 |
- |
|
| 897 |
- $postVars = $_POST; |
|
| 898 |
- ksort($postVars); |
|
| 899 |
- |
|
| 900 |
- $compurlpart = ''; |
|
| 901 |
- |
|
| 902 |
- foreach ($postVars as $twilkey => $twilvalue) {
|
|
| 903 |
- $compurlpart .= $twilkey . $twilvalue; |
|
| 904 |
- } |
|
| 905 |
- |
|
| 906 |
- $compURL1 = $basepath . "/apps/sms_relentless/api/recsmstwil?twilrecparam=" . $twilrecprm . $compurlpart; |
|
| 907 |
- $compURL2 = $basepath . "/apps/sms_relentless/api/recsmstwil?twilrecparam=" . $twilrecprm . "&twilrecparam=" . $twilrecprm . $compurlpart; |
|
| 908 |
- $computedsig1 = base64_encode(hash_hmac('sha1', $compURL1, $authTokenTw, true));
|
|
| 909 |
- $computedsig2 = base64_encode(hash_hmac('sha1', $compURL2, $authTokenTw, true));
|
|
| 910 |
- |
|
| 911 |
- // Verify message signature |
|
| 912 |
- if (strcmp($computedsig1, $twilsig) == 0 || strcmp($computedsig2, $twilsig) == 0) {
|
|
| 913 |
- |
|
| 914 |
- if ($ncuserfortwil) {
|
|
| 915 |
- |
|
| 916 |
- if ($_POST) {
|
|
| 917 |
- if (isset($_POST['MessageSid'])) {
|
|
| 918 |
- $messageid = $_POST['MessageSid']; |
|
| 919 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 920 |
- } else { $messageid = $this->createMessageId(); }
|
|
| 921 |
- |
|
| 922 |
- $messagedate = date("Y-m-d H:i:s");
|
|
| 923 |
- |
|
| 924 |
- $messagefrom = $_POST['From']; |
|
| 925 |
- |
|
| 926 |
- $messageto = "Twilio: " . $_POST['To']; |
|
| 927 |
- |
|
| 928 |
- $messagetoprtw = $_POST['To']; |
|
| 929 |
- |
|
| 930 |
- $messagetotwls = "Tw: " . $_POST['To']; |
|
| 931 |
- |
|
| 932 |
- // Check if the new message is a MMS |
|
| 933 |
- if ($_POST['NumMedia'] != 0) {
|
|
| 934 |
- |
|
| 935 |
- $includedFilestw = ''; |
|
| 936 |
- foreach ($_POST as $twkey => $twvalue) {
|
|
| 937 |
- |
|
| 938 |
- if (strpos($twkey, "MediaUrl") !== false) {
|
|
| 939 |
- $includedFilestw .= $twvalue . "<br><br>"; |
|
| 940 |
- } |
|
| 941 |
- } |
|
| 942 |
- $messagetexttw = $_POST['Body'] . "<br><br><br></b>--- The files included in the MMS follow. Download them only if you trust the sender and the domains of the URLs ---<br><br><br>" . $includedFilestw; |
|
| 943 |
- $ismmstw = 1; |
|
| 944 |
- |
|
| 945 |
- } else {
|
|
| 946 |
- $messagetexttw = $_POST['Body']; |
|
| 947 |
- $ismmstw = 0; |
|
| 948 |
- } |
|
| 949 |
- |
|
| 950 |
- $recmessagearr = [$messageid, $messagedate, $messagefrom, $messageto, $messagetexttw]; |
|
| 951 |
- |
|
| 952 |
- $this->service->insertrecsms($ncuserfortwil, $recmessagearr); |
|
| 953 |
- |
|
| 954 |
- |
|
| 955 |
- // Check if there is any auto-reply configured for the receiving number |
|
| 956 |
- $twilgetarpl = $this->connection->prepare('SELECT `phone_number`, `days_of_week`, `daily_start`, `daily_end`, `vacation_start`, `vacation_end`, `message_text` FROM
|
|
| 957 |
- `*PREFIX*sms_relent_autorply` WHERE `phone_number` = ?'); |
|
| 958 |
- $twilgetarplres = $twilgetarpl->execute([$messagetotwls]); |
|
| 959 |
- $twilarpldata = $twilgetarplres->fetch(); |
|
| 960 |
- $twilgetarplres->closeCursor(); |
|
| 961 |
- |
|
| 962 |
- if ($twilarpldata) {
|
|
| 963 |
- |
|
| 964 |
- $autoreplytext = $twilarpldata['message_text']; |
|
| 965 |
- |
|
| 966 |
- // Get the Display Name of the current user |
|
| 967 |
- $crtuser = $this->userManager->get($ncuserfortwil); |
|
| 968 |
- $displaynm = $crtuser->getDisplayName(); |
|
| 969 |
- |
|
| 970 |
- // Check if the auto-reply is in 'daily mode' |
|
| 971 |
- if ($twilarpldata['days_of_week']) {
|
|
| 972 |
- |
|
| 973 |
- // Check if the auto-reply should be sent |
|
| 974 |
- $daysofweekarrinit = explode(",", $twilarpldata['days_of_week']);
|
|
| 975 |
- |
|
| 976 |
- $daysofweekarr = []; |
|
| 977 |
- $fulldays = []; |
|
| 978 |
- foreach ($daysofweekarrinit as $crtday) {
|
|
| 979 |
- if (strpos($crtday, "full") !== false) {
|
|
| 980 |
- $fulldays[] = str_replace("(full)", "", $crtday);
|
|
| 981 |
- } else {
|
|
| 982 |
- $daysofweekarr[] = $crtday; |
|
| 983 |
- } |
|
| 984 |
- } |
|
| 985 |
- |
|
| 986 |
- $dailystart = $twilarpldata['daily_start']; |
|
| 987 |
- $dailyend = $twilarpldata['daily_end']; |
|
| 988 |
- |
|
| 989 |
- $crntdate = date("Y-m-d");
|
|
| 990 |
- $crntDayNumber = date('N', strtotime($crntdate));
|
|
| 991 |
- |
|
| 992 |
- if (in_array($crntDayNumber, $daysofweekarr)) {
|
|
| 993 |
- |
|
| 994 |
- $crntimehrmin = date("H:i");
|
|
| 995 |
- $crntdatefmt = new DateTime($crntimehrmin); |
|
| 996 |
- $startdatefmt = new DateTime($dailystart); |
|
| 997 |
- $enddatefmt = new DateTime($dailyend); |
|
| 998 |
- |
|
| 999 |
- if ($crntdatefmt >= $startdatefmt && $enddatefmt > $crntdatefmt) {
|
|
| 1000 |
- // OK |
|
| 1001 |
- } else {
|
|
| 1002 |
- |
|
| 1003 |
- $datatoposttw = [["To" => $messagefrom, "From" => $messagetoprtw, "Body" => $autoreplytext, "StatusCallback" => $apidelrecurltw]]; |
|
| 1004 |
- |
|
| 1005 |
- $postedsendingfl = implode('&', array_map('http_build_query', $datatoposttw));
|
|
| 1006 |
- $messagedatetw = date("Y-m-d H:i:s");
|
|
| 1007 |
- |
|
| 1008 |
- $chtw = curl_init(); |
|
| 1009 |
- curl_setopt($chtw, CURLOPT_URL, 'https://api.twilio.com/2010-04-01/Accounts/' . $apikeyTw . '/Messages.json'); |
|
| 1010 |
- curl_setopt($chtw, CURLOPT_TIMEOUT, 300); |
|
| 1011 |
- curl_setopt($chtw, CURLOPT_RETURNTRANSFER, 1); |
|
| 1012 |
- curl_setopt($chtw, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); |
|
| 1013 |
- curl_setopt($chtw, CURLOPT_USERPWD, "$apikeyTw:$authTokenTw"); |
|
| 1014 |
- curl_setopt($chtw, CURLOPT_POST, 1); |
|
| 1015 |
- curl_setopt($chtw, CURLOPT_POSTFIELDS, $postedsendingfl); |
|
| 1016 |
- |
|
| 1017 |
- $resulttw = curl_exec ($chtw); |
|
| 1018 |
- $statusCodetw = curl_getinfo($chtw, CURLINFO_HTTP_CODE); |
|
| 1019 |
- curl_close ($chtw); |
|
| 1020 |
- |
|
| 1021 |
- $decresulttw = json_decode($resulttw); |
|
| 1022 |
- |
|
| 1023 |
- if ($resulttw) {
|
|
| 1024 |
- if (property_exists($decresulttw, 'sid')) {
|
|
| 1025 |
- $messageidtw = $decresulttw->sid; |
|
| 1026 |
- } else { $messageidtw = $this->createMessageId(); }
|
|
| 1027 |
- } else { $messageidtw = $this->createMessageId(); }
|
|
| 1028 |
- |
|
| 1029 |
- if (in_array($statusCodetw, [200, 201, 202, 203, 204, 205, 206])) {
|
|
| 1030 |
- $messagestatustw = 'The message has been accepted for delivery.'; |
|
| 1031 |
- } else {
|
|
| 1032 |
- $messagestatustw = 'An error occurred while trying to send the message.'; |
|
| 1033 |
- } |
|
| 1034 |
- |
|
| 1035 |
- $messagenetworktw = ''; |
|
| 1036 |
- $messagepricetw = ''; |
|
| 1037 |
- $messagedeliverytw = ''; |
|
| 1038 |
- |
|
| 1039 |
- $sentmessagearr = [$messageidtw, $messagedatetw, $messageto, $messagefrom, $messagenetworktw, $messagepricetw, $messagestatustw, $messagedeliverytw, $autoreplytext]; |
|
| 1040 |
- |
|
| 1041 |
- $this->service->insertsentsms($ncuserfortwil, $displaynm, $sentmessagearr); |
|
| 1042 |
- } |
|
| 1043 |
- } |
|
| 1044 |
- |
|
| 1045 |
- if (in_array($crntDayNumber, $fulldays)) {
|
|
| 1046 |
- |
|
| 1047 |
- $datatoposttw = [["To" => $messagefrom, "From" => $messagetoprtw, "Body" => $autoreplytext, "StatusCallback" => $apidelrecurltw]]; |
|
| 1048 |
- |
|
| 1049 |
- $postedsendingfl = implode('&', array_map('http_build_query', $datatoposttw));
|
|
| 1050 |
- $messagedatetw = date("Y-m-d H:i:s");
|
|
| 1051 |
- |
|
| 1052 |
- $chtw = curl_init(); |
|
| 1053 |
- curl_setopt($chtw, CURLOPT_URL, 'https://api.twilio.com/2010-04-01/Accounts/' . $apikeyTw . '/Messages.json'); |
|
| 1054 |
- curl_setopt($chtw, CURLOPT_TIMEOUT, 300); |
|
| 1055 |
- curl_setopt($chtw, CURLOPT_RETURNTRANSFER, 1); |
|
| 1056 |
- curl_setopt($chtw, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); |
|
| 1057 |
- curl_setopt($chtw, CURLOPT_USERPWD, "$apikeyTw:$authTokenTw"); |
|
| 1058 |
- curl_setopt($chtw, CURLOPT_POST, 1); |
|
| 1059 |
- curl_setopt($chtw, CURLOPT_POSTFIELDS, $postedsendingfl); |
|
| 1060 |
- |
|
| 1061 |
- $resulttw = curl_exec ($chtw); |
|
| 1062 |
- $statusCodetw = curl_getinfo($chtw, CURLINFO_HTTP_CODE); |
|
| 1063 |
- curl_close ($chtw); |
|
| 1064 |
- |
|
| 1065 |
- $decresulttw = json_decode($resulttw); |
|
| 1066 |
- |
|
| 1067 |
- if ($resulttw) {
|
|
| 1068 |
- if (property_exists($decresulttw, 'sid')) {
|
|
| 1069 |
- $messageidtw = $decresulttw->sid; |
|
| 1070 |
- } else { $messageidtw = $this->createMessageId(); }
|
|
| 1071 |
- } else { $messageidtw = $this->createMessageId(); }
|
|
| 1072 |
- |
|
| 1073 |
- if (in_array($statusCodetw, [200, 201, 202, 203, 204, 205, 206])) {
|
|
| 1074 |
- $messagestatustw = 'The message has been accepted for delivery.'; |
|
| 1075 |
- } else {
|
|
| 1076 |
- $messagestatustw = 'An error occurred while trying to send the message.'; |
|
| 1077 |
- } |
|
| 1078 |
- |
|
| 1079 |
- $messagenetworktw = ''; |
|
| 1080 |
- $messagepricetw = ''; |
|
| 1081 |
- $messagedeliverytw = ''; |
|
| 1082 |
- |
|
| 1083 |
- $sentmessagearr = [$messageidtw, $messagedatetw, $messageto, $messagefrom, $messagenetworktw, $messagepricetw, $messagestatustw, $messagedeliverytw, $autoreplytext]; |
|
| 1084 |
- |
|
| 1085 |
- $this->service->insertsentsms($ncuserfortwil, $displaynm, $sentmessagearr); |
|
| 1086 |
- } |
|
| 1087 |
- |
|
| 1088 |
- } elseif ($twilarpldata['vacation_start'] && $twilarpldata['vacation_end']) {
|
|
| 1089 |
- |
|
| 1090 |
- $vacationstart = $twilarpldata['vacation_start']; |
|
| 1091 |
- $vacationend = $twilarpldata['vacation_end']; |
|
| 1092 |
- |
|
| 1093 |
- $crntimeymd = date("Y-m-d H:i:s");
|
|
| 1094 |
- $crntdatevcfmt = new DateTime($crntimeymd); |
|
| 1095 |
- $startdatevcfmt = new DateTime($vacationstart); |
|
| 1096 |
- $enddatefvcmt = new DateTime($vacationend); |
|
| 1097 |
- |
|
| 1098 |
- if ($startdatevcfmt <= $crntdatevcfmt && $crntdatevcfmt <= $enddatefvcmt) {
|
|
| 1099 |
- |
|
| 1100 |
- $datatoposttw = [["To" => $messagefrom, "From" => $messagetoprtw, "Body" => $autoreplytext, "StatusCallback" => $apidelrecurltw]]; |
|
| 1101 |
- |
|
| 1102 |
- $postedsendingfl = implode('&', array_map('http_build_query', $datatoposttw));
|
|
| 1103 |
- $messagedatetw = date("Y-m-d H:i:s");
|
|
| 1104 |
- |
|
| 1105 |
- $chtw = curl_init(); |
|
| 1106 |
- curl_setopt($chtw, CURLOPT_URL, 'https://api.twilio.com/2010-04-01/Accounts/' . $apikeyTw . '/Messages.json'); |
|
| 1107 |
- curl_setopt($chtw, CURLOPT_TIMEOUT, 300); |
|
| 1108 |
- curl_setopt($chtw, CURLOPT_RETURNTRANSFER, 1); |
|
| 1109 |
- curl_setopt($chtw, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); |
|
| 1110 |
- curl_setopt($chtw, CURLOPT_USERPWD, "$apikeyTw:$authTokenTw"); |
|
| 1111 |
- curl_setopt($chtw, CURLOPT_POST, 1); |
|
| 1112 |
- curl_setopt($chtw, CURLOPT_POSTFIELDS, $postedsendingfl); |
|
| 1113 |
- |
|
| 1114 |
- $resulttw = curl_exec ($chtw); |
|
| 1115 |
- $statusCodetw = curl_getinfo($chtw, CURLINFO_HTTP_CODE); |
|
| 1116 |
- curl_close ($chtw); |
|
| 1117 |
- |
|
| 1118 |
- $decresulttw = json_decode($resulttw); |
|
| 1119 |
- |
|
| 1120 |
- if ($resulttw) {
|
|
| 1121 |
- if (property_exists($decresulttw, 'sid')) {
|
|
| 1122 |
- $messageidtw = $decresulttw->sid; |
|
| 1123 |
- } else { $messageidtw = $this->createMessageId(); }
|
|
| 1124 |
- } else { $messageidtw = $this->createMessageId(); }
|
|
| 1125 |
- |
|
| 1126 |
- if (in_array($statusCodetw, [200, 201, 202, 203, 204, 205, 206])) {
|
|
| 1127 |
- $messagestatustw = 'The message has been accepted for delivery.'; |
|
| 1128 |
- } else {
|
|
| 1129 |
- $messagestatustw = 'An error occurred while trying to send the message.'; |
|
| 1130 |
- } |
|
| 1131 |
- |
|
| 1132 |
- $messagenetworktw = ''; |
|
| 1133 |
- $messagepricetw = ''; |
|
| 1134 |
- $messagedeliverytw = ''; |
|
| 1135 |
- |
|
| 1136 |
- $sentmessagearr = [$messageidtw, $messagedatetw, $messageto, $messagefrom, $messagenetworktw, $messagepricetw, $messagestatustw, $messagedeliverytw, $autoreplytext]; |
|
| 1137 |
- |
|
| 1138 |
- $this->service->insertsentsms($ncuserfortwil, $displaynm, $sentmessagearr); |
|
| 1139 |
- } |
|
| 1140 |
- |
|
| 1141 |
- } |
|
| 1142 |
- } |
|
| 1143 |
- |
|
| 1144 |
- |
|
| 1145 |
- // Send notifications |
|
| 1146 |
- $nameofhost = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST']; |
|
| 1147 |
- |
|
| 1148 |
- $twilnotify = $smsapicred[12]; |
|
| 1149 |
- $emailaddress = $smsapicred[13]; |
|
| 1150 |
- $includemessageinemail = $smsapicred[14]; |
|
| 1151 |
- |
|
| 1152 |
- if ($ismmstw == 0) { $smsormmstw = "SMS"; } else { $smsormmstw = "MMS"; }
|
|
| 1153 |
- |
|
| 1154 |
- // Send the Nextcloud notification(s) |
|
| 1155 |
- if ($twilnotify != 0 ) {
|
|
| 1156 |
- |
|
| 1157 |
- $allalloweduserstw = $this->service->getallowedusers($ncuserfortwil); |
|
| 1158 |
- |
|
| 1159 |
- foreach ($allalloweduserstw as $alusrkeytw => $specusrnametw) {
|
|
| 1160 |
- |
|
| 1161 |
- $notificationtw = $this->manager->createNotification(); |
|
| 1162 |
- $notificationtw->setApp('sms_relentless')
|
|
| 1163 |
- ->setUser($specusrnametw) |
|
| 1164 |
- ->setDateTime(new \DateTime()) |
|
| 1165 |
- ->setObject('sms_relentless', '11')
|
|
| 1166 |
- ->setSubject('New SMS Message');
|
|
| 1167 |
- $this->manager->notify($notificationtw); |
|
| 1168 |
- } |
|
| 1169 |
- } |
|
| 1170 |
- |
|
| 1171 |
- // Send the email notification |
|
| 1172 |
- if ($emailaddress != '') {
|
|
| 1173 |
- |
|
| 1174 |
- $gmtind = "UTC " . date('P');
|
|
| 1175 |
- $smsdateinit = date("Y-m-d H:i:s");
|
|
| 1176 |
- $smsdate = $smsdateinit . " " . $gmtind; |
|
| 1177 |
- |
|
| 1178 |
- $subject = "New ". $smsormmstw ." message received"; |
|
| 1179 |
- |
|
| 1180 |
- $messagetextnltw = str_replace("\n", "<br>", $messagetexttw);
|
|
| 1181 |
- |
|
| 1182 |
- if ($includemessageinemail == 0) {
|
|
| 1183 |
- $message = "Hello, <br><br> You have received a new message on ".$smsdate." .<br> You can check the new message by going to 'SMS Relentless' > 'Received SMS Messages'. <br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>"; |
|
| 1184 |
- } else {
|
|
| 1185 |
- $message = "Hello, <br><br> You have received a new message on ".$smsdate." :<br><br><br> Message ID: ".$messageid." <br> Message Date: ".$messagedate." <br> From: ".$messagefrom." <br> To: ".$messageto."<br> Message Text: <br><br><b>".$messagetextnltw."</b><br><br>____________<br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>"; |
|
| 1186 |
- } |
|
| 1187 |
- |
|
| 1188 |
- $messagefin = chunk_split(base64_encode($message)); |
|
| 1189 |
- |
|
| 1190 |
- $headers = "MIME-Version: 1.0" . "\r\n"; |
|
| 1191 |
- $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n"; |
|
| 1192 |
- $headers .= "Content-Transfer-Encoding: base64" . "\r\n"; |
|
| 1193 |
- |
|
| 1194 |
- // Set the email sender |
|
| 1195 |
- $headers .= "From: " . $emailaddress . "\r\n"; |
|
| 1196 |
- $headers .= "Reply-To: " . $emailaddress . "\r\n"; |
|
| 1197 |
- |
|
| 1198 |
- mail($emailaddress, $subject, $messagefin, $headers); |
|
| 1199 |
- } |
|
| 1200 |
- |
|
| 1201 |
- exit(); |
|
| 1202 |
- |
|
| 1203 |
- } else { exit(); }
|
|
| 1204 |
- |
|
| 1205 |
- } else { exit(); }
|
|
| 1206 |
- |
|
| 1207 |
- } |
|
| 1208 |
- |
|
| 1209 |
- |
|
| 1210 |
- /** |
|
| 1211 |
- * @NoAdminRequired |
|
| 1212 |
- * @NoCSRFRequired |
|
| 1213 |
- * @PublicPage |
|
| 1214 |
- */ |
|
| 1215 |
- public function receivesmsflow() {
|
|
| 1216 |
- |
|
| 1217 |
- $flowdrurl = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; |
|
| 1218 |
- |
|
| 1219 |
- $receivesms = file_get_contents('php://input');
|
|
| 1220 |
- $recsmsarr = json_decode($receivesms, true); |
|
| 1221 |
- |
|
| 1222 |
- $ncuserforflowrec = $this->service->getuserbyflowrecwhurl($flowdrurl); |
|
| 1223 |
- |
|
| 1224 |
- if ($ncuserforflowrec) {
|
|
| 1225 |
- |
|
| 1226 |
- if ($recsmsarr) {
|
|
| 1227 |
- if (isset($recsmsarr['data']['id'])) {
|
|
| 1228 |
- $messageidfl = $recsmsarr['data']['id']; |
|
| 1229 |
- } else { $messageidfl = $this->createMessageId(); }
|
|
| 1230 |
- } else { $messageidfl = $this->createMessageId(); }
|
|
| 1231 |
- |
|
| 1232 |
- $messagedatefl = date("Y-m-d H:i:s");
|
|
| 1233 |
- |
|
| 1234 |
- $messagefromflpre = $recsmsarr['data']['attributes']['from']; |
|
| 1235 |
- if (substr($messagefromflpre, 0, 1) == '+') { $messagefromfl = $messagefromflpre; } else { $messagefromfl = '+' . $messagefromflpre; }
|
|
| 1236 |
- |
|
| 1237 |
- $messagetofl = "Flowroute: +" . $recsmsarr['data']['attributes']['to']; |
|
| 1238 |
- $messagetoprsl = "+" . $recsmsarr['data']['attributes']['to']; |
|
| 1239 |
- $messagetoprfl = "Fl: +" . $recsmsarr['data']['attributes']['to']; |
|
| 1240 |
- |
|
| 1241 |
- // Check if the message is a MMS |
|
| 1242 |
- if ($recsmsarr['data']['attributes']['is_mms'] == true) {
|
|
| 1243 |
- |
|
| 1244 |
- $includedFilesfl = ''; |
|
| 1245 |
- for ($k = 0; $k < count($recsmsarr['included']); $k++) {
|
|
| 1246 |
- $includedFilesfl .= $recsmsarr['included'][$k]['attributes']['url'] . "<br><br>"; |
|
| 1247 |
- } |
|
| 1248 |
- $messagetextfl = $recsmsarr['data']['attributes']['body'] . "<br><br><br></b>--- The files included in the MMS follow. Download them only if you trust the sender and the domains of the URLs ---<br><br><br>" . $includedFilesfl; |
|
| 1249 |
- $ismmsfl = 1; |
|
| 1250 |
- } else {
|
|
| 1251 |
- $messagetextfl = $recsmsarr['data']['attributes']['body']; |
|
| 1252 |
- $ismmsfl = 0; |
|
| 1253 |
- } |
|
| 1254 |
- |
|
| 1255 |
- $recmessagearr = [$messageidfl, $messagedatefl, $messagefromfl, $messagetofl, $messagetextfl]; |
|
| 1256 |
- |
|
| 1257 |
- $this->service->insertrecsms($ncuserforflowrec, $recmessagearr); |
|
| 1258 |
- |
|
| 1259 |
- $flsmsapicred = $this->service->getapicredentials($ncuserforflowrec, 'flowroute'); |
|
| 1260 |
- $flownotify = $flsmsapicred[12]; |
|
| 1261 |
- $emailaddress = $flsmsapicred[13]; |
|
| 1262 |
- $includemessageinemail = $flsmsapicred[14]; |
|
| 1263 |
- $flowapikey = $flsmsapicred[20]; |
|
| 1264 |
- $flowapisecret = $flsmsapicred[21]; |
|
| 1265 |
- $flowdelrecurl = $flsmsapicred[23]; |
|
| 1266 |
- |
|
| 1267 |
- |
|
| 1268 |
- // Check if there is any auto-reply configured for the receiving number |
|
| 1269 |
- $flgetarpl = $this->connection->prepare('SELECT `phone_number`, `days_of_week`, `daily_start`, `daily_end`, `vacation_start`, `vacation_end`, `message_text` FROM
|
|
| 1270 |
- `*PREFIX*sms_relent_autorply` WHERE `phone_number` = ?'); |
|
| 1271 |
- $flgetarplres = $flgetarpl->execute([$messagetoprfl]); |
|
| 1272 |
- $flarpldata = $flgetarplres->fetch(); |
|
| 1273 |
- $flgetarplres->closeCursor(); |
|
| 1274 |
- |
|
| 1275 |
- if ($flarpldata) {
|
|
| 1276 |
- |
|
| 1277 |
- $autoreplytext = $flarpldata['message_text']; |
|
| 1278 |
- |
|
| 1279 |
- // Get the Display Name of the current user |
|
| 1280 |
- $crtuser = $this->userManager->get($ncuserforflowrec); |
|
| 1281 |
- $displaynm = $crtuser->getDisplayName(); |
|
| 1282 |
- |
|
| 1283 |
- // Check if the auto-reply is in 'daily mode' |
|
| 1284 |
- if ($flarpldata['days_of_week']) {
|
|
| 1285 |
- |
|
| 1286 |
- // Check if the auto-reply should be sent |
|
| 1287 |
- $daysofweekarrinit = explode(",", $flarpldata['days_of_week']);
|
|
| 1288 |
- |
|
| 1289 |
- $daysofweekarr = []; |
|
| 1290 |
- $fulldays = []; |
|
| 1291 |
- foreach ($daysofweekarrinit as $crtday) {
|
|
| 1292 |
- if (strpos($crtday, "full") !== false) {
|
|
| 1293 |
- $fulldays[] = str_replace("(full)", "", $crtday);
|
|
| 1294 |
- } else {
|
|
| 1295 |
- $daysofweekarr[] = $crtday; |
|
| 1296 |
- } |
|
| 1297 |
- } |
|
| 1298 |
- |
|
| 1299 |
- $dailystart = $flarpldata['daily_start']; |
|
| 1300 |
- $dailyend = $flarpldata['daily_end']; |
|
| 1301 |
- |
|
| 1302 |
- $crntdate = date("Y-m-d");
|
|
| 1303 |
- $crntDayNumber = date('N', strtotime($crntdate));
|
|
| 1304 |
- |
|
| 1305 |
- if (in_array($crntDayNumber, $daysofweekarr)) {
|
|
| 1306 |
- |
|
| 1307 |
- $crntimehrmin = date("H:i");
|
|
| 1308 |
- $crntdatefmt = new DateTime($crntimehrmin); |
|
| 1309 |
- $startdatefmt = new DateTime($dailystart); |
|
| 1310 |
- $enddatefmt = new DateTime($dailyend); |
|
| 1311 |
- |
|
| 1312 |
- if ($crntdatefmt >= $startdatefmt && $enddatefmt > $crntdatefmt) {
|
|
| 1313 |
- // OK |
|
| 1314 |
- } else {
|
|
| 1315 |
- |
|
| 1316 |
- // Send the auto-reply |
|
| 1317 |
- $postedparamsfl = json_encode(["to" => $messagefromfl, "from" => $messagetoprsl, "body" => $autoreplytext, "dlr_callback" => $flowdelrecurl]); |
|
| 1318 |
- $messagedatefl = date("Y-m-d H:i:s");
|
|
| 1319 |
- |
|
| 1320 |
- $chfl = curl_init(); |
|
| 1321 |
- curl_setopt($chfl, CURLOPT_URL, 'https://' . $flowapikey . ':' . $flowapisecret . '@api.flowroute.com/v2.1/messages'); |
|
| 1322 |
- curl_setopt($chfl, CURLOPT_HTTPHEADER, array("Content-Type: application/vnd.api+json"));
|
|
| 1323 |
- curl_setopt($chfl, CURLOPT_TIMEOUT, 300); |
|
| 1324 |
- curl_setopt($chfl, CURLOPT_RETURNTRANSFER, 1); |
|
| 1325 |
- curl_setopt($chfl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); |
|
| 1326 |
- curl_setopt($chfl, CURLOPT_POST, 1); |
|
| 1327 |
- curl_setopt($chfl, CURLOPT_POSTFIELDS, $postedparamsfl); |
|
| 1328 |
- $resultfl = curl_exec ($chfl); |
|
| 1329 |
- $statusCode = curl_getinfo($chfl, CURLINFO_HTTP_CODE); |
|
| 1330 |
- curl_close ($chfl); |
|
| 1331 |
- |
|
| 1332 |
- $decresultfl = json_decode($resultfl); |
|
| 1333 |
- |
|
| 1334 |
- if ($resultfl) {
|
|
| 1335 |
- if (isset($decresultfl->data->id)) {
|
|
| 1336 |
- $messageidfl = $decresultfl->data->id; |
|
| 1337 |
- } else { $messageidfl = $this->createMessageId(); }
|
|
| 1338 |
- } else { $messageidfl = $this->createMessageId(); }
|
|
| 1339 |
- |
|
| 1340 |
- if (in_array($statusCode, [200, 201, 202, 203, 204, 205, 206])) {
|
|
| 1341 |
- $messagestatusfl = 'The message has been accepted for delivery.'; |
|
| 1342 |
- } else {
|
|
| 1343 |
- $messagestatusfl = 'An error occurred while trying to send the message.'; |
|
| 1344 |
- } |
|
| 1345 |
- |
|
| 1346 |
- $messagefromflow = "Flowroute: " . $messagetoprsl; |
|
| 1347 |
- $messagetoflow = $messagefromfl; |
|
| 1348 |
- $messagenetworkfl = ''; |
|
| 1349 |
- $messagepricefl = ''; |
|
| 1350 |
- $messagedeliveryfl = ''; |
|
| 1351 |
- |
|
| 1352 |
- $sentmessagearr = [$messageidfl, $messagedatefl, $messagefromflow, $messagetoflow, $messagenetworkfl, $messagepricefl, $messagestatusfl, $messagedeliveryfl, $autoreplytext]; |
|
| 1353 |
- |
|
| 1354 |
- $this->service->insertsentsms($ncuserforflowrec, $displaynm, $sentmessagearr); |
|
| 1355 |
- } |
|
| 1356 |
- } |
|
| 1357 |
- |
|
| 1358 |
- if (in_array($crntDayNumber, $fulldays)) {
|
|
| 1359 |
- |
|
| 1360 |
- // Send the auto-reply |
|
| 1361 |
- $postedparamsfl = json_encode(["to" => $messagefromfl, "from" => $messagetoprsl, "body" => $autoreplytext, "dlr_callback" => $flowdelrecurl]); |
|
| 1362 |
- $messagedatefl = date("Y-m-d H:i:s");
|
|
| 1363 |
- |
|
| 1364 |
- $chfl = curl_init(); |
|
| 1365 |
- curl_setopt($chfl, CURLOPT_URL, 'https://' . $flowapikey . ':' . $flowapisecret . '@api.flowroute.com/v2.1/messages'); |
|
| 1366 |
- curl_setopt($chfl, CURLOPT_HTTPHEADER, array("Content-Type: application/vnd.api+json"));
|
|
| 1367 |
- curl_setopt($chfl, CURLOPT_TIMEOUT, 300); |
|
| 1368 |
- curl_setopt($chfl, CURLOPT_RETURNTRANSFER, 1); |
|
| 1369 |
- curl_setopt($chfl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); |
|
| 1370 |
- curl_setopt($chfl, CURLOPT_POST, 1); |
|
| 1371 |
- curl_setopt($chfl, CURLOPT_POSTFIELDS, $postedparamsfl); |
|
| 1372 |
- $resultfl = curl_exec ($chfl); |
|
| 1373 |
- $statusCode = curl_getinfo($chfl, CURLINFO_HTTP_CODE); |
|
| 1374 |
- curl_close ($chfl); |
|
| 1375 |
- |
|
| 1376 |
- $decresultfl = json_decode($resultfl); |
|
| 1377 |
- |
|
| 1378 |
- if ($resultfl) {
|
|
| 1379 |
- if (isset($decresultfl->data->id)) {
|
|
| 1380 |
- $messageidfl = $decresultfl->data->id; |
|
| 1381 |
- } else { $messageidfl = $this->createMessageId(); }
|
|
| 1382 |
- } else { $messageidfl = $this->createMessageId(); }
|
|
| 1383 |
- |
|
| 1384 |
- if (in_array($statusCode, [200, 201, 202, 203, 204, 205, 206])) {
|
|
| 1385 |
- $messagestatusfl = 'The message has been accepted for delivery.'; |
|
| 1386 |
- } else {
|
|
| 1387 |
- $messagestatusfl = 'An error occurred while trying to send the message.'; |
|
| 1388 |
- } |
|
| 1389 |
- |
|
| 1390 |
- $messagefromflow = "Flowroute: " . $messagetoprsl; |
|
| 1391 |
- $messagetoflow = $messagefromfl; |
|
| 1392 |
- $messagenetworkfl = ''; |
|
| 1393 |
- $messagepricefl = ''; |
|
| 1394 |
- $messagedeliveryfl = ''; |
|
| 1395 |
- |
|
| 1396 |
- $sentmessagearr = [$messageidfl, $messagedatefl, $messagefromflow, $messagetoflow, $messagenetworkfl, $messagepricefl, $messagestatusfl, $messagedeliveryfl, $autoreplytext]; |
|
| 1397 |
- |
|
| 1398 |
- $this->service->insertsentsms($ncuserforflowrec, $displaynm, $sentmessagearr); |
|
| 1399 |
- } |
|
| 1400 |
- |
|
| 1401 |
- } elseif ($flarpldata['vacation_start'] && $flarpldata['vacation_end']) {
|
|
| 1402 |
- |
|
| 1403 |
- $vacationstart = $flarpldata['vacation_start']; |
|
| 1404 |
- $vacationend = $flarpldata['vacation_end']; |
|
| 1405 |
- |
|
| 1406 |
- $crntimeymd = date("Y-m-d H:i:s");
|
|
| 1407 |
- $crntdatevcfmt = new DateTime($crntimeymd); |
|
| 1408 |
- $startdatevcfmt = new DateTime($vacationstart); |
|
| 1409 |
- $enddatefvcmt = new DateTime($vacationend); |
|
| 1410 |
- |
|
| 1411 |
- if ($startdatevcfmt <= $crntdatevcfmt && $crntdatevcfmt <= $enddatefvcmt) {
|
|
| 1412 |
- |
|
| 1413 |
- $postedparamsfl = json_encode(["to" => $messagefromfl, "from" => $messagetoprsl, "body" => $autoreplytext, "dlr_callback" => $flowdelrecurl]); |
|
| 1414 |
- $messagedatefl = date("Y-m-d H:i:s");
|
|
| 1415 |
- |
|
| 1416 |
- $chfl = curl_init(); |
|
| 1417 |
- curl_setopt($chfl, CURLOPT_URL, 'https://' . $flowapikey . ':' . $flowapisecret . '@api.flowroute.com/v2.1/messages'); |
|
| 1418 |
- curl_setopt($chfl, CURLOPT_HTTPHEADER, array("Content-Type: application/vnd.api+json"));
|
|
| 1419 |
- curl_setopt($chfl, CURLOPT_TIMEOUT, 300); |
|
| 1420 |
- curl_setopt($chfl, CURLOPT_RETURNTRANSFER, 1); |
|
| 1421 |
- curl_setopt($chfl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); |
|
| 1422 |
- curl_setopt($chfl, CURLOPT_POST, 1); |
|
| 1423 |
- curl_setopt($chfl, CURLOPT_POSTFIELDS, $postedparamsfl); |
|
| 1424 |
- $resultfl = curl_exec ($chfl); |
|
| 1425 |
- $statusCode = curl_getinfo($chfl, CURLINFO_HTTP_CODE); |
|
| 1426 |
- curl_close ($chfl); |
|
| 1427 |
- |
|
| 1428 |
- $decresultfl = json_decode($resultfl); |
|
| 1429 |
- |
|
| 1430 |
- if ($resultfl) {
|
|
| 1431 |
- if (isset($decresultfl->data->id)) {
|
|
| 1432 |
- $messageidfl = $decresultfl->data->id; |
|
| 1433 |
- } else { $messageidfl = $this->createMessageId(); }
|
|
| 1434 |
- } else { $messageidfl = $this->createMessageId(); }
|
|
| 1435 |
- |
|
| 1436 |
- if (in_array($statusCode, [200, 201, 202, 203, 204, 205, 206])) {
|
|
| 1437 |
- $messagestatusfl = 'The message has been accepted for delivery.'; |
|
| 1438 |
- } else {
|
|
| 1439 |
- $messagestatusfl = 'An error occurred while trying to send the message.'; |
|
| 1440 |
- } |
|
| 1441 |
- |
|
| 1442 |
- $messagefromflow = "Flowroute: " . $messagetoprsl; |
|
| 1443 |
- $messagetoflow = $messagefromfl; |
|
| 1444 |
- $messagenetworkfl = ''; |
|
| 1445 |
- $messagepricefl = ''; |
|
| 1446 |
- $messagedeliveryfl = ''; |
|
| 1447 |
- |
|
| 1448 |
- $sentmessagearr = [$messageidfl, $messagedatefl, $messagefromflow, $messagetoflow, $messagenetworkfl, $messagepricefl, $messagestatusfl, $messagedeliveryfl, $autoreplytext]; |
|
| 1449 |
- |
|
| 1450 |
- $this->service->insertsentsms($ncuserforflowrec, $displaynm, $sentmessagearr); |
|
| 1451 |
- } |
|
| 1452 |
- |
|
| 1453 |
- } |
|
| 1454 |
- } |
|
| 1455 |
- |
|
| 1456 |
- |
|
| 1457 |
- // Send notifications |
|
| 1458 |
- $nameofhost = $_SERVER['REQUEST_SCHEME'] . "://" . $_SERVER['HTTP_HOST']; |
|
| 1459 |
- |
|
| 1460 |
- if ($ismmsfl == 0) { $smsormmsfl = "SMS"; } else { $smsormmsfl = "MMS"; }
|
|
| 1461 |
- |
|
| 1462 |
- // Send the Nextcloud notification(s) |
|
| 1463 |
- if ($flownotify != 0 ) {
|
|
| 1464 |
- |
|
| 1465 |
- $allallowedusersfl = $this->service->getallowedusers($ncuserforflowrec); |
|
| 1466 |
- |
|
| 1467 |
- foreach ($allallowedusersfl as $alusrkeyfl => $specusrnamefl) {
|
|
| 1468 |
- |
|
| 1469 |
- $notificationfl = $this->manager->createNotification(); |
|
| 1470 |
- $notificationfl->setApp('sms_relentless')
|
|
| 1471 |
- ->setUser($specusrnamefl) |
|
| 1472 |
- ->setDateTime(new \DateTime()) |
|
| 1473 |
- ->setObject('sms_relentless', '11')
|
|
| 1474 |
- ->setSubject('New SMS Message');
|
|
| 1475 |
- $this->manager->notify($notificationfl); |
|
| 1476 |
- } |
|
| 1477 |
- } |
|
| 1478 |
- |
|
| 1479 |
- // Send the email notification |
|
| 1480 |
- if ($emailaddress != '') {
|
|
| 1481 |
- |
|
| 1482 |
- $gmtind = "UTC " . date('P');
|
|
| 1483 |
- $smsdateinit = date("Y-m-d H:i:s");
|
|
| 1484 |
- $smsdate = $smsdateinit . " " . $gmtind; |
|
| 1485 |
- |
|
| 1486 |
- $subject = "New ". $smsormmsfl ." message received"; |
|
| 1487 |
- |
|
| 1488 |
- $messagetextnlfl = str_replace("\n", "<br>", $messagetextfl);
|
|
| 1489 |
- |
|
| 1490 |
- if ($includemessageinemail == 0) {
|
|
| 1491 |
- $message = "Hello, <br><br> You have received a new message on ".$smsdate." .<br> You can check the new message by going to 'SMS Relentless' > 'Received SMS Messages'. <br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>"; |
|
| 1492 |
- } else {
|
|
| 1493 |
- $message = "Hello, <br><br> You have received a new message on ".$smsdate." :<br><br><br> Message ID: ".$messageidfl." <br> Message Date: ".$messagedatefl." <br> From: ".$messagefromfl." <br> To: ".$messagetofl."<br> Message Text: <br><br><b>".$messagetextnlfl."</b><br><br>____________<br><br> Yours, <br> SMS Relentless <br> An SMS application for Nextcloud <br> Host: '".$nameofhost."' <br>"; |
|
| 1494 |
- } |
|
| 1495 |
- |
|
| 1496 |
- $messagefin = chunk_split(base64_encode($message)); |
|
| 1497 |
- |
|
| 1498 |
- $headers = "MIME-Version: 1.0" . "\r\n"; |
|
| 1499 |
- $headers .= "Content-type: text/html; charset=UTF-8" . "\r\n"; |
|
| 1500 |
- $headers .= "Content-Transfer-Encoding: base64" . "\r\n"; |
|
| 1501 |
- |
|
| 1502 |
- // Set the email sender |
|
| 1503 |
- $headers .= "From: " . $emailaddress . "\r\n"; |
|
| 1504 |
- $headers .= "Reply-To: " . $emailaddress . "\r\n"; |
|
| 1505 |
- |
|
| 1506 |
- mail($emailaddress, $subject, $messagefin, $headers); |
|
| 1507 |
- } |
|
| 1508 |
- |
|
| 1509 |
- return http_response_code(200); |
|
| 1510 |
- |
|
| 1511 |
- } else { return "access denied"; }
|
|
| 1512 |
- |
|
| 1513 |
- } |
|
| 1514 |
-} |
| 1515 | 0 |
deleted file mode 100644 |
| ... | ... |
@@ -1,6144 +0,0 @@ |
| 1 |
-<?php |
|
| 2 |
-/** |
|
| 3 |
- * @copyright 2021 Double Bastion LLC <www.doublebastion.com> |
|
| 4 |
- * |
|
| 5 |
- * @author Double Bastion LLC |
|
| 6 |
- * |
|
| 7 |
- * @license GNU AGPL version 3 or any later version |
|
| 8 |
- * |
|
| 9 |
- * This program is free software; you can redistribute it and/or |
|
| 10 |
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE |
|
| 11 |
- * License as published by the Free Software Foundation; either |
|
| 12 |
- * version 3 of the License, or any later version. |
|
| 13 |
- * |
|
| 14 |
- * This program is distributed in the hope that it will be useful, |
|
| 15 |
- * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
| 16 |
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
| 17 |
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details. |
|
| 18 |
- * |
|
| 19 |
- * You should have received a copy of the GNU Affero General Public |
|
| 20 |
- * License along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
| 21 |
- * |
|
| 22 |
- */ |
|
| 23 |
- |
|
| 24 |
-declare(strict_types=1); |
|
| 25 |
- |
|
| 26 |
-namespace OCA\SMSRelentless\Service; |
|
| 27 |
- |
|
| 28 |
-use OCP\IDBConnection; |
|
| 29 |
-use OCP\Security\ICrypto; |
|
| 30 |
-use OCP\AppFramework\ApiController; |
|
| 31 |
-use OCP\AppFramework\Controller; |
|
| 32 |
-use OCP\IRequest; |
|
| 33 |
-use OCP\IGroupManager; |
|
| 34 |
-use \ReflectionClass; |
|
| 35 |
- |
|
| 36 |
-class SmsrelentlessService {
|
|
| 37 |
- |
|
| 38 |
- private $connection; |
|
| 39 |
- private $crypto; |
|
| 40 |
- private $groupManager; |
|
| 41 |
- |
|
| 42 |
- public function __construct(IDBConnection $connection, ICrypto $crypto, IGroupManager $groupManager) {
|
|
| 43 |
- |
|
| 44 |
- $this->connection = $connection; |
|
| 45 |
- $this->crypto = $crypto; |
|
| 46 |
- $this->groupManager = $groupManager; |
|
| 47 |
- } |
|
| 48 |
- |
|
| 49 |
- |
|
| 50 |
- /** |
|
| 51 |
- * @NoAdminRequired |
|
| 52 |
- * |
|
| 53 |
- */ |
|
| 54 |
- public function insertrecsms($userId, $recmessagearr) {
|
|
| 55 |
- |
|
| 56 |
- $authorDisplayNm = ''; |
|
| 57 |
- $internalSender = 0; |
|
| 58 |
- |
|
| 59 |
- // Search for the associated Display Name in the previous messages sent from the same phone number, in the 'sms_relent_sent' table |
|
| 60 |
- $recmsgfromprc = '%' . $recmessagearr[2]; |
|
| 61 |
- $getdspnmst = $this->connection->prepare('SELECT `from`, `author_displayname` FROM `*PREFIX*sms_relent_sent` WHERE `from` LIKE ?');
|
|
| 62 |
- $getdspnmstres = $getdspnmst->execute([$recmsgfromprc]); |
|
| 63 |
- |
|
| 64 |
- $dispnamearr = []; |
|
| 65 |
- while ($dspnmstfetched = $getdspnmstres->fetch()) {
|
|
| 66 |
- $dispnamearr[] = $dspnmstfetched['author_displayname']; |
|
| 67 |
- } |
|
| 68 |
- $getdspnmstres->closeCursor(); |
|
| 69 |
- |
|
| 70 |
- if ($dispnamearr) {
|
|
| 71 |
- $descdspnmarr = array_reverse($dispnamearr); |
|
| 72 |
- $authorDisplayNm = $descdspnmarr[0]; |
|
| 73 |
- $internalSender = 1; |
|
| 74 |
- } else { $authorDisplayNm = ''; $internalSender = 0; }
|
|
| 75 |
- |
|
| 76 |
- |
|
| 77 |
- if (!$authorDisplayNm) {
|
|
| 78 |
- |
|
| 79 |
- // Search for the associated Display Name in the previous messages coming from the same phone number, in the 'sms_relent_received' table |
|
| 80 |
- $getdspnm = $this->connection->prepare('SELECT `from`, `author_displayname` FROM `*PREFIX*sms_relent_received` WHERE `from` = ?');
|
|
| 81 |
- $getdspnmres = $getdspnm->execute([$recmessagearr[2]]); |
|
| 82 |
- |
|
| 83 |
- $dspnmearr = []; |
|
| 84 |
- while ($dspnmfetched = $getdspnmres->fetch()) {
|
|
| 85 |
- if ($dspnmfetched['author_displayname']) {
|
|
| 86 |
- $dspnmearr[] = $dspnmfetched['author_displayname']; |
|
| 87 |
- } |
|
| 88 |
- } |
|
| 89 |
- $getdspnmres->closeCursor(); |
|
| 90 |
- |
|
| 91 |
- if ($dspnmearr) {
|
|
| 92 |
- $descdisplaynmarr = array_reverse($dspnmearr); |
|
| 93 |
- $authorDisplayNm = $descdisplaynmarr[0]; |
|
| 94 |
- $internalSender = 0; |
|
| 95 |
- } else { $authorDisplayNm = ''; $internalSender = 0; }
|
|
| 96 |
- } |
|
| 97 |
- |
|
| 98 |
- // Search for the conversation ID in the 'sms_relent_conv' table |
|
| 99 |
- $convExists = 0; |
|
| 100 |
- $archivedConv = 0; |
|
| 101 |
- $tophnumberarr = explode(": ", $recmessagearr[3]);
|
|
| 102 |
- $tophnumber = $tophnumberarr[1]; |
|
| 103 |
- $getconvid = $this->connection->prepare('SELECT `conversation_id`, `archived`, `last_msg_from`, `last_msg_to` FROM `*PREFIX*sms_relent_conv` WHERE
|
|
| 104 |
- (`last_msg_from` = ? AND `last_msg_to` = ?) OR (`last_msg_from` = ? AND `last_msg_to` = ?)'); |
|
| 105 |
- $getconvres = $getconvid->execute([$recmessagearr[2], $tophnumber, $tophnumber, $recmessagearr[2]]); |
|
| 106 |
- $convfetched = $getconvres->fetch(); |
|
| 107 |
- $getconvres->closeCursor(); |
|
| 108 |
- |
|
| 109 |
- if ($convfetched) {
|
|
| 110 |
- $conversationId = $convfetched['conversation_id']; |
|
| 111 |
- $convExists = 1; |
|
| 112 |
- $archivedConv = $convfetched['archived']; |
|
| 113 |
- } else {
|
|
| 114 |
- // Create a conversation ID |
|
| 115 |
- $keypassin = substr(sha1((string) mt_rand()), 0, 32); |
|
| 116 |
- $keysaltin = openssl_random_pseudo_bytes(24); |
|
| 117 |
- $keyLengthin = 64; |
|
| 118 |
- $iterationin = 50; |
|
| 119 |
- $generated_keyin = openssl_pbkdf2($keypassin, $keysaltin, $keyLengthin, $iterationin, 'sha256'); |
|
| 120 |
- $conversationId = bin2hex($generated_keyin); |
|
| 121 |
- } |
|
| 122 |
- |
|
| 123 |
- |
|
| 124 |
- // Insert the received message in the 'sms_relent_received' table |
|
| 125 |
- $escapedmessagepre = $recmessagearr[4]; |
|
| 126 |
- $escapedmessage = nl2br($escapedmessagepre); |
|
| 127 |
- |
|
| 128 |
- $sql = $this->connection->prepare('
|
|
| 129 |
- INSERT INTO `*PREFIX*sms_relent_received` |
|
| 130 |
- (`user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender`, `conversation_id`) |
|
| 131 |
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) |
|
| 132 |
- '); |
|
| 133 |
- $sql->execute([$userId, $recmessagearr[0], $recmessagearr[1], $recmessagearr[2], $recmessagearr[3], $escapedmessage, $authorDisplayNm, $internalSender, $conversationId]); |
|
| 134 |
- |
|
| 135 |
- |
|
| 136 |
- // Update or insert data in the 'sms_relent_conv' table |
|
| 137 |
- $archivedornot = 0; |
|
| 138 |
- $lastUnarchived = date("Y-m-d H:i:s");
|
|
| 139 |
- $lastMsgDate = $lastUnarchived; |
|
| 140 |
- $lastMsgFrom = $recmessagearr[2]; |
|
| 141 |
- $lastMsgToArr = explode(": ", $recmessagearr[3]);
|
|
| 142 |
- $lastMsgTo = $lastMsgToArr[1]; |
|
| 143 |
- |
|
| 144 |
- if ($convExists == 1) {
|
|
| 145 |
- |
|
| 146 |
- if ($archivedConv == 1) {
|
|
| 147 |
- |
|
| 148 |
- $sqlupdatecv = $this->connection->prepare('
|
|
| 149 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 150 |
- SET `archived` = ?, `last_unarchived` = ?, `unarchived_by` = ?, `last_msg_date` = ?, `last_msg_from` = ?, `last_msg_to` = ?, `last_message` = ?, |
|
| 151 |
- `lastmsgdisplayname` = ?, `lastmsgprovid` = ? |
|
| 152 |
- WHERE `conversation_id` = ?'); |
|
| 153 |
- $updatecvRes = $sqlupdatecv->execute([$archivedornot, $lastUnarchived, $authorDisplayNm, $lastMsgDate, $lastMsgFrom, $lastMsgTo, $escapedmessage, $authorDisplayNm, |
|
| 154 |
- $recmessagearr[0], $conversationId]); |
|
| 155 |
- $updatecvRes->closeCursor(); |
|
| 156 |
- |
|
| 157 |
- } else {
|
|
| 158 |
- |
|
| 159 |
- $sqlupdatecv = $this->connection->prepare('
|
|
| 160 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 161 |
- SET `archived` = ?, `last_msg_date` = ?, `last_msg_from` = ?, `last_msg_to` = ?, `last_message` = ?, `lastmsgdisplayname` = ?, `lastmsgprovid` = ? |
|
| 162 |
- WHERE `conversation_id` = ?'); |
|
| 163 |
- $updatecvRes = $sqlupdatecv->execute([$archivedornot, $lastMsgDate, $lastMsgFrom, $lastMsgTo, $escapedmessage, $authorDisplayNm, $recmessagearr[0], $conversationId]); |
|
| 164 |
- $updatecvRes->closeCursor(); |
|
| 165 |
- } |
|
| 166 |
- |
|
| 167 |
- } else {
|
|
| 168 |
- |
|
| 169 |
- $sqlinscv = $this->connection->prepare('
|
|
| 170 |
- INSERT INTO `*PREFIX*sms_relent_conv` |
|
| 171 |
- (`conversation_id`, `archived`, `last_msg_date`, `last_msg_from`, `last_msg_to`, `last_message`, `lastmsgdisplayname`, `lastmsgprovid`) |
|
| 172 |
- VALUES (?, ?, ?, ?, ?, ?, ?, ?) |
|
| 173 |
- '); |
|
| 174 |
- $sqlinscv->execute([$conversationId, $archivedornot, $lastMsgDate, $lastMsgFrom, $lastMsgTo, $escapedmessage, $authorDisplayNm, $recmessagearr[0]]); |
|
| 175 |
- } |
|
| 176 |
- |
|
| 177 |
- // Save a 'new message received' indicator in the 'sms_relent_settings' table, for the (admin) user who received the message |
|
| 178 |
- $newMessageRcd = 1; |
|
| 179 |
- $sqlupdatenm = $this->connection->prepare('
|
|
| 180 |
- UPDATE `*PREFIX*sms_relent_settings` |
|
| 181 |
- SET `new_message_rcd` = ? |
|
| 182 |
- WHERE `user_id` = ?'); |
|
| 183 |
- $updatenmRes = $sqlupdatenm->execute([$newMessageRcd, $userId]); |
|
| 184 |
- $updatenmRes->closeCursor(); |
|
| 185 |
- |
|
| 186 |
- |
|
| 187 |
- // Save a 'new message received' indicator in the 'sms_relent_settings' table, for the non-admin users with whom the admin receiving the message shared his API keys |
|
| 188 |
- |
|
| 189 |
- // Get the groups and users that were allowed access to the API keys |
|
| 190 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
|
|
| 191 |
- `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac` |
|
| 192 |
- WHERE `user_id` = ?'); |
|
| 193 |
- $getgrpsres = $getgrps->execute([$userId]); |
|
| 194 |
- $getgrpsusr = $getgrpsres->fetch(); |
|
| 195 |
- $getgrpsres->closeCursor(); |
|
| 196 |
- |
|
| 197 |
- if ($getgrpsusr) {
|
|
| 198 |
- |
|
| 199 |
- if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
|
|
| 200 |
- if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
|
|
| 201 |
- if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
|
|
| 202 |
- if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
|
|
| 203 |
- |
|
| 204 |
- $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers); |
|
| 205 |
- $allwdusersunq = array_filter(array_unique($allwdusersarr)); |
|
| 206 |
- |
|
| 207 |
- if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
|
|
| 208 |
- if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
|
|
| 209 |
- if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
|
|
| 210 |
- if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
|
|
| 211 |
- |
|
| 212 |
- $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups); |
|
| 213 |
- $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr)); |
|
| 214 |
- |
|
| 215 |
- } else {
|
|
| 216 |
- $allwdusersunq = []; |
|
| 217 |
- $allwdgroupsunq = []; |
|
| 218 |
- } |
|
| 219 |
- |
|
| 220 |
- // Get the username for each Display Name of the allowed users |
|
| 221 |
- $allwdusersfnl = []; |
|
| 222 |
- foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
|
|
| 223 |
- |
|
| 224 |
- $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 225 |
- $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]); |
|
| 226 |
- $acdatausrname = $getacdatausrnmres->fetch(); |
|
| 227 |
- if ($acdatausrname) {
|
|
| 228 |
- $allwdusersfnl[] = $acdatausrname['uid']; |
|
| 229 |
- } |
|
| 230 |
- $getacdatausrnmres->closeCursor(); |
|
| 231 |
- } |
|
| 232 |
- |
|
| 233 |
- // Get the users from all the allowed groups |
|
| 234 |
- $allwdusersgrpmlt = []; |
|
| 235 |
- foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
|
|
| 236 |
- |
|
| 237 |
- // Get all the users that belong to the current group, if the current group is different from 'admin' |
|
| 238 |
- if ($prgrpvalue != 'admin') {
|
|
| 239 |
- |
|
| 240 |
- $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
|
|
| 241 |
- $getusringroupres = $getusringroup->execute([$prgrpvalue]); |
|
| 242 |
- |
|
| 243 |
- while ($getusrname = $getusringroupres->fetch()) {
|
|
| 244 |
- $allwdusersgrpmlt[] = $getusrname['uid']; |
|
| 245 |
- } |
|
| 246 |
- $getusringroupres->closeCursor(); |
|
| 247 |
- } |
|
| 248 |
- } |
|
| 249 |
- $allwdusersgrpfnl = array_unique($allwdusersgrpmlt); |
|
| 250 |
- |
|
| 251 |
- $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl); |
|
| 252 |
- $allusruniquest = array_unique($allusr); |
|
| 253 |
- |
|
| 254 |
- foreach ($allusruniquest as $alwdk => $allwdusr) {
|
|
| 255 |
- $newMsgRcd = 1; |
|
| 256 |
- $sqlupdatenmsc = $this->connection->prepare('
|
|
| 257 |
- UPDATE `*PREFIX*sms_relent_settings` |
|
| 258 |
- SET `new_message_rcd` = ? |
|
| 259 |
- WHERE `user_id` = ?'); |
|
| 260 |
- $updatenmResc = $sqlupdatenmsc->execute([$newMsgRcd, $allwdusr]); |
|
| 261 |
- $updatenmResc->closeCursor(); |
|
| 262 |
- } |
|
| 263 |
- } |
|
| 264 |
- |
|
| 265 |
- |
|
| 266 |
- /** |
|
| 267 |
- * @NoAdminRequired |
|
| 268 |
- * |
|
| 269 |
- */ |
|
| 270 |
- public function insertsentsms($userId, $displayname, $sentmessagearr) {
|
|
| 271 |
- |
|
| 272 |
- // Search for the conversation ID in the 'sms_relent_conv' table |
|
| 273 |
- $convExistssc = 0; |
|
| 274 |
- $archivedConvsc = 0; |
|
| 275 |
- $fromphnumberarr = explode(": ", $sentmessagearr[2]);
|
|
| 276 |
- $fromphnumber = $fromphnumberarr[1]; |
|
| 277 |
- $getconvidsc = $this->connection->prepare('SELECT `conversation_id`, `archived`, `last_msg_from`, `last_msg_to` FROM `*PREFIX*sms_relent_conv` WHERE
|
|
| 278 |
- (`last_msg_from` = ? AND `last_msg_to` = ?) OR (`last_msg_from` = ? AND `last_msg_to` = ?)'); |
|
| 279 |
- $getconvressc = $getconvidsc->execute([$fromphnumber, $sentmessagearr[3], $sentmessagearr[3], $fromphnumber]); |
|
| 280 |
- $convfetchedsc = $getconvressc->fetch(); |
|
| 281 |
- $getconvressc->closeCursor(); |
|
| 282 |
- |
|
| 283 |
- if ($convfetchedsc) {
|
|
| 284 |
- $conversationIdsc = $convfetchedsc['conversation_id']; |
|
| 285 |
- $convExistssc = 1; |
|
| 286 |
- $archivedConvsc = $convfetchedsc['archived']; |
|
| 287 |
- } else {
|
|
| 288 |
- // Create a conversation ID |
|
| 289 |
- $keypassinsc = substr(sha1((string) mt_rand()), 0, 32); |
|
| 290 |
- $keysaltinsc = openssl_random_pseudo_bytes(24); |
|
| 291 |
- $keyLengthinsc = 64; |
|
| 292 |
- $iterationinsc = 50; |
|
| 293 |
- $generated_keyinsc = openssl_pbkdf2($keypassinsc, $keysaltinsc, $keyLengthinsc, $iterationinsc, 'sha256'); |
|
| 294 |
- $conversationIdsc = bin2hex($generated_keyinsc); |
|
| 295 |
- } |
|
| 296 |
- |
|
| 297 |
- // Insert the sent message in the 'sms_relent_sent' table |
|
| 298 |
- $textwithnl = nl2br($sentmessagearr[8]); |
|
| 299 |
- $sql = $this->connection->prepare('
|
|
| 300 |
- INSERT INTO `*PREFIX*sms_relent_sent` |
|
| 301 |
- (`user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname`, `conversation_id`) |
|
| 302 |
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) |
|
| 303 |
- '); |
|
| 304 |
- $sql->execute([$userId, $sentmessagearr[0], $sentmessagearr[1], $sentmessagearr[2], $sentmessagearr[3], $sentmessagearr[4], $sentmessagearr[5], $sentmessagearr[6], |
|
| 305 |
- $sentmessagearr[7], $textwithnl, $displayname, $conversationIdsc]); |
|
| 306 |
- |
|
| 307 |
- |
|
| 308 |
- // Update or insert data in the 'sms_relent_conv' table |
|
| 309 |
- $archivedornotsc = 0; |
|
| 310 |
- $lastUnarchivedsc = date("Y-m-d H:i:s");
|
|
| 311 |
- $lastMsgDatesc = $lastUnarchivedsc; |
|
| 312 |
- $lastMsgFromArrsc = explode(": ", $sentmessagearr[2]);
|
|
| 313 |
- $lastMsgFromsc = $lastMsgFromArrsc[1]; |
|
| 314 |
- $lastMsgTosc = $sentmessagearr[3]; |
|
| 315 |
- |
|
| 316 |
- if ($convExistssc == 1) {
|
|
| 317 |
- |
|
| 318 |
- if ($archivedConvsc == 1) {
|
|
| 319 |
- |
|
| 320 |
- $sqlupdatecvsc = $this->connection->prepare('
|
|
| 321 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 322 |
- SET `archived` = ?, `last_unarchived` = ?, `unarchived_by` = ?, `last_msg_date` = ?, `last_msg_from` = ?, `last_msg_to` = ?, `last_message` = ?, |
|
| 323 |
- `lastmsgdisplayname` = ?, `lastmsgprovid` = ? |
|
| 324 |
- WHERE `conversation_id` = ?'); |
|
| 325 |
- $updatecvRessc = $sqlupdatecvsc->execute([$archivedornotsc, $lastUnarchivedsc, $displayname, $lastMsgDatesc, $lastMsgFromsc, $lastMsgTosc, $textwithnl, |
|
| 326 |
- $displayname, $sentmessagearr[0], $conversationIdsc]); |
|
| 327 |
- $updatecvRessc->closeCursor(); |
|
| 328 |
- |
|
| 329 |
- } else {
|
|
| 330 |
- |
|
| 331 |
- $sqlupdatecvsc = $this->connection->prepare('
|
|
| 332 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 333 |
- SET `archived` = ?, `last_msg_date` = ?, `last_msg_from` = ?, `last_msg_to` = ?, `last_message` = ?, `lastmsgdisplayname` = ?, `lastmsgprovid` = ? |
|
| 334 |
- WHERE `conversation_id` = ?'); |
|
| 335 |
- $updatecvRessc = $sqlupdatecvsc->execute([$archivedornotsc, $lastMsgDatesc, $lastMsgFromsc, $lastMsgTosc, $textwithnl, $displayname, $sentmessagearr[0], |
|
| 336 |
- $conversationIdsc]); |
|
| 337 |
- $updatecvRessc->closeCursor(); |
|
| 338 |
- } |
|
| 339 |
- |
|
| 340 |
- } else {
|
|
| 341 |
- |
|
| 342 |
- $sqlinscvsc = $this->connection->prepare('
|
|
| 343 |
- INSERT INTO `*PREFIX*sms_relent_conv` |
|
| 344 |
- (`conversation_id`, `archived`, `last_msg_date`, `last_msg_from`, `last_msg_to`, `last_message`, `lastmsgdisplayname`, `lastmsgprovid`) |
|
| 345 |
- VALUES (?, ?, ?, ?, ?, ?, ?, ?) |
|
| 346 |
- '); |
|
| 347 |
- $sqlinscvsc->execute([$conversationIdsc, $archivedornotsc, $lastMsgDatesc, $lastMsgFromsc, $lastMsgTosc, $textwithnl, $displayname, $sentmessagearr[0]]); |
|
| 348 |
- } |
|
| 349 |
- } |
|
| 350 |
- |
|
| 351 |
- |
|
| 352 |
- /** |
|
| 353 |
- * @NoAdminRequired |
|
| 354 |
- * |
|
| 355 |
- */ |
|
| 356 |
- public function updatedeliverystatustel($ncuserfortelnyxdel, $messageid, $network, $messageprice, $messagestatus, $deliverystatus) {
|
|
| 357 |
- |
|
| 358 |
- $sqlupdateds = $this->connection->prepare('
|
|
| 359 |
- UPDATE `*PREFIX*sms_relent_sent` |
|
| 360 |
- SET `price` = ?, `status` = ?, `deliveryreceipt` = ?, `network` = ? |
|
| 361 |
- WHERE `message_id` = ? AND `user_id` = ? '); |
|
| 362 |
- $updateRes = $sqlupdateds->execute([$messageprice, $messagestatus, $deliverystatus, $network, $messageid, $ncuserfortelnyxdel]); |
|
| 363 |
- $updateRes->closeCursor(); |
|
| 364 |
- } |
|
| 365 |
- |
|
| 366 |
- |
|
| 367 |
- /** |
|
| 368 |
- * @NoAdminRequired |
|
| 369 |
- * |
|
| 370 |
- */ |
|
| 371 |
- public function updatedeliverystatusnex($ncuserforplivodel, $messageid, $networkcode, $messageprice, $mStatus, $deliverystatus) {
|
|
| 372 |
- |
|
| 373 |
- $sqlupdatedspl = $this->connection->prepare('
|
|
| 374 |
- UPDATE `*PREFIX*sms_relent_sent` |
|
| 375 |
- SET `price` = ?, `deliveryreceipt` = ?, `status` = ?, `network` = ? |
|
| 376 |
- WHERE `message_id` = ? AND `user_id` = ? '); |
|
| 377 |
- $updateResdspl = $sqlupdatedspl->execute([$messageprice, $deliverystatus, $mStatus, $networkcode, $messageid, $ncuserforplivodel]); |
|
| 378 |
- $updateResdspl->closeCursor(); |
|
| 379 |
- } |
|
| 380 |
- |
|
| 381 |
- |
|
| 382 |
- /** |
|
| 383 |
- * @NoAdminRequired |
|
| 384 |
- * |
|
| 385 |
- */ |
|
| 386 |
- public function updatedeliverystatustwil($ncuserfortwildel, $messageid, $networkcode, $messageprice, $mStatus, $deliverystatus) {
|
|
| 387 |
- |
|
| 388 |
- $sqlupdatedstw = $this->connection->prepare('
|
|
| 389 |
- UPDATE `*PREFIX*sms_relent_sent` |
|
| 390 |
- SET `price` = ?, `deliveryreceipt` = ?, `status` = ?, `network` = ? |
|
| 391 |
- WHERE `message_id` = ? AND `user_id` = ? '); |
|
| 392 |
- $updateResdstw = $sqlupdatedstw->execute([$messageprice, $deliverystatus, $mStatus, $networkcode, $messageid, $ncuserfortwildel]); |
|
| 393 |
- $updateResdstw->closeCursor(); |
|
| 394 |
- } |
|
| 395 |
- |
|
| 396 |
- |
|
| 397 |
- /** |
|
| 398 |
- * @NoAdminRequired |
|
| 399 |
- * |
|
| 400 |
- */ |
|
| 401 |
- public function updatedeliverystatusflow($ncuserforflowdel, $messageid, $networkcode, $messageprice, $mStatus, $deliverystatus) {
|
|
| 402 |
- |
|
| 403 |
- $sqlupdatedsfl = $this->connection->prepare('
|
|
| 404 |
- UPDATE `*PREFIX*sms_relent_sent` |
|
| 405 |
- SET `price` = ?, `deliveryreceipt` = ?, `status` = ?, `network` = ? |
|
| 406 |
- WHERE `message_id` = ? AND `user_id` = ? '); |
|
| 407 |
- $updateResdsfl = $sqlupdatedsfl->execute([$messageprice, $deliverystatus, $mStatus, $networkcode, $messageid, $ncuserforflowdel]); |
|
| 408 |
- $updateResdsfl->closeCursor(); |
|
| 409 |
- } |
|
| 410 |
- |
|
| 411 |
- |
|
| 412 |
- /** |
|
| 413 |
- * @NoAdminRequired |
|
| 414 |
- */ |
|
| 415 |
- public function getreceivedtable($userId) {
|
|
| 416 |
- |
|
| 417 |
- // Get the user's preferences from the settings |
|
| 418 |
- $getgamcheckrc = $this->connection->prepare('
|
|
| 419 |
- SELECT `user_id`, `show_all_messages`, `show_display_names` |
|
| 420 |
- FROM `*PREFIX*sms_relent_settings` WHERE `user_id` = ?'); |
|
| 421 |
- $getgamcheckrcres = $getgamcheckrc->execute([$userId]); |
|
| 422 |
- $getcrgamsrcpref = $getgamcheckrcres->fetch(); |
|
| 423 |
- $crgamsrcpref = $getcrgamsrcpref['show_all_messages']; |
|
| 424 |
- $crdnmsrcpref = $getcrgamsrcpref['show_display_names']; |
|
| 425 |
- $getgamcheckrcres->closeCursor(); |
|
| 426 |
- |
|
| 427 |
- |
|
| 428 |
- // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see |
|
| 429 |
- if ($crgamsrcpref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 430 |
- |
|
| 431 |
- // Get the groups and users that were allowed access to the API keys |
|
| 432 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
|
|
| 433 |
- `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac` |
|
| 434 |
- WHERE `user_id` = ?'); |
|
| 435 |
- $getgrpsres = $getgrps->execute([$userId]); |
|
| 436 |
- $getgrpsusr = $getgrpsres->fetch(); |
|
| 437 |
- $getgrpsres->closeCursor(); |
|
| 438 |
- |
|
| 439 |
- if ($getgrpsusr) {
|
|
| 440 |
- |
|
| 441 |
- if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
|
|
| 442 |
- if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
|
|
| 443 |
- if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
|
|
| 444 |
- if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
|
|
| 445 |
- |
|
| 446 |
- $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers); |
|
| 447 |
- $allwdusersunq = array_filter(array_unique($allwdusersarr)); |
|
| 448 |
- |
|
| 449 |
- if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
|
|
| 450 |
- if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
|
|
| 451 |
- if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
|
|
| 452 |
- if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
|
|
| 453 |
- |
|
| 454 |
- $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups); |
|
| 455 |
- $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr)); |
|
| 456 |
- |
|
| 457 |
- } else {
|
|
| 458 |
- $allwdusersunq = []; |
|
| 459 |
- $allwdgroupsunq = []; |
|
| 460 |
- } |
|
| 461 |
- |
|
| 462 |
- // Get the username for each Display Name of the allowed users |
|
| 463 |
- $allwdusersfnl = []; |
|
| 464 |
- foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
|
|
| 465 |
- |
|
| 466 |
- $displName = 'displayname'; |
|
| 467 |
- $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 468 |
- $getacdatausrnmres = $getacdatausrnm->execute([$displName, $alwdusrvalue]); |
|
| 469 |
- $acdatausrname = $getacdatausrnmres->fetch(); |
|
| 470 |
- if ($acdatausrname) {
|
|
| 471 |
- $allwdusersfnl[] = $acdatausrname['uid']; |
|
| 472 |
- } |
|
| 473 |
- $getacdatausrnmres->closeCursor(); |
|
| 474 |
- } |
|
| 475 |
- |
|
| 476 |
- // Get the users from all the allowed groups |
|
| 477 |
- $allwdusersgrpmlt = []; |
|
| 478 |
- foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
|
|
| 479 |
- |
|
| 480 |
- // Get all the users that belong to the current group, if the current group is different from 'admin' |
|
| 481 |
- if ($prgrpvalue != 'admin') {
|
|
| 482 |
- $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
|
|
| 483 |
- $getusringroupres = $getusringroup->execute([$prgrpvalue]); |
|
| 484 |
- |
|
| 485 |
- while ($getusrname = $getusringroupres->fetch()) {
|
|
| 486 |
- |
|
| 487 |
- $allwdusersgrpmlt[] = $getusrname['uid']; |
|
| 488 |
- } |
|
| 489 |
- $getusringroupres->closeCursor(); |
|
| 490 |
- } |
|
| 491 |
- } |
|
| 492 |
- $allwdusersgrpfnl = array_unique($allwdusersgrpmlt); |
|
| 493 |
- |
|
| 494 |
- $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl); |
|
| 495 |
- $allusruniquest = array_unique($allusr); |
|
| 496 |
- |
|
| 497 |
- if ($allusruniquest) {
|
|
| 498 |
- array_unshift($allusruniquest, $userId); |
|
| 499 |
- $allusruniquerc = $allusruniquest; |
|
| 500 |
- } else { $allusruniquerc = [$userId]; }
|
|
| 501 |
- |
|
| 502 |
- $procardatarcsec = "'" . implode("','", $allusruniquerc) . "'";
|
|
| 503 |
- |
|
| 504 |
- } |
|
| 505 |
- |
|
| 506 |
- // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys |
|
| 507 |
- if ($crgamsrcpref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 508 |
- |
|
| 509 |
- if ($crdnmsrcpref == 1) {
|
|
| 510 |
- |
|
| 511 |
- $rcresult = $this->connection->executeQuery("
|
|
| 512 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender` |
|
| 513 |
- FROM `*PREFIX*sms_relent_received` |
|
| 514 |
- WHERE `user_id` IN (" . $procardatarcsec . ")");
|
|
| 515 |
- |
|
| 516 |
- } else {
|
|
| 517 |
- |
|
| 518 |
- $rcresult = $this->connection->executeQuery("
|
|
| 519 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `internal_sender` |
|
| 520 |
- FROM `*PREFIX*sms_relent_received` |
|
| 521 |
- WHERE `user_id` IN (" . $procardatarcsec . ")");
|
|
| 522 |
- } |
|
| 523 |
- |
|
| 524 |
- // If the user is an admin and he wants to see only his messages |
|
| 525 |
- } elseif ($crgamsrcpref == 0 && $this->groupManager->isAdmin($userId)) {
|
|
| 526 |
- |
|
| 527 |
- if ($crdnmsrcpref == 1) {
|
|
| 528 |
- $getrectable = $this->connection->prepare('
|
|
| 529 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender` |
|
| 530 |
- FROM `*PREFIX*sms_relent_received` |
|
| 531 |
- WHERE `user_id` = ?'); |
|
| 532 |
- $rcresult = $getrectable->execute([$userId]); |
|
| 533 |
- } else {
|
|
| 534 |
- $getrectable = $this->connection->prepare('
|
|
| 535 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `internal_sender` |
|
| 536 |
- FROM `*PREFIX*sms_relent_received` |
|
| 537 |
- WHERE `user_id` = ?'); |
|
| 538 |
- $rcresult = $getrectable->execute([$userId]); |
|
| 539 |
- } |
|
| 540 |
- |
|
| 541 |
- // If the user is not an admin |
|
| 542 |
- } elseif (!$this->groupManager->isAdmin($userId)) {
|
|
| 543 |
- |
|
| 544 |
- // Get the Display Name of the current user |
|
| 545 |
- $dsplyname = 'displayname'; |
|
| 546 |
- $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
|
|
| 547 |
- $getacdatadnres = $getacdatadn->execute([$userId, $dsplyname]); |
|
| 548 |
- $acdatausrdnadm = $getacdatadnres->fetch(); |
|
| 549 |
- $cruserdname = $acdatausrdnadm['value']; |
|
| 550 |
- $getacdatadnres->closeCursor(); |
|
| 551 |
- |
|
| 552 |
- // Get the groups to which the current user belongs |
|
| 553 |
- $getusrgrp = $this->connection->prepare('
|
|
| 554 |
- SELECT `gid`, `uid` |
|
| 555 |
- FROM `*PREFIX*group_user` |
|
| 556 |
- WHERE `uid` = ?'); |
|
| 557 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 558 |
- |
|
| 559 |
- $usergrps = []; |
|
| 560 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 561 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 562 |
- } |
|
| 563 |
- $getusrgrpres->closeCursor(); |
|
| 564 |
- |
|
| 565 |
- // Get the restrictions from the 'sms_relent_restrict' table |
|
| 566 |
- $getrestr = $this->connection->prepare('
|
|
| 567 |
- SELECT `phone_number`, `groups`, `users` |
|
| 568 |
- FROM `*PREFIX*sms_relent_restrict`'); |
|
| 569 |
- $getrestrres = $getrestr->execute(); |
|
| 570 |
- |
|
| 571 |
- $restrdata = []; |
|
| 572 |
- while ($restrfetched = $getrestrres->fetch()) {
|
|
| 573 |
- $restrdata[] = $restrfetched; |
|
| 574 |
- } |
|
| 575 |
- $getrestrres->closeCursor(); |
|
| 576 |
- |
|
| 577 |
- // Get the phone numbers that the user is allowed/not allowed to use |
|
| 578 |
- $restrPhoneNmbrs = []; |
|
| 579 |
- $allowedPhoneNmbrs = []; |
|
| 580 |
- if ($restrdata) {
|
|
| 581 |
- foreach ($restrdata as $rskey => $rsvalue) {
|
|
| 582 |
- |
|
| 583 |
- $chck = 0; |
|
| 584 |
- $restrgrparr = explode("|", $rsvalue['groups']);
|
|
| 585 |
- foreach ($restrgrparr as $rkey => $rvalue) {
|
|
| 586 |
- if ($rvalue) {
|
|
| 587 |
- if (strpos(implode("|", $usergrps), $rvalue) !== false) { $chck++; }
|
|
| 588 |
- } |
|
| 589 |
- } |
|
| 590 |
- if (strpos($rsvalue['users'], $cruserdname) !== false) { $chck++; }
|
|
| 591 |
- |
|
| 592 |
- if ($chck == 0) {
|
|
| 593 |
- $restrPhoneNmbrs[] = $rsvalue['phone_number']; |
|
| 594 |
- } |
|
| 595 |
- } |
|
| 596 |
- |
|
| 597 |
- $allowedPhNmbrs = $this->getsmsnumbers($userId); |
|
| 598 |
- |
|
| 599 |
- foreach ($allowedPhNmbrs as $apnkey => $apnvalue) {
|
|
| 600 |
- $crphnmbr = explode(": ", $apnvalue);
|
|
| 601 |
- if ($crphnmbr[0] == 'Tx') {
|
|
| 602 |
- $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1]; |
|
| 603 |
- } elseif ($crphnmbr[0] == 'Pl') {
|
|
| 604 |
- $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1]; |
|
| 605 |
- } elseif ($crphnmbr[0] == 'Tw') {
|
|
| 606 |
- $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1]; |
|
| 607 |
- } elseif ($crphnmbr[0] == 'Fl') {
|
|
| 608 |
- $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1]; |
|
| 609 |
- } |
|
| 610 |
- } |
|
| 611 |
- |
|
| 612 |
- $procalwduid = $allowedPhoneNmbrs; |
|
| 613 |
- $procalwduidsec = "'" . implode("','", $procalwduid) . "'";
|
|
| 614 |
- |
|
| 615 |
- if ($crdnmsrcpref == 1) {
|
|
| 616 |
- |
|
| 617 |
- if ($procalwduidsec != "''") {
|
|
| 618 |
- |
|
| 619 |
- $rcresult = $this->connection->executeQuery("
|
|
| 620 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender` |
|
| 621 |
- FROM `*PREFIX*sms_relent_received` |
|
| 622 |
- WHERE `user_id` = '$userId' OR `to` IN (" . $procalwduidsec . ")");
|
|
| 623 |
- |
|
| 624 |
- } else {
|
|
| 625 |
- |
|
| 626 |
- $getrectable = $this->connection->prepare('
|
|
| 627 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender` |
|
| 628 |
- FROM `*PREFIX*sms_relent_received` |
|
| 629 |
- WHERE `user_id` = ?'); |
|
| 630 |
- $rcresult = $getrectable->execute([$userId]); |
|
| 631 |
- } |
|
| 632 |
- |
|
| 633 |
- } else {
|
|
| 634 |
- |
|
| 635 |
- if ($procalwduidsec) {
|
|
| 636 |
- |
|
| 637 |
- $rcresult = $this->connection->executeQuery("
|
|
| 638 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `internal_sender` |
|
| 639 |
- FROM `*PREFIX*sms_relent_received` |
|
| 640 |
- WHERE `user_id` = '$userId' OR `to` IN (" . $procalwduidsec . ")");
|
|
| 641 |
- } else {
|
|
| 642 |
- $getrectable = $this->connection->prepare('
|
|
| 643 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `internal_sender` |
|
| 644 |
- FROM `*PREFIX*sms_relent_received` |
|
| 645 |
- WHERE `user_id` = ?'); |
|
| 646 |
- $rcresult = $getrectable->execute([$userId]); |
|
| 647 |
- } |
|
| 648 |
- } |
|
| 649 |
- |
|
| 650 |
- } else {
|
|
| 651 |
- |
|
| 652 |
- $allowedPhNmbrs = $this->getsmsnumbers($userId); |
|
| 653 |
- |
|
| 654 |
- foreach ($allowedPhNmbrs as $apnkey => $apnvalue) {
|
|
| 655 |
- $crphnmbr = explode(": ", $apnvalue);
|
|
| 656 |
- if ($crphnmbr[0] == 'Tx') {
|
|
| 657 |
- $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1]; |
|
| 658 |
- } elseif ($crphnmbr[0] == 'Pl') {
|
|
| 659 |
- $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1]; |
|
| 660 |
- } elseif ($crphnmbr[0] == 'Tw') {
|
|
| 661 |
- $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1]; |
|
| 662 |
- } elseif ($crphnmbr[0] == 'Fl') {
|
|
| 663 |
- $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1]; |
|
| 664 |
- } |
|
| 665 |
- } |
|
| 666 |
- |
|
| 667 |
- $procalwduid = $allowedPhoneNmbrs; |
|
| 668 |
- $procalwduidsec = "'" . implode("','", $procalwduid) . "'";
|
|
| 669 |
- |
|
| 670 |
- if ($crdnmsrcpref == 1) {
|
|
| 671 |
- |
|
| 672 |
- if ($procalwduidsec != "''") {
|
|
| 673 |
- |
|
| 674 |
- $rcresult = $this->connection->executeQuery("
|
|
| 675 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender` |
|
| 676 |
- FROM `*PREFIX*sms_relent_received` |
|
| 677 |
- WHERE `user_id` = '$userId' OR `to` IN (" . $procalwduidsec . ")");
|
|
| 678 |
- |
|
| 679 |
- } else {
|
|
| 680 |
- |
|
| 681 |
- $getrectable = $this->connection->prepare('
|
|
| 682 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender` |
|
| 683 |
- FROM `*PREFIX*sms_relent_received` |
|
| 684 |
- WHERE `user_id` = ?'); |
|
| 685 |
- $rcresult = $getrectable->execute([$userId]); |
|
| 686 |
- } |
|
| 687 |
- |
|
| 688 |
- } else {
|
|
| 689 |
- |
|
| 690 |
- if ($procalwduidsec) {
|
|
| 691 |
- |
|
| 692 |
- $rcresult = $this->connection->executeQuery("
|
|
| 693 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `internal_sender` |
|
| 694 |
- FROM `*PREFIX*sms_relent_received` |
|
| 695 |
- WHERE `user_id` = '$userId' OR `to` IN (" . $procalwduidsec . ")");
|
|
| 696 |
- } else {
|
|
| 697 |
- $getrectable = $this->connection->prepare('
|
|
| 698 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `internal_sender` |
|
| 699 |
- FROM `*PREFIX*sms_relent_received` |
|
| 700 |
- WHERE `user_id` = ?'); |
|
| 701 |
- $rcresult = $getrectable->execute([$userId]); |
|
| 702 |
- } |
|
| 703 |
- } |
|
| 704 |
- } |
|
| 705 |
- } |
|
| 706 |
- |
|
| 707 |
- $recdatatable = []; |
|
| 708 |
- while ($rowfetched = $rcresult->fetch()) {
|
|
| 709 |
- $rowfetchedsc = htmlspecialchars($rowfetched["message"], ENT_QUOTES); |
|
| 710 |
- $fetchedcont = str_replace(['<br />', '<br>', '</b>'], ['<br />', '<br>', '</b>'], $rowfetchedsc); |
|
| 711 |
- $rowfetched["message"] = $fetchedcont; |
|
| 712 |
- $recdatatable[] = $rowfetched; |
|
| 713 |
- } |
|
| 714 |
- $rcresult->closeCursor(); |
|
| 715 |
- |
|
| 716 |
- $recdatafromdb = $recdatatable; |
|
| 717 |
- |
|
| 718 |
- |
|
| 719 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 720 |
- |
|
| 721 |
- $recdatafdb = ['datarows' => $recdatafromdb, 'showdispnm' => $crdnmsrcpref]; |
|
| 722 |
- return $recdatafdb; |
|
| 723 |
- |
|
| 724 |
- } else {
|
|
| 725 |
- |
|
| 726 |
- if ($restrdata) {
|
|
| 727 |
- |
|
| 728 |
- // Clean the 'not allowed' phone numbers from tags |
|
| 729 |
- $restrPhfin = []; |
|
| 730 |
- foreach ($restrPhoneNmbrs as $phkey => $phvalue) {
|
|
| 731 |
- |
|
| 732 |
- $restrpharr = explode(": ", $phvalue);
|
|
| 733 |
- $restrPhfin[] = $restrpharr[1]; |
|
| 734 |
- } |
|
| 735 |
- |
|
| 736 |
- // Assemble the array of message rows that excludes the rows for the 'not allowed' phone numbers |
|
| 737 |
- foreach ($recdatafromdb as $mdkey => $mdvalue) {
|
|
| 738 |
- |
|
| 739 |
- if (str_contains($mdvalue['to'], "+")) {
|
|
| 740 |
- $fromnmbrarr = explode("+", $mdvalue['to']);
|
|
| 741 |
- if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
|
|
| 742 |
- unset($recdatafromdb[$mdkey]); |
|
| 743 |
- } |
|
| 744 |
- } else {
|
|
| 745 |
- $tonmbrarr = explode(": ", $mdvalue['to']);
|
|
| 746 |
- if (count($tonmbrarr) == 2) {
|
|
| 747 |
- $tonmbrtbcmprd = $tonmbrarr[1]; |
|
| 748 |
- } else {
|
|
| 749 |
- $tonmbrtbcmprd = $tonmbrarr[0]; |
|
| 750 |
- } |
|
| 751 |
- if (in_array($tonmbrtbcmprd, $restrPhfin)) {
|
|
| 752 |
- unset($recdatafromdb[$mdkey]); |
|
| 753 |
- } |
|
| 754 |
- } |
|
| 755 |
- } |
|
| 756 |
- |
|
| 757 |
- $recdatafdbproc = array_values($recdatafromdb); |
|
| 758 |
- |
|
| 759 |
- $recdataproc = ['datarows' => $recdatafdbproc, 'showdispnm' => $crdnmsrcpref]; |
|
| 760 |
- return $recdataproc; |
|
| 761 |
- |
|
| 762 |
- } else {
|
|
| 763 |
- |
|
| 764 |
- $recdatafdb = ['datarows' => $recdatafromdb, 'showdispnm' => $crdnmsrcpref]; |
|
| 765 |
- return $recdatafdb; |
|
| 766 |
- } |
|
| 767 |
- } |
|
| 768 |
- } |
|
| 769 |
- |
|
| 770 |
- |
|
| 771 |
- /** |
|
| 772 |
- * @NoAdminRequired |
|
| 773 |
- */ |
|
| 774 |
- public function getreceivedtablefordel($userId) {
|
|
| 775 |
- |
|
| 776 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 777 |
- |
|
| 778 |
- $getrecfordl = $this->connection->prepare('
|
|
| 779 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `message`, `author_displayname`, `internal_sender` |
|
| 780 |
- FROM `*PREFIX*sms_relent_received` |
|
| 781 |
- WHERE `user_id` = ?'); |
|
| 782 |
- $resultdl = $getrecfordl->execute([$userId]); |
|
| 783 |
- |
|
| 784 |
- $recdatatable = []; |
|
| 785 |
- while ($rowfetched = $resultdl->fetch()) {
|
|
| 786 |
- $recdatatable[] = $rowfetched; |
|
| 787 |
- } |
|
| 788 |
- $resultdl->closeCursor(); |
|
| 789 |
- |
|
| 790 |
- $recdatafromdb = $recdatatable; |
|
| 791 |
- |
|
| 792 |
- return $recdatafromdb; |
|
| 793 |
- |
|
| 794 |
- } else { return "not permitted"; }
|
|
| 795 |
- } |
|
| 796 |
- |
|
| 797 |
- |
|
| 798 |
- /** |
|
| 799 |
- * @NoAdminRequired |
|
| 800 |
- */ |
|
| 801 |
- public function removeMsgFromConv($msgProvId) {
|
|
| 802 |
- |
|
| 803 |
- // Check if the message that will be deleted is the last message in a conversation |
|
| 804 |
- $chcklstmsg = $this->connection->prepare('SELECT `conversation_id`, `last_msg_date`, `last_msg_from`, `last_msg_to`, `last_message`, `lastmsgdisplayname`,
|
|
| 805 |
- `lastmsgprovid` FROM `*PREFIX*sms_relent_conv` WHERE `lastmsgprovid` = ?'); |
|
| 806 |
- $checklstmsgres = $chcklstmsg->execute([$msgProvId]); |
|
| 807 |
- $convlmsgfetched = $checklstmsgres->fetch(); |
|
| 808 |
- $checklstmsgres->closeCursor(); |
|
| 809 |
- |
|
| 810 |
- if ($convlmsgfetched) {
|
|
| 811 |
- |
|
| 812 |
- $conversationID = $convlmsgfetched['conversation_id']; |
|
| 813 |
- $lastmsgFrom = $convlmsgfetched['last_msg_from']; |
|
| 814 |
- $lastmsgFromLike = "%" . $convlmsgfetched['last_msg_from']; |
|
| 815 |
- $lastmsgTo = $convlmsgfetched['last_msg_to']; |
|
| 816 |
- $lastmsgToLike = "%" . $convlmsgfetched['last_msg_to']; |
|
| 817 |
- |
|
| 818 |
- // Check if the conversation contains other messages (in the 'sms_relent_received' table), apart from the last message that will be deleted |
|
| 819 |
- $getcnvqr = $this->connection->prepare('SELECT `message_id`, `date`, `from`, `to`, `message`, `author_displayname` FROM `*PREFIX*sms_relent_received` WHERE
|
|
| 820 |
- (`from` = ? AND `to` LIKE ?) OR (`from` = ? AND `to` LIKE ?)'); |
|
| 821 |
- $getcnvres = $getcnvqr->execute([$lastmsgFrom, $lastmsgToLike, $lastmsgTo, $lastmsgFromLike]); |
|
| 822 |
- |
|
| 823 |
- $msgexchrec = []; |
|
| 824 |
- while ($rwsfetched = $getcnvres->fetch()) {
|
|
| 825 |
- $msgexchrec[] = $rwsfetched; |
|
| 826 |
- } |
|
| 827 |
- $getcnvres->closeCursor(); |
|
| 828 |
- |
|
| 829 |
- // Check if the conversation contains other messages (in the 'sms_relent_sent' table), apart from the last message that will be deleted |
|
| 830 |
- $getcnvqrst = $this->connection->prepare('SELECT `message_id`, `date`, `from`, `to`, `message`, `author_displayname` FROM `*PREFIX*sms_relent_sent` WHERE
|
|
| 831 |
- (`from` LIKE ? AND `to` = ?) OR (`from` LIKE ? AND `to` = ?)'); |
|
| 832 |
- $getcnvstres = $getcnvqrst->execute([$lastmsgFromLike, $lastmsgTo, $lastmsgToLike, $lastmsgFrom]); |
|
| 833 |
- |
|
| 834 |
- $msgexchsent = []; |
|
| 835 |
- while ($rwsfetchedst = $getcnvstres->fetch()) {
|
|
| 836 |
- $msgexchsent[] = $rwsfetchedst; |
|
| 837 |
- } |
|
| 838 |
- $getcnvstres->closeCursor(); |
|
| 839 |
- |
|
| 840 |
- $mergedrecsent = array_merge($msgexchrec, $msgexchsent); |
|
| 841 |
- |
|
| 842 |
- // Check if there are at least 2 messages exchanged between the two numbers |
|
| 843 |
- if (count($mergedrecsent) > 1) {
|
|
| 844 |
- |
|
| 845 |
- // Order all the messages exchanged between the two numbers |
|
| 846 |
- usort($mergedrecsent, function($a, $b) { return strtotime($a["date"]) - strtotime($b["date"]); });
|
|
| 847 |
- |
|
| 848 |
- // Get the last but one message |
|
| 849 |
- $msgdatares = array_slice($mergedrecsent, -2, 1); |
|
| 850 |
- $lastbutone = $msgdatares[0]; |
|
| 851 |
- |
|
| 852 |
- // Replace the message that will be deleted with the last but one message in the same conversation |
|
| 853 |
- if (str_contains($lastbutone['to'], ": ")) {
|
|
| 854 |
- $lastMsgToarr = explode(": ", $lastbutone['to']);
|
|
| 855 |
- $lastMsgTo = $lastMsgToarr[1]; |
|
| 856 |
- } else { $lastMsgTo = $lastbutone['to']; }
|
|
| 857 |
- |
|
| 858 |
- if (str_contains($lastbutone['from'], ": ")) {
|
|
| 859 |
- $lastMsgFromarr = explode(": ", $lastbutone['from']);
|
|
| 860 |
- $lastMsgFrom = $lastMsgFromarr[1]; |
|
| 861 |
- } else { $lastMsgFrom = $lastbutone['from']; }
|
|
| 862 |
- |
|
| 863 |
- $updatecnv = $this->connection->prepare('
|
|
| 864 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 865 |
- SET `last_msg_date` = ?, `last_msg_from` = ?, `last_msg_to` = ?, `last_message` = ?, `lastmsgdisplayname` = ?, `lastmsgprovid` = ? |
|
| 866 |
- WHERE `conversation_id` = ?'); |
|
| 867 |
- $updatecnvres = $updatecnv->execute([$lastbutone['date'], $lastMsgFrom, $lastMsgTo, $lastbutone['message'], $lastbutone['author_displayname'], |
|
| 868 |
- $lastbutone['message_id'], $conversationID]); |
|
| 869 |
- $updatecnvres->closeCursor(); |
|
| 870 |
- |
|
| 871 |
- } else {
|
|
| 872 |
- |
|
| 873 |
- // Since the last message in the conversation is the only message of the conversation and will be deleted, delete the conversation row from the conversations table |
|
| 874 |
- $convmsgdel = $this->connection->prepare('
|
|
| 875 |
- DELETE FROM `*PREFIX*sms_relent_conv` |
|
| 876 |
- WHERE `conversation_id` = ?'); |
|
| 877 |
- $convmsgdelres = $convmsgdel->execute([$conversationID]); |
|
| 878 |
- $convmsgdelres->closeCursor(); |
|
| 879 |
- |
|
| 880 |
- // Reindex the conversations table |
|
| 881 |
- $sqlupdateconv = $this->connection->prepare('
|
|
| 882 |
- SET @resetconv = 0; |
|
| 883 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 884 |
- SET `id` = @resetconv := @resetconv + 1; |
|
| 885 |
- ALTER TABLE `*PREFIX*sms_relent_conv` auto_increment=1;'); |
|
| 886 |
- $updateconvRes = $sqlupdateconv->execute(); |
|
| 887 |
- $updateconvRes->closeCursor(); |
|
| 888 |
- } |
|
| 889 |
- } |
|
| 890 |
- } |
|
| 891 |
- |
|
| 892 |
- |
|
| 893 |
- /** |
|
| 894 |
- * @NoAdminRequired |
|
| 895 |
- */ |
|
| 896 |
- public function removerecrows($userId, $userDelDspName, $recmessagedbIDs) {
|
|
| 897 |
- |
|
| 898 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 899 |
- |
|
| 900 |
- /* The user who deletes the messages is an admin */ |
|
| 901 |
- |
|
| 902 |
- foreach ($recmessagedbIDs as $key => $rowtodelrw) {
|
|
| 903 |
- |
|
| 904 |
- $rowtodelarr = explode("|", $rowtodelrw);
|
|
| 905 |
- $msgDbId = $rowtodelarr[0]; |
|
| 906 |
- $msgProvId = $rowtodelarr[1]; |
|
| 907 |
- |
|
| 908 |
- // Delete the message |
|
| 909 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 910 |
- |
|
| 911 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 912 |
- $this->removeMsgFromConv($msgProvId); |
|
| 913 |
- |
|
| 914 |
- $rdlquery = $this->connection->prepare('
|
|
| 915 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 916 |
- WHERE `message_id` = ?'); |
|
| 917 |
- $delRes = $rdlquery->execute([$msgProvId]); |
|
| 918 |
- $delRes->closeCursor(); |
|
| 919 |
- } else {
|
|
| 920 |
- $rdlquery = $this->connection->prepare('
|
|
| 921 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 922 |
- WHERE `id` = ?'); |
|
| 923 |
- $delRes = $rdlquery->execute([$msgDbId]); |
|
| 924 |
- $delRes->closeCursor(); |
|
| 925 |
- } |
|
| 926 |
- } |
|
| 927 |
- |
|
| 928 |
- // Reindex the table of received messages |
|
| 929 |
- $sqlupdate = $this->connection->prepare('
|
|
| 930 |
- SET @resetrec = 0; |
|
| 931 |
- UPDATE `*PREFIX*sms_relent_received` |
|
| 932 |
- SET `id` = @resetrec := @resetrec + 1; |
|
| 933 |
- ALTER TABLE `*PREFIX*sms_relent_received` auto_increment=1;'); |
|
| 934 |
- $updateRes = $sqlupdate->execute(); |
|
| 935 |
- $updateRes->closeCursor(); |
|
| 936 |
- |
|
| 937 |
- return "success"; |
|
| 938 |
- |
|
| 939 |
- } else {
|
|
| 940 |
- |
|
| 941 |
- /* The user who deletes the messages is not an admin */ |
|
| 942 |
- |
|
| 943 |
- $permcheck = false; |
|
| 944 |
- $delcheck = 0; |
|
| 945 |
- foreach ($recmessagedbIDs as $key => $rowtodelrw) {
|
|
| 946 |
- |
|
| 947 |
- $rowtodelarr = explode("|", $rowtodelrw);
|
|
| 948 |
- $msgDbId = $rowtodelarr[0]; |
|
| 949 |
- $msgProvId = $rowtodelarr[1]; |
|
| 950 |
- |
|
| 951 |
- // Get the phone number on which the message was received, and the number's provider |
|
| 952 |
- $getphprv = $this->connection->prepare('SELECT `id`, `to` FROM `*PREFIX*sms_relent_received` WHERE `id` = ?');
|
|
| 953 |
- $getphprvres = $getphprv->execute([$msgDbId]); |
|
| 954 |
- $phnmbrprov = $getphprvres->fetch(); |
|
| 955 |
- $getphprvres->closeCursor(); |
|
| 956 |
- |
|
| 957 |
- if ($phnmbrprov) {
|
|
| 958 |
- $retrphprovraw = $phnmbrprov['to']; |
|
| 959 |
- $retrphprovarr = explode(": ", $retrphprovraw);
|
|
| 960 |
- $retrprovider = $retrphprovarr[0]; |
|
| 961 |
- $retrphnumber = "%" . $retrphprovarr[1] . "%"; |
|
| 962 |
- |
|
| 963 |
- // Get the username of the admin who shared the retrieved phone number with the non-admin user |
|
| 964 |
- $getadm = $this->connection->prepare('SELECT `user_id`, `available_numbers` FROM `*PREFIX*sms_relent_settings` WHERE `available_numbers` LIKE ?');
|
|
| 965 |
- $getadmres = $getadm->execute([$retrphnumber]); |
|
| 966 |
- $admunameretr = []; |
|
| 967 |
- while ($getadmuname = $getadmres->fetch()) {
|
|
| 968 |
- $admunameretr[] = $getadmuname['user_id']; |
|
| 969 |
- } |
|
| 970 |
- $getadmres->closeCursor(); |
|
| 971 |
- |
|
| 972 |
- if ($admunameretr) {
|
|
| 973 |
- foreach ($admunameretr as $admkey => $admuname) {
|
|
| 974 |
- |
|
| 975 |
- // Check if the retrieved admin allowed the user to delete messages |
|
| 976 |
- $userDspNameder = "%" . $userDelDspName . "%"; |
|
| 977 |
- $usrsgrpsdel = 1; |
|
| 978 |
- |
|
| 979 |
- if ($retrprovider == "Telnyx") {
|
|
| 980 |
- |
|
| 981 |
- $checkperm = $this->connection->prepare('SELECT `user_id`, `tnx_users_allowed`, `tnx_users_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `tnx_users_allowed` LIKE ? AND `tnx_users_del` = ?');
|
|
| 982 |
- $checkpermres = $checkperm->execute([$admuname, $userDspNameder, $usrsgrpsdel]); |
|
| 983 |
- $admallwddel = $checkpermres->fetch(); |
|
| 984 |
- $checkpermres->closeCursor(); |
|
| 985 |
- |
|
| 986 |
- // If the user has been allowed to delete messages by Display Name, delete the current message |
|
| 987 |
- if ($admallwddel) {
|
|
| 988 |
- |
|
| 989 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 990 |
- |
|
| 991 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 992 |
- $this->removeMsgFromConv($msgProvId); |
|
| 993 |
- |
|
| 994 |
- $delquery = $this->connection->prepare('
|
|
| 995 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 996 |
- WHERE `message_id` = ?'); |
|
| 997 |
- $qrdelResult = $delquery->execute([$msgProvId]); |
|
| 998 |
- $qrdelResult->closeCursor(); |
|
| 999 |
- $permcheck = true; |
|
| 1000 |
- $delcheck++; |
|
| 1001 |
- } else {
|
|
| 1002 |
- $delquery = $this->connection->prepare('
|
|
| 1003 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1004 |
- WHERE `id` = ?'); |
|
| 1005 |
- $qrdelResult = $delquery->execute([$msgDbId]); |
|
| 1006 |
- $qrdelResult->closeCursor(); |
|
| 1007 |
- $permcheck = true; |
|
| 1008 |
- $delcheck++; |
|
| 1009 |
- } |
|
| 1010 |
- |
|
| 1011 |
- } else {
|
|
| 1012 |
- // Check if the user has been allowed to delete messages by group |
|
| 1013 |
- $checkpermgrp = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_groups_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `tnx_groups_del` = ?');
|
|
| 1014 |
- $checkpermgrpres = $checkpermgrp->execute([$admuname, $usrsgrpsdel]); |
|
| 1015 |
- $admallwddelgrp = $checkpermgrpres->fetch(); |
|
| 1016 |
- $checkpermgrpres->closeCursor(); |
|
| 1017 |
- |
|
| 1018 |
- if ($admallwddelgrp) {
|
|
| 1019 |
- // Get the groups to which the current user belongs |
|
| 1020 |
- $getusrgrp = $this->connection->prepare('
|
|
| 1021 |
- SELECT `gid`, `uid` |
|
| 1022 |
- FROM `*PREFIX*group_user` |
|
| 1023 |
- WHERE `uid` = ?'); |
|
| 1024 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 1025 |
- |
|
| 1026 |
- $usergrps = []; |
|
| 1027 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 1028 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 1029 |
- } |
|
| 1030 |
- $getusrgrpres->closeCursor(); |
|
| 1031 |
- |
|
| 1032 |
- $groupsallowed = explode("|", $admallwddelgrp['tnx_groups_allowed']);
|
|
| 1033 |
- |
|
| 1034 |
- if ($usergrps && $groupsallowed) {
|
|
| 1035 |
- $countGrps = array_intersect($usergrps, $groupsallowed); |
|
| 1036 |
- |
|
| 1037 |
- // If the user has been allowed to delete messages by group, delete the current message |
|
| 1038 |
- if (count($countGrps) > 0) {
|
|
| 1039 |
- |
|
| 1040 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1041 |
- |
|
| 1042 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1043 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1044 |
- |
|
| 1045 |
- $delquery = $this->connection->prepare('
|
|
| 1046 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1047 |
- WHERE `message_id` = ?'); |
|
| 1048 |
- $qrdelResult = $delquery->execute([$msgProvId]); |
|
| 1049 |
- $qrdelResult->closeCursor(); |
|
| 1050 |
- $permcheck = true; |
|
| 1051 |
- $delcheck++; |
|
| 1052 |
- } else {
|
|
| 1053 |
- $delquery = $this->connection->prepare('
|
|
| 1054 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1055 |
- WHERE `id` = ?'); |
|
| 1056 |
- $qrdelResult = $delquery->execute([$msgDbId]); |
|
| 1057 |
- $qrdelResult->closeCursor(); |
|
| 1058 |
- $permcheck = true; |
|
| 1059 |
- $delcheck++; |
|
| 1060 |
- } |
|
| 1061 |
- |
|
| 1062 |
- } |
|
| 1063 |
- } |
|
| 1064 |
- } |
|
| 1065 |
- } |
|
| 1066 |
- |
|
| 1067 |
- } elseif ($retrprovider == "Plivo") {
|
|
| 1068 |
- |
|
| 1069 |
- $checkperm = $this->connection->prepare('SELECT `user_id`, `plv_users_allowed`, `plv_users_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `plv_users_allowed` LIKE ? AND `plv_users_del` = ?');
|
|
| 1070 |
- $checkpermres = $checkperm->execute([$admuname, $userDspNameder, $usrsgrpsdel]); |
|
| 1071 |
- $admallwddel = $checkpermres->fetch(); |
|
| 1072 |
- $checkpermres->closeCursor(); |
|
| 1073 |
- |
|
| 1074 |
- // If the user has been allowed to delete messages by Display Name, delete the current message |
|
| 1075 |
- if ($admallwddel) {
|
|
| 1076 |
- |
|
| 1077 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1078 |
- |
|
| 1079 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1080 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1081 |
- |
|
| 1082 |
- $delquery = $this->connection->prepare('
|
|
| 1083 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1084 |
- WHERE `message_id` = ?'); |
|
| 1085 |
- $qrdelResult = $delquery->execute([$msgProvId]); |
|
| 1086 |
- $qrdelResult->closeCursor(); |
|
| 1087 |
- $permcheck = true; |
|
| 1088 |
- $delcheck++; |
|
| 1089 |
- } else {
|
|
| 1090 |
- $delquery = $this->connection->prepare('
|
|
| 1091 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1092 |
- WHERE `id` = ?'); |
|
| 1093 |
- $qrdelResult = $delquery->execute([$msgDbId]); |
|
| 1094 |
- $qrdelResult->closeCursor(); |
|
| 1095 |
- $permcheck = true; |
|
| 1096 |
- $delcheck++; |
|
| 1097 |
- } |
|
| 1098 |
- |
|
| 1099 |
- } else {
|
|
| 1100 |
- // Check if the user has been allowed to delete messages by group |
|
| 1101 |
- $checkpermgrp = $this->connection->prepare('SELECT `user_id`, `plv_groups_allowed`, `plv_groups_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `plv_groups_del` = ?');
|
|
| 1102 |
- $checkpermgrpres = $checkpermgrp->execute([$admuname, $usrsgrpsdel]); |
|
| 1103 |
- $admallwddelgrp = $checkpermgrpres->fetch(); |
|
| 1104 |
- $checkpermgrpres->closeCursor(); |
|
| 1105 |
- |
|
| 1106 |
- if ($admallwddelgrp) {
|
|
| 1107 |
- // Get the groups to which the current user belongs |
|
| 1108 |
- $getusrgrp = $this->connection->prepare('
|
|
| 1109 |
- SELECT `gid`, `uid` |
|
| 1110 |
- FROM `*PREFIX*group_user` |
|
| 1111 |
- WHERE `uid` = ?'); |
|
| 1112 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 1113 |
- |
|
| 1114 |
- $usergrps = []; |
|
| 1115 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 1116 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 1117 |
- } |
|
| 1118 |
- $getusrgrpres->closeCursor(); |
|
| 1119 |
- |
|
| 1120 |
- $groupsallowed = explode("|", $admallwddelgrp['plv_groups_allowed']);
|
|
| 1121 |
- |
|
| 1122 |
- if ($usergrps && $groupsallowed) {
|
|
| 1123 |
- $countGrps = array_intersect($usergrps, $groupsallowed); |
|
| 1124 |
- |
|
| 1125 |
- // If the user has been allowed to delete messages by group, delete the current message |
|
| 1126 |
- if (count($countGrps) > 0) {
|
|
| 1127 |
- |
|
| 1128 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1129 |
- |
|
| 1130 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1131 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1132 |
- |
|
| 1133 |
- $delquery = $this->connection->prepare('
|
|
| 1134 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1135 |
- WHERE `message_id` = ?'); |
|
| 1136 |
- $qrdelResult = $delquery->execute([$msgProvId]); |
|
| 1137 |
- $qrdelResult->closeCursor(); |
|
| 1138 |
- $permcheck = true; |
|
| 1139 |
- $delcheck++; |
|
| 1140 |
- } else {
|
|
| 1141 |
- $delquery = $this->connection->prepare('
|
|
| 1142 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1143 |
- WHERE `id` = ?'); |
|
| 1144 |
- $qrdelResult = $delquery->execute([$msgDbId]); |
|
| 1145 |
- $qrdelResult->closeCursor(); |
|
| 1146 |
- $permcheck = true; |
|
| 1147 |
- $delcheck++; |
|
| 1148 |
- } |
|
| 1149 |
- } |
|
| 1150 |
- } |
|
| 1151 |
- } |
|
| 1152 |
- } |
|
| 1153 |
- |
|
| 1154 |
- } elseif ($retrprovider == "Twilio") {
|
|
| 1155 |
- |
|
| 1156 |
- $checkperm = $this->connection->prepare('SELECT `user_id`, `twl_users_allowed`, `twl_users_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `twl_users_allowed` LIKE ? AND `twl_users_del` = ?');
|
|
| 1157 |
- $checkpermres = $checkperm->execute([$admuname, $userDspNameder, $usrsgrpsdel]); |
|
| 1158 |
- $admallwddel = $checkpermres->fetch(); |
|
| 1159 |
- $checkpermres->closeCursor(); |
|
| 1160 |
- |
|
| 1161 |
- // If the user has been allowed to delete messages by Display Name, delete the current message |
|
| 1162 |
- if ($admallwddel) {
|
|
| 1163 |
- |
|
| 1164 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1165 |
- |
|
| 1166 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1167 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1168 |
- |
|
| 1169 |
- $delquery = $this->connection->prepare('
|
|
| 1170 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1171 |
- WHERE `message_id` = ?'); |
|
| 1172 |
- $qrdelResult = $delquery->execute([$msgProvId]); |
|
| 1173 |
- $qrdelResult->closeCursor(); |
|
| 1174 |
- $permcheck = true; |
|
| 1175 |
- $delcheck++; |
|
| 1176 |
- } else {
|
|
| 1177 |
- $delquery = $this->connection->prepare('
|
|
| 1178 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1179 |
- WHERE `id` = ?'); |
|
| 1180 |
- $qrdelResult = $delquery->execute([$msgDbId]); |
|
| 1181 |
- $qrdelResult->closeCursor(); |
|
| 1182 |
- $permcheck = true; |
|
| 1183 |
- $delcheck++; |
|
| 1184 |
- } |
|
| 1185 |
- |
|
| 1186 |
- } else {
|
|
| 1187 |
- // Check if the user has been allowed to delete messages by group |
|
| 1188 |
- $checkpermgrp = $this->connection->prepare('SELECT `user_id`, `twl_groups_allowed`, `twl_groups_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `twl_groups_del` = ?');
|
|
| 1189 |
- $checkpermgrpres = $checkpermgrp->execute([$admuname, $usrsgrpsdel]); |
|
| 1190 |
- $admallwddelgrp = $checkpermgrpres->fetch(); |
|
| 1191 |
- $checkpermgrpres->closeCursor(); |
|
| 1192 |
- |
|
| 1193 |
- if ($admallwddelgrp) {
|
|
| 1194 |
- // Get the groups to which the current user belongs |
|
| 1195 |
- $getusrgrp = $this->connection->prepare('
|
|
| 1196 |
- SELECT `gid`, `uid` |
|
| 1197 |
- FROM `*PREFIX*group_user` |
|
| 1198 |
- WHERE `uid` = ?'); |
|
| 1199 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 1200 |
- |
|
| 1201 |
- $usergrps = []; |
|
| 1202 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 1203 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 1204 |
- } |
|
| 1205 |
- $getusrgrpres->closeCursor(); |
|
| 1206 |
- |
|
| 1207 |
- $groupsallowed = explode("|", $admallwddelgrp['twl_groups_allowed']);
|
|
| 1208 |
- |
|
| 1209 |
- if ($usergrps && $groupsallowed) {
|
|
| 1210 |
- $countGrps = array_intersect($usergrps, $groupsallowed); |
|
| 1211 |
- |
|
| 1212 |
- // If the user has been allowed to delete messages by group, delete the current message |
|
| 1213 |
- if (count($countGrps) > 0) {
|
|
| 1214 |
- |
|
| 1215 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1216 |
- |
|
| 1217 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1218 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1219 |
- |
|
| 1220 |
- $delquery = $this->connection->prepare('
|
|
| 1221 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1222 |
- WHERE `message_id` = ?'); |
|
| 1223 |
- $qrdelResult = $delquery->execute([$msgProvId]); |
|
| 1224 |
- $qrdelResult->closeCursor(); |
|
| 1225 |
- $permcheck = true; |
|
| 1226 |
- $delcheck++; |
|
| 1227 |
- } else {
|
|
| 1228 |
- $delquery = $this->connection->prepare('
|
|
| 1229 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1230 |
- WHERE `id` = ?'); |
|
| 1231 |
- $qrdelResult = $delquery->execute([$msgDbId]); |
|
| 1232 |
- $qrdelResult->closeCursor(); |
|
| 1233 |
- $permcheck = true; |
|
| 1234 |
- $delcheck++; |
|
| 1235 |
- } |
|
| 1236 |
- |
|
| 1237 |
- } |
|
| 1238 |
- } |
|
| 1239 |
- } |
|
| 1240 |
- } |
|
| 1241 |
- |
|
| 1242 |
- } elseif ($retrprovider == "Flowroute") {
|
|
| 1243 |
- |
|
| 1244 |
- $checkperm = $this->connection->prepare('SELECT `user_id`, `flr_users_allowed`, `flr_users_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `flr_users_allowed` LIKE ? AND `flr_users_del` = ?');
|
|
| 1245 |
- $checkpermres = $checkperm->execute([$admuname, $userDspNameder, $usrsgrpsdel]); |
|
| 1246 |
- $admallwddel = $checkpermres->fetch(); |
|
| 1247 |
- $checkpermres->closeCursor(); |
|
| 1248 |
- |
|
| 1249 |
- // If the user has been allowed to delete messages by Display Name, delete the current message |
|
| 1250 |
- if ($admallwddel) {
|
|
| 1251 |
- |
|
| 1252 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1253 |
- |
|
| 1254 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1255 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1256 |
- |
|
| 1257 |
- $delquery = $this->connection->prepare('
|
|
| 1258 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1259 |
- WHERE `message_id` = ?'); |
|
| 1260 |
- $qrdelResult = $delquery->execute([$msgProvId]); |
|
| 1261 |
- $qrdelResult->closeCursor(); |
|
| 1262 |
- $permcheck = true; |
|
| 1263 |
- $delcheck++; |
|
| 1264 |
- } else {
|
|
| 1265 |
- $delquery = $this->connection->prepare('
|
|
| 1266 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1267 |
- WHERE `id` = ?'); |
|
| 1268 |
- $qrdelResult = $delquery->execute([$msgDbId]); |
|
| 1269 |
- $qrdelResult->closeCursor(); |
|
| 1270 |
- $permcheck = true; |
|
| 1271 |
- $delcheck++; |
|
| 1272 |
- } |
|
| 1273 |
- |
|
| 1274 |
- } else {
|
|
| 1275 |
- // Check if the user has been allowed to delete messages by group |
|
| 1276 |
- $checkpermgrp = $this->connection->prepare('SELECT `user_id`, `flr_groups_allowed`, `flr_groups_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `flr_groups_del` = ?');
|
|
| 1277 |
- $checkpermgrpres = $checkpermgrp->execute([$admuname, $usrsgrpsdel]); |
|
| 1278 |
- $admallwddelgrp = $checkpermgrpres->fetch(); |
|
| 1279 |
- $checkpermgrpres->closeCursor(); |
|
| 1280 |
- |
|
| 1281 |
- if ($admallwddelgrp) {
|
|
| 1282 |
- // Get the groups to which the current user belongs |
|
| 1283 |
- $getusrgrp = $this->connection->prepare('
|
|
| 1284 |
- SELECT `gid`, `uid` |
|
| 1285 |
- FROM `*PREFIX*group_user` |
|
| 1286 |
- WHERE `uid` = ?'); |
|
| 1287 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 1288 |
- |
|
| 1289 |
- $usergrps = []; |
|
| 1290 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 1291 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 1292 |
- } |
|
| 1293 |
- $getusrgrpres->closeCursor(); |
|
| 1294 |
- |
|
| 1295 |
- $groupsallowed = explode("|", $admallwddelgrp['flr_groups_allowed']);
|
|
| 1296 |
- |
|
| 1297 |
- if ($usergrps && $groupsallowed) {
|
|
| 1298 |
- $countGrps = array_intersect($usergrps, $groupsallowed); |
|
| 1299 |
- |
|
| 1300 |
- // If the user has been allowed to delete messages by group, delete the current message |
|
| 1301 |
- if (count($countGrps) > 0) {
|
|
| 1302 |
- |
|
| 1303 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1304 |
- |
|
| 1305 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1306 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1307 |
- |
|
| 1308 |
- $delquery = $this->connection->prepare('
|
|
| 1309 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1310 |
- WHERE `message_id` = ?'); |
|
| 1311 |
- $qrdelResult = $delquery->execute([$msgProvId]); |
|
| 1312 |
- $qrdelResult->closeCursor(); |
|
| 1313 |
- $permcheck = true; |
|
| 1314 |
- $delcheck++; |
|
| 1315 |
- } else {
|
|
| 1316 |
- $delquery = $this->connection->prepare('
|
|
| 1317 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 1318 |
- WHERE `id` = ?'); |
|
| 1319 |
- $qrdelResult = $delquery->execute([$msgDbId]); |
|
| 1320 |
- $qrdelResult->closeCursor(); |
|
| 1321 |
- $permcheck = true; |
|
| 1322 |
- $delcheck++; |
|
| 1323 |
- } |
|
| 1324 |
- |
|
| 1325 |
- } |
|
| 1326 |
- } |
|
| 1327 |
- } |
|
| 1328 |
- } |
|
| 1329 |
- } |
|
| 1330 |
- |
|
| 1331 |
- } |
|
| 1332 |
- } |
|
| 1333 |
- } |
|
| 1334 |
- } |
|
| 1335 |
- |
|
| 1336 |
- if ($delcheck > 0) {
|
|
| 1337 |
- // Reindex the table of received messages |
|
| 1338 |
- $sqlupdate = $this->connection->prepare('
|
|
| 1339 |
- SET @resetrec = 0; |
|
| 1340 |
- UPDATE `*PREFIX*sms_relent_received` |
|
| 1341 |
- SET `id` = @resetrec := @resetrec + 1; |
|
| 1342 |
- ALTER TABLE `*PREFIX*sms_relent_received` auto_increment=1;'); |
|
| 1343 |
- $updateRes = $sqlupdate->execute(); |
|
| 1344 |
- $updateRes->closeCursor(); |
|
| 1345 |
- } |
|
| 1346 |
- |
|
| 1347 |
- if ($permcheck) { return "success"; } else { return "not allowed"; }
|
|
| 1348 |
- } |
|
| 1349 |
- } |
|
| 1350 |
- |
|
| 1351 |
- |
|
| 1352 |
- /** |
|
| 1353 |
- * @NoAdminRequired |
|
| 1354 |
- */ |
|
| 1355 |
- public function getsenttable($userId) {
|
|
| 1356 |
- |
|
| 1357 |
- // Get the user's preferences from the settings |
|
| 1358 |
- $getgamcheck = $this->connection->prepare('
|
|
| 1359 |
- SELECT `user_id`, `show_all_messages`, `show_display_names` |
|
| 1360 |
- FROM `*PREFIX*sms_relent_settings` WHERE `user_id` = ?'); |
|
| 1361 |
- $getgamcheckres = $getgamcheck->execute([$userId]); |
|
| 1362 |
- $getcrgamspref = $getgamcheckres->fetch(); |
|
| 1363 |
- $crgamspref = $getcrgamspref['show_all_messages']; |
|
| 1364 |
- $crdnamespref = $getcrgamspref['show_display_names']; |
|
| 1365 |
- $getgamcheckres->closeCursor(); |
|
| 1366 |
- |
|
| 1367 |
- |
|
| 1368 |
- // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see |
|
| 1369 |
- if ($crgamspref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 1370 |
- |
|
| 1371 |
- // Get the groups and users that were allowed access to the API keys |
|
| 1372 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
|
|
| 1373 |
- `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac` |
|
| 1374 |
- WHERE `user_id` = ?'); |
|
| 1375 |
- $getgrpsres = $getgrps->execute([$userId]); |
|
| 1376 |
- $getgrpsusr = $getgrpsres->fetch(); |
|
| 1377 |
- $getgrpsres->closeCursor(); |
|
| 1378 |
- |
|
| 1379 |
- if ($getgrpsusr) {
|
|
| 1380 |
- |
|
| 1381 |
- if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
|
|
| 1382 |
- if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
|
|
| 1383 |
- if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
|
|
| 1384 |
- if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
|
|
| 1385 |
- |
|
| 1386 |
- $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers); |
|
| 1387 |
- $allwdusersunq = array_filter(array_unique($allwdusersarr)); |
|
| 1388 |
- |
|
| 1389 |
- if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
|
|
| 1390 |
- if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
|
|
| 1391 |
- if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
|
|
| 1392 |
- if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
|
|
| 1393 |
- |
|
| 1394 |
- $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups); |
|
| 1395 |
- $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr)); |
|
| 1396 |
- |
|
| 1397 |
- } else {
|
|
| 1398 |
- $allwdusersunq = []; |
|
| 1399 |
- $allwdgroupsunq = []; |
|
| 1400 |
- } |
|
| 1401 |
- |
|
| 1402 |
- // Get the username for each Display Name of the allowed users |
|
| 1403 |
- $allwdusersfnl = []; |
|
| 1404 |
- foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
|
|
| 1405 |
- |
|
| 1406 |
- $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 1407 |
- $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]); |
|
| 1408 |
- $acdatausrname = $getacdatausrnmres->fetch(); |
|
| 1409 |
- if ($acdatausrname) {
|
|
| 1410 |
- $allwdusersfnl[] = $acdatausrname['uid']; |
|
| 1411 |
- } |
|
| 1412 |
- $getacdatausrnmres->closeCursor(); |
|
| 1413 |
- } |
|
| 1414 |
- |
|
| 1415 |
- // Get the users from all the allowed groups |
|
| 1416 |
- $allwdusersgrpmlt = []; |
|
| 1417 |
- foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
|
|
| 1418 |
- |
|
| 1419 |
- // Get all the users that belong to the current group, if the current group is different from 'admin' |
|
| 1420 |
- if ($prgrpvalue != 'admin') {
|
|
| 1421 |
- $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
|
|
| 1422 |
- $getusringroupres = $getusringroup->execute([$prgrpvalue]); |
|
| 1423 |
- |
|
| 1424 |
- while ($getusrname = $getusringroupres->fetch()) {
|
|
| 1425 |
- |
|
| 1426 |
- $allwdusersgrpmlt[] = $getusrname['uid']; |
|
| 1427 |
- } |
|
| 1428 |
- $getusringroupres->closeCursor(); |
|
| 1429 |
- } |
|
| 1430 |
- } |
|
| 1431 |
- $allwdusersgrpfnl = array_unique($allwdusersgrpmlt); |
|
| 1432 |
- |
|
| 1433 |
- $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl); |
|
| 1434 |
- $allusruniquest = array_unique($allusr); |
|
| 1435 |
- |
|
| 1436 |
- if ($allusruniquest) {
|
|
| 1437 |
- array_unshift($allusruniquest, $userId); |
|
| 1438 |
- $allusrunique = $allusruniquest; |
|
| 1439 |
- } else { $allusrunique = [$userId]; }
|
|
| 1440 |
- |
|
| 1441 |
- $allusruniquesec = "'" . implode("','", $allusrunique) . "'";
|
|
| 1442 |
- } |
|
| 1443 |
- |
|
| 1444 |
- // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys |
|
| 1445 |
- if ($crgamspref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 1446 |
- |
|
| 1447 |
- if ($crdnamespref == 1) {
|
|
| 1448 |
- |
|
| 1449 |
- $resultsent = $this->connection->executeQuery("
|
|
| 1450 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname` |
|
| 1451 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1452 |
- WHERE `user_id` IN (" . $allusruniquesec . ")");
|
|
| 1453 |
- } else {
|
|
| 1454 |
- |
|
| 1455 |
- $resultsent = $this->connection->executeQuery("
|
|
| 1456 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message` |
|
| 1457 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1458 |
- WHERE `user_id` IN (" . $allusruniquesec . ")");
|
|
| 1459 |
- } |
|
| 1460 |
- |
|
| 1461 |
- // If the user is an admin and he wants to see only his messages |
|
| 1462 |
- } elseif ($crgamspref == 0 && $this->groupManager->isAdmin($userId)) {
|
|
| 1463 |
- |
|
| 1464 |
- if ($crdnamespref == 1) {
|
|
| 1465 |
- $getsenttbl = $this->connection->prepare('
|
|
| 1466 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname` |
|
| 1467 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1468 |
- WHERE `user_id` = ?'); |
|
| 1469 |
- $resultsent = $getsenttbl->execute([$userId]); |
|
| 1470 |
- } else {
|
|
| 1471 |
- $getsenttbl = $this->connection->prepare('
|
|
| 1472 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message` |
|
| 1473 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1474 |
- WHERE `user_id` = ?'); |
|
| 1475 |
- $resultsent = $getsenttbl->execute([$userId]); |
|
| 1476 |
- } |
|
| 1477 |
- |
|
| 1478 |
- // If the user is not an admin |
|
| 1479 |
- } elseif (!$this->groupManager->isAdmin($userId)) {
|
|
| 1480 |
- |
|
| 1481 |
- // Get the Display Name of the current user |
|
| 1482 |
- $dsplnme = 'displayname'; |
|
| 1483 |
- $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
|
|
| 1484 |
- $getacdatadnres = $getacdatadn->execute([$userId, $dsplnme]); |
|
| 1485 |
- $acdatausrdnadm = $getacdatadnres->fetch(); |
|
| 1486 |
- $cruserdname = $acdatausrdnadm['value']; |
|
| 1487 |
- $getacdatadnres->closeCursor(); |
|
| 1488 |
- |
|
| 1489 |
- // Get the groups to which the current user belongs |
|
| 1490 |
- $getusrgrp = $this->connection->prepare('
|
|
| 1491 |
- SELECT `gid`, `uid` |
|
| 1492 |
- FROM `*PREFIX*group_user` |
|
| 1493 |
- WHERE `uid` = ?'); |
|
| 1494 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 1495 |
- |
|
| 1496 |
- $usergrps = []; |
|
| 1497 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 1498 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 1499 |
- } |
|
| 1500 |
- $getusrgrpres->closeCursor(); |
|
| 1501 |
- |
|
| 1502 |
- // Get the restrictions from the 'sms_relent_restrict' table |
|
| 1503 |
- $getrestr = $this->connection->prepare('
|
|
| 1504 |
- SELECT `phone_number`, `groups`, `users` |
|
| 1505 |
- FROM `*PREFIX*sms_relent_restrict`'); |
|
| 1506 |
- $getrestrres = $getrestr->execute(); |
|
| 1507 |
- |
|
| 1508 |
- $restrdata = []; |
|
| 1509 |
- while ($restrfetched = $getrestrres->fetch()) {
|
|
| 1510 |
- $restrdata[] = $restrfetched; |
|
| 1511 |
- } |
|
| 1512 |
- $getrestrres->closeCursor(); |
|
| 1513 |
- |
|
| 1514 |
- // Get the phone numbers that the user is allowed/not allowed to use |
|
| 1515 |
- $restrPhoneNmbrs = []; |
|
| 1516 |
- $allowedPhoneNmbrs = []; |
|
| 1517 |
- if ($restrdata) {
|
|
| 1518 |
-// $restrPhoneNmbrs = []; |
|
| 1519 |
-// $allowedPhoneNmbrs = []; |
|
| 1520 |
- foreach ($restrdata as $rskey => $rsvalue) {
|
|
| 1521 |
- |
|
| 1522 |
- $chck = 0; |
|
| 1523 |
- $restrgrparr = explode("|", $rsvalue['groups']);
|
|
| 1524 |
- foreach ($restrgrparr as $rkey => $rvalue) {
|
|
| 1525 |
- if ($rvalue) {
|
|
| 1526 |
- if (strpos(implode("|", $usergrps), $rvalue) !== false) { $chck++; }
|
|
| 1527 |
- } |
|
| 1528 |
- } |
|
| 1529 |
- if (strpos($rsvalue['users'], $cruserdname) !== false) { $chck++; }
|
|
| 1530 |
- |
|
| 1531 |
- if ($chck == 0) {
|
|
| 1532 |
- $restrPhoneNmbrs[] = $rsvalue['phone_number']; |
|
| 1533 |
- } |
|
| 1534 |
- } |
|
| 1535 |
- |
|
| 1536 |
- $allowedPhNmbrs = $this->getsmsnumbers($userId); |
|
| 1537 |
- |
|
| 1538 |
- foreach ($allowedPhNmbrs as $apnkey => $apnvalue) {
|
|
| 1539 |
- $crphnmbr = explode(": ", $apnvalue);
|
|
| 1540 |
- if ($crphnmbr[0] == 'Tx') {
|
|
| 1541 |
- $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1]; |
|
| 1542 |
- } elseif ($crphnmbr[0] == 'Pl') {
|
|
| 1543 |
- $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1]; |
|
| 1544 |
- } elseif ($crphnmbr[0] == 'Tw') {
|
|
| 1545 |
- $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1]; |
|
| 1546 |
- } elseif ($crphnmbr[0] == 'Fl') {
|
|
| 1547 |
- $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1]; |
|
| 1548 |
- } |
|
| 1549 |
- } |
|
| 1550 |
- |
|
| 1551 |
- $procalwduid = $allowedPhoneNmbrs; |
|
| 1552 |
- $procalwduidsec = "'" . implode("','", $procalwduid) . "'";
|
|
| 1553 |
- |
|
| 1554 |
- if ($crdnamespref == 1) {
|
|
| 1555 |
- if ($procalwduidsec != "''") {
|
|
| 1556 |
- |
|
| 1557 |
- $resultsent = $this->connection->executeQuery("
|
|
| 1558 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname` |
|
| 1559 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1560 |
- WHERE `user_id` = '$userId' OR `from` IN (" . $procalwduidsec . ")");
|
|
| 1561 |
- } else {
|
|
| 1562 |
- $getsenttbl = $this->connection->prepare('
|
|
| 1563 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname` |
|
| 1564 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1565 |
- WHERE `user_id` = ?'); |
|
| 1566 |
- $resultsent = $getsenttbl->execute([$userId]); |
|
| 1567 |
- } |
|
| 1568 |
- } else {
|
|
| 1569 |
- if ($procalwduidsec != "''") {
|
|
| 1570 |
- |
|
| 1571 |
- $resultsent = $this->connection->executeQuery("
|
|
| 1572 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message` |
|
| 1573 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1574 |
- WHERE `user_id` = '$userId' OR `from` IN (" . $procalwduidsec . ")");
|
|
| 1575 |
- |
|
| 1576 |
- } else {
|
|
| 1577 |
- $getsenttbl = $this->connection->prepare('
|
|
| 1578 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message` |
|
| 1579 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1580 |
- WHERE `user_id` = ?'); |
|
| 1581 |
- $resultsent = $getsenttbl->execute([$userId]); |
|
| 1582 |
- } |
|
| 1583 |
- } |
|
| 1584 |
- |
|
| 1585 |
- } else {
|
|
| 1586 |
- |
|
| 1587 |
- if ($crdnamespref == 1) {
|
|
| 1588 |
- $getsenttbl = $this->connection->prepare('
|
|
| 1589 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname` |
|
| 1590 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1591 |
- WHERE `user_id` = ?'); |
|
| 1592 |
- $resultsent = $getsenttbl->execute([$userId]); |
|
| 1593 |
- } else {
|
|
| 1594 |
- $getsenttbl = $this->connection->prepare('
|
|
| 1595 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message` |
|
| 1596 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1597 |
- WHERE `user_id` = ?'); |
|
| 1598 |
- $resultsent = $getsenttbl->execute([$userId]); |
|
| 1599 |
- } |
|
| 1600 |
- } |
|
| 1601 |
- } |
|
| 1602 |
- |
|
| 1603 |
- |
|
| 1604 |
- $sentdatatable = []; |
|
| 1605 |
- while ($rowfetched = $resultsent->fetch()) {
|
|
| 1606 |
- $rowfetchedsc = htmlspecialchars($rowfetched["message"], ENT_QUOTES); |
|
| 1607 |
- $fetchedcont = str_replace(['<br />', '<br>', '</b>'], ['<br />', '<br>', '</b>'], $rowfetchedsc); |
|
| 1608 |
- $rowfetched["message"] = $fetchedcont; |
|
| 1609 |
- $sentdatatable[] = $rowfetched; |
|
| 1610 |
- } |
|
| 1611 |
- $resultsent->closeCursor(); |
|
| 1612 |
- |
|
| 1613 |
- $sentdatafromdb = $sentdatatable; |
|
| 1614 |
- |
|
| 1615 |
- |
|
| 1616 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 1617 |
- |
|
| 1618 |
- $sentdatafdb = ['datarows' => $sentdatafromdb, 'showdispnm' => $crdnamespref]; |
|
| 1619 |
- return $sentdatafdb; |
|
| 1620 |
- |
|
| 1621 |
- } else {
|
|
| 1622 |
- |
|
| 1623 |
- if ($restrdata) {
|
|
| 1624 |
- |
|
| 1625 |
- // Clean the phone numbers from tags |
|
| 1626 |
- $restrPhfin = []; |
|
| 1627 |
- foreach ($restrPhoneNmbrs as $phkey => $phvalue) {
|
|
| 1628 |
- |
|
| 1629 |
- $restrpharr = explode(": ", $phvalue);
|
|
| 1630 |
- $restrPhfin[] = $restrpharr[1]; |
|
| 1631 |
- } |
|
| 1632 |
- |
|
| 1633 |
- // Assemble the array of message rows that excludes the rows for the restricted phone numbers |
|
| 1634 |
- foreach ($sentdatafromdb as $smdkey => $smdvalue) {
|
|
| 1635 |
- |
|
| 1636 |
- if (str_contains($smdvalue['from'], "+")) {
|
|
| 1637 |
- $fromnmbrarr = explode("+", $smdvalue['from']);
|
|
| 1638 |
- if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
|
|
| 1639 |
- unset($sentdatafromdb[$smdkey]); |
|
| 1640 |
- } |
|
| 1641 |
- } else {
|
|
| 1642 |
- $frmnmbrarr = explode(": ", $smdvalue['from']);
|
|
| 1643 |
- if (count($frmnmbrarr) == 2) {
|
|
| 1644 |
- $nmbtbcmprd = $frmnmbrarr[1]; |
|
| 1645 |
- } else {
|
|
| 1646 |
- $nmbtbcmprd = $frmnmbrarr[0]; |
|
| 1647 |
- } |
|
| 1648 |
- |
|
| 1649 |
- if (in_array($nmbtbcmprd, $restrPhfin)) {
|
|
| 1650 |
- unset($sentdatafromdb[$smdkey]); |
|
| 1651 |
- } |
|
| 1652 |
- } |
|
| 1653 |
- } |
|
| 1654 |
- |
|
| 1655 |
- $sentdatadbproc = array_values($sentdatafromdb); |
|
| 1656 |
- |
|
| 1657 |
- $sentdatafdb = ['datarows' => $sentdatadbproc, 'showdispnm' => $crdnamespref]; |
|
| 1658 |
- return $sentdatafdb; |
|
| 1659 |
- |
|
| 1660 |
- } else {
|
|
| 1661 |
- |
|
| 1662 |
- $sentdatafdb = ['datarows' => $sentdatafromdb, 'showdispnm' => $crdnamespref]; |
|
| 1663 |
- return $sentdatafdb; |
|
| 1664 |
- } |
|
| 1665 |
- } |
|
| 1666 |
- } |
|
| 1667 |
- |
|
| 1668 |
- |
|
| 1669 |
- /** |
|
| 1670 |
- * @NoAdminRequired |
|
| 1671 |
- */ |
|
| 1672 |
- public function getsenttablefordel($userId) {
|
|
| 1673 |
- |
|
| 1674 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 1675 |
- |
|
| 1676 |
- $getsenttbldel = $this->connection->prepare('
|
|
| 1677 |
- SELECT `id`, `user_id`, `message_id`, `date`, `from`, `to`, `network`, `price`, `status`, `deliveryreceipt`, `message`, `author_displayname` |
|
| 1678 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 1679 |
- WHERE `user_id` = ?'); |
|
| 1680 |
- $resultsentdl = $getsenttbldel->execute([$userId]); |
|
| 1681 |
- |
|
| 1682 |
- $sentdatatable = []; |
|
| 1683 |
- while ($rowfetched = $resultsentdl->fetch()){
|
|
| 1684 |
- $sentdatatable[] = $rowfetched; |
|
| 1685 |
- } |
|
| 1686 |
- $resultsentdl->closeCursor(); |
|
| 1687 |
- |
|
| 1688 |
- $sentdatafromdb = $sentdatatable; |
|
| 1689 |
- |
|
| 1690 |
- return $sentdatafromdb; |
|
| 1691 |
- |
|
| 1692 |
- } else { return "not permitted"; }
|
|
| 1693 |
- } |
|
| 1694 |
- |
|
| 1695 |
- |
|
| 1696 |
- /** |
|
| 1697 |
- * @NoAdminRequired |
|
| 1698 |
- */ |
|
| 1699 |
- public function removesentrows($userId, $userstDelDspName, $sentmessagedbIDs) {
|
|
| 1700 |
- |
|
| 1701 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 1702 |
- |
|
| 1703 |
- /* The user who deletes the messages is an admin */ |
|
| 1704 |
- |
|
| 1705 |
- foreach ($sentmessagedbIDs as $key => $sentrowtodel) {
|
|
| 1706 |
- |
|
| 1707 |
- $rowtodelarr = explode("|", $sentrowtodel);
|
|
| 1708 |
- $msgDbId = $rowtodelarr[0]; |
|
| 1709 |
- $msgProvId = $rowtodelarr[1]; |
|
| 1710 |
- |
|
| 1711 |
- // Delete the message |
|
| 1712 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1713 |
- |
|
| 1714 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1715 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1716 |
- |
|
| 1717 |
- $smdlquery = $this->connection->prepare('
|
|
| 1718 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1719 |
- WHERE `message_id` = ?'); |
|
| 1720 |
- $delsmsgRes = $smdlquery->execute([$msgProvId]); |
|
| 1721 |
- $delsmsgRes->closeCursor(); |
|
| 1722 |
- |
|
| 1723 |
- } else {
|
|
| 1724 |
- $smdlquery = $this->connection->prepare('
|
|
| 1725 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1726 |
- WHERE `id` = ?'); |
|
| 1727 |
- $delsmsgRes = $smdlquery->execute([$msgDbId]); |
|
| 1728 |
- $delsmsgRes->closeCursor(); |
|
| 1729 |
- } |
|
| 1730 |
- } |
|
| 1731 |
- |
|
| 1732 |
- // Reindex the table of sent messages |
|
| 1733 |
- $sqlupdatest = $this->connection->prepare('
|
|
| 1734 |
- SET @resetsent = 0; |
|
| 1735 |
- UPDATE `*PREFIX*sms_relent_sent` |
|
| 1736 |
- SET `id` = @resetsent := @resetsent + 1; |
|
| 1737 |
- ALTER TABLE `*PREFIX*sms_relent_sent` auto_increment=1;'); |
|
| 1738 |
- $updatestRes = $sqlupdatest->execute(); |
|
| 1739 |
- $updatestRes->closeCursor(); |
|
| 1740 |
- |
|
| 1741 |
- return "success"; |
|
| 1742 |
- |
|
| 1743 |
- } else {
|
|
| 1744 |
- |
|
| 1745 |
- /* The user who deletes the messages is not an admin */ |
|
| 1746 |
- |
|
| 1747 |
- $permcheckst = false; |
|
| 1748 |
- $delstcheck = 0; |
|
| 1749 |
- foreach ($sentmessagedbIDs as $key => $sentrowtodel) {
|
|
| 1750 |
- |
|
| 1751 |
- $rowtodelarr = explode("|", $sentrowtodel);
|
|
| 1752 |
- $msgDbId = $rowtodelarr[0]; |
|
| 1753 |
- $msgProvId = $rowtodelarr[1]; |
|
| 1754 |
- |
|
| 1755 |
- // Get the phone number from which the message was sent, and the number's provider |
|
| 1756 |
- $getphprv = $this->connection->prepare('SELECT `id`, `user_id`, `from` FROM `*PREFIX*sms_relent_sent` WHERE `id` = ?');
|
|
| 1757 |
- $getphprvres = $getphprv->execute([$msgDbId]); |
|
| 1758 |
- $phnmbrprov = $getphprvres->fetch(); |
|
| 1759 |
- $getphprvres->closeCursor(); |
|
| 1760 |
- |
|
| 1761 |
- if ($phnmbrprov) {
|
|
| 1762 |
- |
|
| 1763 |
- $retrphprovraw = $phnmbrprov['from']; |
|
| 1764 |
- $retrphprovarr = explode(": ", $retrphprovraw);
|
|
| 1765 |
- $retrprovider = $retrphprovarr[0]; |
|
| 1766 |
- $retrphnumber = "%" . $retrphprovarr[1] . "%"; |
|
| 1767 |
- |
|
| 1768 |
- // Get the username of the admin who shared the retrieved phone number with the non-admin user |
|
| 1769 |
- $getadm = $this->connection->prepare('SELECT `user_id`, `available_numbers` FROM `*PREFIX*sms_relent_settings` WHERE `available_numbers` LIKE ?');
|
|
| 1770 |
- $getadmres = $getadm->execute([$retrphnumber]); |
|
| 1771 |
- $admunameretr = []; |
|
| 1772 |
- while ($getadmuname = $getadmres->fetch()) {
|
|
| 1773 |
- $admunameretr[] = $getadmuname['user_id']; |
|
| 1774 |
- } |
|
| 1775 |
- $getadmres->closeCursor(); |
|
| 1776 |
- |
|
| 1777 |
- if ($admunameretr) {
|
|
| 1778 |
- |
|
| 1779 |
- foreach ($admunameretr as $admkey => $admuname) {
|
|
| 1780 |
- |
|
| 1781 |
- // Check if the retrieved admin allowed the user to delete messages |
|
| 1782 |
- $userDspNameder = "%" . $userstDelDspName . "%"; |
|
| 1783 |
- $usrsgrpsdel = 1; |
|
| 1784 |
- |
|
| 1785 |
- if ($retrprovider == "Telnyx") {
|
|
| 1786 |
- |
|
| 1787 |
- $checkperm = $this->connection->prepare('SELECT `user_id`, `tnx_users_allowed`, `tnx_users_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `tnx_users_allowed` LIKE ? AND `tnx_users_del` = ?');
|
|
| 1788 |
- $checkpermres = $checkperm->execute([$admuname, $userDspNameder, $usrsgrpsdel]); |
|
| 1789 |
- $admallwddel = $checkpermres->fetch(); |
|
| 1790 |
- $checkpermres->closeCursor(); |
|
| 1791 |
- |
|
| 1792 |
- // If the user has been allowed to delete messages by Display Name, delete the current message |
|
| 1793 |
- if ($admallwddel) {
|
|
| 1794 |
- |
|
| 1795 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1796 |
- |
|
| 1797 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1798 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1799 |
- |
|
| 1800 |
- $smdlquery = $this->connection->prepare('
|
|
| 1801 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1802 |
- WHERE `message_id` = ?'); |
|
| 1803 |
- $delsmsgRes = $smdlquery->execute([$msgProvId]); |
|
| 1804 |
- $delsmsgRes->closeCursor(); |
|
| 1805 |
- $permcheckst = true; |
|
| 1806 |
- $delstcheck++; |
|
| 1807 |
- } else {
|
|
| 1808 |
- $smdlquery = $this->connection->prepare('
|
|
| 1809 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1810 |
- WHERE `id` = ?'); |
|
| 1811 |
- $delsmsgRes = $smdlquery->execute([$msgDbId]); |
|
| 1812 |
- $delsmsgRes->closeCursor(); |
|
| 1813 |
- $permcheckst = true; |
|
| 1814 |
- $delstcheck++; |
|
| 1815 |
- } |
|
| 1816 |
- |
|
| 1817 |
- } else {
|
|
| 1818 |
- // Check if the user has been allowed to delete messages by group |
|
| 1819 |
- $checkpermgrp = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_groups_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `tnx_groups_del` = ?');
|
|
| 1820 |
- $checkpermgrpres = $checkpermgrp->execute([$admuname, $usrsgrpsdel]); |
|
| 1821 |
- $admallwddelgrp = $checkpermgrpres->fetch(); |
|
| 1822 |
- $checkpermgrpres->closeCursor(); |
|
| 1823 |
- |
|
| 1824 |
- if ($admallwddelgrp) {
|
|
| 1825 |
- // Get the groups to which the current user belongs |
|
| 1826 |
- $getusrgrp = $this->connection->prepare('
|
|
| 1827 |
- SELECT `gid`, `uid` |
|
| 1828 |
- FROM `*PREFIX*group_user` |
|
| 1829 |
- WHERE `uid` = ?'); |
|
| 1830 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 1831 |
- |
|
| 1832 |
- $usergrps = []; |
|
| 1833 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 1834 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 1835 |
- } |
|
| 1836 |
- $getusrgrpres->closeCursor(); |
|
| 1837 |
- |
|
| 1838 |
- $groupsallowed = explode("|", $admallwddelgrp['tnx_groups_allowed']);
|
|
| 1839 |
- |
|
| 1840 |
- if ($usergrps && $groupsallowed) {
|
|
| 1841 |
- $countGrps = array_intersect($usergrps, $groupsallowed); |
|
| 1842 |
- |
|
| 1843 |
- // If the user has been allowed to delete messages by group, delete the current message |
|
| 1844 |
- if (count($countGrps) > 0) {
|
|
| 1845 |
- |
|
| 1846 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1847 |
- |
|
| 1848 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1849 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1850 |
- |
|
| 1851 |
- $smdlquery = $this->connection->prepare('
|
|
| 1852 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1853 |
- WHERE `message_id` = ?'); |
|
| 1854 |
- $delsmsgRes = $smdlquery->execute([$msgProvId]); |
|
| 1855 |
- $delsmsgRes->closeCursor(); |
|
| 1856 |
- $permcheckst = true; |
|
| 1857 |
- $delstcheck++; |
|
| 1858 |
- } else {
|
|
| 1859 |
- $smdlquery = $this->connection->prepare('
|
|
| 1860 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1861 |
- WHERE `id` = ?'); |
|
| 1862 |
- $delsmsgRes = $smdlquery->execute([$msgDbId]); |
|
| 1863 |
- $delsmsgRes->closeCursor(); |
|
| 1864 |
- $permcheckst = true; |
|
| 1865 |
- $delstcheck++; |
|
| 1866 |
- } |
|
| 1867 |
- } |
|
| 1868 |
- } |
|
| 1869 |
- } |
|
| 1870 |
- } |
|
| 1871 |
- |
|
| 1872 |
- } elseif ($retrprovider == "Plivo") {
|
|
| 1873 |
- |
|
| 1874 |
- $checkperm = $this->connection->prepare('SELECT `user_id`, `plv_users_allowed`, `plv_users_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `plv_users_allowed` LIKE ? AND `plv_users_del` = ?');
|
|
| 1875 |
- $checkpermres = $checkperm->execute([$admuname, $userDspNameder, $usrsgrpsdel]); |
|
| 1876 |
- $admallwddel = $checkpermres->fetch(); |
|
| 1877 |
- $checkpermres->closeCursor(); |
|
| 1878 |
- |
|
| 1879 |
- // If the user has been allowed to delete messages by Display Name, delete the current message |
|
| 1880 |
- if ($admallwddel) {
|
|
| 1881 |
- |
|
| 1882 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1883 |
- |
|
| 1884 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1885 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1886 |
- |
|
| 1887 |
- $smdlquery = $this->connection->prepare('
|
|
| 1888 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1889 |
- WHERE `message_id` = ?'); |
|
| 1890 |
- $delsmsgRes = $smdlquery->execute([$msgProvId]); |
|
| 1891 |
- $delsmsgRes->closeCursor(); |
|
| 1892 |
- $permcheckst = true; |
|
| 1893 |
- $delstcheck++; |
|
| 1894 |
- } else {
|
|
| 1895 |
- $smdlquery = $this->connection->prepare('
|
|
| 1896 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1897 |
- WHERE `id` = ?'); |
|
| 1898 |
- $delsmsgRes = $smdlquery->execute([$msgDbId]); |
|
| 1899 |
- $delsmsgRes->closeCursor(); |
|
| 1900 |
- $permcheckst = true; |
|
| 1901 |
- $delstcheck++; |
|
| 1902 |
- } |
|
| 1903 |
- |
|
| 1904 |
- } else {
|
|
| 1905 |
- // Check if the user has been allowed to delete messages by group |
|
| 1906 |
- $checkpermgrp = $this->connection->prepare('SELECT `user_id`, `plv_groups_allowed`, `plv_groups_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `plv_groups_del` = ?');
|
|
| 1907 |
- $checkpermgrpres = $checkpermgrp->execute([$admuname, $usrsgrpsdel]); |
|
| 1908 |
- $admallwddelgrp = $checkpermgrpres->fetch(); |
|
| 1909 |
- $checkpermgrpres->closeCursor(); |
|
| 1910 |
- |
|
| 1911 |
- if ($admallwddelgrp) {
|
|
| 1912 |
- // Get the groups to which the current user belongs |
|
| 1913 |
- $getusrgrp = $this->connection->prepare('
|
|
| 1914 |
- SELECT `gid`, `uid` |
|
| 1915 |
- FROM `*PREFIX*group_user` |
|
| 1916 |
- WHERE `uid` = ?'); |
|
| 1917 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 1918 |
- |
|
| 1919 |
- $usergrps = []; |
|
| 1920 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 1921 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 1922 |
- } |
|
| 1923 |
- $getusrgrpres->closeCursor(); |
|
| 1924 |
- |
|
| 1925 |
- $groupsallowed = explode("|", $admallwddelgrp['plv_groups_allowed']);
|
|
| 1926 |
- |
|
| 1927 |
- if ($usergrps && $groupsallowed) {
|
|
| 1928 |
- $countGrps = array_intersect($usergrps, $groupsallowed); |
|
| 1929 |
- |
|
| 1930 |
- // If the user has been allowed to delete messages by group, delete the current message |
|
| 1931 |
- if (count($countGrps) > 0) {
|
|
| 1932 |
- |
|
| 1933 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1934 |
- |
|
| 1935 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1936 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1937 |
- |
|
| 1938 |
- $smdlquery = $this->connection->prepare('
|
|
| 1939 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1940 |
- WHERE `message_id` = ?'); |
|
| 1941 |
- $delsmsgRes = $smdlquery->execute([$msgProvId]); |
|
| 1942 |
- $delsmsgRes->closeCursor(); |
|
| 1943 |
- $permcheckst = true; |
|
| 1944 |
- $delstcheck++; |
|
| 1945 |
- } else {
|
|
| 1946 |
- $smdlquery = $this->connection->prepare('
|
|
| 1947 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1948 |
- WHERE `id` = ?'); |
|
| 1949 |
- $delsmsgRes = $smdlquery->execute([$msgDbId]); |
|
| 1950 |
- $delsmsgRes->closeCursor(); |
|
| 1951 |
- $permcheckst = true; |
|
| 1952 |
- $delstcheck++; |
|
| 1953 |
- } |
|
| 1954 |
- |
|
| 1955 |
- } |
|
| 1956 |
- } |
|
| 1957 |
- } |
|
| 1958 |
- } |
|
| 1959 |
- |
|
| 1960 |
- } elseif ($retrprovider == "Twilio") {
|
|
| 1961 |
- |
|
| 1962 |
- $checkperm = $this->connection->prepare('SELECT `user_id`, `twl_users_allowed`, `twl_users_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `twl_users_allowed` LIKE ? AND `twl_users_del` = ?');
|
|
| 1963 |
- $checkpermres = $checkperm->execute([$admuname, $userDspNameder, $usrsgrpsdel]); |
|
| 1964 |
- $admallwddel = $checkpermres->fetch(); |
|
| 1965 |
- $checkpermres->closeCursor(); |
|
| 1966 |
- |
|
| 1967 |
- // If the user has been allowed to delete messages by Display Name, delete the current message |
|
| 1968 |
- if ($admallwddel) {
|
|
| 1969 |
- |
|
| 1970 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 1971 |
- |
|
| 1972 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 1973 |
- $this->removeMsgFromConv($msgProvId); |
|
| 1974 |
- |
|
| 1975 |
- $smdlquery = $this->connection->prepare('
|
|
| 1976 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1977 |
- WHERE `message_id` = ?'); |
|
| 1978 |
- $delsmsgRes = $smdlquery->execute([$msgProvId]); |
|
| 1979 |
- $delsmsgRes->closeCursor(); |
|
| 1980 |
- $permcheckst = true; |
|
| 1981 |
- $delstcheck++; |
|
| 1982 |
- } else {
|
|
| 1983 |
- $smdlquery = $this->connection->prepare('
|
|
| 1984 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 1985 |
- WHERE `id` = ?'); |
|
| 1986 |
- $delsmsgRes = $smdlquery->execute([$msgDbId]); |
|
| 1987 |
- $delsmsgRes->closeCursor(); |
|
| 1988 |
- $permcheckst = true; |
|
| 1989 |
- $delstcheck++; |
|
| 1990 |
- } |
|
| 1991 |
- |
|
| 1992 |
- } else {
|
|
| 1993 |
- // Check if the user has been allowed to delete messages by group |
|
| 1994 |
- $checkpermgrp = $this->connection->prepare('SELECT `user_id`, `twl_groups_allowed`, `twl_groups_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `twl_groups_del` = ?');
|
|
| 1995 |
- $checkpermgrpres = $checkpermgrp->execute([$admuname, $usrsgrpsdel]); |
|
| 1996 |
- $admallwddelgrp = $checkpermgrpres->fetch(); |
|
| 1997 |
- $checkpermgrpres->closeCursor(); |
|
| 1998 |
- |
|
| 1999 |
- if ($admallwddelgrp) {
|
|
| 2000 |
- // Get the groups to which the current user belongs |
|
| 2001 |
- $getusrgrp = $this->connection->prepare('
|
|
| 2002 |
- SELECT `gid`, `uid` |
|
| 2003 |
- FROM `*PREFIX*group_user` |
|
| 2004 |
- WHERE `uid` = ?'); |
|
| 2005 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 2006 |
- |
|
| 2007 |
- $usergrps = []; |
|
| 2008 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 2009 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 2010 |
- } |
|
| 2011 |
- $getusrgrpres->closeCursor(); |
|
| 2012 |
- |
|
| 2013 |
- $groupsallowed = explode("|", $admallwddelgrp['twl_groups_allowed']);
|
|
| 2014 |
- |
|
| 2015 |
- if ($usergrps && $groupsallowed) {
|
|
| 2016 |
- $countGrps = array_intersect($usergrps, $groupsallowed); |
|
| 2017 |
- |
|
| 2018 |
- // If the user has been allowed to delete messages by group, delete the current message |
|
| 2019 |
- if (count($countGrps) > 0) {
|
|
| 2020 |
- |
|
| 2021 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 2022 |
- |
|
| 2023 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 2024 |
- $this->removeMsgFromConv($msgProvId); |
|
| 2025 |
- |
|
| 2026 |
- $smdlquery = $this->connection->prepare('
|
|
| 2027 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 2028 |
- WHERE `message_id` = ?'); |
|
| 2029 |
- $delsmsgRes = $smdlquery->execute([$msgProvId]); |
|
| 2030 |
- $delsmsgRes->closeCursor(); |
|
| 2031 |
- $permcheckst = true; |
|
| 2032 |
- $delstcheck++; |
|
| 2033 |
- } else {
|
|
| 2034 |
- $smdlquery = $this->connection->prepare('
|
|
| 2035 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 2036 |
- WHERE `id` = ?'); |
|
| 2037 |
- $delsmsgRes = $smdlquery->execute([$msgDbId]); |
|
| 2038 |
- $delsmsgRes->closeCursor(); |
|
| 2039 |
- $permcheckst = true; |
|
| 2040 |
- $delstcheck++; |
|
| 2041 |
- } |
|
| 2042 |
- } |
|
| 2043 |
- } |
|
| 2044 |
- } |
|
| 2045 |
- } |
|
| 2046 |
- |
|
| 2047 |
- } elseif ($retrprovider == "Flowroute") {
|
|
| 2048 |
- |
|
| 2049 |
- $checkperm = $this->connection->prepare('SELECT `user_id`, `flr_users_allowed`, `flr_users_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `flr_users_allowed` LIKE ? AND `flr_users_del` = ?');
|
|
| 2050 |
- $checkpermres = $checkperm->execute([$admuname, $userDspNameder, $usrsgrpsdel]); |
|
| 2051 |
- $admallwddel = $checkpermres->fetch(); |
|
| 2052 |
- $checkpermres->closeCursor(); |
|
| 2053 |
- |
|
| 2054 |
- // If the user has been allowed to delete messages by Display Name, delete the current message |
|
| 2055 |
- if ($admallwddel) {
|
|
| 2056 |
- |
|
| 2057 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 2058 |
- |
|
| 2059 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 2060 |
- $this->removeMsgFromConv($msgProvId); |
|
| 2061 |
- |
|
| 2062 |
- $smdlquery = $this->connection->prepare('
|
|
| 2063 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 2064 |
- WHERE `message_id` = ?'); |
|
| 2065 |
- $delsmsgRes = $smdlquery->execute([$msgProvId]); |
|
| 2066 |
- $delsmsgRes->closeCursor(); |
|
| 2067 |
- $permcheckst = true; |
|
| 2068 |
- $delstcheck++; |
|
| 2069 |
- } else {
|
|
| 2070 |
- $smdlquery = $this->connection->prepare('
|
|
| 2071 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 2072 |
- WHERE `id` = ?'); |
|
| 2073 |
- $delsmsgRes = $smdlquery->execute([$msgDbId]); |
|
| 2074 |
- $delsmsgRes->closeCursor(); |
|
| 2075 |
- $permcheckst = true; |
|
| 2076 |
- $delstcheck++; |
|
| 2077 |
- } |
|
| 2078 |
- |
|
| 2079 |
- } else {
|
|
| 2080 |
- // Check if the user has been allowed to delete messages by group |
|
| 2081 |
- $checkpermgrp = $this->connection->prepare('SELECT `user_id`, `flr_groups_allowed`, `flr_groups_del` FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ? AND `flr_groups_del` = ?');
|
|
| 2082 |
- $checkpermgrpres = $checkpermgrp->execute([$admuname, $usrsgrpsdel]); |
|
| 2083 |
- $admallwddelgrp = $checkpermgrpres->fetch(); |
|
| 2084 |
- $checkpermgrpres->closeCursor(); |
|
| 2085 |
- |
|
| 2086 |
- if ($admallwddelgrp) {
|
|
| 2087 |
- // Get the groups to which the current user belongs |
|
| 2088 |
- $getusrgrp = $this->connection->prepare('
|
|
| 2089 |
- SELECT `gid`, `uid` |
|
| 2090 |
- FROM `*PREFIX*group_user` |
|
| 2091 |
- WHERE `uid` = ?'); |
|
| 2092 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 2093 |
- |
|
| 2094 |
- $usergrps = []; |
|
| 2095 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 2096 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 2097 |
- } |
|
| 2098 |
- $getusrgrpres->closeCursor(); |
|
| 2099 |
- |
|
| 2100 |
- $groupsallowed = explode("|", $admallwddelgrp['flr_groups_allowed']);
|
|
| 2101 |
- |
|
| 2102 |
- if ($usergrps && $groupsallowed) {
|
|
| 2103 |
- $countGrps = array_intersect($usergrps, $groupsallowed); |
|
| 2104 |
- |
|
| 2105 |
- // If the user has been allowed to delete messages by group, delete the current message |
|
| 2106 |
- if (count($countGrps) > 0) {
|
|
| 2107 |
- |
|
| 2108 |
- if ($msgProvId != "" && $msgProvId != "n/a") {
|
|
| 2109 |
- |
|
| 2110 |
- // If it's the case, replace the message that will be deleted, in the conversations table, or remove the conversation's row from the conversations table |
|
| 2111 |
- $this->removeMsgFromConv($msgProvId); |
|
| 2112 |
- |
|
| 2113 |
- $smdlquery = $this->connection->prepare('
|
|
| 2114 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 2115 |
- WHERE `message_id` = ?'); |
|
| 2116 |
- $delsmsgRes = $smdlquery->execute([$msgProvId]); |
|
| 2117 |
- $delsmsgRes->closeCursor(); |
|
| 2118 |
- $permcheckst = true; |
|
| 2119 |
- $delstcheck++; |
|
| 2120 |
- } else {
|
|
| 2121 |
- $smdlquery = $this->connection->prepare('
|
|
| 2122 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 2123 |
- WHERE `id` = ?'); |
|
| 2124 |
- $delsmsgRes = $smdlquery->execute([$msgDbId]); |
|
| 2125 |
- $delsmsgRes->closeCursor(); |
|
| 2126 |
- $permcheckst = true; |
|
| 2127 |
- $delstcheck++; |
|
| 2128 |
- } |
|
| 2129 |
- |
|
| 2130 |
- } |
|
| 2131 |
- } |
|
| 2132 |
- } |
|
| 2133 |
- } |
|
| 2134 |
- } |
|
| 2135 |
- } |
|
| 2136 |
- |
|
| 2137 |
- } |
|
| 2138 |
- } |
|
| 2139 |
- } |
|
| 2140 |
- |
|
| 2141 |
- if ($delstcheck > 0) {
|
|
| 2142 |
- |
|
| 2143 |
- // Reindex the table of sent messages |
|
| 2144 |
- $sqlupdatest = $this->connection->prepare('
|
|
| 2145 |
- SET @resetsent = 0; |
|
| 2146 |
- UPDATE `*PREFIX*sms_relent_sent` |
|
| 2147 |
- SET `id` = @resetsent := @resetsent + 1; |
|
| 2148 |
- ALTER TABLE `*PREFIX*sms_relent_sent` auto_increment=1;'); |
|
| 2149 |
- $updatestRes = $sqlupdatest->execute(); |
|
| 2150 |
- $updatestRes->closeCursor(); |
|
| 2151 |
- } |
|
| 2152 |
- |
|
| 2153 |
- if ($permcheckst) { return "success"; } else { return "not allowed"; }
|
|
| 2154 |
- } |
|
| 2155 |
- } |
|
| 2156 |
- |
|
| 2157 |
- |
|
| 2158 |
- /** |
|
| 2159 |
- * @NoAdminRequired |
|
| 2160 |
- */ |
|
| 2161 |
- public function getconversations($userId) {
|
|
| 2162 |
- |
|
| 2163 |
- // Get the phone numbers that the current user has access to |
|
| 2164 |
- $getnumberscv = $this->connection->prepare('SELECT `user_id`, `available_numbers` FROM `*PREFIX*sms_relent_settings` WHERE `user_id` = ?');
|
|
| 2165 |
- $getcrtusrnocv = $getnumberscv->execute([$userId]); |
|
| 2166 |
- $getusrnmbrscv = $getcrtusrnocv->fetch(); |
|
| 2167 |
- $getcrtusrnocv->closeCursor(); |
|
| 2168 |
- |
|
| 2169 |
- if ($getusrnmbrscv['available_numbers']) {
|
|
| 2170 |
- |
|
| 2171 |
- $retrievednmbrArr = explode("|", $getusrnmbrscv['available_numbers']);
|
|
| 2172 |
- $retrievednmbrpr = array_filter($retrievednmbrArr); |
|
| 2173 |
- $retrievednmbrsfin = []; |
|
| 2174 |
- |
|
| 2175 |
- foreach ($retrievednmbrpr as $convKey => $convValue) {
|
|
| 2176 |
- $retrnmbrex = explode(": ", $convValue);
|
|
| 2177 |
- $retrievednmbrsfin[] = $retrnmbrex[1]; |
|
| 2178 |
- } |
|
| 2179 |
- $retrievednmbrsimp = "'" . implode("','", $retrievednmbrsfin) . "'";
|
|
| 2180 |
- |
|
| 2181 |
- // Get the conversation data from the 'sms_relent_conv' table |
|
| 2182 |
- $getconvdata = $this->connection->executeQuery("SELECT `conversation_id`, `archived`, `last_archived`, `last_unarchived`, `archived_by`, `unarchived_by`, `last_msg_date`,
|
|
| 2183 |
- `last_msg_from`, `last_msg_to`, `last_message`, `lastmsgdisplayname`, `flagged`, `flagunflagby`, `flagunflagdate`, `tag`, |
|
| 2184 |
- `taguntagby`, `taguntagdate`, `description`, `descriptionby`, `descriptiondate` FROM `*PREFIX*sms_relent_conv` WHERE |
|
| 2185 |
- `last_msg_from` IN (" . $retrievednmbrsimp . ") OR `last_msg_to` IN (" . $retrievednmbrsimp . ")");
|
|
| 2186 |
- |
|
| 2187 |
- $convdatafdb = []; |
|
| 2188 |
- while ($convdatafetched = $getconvdata->fetch()) {
|
|
| 2189 |
- $rowfetchedsc = htmlspecialchars($convdatafetched["last_message"], ENT_QUOTES); |
|
| 2190 |
- $fetchedcont = str_replace(['<br />', '<br>', '</b>'], ['<br />', '<br>', '</b>'], $rowfetchedsc); |
|
| 2191 |
- $convdatafetched["last_message"] = $fetchedcont; |
|
| 2192 |
- $convdatafdb[] = $convdatafetched; |
|
| 2193 |
- } |
|
| 2194 |
- $getconvdata->closeCursor(); |
|
| 2195 |
- |
|
| 2196 |
- } else { $convdatafdb = []; }
|
|
| 2197 |
- |
|
| 2198 |
- return $convdatafdb; |
|
| 2199 |
- } |
|
| 2200 |
- |
|
| 2201 |
- |
|
| 2202 |
- /** |
|
| 2203 |
- * @NoAdminRequired |
|
| 2204 |
- */ |
|
| 2205 |
- public function archiveconv($userId, $userDspNameArch, $conversationId) {
|
|
| 2206 |
- |
|
| 2207 |
- $archivedyn = 1; |
|
| 2208 |
- $dateArchived = date("Y-m-d H:i:s");
|
|
| 2209 |
- $sqlarchive = $this->connection->prepare('
|
|
| 2210 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 2211 |
- SET `archived` = ?, `last_archived` = ?, `archived_by` = ? |
|
| 2212 |
- WHERE `conversation_id` = ?'); |
|
| 2213 |
- $archiveRes = $sqlarchive->execute([$archivedyn, $dateArchived, $userDspNameArch, $conversationId]); |
|
| 2214 |
- $archiveRes->closeCursor(); |
|
| 2215 |
- if ($archiveRes) { return "success"; } else { return "error"; }
|
|
| 2216 |
- } |
|
| 2217 |
- |
|
| 2218 |
- |
|
| 2219 |
- /** |
|
| 2220 |
- * @NoAdminRequired |
|
| 2221 |
- */ |
|
| 2222 |
- public function unarchiveconv($userId, $userDspNameUnarch, $conversationIdUn) {
|
|
| 2223 |
- |
|
| 2224 |
- $archivedynun = 0; |
|
| 2225 |
- $dateUnarchived = date("Y-m-d H:i:s");
|
|
| 2226 |
- $sqlarchiveun = $this->connection->prepare('
|
|
| 2227 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 2228 |
- SET `archived` = ?, `last_unarchived` = ?, `unarchived_by` = ? |
|
| 2229 |
- WHERE `conversation_id` = ?'); |
|
| 2230 |
- $archiveResun = $sqlarchiveun->execute([$archivedynun, $dateUnarchived, $userDspNameUnarch, $conversationIdUn]); |
|
| 2231 |
- $archiveResun->closeCursor(); |
|
| 2232 |
- if ($archiveResun) { return "success"; } else { return "error"; }
|
|
| 2233 |
- } |
|
| 2234 |
- |
|
| 2235 |
- |
|
| 2236 |
- /** |
|
| 2237 |
- * @NoAdminRequired |
|
| 2238 |
- */ |
|
| 2239 |
- public function saveconvdescription($userId, $userDspNameDesc, $convDescription, $convId) {
|
|
| 2240 |
- |
|
| 2241 |
- $dateDescSaved = date("Y-m-d H:i:s");
|
|
| 2242 |
- $updatedesc = $this->connection->prepare('
|
|
| 2243 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 2244 |
- SET `description` = ?, `descriptionby` = ?, `descriptiondate` = ? |
|
| 2245 |
- WHERE `conversation_id` = ?'); |
|
| 2246 |
- $updatedescres = $updatedesc->execute([$convDescription, $userDspNameDesc, $dateDescSaved, $convId]); |
|
| 2247 |
- |
|
| 2248 |
- if ($updatedescres) {
|
|
| 2249 |
- return $respupdesc = "The conversation description has been saved successfully."; |
|
| 2250 |
- } else {
|
|
| 2251 |
- return $respupdesc = "Error while trying to save the conversation description to the database."; |
|
| 2252 |
- } |
|
| 2253 |
- $updatedescres->closeCursor(); |
|
| 2254 |
- } |
|
| 2255 |
- |
|
| 2256 |
- |
|
| 2257 |
- /** |
|
| 2258 |
- * @NoAdminRequired |
|
| 2259 |
- */ |
|
| 2260 |
- public function saveconvtag($userId, $userDspNameTag, $convTag, $convId) {
|
|
| 2261 |
- |
|
| 2262 |
- $dateTagSaved = date("Y-m-d H:i:s");
|
|
| 2263 |
- $updatetag = $this->connection->prepare('
|
|
| 2264 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 2265 |
- SET `tag` = ?, `taguntagby` = ?, `taguntagdate` = ? |
|
| 2266 |
- WHERE `conversation_id` = ?'); |
|
| 2267 |
- $updatetagres = $updatetag->execute([$convTag, $userDspNameTag, $dateTagSaved, $convId]); |
|
| 2268 |
- |
|
| 2269 |
- if ($updatetagres) {
|
|
| 2270 |
- return $respuptag = "The conversation tag has been saved successfully."; |
|
| 2271 |
- } else {
|
|
| 2272 |
- return $respuptag = "Error while trying to save the conversation tag to the database."; |
|
| 2273 |
- } |
|
| 2274 |
- $updatetagres->closeCursor(); |
|
| 2275 |
- } |
|
| 2276 |
- |
|
| 2277 |
- |
|
| 2278 |
- /** |
|
| 2279 |
- * @NoAdminRequired |
|
| 2280 |
- */ |
|
| 2281 |
- public function saveconvflag($userId, $userDspNameFlag, $convFlag, $convId) {
|
|
| 2282 |
- |
|
| 2283 |
- $dateFlagSaved = date("Y-m-d H:i:s");
|
|
| 2284 |
- $updateflag = $this->connection->prepare('
|
|
| 2285 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 2286 |
- SET `flagged` = ?, `flagunflagby` = ?, `flagunflagdate` = ? |
|
| 2287 |
- WHERE `conversation_id` = ?'); |
|
| 2288 |
- $updateflagres = $updateflag->execute([$convFlag, $userDspNameFlag, $dateFlagSaved, $convId]); |
|
| 2289 |
- |
|
| 2290 |
- if ($updateflagres) {
|
|
| 2291 |
- return $respupflag = "success"; |
|
| 2292 |
- } else {
|
|
| 2293 |
- return $respupflag = "failure"; |
|
| 2294 |
- } |
|
| 2295 |
- $updateflagres->closeCursor(); |
|
| 2296 |
- } |
|
| 2297 |
- |
|
| 2298 |
- |
|
| 2299 |
- /** |
|
| 2300 |
- * @NoAdminRequired |
|
| 2301 |
- */ |
|
| 2302 |
- public function removeconvmsgs($userId, $conversationId) {
|
|
| 2303 |
- |
|
| 2304 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 2305 |
- |
|
| 2306 |
- // Delete all the messages included in the conversation with the given conversation ID, from the 'sms_relent_received' table |
|
| 2307 |
- $convmsgdelrec = $this->connection->prepare('
|
|
| 2308 |
- DELETE FROM `*PREFIX*sms_relent_received` |
|
| 2309 |
- WHERE `conversation_id` = ?'); |
|
| 2310 |
- $convmsgdelrecres = $convmsgdelrec->execute([$conversationId]); |
|
| 2311 |
- $convmsgdelrecres->closeCursor(); |
|
| 2312 |
- |
|
| 2313 |
- $sqlupdaterec = $this->connection->prepare('
|
|
| 2314 |
- SET @resetrec = 0; |
|
| 2315 |
- UPDATE `*PREFIX*sms_relent_received` |
|
| 2316 |
- SET `id` = @resetrec := @resetrec + 1; |
|
| 2317 |
- ALTER TABLE `*PREFIX*sms_relent_received` auto_increment=1;'); |
|
| 2318 |
- $updaterecRes = $sqlupdaterec->execute(); |
|
| 2319 |
- $updaterecRes->closeCursor(); |
|
| 2320 |
- |
|
| 2321 |
- // Delete all the messages included in the conversation with the given conversation ID, from the 'sms_relent_sent' table |
|
| 2322 |
- $convmsgdelsent = $this->connection->prepare('
|
|
| 2323 |
- DELETE FROM `*PREFIX*sms_relent_sent` |
|
| 2324 |
- WHERE `conversation_id` = ?'); |
|
| 2325 |
- $convmsgdelsentres = $convmsgdelsent->execute([$conversationId]); |
|
| 2326 |
- $convmsgdelsentres->closeCursor(); |
|
| 2327 |
- |
|
| 2328 |
- $sqlupdatesent = $this->connection->prepare('
|
|
| 2329 |
- SET @resetsent = 0; |
|
| 2330 |
- UPDATE `*PREFIX*sms_relent_sent` |
|
| 2331 |
- SET `id` = @resetsent := @resetsent + 1; |
|
| 2332 |
- ALTER TABLE `*PREFIX*sms_relent_sent` auto_increment=1;'); |
|
| 2333 |
- $updatesentRes = $sqlupdatesent->execute(); |
|
| 2334 |
- $updatesentRes->closeCursor(); |
|
| 2335 |
- |
|
| 2336 |
- // Delete the row with the given conversation ID from the 'sms_relent_conv' table |
|
| 2337 |
- $convmsgdel = $this->connection->prepare('
|
|
| 2338 |
- DELETE FROM `*PREFIX*sms_relent_conv` |
|
| 2339 |
- WHERE `conversation_id` = ?'); |
|
| 2340 |
- $convmsgdelres = $convmsgdel->execute([$conversationId]); |
|
| 2341 |
- $convmsgdelres->closeCursor(); |
|
| 2342 |
- |
|
| 2343 |
- // Reindex the conversations table |
|
| 2344 |
- $sqlupdateconv = $this->connection->prepare('
|
|
| 2345 |
- SET @resetconv = 0; |
|
| 2346 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 2347 |
- SET `id` = @resetconv := @resetconv + 1; |
|
| 2348 |
- ALTER TABLE `*PREFIX*sms_relent_conv` auto_increment=1;'); |
|
| 2349 |
- $updateconvRes = $sqlupdateconv->execute(); |
|
| 2350 |
- $updateconvRes->closeCursor(); |
|
| 2351 |
- |
|
| 2352 |
- return "success"; |
|
| 2353 |
- |
|
| 2354 |
- } else { return "not allowed"; }
|
|
| 2355 |
- } |
|
| 2356 |
- |
|
| 2357 |
- |
|
| 2358 |
- /** |
|
| 2359 |
- * @NoAdminRequired |
|
| 2360 |
- */ |
|
| 2361 |
- public function getgroupedtable($userId) {
|
|
| 2362 |
- |
|
| 2363 |
- |
|
| 2364 |
- // Get the user's preferences from the settings |
|
| 2365 |
- $getpref = $this->connection->prepare('
|
|
| 2366 |
- SELECT `user_id`, `show_all_messages` |
|
| 2367 |
- FROM `*PREFIX*sms_relent_settings` WHERE `user_id` = ?'); |
|
| 2368 |
- $getprefres = $getpref->execute([$userId]); |
|
| 2369 |
- $getprefresdata = $getprefres->fetch(); |
|
| 2370 |
- $crsampref = $getprefresdata['show_all_messages']; |
|
| 2371 |
- $getprefres->closeCursor(); |
|
| 2372 |
- |
|
| 2373 |
- |
|
| 2374 |
- // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see |
|
| 2375 |
- if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 2376 |
- |
|
| 2377 |
- // Get the groups and users that were allowed access to the API keys |
|
| 2378 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
|
|
| 2379 |
- `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac` |
|
| 2380 |
- WHERE `user_id` = ?'); |
|
| 2381 |
- $getgrpsres = $getgrps->execute([$userId]); |
|
| 2382 |
- $getgrpsusr = $getgrpsres->fetch(); |
|
| 2383 |
- $getgrpsres->closeCursor(); |
|
| 2384 |
- |
|
| 2385 |
- if ($getgrpsusr) {
|
|
| 2386 |
- |
|
| 2387 |
- if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
|
|
| 2388 |
- if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
|
|
| 2389 |
- if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
|
|
| 2390 |
- if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
|
|
| 2391 |
- |
|
| 2392 |
- $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers); |
|
| 2393 |
- $allwdusersunq = array_filter(array_unique($allwdusersarr)); |
|
| 2394 |
- |
|
| 2395 |
- if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
|
|
| 2396 |
- if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
|
|
| 2397 |
- if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
|
|
| 2398 |
- if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
|
|
| 2399 |
- |
|
| 2400 |
- $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups); |
|
| 2401 |
- $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr)); |
|
| 2402 |
- |
|
| 2403 |
- } else {
|
|
| 2404 |
- $allwdusersunq = []; |
|
| 2405 |
- $allwdgroupsunq = []; |
|
| 2406 |
- } |
|
| 2407 |
- |
|
| 2408 |
- // Get the username for each Display Name of the allowed users |
|
| 2409 |
- $allwdusersfnl = []; |
|
| 2410 |
- foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
|
|
| 2411 |
- |
|
| 2412 |
- $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 2413 |
- $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]); |
|
| 2414 |
- $acdatausrname = $getacdatausrnmres->fetch(); |
|
| 2415 |
- if ($acdatausrname) {
|
|
| 2416 |
- $allwdusersfnl[] = $acdatausrname['uid']; |
|
| 2417 |
- } |
|
| 2418 |
- $getacdatausrnmres->closeCursor(); |
|
| 2419 |
- } |
|
| 2420 |
- |
|
| 2421 |
- // Get the users from all the allowed groups |
|
| 2422 |
- $allwdusersgrpmlt = []; |
|
| 2423 |
- foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
|
|
| 2424 |
- |
|
| 2425 |
- // Get all the users that belong to the current group, if the current group is different from 'admin' |
|
| 2426 |
- if ($prgrpvalue != 'admin') {
|
|
| 2427 |
- $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
|
|
| 2428 |
- $getusringroupres = $getusringroup->execute([$prgrpvalue]); |
|
| 2429 |
- |
|
| 2430 |
- while ($getusrname = $getusringroupres->fetch()) {
|
|
| 2431 |
- |
|
| 2432 |
- $allwdusersgrpmlt[] = $getusrname['uid']; |
|
| 2433 |
- } |
|
| 2434 |
- $getusringroupres->closeCursor(); |
|
| 2435 |
- } |
|
| 2436 |
- } |
|
| 2437 |
- $allwdusersgrpfnl = array_unique($allwdusersgrpmlt); |
|
| 2438 |
- |
|
| 2439 |
- $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl); |
|
| 2440 |
- $allusruniquest = array_unique($allusr); |
|
| 2441 |
- |
|
| 2442 |
- if ($allusruniquest) {
|
|
| 2443 |
- array_unshift($allusruniquest, $userId); |
|
| 2444 |
- $allusruniquegr = $allusruniquest; |
|
| 2445 |
- } else { $allusruniquegr = [$userId]; }
|
|
| 2446 |
- |
|
| 2447 |
- $allusruniquegrsec = "'" . implode("','", $allusruniquegr) . "'";
|
|
| 2448 |
- } |
|
| 2449 |
- |
|
| 2450 |
- // Get received messages |
|
| 2451 |
- |
|
| 2452 |
- // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys |
|
| 2453 |
- if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 2454 |
- |
|
| 2455 |
- $getrecmsgsres = $this->connection->executeQuery("
|
|
| 2456 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 2457 |
- FROM `*PREFIX*sms_relent_received` WHERE `user_id` IN (" . $allusruniquegrsec . ")");
|
|
| 2458 |
- |
|
| 2459 |
- // If the user is an admin and he wants to see only his messages |
|
| 2460 |
- } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
|
|
| 2461 |
- |
|
| 2462 |
- $getrecmsgs = $this->connection->prepare('
|
|
| 2463 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 2464 |
- FROM `*PREFIX*sms_relent_received` WHERE `user_id` = ?'); |
|
| 2465 |
- $getrecmsgsres = $getrecmsgs->execute([$userId]); |
|
| 2466 |
- |
|
| 2467 |
- // If the user is not an admin |
|
| 2468 |
- } elseif (!$this->groupManager->isAdmin($userId)) {
|
|
| 2469 |
- |
|
| 2470 |
- // Get the Display Name of the current user |
|
| 2471 |
- $displnme = 'displayname'; |
|
| 2472 |
- $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
|
|
| 2473 |
- $getacdatadnres = $getacdatadn->execute([$userId, $displnme]); |
|
| 2474 |
- $acdatausrdnadm = $getacdatadnres->fetch(); |
|
| 2475 |
- $cruserdname = $acdatausrdnadm['value']; |
|
| 2476 |
- $getacdatadnres->closeCursor(); |
|
| 2477 |
- |
|
| 2478 |
- // Get the groups to which the current user belongs |
|
| 2479 |
- $getusrgrp = $this->connection->prepare('
|
|
| 2480 |
- SELECT `gid`, `uid` |
|
| 2481 |
- FROM `*PREFIX*group_user` |
|
| 2482 |
- WHERE `uid` = ?'); |
|
| 2483 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 2484 |
- |
|
| 2485 |
- $usergrps = []; |
|
| 2486 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 2487 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 2488 |
- } |
|
| 2489 |
- $getusrgrpres->closeCursor(); |
|
| 2490 |
- |
|
| 2491 |
- // Get the restrictions from the 'sms_relent_restrict' table |
|
| 2492 |
- $getrestr = $this->connection->prepare('
|
|
| 2493 |
- SELECT `phone_number`, `groups`, `users` |
|
| 2494 |
- FROM `*PREFIX*sms_relent_restrict`'); |
|
| 2495 |
- $getrestrres = $getrestr->execute(); |
|
| 2496 |
- |
|
| 2497 |
- $restrdata = []; |
|
| 2498 |
- while ($restrfetched = $getrestrres->fetch()) {
|
|
| 2499 |
- $restrdata[] = $restrfetched; |
|
| 2500 |
- } |
|
| 2501 |
- $getrestrres->closeCursor(); |
|
| 2502 |
- |
|
| 2503 |
- // Get the phone numbers that the user is allowed/not allowed to use |
|
| 2504 |
- $restrPhoneNmbrs = []; |
|
| 2505 |
- $allowedPhoneNmbrs = []; |
|
| 2506 |
- if ($restrdata) {
|
|
| 2507 |
-// $restrPhoneNmbrs = []; |
|
| 2508 |
-// $allowedPhoneNmbrs = []; |
|
| 2509 |
- foreach ($restrdata as $rskey => $rsvalue) {
|
|
| 2510 |
- |
|
| 2511 |
- $chck = 0; |
|
| 2512 |
- $restrgrparr = explode("|", $rsvalue['groups']);
|
|
| 2513 |
- foreach ($restrgrparr as $rkey => $rvalue) {
|
|
| 2514 |
- if ($rvalue) {
|
|
| 2515 |
- if (strpos(implode("|", $usergrps), $rvalue) !== false) { $chck++; }
|
|
| 2516 |
- } |
|
| 2517 |
- } |
|
| 2518 |
- if (strpos($rsvalue['users'], $cruserdname) !== false) { $chck++; }
|
|
| 2519 |
- |
|
| 2520 |
- if ($chck == 0) {
|
|
| 2521 |
- $restrPhoneNmbrs[] = $rsvalue['phone_number']; |
|
| 2522 |
- } |
|
| 2523 |
- } |
|
| 2524 |
- |
|
| 2525 |
- $allowedPhNmbrs = $this->getsmsnumbers($userId); |
|
| 2526 |
- |
|
| 2527 |
- foreach ($allowedPhNmbrs as $apnkey => $apnvalue) {
|
|
| 2528 |
- $crphnmbr = explode(": ", $apnvalue);
|
|
| 2529 |
- if ($crphnmbr[0] == 'Tx') {
|
|
| 2530 |
- $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1]; |
|
| 2531 |
- } elseif ($crphnmbr[0] == 'Pl') {
|
|
| 2532 |
- $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1]; |
|
| 2533 |
- } elseif ($crphnmbr[0] == 'Tw') {
|
|
| 2534 |
- $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1]; |
|
| 2535 |
- } elseif ($crphnmbr[0] == 'Fl') {
|
|
| 2536 |
- $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1]; |
|
| 2537 |
- } |
|
| 2538 |
- } |
|
| 2539 |
- |
|
| 2540 |
- $procalwduid = $allowedPhoneNmbrs; |
|
| 2541 |
- $procalwduidsec = "'" . implode("','", $procalwduid) . "'";
|
|
| 2542 |
- |
|
| 2543 |
- if ($procalwduidsec != "''") {
|
|
| 2544 |
- |
|
| 2545 |
- $getrecmsgsres = $this->connection->executeQuery("
|
|
| 2546 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 2547 |
- FROM `*PREFIX*sms_relent_received` |
|
| 2548 |
- WHERE `user_id` = '$userId' OR `to` IN (" . $procalwduidsec . ")");
|
|
| 2549 |
- |
|
| 2550 |
- } else {
|
|
| 2551 |
- |
|
| 2552 |
- $getrectable = $this->connection->prepare('
|
|
| 2553 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 2554 |
- FROM `*PREFIX*sms_relent_received` |
|
| 2555 |
- WHERE `user_id` = ?'); |
|
| 2556 |
- $getrecmsgsres = $getrectable->execute([$userId]); |
|
| 2557 |
- } |
|
| 2558 |
- |
|
| 2559 |
- } else {
|
|
| 2560 |
- |
|
| 2561 |
- $allowedPhNmbrs = $this->getsmsnumbers($userId); |
|
| 2562 |
- |
|
| 2563 |
- foreach ($allowedPhNmbrs as $apnkey => $apnvalue) {
|
|
| 2564 |
- $crphnmbr = explode(": ", $apnvalue);
|
|
| 2565 |
- if ($crphnmbr[0] == 'Tx') {
|
|
| 2566 |
- $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1]; |
|
| 2567 |
- } elseif ($crphnmbr[0] == 'Pl') {
|
|
| 2568 |
- $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1]; |
|
| 2569 |
- } elseif ($crphnmbr[0] == 'Tw') {
|
|
| 2570 |
- $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1]; |
|
| 2571 |
- } elseif ($crphnmbr[0] == 'Fl') {
|
|
| 2572 |
- $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1]; |
|
| 2573 |
- } |
|
| 2574 |
- } |
|
| 2575 |
- |
|
| 2576 |
- $procalwduid = $allowedPhoneNmbrs; |
|
| 2577 |
- $procalwduidsec = "'" . implode("','", $procalwduid) . "'";
|
|
| 2578 |
- |
|
| 2579 |
- if ($procalwduidsec != "''") {
|
|
| 2580 |
- |
|
| 2581 |
- $getrecmsgsres = $this->connection->executeQuery("
|
|
| 2582 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 2583 |
- FROM `*PREFIX*sms_relent_received` |
|
| 2584 |
- WHERE `user_id` = '$userId' OR `to` IN (" . $procalwduidsec . ")");
|
|
| 2585 |
- |
|
| 2586 |
- } else {
|
|
| 2587 |
- $getrectable = $this->connection->prepare('
|
|
| 2588 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 2589 |
- FROM `*PREFIX*sms_relent_received` |
|
| 2590 |
- WHERE `user_id` = ?'); |
|
| 2591 |
- $getrecmsgsres = $getrectable->execute([$userId]); |
|
| 2592 |
- } |
|
| 2593 |
- } |
|
| 2594 |
- } |
|
| 2595 |
- |
|
| 2596 |
- $recmsgs = []; |
|
| 2597 |
- while ($rcrowsfetch = $getrecmsgsres->fetch()) {
|
|
| 2598 |
- $rcrowsfetch['deliveryreceipt'] = ''; |
|
| 2599 |
- $rcrowsfetch['table'] = 'received'; |
|
| 2600 |
- $rowfetchedscrc = htmlspecialchars($rcrowsfetch['message'], ENT_QUOTES); |
|
| 2601 |
- $fetchedconrc = str_replace(["<br />", "<br>", "</b>"], ["<br />", "<br>", "</b>"], $rowfetchedscrc); |
|
| 2602 |
- $rcrowsfetch['message'] = $fetchedconrc; |
|
| 2603 |
- $recmsgs[] = $rcrowsfetch; |
|
| 2604 |
- } |
|
| 2605 |
- $getrecmsgsres->closeCursor(); |
|
| 2606 |
- |
|
| 2607 |
- |
|
| 2608 |
- // Get sent messages |
|
| 2609 |
- |
|
| 2610 |
- // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys |
|
| 2611 |
- if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 2612 |
- |
|
| 2613 |
- $getsentmsgsres = $this->connection->executeQuery("
|
|
| 2614 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 2615 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2616 |
- WHERE `user_id` IN (" . $allusruniquegrsec . ")");
|
|
| 2617 |
- |
|
| 2618 |
- // If the user is an admin and he wants to see only his messages |
|
| 2619 |
- } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
|
|
| 2620 |
- |
|
| 2621 |
- $getsentmsgs = $this->connection->prepare('
|
|
| 2622 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 2623 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2624 |
- WHERE `user_id` = ?'); |
|
| 2625 |
- $getsentmsgsres = $getsentmsgs->execute([$userId]); |
|
| 2626 |
- |
|
| 2627 |
- // If the user is not an admin |
|
| 2628 |
- } elseif (!$this->groupManager->isAdmin($userId)) {
|
|
| 2629 |
- |
|
| 2630 |
- if ($restrdata) {
|
|
| 2631 |
- |
|
| 2632 |
- if ($procalwduidsec != "''") {
|
|
| 2633 |
- |
|
| 2634 |
- $getsentmsgsres = $this->connection->executeQuery("
|
|
| 2635 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 2636 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2637 |
- WHERE `user_id` = '$userId' OR `from` IN (" . $procalwduidsec . ")");
|
|
| 2638 |
- |
|
| 2639 |
- } else {
|
|
| 2640 |
- $getsentmsgs = $this->connection->prepare('
|
|
| 2641 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 2642 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2643 |
- WHERE `user_id` = ?'); |
|
| 2644 |
- $getsentmsgsres = $getsentmsgs->execute([$userId]); |
|
| 2645 |
- } |
|
| 2646 |
- |
|
| 2647 |
- } else {
|
|
| 2648 |
- |
|
| 2649 |
- $getsentmsgs = $this->connection->prepare('
|
|
| 2650 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 2651 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2652 |
- WHERE `user_id` = ?'); |
|
| 2653 |
- $getsentmsgsres = $getsentmsgs->execute([$userId]); |
|
| 2654 |
- } |
|
| 2655 |
- } |
|
| 2656 |
- |
|
| 2657 |
- |
|
| 2658 |
- $sentmsgs = []; |
|
| 2659 |
- while ($rowfetchedsmsg = $getsentmsgsres->fetch()) {
|
|
| 2660 |
- $rowfetchedsmsg['table'] = 'sent'; |
|
| 2661 |
- $rowfetchedscs = htmlspecialchars($rowfetchedsmsg["message"], ENT_QUOTES); |
|
| 2662 |
- $fetchedcons = str_replace(['<br />', '<br>', '</b>'], ['<br />', '<br>', '</b>'], $rowfetchedscs); |
|
| 2663 |
- $rowfetchedsmsg["message"] = $fetchedcons; |
|
| 2664 |
- $sentmsgs[] = $rowfetchedsmsg; |
|
| 2665 |
- } |
|
| 2666 |
- $getsentmsgsres->closeCursor(); |
|
| 2667 |
- |
|
| 2668 |
- $groupedfromdb = array_merge($recmsgs, $sentmsgs); |
|
| 2669 |
- |
|
| 2670 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 2671 |
- |
|
| 2672 |
- return $groupedfromdb; |
|
| 2673 |
- |
|
| 2674 |
- } else {
|
|
| 2675 |
- |
|
| 2676 |
- if ($restrdata) {
|
|
| 2677 |
- |
|
| 2678 |
- // Clean the phone numbers from tags |
|
| 2679 |
- $restrPhfin = []; |
|
| 2680 |
- foreach ($restrPhoneNmbrs as $phkey => $phvalue) {
|
|
| 2681 |
- |
|
| 2682 |
- $restrpharr = explode(": ", $phvalue);
|
|
| 2683 |
- $restrPhfin[] = $restrpharr[1]; |
|
| 2684 |
- } |
|
| 2685 |
- |
|
| 2686 |
- // Assemble the array of message rows that excludes the rows for the restricted phone numbers |
|
| 2687 |
- foreach ($groupedfromdb as $gmdkey => $gmdvalue) {
|
|
| 2688 |
- |
|
| 2689 |
- if ($gmdvalue['table'] == 'sent') {
|
|
| 2690 |
- |
|
| 2691 |
- if (str_contains($gmdvalue['from'], "+")) {
|
|
| 2692 |
- $fromnmbrarr = explode("+", $gmdvalue['from']);
|
|
| 2693 |
- if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
|
|
| 2694 |
- unset($groupedfromdb[$gmdkey]); |
|
| 2695 |
- } |
|
| 2696 |
- } else {
|
|
| 2697 |
- $frmnmbrarr = explode(": ", $gmdvalue['from']);
|
|
| 2698 |
- if (count($frmnmbrarr) == 2) {
|
|
| 2699 |
- $nmbtbcmprd = $frmnmbrarr[1]; |
|
| 2700 |
- } else {
|
|
| 2701 |
- $nmbtbcmprd = $frmnmbrarr[0]; |
|
| 2702 |
- } |
|
| 2703 |
- if (in_array($nmbtbcmprd, $restrPhfin)) {
|
|
| 2704 |
- unset($groupedfromdb[$gmdkey]); |
|
| 2705 |
- } |
|
| 2706 |
- } |
|
| 2707 |
- |
|
| 2708 |
- } elseif ($gmdvalue['table'] == 'received') {
|
|
| 2709 |
- |
|
| 2710 |
- if (str_contains($gmdvalue['to'], "+")) {
|
|
| 2711 |
- $fromnmbrarr = explode("+", $gmdvalue['to']);
|
|
| 2712 |
- if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
|
|
| 2713 |
- unset($groupedfromdb[$gmdkey]); |
|
| 2714 |
- } |
|
| 2715 |
- } else {
|
|
| 2716 |
- $tonmbrarr = explode(": ", $gmdvalue['to']);
|
|
| 2717 |
- if (count($tonmbrarr) == 2) {
|
|
| 2718 |
- $tonmbrtbcmprd = $tonmbrarr[1]; |
|
| 2719 |
- } else {
|
|
| 2720 |
- $tonmbrtbcmprd = $tonmbrarr[0]; |
|
| 2721 |
- } |
|
| 2722 |
- if (in_array($tonmbrtbcmprd, $restrPhfin)) {
|
|
| 2723 |
- unset($groupedfromdb[$gmdkey]); |
|
| 2724 |
- } |
|
| 2725 |
- } |
|
| 2726 |
- } |
|
| 2727 |
- |
|
| 2728 |
- } |
|
| 2729 |
- |
|
| 2730 |
- $groupedfdbproc = array_values($groupedfromdb); |
|
| 2731 |
- |
|
| 2732 |
- return $groupedfdbproc; |
|
| 2733 |
- |
|
| 2734 |
- } else { return $groupedfromdb; }
|
|
| 2735 |
- } |
|
| 2736 |
- } |
|
| 2737 |
- |
|
| 2738 |
- |
|
| 2739 |
- /** |
|
| 2740 |
- * @NoAdminRequired |
|
| 2741 |
- */ |
|
| 2742 |
- public function getactivitytable($userId, $displayname, $interval) {
|
|
| 2743 |
- |
|
| 2744 |
- // If the user is an admin |
|
| 2745 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 2746 |
- |
|
| 2747 |
- // Get the number of messages sent by the admin in the last specified time interval |
|
| 2748 |
- if ($interval == "day") {
|
|
| 2749 |
- $getsentact = $this->connection->prepare('
|
|
| 2750 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2751 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2752 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 DAY) and now());'); |
|
| 2753 |
- } elseif ($interval == "week") {
|
|
| 2754 |
- $getsentact = $this->connection->prepare('
|
|
| 2755 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2756 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2757 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 WEEK) and now());'); |
|
| 2758 |
- } elseif ($interval == "month") {
|
|
| 2759 |
- $getsentact = $this->connection->prepare('
|
|
| 2760 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2761 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2762 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 MONTH) and now());'); |
|
| 2763 |
- } |
|
| 2764 |
- |
|
| 2765 |
- $getsentmsgsact = $getsentact->execute([$userId]); |
|
| 2766 |
- |
|
| 2767 |
- $fromto = []; |
|
| 2768 |
- $totalmsg = 0; |
|
| 2769 |
- $crwordnb = []; |
|
| 2770 |
- $crcharnb = []; |
|
| 2771 |
- $finfromtoadm = []; |
|
| 2772 |
- while ($rowfetchedsmsg = $getsentmsgsact->fetch()) {
|
|
| 2773 |
- $totalmsg++; |
|
| 2774 |
- $crwordnb[] = count(preg_split('/\s+/', $rowfetchedsmsg["message"]));
|
|
| 2775 |
- $crcharnb[] = mb_strlen($rowfetchedsmsg["message"]); |
|
| 2776 |
- |
|
| 2777 |
- if (array_key_exists($rowfetchedsmsg['to'], $fromto)) {
|
|
| 2778 |
- @$fromto[$rowfetchedsmsg['to']][$rowfetchedsmsg['from']] = intval($fromto[$rowfetchedsmsg['to']][$rowfetchedsmsg['from']]) + 1; |
|
| 2779 |
- } else {
|
|
| 2780 |
- @$fromto[$rowfetchedsmsg['to']][$rowfetchedsmsg['from']] = 1; |
|
| 2781 |
- } |
|
| 2782 |
- } |
|
| 2783 |
- $getsentmsgsact->closeCursor(); |
|
| 2784 |
- $totwordnb = array_sum($crwordnb); |
|
| 2785 |
- $totcharnb = array_sum($crcharnb); |
|
| 2786 |
- $finfromtoadm[0] = ["displayname" => $displayname, "nbdata" => ["msgpernmbr" => $fromto, "totalmessage" => $totalmsg, "totalwordnb" => $totwordnb, "totalcharnb" => $totcharnb]]; |
|
| 2787 |
- |
|
| 2788 |
- // Get the number of messages sent by all the users with whom the admin is sharing his API keys |
|
| 2789 |
- |
|
| 2790 |
- // Get the groups and users that were allowed access to the API keys |
|
| 2791 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
|
|
| 2792 |
- `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac` |
|
| 2793 |
- WHERE `user_id` = ?'); |
|
| 2794 |
- $getgrpsres = $getgrps->execute([$userId]); |
|
| 2795 |
- $getgrpsusr = $getgrpsres->fetch(); |
|
| 2796 |
- $getgrpsres->closeCursor(); |
|
| 2797 |
- |
|
| 2798 |
- if ($getgrpsusr) {
|
|
| 2799 |
- |
|
| 2800 |
- if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
|
|
| 2801 |
- if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
|
|
| 2802 |
- if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
|
|
| 2803 |
- if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
|
|
| 2804 |
- |
|
| 2805 |
- $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers); |
|
| 2806 |
- $allwdusersunq = array_filter(array_unique($allwdusersarr)); |
|
| 2807 |
- |
|
| 2808 |
- if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
|
|
| 2809 |
- if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
|
|
| 2810 |
- if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
|
|
| 2811 |
- if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
|
|
| 2812 |
- |
|
| 2813 |
- $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups); |
|
| 2814 |
- $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr)); |
|
| 2815 |
- |
|
| 2816 |
- } else {
|
|
| 2817 |
- $allwdusersunq = []; |
|
| 2818 |
- $allwdgroupsunq = []; |
|
| 2819 |
- } |
|
| 2820 |
- |
|
| 2821 |
- // Collect the username and Display Name of the users allowed to use the API keys by specifying their names |
|
| 2822 |
- $usrnamedispname = []; |
|
| 2823 |
- foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
|
|
| 2824 |
- |
|
| 2825 |
- $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 2826 |
- $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]); |
|
| 2827 |
- $acdatausrname = $getacdatausrnmres->fetch(); |
|
| 2828 |
- if ($acdatausrname) {
|
|
| 2829 |
- $usrnamedispname[$acdatausrname['uid']] = $alwdusrvalue; |
|
| 2830 |
- } |
|
| 2831 |
- $getacdatausrnmres->closeCursor(); |
|
| 2832 |
- } |
|
| 2833 |
- |
|
| 2834 |
- // Get the usernames of all the users from the allowed groups |
|
| 2835 |
- $allwdusersgrpmlt = []; |
|
| 2836 |
- foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
|
|
| 2837 |
- |
|
| 2838 |
- // Get all the users that belong to the current group, if the current group is different from 'admin' |
|
| 2839 |
- if ($prgrpvalue != 'admin') {
|
|
| 2840 |
- $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
|
|
| 2841 |
- $getusringroupres = $getusringroup->execute([$prgrpvalue]); |
|
| 2842 |
- |
|
| 2843 |
- while ($getusrname = $getusringroupres->fetch()) {
|
|
| 2844 |
- |
|
| 2845 |
- $allwdusersgrpmlt[] = $getusrname['uid']; |
|
| 2846 |
- } |
|
| 2847 |
- $getusringroupres->closeCursor(); |
|
| 2848 |
- } |
|
| 2849 |
- } |
|
| 2850 |
- $allwdusersgrpfnl = array_unique($allwdusersgrpmlt); |
|
| 2851 |
- |
|
| 2852 |
- |
|
| 2853 |
- // Get the Display Name of each user in all allowed groups |
|
| 2854 |
- $cruserdname = []; |
|
| 2855 |
- foreach ($allwdusersgrpfnl as $alwdkey => $alwdusr) {
|
|
| 2856 |
- $displnme = 'displayname'; |
|
| 2857 |
- $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
|
|
| 2858 |
- $getacdatadnres = $getacdatadn->execute([$alwdusr, $displnme]); |
|
| 2859 |
- $acdatausrdnadm = $getacdatadnres->fetch(); |
|
| 2860 |
- $cruserdname[$alwdusr] = $acdatausrdnadm['value']; |
|
| 2861 |
- $getacdatadnres->closeCursor(); |
|
| 2862 |
- } |
|
| 2863 |
- |
|
| 2864 |
- // The usernames and the corresponding Display Names of all the users with whom the admin is sharing his API keys |
|
| 2865 |
- $allusrdispnm = array_merge($usrnamedispname, $cruserdname); |
|
| 2866 |
- $allusrdispnmunq = array_unique($allusrdispnm); |
|
| 2867 |
- |
|
| 2868 |
- $finfromtoreg = []; |
|
| 2869 |
- if ($allusrdispnmunq) {
|
|
| 2870 |
- |
|
| 2871 |
- $finfromtoreg = []; |
|
| 2872 |
- foreach ($allusrdispnmunq as $allusrkey => $allusrvalue) {
|
|
| 2873 |
- |
|
| 2874 |
- if ($interval == "day") {
|
|
| 2875 |
- $getsntrgusrsc = $this->connection->prepare('
|
|
| 2876 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2877 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2878 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 DAY) and now());'); |
|
| 2879 |
- } elseif ($interval == "week") {
|
|
| 2880 |
- $getsntrgusrsc = $this->connection->prepare('
|
|
| 2881 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2882 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2883 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 WEEK) and now());'); |
|
| 2884 |
- } elseif ($interval == "month") {
|
|
| 2885 |
- $getsntrgusrsc = $this->connection->prepare('
|
|
| 2886 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2887 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2888 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 MONTH) and now());'); |
|
| 2889 |
- } |
|
| 2890 |
- |
|
| 2891 |
- $getsntrgusresc = $getsntrgusrsc->execute([$allusrkey]); |
|
| 2892 |
- |
|
| 2893 |
- $fromtosc = []; |
|
| 2894 |
- $totalmsgsc = 0; |
|
| 2895 |
- $crwordnbsc = []; |
|
| 2896 |
- $crcharnbsc = []; |
|
| 2897 |
- $finfromtosc = []; |
|
| 2898 |
- |
|
| 2899 |
- while ($getstrgusrft = $getsntrgusresc->fetch()) {
|
|
| 2900 |
- $totalmsgsc++; |
|
| 2901 |
- $crwordnbsc[] = count(preg_split('/\s+/', $getstrgusrft["message"]));
|
|
| 2902 |
- $crcharnbsc[] = mb_strlen($getstrgusrft["message"]); |
|
| 2903 |
- |
|
| 2904 |
- if (array_key_exists($getstrgusrft['to'], $fromtosc)) {
|
|
| 2905 |
- @$fromtosc[$getstrgusrft['to']][$getstrgusrft['from']] = intval($fromtosc[$getstrgusrft['to']][$getstrgusrft['from']]) + 1; |
|
| 2906 |
- } else {
|
|
| 2907 |
- @$fromtosc[$getstrgusrft['to']][$getstrgusrft['from']] = 1; |
|
| 2908 |
- } |
|
| 2909 |
- } |
|
| 2910 |
- $getsntrgusresc->closeCursor(); |
|
| 2911 |
- $totwordnbsc = array_sum($crwordnbsc); |
|
| 2912 |
- $totcharnbsc = array_sum($crcharnbsc); |
|
| 2913 |
- |
|
| 2914 |
- $finfromtoreg[] = ["displayname" => $allusrvalue, "nbdata" => ["msgpernmbr" => $fromtosc, "totalmessage" => $totalmsgsc, "totalwordnb" => $totwordnbsc, "totalcharnb" => $totcharnbsc]]; |
|
| 2915 |
- } |
|
| 2916 |
- } |
|
| 2917 |
- |
|
| 2918 |
- $finfromto = array_merge($finfromtoadm, $finfromtoreg); |
|
| 2919 |
- usort($finfromto, function($a, $b) { return strcmp($a["displayname"], $b["displayname"]); });
|
|
| 2920 |
- return $finfromto; |
|
| 2921 |
- |
|
| 2922 |
- // If the user is not an admin |
|
| 2923 |
- } else {
|
|
| 2924 |
- |
|
| 2925 |
- if ($interval == "day") {
|
|
| 2926 |
- $getsentactrg = $this->connection->prepare('
|
|
| 2927 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2928 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2929 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 DAY) and now());'); |
|
| 2930 |
- } elseif ($interval == "week") {
|
|
| 2931 |
- $getsentactrg = $this->connection->prepare('
|
|
| 2932 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2933 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2934 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 WEEK) and now());'); |
|
| 2935 |
- } elseif ($interval == "month") {
|
|
| 2936 |
- $getsentactrg = $this->connection->prepare('
|
|
| 2937 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2938 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2939 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 MONTH) and now());'); |
|
| 2940 |
- } |
|
| 2941 |
- $getsentmsgsactrg = $getsentactrg->execute([$userId]); |
|
| 2942 |
- |
|
| 2943 |
- $fromtorg = []; |
|
| 2944 |
- $totalmsgrg = 0; |
|
| 2945 |
- $crwordnbrg = []; |
|
| 2946 |
- $crcharnbrg = []; |
|
| 2947 |
- $finfromto = []; |
|
| 2948 |
- while ($rowfetchedsmsgrg = $getsentmsgsactrg->fetch()) {
|
|
| 2949 |
- $totalmsgrg++; |
|
| 2950 |
- $crwordnbrg[] = count(preg_split('/\s+/', $rowfetchedsmsgrg["message"]));
|
|
| 2951 |
- $crcharnbrg[] = mb_strlen($rowfetchedsmsgrg["message"]); |
|
| 2952 |
- |
|
| 2953 |
- if (array_key_exists($rowfetchedsmsgrg['to'], $fromtorg)) {
|
|
| 2954 |
- @$fromtorg[$rowfetchedsmsgrg['to']][$rowfetchedsmsgrg['from']] = intval($fromtorg[$rowfetchedsmsgrg['to']][$rowfetchedsmsgrg['from']]) + 1; |
|
| 2955 |
- } else {
|
|
| 2956 |
- @$fromtorg[$rowfetchedsmsgrg['to']][$rowfetchedsmsgrg['from']] = 1; |
|
| 2957 |
- } |
|
| 2958 |
- } |
|
| 2959 |
- $getsentmsgsactrg->closeCursor(); |
|
| 2960 |
- $totwordnbrg = array_sum($crwordnbrg); |
|
| 2961 |
- $totcharnbrg = array_sum($crcharnbrg); |
|
| 2962 |
- $finfromto[0] = ["displayname" => $displayname, "nbdata" => ["msgpernmbr" => $fromtorg, "totalmessage" => $totalmsgrg, "totalwordnb" => $totwordnbrg, "totalcharnb" => $totcharnbrg]]; |
|
| 2963 |
- |
|
| 2964 |
- return $finfromto; |
|
| 2965 |
- } |
|
| 2966 |
- } |
|
| 2967 |
- |
|
| 2968 |
- |
|
| 2969 |
- /** |
|
| 2970 |
- * @NoAdminRequired |
|
| 2971 |
- */ |
|
| 2972 |
- public function getindactivity($userId, $displayname, $interval, $indusrdspnm) {
|
|
| 2973 |
- |
|
| 2974 |
- if ($this->groupManager->isAdmin($userId) || $displayname == $indusrdspnm) {
|
|
| 2975 |
- |
|
| 2976 |
- // Get the username of the individual user whose Display Name is received |
|
| 2977 |
- $getacdataind = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 2978 |
- $getacdataindres = $getacdataind->execute(['displayname', $indusrdspnm]); |
|
| 2979 |
- $acdataind = $getacdataindres->fetch(); |
|
| 2980 |
- $crntuserid = $acdataind["uid"]; |
|
| 2981 |
- $getacdataindres->closeCursor(); |
|
| 2982 |
- |
|
| 2983 |
- if ($interval == "day") {
|
|
| 2984 |
- $getsentactrg = $this->connection->prepare('
|
|
| 2985 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2986 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2987 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 DAY) and now());'); |
|
| 2988 |
- } elseif ($interval == "week") {
|
|
| 2989 |
- $getsentactrg = $this->connection->prepare('
|
|
| 2990 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2991 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2992 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 WEEK) and now());'); |
|
| 2993 |
- } elseif ($interval == "month") {
|
|
| 2994 |
- $getsentactrg = $this->connection->prepare('
|
|
| 2995 |
- SELECT `user_id`, `date`, `from`, `to`, `message` |
|
| 2996 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 2997 |
- WHERE `user_id` = ? AND (date between date_sub(now(), INTERVAL 1 MONTH) and now());'); |
|
| 2998 |
- } |
|
| 2999 |
- $getsentmsgsactind = $getsentactrg->execute([$crntuserid]); |
|
| 3000 |
- |
|
| 3001 |
- $fromtoind = []; |
|
| 3002 |
- $totalmsgind = 0; |
|
| 3003 |
- $crwordnbind = []; |
|
| 3004 |
- $crcharnbind = []; |
|
| 3005 |
- $finfromtoind = []; |
|
| 3006 |
- while ($rowfetchedind = $getsentmsgsactind->fetch()) {
|
|
| 3007 |
- $totalmsgind++; |
|
| 3008 |
- $crwordnbind[] = count(preg_split('/\s+/', $rowfetchedind["message"]));
|
|
| 3009 |
- $crcharnbind[] = mb_strlen($rowfetchedind["message"]); |
|
| 3010 |
- |
|
| 3011 |
- if (array_key_exists($rowfetchedind['to'], $fromtoind)) {
|
|
| 3012 |
- @$fromtoind[$rowfetchedind['to']][$rowfetchedind['from']] = intval($fromtoind[$rowfetchedind['to']][$rowfetchedind['from']]) + 1; |
|
| 3013 |
- } else {
|
|
| 3014 |
- @$fromtoind[$rowfetchedind['to']][$rowfetchedind['from']] = 1; |
|
| 3015 |
- } |
|
| 3016 |
- } |
|
| 3017 |
- $getsentmsgsactind->closeCursor(); |
|
| 3018 |
- $totwordnbind = array_sum($crwordnbind); |
|
| 3019 |
- $totcharnbind = array_sum($crcharnbind); |
|
| 3020 |
- $finfromtoind[0] = ["nbdata" => ["msgpernmbr" => $fromtoind, "totalmessage" => $totalmsgind, "totalwordnb" => $totwordnbind, "totalcharnb" => $totcharnbind]]; |
|
| 3021 |
- |
|
| 3022 |
- return $finfromtoind; |
|
| 3023 |
- } |
|
| 3024 |
- } |
|
| 3025 |
- |
|
| 3026 |
- |
|
| 3027 |
- /** |
|
| 3028 |
- * @NoAdminRequired |
|
| 3029 |
- */ |
|
| 3030 |
- public function getgroupedpernumber($userId, $phoneNumber) {
|
|
| 3031 |
- |
|
| 3032 |
- $phoneNumberpr = "%" . $phoneNumber; |
|
| 3033 |
- |
|
| 3034 |
- // Get the user's preferences from the settings |
|
| 3035 |
- $getpref = $this->connection->prepare('
|
|
| 3036 |
- SELECT `user_id`, `show_all_messages` |
|
| 3037 |
- FROM `*PREFIX*sms_relent_settings` WHERE `user_id` = ?'); |
|
| 3038 |
- $getprefres = $getpref->execute([$userId]); |
|
| 3039 |
- $getprefresdata = $getprefres->fetch(); |
|
| 3040 |
- $crsampref = $getprefresdata['show_all_messages']; |
|
| 3041 |
- $getprefres->closeCursor(); |
|
| 3042 |
- |
|
| 3043 |
- |
|
| 3044 |
- // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see |
|
| 3045 |
- if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 3046 |
- |
|
| 3047 |
- // Get the groups and users that were allowed access to the API keys |
|
| 3048 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
|
|
| 3049 |
- `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac` |
|
| 3050 |
- WHERE `user_id` = ?'); |
|
| 3051 |
- $getgrpsres = $getgrps->execute([$userId]); |
|
| 3052 |
- $getgrpsusr = $getgrpsres->fetch(); |
|
| 3053 |
- $getgrpsres->closeCursor(); |
|
| 3054 |
- |
|
| 3055 |
- if ($getgrpsusr) {
|
|
| 3056 |
- |
|
| 3057 |
- if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
|
|
| 3058 |
- if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
|
|
| 3059 |
- if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
|
|
| 3060 |
- if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
|
|
| 3061 |
- |
|
| 3062 |
- $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers); |
|
| 3063 |
- $allwdusersunq = array_filter(array_unique($allwdusersarr)); |
|
| 3064 |
- |
|
| 3065 |
- if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
|
|
| 3066 |
- if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
|
|
| 3067 |
- if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
|
|
| 3068 |
- if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
|
|
| 3069 |
- |
|
| 3070 |
- $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups); |
|
| 3071 |
- $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr)); |
|
| 3072 |
- |
|
| 3073 |
- } else {
|
|
| 3074 |
- $allwdusersunq = []; |
|
| 3075 |
- $allwdgroupsunq = []; |
|
| 3076 |
- } |
|
| 3077 |
- |
|
| 3078 |
- // Get the username for each Display Name of the allowed users |
|
| 3079 |
- $allwdusersfnl = []; |
|
| 3080 |
- foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
|
|
| 3081 |
- |
|
| 3082 |
- $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 3083 |
- $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]); |
|
| 3084 |
- $acdatausrname = $getacdatausrnmres->fetch(); |
|
| 3085 |
- if ($acdatausrname) {
|
|
| 3086 |
- $allwdusersfnl[] = $acdatausrname['uid']; |
|
| 3087 |
- } |
|
| 3088 |
- $getacdatausrnmres->closeCursor(); |
|
| 3089 |
- } |
|
| 3090 |
- |
|
| 3091 |
- // Get the users from all the allowed groups |
|
| 3092 |
- $allwdusersgrpmlt = []; |
|
| 3093 |
- foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
|
|
| 3094 |
- |
|
| 3095 |
- // Get all the users that belong to the current group, if the current group is different from 'admin' |
|
| 3096 |
- if ($prgrpvalue != 'admin') {
|
|
| 3097 |
- $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
|
|
| 3098 |
- $getusringroupres = $getusringroup->execute([$prgrpvalue]); |
|
| 3099 |
- |
|
| 3100 |
- while ($getusrname = $getusringroupres->fetch()) {
|
|
| 3101 |
- |
|
| 3102 |
- $allwdusersgrpmlt[] = $getusrname['uid']; |
|
| 3103 |
- } |
|
| 3104 |
- $getusringroupres->closeCursor(); |
|
| 3105 |
- } |
|
| 3106 |
- } |
|
| 3107 |
- $allwdusersgrpfnl = array_unique($allwdusersgrpmlt); |
|
| 3108 |
- |
|
| 3109 |
- $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl); |
|
| 3110 |
- $allusruniquest = array_unique($allusr); |
|
| 3111 |
- |
|
| 3112 |
- if ($allusruniquest) {
|
|
| 3113 |
- array_unshift($allusruniquest, $userId); |
|
| 3114 |
- $allusruniquepn = $allusruniquest; |
|
| 3115 |
- } else { $allusruniquepn = [$userId]; }
|
|
| 3116 |
- |
|
| 3117 |
- $allusruniquepnst = $allusruniquepn; |
|
| 3118 |
- |
|
| 3119 |
- $procardatapn = "'" . implode("','", $allusruniquepn) . "'";
|
|
| 3120 |
- |
|
| 3121 |
- array_unshift($allusruniquepn, $phoneNumber, $phoneNumberpr); |
|
| 3122 |
- $allusruniquead = $allusruniquepn; |
|
| 3123 |
- |
|
| 3124 |
- array_unshift($allusruniquepnst, $phoneNumberpr, $phoneNumber); |
|
| 3125 |
- $allusruniqueadst = $allusruniquepnst; |
|
| 3126 |
- } |
|
| 3127 |
- |
|
| 3128 |
- |
|
| 3129 |
- // Get received messages |
|
| 3130 |
- |
|
| 3131 |
- // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys |
|
| 3132 |
- if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 3133 |
- |
|
| 3134 |
- $getrecmsgsres = $this->connection->executeQuery("
|
|
| 3135 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3136 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3137 |
- WHERE (`from` = '$phoneNumber' OR `to` LIKE '$phoneNumberpr') AND `user_id` IN (" . $procardatapn . ")");
|
|
| 3138 |
- |
|
| 3139 |
- // If the user is an admin and he wants to see only his messages |
|
| 3140 |
- } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
|
|
| 3141 |
- |
|
| 3142 |
- $getrecmsgs = $this->connection->prepare('
|
|
| 3143 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3144 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3145 |
- WHERE `user_id` = ? AND (`from` = ? OR `to` LIKE ?)'); |
|
| 3146 |
- $getrecmsgsres = $getrecmsgs->execute([$userId, $phoneNumber, $phoneNumberpr]); |
|
| 3147 |
- |
|
| 3148 |
- // If the user is not an admin |
|
| 3149 |
- } elseif (!$this->groupManager->isAdmin($userId)) {
|
|
| 3150 |
- |
|
| 3151 |
- // Get the Display Name of the current user |
|
| 3152 |
- $dispname = 'displayname'; |
|
| 3153 |
- $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
|
|
| 3154 |
- $getacdatadnres = $getacdatadn->execute([$userId, $dispname]); |
|
| 3155 |
- $acdatausrdnadm = $getacdatadnres->fetch(); |
|
| 3156 |
- $cruserdname = $acdatausrdnadm['value']; |
|
| 3157 |
- $getacdatadnres->closeCursor(); |
|
| 3158 |
- |
|
| 3159 |
- // Get the groups to which the current user belongs |
|
| 3160 |
- $getusrgrp = $this->connection->prepare('
|
|
| 3161 |
- SELECT `gid`, `uid` |
|
| 3162 |
- FROM `*PREFIX*group_user` |
|
| 3163 |
- WHERE `uid` = ?'); |
|
| 3164 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 3165 |
- |
|
| 3166 |
- $usergrps = []; |
|
| 3167 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 3168 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 3169 |
- } |
|
| 3170 |
- $getusrgrpres->closeCursor(); |
|
| 3171 |
- |
|
| 3172 |
- // Get the restrictions from the 'sms_relent_restrict' table |
|
| 3173 |
- $getrestr = $this->connection->prepare('
|
|
| 3174 |
- SELECT `phone_number`, `groups`, `users` |
|
| 3175 |
- FROM `*PREFIX*sms_relent_restrict`'); |
|
| 3176 |
- $getrestrres = $getrestr->execute(); |
|
| 3177 |
- |
|
| 3178 |
- $restrdata = []; |
|
| 3179 |
- while ($restrfetched = $getrestrres->fetch()) {
|
|
| 3180 |
- $restrdata[] = $restrfetched; |
|
| 3181 |
- } |
|
| 3182 |
- $getrestrres->closeCursor(); |
|
| 3183 |
- |
|
| 3184 |
- // Get the phone numbers that the user is allowed/not allowed to use |
|
| 3185 |
- $restrPhoneNmbrs = []; |
|
| 3186 |
- $allowedPhoneNmbrs = []; |
|
| 3187 |
- if ($restrdata) {
|
|
| 3188 |
-// $restrPhoneNmbrs = []; |
|
| 3189 |
-// $allowedPhoneNmbrs = []; |
|
| 3190 |
- foreach ($restrdata as $rskey => $rsvalue) {
|
|
| 3191 |
- |
|
| 3192 |
- $chck = 0; |
|
| 3193 |
- $restrgrparr = explode("|", $rsvalue['groups']);
|
|
| 3194 |
- foreach ($restrgrparr as $rkey => $rvalue) {
|
|
| 3195 |
- if ($rvalue) {
|
|
| 3196 |
- if (strpos(implode("|", $usergrps), $rvalue) !== false) { $chck++; }
|
|
| 3197 |
- } |
|
| 3198 |
- } |
|
| 3199 |
- if (strpos($rsvalue['users'], $cruserdname) !== false) { $chck++; }
|
|
| 3200 |
- |
|
| 3201 |
- if ($chck == 0) {
|
|
| 3202 |
- $restrPhoneNmbrs[] = $rsvalue['phone_number']; |
|
| 3203 |
- } |
|
| 3204 |
- } |
|
| 3205 |
- |
|
| 3206 |
- $allowedPhNmbrs = $this->getsmsnumbers($userId); |
|
| 3207 |
- |
|
| 3208 |
- foreach ($allowedPhNmbrs as $apnkey => $apnvalue) {
|
|
| 3209 |
- $crphnmbr = explode(": ", $apnvalue);
|
|
| 3210 |
- if ($crphnmbr[0] == 'Tx') {
|
|
| 3211 |
- $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1]; |
|
| 3212 |
- } elseif ($crphnmbr[0] == 'Pl') {
|
|
| 3213 |
- $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1]; |
|
| 3214 |
- } elseif ($crphnmbr[0] == 'Tw') {
|
|
| 3215 |
- $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1]; |
|
| 3216 |
- } elseif ($crphnmbr[0] == 'Fl') {
|
|
| 3217 |
- $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1]; |
|
| 3218 |
- } |
|
| 3219 |
- } |
|
| 3220 |
- |
|
| 3221 |
-// $allowedPhoneNmbrscp = $allowedPhoneNmbrs; |
|
| 3222 |
- |
|
| 3223 |
- $procalwdphnmbrs = "'" . implode("','", $allowedPhoneNmbrs) . "'";
|
|
| 3224 |
- |
|
| 3225 |
- if ($procalwdphnmbrs != "''") {
|
|
| 3226 |
- |
|
| 3227 |
- $getrecmsgsres = $this->connection->executeQuery("
|
|
| 3228 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3229 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3230 |
- WHERE (`user_id` = '$userId' OR `to` IN (" . $procalwdphnmbrs . ")) AND (`from` = '$phoneNumber' OR `to` LIKE '$phoneNumberpr')");
|
|
| 3231 |
- |
|
| 3232 |
- } else {
|
|
| 3233 |
- $getrecmsgs = $this->connection->prepare('
|
|
| 3234 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3235 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3236 |
- WHERE `user_id` = ? AND (`from` = ? OR `to` LIKE ?)'); |
|
| 3237 |
- $getrecmsgsres = $getrecmsgs->execute([$userId, $phoneNumber, $phoneNumberpr]); |
|
| 3238 |
- } |
|
| 3239 |
- |
|
| 3240 |
- } else {
|
|
| 3241 |
- |
|
| 3242 |
- $allowedPhNmbrs = $this->getsmsnumbers($userId); |
|
| 3243 |
- |
|
| 3244 |
- foreach ($allowedPhNmbrs as $apnkey => $apnvalue) {
|
|
| 3245 |
- $crphnmbr = explode(": ", $apnvalue);
|
|
| 3246 |
- if ($crphnmbr[0] == 'Tx') {
|
|
| 3247 |
- $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1]; |
|
| 3248 |
- } elseif ($crphnmbr[0] == 'Pl') {
|
|
| 3249 |
- $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1]; |
|
| 3250 |
- } elseif ($crphnmbr[0] == 'Tw') {
|
|
| 3251 |
- $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1]; |
|
| 3252 |
- } elseif ($crphnmbr[0] == 'Fl') {
|
|
| 3253 |
- $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1]; |
|
| 3254 |
- } |
|
| 3255 |
- } |
|
| 3256 |
- |
|
| 3257 |
-// $allowedPhoneNmbrscp = $allowedPhoneNmbrs; |
|
| 3258 |
- |
|
| 3259 |
- $procalwdphnmbrs = "'" . implode("','", $allowedPhoneNmbrs) . "'";
|
|
| 3260 |
- |
|
| 3261 |
- if ($procalwdphnmbrs != "''") {
|
|
| 3262 |
- |
|
| 3263 |
- $getrecmsgsres = $this->connection->executeQuery("
|
|
| 3264 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3265 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3266 |
- WHERE (`user_id` = '$userId' OR `to` IN (" . $procalwdphnmbrs . ")) AND (`from` = '$phoneNumber' OR `to` LIKE '$phoneNumberpr')");
|
|
| 3267 |
- |
|
| 3268 |
- } else {
|
|
| 3269 |
- $getrecmsgs = $this->connection->prepare('
|
|
| 3270 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3271 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3272 |
- WHERE `user_id` = ? AND (`from` = ? OR `to` LIKE ?)'); |
|
| 3273 |
- $getrecmsgsres = $getrecmsgs->execute([$userId, $phoneNumber, $phoneNumberpr]); |
|
| 3274 |
- } |
|
| 3275 |
- } |
|
| 3276 |
- } |
|
| 3277 |
- |
|
| 3278 |
- |
|
| 3279 |
- $recmsgs = []; |
|
| 3280 |
- while ($rcrowsfetch = $getrecmsgsres->fetch()) {
|
|
| 3281 |
- $rcrowsfetch['deliveryreceipt'] = ''; |
|
| 3282 |
- $rcrowsfetch['table'] = 'received'; |
|
| 3283 |
- $rowfetchedsc = htmlspecialchars($rcrowsfetch["message"], ENT_QUOTES); |
|
| 3284 |
- $fetchedcont = str_replace(['<br />', '<br>', '</b>'], ['<br />', '<br>', '</b>'], $rowfetchedsc); |
|
| 3285 |
- $rcrowsfetch["message"] = $fetchedcont; |
|
| 3286 |
- $recmsgs[] = $rcrowsfetch; |
|
| 3287 |
- } |
|
| 3288 |
- $getrecmsgsres->closeCursor(); |
|
| 3289 |
- |
|
| 3290 |
- |
|
| 3291 |
- // Get sent messages |
|
| 3292 |
- |
|
| 3293 |
- // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys |
|
| 3294 |
- if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 3295 |
- |
|
| 3296 |
- $getsentmsgsres = $this->connection->executeQuery("
|
|
| 3297 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 3298 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 3299 |
- WHERE (`from` LIKE '$phoneNumberpr' OR `to` = '$phoneNumber') AND `user_id` IN (" . $procardatapn . ")");
|
|
| 3300 |
- |
|
| 3301 |
- // If the user is an admin and he wants to see only his messages |
|
| 3302 |
- } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
|
|
| 3303 |
- |
|
| 3304 |
- $getsentmsgs = $this->connection->prepare('
|
|
| 3305 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 3306 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 3307 |
- WHERE `user_id` = ? AND (`from` LIKE ? OR `to` = ?)'); |
|
| 3308 |
- $getsentmsgsres = $getsentmsgs->execute([$userId, $phoneNumberpr, $phoneNumber]); |
|
| 3309 |
- |
|
| 3310 |
- |
|
| 3311 |
- // If the user is not an admin |
|
| 3312 |
- } elseif (!$this->groupManager->isAdmin($userId)) {
|
|
| 3313 |
- |
|
| 3314 |
- if ($restrdata) {
|
|
| 3315 |
- if ($procalwdphnmbrs != "''") {
|
|
| 3316 |
- |
|
| 3317 |
- $getsentmsgsres = $this->connection->executeQuery("
|
|
| 3318 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 3319 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 3320 |
- WHERE (`user_id` = '$userId' OR `from` IN (" . $procalwdphnmbrs . ")) AND (`from` LIKE '$phoneNumberpr' OR `to` = '$phoneNumber')");
|
|
| 3321 |
- |
|
| 3322 |
- } else {
|
|
| 3323 |
- $getsentmsgs = $this->connection->prepare('
|
|
| 3324 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 3325 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 3326 |
- WHERE `user_id` = ? AND (`from` LIKE ? OR `to` = ?)'); |
|
| 3327 |
- $getsentmsgsres = $getsentmsgs->execute([$userId, $phoneNumberpr, $phoneNumber]); |
|
| 3328 |
- } |
|
| 3329 |
- |
|
| 3330 |
- } else {
|
|
| 3331 |
- |
|
| 3332 |
- $getsentmsgs = $this->connection->prepare('
|
|
| 3333 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 3334 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 3335 |
- WHERE `user_id` = ? AND (`from` LIKE ? OR `to` = ?)'); |
|
| 3336 |
- $getsentmsgsres = $getsentmsgs->execute([$userId, $phoneNumberpr, $phoneNumber]); |
|
| 3337 |
- } |
|
| 3338 |
- } |
|
| 3339 |
- |
|
| 3340 |
- $sentmsgs = []; |
|
| 3341 |
- while ($rowfetchedsmsg = $getsentmsgsres->fetch()) {
|
|
| 3342 |
- $rowfetchedsmsg['table'] = 'sent'; |
|
| 3343 |
- $rowfetchedsc = htmlspecialchars($rowfetchedsmsg["message"], ENT_QUOTES); |
|
| 3344 |
- $fetchedcont = str_replace(['<br />', '<br>', '</b>'], ['<br />', '<br>', '</b>'], $rowfetchedsc); |
|
| 3345 |
- $rowfetchedsmsg["message"] = $fetchedcont; |
|
| 3346 |
- $sentmsgs[] = $rowfetchedsmsg; |
|
| 3347 |
- } |
|
| 3348 |
- $getsentmsgsres->closeCursor(); |
|
| 3349 |
- |
|
| 3350 |
- $groupedpernb = array_merge($recmsgs, $sentmsgs); |
|
| 3351 |
- |
|
| 3352 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 3353 |
- |
|
| 3354 |
- return $groupedpernb; |
|
| 3355 |
- |
|
| 3356 |
- } else {
|
|
| 3357 |
- |
|
| 3358 |
- if ($restrdata) {
|
|
| 3359 |
- |
|
| 3360 |
- // Clean the phone numbers from tags |
|
| 3361 |
- $restrPhfin = []; |
|
| 3362 |
- foreach ($restrPhoneNmbrs as $phkey => $phvalue) {
|
|
| 3363 |
- |
|
| 3364 |
- $restrpharr = explode(": ", $phvalue);
|
|
| 3365 |
- $restrPhfin[] = $restrpharr[1]; |
|
| 3366 |
- } |
|
| 3367 |
- |
|
| 3368 |
- // Assemble the array of message rows that excludes the rows for the restricted phone numbers |
|
| 3369 |
- foreach ($groupedpernb as $gmdkey => $gmdvalue) {
|
|
| 3370 |
- |
|
| 3371 |
- if ($gmdvalue['table'] == 'sent') {
|
|
| 3372 |
- |
|
| 3373 |
- if (str_contains($gmdvalue['from'], "+")) {
|
|
| 3374 |
- $fromnmbrarr = explode("+", $gmdvalue['from']);
|
|
| 3375 |
- if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
|
|
| 3376 |
- unset($groupedpernb[$gmdkey]); |
|
| 3377 |
- } |
|
| 3378 |
- } else {
|
|
| 3379 |
- $frmnmbrarr = explode(": ", $gmdvalue['from']);
|
|
| 3380 |
- if (count($frmnmbrarr) == 2) {
|
|
| 3381 |
- $nmbtbcmprd = $frmnmbrarr[1]; |
|
| 3382 |
- } else {
|
|
| 3383 |
- $nmbtbcmprd = $frmnmbrarr[0]; |
|
| 3384 |
- } |
|
| 3385 |
- if (in_array($nmbtbcmprd, $restrPhfin)) {
|
|
| 3386 |
- unset($groupedpernb[$gmdkey]); |
|
| 3387 |
- } |
|
| 3388 |
- } |
|
| 3389 |
- |
|
| 3390 |
- } elseif ($gmdvalue['table'] == 'received') {
|
|
| 3391 |
- |
|
| 3392 |
- if (str_contains($gmdvalue['to'], "+")) {
|
|
| 3393 |
- $fromnmbrarr = explode("+", $gmdvalue['to']);
|
|
| 3394 |
- if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
|
|
| 3395 |
- unset($groupedpernb[$gmdkey]); |
|
| 3396 |
- } |
|
| 3397 |
- } else {
|
|
| 3398 |
- $tonmbrarr = explode(": ", $gmdvalue['to']);
|
|
| 3399 |
- if (count($tonmbrarr) == 2) {
|
|
| 3400 |
- $tonmbrtbcmprd = $tonmbrarr[1]; |
|
| 3401 |
- } else {
|
|
| 3402 |
- $tonmbrtbcmprd = $tonmbrarr[0]; |
|
| 3403 |
- } |
|
| 3404 |
- if (in_array($tonmbrtbcmprd, $restrPhfin)) {
|
|
| 3405 |
- unset($groupedpernb[$gmdkey]); |
|
| 3406 |
- } |
|
| 3407 |
- } |
|
| 3408 |
- } |
|
| 3409 |
- |
|
| 3410 |
- } |
|
| 3411 |
- |
|
| 3412 |
- $groupedpernbprc = array_values($groupedpernb); |
|
| 3413 |
- |
|
| 3414 |
- return $groupedpernbprc; |
|
| 3415 |
- |
|
| 3416 |
- } else { return $groupedpernb; }
|
|
| 3417 |
- } |
|
| 3418 |
- } |
|
| 3419 |
- |
|
| 3420 |
- |
|
| 3421 |
- /** |
|
| 3422 |
- * @NoAdminRequired |
|
| 3423 |
- */ |
|
| 3424 |
- public function getgroupedforreply($userId, $phoneNmbrFrom, $phoneNmbrTo) {
|
|
| 3425 |
- |
|
| 3426 |
- $phoneNmbrFrompr = "%" . $phoneNmbrFrom; |
|
| 3427 |
- $phoneNmbrTopr = "%" . $phoneNmbrTo; |
|
| 3428 |
- |
|
| 3429 |
- // Get the user's preferences from the settings |
|
| 3430 |
- $getpref = $this->connection->prepare('
|
|
| 3431 |
- SELECT `user_id`, `show_all_messages` |
|
| 3432 |
- FROM `*PREFIX*sms_relent_settings` WHERE `user_id` = ?'); |
|
| 3433 |
- $getprefres = $getpref->execute([$userId]); |
|
| 3434 |
- $getprefresdata = $getprefres->fetch(); |
|
| 3435 |
- $crsampref = $getprefresdata['show_all_messages']; |
|
| 3436 |
- $getprefres->closeCursor(); |
|
| 3437 |
- |
|
| 3438 |
- |
|
| 3439 |
- // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see |
|
| 3440 |
- if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 3441 |
- |
|
| 3442 |
- // Get the groups and users that were allowed access to the API keys |
|
| 3443 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
|
|
| 3444 |
- `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac` |
|
| 3445 |
- WHERE `user_id` = ?'); |
|
| 3446 |
- $getgrpsres = $getgrps->execute([$userId]); |
|
| 3447 |
- $getgrpsusr = $getgrpsres->fetch(); |
|
| 3448 |
- $getgrpsres->closeCursor(); |
|
| 3449 |
- |
|
| 3450 |
- if ($getgrpsusr) {
|
|
| 3451 |
- |
|
| 3452 |
- if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
|
|
| 3453 |
- if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
|
|
| 3454 |
- if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
|
|
| 3455 |
- if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
|
|
| 3456 |
- |
|
| 3457 |
- $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers); |
|
| 3458 |
- $allwdusersunq = array_filter(array_unique($allwdusersarr)); |
|
| 3459 |
- |
|
| 3460 |
- if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
|
|
| 3461 |
- if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
|
|
| 3462 |
- if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
|
|
| 3463 |
- if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
|
|
| 3464 |
- |
|
| 3465 |
- $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups); |
|
| 3466 |
- $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr)); |
|
| 3467 |
- |
|
| 3468 |
- } else {
|
|
| 3469 |
- $allwdusersunq = []; |
|
| 3470 |
- $allwdgroupsunq = []; |
|
| 3471 |
- } |
|
| 3472 |
- |
|
| 3473 |
- // Get the username for each Display Name of the allowed users |
|
| 3474 |
- $allwdusersfnl = []; |
|
| 3475 |
- foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
|
|
| 3476 |
- |
|
| 3477 |
- $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 3478 |
- $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]); |
|
| 3479 |
- $acdatausrname = $getacdatausrnmres->fetch(); |
|
| 3480 |
- if ($acdatausrname) {
|
|
| 3481 |
- $allwdusersfnl[] = $acdatausrname['uid']; |
|
| 3482 |
- } |
|
| 3483 |
- $getacdatausrnmres->closeCursor(); |
|
| 3484 |
- } |
|
| 3485 |
- |
|
| 3486 |
- // Get the users from all the allowed groups |
|
| 3487 |
- $allwdusersgrpmlt = []; |
|
| 3488 |
- foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
|
|
| 3489 |
- |
|
| 3490 |
- // Get all the users that belong to the current group, if the current group is different from 'admin' |
|
| 3491 |
- if ($prgrpvalue != 'admin') {
|
|
| 3492 |
- $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
|
|
| 3493 |
- $getusringroupres = $getusringroup->execute([$prgrpvalue]); |
|
| 3494 |
- |
|
| 3495 |
- while ($getusrname = $getusringroupres->fetch()) {
|
|
| 3496 |
- |
|
| 3497 |
- $allwdusersgrpmlt[] = $getusrname['uid']; |
|
| 3498 |
- } |
|
| 3499 |
- $getusringroupres->closeCursor(); |
|
| 3500 |
- } |
|
| 3501 |
- } |
|
| 3502 |
- $allwdusersgrpfnl = array_unique($allwdusersgrpmlt); |
|
| 3503 |
- |
|
| 3504 |
- $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl); |
|
| 3505 |
- $allusruniquest = array_unique($allusr); |
|
| 3506 |
- |
|
| 3507 |
- if ($allusruniquest) {
|
|
| 3508 |
- array_unshift($allusruniquest, $userId); |
|
| 3509 |
- $allusruniquerp = $allusruniquest; |
|
| 3510 |
- } else { $allusruniquerp = [$userId]; }
|
|
| 3511 |
- |
|
| 3512 |
- $allusruniquerpst = $allusruniquerp; |
|
| 3513 |
- |
|
| 3514 |
- $procardatarp = "'" . implode("','", $allusruniquerp) . "'";
|
|
| 3515 |
- } |
|
| 3516 |
- |
|
| 3517 |
- |
|
| 3518 |
- // Get received messages |
|
| 3519 |
- |
|
| 3520 |
- // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys |
|
| 3521 |
- if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 3522 |
- |
|
| 3523 |
- $getrecmsgsres = $this->connection->executeQuery("
|
|
| 3524 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3525 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3526 |
- WHERE ((`from` = '$phoneNmbrFrom' AND `to` LIKE '$phoneNmbrTopr') OR (`from` = '$phoneNmbrTo' AND `to` LIKE '$phoneNmbrFrompr')) AND |
|
| 3527 |
- `user_id` IN (" . $procardatarp . ")");
|
|
| 3528 |
- |
|
| 3529 |
- // If the user is an admin and he wants to see only his messages |
|
| 3530 |
- } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
|
|
| 3531 |
- |
|
| 3532 |
- $getrecmsgs = $this->connection->prepare('
|
|
| 3533 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3534 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3535 |
- WHERE `user_id` = ? AND ((`from` = ? AND `to` LIKE ?) OR (`from` = ? AND `to` LIKE ?))'); |
|
| 3536 |
- $getrecmsgsres = $getrecmsgs->execute([$userId, $phoneNmbrFrom, $phoneNmbrTopr, $phoneNmbrTo, $phoneNmbrFrompr]); |
|
| 3537 |
- |
|
| 3538 |
- // If the user is not an admin |
|
| 3539 |
- } elseif (!$this->groupManager->isAdmin($userId)) {
|
|
| 3540 |
- |
|
| 3541 |
- // Get the Display Name of the current user |
|
| 3542 |
- $dispname = 'displayname'; |
|
| 3543 |
- $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
|
|
| 3544 |
- $getacdatadnres = $getacdatadn->execute([$userId, $dispname]); |
|
| 3545 |
- $acdatausrdnadm = $getacdatadnres->fetch(); |
|
| 3546 |
- $cruserdname = $acdatausrdnadm['value']; |
|
| 3547 |
- $getacdatadnres->closeCursor(); |
|
| 3548 |
- |
|
| 3549 |
- // Get the groups to which the current user belongs |
|
| 3550 |
- $getusrgrp = $this->connection->prepare('
|
|
| 3551 |
- SELECT `gid`, `uid` |
|
| 3552 |
- FROM `*PREFIX*group_user` |
|
| 3553 |
- WHERE `uid` = ?'); |
|
| 3554 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 3555 |
- |
|
| 3556 |
- $usergrps = []; |
|
| 3557 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 3558 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 3559 |
- } |
|
| 3560 |
- $getusrgrpres->closeCursor(); |
|
| 3561 |
- |
|
| 3562 |
- // Get the restrictions from the 'sms_relent_restrict' table |
|
| 3563 |
- $getrestr = $this->connection->prepare('
|
|
| 3564 |
- SELECT `phone_number`, `groups`, `users` |
|
| 3565 |
- FROM `*PREFIX*sms_relent_restrict`'); |
|
| 3566 |
- $getrestrres = $getrestr->execute(); |
|
| 3567 |
- |
|
| 3568 |
- $restrdata = []; |
|
| 3569 |
- while ($restrfetched = $getrestrres->fetch()) {
|
|
| 3570 |
- $restrdata[] = $restrfetched; |
|
| 3571 |
- } |
|
| 3572 |
- $getrestrres->closeCursor(); |
|
| 3573 |
- |
|
| 3574 |
- // Get the phone numbers that the user is allowed/not allowed to use |
|
| 3575 |
- $restrPhoneNmbrs = []; |
|
| 3576 |
- $allowedPhoneNmbrs = []; |
|
| 3577 |
- if ($restrdata) {
|
|
| 3578 |
-// $restrPhoneNmbrs = []; |
|
| 3579 |
-// $allowedPhoneNmbrs = []; |
|
| 3580 |
- foreach ($restrdata as $rskey => $rsvalue) {
|
|
| 3581 |
- |
|
| 3582 |
- $chck = 0; |
|
| 3583 |
- $restrgrparr = explode("|", $rsvalue['groups']);
|
|
| 3584 |
- foreach ($restrgrparr as $rkey => $rvalue) {
|
|
| 3585 |
- if ($rvalue) {
|
|
| 3586 |
- if (strpos(implode("|", $usergrps), $rvalue) !== false) { $chck++; }
|
|
| 3587 |
- } |
|
| 3588 |
- } |
|
| 3589 |
- if (strpos($rsvalue['users'], $cruserdname) !== false) { $chck++; }
|
|
| 3590 |
- |
|
| 3591 |
- if ($chck == 0) {
|
|
| 3592 |
- $restrPhoneNmbrs[] = $rsvalue['phone_number']; |
|
| 3593 |
- } |
|
| 3594 |
- } |
|
| 3595 |
- |
|
| 3596 |
- $allowedPhNmbrs = $this->getsmsnumbers($userId); |
|
| 3597 |
- |
|
| 3598 |
- foreach ($allowedPhNmbrs as $apnkey => $apnvalue) {
|
|
| 3599 |
- $crphnmbr = explode(": ", $apnvalue);
|
|
| 3600 |
- if ($crphnmbr[0] == 'Tx') {
|
|
| 3601 |
- $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1]; |
|
| 3602 |
- } elseif ($crphnmbr[0] == 'Pl') {
|
|
| 3603 |
- $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1]; |
|
| 3604 |
- } elseif ($crphnmbr[0] == 'Tw') {
|
|
| 3605 |
- $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1]; |
|
| 3606 |
- } elseif ($crphnmbr[0] == 'Fl') {
|
|
| 3607 |
- $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1]; |
|
| 3608 |
- } |
|
| 3609 |
- } |
|
| 3610 |
- |
|
| 3611 |
-// $allowedPhoneNmbrscpr = $allowedPhoneNmbrs; |
|
| 3612 |
- |
|
| 3613 |
- $procalwdphnmbrs = "'" . implode("','", $allowedPhoneNmbrs) . "'";
|
|
| 3614 |
- |
|
| 3615 |
- if ($procalwdphnmbrs != "''") {
|
|
| 3616 |
- |
|
| 3617 |
- $getrecmsgsres = $this->connection->executeQuery("
|
|
| 3618 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3619 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3620 |
- WHERE (`user_id` = '$userId' OR `to` IN (" . $procalwdphnmbrs . ")) AND ((`from` = '$phoneNmbrFrom' AND `to` LIKE '$phoneNmbrTopr') OR (`from` = '$phoneNmbrTo'
|
|
| 3621 |
- AND `to` LIKE '$phoneNmbrFrompr'))"); |
|
| 3622 |
- |
|
| 3623 |
- } else {
|
|
| 3624 |
- $getrecmsgs = $this->connection->prepare('
|
|
| 3625 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3626 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3627 |
- WHERE `user_id` = ? AND ((`from` = ? AND `to` LIKE ?) OR (`from` = ? AND `to` LIKE ?))'); |
|
| 3628 |
- $getrecmsgsres = $getrecmsgs->execute([$userId, $phoneNmbrFrom, $phoneNmbrTopr, $phoneNmbrTo, $phoneNmbrFrompr]); |
|
| 3629 |
- } |
|
| 3630 |
- |
|
| 3631 |
- } else {
|
|
| 3632 |
- |
|
| 3633 |
- $allowedPhNmbrs = $this->getsmsnumbers($userId); |
|
| 3634 |
- |
|
| 3635 |
- foreach ($allowedPhNmbrs as $apnkey => $apnvalue) {
|
|
| 3636 |
- $crphnmbr = explode(": ", $apnvalue);
|
|
| 3637 |
- if ($crphnmbr[0] == 'Tx') {
|
|
| 3638 |
- $allowedPhoneNmbrs[] = 'Telnyx: ' . $crphnmbr[1]; |
|
| 3639 |
- } elseif ($crphnmbr[0] == 'Pl') {
|
|
| 3640 |
- $allowedPhoneNmbrs[] = 'Plivo: ' . $crphnmbr[1]; |
|
| 3641 |
- } elseif ($crphnmbr[0] == 'Tw') {
|
|
| 3642 |
- $allowedPhoneNmbrs[] = 'Twilio: ' . $crphnmbr[1]; |
|
| 3643 |
- } elseif ($crphnmbr[0] == 'Fl') {
|
|
| 3644 |
- $allowedPhoneNmbrs[] = 'Flowroute: ' . $crphnmbr[1]; |
|
| 3645 |
- } |
|
| 3646 |
- } |
|
| 3647 |
- |
|
| 3648 |
-// $allowedPhoneNmbrscpr = $allowedPhoneNmbrs; |
|
| 3649 |
- |
|
| 3650 |
- $procalwdphnmbrs = "'" . implode("','", $allowedPhoneNmbrs) . "'";
|
|
| 3651 |
- |
|
| 3652 |
- if ($procalwdphnmbrs != "''") {
|
|
| 3653 |
- |
|
| 3654 |
- $getrecmsgsres = $this->connection->executeQuery("
|
|
| 3655 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3656 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3657 |
- WHERE (`user_id` = '$userId' OR `to` IN (" . $procalwdphnmbrs . ")) AND ((`from` = '$phoneNmbrFrom' AND `to` LIKE '$phoneNmbrTopr') OR (`from` = '$phoneNmbrTo'
|
|
| 3658 |
- AND `to` LIKE '$phoneNmbrFrompr'))"); |
|
| 3659 |
- |
|
| 3660 |
- } else {
|
|
| 3661 |
- $getrecmsgs = $this->connection->prepare('
|
|
| 3662 |
- SELECT `id`, `user_id`, `date`, `from`, `to`, `message`, `author_displayname` |
|
| 3663 |
- FROM `*PREFIX*sms_relent_received` |
|
| 3664 |
- WHERE `user_id` = ? AND ((`from` = ? AND `to` LIKE ?) OR (`from` = ? AND `to` LIKE ?))'); |
|
| 3665 |
- $getrecmsgsres = $getrecmsgs->execute([$userId, $phoneNmbrFrom, $phoneNmbrTopr, $phoneNmbrTo, $phoneNmbrFrompr]); |
|
| 3666 |
- } |
|
| 3667 |
- } |
|
| 3668 |
- } |
|
| 3669 |
- |
|
| 3670 |
- $recmsgs = []; |
|
| 3671 |
- while ($rcrowsfetch = $getrecmsgsres->fetch()) {
|
|
| 3672 |
- $rcrowsfetch['deliveryreceipt'] = ''; |
|
| 3673 |
- $rcrowsfetch['table'] = 'received'; |
|
| 3674 |
- $rowfetchedscrpl = htmlspecialchars($rcrowsfetch["message"], ENT_QUOTES); |
|
| 3675 |
- $fetchedcontrpl = str_replace(['<br />', '<br>', '</b>'], ['<br />', '<br>', '</b>'], $rowfetchedscrpl); |
|
| 3676 |
- $rcrowsfetch["message"] = $fetchedcontrpl; |
|
| 3677 |
- $recmsgs[] = $rcrowsfetch; |
|
| 3678 |
- } |
|
| 3679 |
- $getrecmsgsres->closeCursor(); |
|
| 3680 |
- |
|
| 3681 |
- |
|
| 3682 |
- // Get sent messages |
|
| 3683 |
- |
|
| 3684 |
- // If the user is an admin and he wants to see his messages and the messages of all the users with whom he shares his API keys |
|
| 3685 |
- if ($crsampref == 1 && $this->groupManager->isAdmin($userId)) {
|
|
| 3686 |
- |
|
| 3687 |
- $getsentmsgsres = $this->connection->executeQuery("
|
|
| 3688 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 3689 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 3690 |
- WHERE ((`from` LIKE '$phoneNmbrFrompr' AND `to` = '$phoneNmbrTo') OR (`from` LIKE '$phoneNmbrTopr' AND `to` = '$phoneNmbrFrom')) AND `user_id` IN |
|
| 3691 |
- (" . $procardatarp . ")");
|
|
| 3692 |
- |
|
| 3693 |
- // If the user is an admin and he wants to see only his messages |
|
| 3694 |
- } elseif ($crsampref == 0 && $this->groupManager->isAdmin($userId)) {
|
|
| 3695 |
- |
|
| 3696 |
- $getsentmsgs = $this->connection->prepare('
|
|
| 3697 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 3698 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 3699 |
- WHERE `user_id` = ? AND ((`from` LIKE ? AND `to` = ?) OR (`from` LIKE ? AND `to` = ?))'); |
|
| 3700 |
- $getsentmsgsres = $getsentmsgs->execute([$userId, $phoneNmbrFrompr, $phoneNmbrTo, $phoneNmbrTopr, $phoneNmbrFrom]); |
|
| 3701 |
- |
|
| 3702 |
- // If the user is not an admin |
|
| 3703 |
- } elseif (!$this->groupManager->isAdmin($userId)) {
|
|
| 3704 |
- |
|
| 3705 |
- if ($restrdata) {
|
|
| 3706 |
- if ($procalwdphnmbrs != "''") {
|
|
| 3707 |
- |
|
| 3708 |
- $getsentmsgsres = $this->connection->executeQuery("
|
|
| 3709 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 3710 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 3711 |
- WHERE (`user_id` = '$userId' OR `from` IN (" . $procalwdphnmbrs . ")) AND ((`from` LIKE '$phoneNmbrFrompr' AND `to` = '$phoneNmbrTo') OR
|
|
| 3712 |
- (`from` LIKE '$phoneNmbrTopr' AND `to` = '$phoneNmbrFrom'))"); |
|
| 3713 |
- |
|
| 3714 |
- } else {
|
|
| 3715 |
- $getsentmsgs = $this->connection->prepare('
|
|
| 3716 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 3717 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 3718 |
- WHERE `user_id` = ? AND ((`from` LIKE ? AND `to` = ?) OR (`from` LIKE ? AND `to` = ?))'); |
|
| 3719 |
- $getsentmsgsres = $getsentmsgs->execute([$userId, $phoneNmbrFrompr, $phoneNmbrTo, $phoneNmbrTopr, $phoneNmbrFrom]); |
|
| 3720 |
- } |
|
| 3721 |
- |
|
| 3722 |
- } else {
|
|
| 3723 |
- |
|
| 3724 |
- $getsentmsgs = $this->connection->prepare('
|
|
| 3725 |
- SELECT `id`, `user_id`, `date`, `from`, `to`,`message`, `author_displayname`, `deliveryreceipt` |
|
| 3726 |
- FROM `*PREFIX*sms_relent_sent` |
|
| 3727 |
- WHERE `user_id` = ? AND ((`from` LIKE ? AND `to` = ?) OR (`from` LIKE ? AND `to` = ?))'); |
|
| 3728 |
- $getsentmsgsres = $getsentmsgs->execute([$userId, $phoneNmbrFrompr, $phoneNmbrTo, $phoneNmbrTopr, $phoneNmbrFrom]); |
|
| 3729 |
- } |
|
| 3730 |
- } |
|
| 3731 |
- |
|
| 3732 |
- $sentmsgs = []; |
|
| 3733 |
- while ($rowfetchedsmsg = $getsentmsgsres->fetch()) {
|
|
| 3734 |
- $rowfetchedsmsg['table'] = 'sent'; |
|
| 3735 |
- $rowfetchedscst = htmlspecialchars($rowfetchedsmsg["message"], ENT_QUOTES); |
|
| 3736 |
- $fetchedconrst = str_replace(['<br />', '<br>', '</b>'], ['<br />', '<br>', '</b>'], $rowfetchedscst); |
|
| 3737 |
- $rowfetchedsmsg["message"] = $fetchedconrst; |
|
| 3738 |
- $sentmsgs[] = $rowfetchedsmsg; |
|
| 3739 |
- } |
|
| 3740 |
- $getsentmsgsres->closeCursor(); |
|
| 3741 |
- |
|
| 3742 |
- $groupedpernb = array_merge($recmsgs, $sentmsgs); |
|
| 3743 |
- |
|
| 3744 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 3745 |
- |
|
| 3746 |
- return $groupedpernb; |
|
| 3747 |
- |
|
| 3748 |
- } else {
|
|
| 3749 |
- |
|
| 3750 |
- if ($restrdata) {
|
|
| 3751 |
- |
|
| 3752 |
- // Clean the phone numbers from tags |
|
| 3753 |
- $restrPhfin = []; |
|
| 3754 |
- foreach ($restrPhoneNmbrs as $phkey => $phvalue) {
|
|
| 3755 |
- |
|
| 3756 |
- $restrpharr = explode(": ", $phvalue);
|
|
| 3757 |
- $restrPhfin[] = $restrpharr[1]; |
|
| 3758 |
- } |
|
| 3759 |
- |
|
| 3760 |
- // Assemble the array of message rows that excludes the rows for the restricted phone numbers |
|
| 3761 |
- foreach ($groupedpernb as $gmdkey => $gmdvalue) {
|
|
| 3762 |
- |
|
| 3763 |
- if ($gmdvalue['table'] == 'sent') {
|
|
| 3764 |
- |
|
| 3765 |
- if (str_contains($gmdvalue['from'], "+")) {
|
|
| 3766 |
- $fromnmbrarr = explode("+", $gmdvalue['from']);
|
|
| 3767 |
- if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
|
|
| 3768 |
- unset($groupedpernb[$gmdkey]); |
|
| 3769 |
- } |
|
| 3770 |
- } else {
|
|
| 3771 |
- $frmnmbrarr = explode(": ", $gmdvalue['from']);
|
|
| 3772 |
- if (count($frmnmbrarr) == 2) {
|
|
| 3773 |
- $nmbtbcmprd = $frmnmbrarr[1]; |
|
| 3774 |
- } else {
|
|
| 3775 |
- $nmbtbcmprd = $frmnmbrarr[0]; |
|
| 3776 |
- } |
|
| 3777 |
- if (in_array($nmbtbcmprd, $restrPhfin)) {
|
|
| 3778 |
- unset($groupedpernb[$gmdkey]); |
|
| 3779 |
- } |
|
| 3780 |
- } |
|
| 3781 |
- |
|
| 3782 |
- } elseif ($gmdvalue['table'] == 'received') {
|
|
| 3783 |
- |
|
| 3784 |
- if (str_contains($gmdvalue['to'], "+")) {
|
|
| 3785 |
- $fromnmbrarr = explode("+", $gmdvalue['to']);
|
|
| 3786 |
- if (in_array("+" . $fromnmbrarr[1], $restrPhfin)) {
|
|
| 3787 |
- unset($groupedpernb[$gmdkey]); |
|
| 3788 |
- } |
|
| 3789 |
- } else {
|
|
| 3790 |
- $tonmbrarr = explode(": ", $gmdvalue['to']);
|
|
| 3791 |
- if (count($tonmbrarr) == 2) {
|
|
| 3792 |
- $tonmbrtbcmprd = $tonmbrarr[1]; |
|
| 3793 |
- } else {
|
|
| 3794 |
- $tonmbrtbcmprd = $tonmbrarr[0]; |
|
| 3795 |
- } |
|
| 3796 |
- if (in_array($tonmbrtbcmprd, $restrPhfin)) {
|
|
| 3797 |
- unset($groupedpernb[$gmdkey]); |
|
| 3798 |
- } |
|
| 3799 |
- } |
|
| 3800 |
- } |
|
| 3801 |
- |
|
| 3802 |
- } |
|
| 3803 |
- |
|
| 3804 |
- $groupedperconv = array_values($groupedpernb); |
|
| 3805 |
- |
|
| 3806 |
- return $groupedperconv; |
|
| 3807 |
- |
|
| 3808 |
- } else { return $groupedpernb; }
|
|
| 3809 |
- } |
|
| 3810 |
- } |
|
| 3811 |
- |
|
| 3812 |
- |
|
| 3813 |
- /** |
|
| 3814 |
- * @NoAdminRequired |
|
| 3815 |
- */ |
|
| 3816 |
- public function savedisplayname($userId, $authorDisplayname, $from) {
|
|
| 3817 |
- |
|
| 3818 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 3819 |
- |
|
| 3820 |
- $updatedispnm = $this->connection->prepare('
|
|
| 3821 |
- UPDATE `*PREFIX*sms_relent_received` |
|
| 3822 |
- SET `author_displayname` = ? |
|
| 3823 |
- WHERE `from` = ?'); |
|
| 3824 |
- $updatedispnmres = $updatedispnm->execute([$authorDisplayname, $from]); |
|
| 3825 |
- |
|
| 3826 |
- $updatedispnmcv = $this->connection->prepare('
|
|
| 3827 |
- UPDATE `*PREFIX*sms_relent_conv` |
|
| 3828 |
- SET `lastmsgdisplayname` = ? |
|
| 3829 |
- WHERE `last_msg_from` = ?'); |
|
| 3830 |
- $updatedispnmrescv = $updatedispnmcv->execute([$authorDisplayname, $from]); |
|
| 3831 |
- |
|
| 3832 |
- if ($updatedispnmres && $updatedispnmrescv) {
|
|
| 3833 |
- return $respupdname = "The new Display Name has been saved. If on the Settings page, the option 'Add the display name of the message author, before each message' is checked, when you refresh the page you will see the new Display Name before the messages."; |
|
| 3834 |
- } else {
|
|
| 3835 |
- return $respupdname = "Error while trying to save the new Display Name to the database."; |
|
| 3836 |
- } |
|
| 3837 |
- $updatedispnmres->closeCursor(); |
|
| 3838 |
- |
|
| 3839 |
- } else { return $respupdname = "Only admins can save Display Names for phone numbers that are not associated with Nextcloud users."; }
|
|
| 3840 |
- } |
|
| 3841 |
- |
|
| 3842 |
- |
|
| 3843 |
- /** |
|
| 3844 |
- * @NoAdminRequired |
|
| 3845 |
- */ |
|
| 3846 |
- public function getmsgsperpgnewmsgarchnb($userId) {
|
|
| 3847 |
- |
|
| 3848 |
- $sqlmpp = $this->connection->prepare('
|
|
| 3849 |
- SELECT `user_id`, `messagesperpage`, `msg_check_interval`, `archived_conv_nmbr` |
|
| 3850 |
- FROM `*PREFIX*sms_relent_settings` |
|
| 3851 |
- WHERE `user_id` = ?'); |
|
| 3852 |
- $result = $sqlmpp->execute([$userId]); |
|
| 3853 |
- $mesppdata = $result->fetch(); |
|
| 3854 |
- $result->closeCursor(); |
|
| 3855 |
- if ($mesppdata) {
|
|
| 3856 |
- $mesperpagedb = ['msgsperpage' => $mesppdata['messagesperpage'], 'newmsgcheck' => $mesppdata['msg_check_interval'], 'archconvnb' => $mesppdata['archived_conv_nmbr'] ]; |
|
| 3857 |
- return $mesperpagedb; |
|
| 3858 |
- } |
|
| 3859 |
- } |
|
| 3860 |
- |
|
| 3861 |
- |
|
| 3862 |
- /** |
|
| 3863 |
- * @NoAdminRequired |
|
| 3864 |
- */ |
|
| 3865 |
- public function getnewmsgindicator($userId) {
|
|
| 3866 |
- |
|
| 3867 |
- $sqlnmsg = $this->connection->prepare('
|
|
| 3868 |
- SELECT `user_id`, `new_message_rcd` |
|
| 3869 |
- FROM `*PREFIX*sms_relent_settings` |
|
| 3870 |
- WHERE `user_id` = ?'); |
|
| 3871 |
- $resultnmsg = $sqlnmsg->execute([$userId]); |
|
| 3872 |
- $nmsgdata = $resultnmsg->fetch(); |
|
| 3873 |
- $resultnmsg->closeCursor(); |
|
| 3874 |
- |
|
| 3875 |
- if ($nmsgdata) {
|
|
| 3876 |
- $newmsgdb = $nmsgdata['new_message_rcd']; |
|
| 3877 |
- |
|
| 3878 |
- if ($newmsgdb == 1) {
|
|
| 3879 |
- // Change the 'new message received' indicator to 0 in the 'sms_relent_settings' table, for the current user |
|
| 3880 |
- $newMsgRcd = 0; |
|
| 3881 |
- $sqlupdnmsc = $this->connection->prepare('
|
|
| 3882 |
- UPDATE `*PREFIX*sms_relent_settings` |
|
| 3883 |
- SET `new_message_rcd` = ? |
|
| 3884 |
- WHERE `user_id` = ?'); |
|
| 3885 |
- $updatenmRcd = $sqlupdnmsc->execute([$newMsgRcd, $userId]); |
|
| 3886 |
- $updatenmRcd->closeCursor(); |
|
| 3887 |
- } |
|
| 3888 |
- |
|
| 3889 |
- return $newmsgdb; |
|
| 3890 |
- } |
|
| 3891 |
- } |
|
| 3892 |
- |
|
| 3893 |
- |
|
| 3894 |
- /** |
|
| 3895 |
- * @NoAdminRequired |
|
| 3896 |
- */ |
|
| 3897 |
- public function getadminornot($userId) {
|
|
| 3898 |
- |
|
| 3899 |
- if ($this->groupManager->isAdmin($userId)) { $admreguser = 'admin'; } else { $admreguser = 'reguser'; }
|
|
| 3900 |
- return $admreguser; |
|
| 3901 |
- } |
|
| 3902 |
- |
|
| 3903 |
- |
|
| 3904 |
- /** |
|
| 3905 |
- * @NoAdminRequired |
|
| 3906 |
- */ |
|
| 3907 |
- public function getsettings($userId) {
|
|
| 3908 |
- |
|
| 3909 |
- $getsettings = $this->connection->prepare('
|
|
| 3910 |
- SELECT `id`, `user_id`, `telapi_url_rec`, `telapi_url`, `nexapi_url_rec`, `nexapi_url`, `twilapi_url_rec`, `twilapi_url`, `flowapi_url_rec`, `flowapi_url`, |
|
| 3911 |
- `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `show_display_names`, `add_display_names`, `msg_check_interval`, `archived_conv_nmbr` |
|
| 3912 |
- FROM `*PREFIX*sms_relent_settings` |
|
| 3913 |
- WHERE `user_id` = ?'); |
|
| 3914 |
- $resultsettings = $getsettings->execute([$userId]); |
|
| 3915 |
- |
|
| 3916 |
- $settingsfromdb = $resultsettings->fetch(); |
|
| 3917 |
- |
|
| 3918 |
- $resultsettings->closeCursor(); |
|
| 3919 |
- |
|
| 3920 |
- if ($settingsfromdb) {
|
|
| 3921 |
- |
|
| 3922 |
- if ($this->groupManager->isAdmin($userId)) { $adminreguser = 'admin'; } else { $adminreguser = 'reguser'; }
|
|
| 3923 |
- $settingsfromdb['adminornot'] = $adminreguser; |
|
| 3924 |
- $settingsfromdb['notification_email'] = htmlspecialchars($settingsfromdb['notification_email'], ENT_QUOTES); |
|
| 3925 |
- |
|
| 3926 |
- return $settingsfromdb; |
|
| 3927 |
- } |
|
| 3928 |
- |
|
| 3929 |
- } |
|
| 3930 |
- |
|
| 3931 |
- |
|
| 3932 |
- public function updatenumberrestrictions($userId, $savedByDsplname, $phoneNumber, $groups, $users) {
|
|
| 3933 |
- |
|
| 3934 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 3935 |
- |
|
| 3936 |
- $groupsproc = implode("|", $groups);
|
|
| 3937 |
- $usersproc = implode("|", $users);
|
|
| 3938 |
- |
|
| 3939 |
- // Get the restrictions for the current number from the 'sms_relent_restrict' table |
|
| 3940 |
- $getrestr = $this->connection->prepare('SELECT `user_id`, `saved_by_dsplname`, `phone_number`, `groups`, `users` FROM `*PREFIX*sms_relent_restrict` WHERE
|
|
| 3941 |
- `phone_number` = ?'); |
|
| 3942 |
- $getrestrresult = $getrestr->execute([$phoneNumber]); |
|
| 3943 |
- $crntrestr = $getrestrresult->fetch(); |
|
| 3944 |
- $getrestrresult->closeCursor(); |
|
| 3945 |
- |
|
| 3946 |
- if ($getrestrresult && !$crntrestr) {
|
|
| 3947 |
- |
|
| 3948 |
- $insertphrestr = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_restrict` (`user_id`, `saved_by_dsplname`, `phone_number`, `groups`, `users`) VALUES
|
|
| 3949 |
- (?, ?, ?, ?, ?)'); |
|
| 3950 |
- if ($insertphrestr->execute([$userId, $savedByDsplname, $phoneNumber, $groupsproc, $usersproc])) { $messagetosend = 'success'; } else { $messagetosend = 'failure'; }
|
|
| 3951 |
- |
|
| 3952 |
- } elseif ($getrestrresult && $crntrestr) {
|
|
| 3953 |
- |
|
| 3954 |
- $updatephrestr = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_restrict` SET `user_id` = ?, `saved_by_dsplname` = ?, `groups` = ?, `users` = ? WHERE
|
|
| 3955 |
- `phone_number` = ?'); |
|
| 3956 |
- if ($admupdatephonerestr = $updatephrestr->execute([$userId, $savedByDsplname, $groupsproc, $usersproc, $phoneNumber])) {
|
|
| 3957 |
- $messagetosend = 'success'; |
|
| 3958 |
- } else {
|
|
| 3959 |
- $messagetosend = 'failure'; |
|
| 3960 |
- } |
|
| 3961 |
- |
|
| 3962 |
- $admupdatephonerestr->closeCursor(); |
|
| 3963 |
- } |
|
| 3964 |
- return $messagetosend; |
|
| 3965 |
- } |
|
| 3966 |
- } |
|
| 3967 |
- |
|
| 3968 |
- |
|
| 3969 |
- public function updatekeysallowedusers($userId, $groups, $users, $groupsdel, $usersdel, $provider) {
|
|
| 3970 |
- |
|
| 3971 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 3972 |
- |
|
| 3973 |
- $msgtosend = 'success'; |
|
| 3974 |
- |
|
| 3975 |
- // Get the users that belong to the 'admin' group |
|
| 3976 |
- $getadmn = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
|
|
| 3977 |
- $getadmnres = $getadmn->execute(['admin']); |
|
| 3978 |
- |
|
| 3979 |
- $usersadmin = []; |
|
| 3980 |
- while ($getadmnusrs = $getadmnres->fetch()) {
|
|
| 3981 |
- $usersadmin[] = $getadmnusrs['uid']; |
|
| 3982 |
- } |
|
| 3983 |
- $getadmnres->closeCursor(); |
|
| 3984 |
- |
|
| 3985 |
- // Get the API keys and alphanumeric sender IDs for the current admin, from the 'sms_relent_settings' table |
|
| 3986 |
- $getadmset = $this->connection->prepare('SELECT `user_id`, `telapi_key`, `tel_pub_key`, `messaging_profile_id`, `tel_sender_name`, `nexapi_key`, `nexapi_secret`,
|
|
| 3987 |
- `nex_sender_name`, `twilapi_key`, `twilapi_secret`, `twil_sender_name`, `flowapi_key`, `flowapi_secret` |
|
| 3988 |
- FROM `*PREFIX*sms_relent_settings` WHERE `user_id` = ?'); |
|
| 3989 |
- $getadmsetres = $getadmset->execute([$userId]); |
|
| 3990 |
- $getcradmdata = $getadmsetres->fetch(); |
|
| 3991 |
- $telapiKey = $getcradmdata['telapi_key']; |
|
| 3992 |
- $telpubKey = $getcradmdata['tel_pub_key']; |
|
| 3993 |
- $telmsgprofid = $getcradmdata['messaging_profile_id']; |
|
| 3994 |
- $telsendername = $getcradmdata['tel_sender_name']; |
|
| 3995 |
- $plivoapikey = $getcradmdata['nexapi_key']; |
|
| 3996 |
- $plivoapisecret = $getcradmdata['nexapi_secret']; |
|
| 3997 |
- $plivosendernm = $getcradmdata['nex_sender_name']; |
|
| 3998 |
- $twilapikey = $getcradmdata['twilapi_key']; |
|
| 3999 |
- $twilapisecret = $getcradmdata['twilapi_secret']; |
|
| 4000 |
- $twilsendernm = $getcradmdata['twil_sender_name']; |
|
| 4001 |
- $flowapikey = $getcradmdata['flowapi_key']; |
|
| 4002 |
- $flowapisecret = $getcradmdata['flowapi_secret']; |
|
| 4003 |
- $getadmsetres->closeCursor(); |
|
| 4004 |
- |
|
| 4005 |
- if ($getcradmdata) {
|
|
| 4006 |
- |
|
| 4007 |
- if ($provider == "tnx") {
|
|
| 4008 |
- |
|
| 4009 |
- $getalwd = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed` FROM `*PREFIX*sms_relent_subac`');
|
|
| 4010 |
- $getalwdres = $getalwd->execute(); |
|
| 4011 |
- |
|
| 4012 |
- $upchck = 0; |
|
| 4013 |
- $seldataarr = []; |
|
| 4014 |
- $groupsPerProvider = ''; |
|
| 4015 |
- $usersPerProvider = ''; |
|
| 4016 |
- while ($crntrestr = $getalwdres->fetch()) {
|
|
| 4017 |
- if ($crntrestr['user_id'] != $userId) {
|
|
| 4018 |
- $seldataarr[] = ['userid' => $crntrestr['user_id'], 'groupsallowed' => $crntrestr['tnx_groups_allowed'], 'usersallowed' => $crntrestr['tnx_users_allowed']]; |
|
| 4019 |
- } else {
|
|
| 4020 |
- $upchck++; |
|
| 4021 |
- $groupsPerProvider = $crntrestr['tnx_groups_allowed']; |
|
| 4022 |
- $usersPerProvider = $crntrestr['tnx_users_allowed']; |
|
| 4023 |
- } |
|
| 4024 |
- } |
|
| 4025 |
- $getalwdres->closeCursor(); |
|
| 4026 |
- |
|
| 4027 |
- |
|
| 4028 |
- } elseif ($provider == "plv") {
|
|
| 4029 |
- |
|
| 4030 |
- $getalwd = $this->connection->prepare('SELECT `user_id`, `plv_groups_allowed`, `plv_users_allowed` FROM `*PREFIX*sms_relent_subac`');
|
|
| 4031 |
- $getalwdres = $getalwd->execute(); |
|
| 4032 |
- |
|
| 4033 |
- $upchck = 0; |
|
| 4034 |
- $seldataarr = []; |
|
| 4035 |
- $groupsPerProvider = ''; |
|
| 4036 |
- $usersPerProvider = ''; |
|
| 4037 |
- while ($crntrestr = $getalwdres->fetch()) {
|
|
| 4038 |
- if ($crntrestr['user_id'] != $userId) {
|
|
| 4039 |
- $seldataarr[] = ['userid' => $crntrestr['user_id'], 'groupsallowed' => $crntrestr['plv_groups_allowed'], 'usersallowed' => $crntrestr['plv_users_allowed']]; |
|
| 4040 |
- } else {
|
|
| 4041 |
- $upchck++; |
|
| 4042 |
- $groupsPerProvider = $crntrestr['plv_groups_allowed']; |
|
| 4043 |
- $usersPerProvider = $crntrestr['plv_users_allowed']; |
|
| 4044 |
- } |
|
| 4045 |
- } |
|
| 4046 |
- $getalwdres->closeCursor(); |
|
| 4047 |
- |
|
| 4048 |
- } elseif ($provider == "twl") {
|
|
| 4049 |
- |
|
| 4050 |
- $getalwd = $this->connection->prepare('SELECT `user_id`, `twl_groups_allowed`, `twl_users_allowed` FROM `*PREFIX*sms_relent_subac`');
|
|
| 4051 |
- $getalwdres = $getalwd->execute(); |
|
| 4052 |
- |
|
| 4053 |
- $upchck = 0; |
|
| 4054 |
- $seldataarr = []; |
|
| 4055 |
- $groupsPerProvider = ''; |
|
| 4056 |
- $usersPerProvider = ''; |
|
| 4057 |
- while ($crntrestr = $getalwdres->fetch()) {
|
|
| 4058 |
- if ($crntrestr['user_id'] != $userId) {
|
|
| 4059 |
- $seldataarr[] = ['userid' => $crntrestr['user_id'], 'groupsallowed' => $crntrestr['twl_groups_allowed'], 'usersallowed' => $crntrestr['twl_users_allowed']]; |
|
| 4060 |
- } else {
|
|
| 4061 |
- $upchck++; |
|
| 4062 |
- $groupsPerProvider = $crntrestr['twl_groups_allowed']; |
|
| 4063 |
- $usersPerProvider = $crntrestr['twl_users_allowed']; |
|
| 4064 |
- } |
|
| 4065 |
- } |
|
| 4066 |
- $getalwdres->closeCursor(); |
|
| 4067 |
- |
|
| 4068 |
- } elseif ($provider == "flr") {
|
|
| 4069 |
- |
|
| 4070 |
- $getalwd = $this->connection->prepare('SELECT `user_id`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac`');
|
|
| 4071 |
- $getalwdres = $getalwd->execute(); |
|
| 4072 |
- |
|
| 4073 |
- $upchck = 0; |
|
| 4074 |
- $seldataarr = []; |
|
| 4075 |
- $groupsPerProvider = ''; |
|
| 4076 |
- $usersPerProvider = ''; |
|
| 4077 |
- while ($crntrestr = $getalwdres->fetch()) {
|
|
| 4078 |
- if ($crntrestr['user_id'] != $userId) {
|
|
| 4079 |
- $seldataarr[] = ['userid' => $crntrestr['user_id'], 'groupsallowed' => $crntrestr['flr_groups_allowed'], 'usersallowed' => $crntrestr['flr_users_allowed']]; |
|
| 4080 |
- } else {
|
|
| 4081 |
- $upchck++; |
|
| 4082 |
- $groupsPerProvider = $crntrestr['flr_groups_allowed']; |
|
| 4083 |
- $usersPerProvider = $crntrestr['flr_users_allowed']; |
|
| 4084 |
- } |
|
| 4085 |
- } |
|
| 4086 |
- $getalwdres->closeCursor(); |
|
| 4087 |
- |
|
| 4088 |
- } |
|
| 4089 |
- |
|
| 4090 |
- |
|
| 4091 |
- if ($seldataarr) {
|
|
| 4092 |
- |
|
| 4093 |
- // Check if any of the current users are among the already saved ones (for the same provider) |
|
| 4094 |
- $usrchck = 0; |
|
| 4095 |
- $usrmsgarr = []; |
|
| 4096 |
- foreach ($users as $ukey => $uvalue) {
|
|
| 4097 |
- if ($uvalue != '') {
|
|
| 4098 |
- for ($j = 0; $j < count($seldataarr); $j++) {
|
|
| 4099 |
- if ($seldataarr[$j]['usersallowed']) {
|
|
| 4100 |
- if (str_contains($seldataarr[$j]['usersallowed'], $uvalue)) {
|
|
| 4101 |
- $usrchck++; |
|
| 4102 |
- $usrmsgarr[] = "The admin " . $seldataarr[$j]['userid'] . " has already allowed the user " . $uvalue . " to access his API keys for this provider."; |
|
| 4103 |
- } |
|
| 4104 |
- } |
|
| 4105 |
- } |
|
| 4106 |
- } |
|
| 4107 |
- } |
|
| 4108 |
- |
|
| 4109 |
- // Check if any of the current groups are among the already saved ones (for the same provider) |
|
| 4110 |
- $grchck = 0; |
|
| 4111 |
- $grmsgarr = []; |
|
| 4112 |
- foreach ($groups as $gkey => $gvalue) {
|
|
| 4113 |
- if ($gvalue != '') {
|
|
| 4114 |
- for ($k = 0; $k < count($seldataarr); $k++) {
|
|
| 4115 |
- if ($seldataarr[$k]['groupsallowed']) {
|
|
| 4116 |
- if (str_contains($seldataarr[$k]['groupsallowed'], $gvalue)) {
|
|
| 4117 |
- $grchck++; |
|
| 4118 |
- $grmsgarr[] = "The admin " . $seldataarr[$k]['userid'] . " has already allowed the group " . $gvalue . " to access his API keys for this provider."; |
|
| 4119 |
- } |
|
| 4120 |
- } |
|
| 4121 |
- } |
|
| 4122 |
- } |
|
| 4123 |
- } |
|
| 4124 |
- |
|
| 4125 |
- if ($usrchck == 0 && $grchck == 0) {
|
|
| 4126 |
- |
|
| 4127 |
- // Insert/Update the allowed users in the 'sms_relent_subac' table |
|
| 4128 |
- if ($users) {
|
|
| 4129 |
- |
|
| 4130 |
- $ctusernamearruid = []; |
|
| 4131 |
- $ctusernamearr = []; |
|
| 4132 |
- foreach ($users as $usrKey => $usrValue) {
|
|
| 4133 |
- if ($usrValue != '') {
|
|
| 4134 |
- // Get the username for this Display Name |
|
| 4135 |
- $getacdataunm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 4136 |
- $getacdataunmres = $getacdataunm->execute(['displayname', $usrValue]); |
|
| 4137 |
- $acdatausrname = $getacdataunmres->fetch(); |
|
| 4138 |
- if ($acdatausrname['uid'] != $userId) {
|
|
| 4139 |
- |
|
| 4140 |
- // Ensure the current user is not an admin |
|
| 4141 |
- if (!in_array($acdatausrname['uid'], $usersadmin)) {
|
|
| 4142 |
- $ctusernamearruid[] = $acdatausrname['uid']; |
|
| 4143 |
- $ctusernamearr[] = $usrValue; |
|
| 4144 |
- } |
|
| 4145 |
- |
|
| 4146 |
- } |
|
| 4147 |
- $getacdataunmres->closeCursor(); |
|
| 4148 |
- } |
|
| 4149 |
- } |
|
| 4150 |
- |
|
| 4151 |
- $usersalwdrs = implode("|", $ctusernamearr);
|
|
| 4152 |
- |
|
| 4153 |
- if ($upchck == 0) {
|
|
| 4154 |
- |
|
| 4155 |
- if ($provider == "tnx") {
|
|
| 4156 |
- |
|
| 4157 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `tnx_users_allowed`, `tnx_users_del`) VALUES (?, ?, ?)');
|
|
| 4158 |
- if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs, $usersdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4159 |
- $upchck++; |
|
| 4160 |
- |
|
| 4161 |
- } elseif ($provider == "plv") {
|
|
| 4162 |
- |
|
| 4163 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `plv_users_allowed`, `plv_users_del`) VALUES (?, ?, ?)');
|
|
| 4164 |
- if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs, $usersdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4165 |
- $upchck++; |
|
| 4166 |
- |
|
| 4167 |
- } elseif ($provider == "twl") {
|
|
| 4168 |
- |
|
| 4169 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `twl_users_allowed`, `twl_users_del`) VALUES (?, ?, ?)');
|
|
| 4170 |
- if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs, $usersdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4171 |
- $upchck++; |
|
| 4172 |
- |
|
| 4173 |
- } elseif ($provider == "flr") {
|
|
| 4174 |
- |
|
| 4175 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `flr_users_allowed`, `flr_users_del`) VALUES (?, ?, ?)');
|
|
| 4176 |
- if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs, $usersdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4177 |
- $upchck++; |
|
| 4178 |
- } |
|
| 4179 |
- |
|
| 4180 |
- } else {
|
|
| 4181 |
- |
|
| 4182 |
- if ($provider == "tnx") {
|
|
| 4183 |
- |
|
| 4184 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `tnx_users_allowed` = ?, `tnx_users_del` = ? WHERE `user_id` = ?');
|
|
| 4185 |
- if ($datalwdres = $updatealwd->execute([$usersalwdrs, $usersdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4186 |
- |
|
| 4187 |
- } elseif ($provider == "plv") {
|
|
| 4188 |
- |
|
| 4189 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `plv_users_allowed` = ?, `plv_users_del` = ? WHERE `user_id` = ?');
|
|
| 4190 |
- if ($datalwdres = $updatealwd->execute([$usersalwdrs, $usersdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4191 |
- |
|
| 4192 |
- } elseif ($provider == "twl") {
|
|
| 4193 |
- |
|
| 4194 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `twl_users_allowed` = ?, `twl_users_del` = ? WHERE `user_id` = ?');
|
|
| 4195 |
- if ($datalwdres = $updatealwd->execute([$usersalwdrs, $usersdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4196 |
- |
|
| 4197 |
- } elseif ($provider == "flr") {
|
|
| 4198 |
- |
|
| 4199 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `flr_users_allowed` = ?, `flr_users_del` = ? WHERE `user_id` = ?');
|
|
| 4200 |
- if ($datalwdres = $updatealwd->execute([$usersalwdrs, $usersdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4201 |
- } |
|
| 4202 |
- } |
|
| 4203 |
- |
|
| 4204 |
- $datalwdres->closeCursor(); |
|
| 4205 |
- } |
|
| 4206 |
- |
|
| 4207 |
- // Insert/Update the allowed groups in the 'sms_relent_subac' table |
|
| 4208 |
- if ($groups) {
|
|
| 4209 |
- |
|
| 4210 |
- $allwdgrps = []; |
|
| 4211 |
- foreach ($groups as $groupkey => $groupvalue) {
|
|
| 4212 |
- |
|
| 4213 |
- $allwdgrps[] = $groupvalue; |
|
| 4214 |
- |
|
| 4215 |
- $groupsalwdrs = implode("|", $allwdgrps);
|
|
| 4216 |
- |
|
| 4217 |
- if ($upchck == 0) {
|
|
| 4218 |
- |
|
| 4219 |
- if ($provider == "tnx") {
|
|
| 4220 |
- |
|
| 4221 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `tnx_groups_allowed`, `tnx_groups_del`) VALUES (?, ?, ?)');
|
|
| 4222 |
- if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs, $groupsdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4223 |
- $upchck++; |
|
| 4224 |
- |
|
| 4225 |
- } elseif ($provider == "plv") {
|
|
| 4226 |
- |
|
| 4227 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `plv_groups_allowed`, `plv_groups_del`) VALUES (?, ?, ?)');
|
|
| 4228 |
- if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs, $groupsdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4229 |
- $upchck++; |
|
| 4230 |
- |
|
| 4231 |
- } elseif ($provider == "twl") {
|
|
| 4232 |
- |
|
| 4233 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `twl_groups_allowed`, `twl_groups_del`) VALUES (?, ?, ?)');
|
|
| 4234 |
- if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs, $groupsdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4235 |
- $upchck++; |
|
| 4236 |
- |
|
| 4237 |
- } elseif ($provider == "flr") {
|
|
| 4238 |
- |
|
| 4239 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `flr_groups_allowed`, `flr_groups_del`) VALUES (?, ?, ?)');
|
|
| 4240 |
- if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs, $groupsdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4241 |
- $upchck++; |
|
| 4242 |
- } |
|
| 4243 |
- |
|
| 4244 |
- } else {
|
|
| 4245 |
- |
|
| 4246 |
- if ($provider == "tnx") {
|
|
| 4247 |
- |
|
| 4248 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `tnx_groups_allowed` = ?, `tnx_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4249 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4250 |
- |
|
| 4251 |
- } elseif ($provider == "plv") {
|
|
| 4252 |
- |
|
| 4253 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `plv_groups_allowed` = ?, `plv_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4254 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4255 |
- |
|
| 4256 |
- } elseif ($provider == "twl") {
|
|
| 4257 |
- |
|
| 4258 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `twl_groups_allowed` = ?, `twl_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4259 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4260 |
- |
|
| 4261 |
- } elseif ($provider == "flr") {
|
|
| 4262 |
- |
|
| 4263 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `flr_groups_allowed` = ?, `flr_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4264 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4265 |
- } |
|
| 4266 |
- } |
|
| 4267 |
- |
|
| 4268 |
- $datalwdres->closeCursor(); |
|
| 4269 |
- } |
|
| 4270 |
- |
|
| 4271 |
- } |
|
| 4272 |
- |
|
| 4273 |
- } else {
|
|
| 4274 |
- |
|
| 4275 |
- if ($grmsgarr) {
|
|
| 4276 |
- $grppart = implode(" ", $grmsgarr) . " A group cannot be allowed access to 2 sets of API keys for the same SMS provider.";
|
|
| 4277 |
- } else { $grppart = ''; }
|
|
| 4278 |
- |
|
| 4279 |
- if ($usrmsgarr) {
|
|
| 4280 |
- $usrpart = implode(" ", $usrmsgarr) . " A user cannot be allowed access to 2 sets of API keys for the same SMS provider.";
|
|
| 4281 |
- } else { $usrpart = ''; }
|
|
| 4282 |
- |
|
| 4283 |
- $msgtosend = $grppart . $usrpart; |
|
| 4284 |
- } |
|
| 4285 |
- |
|
| 4286 |
- |
|
| 4287 |
- } else {
|
|
| 4288 |
- |
|
| 4289 |
- if ($upchck == 0) {
|
|
| 4290 |
- |
|
| 4291 |
- // Insert/Update the allowed users in the 'sms_relent_subac' table |
|
| 4292 |
- if ($users) {
|
|
| 4293 |
- |
|
| 4294 |
- $ctusernamearruid = []; |
|
| 4295 |
- $ctusernamearr = []; |
|
| 4296 |
- foreach ($users as $usrKey => $usrValue) {
|
|
| 4297 |
- if ($usrValue != '') {
|
|
| 4298 |
- // Get the username for this Display Name |
|
| 4299 |
- $getacdataunm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 4300 |
- $getacdataunmres = $getacdataunm->execute(['displayname', $usrValue]); |
|
| 4301 |
- $acdatausrname = $getacdataunmres->fetch(); |
|
| 4302 |
- if ($acdatausrname['uid'] != $userId) {
|
|
| 4303 |
- |
|
| 4304 |
- // Ensure the current user is not an admin |
|
| 4305 |
- if (!in_array($acdatausrname['uid'], $usersadmin)) {
|
|
| 4306 |
- $ctusernamearruid[] = $acdatausrname['uid']; |
|
| 4307 |
- $ctusernamearr[] = $usrValue; |
|
| 4308 |
- } |
|
| 4309 |
- |
|
| 4310 |
- } |
|
| 4311 |
- $getacdataunmres->closeCursor(); |
|
| 4312 |
- } |
|
| 4313 |
- } |
|
| 4314 |
- |
|
| 4315 |
- $usersalwdrs = implode("|", $ctusernamearr);
|
|
| 4316 |
- |
|
| 4317 |
- if ($provider == "tnx") {
|
|
| 4318 |
- |
|
| 4319 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `tnx_users_allowed`, `tnx_users_del`) VALUES (?, ?, ?)');
|
|
| 4320 |
- if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs, $usersdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4321 |
- $upchck++; |
|
| 4322 |
- |
|
| 4323 |
- } elseif ($provider == "plv") {
|
|
| 4324 |
- |
|
| 4325 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `plv_users_allowed`, `plv_users_del`) VALUES (?, ?, ?)');
|
|
| 4326 |
- if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs, $usersdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4327 |
- $upchck++; |
|
| 4328 |
- |
|
| 4329 |
- } elseif ($provider == "twl") {
|
|
| 4330 |
- |
|
| 4331 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `twl_users_allowed`, `twl_users_del`) VALUES (?, ?, ?)');
|
|
| 4332 |
- if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs, $usersdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4333 |
- $upchck++; |
|
| 4334 |
- |
|
| 4335 |
- } elseif ($provider == "flr") {
|
|
| 4336 |
- |
|
| 4337 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `flr_users_allowed`, `flr_users_del`) VALUES (?, ?, ?)');
|
|
| 4338 |
- if ($datalwdres = $insertalwd->execute([$userId, $usersalwdrs, $usersdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4339 |
- $upchck++; |
|
| 4340 |
- } |
|
| 4341 |
- |
|
| 4342 |
- $datalwdres->closeCursor(); |
|
| 4343 |
- } |
|
| 4344 |
- |
|
| 4345 |
- // Insert/Update the allowed groups in the 'sms_relent_subac' table |
|
| 4346 |
- if ($groups) {
|
|
| 4347 |
- |
|
| 4348 |
- $allwdgrps = []; |
|
| 4349 |
- foreach ($groups as $groupkey => $groupvalue) {
|
|
| 4350 |
- |
|
| 4351 |
- $allwdgrps[] = $groupvalue; |
|
| 4352 |
- |
|
| 4353 |
- $groupsalwdrs = implode("|", $allwdgrps);
|
|
| 4354 |
- |
|
| 4355 |
- if ($upchck == 0) {
|
|
| 4356 |
- |
|
| 4357 |
- if ($provider == "tnx") {
|
|
| 4358 |
- |
|
| 4359 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `tnx_groups_allowed`, `tnx_groups_del`) VALUES (?, ?, ?)');
|
|
| 4360 |
- if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs, $groupsdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4361 |
- |
|
| 4362 |
- } elseif ($provider == "plv") {
|
|
| 4363 |
- |
|
| 4364 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `plv_groups_allowed`, `plv_groups_del`) VALUES (?, ?, ?)');
|
|
| 4365 |
- if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs, $groupsdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4366 |
- |
|
| 4367 |
- } elseif ($provider == "twl") {
|
|
| 4368 |
- |
|
| 4369 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `twl_groups_allowed`, `twl_groups_del`) VALUES (?, ?, ?)');
|
|
| 4370 |
- if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs, $groupsdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4371 |
- |
|
| 4372 |
- } elseif ($provider == "flr") {
|
|
| 4373 |
- |
|
| 4374 |
- $insertalwd = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_subac` (`user_id`, `flr_groups_allowed`, `flr_groups_del`) VALUES (?, ?, ?)');
|
|
| 4375 |
- if ($datalwdres = $insertalwd->execute([$userId, $groupsalwdrs, $groupsdel])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4376 |
- } |
|
| 4377 |
- |
|
| 4378 |
- } else {
|
|
| 4379 |
- |
|
| 4380 |
- if ($provider == "tnx") {
|
|
| 4381 |
- |
|
| 4382 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `tnx_groups_allowed` = ?, `tnx_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4383 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4384 |
- |
|
| 4385 |
- } elseif ($provider == "plv") {
|
|
| 4386 |
- |
|
| 4387 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `plv_groups_allowed` = ?, `plv_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4388 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4389 |
- |
|
| 4390 |
- } elseif ($provider == "twl") {
|
|
| 4391 |
- |
|
| 4392 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `twl_groups_allowed` = ?, `twl_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4393 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4394 |
- |
|
| 4395 |
- } elseif ($provider == "flr") {
|
|
| 4396 |
- |
|
| 4397 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `flr_groups_allowed` = ?, `flr_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4398 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4399 |
- } |
|
| 4400 |
- |
|
| 4401 |
- } |
|
| 4402 |
- |
|
| 4403 |
- $datalwdres->closeCursor(); |
|
| 4404 |
- } |
|
| 4405 |
- |
|
| 4406 |
- } |
|
| 4407 |
- |
|
| 4408 |
- } else {
|
|
| 4409 |
- |
|
| 4410 |
- // Update the allowed users in the 'sms_relent_subac' table |
|
| 4411 |
- if ($users) {
|
|
| 4412 |
- |
|
| 4413 |
- $ctusernamearruid = []; |
|
| 4414 |
- $ctusernamearr = []; |
|
| 4415 |
- foreach ($users as $usrKey => $usrValue) {
|
|
| 4416 |
- if ($usrValue != '') {
|
|
| 4417 |
- // Get the username for this Display Name |
|
| 4418 |
- $getacdataunm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 4419 |
- $getacdataunmres = $getacdataunm->execute(['displayname', $usrValue]); |
|
| 4420 |
- $acdatausrname = $getacdataunmres->fetch(); |
|
| 4421 |
- if ($acdatausrname['uid'] != $userId) {
|
|
| 4422 |
- |
|
| 4423 |
- // Ensure the current user is not an admin |
|
| 4424 |
- if (!in_array($acdatausrname['uid'], $usersadmin)) {
|
|
| 4425 |
- $ctusernamearruid[] = $acdatausrname['uid']; |
|
| 4426 |
- $ctusernamearr[] = $usrValue; |
|
| 4427 |
- |
|
| 4428 |
- } |
|
| 4429 |
- |
|
| 4430 |
- } |
|
| 4431 |
- $getacdataunmres->closeCursor(); |
|
| 4432 |
- } |
|
| 4433 |
- } |
|
| 4434 |
- |
|
| 4435 |
- |
|
| 4436 |
- $usersalwdrs = implode("|", $ctusernamearr);
|
|
| 4437 |
- |
|
| 4438 |
- if ($provider == "tnx") {
|
|
| 4439 |
- |
|
| 4440 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `tnx_users_allowed` = ?, `tnx_users_del` = ? WHERE `user_id` = ?');
|
|
| 4441 |
- if ($datalwdres = $updatealwd->execute([$usersalwdrs, $usersdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4442 |
- |
|
| 4443 |
- } elseif ($provider == "plv") {
|
|
| 4444 |
- |
|
| 4445 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `plv_users_allowed` = ?, `plv_users_del` = ? WHERE `user_id` = ?');
|
|
| 4446 |
- if ($datalwdres = $updatealwd->execute([$usersalwdrs, $usersdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4447 |
- |
|
| 4448 |
- } elseif ($provider == "twl") {
|
|
| 4449 |
- |
|
| 4450 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `twl_users_allowed` = ?, `twl_users_del` = ? WHERE `user_id` = ?');
|
|
| 4451 |
- if ($datalwdres = $updatealwd->execute([$usersalwdrs, $usersdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4452 |
- |
|
| 4453 |
- } elseif ($provider == "flr") {
|
|
| 4454 |
- |
|
| 4455 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `flr_users_allowed` = ?, `flr_users_del` = ? WHERE `user_id` = ?');
|
|
| 4456 |
- if ($datalwdres = $updatealwd->execute([$usersalwdrs, $usersdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4457 |
- } |
|
| 4458 |
- |
|
| 4459 |
- $datalwdres->closeCursor(); |
|
| 4460 |
- } |
|
| 4461 |
- |
|
| 4462 |
- // Update the allowed groups in the 'sms_relent_subac' table |
|
| 4463 |
- if ($groups) {
|
|
| 4464 |
- |
|
| 4465 |
- $allwdgrps = []; |
|
| 4466 |
- foreach ($groups as $groupkey => $groupvalue) {
|
|
| 4467 |
- |
|
| 4468 |
- $allwdgrps[] = $groupvalue; |
|
| 4469 |
- |
|
| 4470 |
- $groupsalwdrs = implode("|", $allwdgrps);
|
|
| 4471 |
- |
|
| 4472 |
- if ($provider == "tnx") {
|
|
| 4473 |
- |
|
| 4474 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `tnx_groups_allowed` = ?, `tnx_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4475 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4476 |
- |
|
| 4477 |
- } elseif ($provider == "plv") {
|
|
| 4478 |
- |
|
| 4479 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `plv_groups_allowed` = ?, `plv_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4480 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4481 |
- |
|
| 4482 |
- } elseif ($provider == "twl") {
|
|
| 4483 |
- |
|
| 4484 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `twl_groups_allowed` = ?, `twl_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4485 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4486 |
- |
|
| 4487 |
- } elseif ($provider == "flr") {
|
|
| 4488 |
- |
|
| 4489 |
- $updatealwd = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_subac` SET `flr_groups_allowed` = ?, `flr_groups_del` = ? WHERE `user_id` = ?');
|
|
| 4490 |
- if ($datalwdres = $updatealwd->execute([$groupsalwdrs, $groupsdel, $userId])) { $msgtosend = 'success'; } else { $msgtosend = 'failure'; }
|
|
| 4491 |
- } |
|
| 4492 |
- |
|
| 4493 |
- $datalwdres->closeCursor(); |
|
| 4494 |
- } |
|
| 4495 |
- |
|
| 4496 |
- } |
|
| 4497 |
- |
|
| 4498 |
- } |
|
| 4499 |
- |
|
| 4500 |
- } |
|
| 4501 |
- |
|
| 4502 |
- } else { $msgtosend = "You have to save your credentials first, by clicking the 'Save' button at the bottom of this page, and then share your API keys with other users."; }
|
|
| 4503 |
- |
|
| 4504 |
- return $msgtosend; |
|
| 4505 |
- } |
|
| 4506 |
- } |
|
| 4507 |
- |
|
| 4508 |
- |
|
| 4509 |
- public function removenumberrestrictions($userId, $phoneNumber) {
|
|
| 4510 |
- |
|
| 4511 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 4512 |
- |
|
| 4513 |
- // Remove the restrictions for the given phone number |
|
| 4514 |
- $delrstr = $this->connection->prepare('
|
|
| 4515 |
- DELETE FROM `*PREFIX*sms_relent_restrict` |
|
| 4516 |
- WHERE `phone_number` = ?'); |
|
| 4517 |
- if ($delrstrres = $delrstr->execute([$phoneNumber])) { $delresult = "success"; } else { $delresult = "failure"; }
|
|
| 4518 |
- $delrstrres->closeCursor(); |
|
| 4519 |
- |
|
| 4520 |
- $updateind = $this->connection->prepare('
|
|
| 4521 |
- SET @resetrec = 0; |
|
| 4522 |
- UPDATE `*PREFIX*sms_relent_restrict` |
|
| 4523 |
- SET `id` = @resetrec := @resetrec + 1; |
|
| 4524 |
- ALTER TABLE `*PREFIX*sms_relent_restrict` auto_increment=1;'); |
|
| 4525 |
- $updateindres = $updateind->execute(); |
|
| 4526 |
- $updateindres->closeCursor(); |
|
| 4527 |
- |
|
| 4528 |
- return $delresult; |
|
| 4529 |
- } |
|
| 4530 |
- } |
|
| 4531 |
- |
|
| 4532 |
- |
|
| 4533 |
- /** |
|
| 4534 |
- * @NoAdminRequired |
|
| 4535 |
- */ |
|
| 4536 |
- public function updateautoreplies($userId, $savedByDsplname, $phoneNumber, $daysOfWeek, $dailyStart, $dailyEnd, $vacationStart, $vacationEnd, $messageText) {
|
|
| 4537 |
- |
|
| 4538 |
- // Get the auto-reply for the current number from the 'sms_relent_autorply' table |
|
| 4539 |
- $getarpl = $this->connection->prepare('SELECT `user_id`, `saved_by_dsplname`, `phone_number`, `days_of_week`, `daily_start`, `daily_end`, `vacation_start`,
|
|
| 4540 |
- `vacation_end`, `message_text` FROM `*PREFIX*sms_relent_autorply` WHERE `phone_number` = ?'); |
|
| 4541 |
- $getarplresult = $getarpl->execute([$phoneNumber]); |
|
| 4542 |
- $crntarpl = $getarplresult->fetch(); |
|
| 4543 |
- $getarplresult->closeCursor(); |
|
| 4544 |
- |
|
| 4545 |
- if ($getarplresult && !$crntarpl) {
|
|
| 4546 |
- |
|
| 4547 |
- $insertpharpl = $this->connection->prepare('INSERT INTO `*PREFIX*sms_relent_autorply` (`user_id`, `saved_by_dsplname`, `phone_number`, `days_of_week`,
|
|
| 4548 |
- `daily_start`, `daily_end`, `vacation_start`, `vacation_end`, `message_text`) VALUES |
|
| 4549 |
- (?, ?, ?, ?, ?, ?, ?, ?, ?)'); |
|
| 4550 |
- if ($insertpharpl->execute([$userId, $savedByDsplname, $phoneNumber, $daysOfWeek, $dailyStart, $dailyEnd, $vacationStart, $vacationEnd, $messageText])) {
|
|
| 4551 |
- $messagetosend = 'success'; |
|
| 4552 |
- } else {
|
|
| 4553 |
- $messagetosend = 'failure'; |
|
| 4554 |
- } |
|
| 4555 |
- |
|
| 4556 |
- } elseif ($getarplresult && $crntarpl) {
|
|
| 4557 |
- |
|
| 4558 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 4559 |
- |
|
| 4560 |
- $updatepharpl = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_autorply` SET `user_id` = ?, `saved_by_dsplname` = ?, `days_of_week` = ?, `daily_start` = ?,
|
|
| 4561 |
- `daily_end` = ?, `vacation_start` = ?, `vacation_end` = ?, `message_text` = ? WHERE `phone_number` = ?'); |
|
| 4562 |
- if ($updatephnmbrarpl = $updatepharpl->execute([$userId, $savedByDsplname, $daysOfWeek, $dailyStart, $dailyEnd, $vacationStart, $vacationEnd, $messageText, |
|
| 4563 |
- $phoneNumber])) {
|
|
| 4564 |
- $messagetosend = 'success'; |
|
| 4565 |
- } else {
|
|
| 4566 |
- $messagetosend = 'failure'; |
|
| 4567 |
- } |
|
| 4568 |
- $updatephnmbrarpl->closeCursor(); |
|
| 4569 |
- |
|
| 4570 |
- } else {
|
|
| 4571 |
- |
|
| 4572 |
- // Check if the current user is the author of the existing version of the auto-reply |
|
| 4573 |
- if ($userId == $crntarpl['user_id']) {
|
|
| 4574 |
- |
|
| 4575 |
- $updatepharpl = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_autorply` SET `user_id` = ?, `saved_by_dsplname` = ?, `days_of_week` = ?, `daily_start` = ?,
|
|
| 4576 |
- `daily_end` = ?, `vacation_start` = ?, `vacation_end` = ?, `message_text` = ? WHERE `phone_number` = ?'); |
|
| 4577 |
- if ($updatephnmbrarpl = $updatepharpl->execute([$userId, $savedByDsplname, $daysOfWeek, $dailyStart, $dailyEnd, $vacationStart, $vacationEnd, $messageText, |
|
| 4578 |
- $phoneNumber])) {
|
|
| 4579 |
- $messagetosend = 'success'; |
|
| 4580 |
- } else {
|
|
| 4581 |
- $messagetosend = 'failure'; |
|
| 4582 |
- } |
|
| 4583 |
- $updatephnmbrarpl->closeCursor(); |
|
| 4584 |
- |
|
| 4585 |
- } else { $messagetosend = 'not allowed'; }
|
|
| 4586 |
- } |
|
| 4587 |
- } |
|
| 4588 |
- |
|
| 4589 |
- return $messagetosend; |
|
| 4590 |
- } |
|
| 4591 |
- |
|
| 4592 |
- |
|
| 4593 |
- /** |
|
| 4594 |
- * @NoAdminRequired |
|
| 4595 |
- */ |
|
| 4596 |
- public function removeautoreplies($userId, $phoneNumber) {
|
|
| 4597 |
- |
|
| 4598 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 4599 |
- |
|
| 4600 |
- // Remove the auto-reply for the given phone number |
|
| 4601 |
- $delarpl = $this->connection->prepare('
|
|
| 4602 |
- DELETE FROM `*PREFIX*sms_relent_autorply` |
|
| 4603 |
- WHERE `phone_number` = ?'); |
|
| 4604 |
- if ($delarplres = $delarpl->execute([$phoneNumber])) { $delarplresult = "success"; } else { $delarplresult = "failure"; }
|
|
| 4605 |
- $delarplres->closeCursor(); |
|
| 4606 |
- |
|
| 4607 |
- $updateindarpl = $this->connection->prepare('
|
|
| 4608 |
- SET @resetarpl = 0; |
|
| 4609 |
- UPDATE `*PREFIX*sms_relent_autorply` |
|
| 4610 |
- SET `id` = @resetarpl := @resetarpl + 1; |
|
| 4611 |
- ALTER TABLE `*PREFIX*sms_relent_autorply` auto_increment=1;'); |
|
| 4612 |
- $updateindarplres = $updateindarpl->execute(); |
|
| 4613 |
- $updateindarplres->closeCursor(); |
|
| 4614 |
- |
|
| 4615 |
- return $delarplresult; |
|
| 4616 |
- |
|
| 4617 |
- } else {
|
|
| 4618 |
- // Get the author of the auto-reply for the given phone number |
|
| 4619 |
- $getarplusr = $this->connection->prepare('SELECT `user_id`, `phone_number` FROM `*PREFIX*sms_relent_autorply` WHERE `phone_number` = ?');
|
|
| 4620 |
- $getarplusrres = $getarplusr->execute([$phoneNumber]); |
|
| 4621 |
- $crntarpldata = $getarplusrres->fetch(); |
|
| 4622 |
- $crntarpluser = $crntarpldata['user_id']; |
|
| 4623 |
- $getarplusrres->closeCursor(); |
|
| 4624 |
- |
|
| 4625 |
- // If the author of the auto-reply is the current user, allow the removal |
|
| 4626 |
- if ($crntarpluser == $userId) {
|
|
| 4627 |
- |
|
| 4628 |
- // Remove the auto-reply for the given phone number |
|
| 4629 |
- $delarpl = $this->connection->prepare('
|
|
| 4630 |
- DELETE FROM `*PREFIX*sms_relent_autorply` |
|
| 4631 |
- WHERE `phone_number` = ?'); |
|
| 4632 |
- if ($delarplres = $delarpl->execute([$phoneNumber])) { $delarplresult = "success"; } else { $delarplresult = "failure"; }
|
|
| 4633 |
- $delarplres->closeCursor(); |
|
| 4634 |
- |
|
| 4635 |
- $updateindarpl = $this->connection->prepare('
|
|
| 4636 |
- SET @resetarpl = 0; |
|
| 4637 |
- UPDATE `*PREFIX*sms_relent_autorply` |
|
| 4638 |
- SET `id` = @resetarpl := @resetarpl + 1; |
|
| 4639 |
- ALTER TABLE `*PREFIX*sms_relent_autorply` auto_increment=1;'); |
|
| 4640 |
- $updateindarplres = $updateindarpl->execute(); |
|
| 4641 |
- $updateindarplres->closeCursor(); |
|
| 4642 |
- |
|
| 4643 |
- return $delarplresult; |
|
| 4644 |
- |
|
| 4645 |
- } else {
|
|
| 4646 |
- return $delarplresult = 'not allowed'; |
|
| 4647 |
- } |
|
| 4648 |
- } |
|
| 4649 |
- } |
|
| 4650 |
- |
|
| 4651 |
- |
|
| 4652 |
- public function getadminsettings($userId) {
|
|
| 4653 |
- |
|
| 4654 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 4655 |
- |
|
| 4656 |
- |
|
| 4657 |
- $getsettings = $this->connection->prepare('
|
|
| 4658 |
- SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, |
|
| 4659 |
- `nexapi_url`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, |
|
| 4660 |
- `tel_sender_name`, `nex_sender_name`, `twil_sender_name`, `flow_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, |
|
| 4661 |
- `show_all_messages` |
|
| 4662 |
- FROM `*PREFIX*sms_relent_settings` |
|
| 4663 |
- WHERE `user_id` = ?'); |
|
| 4664 |
- |
|
| 4665 |
- $resultsettings = $getsettings->execute([$userId]); |
|
| 4666 |
- |
|
| 4667 |
- $settingsadm = $resultsettings->fetch(); |
|
| 4668 |
- |
|
| 4669 |
- $resultsettings->closeCursor(); |
|
| 4670 |
- |
|
| 4671 |
- if ($settingsadm) {
|
|
| 4672 |
- |
|
| 4673 |
- if ($settingsadm['telapi_key'] != '') {
|
|
| 4674 |
- |
|
| 4675 |
- // Send a placeholder to the browser, instead of the real API key |
|
| 4676 |
- $settingsadm['telapi_key'] = "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"; |
|
| 4677 |
- } |
|
| 4678 |
- if ($settingsadm['tel_pub_key'] != '') {
|
|
| 4679 |
- $settingsadm['tel_pub_key'] = "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"; |
|
| 4680 |
- } |
|
| 4681 |
- if ($settingsadm['messaging_profile_id'] != '') {
|
|
| 4682 |
- $settingsadm['messaging_profile_id'] = "%20%20%20%20%20%20%20%20%20%20%20%20"; |
|
| 4683 |
- } |
|
| 4684 |
- if ($settingsadm['nexapi_key'] != '') {
|
|
| 4685 |
- $settingsadm['nexapi_key'] = "%20%20%20%20%20%20%20%20%20"; |
|
| 4686 |
- } |
|
| 4687 |
- if ($settingsadm['nexapi_secret'] != '') {
|
|
| 4688 |
- $settingsadm['nexapi_secret'] = "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"; |
|
| 4689 |
- } |
|
| 4690 |
- if ($settingsadm['twilapi_key'] != '') {
|
|
| 4691 |
- $settingsadm['twilapi_key'] = "%20%20%20%20%20%20%20%20%20"; |
|
| 4692 |
- } |
|
| 4693 |
- if ($settingsadm['twilapi_secret'] != '') {
|
|
| 4694 |
- $settingsadm['twilapi_secret'] = "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"; |
|
| 4695 |
- } |
|
| 4696 |
- if ($settingsadm['flowapi_key'] != '') {
|
|
| 4697 |
- $settingsadm['flowapi_key'] = "%20%20%20%20%20%20%20%20%20"; |
|
| 4698 |
- } |
|
| 4699 |
- if ($settingsadm['flowapi_secret'] != '') {
|
|
| 4700 |
- $settingsadm['flowapi_secret'] = "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20"; |
|
| 4701 |
- } |
|
| 4702 |
- |
|
| 4703 |
- $settingsadm['telapi_url'] = ($settingsadm['telapi_url'])? htmlspecialchars($settingsadm['telapi_url'], ENT_QUOTES) : ""; |
|
| 4704 |
- $settingsadm['telapi_url_rec'] = ($settingsadm['telapi_url_rec'])? htmlspecialchars($settingsadm['telapi_url_rec'], ENT_QUOTES) : ""; |
|
| 4705 |
- $settingsadm['nexapi_url'] = ($settingsadm['nexapi_url'])? htmlspecialchars($settingsadm['nexapi_url'], ENT_QUOTES) : ""; |
|
| 4706 |
- $settingsadm['nexapi_url_rec'] = ($settingsadm['nexapi_url_rec'])? htmlspecialchars($settingsadm['nexapi_url_rec'], ENT_QUOTES) : ""; |
|
| 4707 |
- $settingsadm['twilapi_url'] = ($settingsadm['twilapi_url'])? htmlspecialchars($settingsadm['twilapi_url'], ENT_QUOTES) : ""; |
|
| 4708 |
- $settingsadm['twilapi_url_rec'] = ($settingsadm['twilapi_url_rec'])? htmlspecialchars($settingsadm['twilapi_url_rec'], ENT_QUOTES) : ""; |
|
| 4709 |
- $settingsadm['flowapi_url'] = ($settingsadm['flowapi_url'])? htmlspecialchars($settingsadm['flowapi_url'], ENT_QUOTES) : ""; |
|
| 4710 |
- $settingsadm['flowapi_url_rec'] = ($settingsadm['flowapi_url_rec'])? htmlspecialchars($settingsadm['flowapi_url_rec'], ENT_QUOTES) : ""; |
|
| 4711 |
- |
|
| 4712 |
- // Get the Display Name of the current admin |
|
| 4713 |
- $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
|
|
| 4714 |
- $getacdatadnres = $getacdatadn->execute([$userId, 'displayname']); |
|
| 4715 |
- $acdatausrdnadm = $getacdatadnres->fetch(); |
|
| 4716 |
- $cruserdname = $acdatausrdnadm['value']; |
|
| 4717 |
- $getacdatadnres->closeCursor(); |
|
| 4718 |
- |
|
| 4719 |
- // Get all the restrictions on phone numbers |
|
| 4720 |
- $getrestr = $this->connection->prepare('SELECT `saved_by_dsplname`, `phone_number`, `groups`, `users` FROM `*PREFIX*sms_relent_restrict`');
|
|
| 4721 |
- $getrestres = $getrestr->execute(); |
|
| 4722 |
- |
|
| 4723 |
- $restrictedArr = []; |
|
| 4724 |
- while ($restrfetched = $getrestres->fetch()) {
|
|
| 4725 |
-// $restrictedArr[] = $restrfetched; |
|
| 4726 |
- $restrfetched['groups'] = htmlspecialchars($restrfetched['groups'], ENT_QUOTES); |
|
| 4727 |
- $restrfetched['users'] = htmlspecialchars($restrfetched['users'], ENT_QUOTES); |
|
| 4728 |
- $restrictedArr[] = $restrfetched; |
|
| 4729 |
- } |
|
| 4730 |
- $getrestres->closeCursor(); |
|
| 4731 |
- |
|
| 4732 |
- if ($restrictedArr) { $restrictedUsers = $restrictedArr; } else { $restrictedUsers = ''; }
|
|
| 4733 |
- |
|
| 4734 |
- |
|
| 4735 |
- // Get the name of all the groups |
|
| 4736 |
- $getgroups = $this->connection->prepare('SELECT `gid`, `displayname` FROM `*PREFIX*groups`');
|
|
| 4737 |
- $getgroupsres = $getgroups->execute(); |
|
| 4738 |
- |
|
| 4739 |
- $groupsArr = []; |
|
| 4740 |
- $allgroupswadmarr = []; |
|
| 4741 |
- while ($groupsfetched = $getgroupsres->fetch()) {
|
|
| 4742 |
- |
|
| 4743 |
- $groupsArr[] = $groupsfetched['gid']; |
|
| 4744 |
- if ($groupsfetched['gid'] != 'admin') { $allgroupswadmarr[] = $groupsfetched['gid']; }
|
|
| 4745 |
- } |
|
| 4746 |
- $getgroupsres->closeCursor(); |
|
| 4747 |
- |
|
| 4748 |
- if ($groupsArr) { $allgroups = $groupsArr; } else { $allgroups = ''; }
|
|
| 4749 |
- if ($allgroupswadmarr) { $allgroupswadm = $allgroupswadmarr; } else { $allgroupswadm = ''; }
|
|
| 4750 |
- |
|
| 4751 |
- // Get the users that belong to the 'admin' group |
|
| 4752 |
- $getadmnsc = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
|
|
| 4753 |
- $getadmnscres = $getadmnsc->execute(['admin']); |
|
| 4754 |
- |
|
| 4755 |
- $usersadminsc = []; |
|
| 4756 |
- while ($getadmnusrsc = $getadmnscres->fetch()) {
|
|
| 4757 |
- $usersadminsc[] = $getadmnusrsc['uid']; |
|
| 4758 |
- } |
|
| 4759 |
- $getadmnscres->closeCursor(); |
|
| 4760 |
- |
|
| 4761 |
- |
|
| 4762 |
- // Get the display name of all the users |
|
| 4763 |
- $getusers = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ?');
|
|
| 4764 |
- $getusersres = $getusers->execute(['displayname']); |
|
| 4765 |
- |
|
| 4766 |
- $usersArr = []; |
|
| 4767 |
- $alluserswadmarr = []; |
|
| 4768 |
- while ($usersfetched = $getusersres->fetch()) {
|
|
| 4769 |
- |
|
| 4770 |
- $usersArr[] = $usersfetched['value']; |
|
| 4771 |
- if (!in_array($usersfetched['uid'], $usersadminsc)) { $alluserswadmarr[] = $usersfetched['value']; }
|
|
| 4772 |
- } |
|
| 4773 |
- $getusersres->closeCursor(); |
|
| 4774 |
- |
|
| 4775 |
- if ($usersArr) { $allusers = $usersArr; } else { $allusers = ''; }
|
|
| 4776 |
- if ($alluserswadmarr) { $alluserswadm = $alluserswadmarr; } else { $alluserswadm = ''; }
|
|
| 4777 |
- |
|
| 4778 |
- // Get the groups and users that are allowed to use the API Keys, for each provider |
|
| 4779 |
- $getalwdall = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
|
|
| 4780 |
- `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed`, `tnx_groups_del`, `tnx_users_del`, |
|
| 4781 |
- `plv_groups_del`, `plv_users_del`, `twl_groups_del`, `twl_users_del`, `flr_groups_del`, `flr_users_del` |
|
| 4782 |
- FROM `*PREFIX*sms_relent_subac` WHERE `user_id` = ?'); |
|
| 4783 |
- $getalwdallres = $getalwdall->execute([$userId]); |
|
| 4784 |
- $crtdtrow = $getalwdallres->fetch(); |
|
| 4785 |
- if ($crtdtrow) {
|
|
| 4786 |
- $allowedgrps = ['tnx_groups_allowed' => ($crtdtrow['tnx_groups_allowed'])? htmlspecialchars($crtdtrow['tnx_groups_allowed'], ENT_QUOTES) : "", |
|
| 4787 |
- 'tnx_users_allowed' => ($crtdtrow['tnx_users_allowed'])? htmlspecialchars($crtdtrow['tnx_users_allowed'], ENT_QUOTES) : "", |
|
| 4788 |
- 'plv_groups_allowed' => ($crtdtrow['plv_groups_allowed'])? htmlspecialchars($crtdtrow['plv_groups_allowed'], ENT_QUOTES) : "", |
|
| 4789 |
- 'plv_users_allowed' => ($crtdtrow['plv_users_allowed'])? htmlspecialchars($crtdtrow['plv_users_allowed'], ENT_QUOTES) : "", |
|
| 4790 |
- 'twl_groups_allowed' => ($crtdtrow['twl_groups_allowed'])? htmlspecialchars($crtdtrow['twl_groups_allowed'], ENT_QUOTES) : "", |
|
| 4791 |
- 'twl_users_allowed' => ($crtdtrow['twl_users_allowed'])? htmlspecialchars($crtdtrow['twl_users_allowed'], ENT_QUOTES) : "", |
|
| 4792 |
- 'flr_groups_allowed' => ($crtdtrow['flr_groups_allowed'])? htmlspecialchars($crtdtrow['flr_groups_allowed'], ENT_QUOTES) : "", |
|
| 4793 |
- 'flr_users_allowed' => ($crtdtrow['flr_users_allowed'])? htmlspecialchars($crtdtrow['flr_users_allowed'], ENT_QUOTES) : "", |
|
| 4794 |
- 'tnx_groups_del' => $crtdtrow['tnx_groups_del'], 'tnx_users_del' => $crtdtrow['tnx_users_del'], |
|
| 4795 |
- 'plv_groups_del' => $crtdtrow['plv_groups_del'], 'plv_users_del' => $crtdtrow['plv_users_del'], |
|
| 4796 |
- 'twl_groups_del' => $crtdtrow['twl_groups_del'], 'twl_users_del' => $crtdtrow['twl_users_del'], |
|
| 4797 |
- 'flr_groups_del' => $crtdtrow['flr_groups_del'], 'flr_users_del' => $crtdtrow['flr_users_del']]; |
|
| 4798 |
- $getalwdallres->closeCursor(); |
|
| 4799 |
- } else { $allowedgrps = []; }
|
|
| 4800 |
- |
|
| 4801 |
- $settingsadm['admdisplayname'] = $cruserdname; |
|
| 4802 |
- $settingsadm['restrictions'] = $restrictedUsers; |
|
| 4803 |
- $settingsadm['allgroups'] = $allgroups; |
|
| 4804 |
- $settingsadm['allusers'] = $allusers; |
|
| 4805 |
- $settingsadm['allgroupswadm'] = $allgroupswadm; |
|
| 4806 |
- $settingsadm['alluserswadm'] = $alluserswadm; |
|
| 4807 |
- $settingsadm['allowedkeysuse'] = $allowedgrps; |
|
| 4808 |
- |
|
| 4809 |
- return $settingsadm; |
|
| 4810 |
- } |
|
| 4811 |
- } |
|
| 4812 |
- } |
|
| 4813 |
- |
|
| 4814 |
- |
|
| 4815 |
- /** |
|
| 4816 |
- * @NoAdminRequired |
|
| 4817 |
- * |
|
| 4818 |
- */ |
|
| 4819 |
- public function updatesettings($userId, $telapiUrlRec, $telapiUrl, $nexapiUrlRec, $nexapiUrl, $twilapiUrlRec, $twilapiUrl, $flowapiUrlRec, $flowapiUrl, $messagesperpage, |
|
| 4820 |
- $getNotify, $notificationEmail, $getsmsinemail, $showDisplayNames, $addDisplayNames, $msgCheckInterval, $archivedConvNmbr) {
|
|
| 4821 |
- $upsettings = $this->connection->prepare('
|
|
| 4822 |
- SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, |
|
| 4823 |
- `nexapi_url`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, |
|
| 4824 |
- `tel_sender_name`, `nex_sender_name`, `twil_sender_name`, `flow_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, |
|
| 4825 |
- `show_all_messages`, `show_display_names`, `add_display_names`, `available_numbers`, `msg_check_interval`, `new_message_rcd`, `archived_conv_nmbr` |
|
| 4826 |
- FROM `*PREFIX*sms_relent_settings` |
|
| 4827 |
- WHERE `user_id` = ?'); |
|
| 4828 |
- |
|
| 4829 |
- $resultstng = $upsettings->execute([$userId]); |
|
| 4830 |
- |
|
| 4831 |
- $rowup = $resultstng->fetch(); |
|
| 4832 |
- |
|
| 4833 |
- $resultstng->closeCursor(); |
|
| 4834 |
- |
|
| 4835 |
- if (($notificationEmail == "") || ($notificationEmail != "" && filter_var($notificationEmail, FILTER_VALIDATE_EMAIL))) {
|
|
| 4836 |
- |
|
| 4837 |
- if ($resultstng && !$rowup) {
|
|
| 4838 |
- |
|
| 4839 |
- $sql = $this->connection->prepare('
|
|
| 4840 |
- INSERT INTO `*PREFIX*sms_relent_settings` |
|
| 4841 |
- (`user_id`, `telapi_url_rec`, `telapi_url`, `nexapi_url_rec`, `nexapi_url`, `twilapi_url_rec`, `twilapi_url`, `flowapi_url_rec`, `flowapi_url`, |
|
| 4842 |
- `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `show_display_names`, `add_display_names`, `msg_check_interval`, |
|
| 4843 |
- `archived_conv_nmbr`) |
|
| 4844 |
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) |
|
| 4845 |
- '); |
|
| 4846 |
- $runqr = $sql->execute([$userId, $telapiUrlRec, $telapiUrl, $nexapiUrlRec, $nexapiUrl, $twilapiUrlRec, $twilapiUrl, $flowapiUrlRec, $flowapiUrl, $messagesperpage, $getNotify, |
|
| 4847 |
- $notificationEmail, $getsmsinemail, $showDisplayNames, $addDisplayNames, $msgCheckInterval, $archivedConvNmbr]); |
|
| 4848 |
- if ($runqr) { $msgtsnd = "success"; } else { $msgtsnd = "failure"; }
|
|
| 4849 |
- |
|
| 4850 |
- } elseif ($resultstng && $rowup) {
|
|
| 4851 |
- |
|
| 4852 |
- $sqlupdatedb = $this->connection->prepare('
|
|
| 4853 |
- UPDATE `*PREFIX*sms_relent_settings` |
|
| 4854 |
- SET `telapi_url_rec` = ?, `telapi_url` = ?, `nexapi_url_rec` = ?, `nexapi_url` = ?, `twilapi_url_rec` = ?, `twilapi_url` = ?, `flowapi_url_rec` = ?, |
|
| 4855 |
- `flowapi_url` = ?, `messagesperpage` = ?, `get_notify` = ?, `notification_email` = ?, `getsmsinemail` = ?, `show_display_names` = ?, `add_display_names` = ?, |
|
| 4856 |
- `msg_check_interval` = ?, `archived_conv_nmbr` = ? |
|
| 4857 |
- WHERE `user_id` = ?'); |
|
| 4858 |
- $updateRes = $sqlupdatedb->execute([$telapiUrlRec, $telapiUrl, $nexapiUrlRec, $nexapiUrl, $twilapiUrlRec, $twilapiUrl, $flowapiUrlRec, $flowapiUrl, $messagesperpage, |
|
| 4859 |
- $getNotify, $notificationEmail, $getsmsinemail, $showDisplayNames, $addDisplayNames, $msgCheckInterval, $archivedConvNmbr, $userId]); |
|
| 4860 |
- if ($updateRes) { $msgtsnd = "success"; } else { $msgtsnd = "failure"; }
|
|
| 4861 |
- $updateRes->closeCursor(); |
|
| 4862 |
- } |
|
| 4863 |
- |
|
| 4864 |
- $infotosend = $msgtsnd; |
|
| 4865 |
- |
|
| 4866 |
- } else { $infotosend = "failure"; }
|
|
| 4867 |
- |
|
| 4868 |
- return $infotosend; |
|
| 4869 |
- } |
|
| 4870 |
- |
|
| 4871 |
- |
|
| 4872 |
- public function updateadminsettings($userId, $telapiKey, $telPubKey, $telapiUrlRec, $telapiUrl, $messagingProfileId, $nexapiKey, $nexapiSecret, $nexapiUrlRec, $nexapiUrl, |
|
| 4873 |
- $telSenderName, $nexSenderName, $twilapiKey, $twilapiSecret, $twilapiUrlRec, $twilapiUrl, $twilSenderName, $flowapiKey, $flowapiSecret, |
|
| 4874 |
- $flowapiUrlRec, $flowapiUrl, $showAllMessages) {
|
|
| 4875 |
- |
|
| 4876 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 4877 |
- |
|
| 4878 |
- $upsettings = $this->connection->prepare('
|
|
| 4879 |
- SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, |
|
| 4880 |
- `nexapi_url`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, |
|
| 4881 |
- `tel_sender_name`, `nex_sender_name`, `twil_sender_name`, `flow_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, |
|
| 4882 |
- `show_all_messages`, `show_display_names`, `add_display_names` |
|
| 4883 |
- FROM `*PREFIX*sms_relent_settings` |
|
| 4884 |
- WHERE `user_id` = ?'); |
|
| 4885 |
- |
|
| 4886 |
- $resultstng = $upsettings->execute([$userId]); |
|
| 4887 |
- |
|
| 4888 |
- $rowup = $resultstng->fetch(); |
|
| 4889 |
- |
|
| 4890 |
- $resultstng->closeCursor(); |
|
| 4891 |
- |
|
| 4892 |
- if ($resultstng && !$rowup) {
|
|
| 4893 |
- |
|
| 4894 |
- if ($telapiKey != '') {
|
|
| 4895 |
- $telapikeystrenc = $this->crypto->encrypt($telapiKey); |
|
| 4896 |
- } else { $telapikeystrenc = ''; }
|
|
| 4897 |
- |
|
| 4898 |
- if ($telPubKey != '') {
|
|
| 4899 |
- $telpubkeystrenc = $this->crypto->encrypt($telPubKey); |
|
| 4900 |
- } else { $telpubkeystrenc = ''; }
|
|
| 4901 |
- |
|
| 4902 |
- if ($messagingProfileId != '') {
|
|
| 4903 |
- $messagingprofenc = $this->crypto->encrypt($messagingProfileId); |
|
| 4904 |
- } else { $messagingprofenc = ''; }
|
|
| 4905 |
- |
|
| 4906 |
- if ($nexapiKey != '') {
|
|
| 4907 |
- $nexapikeystrenc = $this->crypto->encrypt($nexapiKey); |
|
| 4908 |
- } else { $nexapikeystrenc = ''; }
|
|
| 4909 |
- |
|
| 4910 |
- if ($nexapiSecret != '') {
|
|
| 4911 |
- $nexapisecretstrenc = $this->crypto->encrypt($nexapiSecret); |
|
| 4912 |
- } else { $nexapisecretstrenc = ''; }
|
|
| 4913 |
- |
|
| 4914 |
- if ($twilapiKey != '') {
|
|
| 4915 |
- $twilapikeystrenc = $this->crypto->encrypt($twilapiKey); |
|
| 4916 |
- } else { $twilapikeystrenc = ''; }
|
|
| 4917 |
- |
|
| 4918 |
- if ($twilapiSecret != '') {
|
|
| 4919 |
- $twilapisecretstrenc = $this->crypto->encrypt($twilapiSecret); |
|
| 4920 |
- } else { $twilapisecretstrenc = ''; }
|
|
| 4921 |
- |
|
| 4922 |
- if ($flowapiKey != '') {
|
|
| 4923 |
- $flowapikeystrenc = $this->crypto->encrypt($flowapiKey); |
|
| 4924 |
- } else { $flowapikeystrenc = ''; }
|
|
| 4925 |
- |
|
| 4926 |
- if ($flowapiSecret != '') {
|
|
| 4927 |
- $flowapisecretstrenc = $this->crypto->encrypt($flowapiSecret); |
|
| 4928 |
- } else { $flowapisecretstrenc = ''; }
|
|
| 4929 |
- |
|
| 4930 |
- $telSenderName = preg_replace( "[^A-Za-z0-9 ]", "", $telSenderName); |
|
| 4931 |
- $nexSenderName = preg_replace( "[^A-Za-z0-9 ]", "", $nexSenderName); |
|
| 4932 |
- $twilSenderName = preg_replace( "[^A-Za-z0-9 ]", "", $twilSenderName); |
|
| 4933 |
- |
|
| 4934 |
- $sql = $this->connection->prepare('
|
|
| 4935 |
- INSERT INTO `*PREFIX*sms_relent_settings` |
|
| 4936 |
- (`user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, |
|
| 4937 |
- `nexapi_url`, `tel_sender_name`, `nex_sender_name`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, `twilapi_url`, `twil_sender_name`, |
|
| 4938 |
- `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, `show_all_messages`) |
|
| 4939 |
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) |
|
| 4940 |
- '); |
|
| 4941 |
- $sql->execute([$userId, $telapikeystrenc, $telpubkeystrenc, $telapiUrlRec, $telapiUrl, $messagingprofenc, $nexapikeystrenc, $nexapisecretstrenc, $nexapiUrlRec, |
|
| 4942 |
- $nexapiUrl, $telSenderName, $nexSenderName, $twilapikeystrenc, $twilapisecretstrenc, $twilapiUrlRec, $twilapiUrl, $twilSenderName, $flowapikeystrenc, |
|
| 4943 |
- $flowapisecretstrenc, $flowapiUrlRec, $flowapiUrl, $showAllMessages]); |
|
| 4944 |
- |
|
| 4945 |
- } elseif ($resultstng && $rowup) {
|
|
| 4946 |
- |
|
| 4947 |
- // Check if the value of the field is the placeholder or an empty string |
|
| 4948 |
- if ($telapiKey != '' && $telapiKey != "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 4949 |
- $telapikeystrenc = $this->crypto->encrypt($telapiKey); |
|
| 4950 |
- } elseif ($telapiKey == "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 4951 |
- $telapikeystrenc = $rowup['telapi_key']; |
|
| 4952 |
- } elseif ($telapiKey == '') {
|
|
| 4953 |
- $telapikeystrenc = ''; |
|
| 4954 |
- } |
|
| 4955 |
- |
|
| 4956 |
- if ($telPubKey != '' && $telPubKey != "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 4957 |
- $telpubkeystrenc = $this->crypto->encrypt($telPubKey); |
|
| 4958 |
- } elseif ($telPubKey == "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 4959 |
- $telpubkeystrenc = $rowup['tel_pub_key']; |
|
| 4960 |
- } elseif ($telPubKey == '') {
|
|
| 4961 |
- $telpubkeystrenc = ''; |
|
| 4962 |
- } |
|
| 4963 |
- |
|
| 4964 |
- if ($messagingProfileId != '' && $messagingProfileId != "%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 4965 |
- $messagingprofenc = $this->crypto->encrypt($messagingProfileId); |
|
| 4966 |
- } elseif ($messagingProfileId == "%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 4967 |
- $messagingprofenc = $rowup['messaging_profile_id']; |
|
| 4968 |
- } elseif ($messagingProfileId == '') {
|
|
| 4969 |
- $messagingprofenc = ''; |
|
| 4970 |
- } |
|
| 4971 |
- |
|
| 4972 |
- if ($nexapiKey != '' && $nexapiKey != "%20%20%20%20%20%20%20%20%20") {
|
|
| 4973 |
- $nexapikeystrenc = $this->crypto->encrypt($nexapiKey); |
|
| 4974 |
- } elseif ($nexapiKey == "%20%20%20%20%20%20%20%20%20") {
|
|
| 4975 |
- $nexapikeystrenc = $rowup['nexapi_key']; |
|
| 4976 |
- } elseif ($nexapiKey == '') {
|
|
| 4977 |
- $nexapikeystrenc = ''; |
|
| 4978 |
- } |
|
| 4979 |
- |
|
| 4980 |
- if ($twilapiKey != '' && $twilapiKey != "%20%20%20%20%20%20%20%20%20") {
|
|
| 4981 |
- $twilapikeystrenc = $this->crypto->encrypt($twilapiKey); |
|
| 4982 |
- } elseif ($twilapiKey == "%20%20%20%20%20%20%20%20%20") {
|
|
| 4983 |
- $twilapikeystrenc = $rowup['twilapi_key']; |
|
| 4984 |
- } elseif ($twilapiKey == '') {
|
|
| 4985 |
- $twilapikeystrenc = ''; |
|
| 4986 |
- } |
|
| 4987 |
- |
|
| 4988 |
- if ($flowapiKey != '' && $flowapiKey != "%20%20%20%20%20%20%20%20%20") {
|
|
| 4989 |
- $flowapikeystrenc = $this->crypto->encrypt($flowapiKey); |
|
| 4990 |
- } elseif ($flowapiKey == "%20%20%20%20%20%20%20%20%20") {
|
|
| 4991 |
- $flowapikeystrenc = $rowup['flowapi_key']; |
|
| 4992 |
- } elseif ($flowapiKey == '') {
|
|
| 4993 |
- $flowapikeystrenc = ''; |
|
| 4994 |
- } |
|
| 4995 |
- |
|
| 4996 |
- if ($nexapiSecret != '' && $nexapiSecret != "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 4997 |
- $nexapisecretstrenc = $this->crypto->encrypt($nexapiSecret); |
|
| 4998 |
- } elseif ($nexapiSecret == "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 4999 |
- $nexapisecretstrenc = $rowup['nexapi_secret']; |
|
| 5000 |
- } elseif ($nexapiSecret == '') {
|
|
| 5001 |
- $nexapisecretstrenc = ''; |
|
| 5002 |
- } |
|
| 5003 |
- |
|
| 5004 |
- if ($twilapiSecret != '' && $twilapiSecret != "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 5005 |
- $twilapisecretstrenc = $this->crypto->encrypt($twilapiSecret); |
|
| 5006 |
- } elseif ($twilapiSecret == "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 5007 |
- $twilapisecretstrenc = $rowup['twilapi_secret']; |
|
| 5008 |
- } elseif ($twilapiSecret == '') {
|
|
| 5009 |
- $twilapisecretstrenc = ''; |
|
| 5010 |
- } |
|
| 5011 |
- |
|
| 5012 |
- if ($flowapiSecret != '' && $flowapiSecret != "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 5013 |
- $flowapisecretstrenc = $this->crypto->encrypt($flowapiSecret); |
|
| 5014 |
- } elseif ($flowapiSecret == "%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20") {
|
|
| 5015 |
- $flowapisecretstrenc = $rowup['flowapi_secret']; |
|
| 5016 |
- } elseif ($flowapiSecret == '') {
|
|
| 5017 |
- $flowapisecretstrenc = ''; |
|
| 5018 |
- } |
|
| 5019 |
- |
|
| 5020 |
- $sqlupdatedb = $this->connection->prepare('
|
|
| 5021 |
- UPDATE `*PREFIX*sms_relent_settings` |
|
| 5022 |
- SET `telapi_key` = ?, `tel_pub_key` = ?, `telapi_url_rec` = ?, `telapi_url` = ?, `messaging_profile_id` = ?, `nexapi_key` = ?, `nexapi_secret` = ?, |
|
| 5023 |
- `nexapi_url_rec` = ?, `nexapi_url` = ?, `tel_sender_name` = ?, `nex_sender_name` = ?, `twilapi_key` = ?, `twilapi_secret` = ?, `twilapi_url_rec` = ?, `twilapi_url` = ?, `twil_sender_name` = ?, `flowapi_key` = ?, |
|
| 5024 |
- `flowapi_secret` = ?, `flowapi_url_rec` = ?, `flowapi_url` = ?, `show_all_messages` = ? |
|
| 5025 |
- WHERE `user_id` = ?'); |
|
| 5026 |
- $updateRes = $sqlupdatedb->execute([$telapikeystrenc, $telpubkeystrenc, $telapiUrlRec, $telapiUrl, $messagingprofenc, $nexapikeystrenc, $nexapisecretstrenc, |
|
| 5027 |
- $nexapiUrlRec, $nexapiUrl, $telSenderName, $nexSenderName, $twilapikeystrenc, $twilapisecretstrenc, $twilapiUrlRec, $twilapiUrl, |
|
| 5028 |
- $twilSenderName, $flowapikeystrenc, $flowapisecretstrenc, $flowapiUrlRec, $flowapiUrl, $showAllMessages, $userId]); |
|
| 5029 |
- $updateRes->closeCursor(); |
|
| 5030 |
- |
|
| 5031 |
- } |
|
| 5032 |
- } |
|
| 5033 |
- } |
|
| 5034 |
- |
|
| 5035 |
- |
|
| 5036 |
- public function updatepersadmnsettings($userId, $messagesperpage, $getNotify, $notificationEmail, $getsmsinemail, $showDisplayNames, $addDisplayNames, $msgCheckInterval, |
|
| 5037 |
- $archivedConvNmbr) {
|
|
| 5038 |
- |
|
| 5039 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 5040 |
- |
|
| 5041 |
- $upsettings = $this->connection->prepare('
|
|
| 5042 |
- SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, |
|
| 5043 |
- `nexapi_url`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, `twilapi_url`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, |
|
| 5044 |
- `tel_sender_name`, `nex_sender_name`, `twil_sender_name`, `flow_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, |
|
| 5045 |
- `show_all_messages`, `show_display_names`, `add_display_names`, `available_numbers`, `msg_check_interval`, `new_message_rcd`, `archived_conv_nmbr` |
|
| 5046 |
- FROM `*PREFIX*sms_relent_settings` |
|
| 5047 |
- WHERE `user_id` = ?'); |
|
| 5048 |
- |
|
| 5049 |
- $resultstng = $upsettings->execute([$userId]); |
|
| 5050 |
- |
|
| 5051 |
- $rowup = $resultstng->fetch(); |
|
| 5052 |
- |
|
| 5053 |
- $resultstng->closeCursor(); |
|
| 5054 |
- |
|
| 5055 |
- if (($notificationEmail == "") || ($notificationEmail != "" && filter_var($notificationEmail, FILTER_VALIDATE_EMAIL))) {
|
|
| 5056 |
- |
|
| 5057 |
- if ($resultstng && !$rowup) {
|
|
| 5058 |
- |
|
| 5059 |
- $sql = $this->connection->prepare('
|
|
| 5060 |
- INSERT INTO `*PREFIX*sms_relent_settings` (`user_id`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `show_display_names`, |
|
| 5061 |
- `add_display_names`, `msg_check_interval`, `archived_conv_nmbr`) |
|
| 5062 |
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)'); |
|
| 5063 |
- $runqradm = $sql->execute([$userId, $messagesperpage, $getNotify, $notificationEmail, $getsmsinemail, $showDisplayNames, $addDisplayNames, $msgCheckInterval, $archivedConvNmbr]); |
|
| 5064 |
- if ($runqradm) { $msgadmsnd = "success"; } else { $msgadmsnd = "failure"; }
|
|
| 5065 |
- |
|
| 5066 |
- } elseif ($resultstng && $rowup) {
|
|
| 5067 |
- |
|
| 5068 |
- $sqlupdatedb = $this->connection->prepare('
|
|
| 5069 |
- UPDATE `*PREFIX*sms_relent_settings` |
|
| 5070 |
- SET `messagesperpage` = ?, `get_notify` = ?, `notification_email` = ?, `getsmsinemail` = ?, `show_display_names` = ?, `add_display_names` = ?, |
|
| 5071 |
- `msg_check_interval` = ?, `archived_conv_nmbr` = ? |
|
| 5072 |
- WHERE `user_id` = ?'); |
|
| 5073 |
- $updateRes = $sqlupdatedb->execute([$messagesperpage, $getNotify, $notificationEmail, $getsmsinemail, $showDisplayNames, $addDisplayNames, $msgCheckInterval, $archivedConvNmbr, $userId]); |
|
| 5074 |
- if ($updateRes) { $msgadmsnd = "success"; } else { $msgadmsnd = "failure"; }
|
|
| 5075 |
- $updateRes->closeCursor(); |
|
| 5076 |
- } |
|
| 5077 |
- |
|
| 5078 |
- $infoprsadm = $msgadmsnd; |
|
| 5079 |
- |
|
| 5080 |
- } else { $infoprsadm = "failure"; }
|
|
| 5081 |
- |
|
| 5082 |
- } else { $infoprsadm = "failure"; }
|
|
| 5083 |
- |
|
| 5084 |
- return $infoprsadm; |
|
| 5085 |
- } |
|
| 5086 |
- |
|
| 5087 |
- |
|
| 5088 |
- /** |
|
| 5089 |
- * @NoAdminRequired |
|
| 5090 |
- */ |
|
| 5091 |
- public function getapicredentials($userId, $provider) {
|
|
| 5092 |
- |
|
| 5093 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 5094 |
- |
|
| 5095 |
- $sqlcr = $this->connection->prepare('
|
|
| 5096 |
- SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, `nexapi_url`, |
|
| 5097 |
- `tel_sender_name`, `nex_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, |
|
| 5098 |
- `twilapi_url`, `twil_sender_name`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, `add_display_names` FROM `*PREFIX*sms_relent_settings` |
|
| 5099 |
- WHERE `user_id` = ?'); |
|
| 5100 |
- $resultcr = $sqlcr->execute([$userId]); |
|
| 5101 |
- $settingsfrdb = $resultcr->fetch(); |
|
| 5102 |
- $resultcr->closeCursor(); |
|
| 5103 |
- |
|
| 5104 |
- } else {
|
|
| 5105 |
- |
|
| 5106 |
- // If the user is not an admin, get the API keys in a different way, since a non-admin has to use the API keys shared with him by an admin |
|
| 5107 |
- |
|
| 5108 |
- // Get the Display Name of the current user |
|
| 5109 |
- $dspname = 'displayname'; |
|
| 5110 |
- $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
|
|
| 5111 |
- $getacdatadnres = $getacdatadn->execute([$userId, $dspname]); |
|
| 5112 |
- $acdatausrdn = $getacdatadnres->fetch(); |
|
| 5113 |
- $crtdisplayname = $acdatausrdn['value']; |
|
| 5114 |
- $getacdatadnres->closeCursor(); |
|
| 5115 |
- $usersAllwdLike = "%" . $crtdisplayname . "%"; |
|
| 5116 |
- |
|
| 5117 |
- // Get the groups to which the current user belongs |
|
| 5118 |
- $getusrgrp = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `uid` = ?');
|
|
| 5119 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 5120 |
- |
|
| 5121 |
- $crtusergrps = []; |
|
| 5122 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 5123 |
- $crtusergrps[] = $fetchedgrps['gid']; |
|
| 5124 |
- } |
|
| 5125 |
- $getusrgrpres->closeCursor(); |
|
| 5126 |
- |
|
| 5127 |
- if ($provider == 'telnyx') {
|
|
| 5128 |
- |
|
| 5129 |
- // Search the 'sms_relent_subac' table to find the admin who shared his credentials with the current user |
|
| 5130 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_users_allowed` FROM `*PREFIX*sms_relent_subac` WHERE `tnx_users_allowed` LIKE ?');
|
|
| 5131 |
- $getgrpsres = $getgrps->execute([$usersAllwdLike]); |
|
| 5132 |
- $getadmusr = $getgrpsres->fetch(); |
|
| 5133 |
- $getgrpsres->closeCursor(); |
|
| 5134 |
- |
|
| 5135 |
- if ($getadmusr) {
|
|
| 5136 |
- $admalwdusr = $getadmusr['user_id']; |
|
| 5137 |
- } else {
|
|
| 5138 |
- // Search by group |
|
| 5139 |
- if ($crtusergrps) {
|
|
| 5140 |
- $usersbgrp = []; |
|
| 5141 |
- foreach ($crtusergrps as $grkey => $grvalue) {
|
|
| 5142 |
- |
|
| 5143 |
- $grvalueLike = "%" . $grvalue . "%"; |
|
| 5144 |
- $getgrpsec = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed` FROM `*PREFIX*sms_relent_subac` WHERE `tnx_groups_allowed` LIKE ?');
|
|
| 5145 |
- $getgrpsecres = $getgrpsec->execute([$grvalueLike]); |
|
| 5146 |
- $getadmusrgr = $getgrpsecres->fetch(); |
|
| 5147 |
- $getgrpsecres->closeCursor(); |
|
| 5148 |
- |
|
| 5149 |
- if ($getadmusrgr) {
|
|
| 5150 |
- $usersbgrp[] = $getadmusrgr['user_id']; |
|
| 5151 |
- } |
|
| 5152 |
- } |
|
| 5153 |
- |
|
| 5154 |
- if ($usersbgrp) {
|
|
| 5155 |
- $admalwdusr = $usersbgrp[0]; |
|
| 5156 |
- } else {
|
|
| 5157 |
- $admalwdusr = ''; |
|
| 5158 |
- } |
|
| 5159 |
- } |
|
| 5160 |
- } |
|
| 5161 |
- |
|
| 5162 |
- if ($admalwdusr) {
|
|
| 5163 |
- $sqlcr = $this->connection->prepare('
|
|
| 5164 |
- SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, `nexapi_url`, |
|
| 5165 |
- `tel_sender_name`, `nex_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, |
|
| 5166 |
- `twilapi_url`, `twil_sender_name`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, `add_display_names` FROM `*PREFIX*sms_relent_settings` |
|
| 5167 |
- WHERE `user_id` = ?'); |
|
| 5168 |
- $resultcr = $sqlcr->execute([$admalwdusr]); |
|
| 5169 |
- $settingsfrdb = $resultcr->fetch(); |
|
| 5170 |
- $resultcr->closeCursor(); |
|
| 5171 |
- |
|
| 5172 |
- // Get the delivery receipt URL of the non-admin user |
|
| 5173 |
- $sqldr = $this->connection->prepare('
|
|
| 5174 |
- SELECT `user_id`, `telapi_url` FROM `*PREFIX*sms_relent_settings` |
|
| 5175 |
- WHERE `user_id` = ?'); |
|
| 5176 |
- $sqldrres = $sqldr->execute([$userId]); |
|
| 5177 |
- $delrcpt = $sqldrres->fetch(); |
|
| 5178 |
- $sqldrres->closeCursor(); |
|
| 5179 |
- $delrcpturl = $delrcpt['telapi_url']; |
|
| 5180 |
- |
|
| 5181 |
- // Replace the delivery receipt URL of the admin with that of the non-admin |
|
| 5182 |
- $settingsfrdb['telapi_url'] = $delrcpturl; |
|
| 5183 |
- |
|
| 5184 |
- } else { return; }
|
|
| 5185 |
- |
|
| 5186 |
- } elseif ($provider == 'plivo') {
|
|
| 5187 |
- |
|
| 5188 |
- // Search the 'sms_relent_subac' table to find the admin who shared his credentials with the current user |
|
| 5189 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `plv_users_allowed` FROM `*PREFIX*sms_relent_subac` WHERE `plv_users_allowed` LIKE ?');
|
|
| 5190 |
- $getgrpsres = $getgrps->execute([$usersAllwdLike]); |
|
| 5191 |
- $getadmusr = $getgrpsres->fetch(); |
|
| 5192 |
- $getgrpsres->closeCursor(); |
|
| 5193 |
- |
|
| 5194 |
- if ($getadmusr) {
|
|
| 5195 |
- $admalwdusr = $getadmusr['user_id']; |
|
| 5196 |
- } else {
|
|
| 5197 |
- // Search by group |
|
| 5198 |
- if ($crtusergrps) {
|
|
| 5199 |
- $usersbgrp = []; |
|
| 5200 |
- foreach ($crtusergrps as $grkey => $grvalue) {
|
|
| 5201 |
- |
|
| 5202 |
- $grvalueLike = "%" . $grvalue . "%"; |
|
| 5203 |
- $getgrpsec = $this->connection->prepare('SELECT `user_id`, `plv_groups_allowed` FROM `*PREFIX*sms_relent_subac` WHERE `plv_groups_allowed` LIKE ?');
|
|
| 5204 |
- $getgrpsecres = $getgrpsec->execute([$grvalueLike]); |
|
| 5205 |
- $getadmusrgr = $getgrpsecres->fetch(); |
|
| 5206 |
- $getgrpsecres->closeCursor(); |
|
| 5207 |
- |
|
| 5208 |
- if ($getadmusrgr) {
|
|
| 5209 |
- $usersbgrp[] = $getadmusrgr['user_id']; |
|
| 5210 |
- } |
|
| 5211 |
- } |
|
| 5212 |
- |
|
| 5213 |
- if ($usersbgrp) {
|
|
| 5214 |
- $admalwdusr = $usersbgrp[0]; |
|
| 5215 |
- } else {
|
|
| 5216 |
- $admalwdusr = ''; |
|
| 5217 |
- } |
|
| 5218 |
- } |
|
| 5219 |
- } |
|
| 5220 |
- |
|
| 5221 |
- if ($admalwdusr) {
|
|
| 5222 |
- $sqlcr = $this->connection->prepare('
|
|
| 5223 |
- SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, `nexapi_url`, |
|
| 5224 |
- `tel_sender_name`, `nex_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, |
|
| 5225 |
- `twilapi_url`, `twil_sender_name`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, `add_display_names` FROM `*PREFIX*sms_relent_settings` |
|
| 5226 |
- WHERE `user_id` = ?'); |
|
| 5227 |
- $resultcr = $sqlcr->execute([$admalwdusr]); |
|
| 5228 |
- $settingsfrdb = $resultcr->fetch(); |
|
| 5229 |
- $resultcr->closeCursor(); |
|
| 5230 |
- |
|
| 5231 |
- // Get the delivery receipt URL of the non-admin user |
|
| 5232 |
- $sqldr = $this->connection->prepare('
|
|
| 5233 |
- SELECT `user_id`, `nexapi_url` FROM `*PREFIX*sms_relent_settings` |
|
| 5234 |
- WHERE `user_id` = ?'); |
|
| 5235 |
- $sqldrres = $sqldr->execute([$userId]); |
|
| 5236 |
- $delrcpt = $sqldrres->fetch(); |
|
| 5237 |
- $sqldrres->closeCursor(); |
|
| 5238 |
- $delrcpturl = $delrcpt['nexapi_url']; |
|
| 5239 |
- |
|
| 5240 |
- // Replace the delivery receipt URL of the admin with that of the non-admin |
|
| 5241 |
- $settingsfrdb['nexapi_url'] = $delrcpturl; |
|
| 5242 |
- |
|
| 5243 |
- } else { return; }
|
|
| 5244 |
- |
|
| 5245 |
- } elseif ($provider == 'twilio') {
|
|
| 5246 |
- |
|
| 5247 |
- // Search the 'sms_relent_subac' table to find the admin who shared his credentials with the current user |
|
| 5248 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `twl_users_allowed` FROM `*PREFIX*sms_relent_subac` WHERE `twl_users_allowed` LIKE ?');
|
|
| 5249 |
- $getgrpsres = $getgrps->execute([$usersAllwdLike]); |
|
| 5250 |
- $getadmusr = $getgrpsres->fetch(); |
|
| 5251 |
- $getgrpsres->closeCursor(); |
|
| 5252 |
- |
|
| 5253 |
- if ($getadmusr) {
|
|
| 5254 |
- $admalwdusr = $getadmusr['user_id']; |
|
| 5255 |
- } else {
|
|
| 5256 |
- // Search by group |
|
| 5257 |
- if ($crtusergrps) {
|
|
| 5258 |
- $usersbgrp = []; |
|
| 5259 |
- foreach ($crtusergrps as $grkey => $grvalue) {
|
|
| 5260 |
- |
|
| 5261 |
- $grvalueLike = "%" . $grvalue . "%"; |
|
| 5262 |
- $getgrpsec = $this->connection->prepare('SELECT `user_id`, `twl_groups_allowed` FROM `*PREFIX*sms_relent_subac` WHERE `twl_groups_allowed` LIKE ?');
|
|
| 5263 |
- $getgrpsecres = $getgrpsec->execute([$grvalueLike]); |
|
| 5264 |
- $getadmusrgr = $getgrpsecres->fetch(); |
|
| 5265 |
- $getgrpsecres->closeCursor(); |
|
| 5266 |
- |
|
| 5267 |
- if ($getadmusrgr) {
|
|
| 5268 |
- $usersbgrp[] = $getadmusrgr['user_id']; |
|
| 5269 |
- } |
|
| 5270 |
- } |
|
| 5271 |
- |
|
| 5272 |
- if ($usersbgrp) {
|
|
| 5273 |
- $admalwdusr = $usersbgrp[0]; |
|
| 5274 |
- } else {
|
|
| 5275 |
- $admalwdusr = ''; |
|
| 5276 |
- } |
|
| 5277 |
- } |
|
| 5278 |
- } |
|
| 5279 |
- |
|
| 5280 |
- if ($admalwdusr) {
|
|
| 5281 |
- $sqlcr = $this->connection->prepare('
|
|
| 5282 |
- SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, `nexapi_url`, |
|
| 5283 |
- `tel_sender_name`, `nex_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, |
|
| 5284 |
- `twilapi_url`, `twil_sender_name`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, `add_display_names` FROM `*PREFIX*sms_relent_settings` |
|
| 5285 |
- WHERE `user_id` = ?'); |
|
| 5286 |
- $resultcr = $sqlcr->execute([$admalwdusr]); |
|
| 5287 |
- $settingsfrdb = $resultcr->fetch(); |
|
| 5288 |
- $resultcr->closeCursor(); |
|
| 5289 |
- |
|
| 5290 |
- // Get the delivery receipt URL of the non-admin user |
|
| 5291 |
- $sqldr = $this->connection->prepare('
|
|
| 5292 |
- SELECT `user_id`, `twilapi_url` FROM `*PREFIX*sms_relent_settings` |
|
| 5293 |
- WHERE `user_id` = ?'); |
|
| 5294 |
- $sqldrres = $sqldr->execute([$userId]); |
|
| 5295 |
- $delrcpt = $sqldrres->fetch(); |
|
| 5296 |
- $sqldrres->closeCursor(); |
|
| 5297 |
- $delrcpturl = $delrcpt['twilapi_url']; |
|
| 5298 |
- |
|
| 5299 |
- // Replace the delivery receipt URL of the admin with that of the non-admin |
|
| 5300 |
- $settingsfrdb['twilapi_url'] = $delrcpturl; |
|
| 5301 |
- |
|
| 5302 |
- } else { return; }
|
|
| 5303 |
- |
|
| 5304 |
- } elseif ($provider == 'flowroute') {
|
|
| 5305 |
- |
|
| 5306 |
- // Search the 'sms_relent_subac' table to find the admin who shared his credentials with the current user |
|
| 5307 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac` WHERE `flr_users_allowed` LIKE ?');
|
|
| 5308 |
- $getgrpsres = $getgrps->execute([$usersAllwdLike]); |
|
| 5309 |
- $getadmusr = $getgrpsres->fetch(); |
|
| 5310 |
- $getgrpsres->closeCursor(); |
|
| 5311 |
- |
|
| 5312 |
- if ($getadmusr) {
|
|
| 5313 |
- $admalwdusr = $getadmusr['user_id']; |
|
| 5314 |
- } else {
|
|
| 5315 |
- // Search by group |
|
| 5316 |
- if ($crtusergrps) {
|
|
| 5317 |
- $usersbgrp = []; |
|
| 5318 |
- foreach ($crtusergrps as $grkey => $grvalue) {
|
|
| 5319 |
- |
|
| 5320 |
- $grvalueLike = "%" . $grvalue . "%"; |
|
| 5321 |
- $getgrpsec = $this->connection->prepare('SELECT `user_id`, `flr_groups_allowed` FROM `*PREFIX*sms_relent_subac` WHERE `flr_groups_allowed` LIKE ?');
|
|
| 5322 |
- $getgrpsecres = $getgrpsec->execute([$grvalueLike]); |
|
| 5323 |
- $getadmusrgr = $getgrpsecres->fetch(); |
|
| 5324 |
- $getgrpsecres->closeCursor(); |
|
| 5325 |
- |
|
| 5326 |
- if ($getadmusrgr) {
|
|
| 5327 |
- $usersbgrp[] = $getadmusrgr['user_id']; |
|
| 5328 |
- } |
|
| 5329 |
- } |
|
| 5330 |
- |
|
| 5331 |
- if ($usersbgrp) {
|
|
| 5332 |
- $admalwdusr = $usersbgrp[0]; |
|
| 5333 |
- } else {
|
|
| 5334 |
- $admalwdusr = ''; |
|
| 5335 |
- } |
|
| 5336 |
- } |
|
| 5337 |
- } |
|
| 5338 |
- |
|
| 5339 |
- if ($admalwdusr) {
|
|
| 5340 |
- $sqlcr = $this->connection->prepare('
|
|
| 5341 |
- SELECT `id`, `user_id`, `telapi_key`, `tel_pub_key`, `telapi_url_rec`, `telapi_url`, `messaging_profile_id`, `nexapi_key`, `nexapi_secret`, `nexapi_url_rec`, `nexapi_url`, |
|
| 5342 |
- `tel_sender_name`, `nex_sender_name`, `messagesperpage`, `get_notify`, `notification_email`, `getsmsinemail`, `twilapi_key`, `twilapi_secret`, `twilapi_url_rec`, |
|
| 5343 |
- `twilapi_url`, `twil_sender_name`, `flowapi_key`, `flowapi_secret`, `flowapi_url_rec`, `flowapi_url`, `add_display_names` FROM `*PREFIX*sms_relent_settings` |
|
| 5344 |
- WHERE `user_id` = ?'); |
|
| 5345 |
- $resultcr = $sqlcr->execute([$admalwdusr]); |
|
| 5346 |
- $settingsfrdb = $resultcr->fetch(); |
|
| 5347 |
- $resultcr->closeCursor(); |
|
| 5348 |
- |
|
| 5349 |
- // Get the delivery receipt URL of the non-admin user |
|
| 5350 |
- $sqldr = $this->connection->prepare('
|
|
| 5351 |
- SELECT `user_id`, `flowapi_url` FROM `*PREFIX*sms_relent_settings` |
|
| 5352 |
- WHERE `user_id` = ?'); |
|
| 5353 |
- $sqldrres = $sqldr->execute([$userId]); |
|
| 5354 |
- $delrcpt = $sqldrres->fetch(); |
|
| 5355 |
- $sqldrres->closeCursor(); |
|
| 5356 |
- $delrcpturl = $delrcpt['flowapi_url']; |
|
| 5357 |
- |
|
| 5358 |
- // Replace the delivery receipt URL of the admin with that of the non-admin |
|
| 5359 |
- $settingsfrdb['flowapi_url'] = $delrcpturl; |
|
| 5360 |
- |
|
| 5361 |
- } else { return; }
|
|
| 5362 |
- |
|
| 5363 |
- } |
|
| 5364 |
- } |
|
| 5365 |
- |
|
| 5366 |
- |
|
| 5367 |
- if ($settingsfrdb['telapi_key']) {
|
|
| 5368 |
- $telapikeystrdec = $this->crypto->decrypt($settingsfrdb['telapi_key']); |
|
| 5369 |
- } else { $telapikeystrdec = ''; }
|
|
| 5370 |
- |
|
| 5371 |
- if ($settingsfrdb['tel_pub_key']) {
|
|
| 5372 |
- $telpubkeystrdec = $this->crypto->decrypt($settingsfrdb['tel_pub_key']); |
|
| 5373 |
- } else { $telpubkeystrdec = ''; }
|
|
| 5374 |
- |
|
| 5375 |
- if ($settingsfrdb['messaging_profile_id']) {
|
|
| 5376 |
- $messagingprofid = $this->crypto->decrypt($settingsfrdb['messaging_profile_id']); |
|
| 5377 |
- } else { $messagingprofid = ''; }
|
|
| 5378 |
- |
|
| 5379 |
- if ($settingsfrdb['nexapi_key']) {
|
|
| 5380 |
- $nexapikeystr = $this->crypto->decrypt($settingsfrdb['nexapi_key']); |
|
| 5381 |
- } else { $nexapikeystr = ''; }
|
|
| 5382 |
- |
|
| 5383 |
- if ($settingsfrdb['nexapi_secret']) {
|
|
| 5384 |
- $nexapisecretstr = $this->crypto->decrypt($settingsfrdb['nexapi_secret']); |
|
| 5385 |
- } else { $nexapisecretstr = ''; }
|
|
| 5386 |
- |
|
| 5387 |
- if ($settingsfrdb['twilapi_key']) {
|
|
| 5388 |
- $twilapikeystr = $this->crypto->decrypt($settingsfrdb['twilapi_key']); |
|
| 5389 |
- } else { $twilapikeystr = ''; }
|
|
| 5390 |
- |
|
| 5391 |
- if ($settingsfrdb['twilapi_secret']) {
|
|
| 5392 |
- $twilapisecretstr = $this->crypto->decrypt($settingsfrdb['twilapi_secret']); |
|
| 5393 |
- } else { $twilapisecretstr = ''; }
|
|
| 5394 |
- |
|
| 5395 |
- if ($settingsfrdb['flowapi_key']) {
|
|
| 5396 |
- $flowapikeystr = $this->crypto->decrypt($settingsfrdb['flowapi_key']); |
|
| 5397 |
- } else { $flowapikeystr = ''; }
|
|
| 5398 |
- |
|
| 5399 |
- if ($settingsfrdb['flowapi_secret']) {
|
|
| 5400 |
- $flowapisecretstr = $this->crypto->decrypt($settingsfrdb['flowapi_secret']); |
|
| 5401 |
- } else { $flowapisecretstr = ''; }
|
|
| 5402 |
- |
|
| 5403 |
- $telapiurlrec = $settingsfrdb['telapi_url_rec']; |
|
| 5404 |
- $telapiurlstr = $settingsfrdb['telapi_url']; |
|
| 5405 |
- $nexapiurlrecsms = $settingsfrdb['nexapi_url_rec']; |
|
| 5406 |
- $nexapiurldelrcpt = $settingsfrdb['nexapi_url']; |
|
| 5407 |
- $twilapiurlrecsms = $settingsfrdb['twilapi_url_rec']; |
|
| 5408 |
- $twilapiurldelrcpt = $settingsfrdb['twilapi_url']; |
|
| 5409 |
- $flowapiurlrecsms = $settingsfrdb['flowapi_url_rec']; |
|
| 5410 |
- $flowapiurldelrcpt = $settingsfrdb['flowapi_url']; |
|
| 5411 |
- $gettelsendername = $settingsfrdb['tel_sender_name']; |
|
| 5412 |
- $getnexsendername = $settingsfrdb['nex_sender_name']; |
|
| 5413 |
- $gettwilsendername = $settingsfrdb['twil_sender_name']; |
|
| 5414 |
- $getmessagesperpage = $settingsfrdb['messagesperpage']; |
|
| 5415 |
- $getnotification = $settingsfrdb['get_notify']; |
|
| 5416 |
- $notifyemail = $settingsfrdb['notification_email']; |
|
| 5417 |
- $includesmsinemail = $settingsfrdb['getsmsinemail']; |
|
| 5418 |
- $includeDisplNames = $settingsfrdb['add_display_names']; |
|
| 5419 |
- |
|
| 5420 |
- return [$telapikeystrdec, $telpubkeystrdec, $telapiurlrec, $telapiurlstr, $messagingprofid, $nexapikeystr, $nexapisecretstr, $nexapiurlrecsms, $nexapiurldelrcpt, |
|
| 5421 |
- $gettelsendername, $getnexsendername, $getmessagesperpage, $getnotification, $notifyemail, $includesmsinemail, $twilapikeystr, $twilapisecretstr, $twilapiurlrecsms, |
|
| 5422 |
- $twilapiurldelrcpt, $gettwilsendername, $flowapikeystr, $flowapisecretstr, $flowapiurlrecsms, $flowapiurldelrcpt, $includeDisplNames]; |
|
| 5423 |
- } |
|
| 5424 |
- |
|
| 5425 |
- /** |
|
| 5426 |
- * @NoAdminRequired |
|
| 5427 |
- */ |
|
| 5428 |
- public function getuserbytelrecwhurl($recsmswebhookurl) {
|
|
| 5429 |
- |
|
| 5430 |
- $sqlrec = $this->connection->prepare('SELECT `user_id`, `telapi_url_rec` FROM `*PREFIX*sms_relent_settings` WHERE `telapi_url_rec` = ?');
|
|
| 5431 |
- $result = $sqlrec->execute([$recsmswebhookurl]); |
|
| 5432 |
- $datafromdb = $result->fetch(); |
|
| 5433 |
- $result->closeCursor(); |
|
| 5434 |
- $ncusertelrec = $datafromdb['user_id']; |
|
| 5435 |
- |
|
| 5436 |
- return $ncusertelrec; |
|
| 5437 |
- } |
|
| 5438 |
- |
|
| 5439 |
- /** |
|
| 5440 |
- * @NoAdminRequired |
|
| 5441 |
- */ |
|
| 5442 |
- public function getuserbyteldelrwhurl($delsmswebhookurl) {
|
|
| 5443 |
- |
|
| 5444 |
- $sqldel = $this->connection->prepare('SELECT `user_id`, `telapi_url` FROM `*PREFIX*sms_relent_settings` WHERE `telapi_url` = ?');
|
|
| 5445 |
- $ressqldel = $sqldel->execute([$delsmswebhookurl]); |
|
| 5446 |
- $datafromdbdel = $ressqldel->fetch(); |
|
| 5447 |
- $ressqldel->closeCursor(); |
|
| 5448 |
- $ncuserteldel = $datafromdbdel['user_id']; |
|
| 5449 |
- |
|
| 5450 |
- return $ncuserteldel; |
|
| 5451 |
- } |
|
| 5452 |
- |
|
| 5453 |
- /** |
|
| 5454 |
- * @NoAdminRequired |
|
| 5455 |
- */ |
|
| 5456 |
- public function getuserbyplivorecwhurl($plivorecurl) {
|
|
| 5457 |
- |
|
| 5458 |
- $sqlrecpl = $this->connection->prepare('SELECT `user_id`, `nexapi_url_rec` FROM `*PREFIX*sms_relent_settings` WHERE `nexapi_url_rec` = ?');
|
|
| 5459 |
- $plresrecsql = $sqlrecpl->execute([$plivorecurl]); |
|
| 5460 |
- $pldatafromdb = $plresrecsql->fetch(); |
|
| 5461 |
- $plresrecsql->closeCursor(); |
|
| 5462 |
- $ncuserplrec = $pldatafromdb['user_id']; |
|
| 5463 |
- |
|
| 5464 |
- return $ncuserplrec; |
|
| 5465 |
- } |
|
| 5466 |
- |
|
| 5467 |
- /** |
|
| 5468 |
- * @NoAdminRequired |
|
| 5469 |
- */ |
|
| 5470 |
- public function getuserbyplivodelrwhurl($plivodrurl) {
|
|
| 5471 |
- |
|
| 5472 |
- $sqldrpl = $this->connection->prepare('SELECT `user_id`, `nexapi_url` FROM `*PREFIX*sms_relent_settings` WHERE `nexapi_url` = ?');
|
|
| 5473 |
- $ressqldelrec = $sqldrpl->execute([$plivodrurl]); |
|
| 5474 |
- $datafromdbdr = $ressqldelrec->fetch(); |
|
| 5475 |
- $ressqldelrec->closeCursor(); |
|
| 5476 |
- $ncuserplivodel = $datafromdbdr['user_id']; |
|
| 5477 |
- |
|
| 5478 |
- return $ncuserplivodel; |
|
| 5479 |
- } |
|
| 5480 |
- |
|
| 5481 |
- /** |
|
| 5482 |
- * @NoAdminRequired |
|
| 5483 |
- */ |
|
| 5484 |
- public function getuserbytwilrecwhurl($twilrecurl) {
|
|
| 5485 |
- |
|
| 5486 |
- $sqlrectw = $this->connection->prepare('SELECT `user_id`, `twilapi_url_rec` FROM `*PREFIX*sms_relent_settings` WHERE `twilapi_url_rec` = ?');
|
|
| 5487 |
- $twresrecsql = $sqlrectw->execute([$twilrecurl]); |
|
| 5488 |
- $twdatafromdb = $twresrecsql->fetch(); |
|
| 5489 |
- $twresrecsql->closeCursor(); |
|
| 5490 |
- $ncusertwrec = $twdatafromdb['user_id']; |
|
| 5491 |
- |
|
| 5492 |
- return $ncusertwrec; |
|
| 5493 |
- } |
|
| 5494 |
- |
|
| 5495 |
- /** |
|
| 5496 |
- * @NoAdminRequired |
|
| 5497 |
- */ |
|
| 5498 |
- public function getuserbytwildelrwhurl($twildrurl) {
|
|
| 5499 |
- |
|
| 5500 |
- $sqldrtw = $this->connection->prepare('SELECT `user_id`, `twilapi_url` FROM `*PREFIX*sms_relent_settings` WHERE `twilapi_url` = ?');
|
|
| 5501 |
- $ressqldelrectw = $sqldrtw->execute([$twildrurl]); |
|
| 5502 |
- $datafromdbdrtw = $ressqldelrectw->fetch(); |
|
| 5503 |
- $ressqldelrectw->closeCursor(); |
|
| 5504 |
- $ncusertwildel = $datafromdbdrtw['user_id']; |
|
| 5505 |
- |
|
| 5506 |
- return $ncusertwildel; |
|
| 5507 |
- } |
|
| 5508 |
- |
|
| 5509 |
- /** |
|
| 5510 |
- * @NoAdminRequired |
|
| 5511 |
- */ |
|
| 5512 |
- public function getuserbyflowrecwhurl($flowrecurl) {
|
|
| 5513 |
- |
|
| 5514 |
- $sqlrecfl = $this->connection->prepare('SELECT `user_id`, `flowapi_url_rec` FROM `*PREFIX*sms_relent_settings` WHERE `flowapi_url_rec` = ?');
|
|
| 5515 |
- $flresrecsql = $sqlrecfl->execute([$flowrecurl]); |
|
| 5516 |
- $fldatafromdb = $flresrecsql->fetch(); |
|
| 5517 |
- $flresrecsql->closeCursor(); |
|
| 5518 |
- $ncuserflrec = $fldatafromdb['user_id']; |
|
| 5519 |
- |
|
| 5520 |
- return $ncuserflrec; |
|
| 5521 |
- } |
|
| 5522 |
- |
|
| 5523 |
- /** |
|
| 5524 |
- * @NoAdminRequired |
|
| 5525 |
- */ |
|
| 5526 |
- public function getuserbyflowdelrwhurl($flowdrurl) {
|
|
| 5527 |
- |
|
| 5528 |
- $sqldrfl = $this->connection->prepare('SELECT `user_id`, `flowapi_url` FROM `*PREFIX*sms_relent_settings` WHERE `flowapi_url` = ?');
|
|
| 5529 |
- $ressqldelrecfl = $sqldrfl->execute([$flowdrurl]); |
|
| 5530 |
- $datafromdbdrfl = $ressqldelrecfl->fetch(); |
|
| 5531 |
- $ressqldelrecfl->closeCursor(); |
|
| 5532 |
- $ncuserflowdel = $datafromdbdrfl['user_id']; |
|
| 5533 |
- |
|
| 5534 |
- return $ncuserflowdel; |
|
| 5535 |
- } |
|
| 5536 |
- |
|
| 5537 |
- |
|
| 5538 |
- /** |
|
| 5539 |
- * @NoAdminRequired |
|
| 5540 |
- */ |
|
| 5541 |
- public function object_to_array($obj) {
|
|
| 5542 |
- if (is_object($obj)) $obj = (array)$this->dismount($obj); |
|
| 5543 |
- if (is_array($obj)) {
|
|
| 5544 |
- $new = array(); |
|
| 5545 |
- foreach($obj as $key => $val) {
|
|
| 5546 |
- $new[$key] = $this->object_to_array($val); |
|
| 5547 |
- } |
|
| 5548 |
- } |
|
| 5549 |
- else $new = $obj; |
|
| 5550 |
- return $new; |
|
| 5551 |
- } |
|
| 5552 |
- |
|
| 5553 |
- |
|
| 5554 |
- /** |
|
| 5555 |
- * @NoAdminRequired |
|
| 5556 |
- */ |
|
| 5557 |
- public function dismount($object) {
|
|
| 5558 |
- $reflectionClass = new ReflectionClass(get_class($object)); |
|
| 5559 |
- $array = array(); |
|
| 5560 |
- foreach ($reflectionClass->getProperties() as $property) {
|
|
| 5561 |
- $property->setAccessible(true); |
|
| 5562 |
- $array[$property->getName()] = $property->getValue($object); |
|
| 5563 |
- $property->setAccessible(false); |
|
| 5564 |
- } |
|
| 5565 |
- return $array; |
|
| 5566 |
- } |
|
| 5567 |
- |
|
| 5568 |
- |
|
| 5569 |
- /** |
|
| 5570 |
- * @NoAdminRequired |
|
| 5571 |
- */ |
|
| 5572 |
- public function getallowedusers($userId) {
|
|
| 5573 |
- |
|
| 5574 |
- // Collect the users with whom the current admin is sharing his API keys and whose messages he will be able to see |
|
| 5575 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 5576 |
- |
|
| 5577 |
- // Get the groups and users that were allowed access to the API keys |
|
| 5578 |
- $getgrps = $this->connection->prepare('SELECT `user_id`, `tnx_groups_allowed`, `tnx_users_allowed`, `plv_groups_allowed`, `plv_users_allowed`,
|
|
| 5579 |
- `twl_groups_allowed`, `twl_users_allowed`, `flr_groups_allowed`, `flr_users_allowed` FROM `*PREFIX*sms_relent_subac` |
|
| 5580 |
- WHERE `user_id` = ?'); |
|
| 5581 |
- $getgrpsres = $getgrps->execute([$userId]); |
|
| 5582 |
- $getgrpsusr = $getgrpsres->fetch(); |
|
| 5583 |
- $getgrpsres->closeCursor(); |
|
| 5584 |
- |
|
| 5585 |
- if ($getgrpsusr) {
|
|
| 5586 |
- |
|
| 5587 |
- if ($getgrpsusr['tnx_users_allowed']) { $tnxusers = explode("|", $getgrpsusr['tnx_users_allowed']); } else { $tnxusers = []; }
|
|
| 5588 |
- if ($getgrpsusr['plv_users_allowed']) { $plvusers = explode("|", $getgrpsusr['plv_users_allowed']); } else { $plvusers = []; }
|
|
| 5589 |
- if ($getgrpsusr['twl_users_allowed']) { $twlusers = explode("|", $getgrpsusr['twl_users_allowed']); } else { $twlusers = []; }
|
|
| 5590 |
- if ($getgrpsusr['flr_users_allowed']) { $flrusers = explode("|", $getgrpsusr['flr_users_allowed']); } else { $flrusers = []; }
|
|
| 5591 |
- |
|
| 5592 |
- $allwdusersarr = array_merge($tnxusers, $plvusers, $twlusers, $flrusers); |
|
| 5593 |
- $allwdusersunq = array_filter(array_unique($allwdusersarr)); |
|
| 5594 |
- |
|
| 5595 |
- if ($getgrpsusr['tnx_groups_allowed']) { $tnxgroups = explode("|", $getgrpsusr['tnx_groups_allowed']); } else { $tnxgroups = []; }
|
|
| 5596 |
- if ($getgrpsusr['plv_groups_allowed']) { $plvgroups = explode("|", $getgrpsusr['plv_groups_allowed']); } else { $plvgroups = []; }
|
|
| 5597 |
- if ($getgrpsusr['twl_groups_allowed']) { $twlgroups = explode("|", $getgrpsusr['twl_groups_allowed']); } else { $twlgroups = []; }
|
|
| 5598 |
- if ($getgrpsusr['flr_groups_allowed']) { $flrgroups = explode("|", $getgrpsusr['flr_groups_allowed']); } else { $flrgroups = []; }
|
|
| 5599 |
- |
|
| 5600 |
- $allwdgroupsarr = array_merge($tnxgroups, $plvgroups, $twlgroups, $flrgroups); |
|
| 5601 |
- $allwdgroupsunq = array_filter(array_unique($allwdgroupsarr)); |
|
| 5602 |
- |
|
| 5603 |
- } else {
|
|
| 5604 |
- $allwdusersunq = []; |
|
| 5605 |
- $allwdgroupsunq = []; |
|
| 5606 |
- } |
|
| 5607 |
- |
|
| 5608 |
- // Get the username for each Display Name of the allowed users |
|
| 5609 |
- $allwdusersfnl = []; |
|
| 5610 |
- foreach ($allwdusersunq as $alwdusrkey => $alwdusrvalue) {
|
|
| 5611 |
- |
|
| 5612 |
- $getacdatausrnm = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `name` = ? AND `value` = ?');
|
|
| 5613 |
- $getacdatausrnmres = $getacdatausrnm->execute(['displayname', $alwdusrvalue]); |
|
| 5614 |
- $acdatausrname = $getacdatausrnmres->fetch(); |
|
| 5615 |
- if ($acdatausrname) {
|
|
| 5616 |
- $allwdusersfnl[] = $acdatausrname['uid']; |
|
| 5617 |
- } |
|
| 5618 |
- $getacdatausrnmres->closeCursor(); |
|
| 5619 |
- } |
|
| 5620 |
- |
|
| 5621 |
- // Get the users from all the allowed groups |
|
| 5622 |
- $allwdusersgrpmlt = []; |
|
| 5623 |
- foreach ($allwdgroupsunq as $prgrpkey => $prgrpvalue) {
|
|
| 5624 |
- |
|
| 5625 |
- // Get all the users that belong to the current group, if the current group is different from 'admin' |
|
| 5626 |
- if ($prgrpvalue != 'admin') {
|
|
| 5627 |
- $getusringroup = $this->connection->prepare('SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `gid` = ?');
|
|
| 5628 |
- $getusringroupres = $getusringroup->execute([$prgrpvalue]); |
|
| 5629 |
- |
|
| 5630 |
- while ($getusrname = $getusringroupres->fetch()) {
|
|
| 5631 |
- |
|
| 5632 |
- $allwdusersgrpmlt[] = $getusrname['uid']; |
|
| 5633 |
- } |
|
| 5634 |
- $getusringroupres->closeCursor(); |
|
| 5635 |
- } |
|
| 5636 |
- } |
|
| 5637 |
- $allwdusersgrpfnl = array_unique($allwdusersgrpmlt); |
|
| 5638 |
- |
|
| 5639 |
- $allusr = array_merge($allwdusersfnl, $allwdusersgrpfnl); |
|
| 5640 |
- $allusruniquest = array_unique($allusr); |
|
| 5641 |
- |
|
| 5642 |
- if ($allusruniquest) {
|
|
| 5643 |
- array_unshift($allusruniquest, $userId); |
|
| 5644 |
- $allusruniquerc = $allusruniquest; |
|
| 5645 |
- } else { $allusruniquerc = [$userId]; }
|
|
| 5646 |
- |
|
| 5647 |
- return $allusruniquerc; |
|
| 5648 |
- |
|
| 5649 |
- } else { return [$userId]; }
|
|
| 5650 |
- } |
|
| 5651 |
- |
|
| 5652 |
- |
|
| 5653 |
- /** |
|
| 5654 |
- * @NoAdminRequired |
|
| 5655 |
- */ |
|
| 5656 |
- public function getsmsnumbers($userId) {
|
|
| 5657 |
- |
|
| 5658 |
- // Check if there are any saved phone numbers for the current user |
|
| 5659 |
- $getnumbers = $this->connection->prepare('SELECT `user_id`, `available_numbers` FROM `*PREFIX*sms_relent_settings` WHERE `user_id` = ?');
|
|
| 5660 |
- $getcrtusrno = $getnumbers->execute([$userId]); |
|
| 5661 |
- $getusrnmbrs = $getcrtusrno->fetch(); |
|
| 5662 |
- $getcrtusrno->closeCursor(); |
|
| 5663 |
- |
|
| 5664 |
- if ($getusrnmbrs['available_numbers']) {
|
|
| 5665 |
- |
|
| 5666 |
- $retrievednmbrs = $getusrnmbrs['available_numbers']; |
|
| 5667 |
- $getnmbrsarr = explode("|", $retrievednmbrs);
|
|
| 5668 |
- $numbersforuser = array_filter($getnmbrsarr); |
|
| 5669 |
- return $numbersforuser; |
|
| 5670 |
- |
|
| 5671 |
- // Get the available phone numbers for the current user from the SMS providers |
|
| 5672 |
- } else {
|
|
| 5673 |
- |
|
| 5674 |
- // Get Telnyx phone numbers |
|
| 5675 |
- $smsapicredtx = $this->getapicredentials($userId, 'telnyx'); |
|
| 5676 |
- |
|
| 5677 |
- if ($smsapicredtx) {
|
|
| 5678 |
- |
|
| 5679 |
- $telnyxkey = $smsapicredtx[0]; |
|
| 5680 |
- $telsendernameinit = $smsapicredtx[9]; |
|
| 5681 |
- |
|
| 5682 |
- if ($telsendernameinit) {
|
|
| 5683 |
- $telsendername = "Tx: " . $telsendernameinit; |
|
| 5684 |
- $telsenderarr = [0 => $telsendername]; |
|
| 5685 |
- } else { $telsenderarr = []; }
|
|
| 5686 |
- |
|
| 5687 |
- if ($telnyxkey != '') {
|
|
| 5688 |
- |
|
| 5689 |
- \Telnyx\Telnyx::setApiKey($telnyxkey); |
|
| 5690 |
- $telnumbers = \Telnyx\MessagingPhoneNumber::All(); |
|
| 5691 |
- |
|
| 5692 |
- $telnumbersarr = $this->object_to_array($telnumbers); |
|
| 5693 |
- $telcurrentnmbrs = []; |
|
| 5694 |
- |
|
| 5695 |
- foreach ($telnumbersarr['_originalValues'] as $nmbkey => $nmbvalue) {
|
|
| 5696 |
- if (is_int($nmbkey)) {
|
|
| 5697 |
- foreach ($nmbvalue as $nkey => $nvalue) {
|
|
| 5698 |
- if ($nkey == 'phone_number' && $nvalue) {
|
|
| 5699 |
- $telcurrentnmbrs[] = "Tx: " . $nvalue; |
|
| 5700 |
- } |
|
| 5701 |
- } |
|
| 5702 |
- } |
|
| 5703 |
- } |
|
| 5704 |
- |
|
| 5705 |
- } else { $telcurrentnmbrs = []; }
|
|
| 5706 |
- |
|
| 5707 |
- } else { $telcurrentnmbrs = []; $telsenderarr = []; }
|
|
| 5708 |
- |
|
| 5709 |
- // Get Plivo phone numbers |
|
| 5710 |
- $smsapicredpl = $this->getapicredentials($userId, 'plivo'); |
|
| 5711 |
- |
|
| 5712 |
- if ($smsapicredpl) {
|
|
| 5713 |
- |
|
| 5714 |
- $nexapikey = $smsapicredpl[5]; |
|
| 5715 |
- $nexapisecret = $smsapicredpl[6]; |
|
| 5716 |
- $nexsendernameinit = $smsapicredpl[10]; |
|
| 5717 |
- |
|
| 5718 |
- if ($nexsendernameinit) {
|
|
| 5719 |
- $nexsendername = "Pl: " . $nexsendernameinit; |
|
| 5720 |
- $nexsenderarr = [0 => $nexsendername]; |
|
| 5721 |
- } else { $nexsenderarr = []; }
|
|
| 5722 |
- |
|
| 5723 |
- if ($nexapikey != '' && $nexapisecret != '') {
|
|
| 5724 |
- |
|
| 5725 |
- $getacdata = "https://".$nexapikey.":".$nexapisecret."@api.plivo.com/v1/Account/".$nexapikey."/Number/"; |
|
| 5726 |
- $acdata = file_get_contents($getacdata); |
|
| 5727 |
- $datainit = json_decode($acdata, true); |
|
| 5728 |
- |
|
| 5729 |
- $findata = $this->object_to_array($datainit); |
|
| 5730 |
- |
|
| 5731 |
- $nexcurrentnmbrs = []; |
|
| 5732 |
- |
|
| 5733 |
- foreach ($findata['objects'] as $smskey => $smsvalue) {
|
|
| 5734 |
- if (is_array($smsvalue)) {
|
|
| 5735 |
- foreach ($smsvalue as $smskey2 => $smsvalue2) {
|
|
| 5736 |
- if ($smskey2 == 'number' && $smsvalue2) {
|
|
| 5737 |
- $nexcurrentnmbrs[] = "Pl: +" . $smsvalue2; |
|
| 5738 |
- } |
|
| 5739 |
- } |
|
| 5740 |
- } |
|
| 5741 |
- } |
|
| 5742 |
- |
|
| 5743 |
- } else { $nexcurrentnmbrs = []; }
|
|
| 5744 |
- |
|
| 5745 |
- } else { $nexcurrentnmbrs = []; $nexsenderarr = []; }
|
|
| 5746 |
- |
|
| 5747 |
- |
|
| 5748 |
- // Get Twilio phone numbers |
|
| 5749 |
- $smsapicredtw = $this->getapicredentials($userId, 'twilio'); |
|
| 5750 |
- |
|
| 5751 |
- if ($smsapicredtw) {
|
|
| 5752 |
- |
|
| 5753 |
- $twilapikey = $smsapicredtw[15]; |
|
| 5754 |
- $twilapisecret = $smsapicredtw[16]; |
|
| 5755 |
- $twilsendernameinit = $smsapicredtw[19]; |
|
| 5756 |
- |
|
| 5757 |
- if ($twilsendernameinit) {
|
|
| 5758 |
- $twilsendername = "Tw: " . $twilsendernameinit; |
|
| 5759 |
- $twilsenderarr = [0 => $twilsendername]; |
|
| 5760 |
- } else { $twilsenderarr = []; }
|
|
| 5761 |
- |
|
| 5762 |
- if ($twilapikey != '' && $twilapisecret != '') {
|
|
| 5763 |
- |
|
| 5764 |
- $twilnumbers = json_decode(file_get_contents("https://".$twilapikey.":".$twilapisecret."@api.twilio.com/2010-04-01/Accounts/".$twilapikey."/IncomingPhoneNumbers.json"), true);
|
|
| 5765 |
- $twilactivenmbrs = $twilnumbers['incoming_phone_numbers']; |
|
| 5766 |
- |
|
| 5767 |
- $twilcurrentnmbrs = []; |
|
| 5768 |
- foreach ($twilactivenmbrs as $twnbkey => $twnbvalue) {
|
|
| 5769 |
- if (is_array($twnbvalue)) {
|
|
| 5770 |
- foreach ($twnbvalue as $twfkey => $twfvalue) {
|
|
| 5771 |
- if ($twfkey == 'phone_number' && $twfvalue) {
|
|
| 5772 |
- $twilcurrentnmbrs[] = "Tw: " . $twfvalue; |
|
| 5773 |
- } |
|
| 5774 |
- } |
|
| 5775 |
- } |
|
| 5776 |
- } |
|
| 5777 |
- |
|
| 5778 |
- } else { $twilcurrentnmbrs = []; }
|
|
| 5779 |
- |
|
| 5780 |
- } else { $twilcurrentnmbrs = []; $twilsenderarr = []; }
|
|
| 5781 |
- |
|
| 5782 |
- // Get Flowroute phone numbers |
|
| 5783 |
- $smsapicredfl = $this->getapicredentials($userId, 'flowroute'); |
|
| 5784 |
- |
|
| 5785 |
- if ($smsapicredfl) {
|
|
| 5786 |
- |
|
| 5787 |
- $flowapikey = $smsapicredfl[20]; |
|
| 5788 |
- $flowapisecret = $smsapicredfl[21]; |
|
| 5789 |
- |
|
| 5790 |
- if ($flowapikey != '' && $flowapisecret != '') {
|
|
| 5791 |
- |
|
| 5792 |
- $flnbrsresult = json_decode(file_get_contents("https://".$flowapikey.":".$flowapisecret."@api.flowroute.com/v2/numbers"));
|
|
| 5793 |
- $flnbrsarr = $flnbrsresult->data; |
|
| 5794 |
- $flowcurrentnmbrs = []; |
|
| 5795 |
- foreach ($flnbrsarr as $flkey => $flitem) {
|
|
| 5796 |
- if ($flitem->id) {
|
|
| 5797 |
- $flowcurrentnmbrs[] = "Fl: +" . $flitem->id; |
|
| 5798 |
- } |
|
| 5799 |
- } |
|
| 5800 |
- |
|
| 5801 |
- } else { $flowcurrentnmbrs = []; }
|
|
| 5802 |
- |
|
| 5803 |
- } else { $flowcurrentnmbrs = []; }
|
|
| 5804 |
- |
|
| 5805 |
- $currentnmbrs = array_merge($telcurrentnmbrs, $nexcurrentnmbrs, $twilcurrentnmbrs, $flowcurrentnmbrs, $telsenderarr, $nexsenderarr, $twilsenderarr); |
|
| 5806 |
- |
|
| 5807 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 5808 |
- |
|
| 5809 |
- // Save the available phone numbers for the current user |
|
| 5810 |
- $availablenmbrs = implode("|", $currentnmbrs);
|
|
| 5811 |
- $savephno = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `available_numbers` = ? WHERE `user_id` = ?');
|
|
| 5812 |
- $upusrphnmbrs = $savephno->execute([$availablenmbrs, $userId]); |
|
| 5813 |
- $upusrphnmbrs->closeCursor(); |
|
| 5814 |
- |
|
| 5815 |
- return $currentnmbrs; |
|
| 5816 |
- |
|
| 5817 |
- } else {
|
|
| 5818 |
- |
|
| 5819 |
- // Get the restrictions from the 'sms_relent_restrict' table |
|
| 5820 |
- $getrestr = $this->connection->prepare('
|
|
| 5821 |
- SELECT `phone_number`, `groups`, `users` FROM `*PREFIX*sms_relent_restrict`'); |
|
| 5822 |
- $getrestrres = $getrestr->execute(); |
|
| 5823 |
- |
|
| 5824 |
- $restrdata = []; |
|
| 5825 |
- while ($restrfetched = $getrestrres->fetch()) {
|
|
| 5826 |
- $restrdata[] = $restrfetched; |
|
| 5827 |
- } |
|
| 5828 |
- $getrestrres->closeCursor(); |
|
| 5829 |
- |
|
| 5830 |
- if ($restrdata) {
|
|
| 5831 |
- |
|
| 5832 |
- // Get the groups to which the current user belongs |
|
| 5833 |
- $getusrgrp = $this->connection->prepare('
|
|
| 5834 |
- SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `uid` = ?'); |
|
| 5835 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 5836 |
- |
|
| 5837 |
- $usergrps = []; |
|
| 5838 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 5839 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 5840 |
- } |
|
| 5841 |
- $getusrgrpres->closeCursor(); |
|
| 5842 |
- $ctusergroups = implode("|", $usergrps);
|
|
| 5843 |
- |
|
| 5844 |
- // Get the Display Name of the current user |
|
| 5845 |
- $dsplnm = 'displayname'; |
|
| 5846 |
- $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
|
|
| 5847 |
- $getacdatadnres = $getacdatadn->execute([$userId, $dsplnm]); |
|
| 5848 |
- $acdatausrdnadm = $getacdatadnres->fetch(); |
|
| 5849 |
- $cruserdname = $acdatausrdnadm['value']; |
|
| 5850 |
- $getacdatadnres->closeCursor(); |
|
| 5851 |
- |
|
| 5852 |
- // Get the phone numbers that are not allowed for the current user |
|
| 5853 |
- $restrPhoneNb = []; |
|
| 5854 |
- foreach ($restrdata as $rskey => $rsvalue) {
|
|
| 5855 |
- |
|
| 5856 |
- $chck = 0; |
|
| 5857 |
- if ($rsvalue['groups']) {
|
|
| 5858 |
- $restrgrparr = explode("|", $rsvalue['groups']);
|
|
| 5859 |
- |
|
| 5860 |
- foreach ($restrgrparr as $grkey => $grvalue) {
|
|
| 5861 |
- if (str_contains($ctusergroups, $grvalue)) { $chck++; }
|
|
| 5862 |
- } |
|
| 5863 |
- } |
|
| 5864 |
- |
|
| 5865 |
- if ($rsvalue['users']) {
|
|
| 5866 |
- $usrnmstr = $rsvalue['users']; |
|
| 5867 |
- if (str_contains($usrnmstr, $cruserdname)) { $chck++; }
|
|
| 5868 |
- } |
|
| 5869 |
- |
|
| 5870 |
- if ($chck == 0) { $restrPhoneNb[] = $rsvalue['phone_number']; }
|
|
| 5871 |
- } |
|
| 5872 |
- |
|
| 5873 |
- $restrPhoneNmbrs = array_unique($restrPhoneNb); |
|
| 5874 |
- |
|
| 5875 |
- // Assemble the array of phone numbers that the current user is allowed to use |
|
| 5876 |
- for ($k = 0; $k < count($currentnmbrs); $k++) {
|
|
| 5877 |
- |
|
| 5878 |
- if (in_array($currentnmbrs[$k], $restrPhoneNmbrs)) {
|
|
| 5879 |
- unset($currentnmbrs[$k]); |
|
| 5880 |
- } |
|
| 5881 |
- } |
|
| 5882 |
- |
|
| 5883 |
- $currentnmbrsrstr = array_values($currentnmbrs); |
|
| 5884 |
- |
|
| 5885 |
- // Save the available phone numbers for the current user |
|
| 5886 |
- $availablenmbrs = implode("|", $currentnmbrsrstr);
|
|
| 5887 |
- $savephno = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `available_numbers` = ? WHERE `user_id` = ?');
|
|
| 5888 |
- $upusrphnmbrs = $savephno->execute([$availablenmbrs, $userId]); |
|
| 5889 |
- $upusrphnmbrs->closeCursor(); |
|
| 5890 |
- |
|
| 5891 |
- return $currentnmbrsrstr; |
|
| 5892 |
- |
|
| 5893 |
- } else {
|
|
| 5894 |
- |
|
| 5895 |
- // Save the available phone numbers for the current user |
|
| 5896 |
- $availablenmbrs = implode("|", $currentnmbrs);
|
|
| 5897 |
- $savephno = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `available_numbers` = ? WHERE `user_id` = ?');
|
|
| 5898 |
- $upusrphnmbrs = $savephno->execute([$availablenmbrs, $userId]); |
|
| 5899 |
- $upusrphnmbrs->closeCursor(); |
|
| 5900 |
- |
|
| 5901 |
- return $currentnmbrs; |
|
| 5902 |
- } |
|
| 5903 |
- } |
|
| 5904 |
- } |
|
| 5905 |
- } |
|
| 5906 |
- |
|
| 5907 |
- |
|
| 5908 |
- /** |
|
| 5909 |
- * @NoAdminRequired |
|
| 5910 |
- */ |
|
| 5911 |
- public function refreshavailablenumbers($userId) {
|
|
| 5912 |
- |
|
| 5913 |
- // Get Telnyx phone numbers |
|
| 5914 |
- $smsapicredtx = $this->getapicredentials($userId, 'telnyx'); |
|
| 5915 |
- |
|
| 5916 |
- if ($smsapicredtx) {
|
|
| 5917 |
- |
|
| 5918 |
- $telnyxkey = $smsapicredtx[0]; |
|
| 5919 |
- $telsendernameinit = $smsapicredtx[9]; |
|
| 5920 |
- |
|
| 5921 |
- if ($telsendernameinit) {
|
|
| 5922 |
- $telsendername = "Tx: " . $telsendernameinit; |
|
| 5923 |
- $telsenderarr = [0 => $telsendername]; |
|
| 5924 |
- } else { $telsenderarr = []; }
|
|
| 5925 |
- |
|
| 5926 |
- if ($telnyxkey != '') {
|
|
| 5927 |
- |
|
| 5928 |
- \Telnyx\Telnyx::setApiKey($telnyxkey); |
|
| 5929 |
- $telnumbers = \Telnyx\MessagingPhoneNumber::All(); |
|
| 5930 |
- |
|
| 5931 |
- $telnumbersarr = $this->object_to_array($telnumbers); |
|
| 5932 |
- $telcurrentnmbrs = []; |
|
| 5933 |
- |
|
| 5934 |
- foreach ($telnumbersarr['_originalValues'] as $nmbkey => $nmbvalue) {
|
|
| 5935 |
- if (is_int($nmbkey)) {
|
|
| 5936 |
- foreach ($nmbvalue as $nkey => $nvalue) {
|
|
| 5937 |
- if ($nkey == 'phone_number' && $nvalue) {
|
|
| 5938 |
- $telcurrentnmbrs[] = "Tx: " . $nvalue; |
|
| 5939 |
- } |
|
| 5940 |
- } |
|
| 5941 |
- } |
|
| 5942 |
- } |
|
| 5943 |
- |
|
| 5944 |
- } else { $telcurrentnmbrs = []; }
|
|
| 5945 |
- |
|
| 5946 |
- } else { $telcurrentnmbrs = []; $telsenderarr = []; }
|
|
| 5947 |
- |
|
| 5948 |
- // Get Plivo phone numbers |
|
| 5949 |
- $smsapicredpl = $this->getapicredentials($userId, 'plivo'); |
|
| 5950 |
- |
|
| 5951 |
- if ($smsapicredpl) {
|
|
| 5952 |
- |
|
| 5953 |
- $nexapikey = $smsapicredpl[5]; |
|
| 5954 |
- $nexapisecret = $smsapicredpl[6]; |
|
| 5955 |
- $nexsendernameinit = $smsapicredpl[10]; |
|
| 5956 |
- |
|
| 5957 |
- if ($nexsendernameinit) {
|
|
| 5958 |
- $nexsendername = "Pl: " . $nexsendernameinit; |
|
| 5959 |
- $nexsenderarr = [0 => $nexsendername]; |
|
| 5960 |
- } else { $nexsenderarr = []; }
|
|
| 5961 |
- |
|
| 5962 |
- if ($nexapikey != '' && $nexapisecret != '') {
|
|
| 5963 |
- |
|
| 5964 |
- $getacdata = "https://".$nexapikey.":".$nexapisecret."@api.plivo.com/v1/Account/".$nexapikey."/Number/"; |
|
| 5965 |
- $acdata = file_get_contents($getacdata); |
|
| 5966 |
- $datainit = json_decode($acdata, true); |
|
| 5967 |
- |
|
| 5968 |
- $findata = $this->object_to_array($datainit); |
|
| 5969 |
- |
|
| 5970 |
- $nexcurrentnmbrs = []; |
|
| 5971 |
- |
|
| 5972 |
- foreach ($findata['objects'] as $smskey => $smsvalue) {
|
|
| 5973 |
- if (is_array($smsvalue)) {
|
|
| 5974 |
- foreach ($smsvalue as $smskey2 => $smsvalue2) {
|
|
| 5975 |
- if ($smskey2 == 'number' && $smsvalue2) {
|
|
| 5976 |
- $nexcurrentnmbrs[] = "Pl: +" . $smsvalue2; |
|
| 5977 |
- } |
|
| 5978 |
- } |
|
| 5979 |
- } |
|
| 5980 |
- } |
|
| 5981 |
- |
|
| 5982 |
- } else { $nexcurrentnmbrs = []; }
|
|
| 5983 |
- |
|
| 5984 |
- } else { $nexcurrentnmbrs = []; $nexsenderarr = []; }
|
|
| 5985 |
- |
|
| 5986 |
- // Get Twilio phone numbers |
|
| 5987 |
- $smsapicredtw = $this->getapicredentials($userId, 'twilio'); |
|
| 5988 |
- |
|
| 5989 |
- if ($smsapicredtw) {
|
|
| 5990 |
- |
|
| 5991 |
- $twilapikey = $smsapicredtw[15]; |
|
| 5992 |
- $twilapisecret = $smsapicredtw[16]; |
|
| 5993 |
- $twilsendernameinit = $smsapicredtw[19]; |
|
| 5994 |
- |
|
| 5995 |
- if ($twilsendernameinit) {
|
|
| 5996 |
- $twilsendername = "Tw: " . $twilsendernameinit; |
|
| 5997 |
- $twilsenderarr = [0 => $twilsendername]; |
|
| 5998 |
- } else { $twilsenderarr = []; }
|
|
| 5999 |
- |
|
| 6000 |
- if ($twilapikey != '' && $twilapisecret != '') {
|
|
| 6001 |
- |
|
| 6002 |
- $twilnumbers = json_decode(file_get_contents("https://".$twilapikey.":".$twilapisecret."@api.twilio.com/2010-04-01/Accounts/".$twilapikey."/IncomingPhoneNumbers.json"), true);
|
|
| 6003 |
- $twilactivenmbrs = $twilnumbers['incoming_phone_numbers']; |
|
| 6004 |
- |
|
| 6005 |
- $twilcurrentnmbrs = []; |
|
| 6006 |
- foreach ($twilactivenmbrs as $twnbkey => $twnbvalue) {
|
|
| 6007 |
- if (is_array($twnbvalue)) {
|
|
| 6008 |
- foreach ($twnbvalue as $twfkey => $twfvalue) {
|
|
| 6009 |
- if ($twfkey == 'phone_number' && $twfvalue) {
|
|
| 6010 |
- $twilcurrentnmbrs[] = "Tw: " . $twfvalue; |
|
| 6011 |
- } |
|
| 6012 |
- } |
|
| 6013 |
- } |
|
| 6014 |
- } |
|
| 6015 |
- |
|
| 6016 |
- } else { $twilcurrentnmbrs = []; }
|
|
| 6017 |
- |
|
| 6018 |
- } else { $twilcurrentnmbrs = []; $twilsenderarr = []; }
|
|
| 6019 |
- |
|
| 6020 |
- // Get Flowroute phone numbers |
|
| 6021 |
- $smsapicredfl = $this->getapicredentials($userId, 'flowroute'); |
|
| 6022 |
- |
|
| 6023 |
- if ($smsapicredfl) {
|
|
| 6024 |
- |
|
| 6025 |
- $flowapikey = $smsapicredfl[20]; |
|
| 6026 |
- $flowapisecret = $smsapicredfl[21]; |
|
| 6027 |
- |
|
| 6028 |
- if ($flowapikey != '' && $flowapisecret != '') {
|
|
| 6029 |
- |
|
| 6030 |
- $flnbrsresult = json_decode(file_get_contents("https://".$flowapikey.":".$flowapisecret."@api.flowroute.com/v2/numbers"));
|
|
| 6031 |
- $flnbrsarr = $flnbrsresult->data; |
|
| 6032 |
- $flowcurrentnmbrs = []; |
|
| 6033 |
- foreach ($flnbrsarr as $flkey => $flitem) {
|
|
| 6034 |
- if ($flitem->id) {
|
|
| 6035 |
- $flowcurrentnmbrs[] = "Fl: +" . $flitem->id; |
|
| 6036 |
- } |
|
| 6037 |
- } |
|
| 6038 |
- |
|
| 6039 |
- } else { $flowcurrentnmbrs = []; }
|
|
| 6040 |
- |
|
| 6041 |
- } else { $flowcurrentnmbrs = []; }
|
|
| 6042 |
- |
|
| 6043 |
- $currentnmbrs = array_merge($telcurrentnmbrs, $nexcurrentnmbrs, $twilcurrentnmbrs, $flowcurrentnmbrs, $telsenderarr, $nexsenderarr, $twilsenderarr); |
|
| 6044 |
- |
|
| 6045 |
- |
|
| 6046 |
- if ($this->groupManager->isAdmin($userId)) {
|
|
| 6047 |
- |
|
| 6048 |
- // Save the available phone numbers for the current user |
|
| 6049 |
- $availablenmbrs = implode("|", $currentnmbrs);
|
|
| 6050 |
- $savephno = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `available_numbers` = ? WHERE `user_id` = ?');
|
|
| 6051 |
- $upusrphnmbrs = $savephno->execute([$availablenmbrs, $userId]); |
|
| 6052 |
- $upusrphnmbrs->closeCursor(); |
|
| 6053 |
- |
|
| 6054 |
- return $currentnmbrs; |
|
| 6055 |
- |
|
| 6056 |
- } else {
|
|
| 6057 |
- |
|
| 6058 |
- // Get the restrictions from the 'sms_relent_restrict' table |
|
| 6059 |
- $getrestr = $this->connection->prepare('
|
|
| 6060 |
- SELECT `phone_number`, `groups`, `users` FROM `*PREFIX*sms_relent_restrict`'); |
|
| 6061 |
- $getrestrres = $getrestr->execute(); |
|
| 6062 |
- |
|
| 6063 |
- $restrdata = []; |
|
| 6064 |
- while ($restrfetched = $getrestrres->fetch()) {
|
|
| 6065 |
- $restrdata[] = $restrfetched; |
|
| 6066 |
- } |
|
| 6067 |
- $getrestrres->closeCursor(); |
|
| 6068 |
- |
|
| 6069 |
- if ($restrdata) {
|
|
| 6070 |
- |
|
| 6071 |
- // Get the groups to which the current user belongs |
|
| 6072 |
- $getusrgrp = $this->connection->prepare('
|
|
| 6073 |
- SELECT `gid`, `uid` FROM `*PREFIX*group_user` WHERE `uid` = ?'); |
|
| 6074 |
- $getusrgrpres = $getusrgrp->execute([$userId]); |
|
| 6075 |
- |
|
| 6076 |
- $usergrps = []; |
|
| 6077 |
- while ($fetchedgrps = $getusrgrpres->fetch()) {
|
|
| 6078 |
- $usergrps[] = $fetchedgrps['gid']; |
|
| 6079 |
- } |
|
| 6080 |
- $getusrgrpres->closeCursor(); |
|
| 6081 |
- $ctusergroups = implode("|", $usergrps);
|
|
| 6082 |
- |
|
| 6083 |
- // Get the Display Name of the current user |
|
| 6084 |
- $dispname = 'displayname'; |
|
| 6085 |
- $getacdatadn = $this->connection->prepare('SELECT `uid`, `name`, `value` FROM `*PREFIX*accounts_data` WHERE `uid` = ? AND `name` = ?');
|
|
| 6086 |
- $getacdatadnres = $getacdatadn->execute([$userId, $dispname]); |
|
| 6087 |
- $acdatausrdnadm = $getacdatadnres->fetch(); |
|
| 6088 |
- $cruserdname = $acdatausrdnadm['value']; |
|
| 6089 |
- $getacdatadnres->closeCursor(); |
|
| 6090 |
- |
|
| 6091 |
- // Get the phone numbers that are not allowed for the current user |
|
| 6092 |
- $restrPhoneNb = []; |
|
| 6093 |
- foreach ($restrdata as $rskey => $rsvalue) {
|
|
| 6094 |
- |
|
| 6095 |
- $chck = 0; |
|
| 6096 |
- if ($rsvalue['groups']) {
|
|
| 6097 |
- $restrgrparr = explode("|", $rsvalue['groups']);
|
|
| 6098 |
- |
|
| 6099 |
- foreach ($restrgrparr as $grkey => $grvalue) {
|
|
| 6100 |
- if (str_contains($ctusergroups, $grvalue)) { $chck++; }
|
|
| 6101 |
- } |
|
| 6102 |
- } |
|
| 6103 |
- |
|
| 6104 |
- if ($rsvalue['users']) {
|
|
| 6105 |
- $usrnmstr = $rsvalue['users']; |
|
| 6106 |
- if (str_contains($usrnmstr, $cruserdname)) { $chck++; }
|
|
| 6107 |
- } |
|
| 6108 |
- |
|
| 6109 |
- if ($chck == 0) { $restrPhoneNb[] = $rsvalue['phone_number']; }
|
|
| 6110 |
- } |
|
| 6111 |
- |
|
| 6112 |
- $restrPhoneNmbrs = array_unique($restrPhoneNb); |
|
| 6113 |
- |
|
| 6114 |
- // Assemble the array of phone numbers that the current user is allowed to use |
|
| 6115 |
- for ($k = 0; $k < count($currentnmbrs); $k++) {
|
|
| 6116 |
- |
|
| 6117 |
- if (in_array($currentnmbrs[$k], $restrPhoneNmbrs)) {
|
|
| 6118 |
- unset($currentnmbrs[$k]); |
|
| 6119 |
- } |
|
| 6120 |
- } |
|
| 6121 |
- |
|
| 6122 |
- $currentnmbrsrstr = array_values($currentnmbrs); |
|
| 6123 |
- |
|
| 6124 |
- // Save the available phone numbers for the current user |
|
| 6125 |
- $availablenmbrs = implode("|", $currentnmbrsrstr);
|
|
| 6126 |
- $savephno = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `available_numbers` = ? WHERE `user_id` = ?');
|
|
| 6127 |
- $upusrphnmbrs = $savephno->execute([$availablenmbrs, $userId]); |
|
| 6128 |
- $upusrphnmbrs->closeCursor(); |
|
| 6129 |
- |
|
| 6130 |
- return $currentnmbrsrstr; |
|
| 6131 |
- |
|
| 6132 |
- } else {
|
|
| 6133 |
- |
|
| 6134 |
- // Save the available phone numbers for the current user |
|
| 6135 |
- $availablenmbrs = implode("|", $currentnmbrs);
|
|
| 6136 |
- $savephno = $this->connection->prepare('UPDATE `*PREFIX*sms_relent_settings` SET `available_numbers` = ? WHERE `user_id` = ?');
|
|
| 6137 |
- $upusrphnmbrs = $savephno->execute([$availablenmbrs, $userId]); |
|
| 6138 |
- $upusrphnmbrs->closeCursor(); |
|
| 6139 |
- |
|
| 6140 |
- return $currentnmbrs; |
|
| 6141 |
- } |
|
| 6142 |
- } |
|
| 6143 |
- } |
|
| 6144 |
-} |