Event Tickets - Version 4.10.8

Version Description

Download this release

Release Info

Developer brianjessee
Plugin Icon 128x128 Event Tickets
Version 4.10.8
Comparing to
See all releases

Code changes from version 4.10.7.2 to 4.10.8

Files changed (180) hide show
  1. common/lang/tribe-common-af.mo +0 -0
  2. common/lang/tribe-common-bg_BG.mo +0 -0
  3. common/lang/tribe-common-ca.mo +0 -0
  4. common/lang/tribe-common-cs_CZ.mo +0 -0
  5. common/lang/tribe-common-da_DK.mo +0 -0
  6. common/lang/tribe-common-de_DE.mo +0 -0
  7. common/lang/tribe-common-el.mo +0 -0
  8. common/lang/tribe-common-en_GB.mo +0 -0
  9. common/lang/tribe-common-es_ES.mo +0 -0
  10. common/lang/tribe-common-et.mo +0 -0
  11. common/lang/tribe-common-fi.mo +0 -0
  12. common/lang/tribe-common-fr_CA.mo +0 -0
  13. common/lang/tribe-common-fr_FR.mo +0 -0
  14. common/lang/tribe-common-hu_HU.mo +0 -0
  15. common/lang/tribe-common-id_ID.mo +0 -0
  16. common/lang/tribe-common-is_IS.mo +0 -0
  17. common/lang/tribe-common-it_IT.mo +0 -0
  18. common/lang/tribe-common-ja.mo +0 -0
  19. common/lang/tribe-common-lt_LT.mo +0 -0
  20. common/lang/tribe-common-lv.mo +0 -0
  21. common/lang/tribe-common-nb_NO.mo +0 -0
  22. common/lang/tribe-common-nl_NL.mo +0 -0
  23. common/lang/tribe-common-pl_PL.mo +0 -0
  24. common/lang/tribe-common-pt_BR.mo +0 -0
  25. common/lang/tribe-common-pt_PT.mo +0 -0
  26. common/lang/tribe-common-ro_RO.mo +0 -0
  27. common/lang/tribe-common-ru_RU.mo +0 -0
  28. common/lang/tribe-common-sk_SK.mo +0 -0
  29. common/lang/tribe-common-sl_SI.mo +0 -0
  30. common/lang/tribe-common-sr_RS.mo +0 -0
  31. common/lang/tribe-common-sv_SE.mo +0 -0
  32. common/lang/tribe-common-tr_TR.mo +0 -0
  33. common/lang/tribe-common-zh_CN.mo +0 -0
  34. common/lang/tribe-common-zh_TW.mo +0 -0
  35. common/lang/tribe-common.pot +65 -62
  36. common/src/Tribe/Abstract_Plugin_Register.php +30 -8
  37. common/src/Tribe/Admin/Notice/Plugin_Download.php +25 -7
  38. common/src/Tribe/Assets.php +33 -31
  39. common/src/Tribe/Dependency.php +11 -28
  40. common/src/Tribe/Image/Uploader.php +13 -0
  41. common/src/Tribe/Log.php +3 -0
  42. common/src/Tribe/Log/Action_Logger.php +125 -0
  43. common/src/Tribe/Log/Canonical_Formatter.php +101 -0
  44. common/src/Tribe/Log/Monolog_Logger.php +54 -0
  45. common/src/Tribe/Log/README.md +154 -0
  46. common/src/Tribe/Log/Service_Provider.php +148 -0
  47. common/src/Tribe/Main.php +2 -1
  48. common/src/Tribe/PUE/Checker.php +84 -82
  49. common/src/Tribe/Plugins.php +36 -36
  50. common/src/Tribe/Process/Handler.php +40 -0
  51. common/src/Tribe/Process/Post_Thumbnail_Setter.php +48 -2
  52. common/src/Tribe/Service_Providers/Tooltip.php +2 -2
  53. common/src/Tribe/Settings.php +44 -38
  54. common/src/Tribe/Settings_Manager.php +3 -0
  55. common/src/Tribe/Utils/Collection_Interface.php +1 -1
  56. common/src/Tribe/Utils/Lazy_Collection.php +9 -0
  57. common/src/Tribe/Utils/Lazy_Events.php +168 -0
  58. common/src/Tribe/Utils/Lazy_String.php +141 -0
  59. common/src/Tribe/Utils/Post_Thumbnail.php +61 -8
  60. common/src/Tribe/Validate.php +6 -58
  61. common/src/admin-views/tribe-options-general.php +33 -30
  62. common/src/functions/template-tags/general.php +27 -21
  63. common/src/functions/utils.php +6 -8
  64. common/src/resources/css/tribe-common-admin.css +42 -44
  65. common/src/resources/css/tribe-common-admin.min.css +1 -1
  66. common/src/resources/postcss/tribe-common-admin.pcss +146 -76
  67. common/vendor/autoload.php +1 -1
  68. common/vendor/autoload_52.php +1 -1
  69. common/vendor/composer/autoload_classmap.php +110 -0
  70. common/vendor/composer/autoload_psr4.php +2 -0
  71. common/vendor/composer/autoload_real.php +4 -4
  72. common/vendor/composer/autoload_real_52.php +3 -3
  73. common/vendor/composer/autoload_static.php +131 -5
  74. common/vendor/composer/installed.json +129 -0
  75. common/vendor/monolog/monolog/src/Monolog/ErrorHandler.php +239 -0
  76. common/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php +78 -0
  77. common/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php +89 -0
  78. common/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php +116 -0
  79. common/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php +86 -0
  80. common/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php +36 -0
  81. common/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php +138 -0
  82. common/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php +141 -0
  83. common/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php +214 -0
  84. common/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php +181 -0
  85. common/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php +47 -0
  86. common/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php +166 -0
  87. common/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php +107 -0
  88. common/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php +314 -0
  89. common/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php +48 -0
  90. common/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php +113 -0
  91. common/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php +196 -0
  92. common/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php +68 -0
  93. common/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php +101 -0
  94. common/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php +148 -0
  95. common/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php +240 -0
  96. common/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php +129 -0
  97. common/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php +211 -0
  98. common/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php +72 -0
  99. common/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php +151 -0
  100. common/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php +57 -0
  101. common/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php +169 -0
  102. common/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php +45 -0
  103. common/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php +107 -0
  104. common/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php +128 -0
  105. common/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php +82 -0
  106. common/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php +140 -0
  107. common/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php +28 -0
  108. common/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php +59 -0
  109. common/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php +34 -0
  110. common/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php +177 -0
  111. common/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php +195 -0
  112. common/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php +126 -0
  113. common/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php +127 -0
  114. common/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php +65 -0
  115. common/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php +116 -0
  116. common/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php +90 -0
  117. common/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php +116 -0
  118. common/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php +365 -0
  119. common/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php +69 -0
  120. common/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php +62 -0
  121. common/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php +55 -0
  122. common/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php +102 -0
  123. common/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php +67 -0
  124. common/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php +68 -0
  125. common/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php +21 -0
  126. common/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php +59 -0
  127. common/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php +185 -0
  128. common/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php +204 -0
  129. common/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php +45 -0
  130. common/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php +242 -0
  131. common/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php +56 -0
  132. common/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php +185 -0
  133. common/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php +232 -0
  134. common/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php +97 -0
  135. common/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php +144 -0
  136. common/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php +190 -0
  137. common/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php +82 -0
  138. common/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php +294 -0
  139. common/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php +220 -0
  140. common/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php +120 -0
  141. common/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php +80 -0
  142. common/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php +385 -0
  143. common/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php +176 -0
  144. common/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php +111 -0
  145. common/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php +67 -0
  146. common/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php +56 -0
  147. common/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php +103 -0
  148. common/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php +164 -0
  149. common/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php +71 -0
  150. common/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php +95 -0
  151. common/vendor/monolog/monolog/src/Monolog/Logger.php +791 -0
  152. common/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php +64 -0
  153. common/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php +112 -0
  154. common/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php +35 -0
  155. common/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php +63 -0
  156. common/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php +35 -0
  157. common/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php +63 -0
  158. common/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php +31 -0
  159. common/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php +25 -0
  160. common/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php +50 -0
  161. common/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php +44 -0
  162. common/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php +59 -0
  163. common/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php +113 -0
  164. common/vendor/monolog/monolog/src/Monolog/Registry.php +134 -0
  165. common/vendor/monolog/monolog/src/Monolog/ResettableInterface.php +31 -0
  166. common/vendor/monolog/monolog/src/Monolog/SignalHandler.php +115 -0
  167. common/vendor/monolog/monolog/src/Monolog/Utils.php +25 -0
  168. common/vendor/psr/log/Psr/Log/AbstractLogger.php +128 -0
  169. common/vendor/psr/log/Psr/Log/InvalidArgumentException.php +7 -0
  170. common/vendor/psr/log/Psr/Log/LogLevel.php +18 -0
  171. common/vendor/psr/log/Psr/Log/LoggerAwareInterface.php +18 -0
  172. common/vendor/psr/log/Psr/Log/LoggerAwareTrait.php +26 -0
  173. common/vendor/psr/log/Psr/Log/LoggerInterface.php +123 -0
  174. common/vendor/psr/log/Psr/Log/LoggerTrait.php +140 -0
  175. common/vendor/psr/log/Psr/Log/NullLogger.php +28 -0
  176. event-tickets.php +1 -1
  177. lang/event-tickets-af.po +0 -5985
  178. lang/event-tickets-ar.po +0 -3715
  179. lang/event-tickets-ary.po +0 -3715
  180. lang/event-tickets-az.po +0 -1505
common/lang/tribe-common-af.mo CHANGED
Binary file
common/lang/tribe-common-bg_BG.mo CHANGED
Binary file
common/lang/tribe-common-ca.mo CHANGED
Binary file
common/lang/tribe-common-cs_CZ.mo CHANGED
Binary file
common/lang/tribe-common-da_DK.mo CHANGED
Binary file
common/lang/tribe-common-de_DE.mo CHANGED
Binary file
common/lang/tribe-common-el.mo CHANGED
Binary file
common/lang/tribe-common-en_GB.mo CHANGED
Binary file
common/lang/tribe-common-es_ES.mo CHANGED
Binary file
common/lang/tribe-common-et.mo CHANGED
Binary file
common/lang/tribe-common-fi.mo CHANGED
Binary file
common/lang/tribe-common-fr_CA.mo CHANGED
Binary file
common/lang/tribe-common-fr_FR.mo CHANGED
Binary file
common/lang/tribe-common-hu_HU.mo CHANGED
Binary file
common/lang/tribe-common-id_ID.mo CHANGED
Binary file
common/lang/tribe-common-is_IS.mo CHANGED
Binary file
common/lang/tribe-common-it_IT.mo CHANGED
Binary file
common/lang/tribe-common-ja.mo CHANGED
Binary file
common/lang/tribe-common-lt_LT.mo CHANGED
Binary file
common/lang/tribe-common-lv.mo CHANGED
Binary file
common/lang/tribe-common-nb_NO.mo CHANGED
Binary file
common/lang/tribe-common-nl_NL.mo CHANGED
Binary file
common/lang/tribe-common-pl_PL.mo CHANGED
Binary file
common/lang/tribe-common-pt_BR.mo CHANGED
Binary file
common/lang/tribe-common-pt_PT.mo CHANGED
Binary file
common/lang/tribe-common-ro_RO.mo CHANGED
Binary file
common/lang/tribe-common-ru_RU.mo CHANGED
Binary file
common/lang/tribe-common-sk_SK.mo CHANGED
Binary file
common/lang/tribe-common-sl_SI.mo CHANGED
Binary file
common/lang/tribe-common-sr_RS.mo CHANGED
Binary file
common/lang/tribe-common-sv_SE.mo CHANGED
Binary file
common/lang/tribe-common-tr_TR.mo CHANGED
Binary file
common/lang/tribe-common-zh_CN.mo CHANGED
Binary file
common/lang/tribe-common-zh_TW.mo CHANGED
Binary file
common/lang/tribe-common.pot CHANGED
@@ -2,13 +2,13 @@
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Tribe Common 4.9.15\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
- "POT-Creation-Date: 2019-08-20 03:22:07+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2019-08-20 03:22\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
@@ -173,13 +173,13 @@ msgid "Visit the Add-on Page"
173
  msgstr ""
174
 
175
  #: src/Tribe/Admin/Notice/Php_Version.php:59
176
- #: src/Tribe/Admin/Notice/Plugin_Download.php:137
177
  msgctxt "separator used in a list of items"
178
  msgid ", "
179
  msgstr ""
180
 
181
  #: src/Tribe/Admin/Notice/Php_Version.php:60
182
- #: src/Tribe/Admin/Notice/Plugin_Download.php:138
183
  msgctxt "the final separator in a list of two or more items"
184
  msgid " and "
185
  msgstr ""
@@ -198,16 +198,15 @@ msgid ""
198
  "recommend using PHP 5.6 or above."
199
  msgstr ""
200
 
201
- #: src/Tribe/Admin/Notice/Plugin_Download.php:112
202
- msgid ""
203
- "To begin using %2$s, please install and activate the latest version of %3$s."
204
  msgstr ""
205
 
206
- #: src/Tribe/Admin/Notice/Plugin_Download.php:114
207
  msgid "Read more."
208
  msgstr ""
209
 
210
- #: src/Tribe/Admin/Notice/Plugin_Download.php:115
211
  msgid ""
212
  "There’s a new version of %1$s available, but your license is expired. You’ll "
213
  "need to renew your license to get access to the latest version. If you plan "
@@ -1641,6 +1640,10 @@ msgstr ""
1641
  msgid "Wyoming"
1642
  msgstr ""
1643
 
 
 
 
 
1644
  #: src/Tribe/Log/Admin.php:133
1645
  msgctxt "log selector"
1646
  msgid "None currently available"
@@ -1659,23 +1662,23 @@ msgstr ""
1659
  msgid "Null logger (will log nothing)"
1660
  msgstr ""
1661
 
1662
- #: src/Tribe/Log.php:286
1663
  msgid "Cannot set %s as the current logging engine"
1664
  msgstr ""
1665
 
1666
- #: src/Tribe/Log.php:385
1667
  msgid "Disabled"
1668
  msgstr ""
1669
 
1670
- #: src/Tribe/Log.php:386
1671
  msgid "Only errors"
1672
  msgstr ""
1673
 
1674
- #: src/Tribe/Log.php:387
1675
  msgid "Warnings and errors"
1676
  msgstr ""
1677
 
1678
- #: src/Tribe/Log.php:388
1679
  msgid "Full debug (all events)"
1680
  msgstr ""
1681
 
@@ -1827,39 +1830,39 @@ msgstr ""
1827
  msgid " (opens in a new window)"
1828
  msgstr ""
1829
 
1830
- #: src/Tribe/PUE/Checker.php:987
1831
  msgid "Please refresh the page and try your request again."
1832
  msgstr ""
1833
 
1834
- #: src/Tribe/PUE/Checker.php:1008
1835
  msgid ""
1836
  "There is an update for %s. You'll need to %scheck your license%s to have "
1837
  "access to updates, downloads, and support."
1838
  msgstr ""
1839
 
1840
- #: src/Tribe/PUE/Checker.php:1065
1841
  msgid ""
1842
  "There is an update for %s. %sRenew your license%s to get access to bug "
1843
  "fixes, security updates, and new features."
1844
  msgstr ""
1845
 
1846
- #: src/Tribe/PUE/Checker.php:1095
1847
  msgid "Update now to version %s."
1848
  msgstr ""
1849
 
1850
- #: src/Tribe/PUE/Checker.php:1106
1851
  msgid "There is a new version of %1$s available. %2$s"
1852
  msgstr ""
1853
 
1854
- #: src/Tribe/PUE/Checker.php:1686
1855
  msgid "A valid license has been entered by your network administrator."
1856
  msgstr ""
1857
 
1858
- #: src/Tribe/PUE/Checker.php:1687
1859
  msgid "No license entered. Consult your network administrator."
1860
  msgstr ""
1861
 
1862
- #: src/Tribe/PUE/Checker.php:1688
1863
  msgid "Expired license. Consult your network administrator."
1864
  msgstr ""
1865
 
@@ -2048,39 +2051,39 @@ msgstr ""
2048
  msgid "Events Help"
2049
  msgstr ""
2050
 
2051
- #: src/Tribe/Settings.php:349
2052
  msgid "%s Settings"
2053
  msgstr ""
2054
 
2055
- #: src/Tribe/Settings.php:363
2056
  msgid "You've requested a non-existent tab."
2057
  msgstr ""
2058
 
2059
- #: src/Tribe/Settings.php:371
2060
  msgid "Save Changes"
2061
  msgstr ""
2062
 
2063
- #: src/Tribe/Settings.php:419
2064
  msgid "You don't have permission to do that."
2065
  msgstr ""
2066
 
2067
- #: src/Tribe/Settings.php:425
2068
  msgid "The request was sent insecurely."
2069
  msgstr ""
2070
 
2071
- #: src/Tribe/Settings.php:431
2072
  msgid "The request wasn't sent from this tab."
2073
  msgstr ""
2074
 
2075
- #: src/Tribe/Settings.php:608
2076
  msgid "Your form had the following errors:"
2077
  msgstr ""
2078
 
2079
- #: src/Tribe/Settings.php:618
2080
  msgid "None of your settings were saved. Please try again."
2081
  msgstr ""
2082
 
2083
- #: src/Tribe/Settings.php:619
2084
  msgid ""
2085
  "The above setting was not saved. Other settings were successfully saved."
2086
  msgid_plural ""
@@ -2088,28 +2091,28 @@ msgid_plural ""
2088
  msgstr[0] ""
2089
  msgstr[1] ""
2090
 
2091
- #: src/Tribe/Settings.php:641
2092
  msgid "Settings saved."
2093
  msgstr ""
2094
 
2095
- #: src/Tribe/Settings_Manager.php:54
2096
  msgid "General"
2097
  msgstr ""
2098
 
2099
- #: src/Tribe/Settings_Manager.php:55
2100
  msgid "Display"
2101
  msgstr ""
2102
 
2103
- #: src/Tribe/Settings_Manager.php:219
2104
  msgid "Network"
2105
  msgstr ""
2106
 
2107
- #: src/Tribe/Settings_Manager.php:253
2108
  #: src/admin-views/tribe-options-licenses.php:57
2109
  msgid "Licenses"
2110
  msgstr ""
2111
 
2112
- #: src/Tribe/Settings_Manager.php:283
2113
  msgid "Help"
2114
  msgstr ""
2115
 
@@ -2204,93 +2207,93 @@ msgctxt "non-existant function name passed for field validation"
2204
  msgid "with function name:"
2205
  msgstr ""
2206
 
2207
- #: src/Tribe/Validate.php:120 src/Tribe/Validate.php:136
2208
  msgid "%s must contain numbers and letters only"
2209
  msgstr ""
2210
 
2211
- #: src/Tribe/Validate.php:152
2212
  msgid "%s must contain numbers, letters and dots only"
2213
  msgstr ""
2214
 
2215
- #: src/Tribe/Validate.php:168
2216
  msgid "%s must contain numbers, letters, dashes and undescores only"
2217
  msgstr ""
2218
 
2219
- #: src/Tribe/Validate.php:184
2220
  msgid "%s must not be empty"
2221
  msgstr ""
2222
 
2223
- #: src/Tribe/Validate.php:200 src/Tribe/Validate.php:228
2224
  msgid "%s must be a positive number."
2225
  msgstr ""
2226
 
2227
- #: src/Tribe/Validate.php:214
2228
  msgid "%s must be a positive number or percent."
2229
  msgstr ""
2230
 
2231
- #: src/Tribe/Validate.php:248
2232
  msgid "%s must be a whole number."
2233
  msgstr ""
2234
 
2235
- #: src/Tribe/Validate.php:267
2236
  msgid "%s must be a valid slug (numbers, letters, dashes, and underscores)."
2237
  msgstr ""
2238
 
2239
- #: src/Tribe/Validate.php:282
2240
- msgid "%s must be a valid absolute URL."
2241
  msgstr ""
2242
 
2243
- #: src/Tribe/Validate.php:298 src/Tribe/Validate.php:310
2244
- #: src/Tribe/Validate.php:323 src/Tribe/Validate.php:345
2245
  msgid "%s must have a value that's part of its options."
2246
  msgstr ""
2247
 
2248
- #: src/Tribe/Validate.php:359
2249
  msgid ""
2250
  "Comparison validation failed because no comparison value was provided, for "
2251
  "field %s"
2252
  msgstr ""
2253
 
2254
- #: src/Tribe/Validate.php:366
2255
  msgid "%s cannot be the same as %s."
2256
  msgstr ""
2257
 
2258
- #: src/Tribe/Validate.php:368
2259
  msgid "%s cannot be a duplicate"
2260
  msgstr ""
2261
 
2262
- #: src/Tribe/Validate.php:384
2263
  msgid "%s must be a number or percentage."
2264
  msgstr ""
2265
 
2266
- #: src/Tribe/Validate.php:438
2267
  msgid "%s must be a number between 0 and 21."
2268
  msgstr ""
2269
 
2270
- #: src/Tribe/Validate.php:454
2271
  msgid ""
2272
  "%s must consist of letters, numbers, dashes, apostrophes, and spaces only."
2273
  msgstr ""
2274
 
2275
- #: src/Tribe/Validate.php:470
2276
  msgid "%s must consist of letters, spaces, apostrophes, and dashes."
2277
  msgstr ""
2278
 
2279
- #: src/Tribe/Validate.php:484
2280
  msgid "%s must consist of 5 numbers."
2281
  msgstr ""
2282
 
2283
- #: src/Tribe/Validate.php:498
2284
  msgid "%s must be a phone number."
2285
  msgstr ""
2286
 
2287
- #: src/Tribe/Validate.php:514
2288
  msgid ""
2289
  "Country List must be formatted as one country per line in the following "
2290
  "format: <br>US, United States <br> UK, United Kingdom."
2291
  msgstr ""
2292
 
2293
- #: src/Tribe/Validate.php:545
2294
  msgid "%s must be an email address."
2295
  msgstr ""
2296
 
@@ -2406,7 +2409,7 @@ msgstr ""
2406
  msgid "Debug mode"
2407
  msgstr ""
2408
 
2409
- #: src/admin-views/tribe-options-general.php:59
2410
  msgid ""
2411
  "Enable this option to log debug information. By default this will log to "
2412
  "your server PHP error log. If you'd like to see the log messages in your "
2
  # This file is distributed under the same license as the Tribe Common package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Tribe Common 4.9.17\n"
6
  "Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
7
+ "POT-Creation-Date: 2019-09-08 14:53:37+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2019-09-08 14:53\n"
12
  "Last-Translator: \n"
13
  "Language-Team: \n"
14
 
173
  msgstr ""
174
 
175
  #: src/Tribe/Admin/Notice/Php_Version.php:59
176
+ #: src/Tribe/Admin/Notice/Plugin_Download.php:149
177
  msgctxt "separator used in a list of items"
178
  msgid ", "
179
  msgstr ""
180
 
181
  #: src/Tribe/Admin/Notice/Php_Version.php:60
182
+ #: src/Tribe/Admin/Notice/Plugin_Download.php:150
183
  msgctxt "the final separator in a list of two or more items"
184
  msgid " and "
185
  msgstr ""
198
  "recommend using PHP 5.6 or above."
199
  msgstr ""
200
 
201
+ #: src/Tribe/Admin/Notice/Plugin_Download.php:122
202
+ msgid "To begin using %2$s, please install and activate %3$s."
 
203
  msgstr ""
204
 
205
+ #: src/Tribe/Admin/Notice/Plugin_Download.php:124
206
  msgid "Read more."
207
  msgstr ""
208
 
209
+ #: src/Tribe/Admin/Notice/Plugin_Download.php:125
210
  msgid ""
211
  "There’s a new version of %1$s available, but your license is expired. You’ll "
212
  "need to renew your license to get access to the latest version. If you plan "
1640
  msgid "Wyoming"
1641
  msgstr ""
1642
 
1643
+ #: src/Tribe/Log/Action_Logger.php:39
1644
+ msgid "Action-based Logger"
1645
+ msgstr ""
1646
+
1647
  #: src/Tribe/Log/Admin.php:133
1648
  msgctxt "log selector"
1649
  msgid "None currently available"
1662
  msgid "Null logger (will log nothing)"
1663
  msgstr ""
1664
 
1665
+ #: src/Tribe/Log.php:289
1666
  msgid "Cannot set %s as the current logging engine"
1667
  msgstr ""
1668
 
1669
+ #: src/Tribe/Log.php:388
1670
  msgid "Disabled"
1671
  msgstr ""
1672
 
1673
+ #: src/Tribe/Log.php:389
1674
  msgid "Only errors"
1675
  msgstr ""
1676
 
1677
+ #: src/Tribe/Log.php:390
1678
  msgid "Warnings and errors"
1679
  msgstr ""
1680
 
1681
+ #: src/Tribe/Log.php:391
1682
  msgid "Full debug (all events)"
1683
  msgstr ""
1684
 
1830
  msgid " (opens in a new window)"
1831
  msgstr ""
1832
 
1833
+ #: src/Tribe/PUE/Checker.php:989
1834
  msgid "Please refresh the page and try your request again."
1835
  msgstr ""
1836
 
1837
+ #: src/Tribe/PUE/Checker.php:1009
1838
  msgid ""
1839
  "There is an update for %s. You'll need to %scheck your license%s to have "
1840
  "access to updates, downloads, and support."
1841
  msgstr ""
1842
 
1843
+ #: src/Tribe/PUE/Checker.php:1066
1844
  msgid ""
1845
  "There is an update for %s. %sRenew your license%s to get access to bug "
1846
  "fixes, security updates, and new features."
1847
  msgstr ""
1848
 
1849
+ #: src/Tribe/PUE/Checker.php:1096
1850
  msgid "Update now to version %s."
1851
  msgstr ""
1852
 
1853
+ #: src/Tribe/PUE/Checker.php:1107
1854
  msgid "There is a new version of %1$s available. %2$s"
1855
  msgstr ""
1856
 
1857
+ #: src/Tribe/PUE/Checker.php:1688
1858
  msgid "A valid license has been entered by your network administrator."
1859
  msgstr ""
1860
 
1861
+ #: src/Tribe/PUE/Checker.php:1689
1862
  msgid "No license entered. Consult your network administrator."
1863
  msgstr ""
1864
 
1865
+ #: src/Tribe/PUE/Checker.php:1690
1866
  msgid "Expired license. Consult your network administrator."
1867
  msgstr ""
1868
 
2051
  msgid "Events Help"
2052
  msgstr ""
2053
 
2054
+ #: src/Tribe/Settings.php:355
2055
  msgid "%s Settings"
2056
  msgstr ""
2057
 
2058
+ #: src/Tribe/Settings.php:369
2059
  msgid "You've requested a non-existent tab."
2060
  msgstr ""
2061
 
2062
+ #: src/Tribe/Settings.php:377
2063
  msgid "Save Changes"
2064
  msgstr ""
2065
 
2066
+ #: src/Tribe/Settings.php:425
2067
  msgid "You don't have permission to do that."
2068
  msgstr ""
2069
 
2070
+ #: src/Tribe/Settings.php:431
2071
  msgid "The request was sent insecurely."
2072
  msgstr ""
2073
 
2074
+ #: src/Tribe/Settings.php:437
2075
  msgid "The request wasn't sent from this tab."
2076
  msgstr ""
2077
 
2078
+ #: src/Tribe/Settings.php:614
2079
  msgid "Your form had the following errors:"
2080
  msgstr ""
2081
 
2082
+ #: src/Tribe/Settings.php:624
2083
  msgid "None of your settings were saved. Please try again."
2084
  msgstr ""
2085
 
2086
+ #: src/Tribe/Settings.php:625
2087
  msgid ""
2088
  "The above setting was not saved. Other settings were successfully saved."
2089
  msgid_plural ""
2091
  msgstr[0] ""
2092
  msgstr[1] ""
2093
 
2094
+ #: src/Tribe/Settings.php:647
2095
  msgid "Settings saved."
2096
  msgstr ""
2097
 
2098
+ #: src/Tribe/Settings_Manager.php:57
2099
  msgid "General"
2100
  msgstr ""
2101
 
2102
+ #: src/Tribe/Settings_Manager.php:58
2103
  msgid "Display"
2104
  msgstr ""
2105
 
2106
+ #: src/Tribe/Settings_Manager.php:222
2107
  msgid "Network"
2108
  msgstr ""
2109
 
2110
+ #: src/Tribe/Settings_Manager.php:256
2111
  #: src/admin-views/tribe-options-licenses.php:57
2112
  msgid "Licenses"
2113
  msgstr ""
2114
 
2115
+ #: src/Tribe/Settings_Manager.php:286
2116
  msgid "Help"
2117
  msgstr ""
2118
 
2207
  msgid "with function name:"
2208
  msgstr ""
2209
 
2210
+ #: src/Tribe/Validate.php:118 src/Tribe/Validate.php:132
2211
  msgid "%s must contain numbers and letters only"
2212
  msgstr ""
2213
 
2214
+ #: src/Tribe/Validate.php:146
2215
  msgid "%s must contain numbers, letters and dots only"
2216
  msgstr ""
2217
 
2218
+ #: src/Tribe/Validate.php:160
2219
  msgid "%s must contain numbers, letters, dashes and undescores only"
2220
  msgstr ""
2221
 
2222
+ #: src/Tribe/Validate.php:174
2223
  msgid "%s must not be empty"
2224
  msgstr ""
2225
 
2226
+ #: src/Tribe/Validate.php:188 src/Tribe/Validate.php:212
2227
  msgid "%s must be a positive number."
2228
  msgstr ""
2229
 
2230
+ #: src/Tribe/Validate.php:200
2231
  msgid "%s must be a positive number or percent."
2232
  msgstr ""
2233
 
2234
+ #: src/Tribe/Validate.php:230
2235
  msgid "%s must be a whole number."
2236
  msgstr ""
2237
 
2238
+ #: src/Tribe/Validate.php:247
2239
  msgid "%s must be a valid slug (numbers, letters, dashes, and underscores)."
2240
  msgstr ""
2241
 
2242
+ #: src/Tribe/Validate.php:260
2243
+ msgid "%s must be a valid URL."
2244
  msgstr ""
2245
 
2246
+ #: src/Tribe/Validate.php:274 src/Tribe/Validate.php:286
2247
+ #: src/Tribe/Validate.php:299 src/Tribe/Validate.php:319
2248
  msgid "%s must have a value that's part of its options."
2249
  msgstr ""
2250
 
2251
+ #: src/Tribe/Validate.php:331
2252
  msgid ""
2253
  "Comparison validation failed because no comparison value was provided, for "
2254
  "field %s"
2255
  msgstr ""
2256
 
2257
+ #: src/Tribe/Validate.php:338
2258
  msgid "%s cannot be the same as %s."
2259
  msgstr ""
2260
 
2261
+ #: src/Tribe/Validate.php:340
2262
  msgid "%s cannot be a duplicate"
2263
  msgstr ""
2264
 
2265
+ #: src/Tribe/Validate.php:354
2266
  msgid "%s must be a number or percentage."
2267
  msgstr ""
2268
 
2269
+ #: src/Tribe/Validate.php:398
2270
  msgid "%s must be a number between 0 and 21."
2271
  msgstr ""
2272
 
2273
+ #: src/Tribe/Validate.php:412
2274
  msgid ""
2275
  "%s must consist of letters, numbers, dashes, apostrophes, and spaces only."
2276
  msgstr ""
2277
 
2278
+ #: src/Tribe/Validate.php:426
2279
  msgid "%s must consist of letters, spaces, apostrophes, and dashes."
2280
  msgstr ""
2281
 
2282
+ #: src/Tribe/Validate.php:438
2283
  msgid "%s must consist of 5 numbers."
2284
  msgstr ""
2285
 
2286
+ #: src/Tribe/Validate.php:450
2287
  msgid "%s must be a phone number."
2288
  msgstr ""
2289
 
2290
+ #: src/Tribe/Validate.php:464
2291
  msgid ""
2292
  "Country List must be formatted as one country per line in the following "
2293
  "format: <br>US, United States <br> UK, United Kingdom."
2294
  msgstr ""
2295
 
2296
+ #: src/Tribe/Validate.php:493
2297
  msgid "%s must be an email address."
2298
  msgstr ""
2299
 
2409
  msgid "Debug mode"
2410
  msgstr ""
2411
 
2412
+ #: src/admin-views/tribe-options-general.php:55
2413
  msgid ""
2414
  "Enable this option to log debug information. By default this will log to "
2415
  "your server PHP error log. If you'd like to see the log messages in your "
common/src/Tribe/Abstract_Plugin_Register.php CHANGED
@@ -17,23 +17,42 @@ abstract class Tribe__Abstract_Plugin_Register {
17
  * @var string
18
  */
19
  protected $base_dir;
 
 
 
 
20
  protected $main_class;
 
 
 
 
21
  protected $version;
22
- protected $dependencies = array(
23
- 'parent-dependencies' => array(),
24
- 'co-dependencies' => array(),
25
- 'addon-dependencies' => array(),
26
- );
 
 
 
 
 
 
 
 
 
 
 
27
 
28
  /**
29
  * Registers a plugin with dependencies
30
  */
31
  public function register_plugin() {
32
- return tribe_register_plugin(
33
  $this->base_dir,
34
  $this->main_class,
35
  $this->version,
36
- array(),
37
  $this->dependencies
38
  );
39
  }
@@ -43,8 +62,11 @@ abstract class Tribe__Abstract_Plugin_Register {
43
  *
44
  * This is basically an aliased function - register_plugins, upon
45
  * second calling, returns whether or not a plugin should load.
 
 
 
46
  */
47
  public function has_valid_dependencies() {
48
- return $this->register_plugin();
49
  }
50
  }
17
  * @var string
18
  */
19
  protected $base_dir;
20
+
21
+ /**
22
+ * @var string
23
+ */
24
  protected $main_class;
25
+
26
+ /**
27
+ * @var string
28
+ */
29
  protected $version;
30
+
31
+ /**
32
+ * @since 4.9.17
33
+ *
34
+ * @var array
35
+ */
36
+ protected $classes_req = [];
37
+
38
+ /**
39
+ * @var array
40
+ */
41
+ protected $dependencies = [
42
+ 'parent-dependencies' => [],
43
+ 'co-dependencies' => [],
44
+ 'addon-dependencies' => [],
45
+ ];
46
 
47
  /**
48
  * Registers a plugin with dependencies
49
  */
50
  public function register_plugin() {
51
+ tribe_register_plugin(
52
  $this->base_dir,
53
  $this->main_class,
54
  $this->version,
55
+ $this->classes_req,
56
  $this->dependencies
57
  );
58
  }
62
  *
63
  * This is basically an aliased function - register_plugins, upon
64
  * second calling, returns whether or not a plugin should load.
65
+ *
66
+ * @deprecated since 4.9.17 It is unused by any Tribe plugins and returned void.
67
+ * @todo remove in 4.11
68
  */
69
  public function has_valid_dependencies() {
70
+ _deprecated_function( __METHOD__, '4.9.17' );
71
  }
72
  }
common/src/Tribe/Admin/Notice/Plugin_Download.php CHANGED
@@ -27,6 +27,7 @@ class Tribe__Admin__Notice__Plugin_Download {
27
  * @since 4.8.3 Method introduced.
28
  * @since 4.9 Added $version and $addon parameters.
29
  * @since 4.9.12 Add $has_pue_notice param
 
30
  *
31
  * @param string $name Name of the required plugin
32
  * @param null $thickbox_url Download or purchase URL for plugin from within /wp-admin/ thickbox
@@ -36,18 +37,22 @@ class Tribe__Admin__Notice__Plugin_Download {
36
  * @param bool $has_pue_notice Indicates that we need to change the messaging due to expired key.
37
  */
38
  public function add_required_plugin( $name, $thickbox_url = null, $is_active = null, $version = null, $addon = false, $has_pue_notice = false ) {
39
- $this->plugins_required[ $name ] = array(
40
  'name' => $name,
41
  'thickbox_url' => $thickbox_url,
42
  'is_active' => $is_active,
43
- 'version' => $version,
44
  'addon' => $addon,
45
  'has_pue_notice' => $has_pue_notice,
46
- );
47
  }
48
 
49
  /**
50
  * Echoes the admin notice, attach to admin_notices
 
 
 
 
51
  */
52
  public function show_inactive_plugins_alert() {
53
  if ( ! current_user_can( 'activate_plugins' ) ) {
@@ -61,6 +66,11 @@ class Tribe__Admin__Notice__Plugin_Download {
61
  return;
62
  }
63
 
 
 
 
 
 
64
  $has_pue_notices = false;
65
 
66
  foreach ( $this->plugins_required as $req_plugin ) {
@@ -109,7 +119,7 @@ class Tribe__Admin__Notice__Plugin_Download {
109
  $plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $plugin_name ), $allowed_html );
110
  $req_plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $req_plugins ), $allowed_html );
111
 
112
- $notice_html_content = '<p>' . esc_html__( 'To begin using %2$s, please install and activate the latest version of %3$s.', 'tribe-common' ) . '</p>';
113
 
114
  $read_more_link = '<a href="http://m.tri.be/1aev" target="_blank">' . esc_html__( 'Read more.', 'tribe-common' ) . '</a>';
115
  $pue_notice_text = esc_html__( 'There’s a new version of %1$s available, but your license is expired. You’ll need to renew your license to get access to the latest version. If you plan to continue using your current version of the plugin(s), be sure to use a compatible version of The Events Calendar. %2$s', 'tribe-common' );
@@ -127,7 +137,9 @@ class Tribe__Admin__Notice__Plugin_Download {
127
  }
128
 
129
  /**
130
- * Implodes a list items using 'and' as the final separator and a comma everywhere else
 
 
131
  *
132
  * @param array $items List of items to implode
133
  *
@@ -139,10 +151,16 @@ class Tribe__Admin__Notice__Plugin_Download {
139
  $output = $last_item = array_pop( $items );
140
 
141
  if ( $items ) {
142
- $output = implode( $separator, $items ) . $conjunction . $last_item;
 
 
 
 
 
 
143
  }
144
 
145
  return $output;
146
  }
147
 
148
- }
27
  * @since 4.8.3 Method introduced.
28
  * @since 4.9 Added $version and $addon parameters.
29
  * @since 4.9.12 Add $has_pue_notice param
30
+ * @since 4.9.17 Appended "+" to all version numbers to indicate "or any later version".
31
  *
32
  * @param string $name Name of the required plugin
33
  * @param null $thickbox_url Download or purchase URL for plugin from within /wp-admin/ thickbox
37
  * @param bool $has_pue_notice Indicates that we need to change the messaging due to expired key.
38
  */
39
  public function add_required_plugin( $name, $thickbox_url = null, $is_active = null, $version = null, $addon = false, $has_pue_notice = false ) {
40
+ $this->plugins_required[ $name ] = [
41
  'name' => $name,
42
  'thickbox_url' => $thickbox_url,
43
  'is_active' => $is_active,
44
+ 'version' => $version ? $version . '+' : null,
45
  'addon' => $addon,
46
  'has_pue_notice' => $has_pue_notice,
47
+ ];
48
  }
49
 
50
  /**
51
  * Echoes the admin notice, attach to admin_notices
52
+ *
53
+ * @see \Tribe__Admin__Notice__Plugin_Download::add_required_plugin()
54
+ *
55
+ * @since 4.9.17 Altered the notice to remove "latest version" verbiage since "+" is now added to the version numbers.
56
  */
57
  public function show_inactive_plugins_alert() {
58
  if ( ! current_user_can( 'activate_plugins' ) ) {
66
  return;
67
  }
68
 
69
+ // Make sure Thickbox is available and consistent appearance regardless of which admin page we're on
70
+ wp_enqueue_style( 'plugin-install' );
71
+ wp_enqueue_script( 'plugin-install' );
72
+ add_thickbox();
73
+
74
  $has_pue_notices = false;
75
 
76
  foreach ( $this->plugins_required as $req_plugin ) {
119
  $plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $plugin_name ), $allowed_html );
120
  $req_plugin_names_clean_text = wp_kses( $this->implode_with_grammar( $req_plugins ), $allowed_html );
121
 
122
+ $notice_html_content = '<p>' . esc_html__( 'To begin using %2$s, please install and activate %3$s.', 'tribe-common' ) . '</p>';
123
 
124
  $read_more_link = '<a href="http://m.tri.be/1aev" target="_blank">' . esc_html__( 'Read more.', 'tribe-common' ) . '</a>';
125
  $pue_notice_text = esc_html__( 'There’s a new version of %1$s available, but your license is expired. You’ll need to renew your license to get access to the latest version. If you plan to continue using your current version of the plugin(s), be sure to use a compatible version of The Events Calendar. %2$s', 'tribe-common' );
137
  }
138
 
139
  /**
140
+ * Implodes a list of items with proper grammar.
141
+ *
142
+ * If only 1 item, no grammar. If 2 items, just conjunction. If 3+ items, commas with conjunction.
143
  *
144
  * @param array $items List of items to implode
145
  *
151
  $output = $last_item = array_pop( $items );
152
 
153
  if ( $items ) {
154
+ $output = implode( $separator, $items );
155
+
156
+ if ( 1 < count( $items ) ) {
157
+ $output .= $separator;
158
+ }
159
+
160
+ $output .= $conjunction . $last_item;
161
  }
162
 
163
  return $output;
164
  }
165
 
166
+ }
common/src/Tribe/Assets.php CHANGED
@@ -106,13 +106,11 @@ class Tribe__Assets {
106
  /**
107
  * Enqueues registered assets based on their groups.
108
  *
109
- * @since 4.7
110
  *
111
- * @uses self::enqueue
112
  *
113
- * @param string|array $groups Which groups will be enqueued.
114
- *
115
- * @return void
116
  */
117
  public function enqueue_group( $groups ) {
118
  $assets = $this->get();
@@ -123,9 +121,9 @@ class Tribe__Assets {
123
  continue;
124
  }
125
 
126
- $instersect = array_intersect( (array) $groups, $asset->groups );
127
 
128
- if ( empty( $instersect ) ) {
129
  continue;
130
  }
131
 
@@ -177,7 +175,7 @@ class Tribe__Assets {
177
  $enqueue = empty( $asset->conditionals );
178
 
179
  if ( ! $enqueue ) {
180
- // Reset Enqeue
181
  $enqueue = [];
182
 
183
  // Which is the operator?
@@ -338,30 +336,33 @@ class Tribe__Assets {
338
  *
339
  * @since 4.3
340
  *
341
- * @param object $origin The main Object for the plugin you are enqueueing the script/style for.
342
- * @param string $slug Slug to save the asset.
343
- * @param string $file Which file will be loaded, either CSS or JS.
344
- * @param array $deps Dependencies.
345
- * @param string|null $action (Optional) A WordPress Action, if set needs to happen after: `wp_enqueue_scripts`, `admin_enqueue_scripts`, or `login_enqueue_scripts`.
346
- * @param string|array $arguments {
 
347
  * Optional. Array or string of parameters for this asset.
348
  *
349
- * @type string|null $action Which WordPress action this asset will be loaded on.
350
- * @type int $priority Priority in which this asset will be loaded on the WordPress action.
351
- * @type string $file The relative path to the File that will be enqueued, uses the $origin to get the full path.
352
- * @type string $type Asset Type, `js` or `css`.
353
- * @type array $deps An array of other asset as dependencies.
354
- * @type string $version Version number, used for cache expiring.
355
- * @type string $media Used only for CSS, when to load the file.
356
- * @type bool $in_footer A boolean determining if the javascript should be loaded on the footer.
357
- * @type array|object $localize Variables needed on the JavaScript side {
358
- * @type string $name Name of the JS variable.
359
- * @type string|array $data Contents of the JS variable.
 
 
360
  * }
361
  * @type callable[] $conditionals An callable method or an array of them, that will determine if the asset is loaded or not.
362
  * }
363
  *
364
- * @return string
365
  */
366
  public function register( $origin, $slug, $file, $deps = [], $action = null, $arguments = [] ) {
367
  // Prevent weird stuff here.
@@ -443,7 +444,7 @@ class Tribe__Assets {
443
  }
444
 
445
  // If asset type is wrong don't register.
446
- if ( ! in_array( $asset->type, [ 'js', 'css' ] ) ) {
447
  return false;
448
  }
449
 
@@ -578,9 +579,10 @@ class Tribe__Assets {
578
  *
579
  * @since 4.3
580
  *
581
- * @param string $slug Slug of the Asset.
582
  *
583
- * @return bool
 
584
  */
585
  public function get( $slug = null ) {
586
  uasort( $this->assets, [ $this, 'order_by_priority' ] );
@@ -604,8 +606,8 @@ class Tribe__Assets {
604
  *
605
  * @since 4.7
606
  *
607
- * @param object $a First Subject to compare.
608
- * @param object $b Second subject to compare.
609
  *
610
  * @return boolean
611
  */
106
  /**
107
  * Enqueues registered assets based on their groups.
108
  *
109
+ * @since 4.7
110
  *
111
+ * @uses Tribe__Assets::enqueue()
112
  *
113
+ * @param string|array $groups Which groups will be enqueued.
 
 
114
  */
115
  public function enqueue_group( $groups ) {
116
  $assets = $this->get();
121
  continue;
122
  }
123
 
124
+ $intersect = array_intersect( (array) $groups, $asset->groups );
125
 
126
+ if ( empty( $intersect ) ) {
127
  continue;
128
  }
129
 
175
  $enqueue = empty( $asset->conditionals );
176
 
177
  if ( ! $enqueue ) {
178
+ // Reset Enqueue.
179
  $enqueue = [];
180
 
181
  // Which is the operator?
336
  *
337
  * @since 4.3
338
  *
339
+ * @param object $origin The main object for the plugin you are enqueueing the asset for.
340
+ * @param string $slug Slug to save the asset - passes through `sanitize_title_with_dashes()`.
341
+ * @param string $file The asset file to load (CSS or JS), including non-minified file extension.
342
+ * @param array $deps The list of dependencies.
343
+ * @param string|array|null $action The WordPress action(s) to enqueue on, such as `wp_enqueue_scripts`,
344
+ * `admin_enqueue_scripts`, or `login_enqueue_scripts`.
345
+ * @param string|array $arguments {
346
  * Optional. Array or string of parameters for this asset.
347
  *
348
+ * @type array|string|null $action The WordPress action(s) this asset will be enqueued on.
349
+ * @type int $priority Priority in which this asset will be loaded on the WordPress action.
350
+ * @type string $file The relative path to the File that will be enqueued, uses the $origin to get the full path.
351
+ * @type string $type Asset Type, `js` or `css`.
352
+ * @type array $deps An array of other asset as dependencies.
353
+ * @type string $version Version number, used for cache expiring.
354
+ * @type string $media Used only for CSS, when to load the file.
355
+ * @type bool $in_footer A boolean determining if the javascript should be loaded on the footer.
356
+ * @type array|object $localize {
357
+ * Variables needed on the JavaScript side.
358
+ *
359
+ * @type string $name Name of the JS variable.
360
+ * @type string|array $data Contents of the JS variable.
361
  * }
362
  * @type callable[] $conditionals An callable method or an array of them, that will determine if the asset is loaded or not.
363
  * }
364
  *
365
+ * @return object|false The registered object or false on error.
366
  */
367
  public function register( $origin, $slug, $file, $deps = [], $action = null, $arguments = [] ) {
368
  // Prevent weird stuff here.
444
  }
445
 
446
  // If asset type is wrong don't register.
447
+ if ( ! in_array( $asset->type, [ 'js', 'css' ], true ) ) {
448
  return false;
449
  }
450
 
579
  *
580
  * @since 4.3
581
  *
582
+ * @param string $slug Slug of the Asset.
583
  *
584
+ * @return array|object|null Array of asset objects, single asset object, or null if looking for a single asset but
585
+ * it was not in the array of objects.
586
  */
587
  public function get( $slug = null ) {
588
  uasort( $this->assets, [ $this, 'order_by_priority' ] );
606
  *
607
  * @since 4.7
608
  *
609
+ * @param object $a First Subject to compare.
610
+ * @param object $b Second subject to compare.
611
  *
612
  * @return boolean
613
  */
common/src/Tribe/Dependency.php CHANGED
@@ -4,7 +4,7 @@ defined( 'WPINC' ) or die;
4
 
5
  if ( ! class_exists( 'Tribe__Dependency' ) ) {
6
  /**
7
- * Tracks which tribe plugins are currently activated
8
  */
9
  class Tribe__Dependency {
10
 
@@ -44,13 +44,12 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
44
  *
45
  * @since 4.9
46
  *
47
- * @param string $main_class Main/base class for this plugin
48
- * @param null|string $version Version number of plugin
49
- * @param null|string $path Path to the main plugin/bootstrap file
50
- * @param array $dependencies An array of dependencies for a plugin
51
  */
52
  public function add_registered_plugin( $main_class, $version = null, $path = null, $dependencies = array() ) {
53
-
54
  $plugin = array(
55
  'class' => $main_class,
56
  'version' => $version,
@@ -63,7 +62,6 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
63
  if ( $path ) {
64
  $this->admin_messages[ $main_class ] = new Tribe__Admin__Notice__Plugin_Download( $path );
65
  }
66
-
67
  }
68
 
69
  /**
@@ -85,7 +83,6 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
85
  * @param string $path Path to the main plugin/bootstrap file
86
  */
87
  public function add_active_plugin( $main_class, $version = null, $path = null ) {
88
-
89
  $plugin = array(
90
  'class' => $main_class,
91
  'version' => $version,
@@ -231,7 +228,6 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
231
  * @return bool
232
  */
233
  public function is_plugin_version( $main_class, $version, $compare = '>=' ) {
234
-
235
  //active plugin check to see if the correct version is active
236
  if ( ! $this->is_plugin_active( $main_class ) ) {
237
  return false;
@@ -254,7 +250,6 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
254
  * @return bool
255
  */
256
  public function is_plugin_version_registered( $main_class, $version, $compare = '>=' ) {
257
-
258
  //registered plugin check if addon as it tests if it might load
259
  if ( ! $this->is_plugin_registered( $main_class ) ) {
260
  return false;
@@ -273,7 +268,6 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
273
  * @return bool
274
  */
275
  public function has_requisite_plugins( $plugins_required = array() ) {
276
-
277
  foreach ( $plugins_required as $class => $version ) {
278
  // Return false if the plugin is not set or is a lesser version
279
  if ( ! $this->is_plugin_active( $class ) ) {
@@ -302,9 +296,8 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
302
  }
303
 
304
  /**
305
- * Gets all dependencies or single class requirements
306
- * if parent, co, add does not exist use array as is
307
- * if they do exist check each one in turn
308
  *
309
  * @since 4.9
310
  *
@@ -315,18 +308,18 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
315
  * @return bool returns false if any dependency is invalid
316
  */
317
  public function has_valid_dependencies( $plugin, $dependencies = array(), $addon = false ) {
318
-
319
  if ( empty( $dependencies ) ) {
320
  return true;
321
  }
322
 
323
  $failed_dependency = 0;
324
- $tribe_plugins = new Tribe__Plugins();
 
325
 
326
  foreach ( $dependencies as $class => $version ) {
327
 
328
  // if no class for add-on
329
- $checked_plugin = $this->get_registered_plugin( $class );
330
  if ( $addon && empty( $checked_plugin ) ) {
331
  continue;
332
  }
@@ -336,15 +329,6 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
336
  continue;
337
  }
338
 
339
- if ( $class === $checked_plugin['class'] ) {
340
- /*
341
- * If the required plugin class is the same we're checking we clear the version to keep the message
342
- * clear and redirect users to the latest version download link in place of providing a wrong
343
- * version number.
344
- */
345
- $version = '';
346
- }
347
-
348
  $dependent_plugin = $tribe_plugins->get_plugin_by_class( $class );
349
 
350
  $pue = $this->get_pue_from_class( $dependent_plugin['class'] );
@@ -529,7 +513,6 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
529
  }
530
 
531
  return false;
532
-
533
  }
534
 
535
  /**
@@ -559,7 +542,7 @@ if ( ! class_exists( 'Tribe__Dependency' ) ) {
559
  /**
560
  * Static Singleton Factory Method
561
  *
562
- * @deprecated 4.9.12 We shouldn't be handlign singletons internally.
563
  *
564
  * @return self
565
  */
4
 
5
  if ( ! class_exists( 'Tribe__Dependency' ) ) {
6
  /**
7
+ * Tracks which Tribe (or related) plugins are registered, activated, or requirements satisfied.
8
  */
9
  class Tribe__Dependency {
10
 
44
  *
45
  * @since 4.9
46
  *
47
+ * @param string $main_class Main/base class for this plugin
48
+ * @param null|string $version Version number of plugin
49
+ * @param null|string $path Path to the main plugin/bootstrap file
50
+ * @param array $dependencies An array of dependencies for a plugin
51
  */
52
  public function add_registered_plugin( $main_class, $version = null, $path = null, $dependencies = array() ) {
 
53
  $plugin = array(
54
  'class' => $main_class,
55
  'version' => $version,
62
  if ( $path ) {
63
  $this->admin_messages[ $main_class ] = new Tribe__Admin__Notice__Plugin_Download( $path );
64
  }
 
65
  }
66
 
67
  /**
83
  * @param string $path Path to the main plugin/bootstrap file
84
  */
85
  public function add_active_plugin( $main_class, $version = null, $path = null ) {
 
86
  $plugin = array(
87
  'class' => $main_class,
88
  'version' => $version,
228
  * @return bool
229
  */
230
  public function is_plugin_version( $main_class, $version, $compare = '>=' ) {
 
231
  //active plugin check to see if the correct version is active
232
  if ( ! $this->is_plugin_active( $main_class ) ) {
233
  return false;
250
  * @return bool
251
  */
252
  public function is_plugin_version_registered( $main_class, $version, $compare = '>=' ) {
 
253
  //registered plugin check if addon as it tests if it might load
254
  if ( ! $this->is_plugin_registered( $main_class ) ) {
255
  return false;
268
  * @return bool
269
  */
270
  public function has_requisite_plugins( $plugins_required = array() ) {
 
271
  foreach ( $plugins_required as $class => $version ) {
272
  // Return false if the plugin is not set or is a lesser version
273
  if ( ! $this->is_plugin_active( $class ) ) {
296
  }
297
 
298
  /**
299
+ * Gets all dependencies or single class requirements if parent, co, add does not exist use array as is if they
300
+ * do exist check each one in turn.
 
301
  *
302
  * @since 4.9
303
  *
308
  * @return bool returns false if any dependency is invalid
309
  */
310
  public function has_valid_dependencies( $plugin, $dependencies = array(), $addon = false ) {
 
311
  if ( empty( $dependencies ) ) {
312
  return true;
313
  }
314
 
315
  $failed_dependency = 0;
316
+
317
+ $tribe_plugins = new Tribe__Plugins();
318
 
319
  foreach ( $dependencies as $class => $version ) {
320
 
321
  // if no class for add-on
322
+ $checked_plugin = $this->get_registered_plugin( $class );
323
  if ( $addon && empty( $checked_plugin ) ) {
324
  continue;
325
  }
329
  continue;
330
  }
331
 
 
 
 
 
 
 
 
 
 
332
  $dependent_plugin = $tribe_plugins->get_plugin_by_class( $class );
333
 
334
  $pue = $this->get_pue_from_class( $dependent_plugin['class'] );
513
  }
514
 
515
  return false;
 
516
  }
517
 
518
  /**
542
  /**
543
  * Static Singleton Factory Method
544
  *
545
+ * @deprecated 4.9.12 We shouldn't be handling singletons internally.
546
  *
547
  * @return self
548
  */
common/src/Tribe/Image/Uploader.php CHANGED
@@ -43,6 +43,8 @@ class Tribe__Image__Uploader {
43
  return false;
44
  }
45
 
 
 
46
  if ( is_string( $this->featured_image ) && ! is_numeric( $this->featured_image ) ) {
47
  $existing = $this->get_attachment_ID_from_url( $this->featured_image );
48
  $id = $existing ? $existing : $this->upload_file( $this->featured_image );
@@ -52,6 +54,17 @@ class Tribe__Image__Uploader {
52
  $id = false;
53
  }
54
 
 
 
 
 
 
 
 
 
 
 
 
55
  return $id;
56
  }
57
 
43
  return false;
44
  }
45
 
46
+ $existing = false;
47
+
48
  if ( is_string( $this->featured_image ) && ! is_numeric( $this->featured_image ) ) {
49
  $existing = $this->get_attachment_ID_from_url( $this->featured_image );
50
  $id = $existing ? $existing : $this->upload_file( $this->featured_image );
54
  $id = false;
55
  }
56
 
57
+ do_action(
58
+ 'tribe_log',
59
+ 'debug',
60
+ __CLASS__,
61
+ [
62
+ 'featured_image' => $this->featured_image,
63
+ 'exists' => (bool) $existing,
64
+ 'id' => $id,
65
+ ]
66
+ );
67
+
68
  return $id;
69
  }
70
 
common/src/Tribe/Log.php CHANGED
@@ -282,6 +282,9 @@ class Tribe__Log {
282
  public function set_current_logger( $engine ) {
283
  $available_engines = $this->get_logging_engines();
284
 
 
 
 
285
  if ( ! isset( $available_engines[ $engine ] ) ) {
286
  throw new Exception( sprintf( __( 'Cannot set %s as the current logging engine', 'tribe-common' ), $engine ) );
287
  }
282
  public function set_current_logger( $engine ) {
283
  $available_engines = $this->get_logging_engines();
284
 
285
+ // Make sure to de-duplicate the slashes on class names.
286
+ $engine = str_replace( '\\\\', '\\', $engine );
287
+
288
  if ( ! isset( $available_engines[ $engine ] ) ) {
289
  throw new Exception( sprintf( __( 'Cannot set %s as the current logging engine', 'tribe-common' ), $engine ) );
290
  }
common/src/Tribe/Log/Action_Logger.php ADDED
@@ -0,0 +1,125 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Hooks the `tribe_log` action based logger under the existing one for back-compatibility.
4
+ *
5
+ * @since 4.9.16
6
+ *
7
+ * @package Tribe\Log
8
+ */
9
+
10
+ namespace Tribe\Log;
11
+
12
+ use Monolog\Logger;
13
+ use Tribe__Log;
14
+
15
+ /**
16
+ * Class Action_Logger
17
+ *
18
+ * @since 4.9.16
19
+ *
20
+ * @package Tribe\Log
21
+ */
22
+ class Action_Logger implements \Tribe__Log__Logger {
23
+
24
+ /**
25
+ * {@inheritDoc}
26
+ *
27
+ * @since 4.9.16
28
+ */
29
+ public function is_available() {
30
+ return true;
31
+ }
32
+
33
+ /**
34
+ * {@inheritDoc}
35
+ *
36
+ * @since 4.9.16
37
+ */
38
+ public function get_name() {
39
+ return __( 'Action-based Logger', 'tribe-common' );
40
+ }
41
+
42
+ /**
43
+ * {@inheritDoc}
44
+ *
45
+ * @since 4.9.16
46
+ */
47
+ public function log( $entry, $type = Tribe__Log::DEBUG, $src = '' ) {
48
+ $message = empty( $src ) ? $entry : $src . ': ' . $entry;
49
+
50
+ do_action( 'tribe_log', $this->translate_log_level( $type ), $message );
51
+ }
52
+
53
+ /**
54
+ * Translates the log types used by `Tribe__Log` to those used by Monolog.
55
+ *
56
+ * @since 4.9.16
57
+ *
58
+ * @param string $type The `Tribe__Log` log type.
59
+ *
60
+ * @return int The Monolog equivalent of the current level.
61
+ */
62
+ protected function translate_log_level( $type ) {
63
+ switch ( $type ) {
64
+ case Tribe__Log::DEBUG:
65
+ return Logger::DEBUG;
66
+ case Tribe__Log::ERROR:
67
+ return Logger::ERROR;
68
+ case Tribe__Log::WARNING:
69
+ return Logger::WARNING;
70
+ case Tribe__Log::SUCCESS:
71
+ default:
72
+ return Logger::INFO;
73
+ }
74
+ }
75
+
76
+ /**
77
+ * {@inheritDoc}
78
+ *
79
+ * @since 4.9.16
80
+ */
81
+ public function retrieve( $limit = 0, array $args = array() ) {
82
+ return [
83
+ [
84
+ 'message' => __(
85
+ 'The Action Logger will dispatch any logging message using the "tribe_log" action writing, by ' .
86
+ 'default, to the PHP error log.',
87
+ 'tribe-common' )
88
+ ],
89
+ ];
90
+ }
91
+
92
+ /**
93
+ * {@inheritDoc}
94
+ *
95
+ * @since 4.9.16
96
+ */
97
+ public function list_available_logs() {
98
+ return [];
99
+ }
100
+
101
+ /**
102
+ * Changes the Monolog logger channel to the specified one.
103
+ *
104
+ * @since 4.9.16
105
+ *
106
+ * @param string $log_identifier The channel to switch to.
107
+ * @param bool $create Unused by this class.
108
+ *
109
+ * @return bool The exit status of the channel change.
110
+ *
111
+ * @uses \Tribe\Log\Monolog_Logger::set_channel().
112
+ */
113
+ public function use_log( $log_identifier, $create = false ) {
114
+ return tribe( 'monolog' )->set_global_channel( $log_identifier );
115
+ }
116
+
117
+ /**
118
+ * {@inheritDoc}
119
+ *
120
+ * @since 4.9.16
121
+ */
122
+ public function cleanup() {
123
+ return true;
124
+ }
125
+ }
common/src/Tribe/Log/Canonical_Formatter.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ${CARET}
4
+ *
5
+ * @since 4.9.16
6
+ *
7
+ * @package Tribe\Log
8
+ */
9
+
10
+
11
+ namespace Tribe\Log;
12
+
13
+
14
+ use Monolog\Formatter\LineFormatter;
15
+
16
+ class Canonical_Formatter extends LineFormatter {
17
+
18
+ /**
19
+ * Formats a log record.
20
+ *
21
+ * @since 4.9.16
22
+ *
23
+ * @param array $record A record to format.
24
+ *
25
+ * @return mixed The formatted record.
26
+ */
27
+ public function format( array $record ) {
28
+ $has_context = ! empty( $record['context'] );
29
+
30
+ if ( $has_context ) {
31
+ $record['message'] = $this->format_record_message( $record );
32
+
33
+ $this->format = 'tribe-canonical-line channel=%channel% %message%';
34
+ } else {
35
+ // Fall-back on a standard format if the message does not have a context.
36
+ $this->format = 'tribe.%channel%.%level_name%: %message%';
37
+ }
38
+
39
+ return parent::format( $record );
40
+ }
41
+
42
+ /**
43
+ * Formats the record to the canonical format.
44
+ *
45
+ * @since 4.9.16
46
+ *
47
+ * @param array $record The record to process.
48
+ *
49
+ * @return string The formatted message, as built from the record context and message, in the format `<key>=<value>`.
50
+ */
51
+ protected function format_record_message( array $record ) {
52
+ $message = [];
53
+ $extra = [];
54
+
55
+ $extra['level'] = isset( $record['level_name'] ) ? strtolower( $record['level_name'] ) : 'debug';
56
+
57
+ if ( ! empty( $record['message'] ) ) {
58
+ // Use the message as the source.
59
+ $extra['source'] = $this->escape_quotes( $record['message'] );
60
+ }
61
+
62
+ $context = $record['context'];
63
+ $context = array_merge( $extra, $context );
64
+
65
+ foreach ( $context as $key => $value ) {
66
+ $escape = false;
67
+
68
+ if ( is_bool( $value ) ) {
69
+ $value = $value ? 'true' : 'false';
70
+ } elseif ( ! is_scalar( $value ) ) {
71
+ $value = json_encode( $value );
72
+ if ( false === $value ) {
73
+ $value = 'malformed';
74
+ } else {
75
+ $escape = true;
76
+ }
77
+ }
78
+
79
+ if ( $escape || ( is_string( $value ) && preg_match( '~[\\\\/\\s]+~', $value ) ) ) {
80
+ $value = '"' . $this->escape_quotes( $value ) . '"';
81
+ }
82
+
83
+ $message[] = "{$key}={$value}";
84
+ }
85
+
86
+ return implode( ' ', $message );
87
+ }
88
+
89
+ /**
90
+ * Escapes the double quotes in a string.
91
+ *
92
+ * @since 4.9.16
93
+ *
94
+ * @param string $string The string to escape the quotes in.
95
+ *
96
+ * @return string The string, with the quotes escaped.
97
+ */
98
+ protected function escape_quotes( $string ) {
99
+ return str_replace( '"', '\\"', $string ) ;
100
+ }
101
+ }
common/src/Tribe/Log/Monolog_Logger.php ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * An extension of the base Monolog logger to add our need to replace the instance, and global, loggers.
4
+ *
5
+ * @since 4.9.16
6
+ *
7
+ * @package Tribe\Log
8
+ */
9
+
10
+ namespace Tribe\Log;
11
+
12
+ use Monolog\Logger;
13
+
14
+ /**
15
+ * Class Monolog_Logger
16
+ *
17
+ * @since 4.9.16
18
+ *
19
+ * @package Tribe\Log
20
+ */
21
+ class Monolog_Logger extends Logger {
22
+ /**
23
+ * @since 4.9.16
24
+ */
25
+ const DEFAULT_CHANNEL = 'default';
26
+
27
+ /**
28
+ * Resets the global channel to the default one.
29
+ *
30
+ * @since 4.9.16
31
+ *
32
+ * @return bool Whether the channel reset
33
+ */
34
+ public function reset_global_channel() {
35
+ return $this->set_global_channel( static::DEFAULT_CHANNEL );
36
+ }
37
+
38
+ /**
39
+ * Clones this logger and replaces it in the `tribe` container.
40
+ *
41
+ * @since 4.9.16
42
+ *
43
+ * @param string $channel The new logger name, also referred to as "channel" (hence the method name).
44
+ *
45
+ * @return bool Whether the channel change was successful or not.
46
+ */
47
+ public function set_global_channel( $channel ) {
48
+ $new = $this->withName( $channel );
49
+ tribe_register( Logger::class, $new );
50
+ tribe_register( 'monolog', $new );
51
+
52
+ return $channel === tribe( 'monolog' )->getName();
53
+ }
54
+ }
common/src/Tribe/Log/README.md ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Monolog-based logging
2
+
3
+ We've introduced a [Monolog based](https://github.com/Seldaek/monolog) logger in our common libraries.
4
+ You can find more information about all the possibilities this opens [on the library documentaion](https://seldaek.github.io/monolog/), but this document will serve as an introduction to the essentials of its day to day use.
5
+
6
+ ## When should I log?
7
+
8
+ Whenever you feel you might have to debug this in the future and could use that information.
9
+
10
+ > Pro tip: if you, as a developer, find yourself using `var_dump` and `error_log` a lot, then you should log instead. Someone, someday, will have your same issue.
11
+
12
+ Worried about "spamming" the logs? [Read here](#logging-levels--or-stuff-does-not-appear-in-the-log).
13
+
14
+ ## This will deprecate the old logger, but not yet
15
+
16
+ At first we're not replacing the "old" logger with this new one, we're just asking you **to stop using the old logger** in your code from now on and use the new, Monolog-based, one.
17
+ The old logger still offers file-based logging and connections to the UI the new logger is not yet offering; the current implementation will allow us, in the future, to log **everything** with the Monolog-based logger, but, currently, intercepting log messages from the "old" logger requires manual activation, see the following section.
18
+
19
+ To be clear: this is what we mean by "old" or "legacy" logger:
20
+
21
+ ```php
22
+ <?php
23
+ tribe( 'logger' )->log_debug( 'Some debug information', 'The source' );
24
+ tribe( 'logger' )->log( 'Some information', Tribe__Log::DEBUG, 'The source' );
25
+ ```
26
+
27
+ ### Intercepting legacy logger logs with the new Monolog logger
28
+
29
+ The Monolog-based logger will handle logging coming from the legacy logger only if explicitly told so.
30
+
31
+ You can activate this function with this code:
32
+
33
+ ```php
34
+ <?php
35
+ add_filter( 'tribe_log_use_action_logger', '__return_true' );
36
+ ```
37
+
38
+ Once this is in your code any call to the legacy logger wil be redirected to the new one.
39
+
40
+ ## Using the logger
41
+
42
+ The new logger listens on the `tribe_log` action.
43
+ By default it will log to the `default` channel (see [Monolog documentation for more information about channels](https://seldaek.github.io/monolog/doc/01-usage.html#leveraging-channels)).
44
+
45
+ So the code below will log a **debug** to the **default** channel with a source of **ea_client**:
46
+
47
+ ```php
48
+ <?php
49
+ do_action(
50
+ 'tribe_log',
51
+ 'debug',
52
+ 'ea_client',
53
+ [ 'action' => 'updated', 'post_id' => $id, 'origin' => $origin ]
54
+ );
55
+ ```
56
+
57
+ The logger listening on the action will consume three parameters:
58
+
59
+ 1. `level` - `debug` in the example; is the level of the log; available levels, in increasing value of urgency are: `debug`, `info`, `notice`, `warning`, `error`, `critical`, `alert`, `emergency`. Use each level wisely.
60
+ 2. `source` - `ea_client` in this example; is the source of the log; this is a human-readable value; consistency is king here.
61
+ 3. `context` - the array in this example; this is an associative array that will be logged to define the context of the log. Think of this as something that will provide the details required to unpack what **was** happening when the log entry was created. Provide enough context to make it clear, but avoid bloating it.
62
+
63
+ ## Where are my logs?
64
+
65
+ The initial implementation of the new logger will write, by default, to the **PHP error** log.
66
+
67
+ We're using Monolog to allow us, and third parties, to "attach" and "deatach" loggers as required.
68
+ By default we're formatting logs using canonical lines( read more [here](https://brandur.org/logfmt) and [here](https://blog.codeship.com/logfmt-a-log-format-thats-easy-to-read-and-write/)) to make our log entries both human-readable and machine parsable (e.g. by a tool like [this](https://www.npmjs.com/package/logfmt)).
69
+
70
+ The output format of the example above would be this:
71
+
72
+ ```
73
+ [22-Aug-2019 15:50:42 UTC] tribe-canonical-line channel=default level=debug source=ea_client action=updated post_id=23 origin=ical
74
+ ```
75
+
76
+ What about legacy logs?
77
+ Their format would not be formatted to the canonical line style:
78
+
79
+ ```
80
+ [22-Aug-2019 16:03:33 UTC] tribe.default.DEBUG: The source: debug information
81
+ ```
82
+
83
+ ### Logging levels ( or "stuff does not appear in the log")
84
+
85
+ By default we're only logging Warnings and above.
86
+ This means all your `debug` level logs are being ignored.
87
+
88
+ In production we do not want to fill people logs with pointless information, but you can control the level of logging: any log equal or above the specified level will be logged.
89
+
90
+ You can control the logging level with the `tribe_log_level` filter:
91
+
92
+ ```php
93
+ <?php
94
+ add_filter(
95
+ 'tribe_log_level',
96
+ static function () {
97
+ // Only log errors or above.
98
+ return Monolog\Logger::ERROR;
99
+ }
100
+ );
101
+ ```
102
+
103
+ ### Logging channels
104
+
105
+ The default logging channel is `default`, you've seen that in the example log lines above.
106
+
107
+ But how can I change the channel?
108
+
109
+ Easy:
110
+
111
+ ```php
112
+ <?php
113
+ tribe( 'monolog' )->set_global_channel( 'my_channel' );
114
+ do_action( 'tribe_log', 'debug', 'my_source', [ 'foo' => 'bar' ] );
115
+ tribe( 'logger' )->log_debug( 'Some debug information', 'My source' );
116
+ ```
117
+
118
+ You can do the same using the legacy logger, [if enabled][0527-0003]:
119
+
120
+ ```php
121
+ <?php
122
+ tribe( 'logger' )->use_log( 'my_channel' );
123
+ ```
124
+
125
+ Any log produced after the call will log to the `my_channel` channel; this will apply to the legacy logger too ([if redirected][0527-0003]):
126
+
127
+ ```
128
+ [22-Aug-2019 15:50:42 UTC] tribe-canonical-line channel=default level=debug source=ea_client action=updated post_id=23 origin=ical
129
+ [22-Aug-2019 15:51:13 UTC] tribe-canonical-line channel=my_channel level=debug source=my_source foo=bar
130
+ [22-Aug-2019 16:03:33 UTC] tribe.my_channel.DEBUG: My source: Some debug information
131
+ ```
132
+
133
+ ## I want to use this right now to debug my code
134
+
135
+ Copy and paste this in a plugin, or must-use plugin.
136
+ If you're using a plugin remember to activate it.
137
+
138
+ ```php
139
+ <?php
140
+ /**
141
+ * Plugin Name: Modern Tribe Logger Control
142
+ * Plugin Description: Control the behavior of Modern Tribe Monolog-based logger.
143
+ */
144
+ add_filter(
145
+ 'tribe_log_level',
146
+ static function () {
147
+ // Control the min level of logging.
148
+ return Monolog\Logger::DEBUG;
149
+ }
150
+ );
151
+
152
+ // Redirect legacy logger calls.
153
+ add_filter( 'tribe_log_use_action_logger', '__return_true' );
154
+ ```
common/src/Tribe/Log/Service_Provider.php ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * ${CARET}
4
+ *
5
+ * @since 4.9.16
6
+ *
7
+ * @package Tribe\Log
8
+ */
9
+
10
+
11
+ namespace Tribe\Log;
12
+
13
+
14
+ use Monolog\Handler\ErrorLogHandler;
15
+ use Monolog\Logger;
16
+
17
+ class Service_Provider extends \tad_DI52_ServiceProvider {
18
+
19
+ /**
20
+ * Binds and sets up implementations.
21
+ *
22
+ * @since 4.9.16
23
+ */
24
+ public function register() {
25
+ $this->container->singleton( Logger::class, [ $this, 'build_logger' ] );
26
+ $this->container->singleton( 'monolog',
27
+ function () {
28
+ return $this->container->make( Logger::class );
29
+ }
30
+ );
31
+
32
+ add_action( 'tribe_log', [ $this, 'dispatch_log' ], 10, 3 );
33
+
34
+ /**
35
+ * Filters whether to make the Action Logger available as logger or not.
36
+ *
37
+ * @since 4.9.16
38
+ *
39
+ * @param bool $use_action_logger Whether to allow logging messages from the \Tribe\Log\Logger class using the
40
+ * `tribe_log` action or not.
41
+ */
42
+ $use_action_logger = apply_filters( 'tribe_log_use_action_logger', false );
43
+
44
+ if ( $use_action_logger ) {
45
+ add_filter( 'tribe_common_logging_engines', [ $this, 'add_logging_engine' ] );
46
+ }
47
+ }
48
+
49
+ /**
50
+ * Builds and returns the Monolog Logger instance that will listen to the `tribe_log` action.
51
+ *
52
+ * To avoid the over-head introduced by filtering the filters are applied here, only once, when the instance is
53
+ * first built. Any later call will use the singleton instance stored in the container.
54
+ *
55
+ * @since 4.9.16
56
+ *
57
+ * @return Logger
58
+ */
59
+ public function build_logger() {
60
+ /**
61
+ * Filters the level of the messages that will be logged.
62
+ *
63
+ * The threshold is inclusive of the level; it default to log any warning and above.
64
+ *
65
+ * @since 4.9.16
66
+ *
67
+ * @param int The threshold level; if the level of a message is this level or above, then it will be logged.
68
+ *
69
+ * @see \Monolog\Logger for possible levels.
70
+ */
71
+ $level_threshold = apply_filters( 'tribe_log_level', Logger::WARNING );
72
+
73
+ $error_log_handler = new ErrorLogHandler( null, $level_threshold );
74
+
75
+ /**
76
+ * Filters whether to use canonical format for the logs or not.
77
+ *
78
+ * @since 4.9.16
79
+ *
80
+ * @param bool $use_canonical_format Whether to use canonical format for the logs or not; defaults to `true`.
81
+ */
82
+ $use_canonical_format = apply_filters( 'tribe_log_canonical', true );
83
+
84
+ if ( $use_canonical_format ) {
85
+ $error_log_handler->setFormatter( new Canonical_Formatter() );
86
+ }
87
+
88
+ $handlers = [
89
+ 'default' => $error_log_handler
90
+ ];
91
+
92
+ /**
93
+ * Filters the list of handlers that will handle dispatched log messages.
94
+ *
95
+ * All handlers should implement the `\Monolog\Handler\HandlerInterface`.
96
+ *
97
+ * @since 4.9.16
98
+ *
99
+ * @param array $handlers An array of default log handlers.
100
+ */
101
+ $handlers = apply_filters( 'tribe_log_handlers', $handlers );
102
+
103
+ // Monolog will log to stderr when no handlers are set.
104
+ $logger = new Monolog_Logger( Monolog_Logger::DEFAULT_CHANNEL );
105
+
106
+ $logger->setHandlers( $handlers );
107
+
108
+ return $logger;
109
+ }
110
+
111
+ /**
112
+ * Dispatch a message of a specific level.
113
+ *
114
+ * Available levels are: `debug`, `info`, `notice`, `warning`, `error`, `critical`, `alert`, `emergency`.
115
+ *
116
+ * @since 4.9.16
117
+ *
118
+ * @param string|int $level Either the log level or the log pretty name, see long description.
119
+ * @param string $message The message to log.
120
+ * @param array $context An array of values to define the context.
121
+ *
122
+ * @see \Monolog\Logger for the log level constants and names.
123
+ */
124
+ public function dispatch_log( $level = 'debug', $message = '', array $context = [] ) {
125
+ // Goes from something like `debug` to `100`.
126
+ $level = is_numeric( $level ) ? $level : Logger::toMonologLevel( $level );
127
+
128
+ /** @var Logger $logger */
129
+ $logger = $this->container->make( Logger::class );
130
+
131
+ $logger->log( $level, $message, $context );
132
+ }
133
+
134
+ /**
135
+ * Makes the action-based logging engine available in the backend.
136
+ *
137
+ * @since 4.9.16
138
+ *
139
+ * @param array $logging_engines An array of available logging engines.
140
+ *
141
+ * @return array The updated array of logging engines.
142
+ */
143
+ public function add_logging_engine( array $logging_engines = [] ) {
144
+ $logging_engines[ Action_Logger::class ] = new Action_Logger();
145
+
146
+ return $logging_engines;
147
+ }
148
+ }
common/src/Tribe/Main.php CHANGED
@@ -17,7 +17,7 @@ class Tribe__Main {
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
- const VERSION = '4.9.15.1';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
@@ -584,6 +584,7 @@ class Tribe__Main {
584
  tribe_register_provider( Tribe__Service_Providers__Tooltip::class );
585
 
586
  tribe_register_provider( Tribe\Service_Providers\PUE::class );
 
587
  }
588
 
589
  /************************
17
  const OPTIONNAME = 'tribe_events_calendar_options';
18
  const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
19
 
20
+ const VERSION = '4.9.17';
21
 
22
  const FEED_URL = 'https://theeventscalendar.com/feed/';
23
 
584
  tribe_register_provider( Tribe__Service_Providers__Tooltip::class );
585
 
586
  tribe_register_provider( Tribe\Service_Providers\PUE::class );
587
+ tribe_register_provider( Tribe\Log\Service_Provider::class );
588
  }
589
 
590
  /************************
common/src/Tribe/PUE/Checker.php CHANGED
@@ -61,7 +61,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
61
  *
62
  * @var array
63
  */
64
- private $download_query = array();
65
 
66
  /**
67
  * The context in which this license key is used. May be 'component'
@@ -138,14 +138,14 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
138
  *
139
  * @var array
140
  */
141
- private static $stats = array();
142
 
143
  /**
144
  * Full Stats
145
  *
146
  * @var array
147
  */
148
- private static $stats_full = array();
149
 
150
  /**
151
  * Class constructor.
@@ -166,7 +166,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
166
  * }
167
  * @param string $plugin_file fully qualified path to the main plugin file.
168
  */
169
- public function __construct( $pue_update_url, $slug = '', $options = array(), $plugin_file = '' ) {
170
  $this->set_slug( $slug );
171
  $this->set_plugin_file( $plugin_file );
172
  $this->set_options( $options );
@@ -180,30 +180,30 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
180
  */
181
  public function hooks() {
182
  // Override requests for plugin information
183
- add_filter( 'plugins_api', array( $this, 'inject_info' ), 10, 3 );
184
 
185
  // Check for updates when the WP updates are checked and inject our update if needed.
186
  // Only add filter if the TRIBE_DISABLE_PUE constant is not set as true and where
187
  // the context is not 'service'
188
  if ( ( ! defined( 'TRIBE_DISABLE_PUE' ) || true !== TRIBE_DISABLE_PUE ) && 'service' !== $this->context ) {
189
- add_filter( 'pre_set_site_transient_update_plugins', array( $this, 'check_for_updates' ) );
190
  }
191
 
192
- add_filter( 'tribe_licensable_addons', array( $this, 'build_addon_list' ) );
193
- add_action( 'tribe_license_fields', array( $this, 'do_license_key_fields' ) );
194
- add_action( 'tribe_settings_after_content_tab_licenses', array( $this, 'do_license_key_javascript' ) );
195
- add_action( 'tribe_settings_success_message', array( $this, 'do_license_key_success_message' ), 10, 2 );
196
- add_action( 'load-plugins.php', array( $this, 'remove_default_inline_update_msg' ), 50 );
197
 
198
  // Key validation
199
- add_filter( 'tribe_settings_save_field_value', array( $this, 'check_for_api_key_error' ), 10, 3 );
200
- add_action( 'wp_ajax_pue-validate-key_' . $this->get_slug(), array( $this, 'ajax_validate_key' ) );
201
- add_filter( 'tribe-pue-install-keys', array( $this, 'return_install_key' ) );
202
- add_action( 'admin_enqueue_scripts', array( $this, 'maybe_display_json_error_on_plugins_page' ), 1 );
203
- add_action( 'admin_init', array( $this, 'general_notifications' ) );
204
 
205
  // Package name
206
- add_filter( 'upgrader_pre_download', array( Tribe__PUE__Package_Handler::instance(), 'filter_upgrader_pre_download' ), 5, 3 );
207
  }
208
 
209
  /********************** Getter / Setter Functions **********************/
@@ -319,16 +319,16 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
319
  *
320
  * @param array $options
321
  */
322
- private function set_options( $options = array() ) {
323
 
324
  $options = wp_parse_args(
325
- $options, array(
326
  'pue_option_name' => 'external_updates-' . $this->get_slug(),
327
  'apikey' => '',
328
  'check_period' => 12,
329
  'context' => 'component',
330
  'plugin_name' => '',
331
- )
332
  );
333
 
334
  $this->pue_option_name = $options['pue_option_name'];
@@ -343,7 +343,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
343
  *
344
  * @param array $download_query
345
  */
346
- private function set_download_query( $download_query = array() ) {
347
 
348
  if ( ! empty( $download_query ) ) {
349
  $this->download_query = $download_query;
@@ -392,7 +392,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
392
  *
393
  * @param array $validate_query
394
  */
395
- private function set_validate_query( $validate_query = array() ) {
396
 
397
  if ( ! empty( $validate_query ) ) {
398
  $this->validate_query = $validate_query;
@@ -472,7 +472,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
472
  *
473
  * @return array list of addons
474
  */
475
- public function build_addon_list( $addons = array() ) {
476
  $addons[] = $this->get_plugin_name();
477
 
478
  return $addons;
@@ -487,12 +487,12 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
487
  */
488
  public function do_license_key_fields( $fields ) {
489
  // common fields whether licenses should be hidden or not
490
- $to_insert = array(
491
- $this->pue_install_key . '-heading' => array(
492
  'type' => 'heading',
493
  'label' => $this->get_plugin_name(),
494
- ),
495
- );
496
 
497
  $no_license_tooltip = esc_html__( 'A valid license key is required for support and updates', 'tribe-common' );
498
  if ( 'event-aggregator' === $this->get_slug() ) {
@@ -505,7 +505,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
505
 
506
  // we want to inject the following license settings at the end of the licenses tab
507
  if ( $this->should_show_network_editable_license() ) {
508
- $to_insert[ $this->pue_install_key ] = array(
509
  'type' => 'license_key',
510
  'size' => 'large',
511
  'validation_type' => 'license_key',
@@ -514,9 +514,9 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
514
  'tooltip' => $no_license_tooltip,
515
  'parent_option' => false,
516
  'network_option' => true,
517
- );
518
  } elseif ( $this->should_show_subsite_editable_license() ) {
519
- $to_insert[ $this->pue_install_key ] = array(
520
  'type' => 'license_key',
521
  'size' => 'large',
522
  'validation_type' => 'license_key',
@@ -525,28 +525,28 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
525
  'tooltip' => $no_license_tooltip,
526
  'parent_option' => false,
527
  'network_option' => false,
528
- );
529
  } elseif ( $this->should_show_overrideable_license() ) {
530
- $to_insert[ $this->pue_install_key . '-state' ] = array(
531
  'type' => 'html',
532
  'label' => sprintf( esc_attr__( 'License Key Status:', 'tribe-common' ) ),
533
- 'label_attributes' => array( 'style' => 'width:auto;' ),
534
  'html' => sprintf( '<p>%s</p>', $this->get_network_license_state_string() ),
535
- );
536
 
537
  $override_id = $this->pue_install_key . '-override';
538
 
539
- $to_insert[ $override_id ] = array(
540
  'type' => 'checkbox_bool',
541
  'label' => esc_html__( 'Override network license key', 'tribe-common' ),
542
  'tooltip' => esc_html__( 'Check this box if you wish to override the network license key with your own', 'tribe-common' ),
543
  'default' => false,
544
  'validation_type' => 'boolean',
545
  'parent_option' => false,
546
- 'attributes' => array( 'id' => $override_id . '-field' ),
547
- );
548
 
549
- $to_insert[ $this->pue_install_key ] = array(
550
  'type' => 'license_key',
551
  'size' => 'large',
552
  'validation_type' => 'license_key',
@@ -555,18 +555,18 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
555
  'parent_option' => false,
556
  'network_option' => false,
557
  'class' => 'tribe-dependent',
558
- 'fieldset_attributes' => array(
559
  'data-depends' => '#' . $override_id . '-field',
560
  'data-condition-checked' => true,
561
- ),
562
- );
563
  } else {
564
- $to_insert[ $this->pue_install_key . '-state' ] = array(
565
  'type' => 'html',
566
  'label' => sprintf( esc_attr__( 'License Key Status:', 'tribe-common' ) ),
567
- 'label_attributes' => array( 'style' => 'width:auto;' ),
568
  'html' => sprintf( '<p>%s</p>', $this->get_network_license_state_string() ),
569
- );
570
  }
571
 
572
  $fields = self::array_insert_after_key( 'tribe-form-content-start', $fields, $to_insert );
@@ -663,16 +663,16 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
663
 
664
  global $wpdb;
665
 
666
- $stats = array(
667
- 'versions' => array(
668
  'wp' => sanitize_text_field( $GLOBALS['wp_version'] ),
669
- ),
670
- 'network' => array(
671
  'multisite' => 0,
672
  'network_activated' => 0,
673
  'active_sites' => 1,
674
- ),
675
- );
676
 
677
  if ( is_multisite() ) {
678
  $sql_count = "
@@ -728,18 +728,18 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
728
  }
729
  }
730
 
731
- $stats['versions'] = array(
732
  'wp' => sanitize_text_field( $GLOBALS['wp_version'] ),
733
  'php' => sanitize_text_field( phpversion() ),
734
  'mysql' => sanitize_text_field( $wpdb->db_version() ),
735
- );
736
 
737
- $stats['theme'] = array(
738
  'name' => sanitize_text_field( $theme->get( 'Name' ) ),
739
  'version' => sanitize_text_field( $theme->get( 'Version' ) ),
740
  'stylesheet' => sanitize_text_field( $theme->get_stylesheet() ),
741
  'template' => sanitize_text_field( $theme->get_template() ),
742
- );
743
 
744
  $stats['site_language'] = sanitize_text_field( get_locale() );
745
  $stats['user_language'] = sanitize_text_field( get_user_locale() );
@@ -747,13 +747,13 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
747
  $stats['wp_debug'] = (int) ( defined( 'WP_DEBUG' ) && WP_DEBUG );
748
  $stats['site_timezone'] = sanitize_text_field( $timezone );
749
 
750
- $stats['totals'] = array(
751
  'all_post_types' => (int) $wpdb->get_var( "SELECT COUNT(*) FROM `{$wpdb->posts}`" ),
752
  'events' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_events' ) ),
753
  'venues' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_venue' ) ),
754
  'organizers' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_organizer' ) ),
755
  'event_categories' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->term_taxonomy}` WHERE taxonomy = %s", 'tribe_events_cat' ) ),
756
- );
757
 
758
  self::$stats_full = $stats;
759
 
@@ -892,7 +892,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
892
  * @return array An associative array containing the license status response.
893
  */
894
  public function validate_key( $key, $network = false ) {
895
- $response = array();
896
  $response['status'] = 0;
897
 
898
  if ( ! $key ) {
@@ -977,22 +977,23 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
977
  * Echo JSON results for key validation
978
  */
979
  public function ajax_validate_key() {
980
-
981
  $key = isset( $_POST['key'] ) ? wp_unslash( $_POST['key'] ) : null;
982
  $nonce = isset( $_POST['_wpnonce'] ) ? wp_unslash( $_POST['_wpnonce'] ) : null;
983
 
984
- if ( empty( $nonce ) || false === wp_verify_nonce( $nonce, 'pue-validate-key_' . $this->get_slug() ) ) {
985
- $response = array(
 
 
 
986
  'status' => 0,
987
  'message' => __( 'Please refresh the page and try your request again.', 'tribe-common' ),
988
- );
989
  } else {
990
  $response = $this->validate_key( $key );
991
  }
992
 
993
  echo json_encode( $response );
994
  exit;
995
-
996
  }
997
 
998
  /**
@@ -1082,7 +1083,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1082
  }
1083
 
1084
  $state = $this->get_state();
1085
- $messages = array();
1086
  $plugin_updates = get_plugin_updates();
1087
  $update_available = isset( $plugin_updates[ $this->plugin_file ] );
1088
 
@@ -1132,12 +1133,12 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1132
  $message_row_html
1133
  );
1134
 
1135
- $this->plugin_notice = array(
1136
  'slug' => $this->plugin_file,
1137
  'message_row_html' => $message_row_html,
1138
- );
1139
 
1140
- add_filter( 'tribe_plugin_notices', array( $this, 'add_notice_to_plugin_notices' ) );
1141
 
1142
  }
1143
 
@@ -1234,7 +1235,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1234
  *
1235
  * @return string $plugin_info
1236
  */
1237
- public function request_info( $query_args = array() ) {
1238
  $query_args = apply_filters( 'tribe_puc_request_info_query_args-' . $this->get_slug(), $query_args );
1239
 
1240
  // Cache the API call so it only needs to be made once per plugin per page load.
@@ -1256,13 +1257,13 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1256
  }
1257
 
1258
  //Various options for the wp_remote_get() call. Plugins can filter these, too.
1259
- $options = array(
1260
  'body' => $query_args,
1261
  'timeout' => 15, //seconds
1262
- 'headers' => array(
1263
  'Accept' => 'application/json',
1264
- ),
1265
- );
1266
  $options = apply_filters( 'tribe_puc_request_info_options-' . $this->get_slug(), $options );
1267
 
1268
  $url = sprintf( '%s/api/plugins/v2/license/validate', $this->get_pue_update_url() );
@@ -1326,6 +1327,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1326
  if ( isset( $plugin_info->api_invalid ) ) {
1327
  $plugin_info = Tribe__PUE__Utility::from_plugin_info( $plugin_info );
1328
  $plugin_info->license_error = $this->get_api_message( $plugin_info );
 
1329
  return $plugin_info;
1330
  }
1331
 
@@ -1333,7 +1335,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1333
  $this->update_key( $plugin_info->new_install_key );
1334
  }
1335
 
1336
- //need to correct the download url so it contains the custom user data (i.e. api and any other paramaters)
1337
  $download_query = $this->get_download_query();
1338
 
1339
  if ( ! empty( $download_query ) ) {
@@ -1414,7 +1416,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1414
  *
1415
  * @return array
1416
  */
1417
- public function check_for_updates( $updates = array(), $force_recheck = false ) {
1418
  $state = $this->get_state( $force_recheck );
1419
 
1420
  $state->lastCheck = time();
@@ -1425,12 +1427,12 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1425
 
1426
  $state->update = $this->request_update();
1427
 
1428
- // If a null update was returned, skip the end of the function.
1429
  if ( null !== $state->update ) {
1430
- //Is there an update to insert?
1431
  if ( version_compare( $state->update->version, $this->get_installed_version(), '>' ) ) {
1432
  if ( empty( $updates ) ) {
1433
- $updates = (object) array( 'response' => array() );
1434
  }
1435
 
1436
  $updates->response[ $this->get_plugin_file() ] = $state->update->to_wp_format();
@@ -1464,7 +1466,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1464
  }
1465
 
1466
  if ( 'service' !== $this->context ) {
1467
- $this->check_for_updates( array(), true );
1468
  }
1469
 
1470
  $network_option = false;
@@ -1604,7 +1606,7 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1604
  * @return array $keys
1605
  *
1606
  */
1607
- public function return_install_key( $keys = array() ) {
1608
  $key = $this->get_key();
1609
 
1610
  if ( ! empty( $key ) ) {
@@ -1655,9 +1657,9 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1655
  return false;
1656
  }
1657
 
1658
- $map = array(
1659
  'event-aggregator/event-aggregator.php' => 'the-events-calendar/the-events-calendar.php',
1660
- );
1661
 
1662
  $plugin_file = $this->get_plugin_file();
1663
 
@@ -1682,11 +1684,11 @@ if ( ! class_exists( 'Tribe__PUE__Checker' ) ) {
1682
  * @return string The localized state string.
1683
  */
1684
  protected function get_network_license_state_string() {
1685
- $states = array(
1686
  'licensed' => esc_html__( 'A valid license has been entered by your network administrator.', 'tribe-common' ),
1687
  'not-licensed' => esc_html__( 'No license entered. Consult your network administrator.', 'tribe-common' ),
1688
  'expired' => esc_html__( 'Expired license. Consult your network administrator.', 'tribe-common' ),
1689
- );
1690
 
1691
  $response = $this->validate_key( $this->get_key( 'network' ), true );
1692
 
61
  *
62
  * @var array
63
  */
64
+ private $download_query = [];
65
 
66
  /**
67
  * The context in which this license key is used. May be 'component'
138
  *
139
  * @var array
140
  */
141
+ private static $stats = [];
142
 
143
  /**
144
  * Full Stats
145
  *
146
  * @var array
147
  */
148
+ private static $stats_full = [];
149
 
150
  /**
151
  * Class constructor.
166
  * }
167
  * @param string $plugin_file fully qualified path to the main plugin file.
168
  */
169
+ public function __construct( $pue_update_url, $slug = '', $options = [], $plugin_file = '' ) {
170
  $this->set_slug( $slug );
171
  $this->set_plugin_file( $plugin_file );
172
  $this->set_options( $options );
180
  */
181
  public function hooks() {
182
  // Override requests for plugin information
183
+ add_filter( 'plugins_api', [ $this, 'inject_info' ], 10, 3 );
184
 
185
  // Check for updates when the WP updates are checked and inject our update if needed.
186
  // Only add filter if the TRIBE_DISABLE_PUE constant is not set as true and where
187
  // the context is not 'service'
188
  if ( ( ! defined( 'TRIBE_DISABLE_PUE' ) || true !== TRIBE_DISABLE_PUE ) && 'service' !== $this->context ) {
189
+ add_filter( 'pre_set_site_transient_update_plugins', [ $this, 'check_for_updates' ] );
190
  }
191
 
192
+ add_filter( 'tribe_licensable_addons', [ $this, 'build_addon_list' ] );
193
+ add_action( 'tribe_license_fields', [ $this, 'do_license_key_fields' ] );
194
+ add_action( 'tribe_settings_after_content_tab_licenses', [ $this, 'do_license_key_javascript' ] );
195
+ add_action( 'tribe_settings_success_message', [ $this, 'do_license_key_success_message' ], 10, 2 );
196
+ add_action( 'load-plugins.php', [ $this, 'remove_default_inline_update_msg' ], 50 );
197
 
198
  // Key validation
199
+ add_filter( 'tribe_settings_save_field_value', [ $this, 'check_for_api_key_error' ], 10, 3 );
200
+ add_action( 'wp_ajax_pue-validate-key_' . $this->get_slug(), [ $this, 'ajax_validate_key' ] );
201
+ add_filter( 'tribe-pue-install-keys', [ $this, 'return_install_key' ] );
202
+ add_action( 'admin_enqueue_scripts', [ $this, 'maybe_display_json_error_on_plugins_page' ], 1 );
203
+ add_action( 'admin_init', [ $this, 'general_notifications' ] );
204
 
205
  // Package name
206
+ add_filter( 'upgrader_pre_download', [ Tribe__PUE__Package_Handler::instance(), 'filter_upgrader_pre_download' ], 5, 3 );
207
  }
208
 
209
  /********************** Getter / Setter Functions **********************/
319
  *
320
  * @param array $options
321
  */
322
+ private function set_options( $options = [] ) {
323
 
324
  $options = wp_parse_args(
325
+ $options, [
326
  'pue_option_name' => 'external_updates-' . $this->get_slug(),
327
  'apikey' => '',
328
  'check_period' => 12,
329
  'context' => 'component',
330
  'plugin_name' => '',
331
+ ]
332
  );
333
 
334
  $this->pue_option_name = $options['pue_option_name'];
343
  *
344
  * @param array $download_query
345
  */
346
+ private function set_download_query( $download_query = [] ) {
347
 
348
  if ( ! empty( $download_query ) ) {
349
  $this->download_query = $download_query;
392
  *
393
  * @param array $validate_query
394
  */
395
+ private function set_validate_query( $validate_query = [] ) {
396
 
397
  if ( ! empty( $validate_query ) ) {
398
  $this->validate_query = $validate_query;
472
  *
473
  * @return array list of addons
474
  */
475
+ public function build_addon_list( $addons = [] ) {
476
  $addons[] = $this->get_plugin_name();
477
 
478
  return $addons;
487
  */
488
  public function do_license_key_fields( $fields ) {
489
  // common fields whether licenses should be hidden or not
490
+ $to_insert = [
491
+ $this->pue_install_key . '-heading' => [
492
  'type' => 'heading',
493
  'label' => $this->get_plugin_name(),
494
+ ],
495
+ ];
496
 
497
  $no_license_tooltip = esc_html__( 'A valid license key is required for support and updates', 'tribe-common' );
498
  if ( 'event-aggregator' === $this->get_slug() ) {
505
 
506
  // we want to inject the following license settings at the end of the licenses tab
507
  if ( $this->should_show_network_editable_license() ) {
508
+ $to_insert[ $this->pue_install_key ] = [
509
  'type' => 'license_key',
510
  'size' => 'large',
511
  'validation_type' => 'license_key',
514
  'tooltip' => $no_license_tooltip,
515
  'parent_option' => false,
516
  'network_option' => true,
517
+ ];
518
  } elseif ( $this->should_show_subsite_editable_license() ) {
519
+ $to_insert[ $this->pue_install_key ] = [
520
  'type' => 'license_key',
521
  'size' => 'large',
522
  'validation_type' => 'license_key',
525
  'tooltip' => $no_license_tooltip,
526
  'parent_option' => false,
527
  'network_option' => false,
528
+ ];
529
  } elseif ( $this->should_show_overrideable_license() ) {
530
+ $to_insert[ $this->pue_install_key . '-state' ] = [
531
  'type' => 'html',
532
  'label' => sprintf( esc_attr__( 'License Key Status:', 'tribe-common' ) ),
533
+ 'label_attributes' => [ 'style' => 'width:auto;' ],
534
  'html' => sprintf( '<p>%s</p>', $this->get_network_license_state_string() ),
535
+ ];
536
 
537
  $override_id = $this->pue_install_key . '-override';
538
 
539
+ $to_insert[ $override_id ] = [
540
  'type' => 'checkbox_bool',
541
  'label' => esc_html__( 'Override network license key', 'tribe-common' ),
542
  'tooltip' => esc_html__( 'Check this box if you wish to override the network license key with your own', 'tribe-common' ),
543
  'default' => false,
544
  'validation_type' => 'boolean',
545
  'parent_option' => false,
546
+ 'attributes' => [ 'id' => $override_id . '-field' ],
547
+ ];
548
 
549
+ $to_insert[ $this->pue_install_key ] = [
550
  'type' => 'license_key',
551
  'size' => 'large',
552
  'validation_type' => 'license_key',
555
  'parent_option' => false,
556
  'network_option' => false,
557
  'class' => 'tribe-dependent',
558
+ 'fieldset_attributes' => [
559
  'data-depends' => '#' . $override_id . '-field',
560
  'data-condition-checked' => true,
561
+ ],
562
+ ];
563
  } else {
564
+ $to_insert[ $this->pue_install_key . '-state' ] = [
565
  'type' => 'html',
566
  'label' => sprintf( esc_attr__( 'License Key Status:', 'tribe-common' ) ),
567
+ 'label_attributes' => [ 'style' => 'width:auto;' ],
568
  'html' => sprintf( '<p>%s</p>', $this->get_network_license_state_string() ),
569
+ ];
570
  }
571
 
572
  $fields = self::array_insert_after_key( 'tribe-form-content-start', $fields, $to_insert );
663
 
664
  global $wpdb;
665
 
666
+ $stats = [
667
+ 'versions' => [
668
  'wp' => sanitize_text_field( $GLOBALS['wp_version'] ),
669
+ ],
670
+ 'network' => [
671
  'multisite' => 0,
672
  'network_activated' => 0,
673
  'active_sites' => 1,
674
+ ],
675
+ ];
676
 
677
  if ( is_multisite() ) {
678
  $sql_count = "
728
  }
729
  }
730
 
731
+ $stats['versions'] = [
732
  'wp' => sanitize_text_field( $GLOBALS['wp_version'] ),
733
  'php' => sanitize_text_field( phpversion() ),
734
  'mysql' => sanitize_text_field( $wpdb->db_version() ),
735
+ ];
736
 
737
+ $stats['theme'] = [
738
  'name' => sanitize_text_field( $theme->get( 'Name' ) ),
739
  'version' => sanitize_text_field( $theme->get( 'Version' ) ),
740
  'stylesheet' => sanitize_text_field( $theme->get_stylesheet() ),
741
  'template' => sanitize_text_field( $theme->get_template() ),
742
+ ];
743
 
744
  $stats['site_language'] = sanitize_text_field( get_locale() );
745
  $stats['user_language'] = sanitize_text_field( get_user_locale() );
747
  $stats['wp_debug'] = (int) ( defined( 'WP_DEBUG' ) && WP_DEBUG );
748
  $stats['site_timezone'] = sanitize_text_field( $timezone );
749
 
750
+ $stats['totals'] = [
751
  'all_post_types' => (int) $wpdb->get_var( "SELECT COUNT(*) FROM `{$wpdb->posts}`" ),
752
  'events' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_events' ) ),
753
  'venues' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_venue' ) ),
754
  'organizers' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->posts}` WHERE post_type = %s", 'tribe_organizer' ) ),
755
  'event_categories' => (int) $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM `{$wpdb->term_taxonomy}` WHERE taxonomy = %s", 'tribe_events_cat' ) ),
756
+ ];
757
 
758
  self::$stats_full = $stats;
759
 
892
  * @return array An associative array containing the license status response.
893
  */
894
  public function validate_key( $key, $network = false ) {
895
+ $response = [];
896
  $response['status'] = 0;
897
 
898
  if ( ! $key ) {
977
  * Echo JSON results for key validation
978
  */
979
  public function ajax_validate_key() {
 
980
  $key = isset( $_POST['key'] ) ? wp_unslash( $_POST['key'] ) : null;
981
  $nonce = isset( $_POST['_wpnonce'] ) ? wp_unslash( $_POST['_wpnonce'] ) : null;
982
 
983
+ if (
984
+ empty( $nonce )
985
+ || false === wp_verify_nonce( $nonce, 'pue-validate-key_' . $this->get_slug() )
986
+ ) {
987
+ $response = [
988
  'status' => 0,
989
  'message' => __( 'Please refresh the page and try your request again.', 'tribe-common' ),
990
+ ];
991
  } else {
992
  $response = $this->validate_key( $key );
993
  }
994
 
995
  echo json_encode( $response );
996
  exit;
 
997
  }
998
 
999
  /**
1083
  }
1084
 
1085
  $state = $this->get_state();
1086
+ $messages = [];
1087
  $plugin_updates = get_plugin_updates();
1088
  $update_available = isset( $plugin_updates[ $this->plugin_file ] );
1089
 
1133
  $message_row_html
1134
  );
1135
 
1136
+ $this->plugin_notice = [
1137
  'slug' => $this->plugin_file,
1138
  'message_row_html' => $message_row_html,
1139
+ ];
1140
 
1141
+ add_filter( 'tribe_plugin_notices', [ $this, 'add_notice_to_plugin_notices' ] );
1142
 
1143
  }
1144
 
1235
  *
1236
  * @return string $plugin_info
1237
  */
1238
+ public function request_info( $query_args = [] ) {
1239
  $query_args = apply_filters( 'tribe_puc_request_info_query_args-' . $this->get_slug(), $query_args );
1240
 
1241
  // Cache the API call so it only needs to be made once per plugin per page load.
1257
  }
1258
 
1259
  //Various options for the wp_remote_get() call. Plugins can filter these, too.
1260
+ $options = [
1261
  'body' => $query_args,
1262
  'timeout' => 15, //seconds
1263
+ 'headers' => [
1264
  'Accept' => 'application/json',
1265
+ ],
1266
+ ];
1267
  $options = apply_filters( 'tribe_puc_request_info_options-' . $this->get_slug(), $options );
1268
 
1269
  $url = sprintf( '%s/api/plugins/v2/license/validate', $this->get_pue_update_url() );
1327
  if ( isset( $plugin_info->api_invalid ) ) {
1328
  $plugin_info = Tribe__PUE__Utility::from_plugin_info( $plugin_info );
1329
  $plugin_info->license_error = $this->get_api_message( $plugin_info );
1330
+
1331
  return $plugin_info;
1332
  }
1333
 
1335
  $this->update_key( $plugin_info->new_install_key );
1336
  }
1337
 
1338
+ // Need to correct the download url so it contains the custom user data (e.g. api and any other parameters).
1339
  $download_query = $this->get_download_query();
1340
 
1341
  if ( ! empty( $download_query ) ) {
1416
  *
1417
  * @return array
1418
  */
1419
+ public function check_for_updates( $updates = [], $force_recheck = false ) {
1420
  $state = $this->get_state( $force_recheck );
1421
 
1422
  $state->lastCheck = time();
1427
 
1428
  $state->update = $this->request_update();
1429
 
1430
+ // If a null update was returned, skip to the end of the function.
1431
  if ( null !== $state->update ) {
1432
+ // Is there an update to insert?
1433
  if ( version_compare( $state->update->version, $this->get_installed_version(), '>' ) ) {
1434
  if ( empty( $updates ) ) {
1435
+ $updates = (object) [ 'response' => [] ];
1436
  }
1437
 
1438
  $updates->response[ $this->get_plugin_file() ] = $state->update->to_wp_format();
1466
  }
1467
 
1468
  if ( 'service' !== $this->context ) {
1469
+ $this->check_for_updates( [], true );
1470
  }
1471
 
1472
  $network_option = false;
1606
  * @return array $keys
1607
  *
1608
  */
1609
+ public function return_install_key( $keys = [] ) {
1610
  $key = $this->get_key();
1611
 
1612
  if ( ! empty( $key ) ) {
1657
  return false;
1658
  }
1659
 
1660
+ $map = [
1661
  'event-aggregator/event-aggregator.php' => 'the-events-calendar/the-events-calendar.php',
1662
+ ];
1663
 
1664
  $plugin_file = $this->get_plugin_file();
1665
 
1684
  * @return string The localized state string.
1685
  */
1686
  protected function get_network_license_state_string() {
1687
+ $states = [
1688
  'licensed' => esc_html__( 'A valid license has been entered by your network administrator.', 'tribe-common' ),
1689
  'not-licensed' => esc_html__( 'No license entered. Consult your network administrator.', 'tribe-common' ),
1690
  'expired' => esc_html__( 'Expired license. Consult your network administrator.', 'tribe-common' ),
1691
+ ];
1692
 
1693
  $response = $this->validate_key( $this->get_key( 'network' ), true );
1694
 
common/src/Tribe/Plugins.php CHANGED
@@ -9,71 +9,71 @@ if ( ! class_exists( 'Tribe__Plugins' ) ) {
9
  class Tribe__Plugins {
10
 
11
  /**
12
- * A list of tribe plugin's details in this format:
13
  *
14
- * array(
15
  * 'short_name' => Common name for the plugin, used in places such as WP Admin messages
16
  * 'class' => Main plugin class
17
  * 'thickbox_url' => Download or purchase URL for plugin from within /wp-admin/ thickbox
18
- * )
19
  */
20
- private $tribe_plugins = array(
21
- array(
22
  'short_name' => 'Event Tickets',
23
  'class' => 'Tribe__Tickets__Main',
24
  'thickbox_url' => 'plugin-install.php?tab=plugin-information&plugin=event-tickets&TB_iframe=true',
25
- ),
26
- array(
27
  'short_name' => 'Event Tickets Plus',
28
  'class' => 'Tribe__Tickets_Plus__Main',
29
- 'thickbox_url' => '//theeventscalendar.com/product/wordpress-event-tickets-plus/?TB_iframe=true',
30
- ),
31
- array(
32
  'short_name' => 'The Events Calendar',
33
  'class' => 'Tribe__Events__Main',
34
  'thickbox_url' => 'plugin-install.php?tab=plugin-information&plugin=the-events-calendar&TB_iframe=true',
35
- ),
36
- array(
37
  'short_name' => 'Events Calendar Pro',
38
  'class' => 'Tribe__Events__Pro__Main',
39
- 'thickbox_url' => '//theeventscalendar.com/product/wordpress-events-calendar-pro/?TB_iframe=true',
40
- ),
41
- array(
42
  'short_name' => 'Community Events',
43
  'class' => 'Tribe__Events__Community__Main',
44
- 'thickbox_url' => '//theeventscalendar.com/product/wordpress-community-events/?TB_iframe=true',
45
- ),
46
- array(
47
  'short_name' => 'Community Tickets',
48
  'class' => 'Tribe__Events__Community__Tickets__Main',
49
- 'thickbox_url' => '//theeventscalendar.com/product/community-tickets/?TB_iframe=true',
50
- ),
51
- array(
52
  'short_name' => 'Filter Bar',
53
  'class' => 'Tribe__Events__Filterbar__View',
54
- 'thickbox_url' => '//theeventscalendar.com/product/wordpress-events-filterbar/?TB_iframe=true',
55
- ),
56
- array(
57
  'short_name' => 'Facebook Events',
58
  'class' => 'Tribe__Events__Facebook__Importer',
59
- 'thickbox_url' => '//theeventscalendar.com/product/facebook-events/?TB_iframe=true',
60
- ),
61
- array(
62
  'short_name' => 'iCal Importer',
63
  'class' => 'Tribe__Events__Ical_Importer__Main',
64
- 'thickbox_url' => '//theeventscalendar.com/product/ical-importer/?TB_iframe=true',
65
- ),
66
- array(
67
  'short_name' => 'Eventbrite Tickets',
68
  'class' => 'Tribe__Events__Tickets__Eventbrite__Main',
69
- 'thickbox_url' => '//theeventscalendar.com/product/wordpress-eventbrite-tickets/?TB_iframe=true',
70
- ),
71
- array(
72
  'short_name' => 'Advanced Post Manager',
73
  'class' => 'Tribe_APM',
74
  'thickbox_url' => 'plugin-install.php?tab=plugin-information&plugin=advanced-post-manager&TB_iframe=true',
75
- ),
76
- );
77
 
78
  /**
79
  * Searches the plugin list for key/value pair and return the full details for that plugin
@@ -84,7 +84,7 @@ if ( ! class_exists( 'Tribe__Plugins' ) ) {
84
  * @return array|null
85
  */
86
  public function get_plugin_by_key( $search_key, $search_val ) {
87
- foreach ( $this->tribe_plugins as $plugin ) {
88
  if ( isset( $plugin[ $search_key ] ) && $plugin[ $search_key ] === $search_val ) {
89
  return $plugin;
90
  }
9
  class Tribe__Plugins {
10
 
11
  /**
12
+ * A list of tribe plugin's details in this array format:
13
  *
14
+ * [
15
  * 'short_name' => Common name for the plugin, used in places such as WP Admin messages
16
  * 'class' => Main plugin class
17
  * 'thickbox_url' => Download or purchase URL for plugin from within /wp-admin/ thickbox
18
+ * ]
19
  */
20
+ private $tribe_plugins = [
21
+ [
22
  'short_name' => 'Event Tickets',
23
  'class' => 'Tribe__Tickets__Main',
24
  'thickbox_url' => 'plugin-install.php?tab=plugin-information&plugin=event-tickets&TB_iframe=true',
25
+ ],
26
+ [
27
  'short_name' => 'Event Tickets Plus',
28
  'class' => 'Tribe__Tickets_Plus__Main',
29
+ 'thickbox_url' => 'https://theeventscalendar.com/product/wordpress-event-tickets-plus/?TB_iframe=true',
30
+ ],
31
+ [
32
  'short_name' => 'The Events Calendar',
33
  'class' => 'Tribe__Events__Main',
34
  'thickbox_url' => 'plugin-install.php?tab=plugin-information&plugin=the-events-calendar&TB_iframe=true',
35
+ ],
36
+ [
37
  'short_name' => 'Events Calendar Pro',
38
  'class' => 'Tribe__Events__Pro__Main',
39
+ 'thickbox_url' => 'https://theeventscalendar.com/product/wordpress-events-calendar-pro/?TB_iframe=true',
40
+ ],
41
+ [
42
  'short_name' => 'Community Events',
43
  'class' => 'Tribe__Events__Community__Main',
44
+ 'thickbox_url' => 'https://theeventscalendar.com/product/wordpress-community-events/?TB_iframe=true',
45
+ ],
46
+ [
47
  'short_name' => 'Community Tickets',
48
  'class' => 'Tribe__Events__Community__Tickets__Main',
49
+ 'thickbox_url' => 'https://theeventscalendar.com/product/community-tickets/?TB_iframe=true',
50
+ ],
51
+ [
52
  'short_name' => 'Filter Bar',
53
  'class' => 'Tribe__Events__Filterbar__View',
54
+ 'thickbox_url' => 'https://theeventscalendar.com/product/wordpress-events-filterbar/?TB_iframe=true',
55
+ ],
56
+ [
57
  'short_name' => 'Facebook Events',
58
  'class' => 'Tribe__Events__Facebook__Importer',
59
+ 'thickbox_url' => 'https://theeventscalendar.com/product/facebook-events/?TB_iframe=true',
60
+ ],
61
+ [
62
  'short_name' => 'iCal Importer',
63
  'class' => 'Tribe__Events__Ical_Importer__Main',
64
+ 'thickbox_url' => 'https://theeventscalendar.com/product/ical-importer/?TB_iframe=true',
65
+ ],
66
+ [
67
  'short_name' => 'Eventbrite Tickets',
68
  'class' => 'Tribe__Events__Tickets__Eventbrite__Main',
69
+ 'thickbox_url' => 'https://theeventscalendar.com/product/wordpress-eventbrite-tickets/?TB_iframe=true',
70
+ ],
71
+ [
72
  'short_name' => 'Advanced Post Manager',
73
  'class' => 'Tribe_APM',
74
  'thickbox_url' => 'plugin-install.php?tab=plugin-information&plugin=advanced-post-manager&TB_iframe=true',
75
+ ],
76
+ ];
77
 
78
  /**
79
  * Searches the plugin list for key/value pair and return the full details for that plugin
84
  * @return array|null
85
  */
86
  public function get_plugin_by_key( $search_key, $search_val ) {
87
+ foreach ( $this->get_list() as $plugin ) {
88
  if ( isset( $plugin[ $search_key ] ) && $plugin[ $search_key ] === $search_val ) {
89
  return $plugin;
90
  }
common/src/Tribe/Process/Handler.php CHANGED
@@ -147,6 +147,22 @@ abstract class Tribe__Process__Handler {
147
 
148
  check_ajax_referer( $this->identifier, 'nonce' );
149
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  $this->handle( $data_source );
151
 
152
  wp_die();
@@ -159,6 +175,12 @@ abstract class Tribe__Process__Handler {
159
  */
160
  wp_clear_scheduled_hook( $this->healthcheck_cron_hook_id, [ $data_source ] );
161
 
 
 
 
 
 
 
162
  $this->handle( $data_source );
163
  }
164
 
@@ -176,6 +198,8 @@ abstract class Tribe__Process__Handler {
176
  ( defined( 'TRIBE_NO_ASYNC' ) && true === TRIBE_NO_ASYNC )
177
  || true === (bool) getenv( 'TRIBE_NO_ASYNC' )
178
  ) {
 
 
179
  return $this->sync_handle( $this->data );
180
  }
181
 
@@ -183,6 +207,8 @@ abstract class Tribe__Process__Handler {
183
  $url = add_query_arg( $this->get_query_args(), $this->get_query_url() );
184
  $args = $this->get_post_args();
185
 
 
 
186
  return wp_remote_post( esc_url_raw( $url ), $args );
187
  }
188
 
@@ -201,7 +227,21 @@ abstract class Tribe__Process__Handler {
201
  $class = get_class( $this );
202
  $src = call_user_func( [ $class, 'action' ] );
203
  $logger->log( 'Could not schedule event for cron-based handling', Tribe__Log::ERROR, $src );
 
 
 
 
 
 
 
204
  }
 
 
 
 
 
 
 
205
  }
206
 
207
  return true;
147
 
148
  check_ajax_referer( $this->identifier, 'nonce' );
149
 
150
+ // Let's make sure to hydrate date from the request if not set.
151
+ if ( count( array_filter( $data_source ) ) < 1 ) {
152
+ $data_source = $_POST;
153
+ }
154
+
155
+ do_action(
156
+ 'tribe_log',
157
+ 'debug',
158
+ $this->identifier,
159
+ [
160
+ 'action' => 'async_handling',
161
+ 'data_source' => $data_source,
162
+ 'payload' => $_POST,
163
+ ]
164
+ );
165
+
166
  $this->handle( $data_source );
167
 
168
  wp_die();
175
  */
176
  wp_clear_scheduled_hook( $this->healthcheck_cron_hook_id, [ $data_source ] );
177
 
178
+ do_action(
179
+ 'tribe_log',
180
+ 'debug',
181
+ $this->identifier,
182
+ array_merge( [ 'action' => 'cron_handling' ], $data_source ) );
183
+
184
  $this->handle( $data_source );
185
  }
186
 
198
  ( defined( 'TRIBE_NO_ASYNC' ) && true === TRIBE_NO_ASYNC )
199
  || true === (bool) getenv( 'TRIBE_NO_ASYNC' )
200
  ) {
201
+ do_action( 'tribe_log', 'debug', $this->identifier, [ 'action' => 'sync_handle', 'data' => $this->data ] );
202
+
203
  return $this->sync_handle( $this->data );
204
  }
205
 
207
  $url = add_query_arg( $this->get_query_args(), $this->get_query_url() );
208
  $args = $this->get_post_args();
209
 
210
+ do_action( 'tribe_log', 'debug', $this->identifier, [ 'action' => 'async_dispatch', 'data' => $this->data ] );
211
+
212
  return wp_remote_post( esc_url_raw( $url ), $args );
213
  }
214
 
227
  $class = get_class( $this );
228
  $src = call_user_func( [ $class, 'action' ] );
229
  $logger->log( 'Could not schedule event for cron-based handling', Tribe__Log::ERROR, $src );
230
+
231
+ do_action(
232
+ 'tribe_log',
233
+ 'error',
234
+ $this->identifier,
235
+ [ 'action' => 'schedule_cron', 'data' => $this->data ]
236
+ );
237
  }
238
+
239
+ do_action(
240
+ 'tribe_log',
241
+ 'debug',
242
+ $this->identifier,
243
+ [ 'action' => 'schedule_cron', 'data' => $this->data ]
244
+ );
245
  }
246
 
247
  return true;
common/src/Tribe/Process/Post_Thumbnail_Setter.php CHANGED
@@ -42,7 +42,14 @@ class Tribe__Process__Post_Thumbnail_Setter extends Tribe__Process__Handler {
42
  throw new InvalidArgumentException( 'Post ID and featured image should be set before trying to dispatch.' );
43
  }
44
 
45
- $this->data( array( 'post_id' => $this->post_id, 'post_thumbnail' => trim( $this->post_thumbnail ) ) );
 
 
 
 
 
 
 
46
 
47
  return parent::dispatch();
48
  }
@@ -101,6 +108,8 @@ class Tribe__Process__Post_Thumbnail_Setter extends Tribe__Process__Handler {
101
  $data_source = isset( $data_source ) ? $data_source : $_POST;
102
 
103
  if ( ! isset( $data_source['post_id'], $data_source['post_thumbnail'] ) ) {
 
 
104
  return 0;
105
  }
106
 
@@ -112,19 +121,56 @@ class Tribe__Process__Post_Thumbnail_Setter extends Tribe__Process__Handler {
112
  $thumbnail_id = tribe_upload_image( $post_thumbnail );
113
 
114
  if ( false === $thumbnail_id ) {
 
 
 
 
 
 
 
 
 
 
115
  $logger->log_debug( "(ID: {$this->identifier}) - could not fetch {$post_thumbnail} for post {$id}, done.", $log_src );
116
 
117
  return 0;
118
  }
119
 
120
- $set = set_post_thumbnail( $id, $thumbnail_id );
 
 
 
121
 
122
  if ( false === $set ) {
 
 
 
 
 
 
 
 
 
 
 
 
123
  $logger->log_debug( "(ID: {$this->identifier}) - fetched {$post_thumbnail}, created attachment with ID {$thumbnail_id}, unable to set thumbnail for post {$id}, done.", $log_src );
124
 
125
  return $thumbnail_id;
126
  }
127
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  $logger->log_debug( "(ID: {$this->identifier}) - fetched {$post_thumbnail}, created attachment with ID {$thumbnail_id}, set thumbnail for post {$id}, done.", $log_src );
129
 
130
  return $thumbnail_id;
42
  throw new InvalidArgumentException( 'Post ID and featured image should be set before trying to dispatch.' );
43
  }
44
 
45
+ $data = [
46
+ 'post_id' => $this->post_id,
47
+ 'post_thumbnail' => trim( $this->post_thumbnail ),
48
+ ];
49
+
50
+ $this->data( $data );
51
+
52
+ do_action( 'tribe_log', 'debug', __CLASS__, $data );
53
 
54
  return parent::dispatch();
55
  }
108
  $data_source = isset( $data_source ) ? $data_source : $_POST;
109
 
110
  if ( ! isset( $data_source['post_id'], $data_source['post_thumbnail'] ) ) {
111
+ do_action( 'tribe_log', 'error', $this->identifier, [ 'data' => $data_source, ] );
112
+
113
  return 0;
114
  }
115
 
121
  $thumbnail_id = tribe_upload_image( $post_thumbnail );
122
 
123
  if ( false === $thumbnail_id ) {
124
+ do_action(
125
+ 'tribe_log',
126
+ 'error',
127
+ $this->identifier,
128
+ [
129
+ 'action' => 'fetch',
130
+ 'post_thumbnail' => $post_thumbnail,
131
+ 'post_id' => $id,
132
+ ]
133
+ );
134
  $logger->log_debug( "(ID: {$this->identifier}) - could not fetch {$post_thumbnail} for post {$id}, done.", $log_src );
135
 
136
  return 0;
137
  }
138
 
139
+ $set = true;
140
+ if ( (int) get_post_thumbnail_id( $id ) !== (int) $thumbnail_id ) {
141
+ $set = set_post_thumbnail( $id, $thumbnail_id );
142
+ }
143
 
144
  if ( false === $set ) {
145
+ do_action(
146
+ 'tribe_log',
147
+ 'error',
148
+ $this->identifier,
149
+ [
150
+ 'action' => 'set',
151
+ 'post_thumbnail' => $post_thumbnail,
152
+ 'attachment_id' => $thumbnail_id,
153
+ 'post_id' => $id,
154
+ ]
155
+ );
156
+
157
  $logger->log_debug( "(ID: {$this->identifier}) - fetched {$post_thumbnail}, created attachment with ID {$thumbnail_id}, unable to set thumbnail for post {$id}, done.", $log_src );
158
 
159
  return $thumbnail_id;
160
  }
161
 
162
+ do_action(
163
+ 'tribe_log',
164
+ 'debug',
165
+ $this->identifier,
166
+ [
167
+ 'action' => 'set',
168
+ 'post_thumbnail' => $post_thumbnail,
169
+ 'attachment_id' => $thumbnail_id,
170
+ 'post_id' => $id,
171
+ ]
172
+ );
173
+
174
  $logger->log_debug( "(ID: {$this->identifier}) - fetched {$post_thumbnail}, created attachment with ID {$thumbnail_id}, set thumbnail for post {$id}, done.", $log_src );
175
 
176
  return $thumbnail_id;
common/src/Tribe/Service_Providers/Tooltip.php CHANGED
@@ -39,7 +39,7 @@ class Tribe__Service_Providers__Tooltip extends tad_DI52_ServiceProvider {
39
  Tribe__Main::instance(),
40
  'tribe-tooltip-css',
41
  'tooltip.css',
42
- [],
43
  [ 'wp_enqueue_scripts', 'admin_enqueue_scripts' ]
44
  );
45
 
@@ -47,7 +47,7 @@ class Tribe__Service_Providers__Tooltip extends tad_DI52_ServiceProvider {
47
  Tribe__Main::instance(),
48
  'tribe-tooltip-js',
49
  'tooltip.js',
50
- [],
51
  [ 'wp_enqueue_scripts', 'admin_enqueue_scripts' ]
52
  );
53
  }
39
  Tribe__Main::instance(),
40
  'tribe-tooltip-css',
41
  'tooltip.css',
42
+ [ 'tribe-common-style' ],
43
  [ 'wp_enqueue_scripts', 'admin_enqueue_scripts' ]
44
  );
45
 
47
  Tribe__Main::instance(),
48
  'tribe-tooltip-js',
49
  'tooltip.js',
50
+ [ 'jquery', 'tribe-common' ],
51
  [ 'wp_enqueue_scripts', 'admin_enqueue_scripts' ]
52
  );
53
  }
common/src/Tribe/Settings.php CHANGED
@@ -295,45 +295,51 @@ if ( ! class_exists( 'Tribe__Settings' ) ) {
295
  * @return void
296
  */
297
  public function initTabs() {
298
- if ( isset( $_GET['page'] ) && $_GET['page'] == $this->adminSlug ) {
299
- // Load settings tab-specific helpers and enhancements
300
- Tribe__Admin__Live_Date_Preview::instance();
301
-
302
- do_action( 'tribe_settings_do_tabs' ); // this is the hook to use to add new tabs
303
- $this->tabs = (array) apply_filters( 'tribe_settings_tabs', array() );
304
- $this->allTabs = (array) apply_filters( 'tribe_settings_all_tabs', array() );
305
- $this->noSaveTabs = (array) apply_filters( 'tribe_settings_no_save_tabs', array() );
306
- if ( is_network_admin() ) {
307
- $this->defaultTab = apply_filters( 'tribe_settings_default_tab_network', 'network' );
308
- $this->currentTab = apply_filters( 'tribe_settings_current_tab', ( isset( $_GET['tab'] ) && $_GET['tab'] ) ? esc_attr( $_GET['tab'] ) : $this->defaultTab );
309
- $this->url = apply_filters(
310
- 'tribe_settings_url', add_query_arg(
311
- array(
312
- 'page' => $this->adminSlug,
313
- 'tab' => $this->currentTab,
314
- ), network_admin_url( 'settings.php' )
315
- )
316
- );
317
- }
318
- if ( ! is_network_admin() ) {
319
- $tabs_keys = array_keys( $this->tabs );
320
- $this->defaultTab = in_array( apply_filters( 'tribe_settings_default_tab', 'general' ), $tabs_keys ) ? apply_filters( 'tribe_settings_default_tab', 'general' ) : $tabs_keys[0];
321
- $this->currentTab = apply_filters( 'tribe_settings_current_tab', ( isset( $_GET['tab'] ) && $_GET['tab'] ) ? esc_attr( $_GET['tab'] ) : $this->defaultTab );
322
- $this->url = apply_filters(
323
- 'tribe_settings_url', add_query_arg(
324
- array(
325
- 'page' => $this->adminSlug,
326
- 'tab' => $this->currentTab,
327
- ),
328
- admin_url( self::$parent_page )
329
- )
330
- );
331
- }
332
- $this->fields_for_save = (array) apply_filters( 'tribe_settings_fields', array() );
333
- do_action( 'tribe_settings_after_do_tabs' );
334
- $this->fields = (array) apply_filters( 'tribe_settings_fields', array() );
335
- $this->validate();
336
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
337
  }
338
 
339
  /**
295
  * @return void
296
  */
297
  public function initTabs() {
298
+ if (
299
+ empty( $_GET['page'] )
300
+ || $_GET['page'] != $this->adminSlug
301
+ ) {
302
+ return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
303
  }
304
+
305
+ // Load settings tab-specific helpers and enhancements
306
+ Tribe__Admin__Live_Date_Preview::instance();
307
+
308
+ do_action( 'tribe_settings_do_tabs' ); // this is the hook to use to add new tabs
309
+ $this->tabs = (array) apply_filters( 'tribe_settings_tabs', [] );
310
+ $this->allTabs = (array) apply_filters( 'tribe_settings_all_tabs', [] );
311
+ $this->noSaveTabs = (array) apply_filters( 'tribe_settings_no_save_tabs', [] );
312
+
313
+ if ( is_network_admin() ) {
314
+ $this->defaultTab = apply_filters( 'tribe_settings_default_tab_network', 'network' );
315
+ $this->currentTab = apply_filters( 'tribe_settings_current_tab', ( isset( $_GET['tab'] ) && $_GET['tab'] ) ? esc_attr( $_GET['tab'] ) : $this->defaultTab );
316
+ $this->url = apply_filters(
317
+ 'tribe_settings_url', add_query_arg(
318
+ [
319
+ 'page' => $this->adminSlug,
320
+ 'tab' => $this->currentTab,
321
+ ], network_admin_url( 'settings.php' )
322
+ )
323
+ );
324
+ } else {
325
+ $tabs_keys = array_keys( $this->tabs );
326
+ $this->defaultTab = in_array( apply_filters( 'tribe_settings_default_tab', 'general' ), $tabs_keys ) ? apply_filters( 'tribe_settings_default_tab', 'general' ) : $tabs_keys[0];
327
+ $this->currentTab = apply_filters( 'tribe_settings_current_tab', ( isset( $_GET['tab'] ) && $_GET['tab'] ) ? esc_attr( $_GET['tab'] ) : $this->defaultTab );
328
+ $this->url = apply_filters(
329
+ 'tribe_settings_url', add_query_arg(
330
+ [
331
+ 'page' => $this->adminSlug,
332
+ 'tab' => $this->currentTab,
333
+ ],
334
+ admin_url( self::$parent_page )
335
+ )
336
+ );
337
+ }
338
+
339
+ $this->fields_for_save = (array) apply_filters( 'tribe_settings_fields', [] );
340
+ do_action( 'tribe_settings_after_do_tabs' );
341
+ $this->fields = (array) apply_filters( 'tribe_settings_fields', [] );
342
+ $this->validate();
343
  }
344
 
345
  /**
common/src/Tribe/Settings_Manager.php CHANGED
@@ -46,6 +46,9 @@ class Tribe__Settings_Manager {
46
  * @return void
47
  */
48
  public function do_setting_tabs() {
 
 
 
49
  include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/tribe-options-general.php';
50
  include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/tribe-options-display.php';
51
 
46
  * @return void
47
  */
48
  public function do_setting_tabs() {
49
+ // Make sure Thickbox is available regardless of which admin page we're on
50
+ add_thickbox();
51
+
52
  include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/tribe-options-general.php';
53
  include_once Tribe__Main::instance()->plugin_path . 'src/admin-views/tribe-options-display.php';
54
 
common/src/Tribe/Utils/Collection_Interface.php CHANGED
@@ -16,7 +16,7 @@ namespace Tribe\Utils;
16
  * @since 4.9.14
17
  * @package Tribe\Utils
18
  */
19
- interface Collection_Interface extends \ArrayAccess, \SeekableIterator, \Countable, \Serializable {
20
  /**
21
  * Returns all the items in the collection.
22
  *
16
  * @since 4.9.14
17
  * @package Tribe\Utils
18
  */
19
+ interface Collection_Interface extends \ArrayAccess, \SeekableIterator, \Countable, \Serializable, \JsonSerializable {
20
  /**
21
  * Returns all the items in the collection.
22
  *
common/src/Tribe/Utils/Lazy_Collection.php CHANGED
@@ -33,6 +33,7 @@ namespace Tribe\Utils;
33
  */
34
  class Lazy_Collection implements Collection_Interface {
35
  use Collection_Trait;
 
36
 
37
  /**
38
  * The callback in charge of providing the elements.
@@ -84,6 +85,7 @@ class Lazy_Collection implements Collection_Interface {
84
 
85
  $items = call_user_func( $this->callback );
86
  $this->items = (array) $items;
 
87
  }
88
 
89
  /**
@@ -105,4 +107,11 @@ class Lazy_Collection implements Collection_Interface {
105
 
106
  return null;
107
  }
 
 
 
 
 
 
 
108
  }
33
  */
34
  class Lazy_Collection implements Collection_Interface {
35
  use Collection_Trait;
36
+ use Lazy_Events;
37
 
38
  /**
39
  * The callback in charge of providing the elements.
85
 
86
  $items = call_user_func( $this->callback );
87
  $this->items = (array) $items;
88
+ $this->resolved();
89
  }
90
 
91
  /**
107
 
108
  return null;
109
  }
110
+
111
+ /**
112
+ * {@inheritDoc}
113
+ */
114
+ public function jsonSerialize() {
115
+ return $this->all();
116
+ }
117
  }
common/src/Tribe/Utils/Lazy_Events.php ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Provides methods for "lazy" objects to act upon life cycle events.
4
+ *
5
+ * @since 4.9.16
6
+ *
7
+ * @example
8
+ * ```php
9
+ * class Lazy_List_Of_Stuff {
10
+ * use Tribe\Utils\Lazy_Events;
11
+ *
12
+ * protected $list;
13
+ *
14
+ * public function fetch_list(){
15
+ * $cached = wp_cache_get( 'list_of_stuff_one' );
16
+ *
17
+ * if( false !== $cached ){
18
+ * return $cached;
19
+ *
20
+ * if( null === $this->list ){
21
+ * $this->list = really_expensive_calculation();
22
+ * }
23
+ *
24
+ * $this->resolved();
25
+ * }
26
+ *
27
+ * return $this->list;
28
+ * }
29
+ * }
30
+ *
31
+ * class Lazy_Value {
32
+ * use Tribe\Utils\Lazy_Events;
33
+ *
34
+ * protected $value;
35
+ *
36
+ * public function calculate_value(){
37
+ * $cached = wp_cache_get( 'expensive_value' );
38
+ *
39
+ * if( false !== $cached ){
40
+ * return $cached;
41
+ *
42
+ * if( null === $this->value ){
43
+ * $this->value = really_expensive_calculation();
44
+ * }
45
+ *
46
+ * $this->resolved();
47
+ * }
48
+ *
49
+ * return $this->value;
50
+ * }
51
+ * }
52
+ *
53
+ * class List_And_Value {
54
+ * protected $list;
55
+ * protected $value;
56
+ *
57
+ * public function __construct( Lazy_List_Of_Stuff $list, Lazy_Value $value ){
58
+ * $this->list = $list;
59
+ * $this->value = $value;
60
+ * $this->list->on_resolve( [ $this, 'cache' ] );
61
+ * $this->value->on_resolve( [ $this, 'cache' ] );
62
+ * }
63
+ *
64
+ * public function cache(){
65
+ * wp_cache_set( 'list_and_value', [
66
+ * 'list' => $this->list->fetch_list(),
67
+ * 'value' => $this->value->calculate_value(),
68
+ * ]);
69
+ * }
70
+ *
71
+ * public function get_list(){
72
+ * $cached = wp_cache_get( 'list_and_value' );
73
+ *
74
+ * return $cached ? $cached['list'] : $this->list->fetch_list();
75
+ * }
76
+ *
77
+ * public function get_value(){
78
+ * $cached = wp_cache_get( 'list_and_value' );
79
+ *
80
+ * return $cached ? $cached['value'] : $this->value->fetch_value();
81
+ * }
82
+ * }
83
+ *
84
+ *
85
+ * $list = new Lazy_List_Of_Stuff();
86
+ * $value = new Lazy_Value();
87
+ * $list_and_value = new List_And_Value( $list, $value );
88
+ *
89
+ * // Accessing `value` will make it so that `list` too will be cached.
90
+ * $list_and_value->get_value();
91
+ * ````
92
+ *
93
+ * @package Tribe\Utils
94
+ */
95
+
96
+ namespace Tribe\Utils;
97
+
98
+ /**
99
+ * Trait Lazy_Events
100
+ *
101
+ * @since 4.9.16
102
+ *
103
+ * @package Tribe\Utils
104
+ *
105
+ * @property string $lazy_resolve_action The action to which the trait will hook to run the callback if the object
106
+ * resolved. Using classes should define the property if the default `shutdown`
107
+ * one is not correct.
108
+ * @property int $lazy_resolve_priority The priority at which the resolution callback will be hooked on the
109
+ * `$lazy_resolve_action`; defaults to `10`.
110
+ */
111
+ trait Lazy_Events {
112
+
113
+ /**
114
+ * The callback that will be called when, and if, the lazy object resolved at least once.
115
+ *
116
+ * @since 4.9.16
117
+ *
118
+ * @var
119
+ */
120
+ protected $lazy_resolve_callback;
121
+
122
+ /**
123
+ * Sets the callback that will be hooked to the resolve action when, and if, the `resolved` method is called.
124
+ *
125
+ * @since 4.9.16
126
+ *
127
+ * @param callable $callback The callback that will be hooked on the `$lazy_resolve_action` (defaults to `shutdown`)
128
+ * if the `resolved` method is called.
129
+ *
130
+ * @return static The object instance.
131
+ *
132
+ * @see Lazy_Events::resolved()
133
+ */
134
+ public function on_resolve( callable $callback ) {
135
+ $this->lazy_resolve_callback = $callback;
136
+
137
+ return $this;
138
+ }
139
+
140
+ /**
141
+ * Hooks the `$lazy_resolve_callback` to the `$lazy_resolve_action` with the `$lazy_resolve_priority` if set.
142
+ *
143
+ * @since 4.9.16
144
+ */
145
+ protected function resolved() {
146
+ if ( empty( $this->lazy_resolve_callback ) ) {
147
+ return;
148
+ }
149
+
150
+ $action = property_exists( $this, 'lazy_resolve_action' ) ?
151
+ $this->lazy_resolve_action
152
+ : 'shutdown';
153
+ $priority = property_exists( $this, 'lazy_resolve_priority' ) ?
154
+ $this->lazy_resolve_priority
155
+ : 10;
156
+
157
+ $hooked = has_action( $action, $this->lazy_resolve_callback );
158
+
159
+ // Let's play it safe and move the resoloution as late as possible.
160
+ $new_priority = false !== $hooked ? max( $hooked, $priority ) : $priority;
161
+
162
+ if ( is_numeric( $hooked ) && $hooked !== $new_priority ) {
163
+ remove_action( $action, $this->lazy_resolve_callback, $hooked );
164
+ }
165
+
166
+ add_action( $action, $this->lazy_resolve_callback, $new_priority );
167
+ }
168
+ }
common/src/Tribe/Utils/Lazy_String.php ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * A string lazily built, suited to any string value that might be costly to be built.
4
+ *
5
+ * @since 4.9.16
6
+ *
7
+ * @package Tribe\Utils
8
+ */
9
+
10
+
11
+ namespace Tribe\Utils;
12
+
13
+
14
+ class Lazy_String implements \Serializable, \JsonSerializable {
15
+ use Lazy_Events;
16
+
17
+ /**
18
+ * The string value produced by the callback, cached.
19
+ *
20
+ * @since 4.9.16
21
+ *
22
+ * @var string
23
+ */
24
+ protected $string;
25
+
26
+ /**
27
+ * The callback that will be used to set the string value when called the first time.
28
+ *
29
+ * @since 4.9.16
30
+ *
31
+ * @var callable
32
+ */
33
+ protected $value_callback;
34
+
35
+ /**
36
+ * The callback that will be used to escape the string in the `escaped()` method..
37
+ *
38
+ * @since 4.9.16
39
+ *
40
+ * @var callable
41
+ */
42
+ protected $escape_callback;
43
+
44
+ /**
45
+ * The escaped string value.
46
+ *
47
+ * @since 4.9.16
48
+ *
49
+ * @var string
50
+ */
51
+ protected $escaped;
52
+
53
+ /**
54
+ * Lazy_String constructor.
55
+ *
56
+ * @param callable $callback The callback that will be used to populate the string on the first fetch.
57
+ * @param string|false $escape_callback The callback that will be used to escape the string in the `escaped`
58
+ * method.
59
+ */
60
+ public function __construct( callable $callback, $escape_callback = 'esc_html' ) {
61
+ $this->value_callback = $callback;
62
+ $this->escape_callback = $escape_callback;
63
+ }
64
+
65
+ /**
66
+ * Inits, and returns, the string value of the string.
67
+ *
68
+ * @since 4.9.16
69
+ *
70
+ * @return string The unescaped string value.
71
+ */
72
+ public function __toString() {
73
+ if ( null === $this->string ) {
74
+ $this->string = call_user_func( $this->value_callback );
75
+ $this->resolved();
76
+ }
77
+
78
+ return $this->string;
79
+ }
80
+
81
+ /**
82
+ * Returns the HTML ready, escaped version of the string.
83
+ *
84
+ * @since 4.9.16
85
+ *
86
+ * @return string The escaped version of the string.
87
+ */
88
+ public function escaped() {
89
+ if ( null !== $this->escaped ) {
90
+ return $this->escaped;
91
+ }
92
+
93
+ $this->escaped = empty( $this->escape_callback )
94
+ ? $this->__toString()
95
+ : call_user_func( $this->escape_callback, $this->__toString() );
96
+
97
+ return $this->escaped;
98
+ }
99
+
100
+ /**
101
+ * Returns the string value, just a proxy of the `__toString` method.
102
+ *
103
+ * @since 4.9.16
104
+ *
105
+ * @return string The string value.
106
+ */
107
+ public function value() {
108
+ return $this->__toString();
109
+ }
110
+
111
+ /**
112
+ * {@inheritDoc}
113
+ *
114
+ * @since 4.9.16
115
+ */
116
+ public function serialize() {
117
+ $serialized = serialize( [ $this->__toString(), $this->escaped() ] );
118
+
119
+ unset( $this->value_callback, $this->escape_callback );
120
+
121
+ return $serialized;
122
+ }
123
+
124
+ /**
125
+ * {@inheritDoc}
126
+ *
127
+ * @since 4.9.16
128
+ */
129
+ public function unserialize( $serialized ) {
130
+ list( $string, $escaped ) = unserialize( $serialized );
131
+ $this->string = $string;
132
+ $this->escaped = $escaped;
133
+ }
134
+
135
+ /**
136
+ * {@inheritDoc}
137
+ */
138
+ public function jsonSerialize() {
139
+ return $this->value();
140
+ }
141
+ }
common/src/Tribe/Utils/Post_Thumbnail.php CHANGED
@@ -28,6 +28,8 @@ use Tribe__Utils__Array as Arr;
28
  * @package Tribe\Utils
29
  */
30
  class Post_Thumbnail implements \ArrayAccess, \Serializable {
 
 
31
  /**
32
  * An array of the site image sizes, including the `full` one.
33
  *
@@ -55,6 +57,24 @@ class Post_Thumbnail implements \ArrayAccess, \Serializable {
55
  */
56
  protected $data;
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  /**
59
  * Post_Images constructor.
60
  *
@@ -68,6 +88,10 @@ class Post_Thumbnail implements \ArrayAccess, \Serializable {
68
  * {@inheritDoc}
69
  */
70
  public function __get( $property ) {
 
 
 
 
71
  return $this->offsetGet( $property );
72
  }
73
 
@@ -75,6 +99,10 @@ class Post_Thumbnail implements \ArrayAccess, \Serializable {
75
  * {@inheritDoc}
76
  */
77
  public function __set( $property, $value ) {
 
 
 
 
78
  $this->offsetSet( $property, $value );
79
  }
80
 
@@ -119,18 +147,17 @@ class Post_Thumbnail implements \ArrayAccess, \Serializable {
119
  * @return array An array of objects containing the post thumbnail data.
120
  */
121
  public function fetch_data() {
 
 
 
 
122
  if ( null !== $this->data ) {
123
  return $this->data;
124
  }
125
 
126
- $post_id = $this->post_id;
127
- $image_sizes = $this->get_image_sizes();
128
-
129
- $thumbnail_id = get_post_thumbnail_id( $post_id );
130
-
131
- if ( empty( $thumbnail_id ) ) {
132
- return [];
133
- }
134
 
135
  $thumbnail_data = array_combine(
136
  $image_sizes,
@@ -173,6 +200,8 @@ class Post_Thumbnail implements \ArrayAccess, \Serializable {
173
  */
174
  $thumbnail_data = apply_filters( 'tribe_post_thumbnail_data', $thumbnail_data, $post_id );
175
 
 
 
176
  return $thumbnail_data;
177
  }
178
 
@@ -247,4 +276,28 @@ class Post_Thumbnail implements \ArrayAccess, \Serializable {
247
  unset( $data['post_id'] );
248
  $this->data = $data;
249
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
  }
28
  * @package Tribe\Utils
29
  */
30
  class Post_Thumbnail implements \ArrayAccess, \Serializable {
31
+ use Lazy_Events;
32
+
33
  /**
34
  * An array of the site image sizes, including the `full` one.
35
  *
57
  */
58
  protected $data;
59
 
60
+ /**
61
+ * A flag property indicating whether the post thumbnail for the post exists or not.
62
+ *
63
+ * @since 4.9.16
64
+ *
65
+ * @var bool
66
+ */
67
+ protected $exists;
68
+
69
+ /**
70
+ * The post ID, if any, of the post thumbnail.
71
+ *
72
+ * @since 4.9.16
73
+ *
74
+ * @var int
75
+ */
76
+ protected $thumbnail_id;
77
+
78
  /**
79
  * Post_Images constructor.
80
  *
88
  * {@inheritDoc}
89
  */
90
  public function __get( $property ) {
91
+ if ( 'exists' === $property ) {
92
+ return $this->exists();
93
+ }
94
+
95
  return $this->offsetGet( $property );
96
  }
97
 
99
  * {@inheritDoc}
100
  */
101
  public function __set( $property, $value ) {
102
+ if ( 'exists' === $property ) {
103
+ throw new \InvalidArgumentException( 'The `Post_Thumbnail::exists` property cannot be set.' );
104
+ }
105
+
106
  $this->offsetSet( $property, $value );
107
  }
108
 
147
  * @return array An array of objects containing the post thumbnail data.
148
  */
149
  public function fetch_data() {
150
+ if ( ! $this->exists() ) {
151
+ return [];
152
+ }
153
+
154
  if ( null !== $this->data ) {
155
  return $this->data;
156
  }
157
 
158
+ $post_id = $this->post_id;
159
+ $image_sizes = $this->get_image_sizes();
160
+ $thumbnail_id = $this->thumbnail_id;
 
 
 
 
 
161
 
162
  $thumbnail_data = array_combine(
163
  $image_sizes,
200
  */
201
  $thumbnail_data = apply_filters( 'tribe_post_thumbnail_data', $thumbnail_data, $post_id );
202
 
203
+ $this->resolved();
204
+
205
  return $thumbnail_data;
206
  }
207
 
276
  unset( $data['post_id'] );
277
  $this->data = $data;
278
  }
279
+
280
+ /**
281
+ * Returns whether a post thumbnail is set for the post or not.
282
+ *
283
+ * @since 4.9.16
284
+ *
285
+ * @return bool Whether a post thumbnail is set for the post or not.
286
+ */
287
+ public function exists() {
288
+ if ( null !== $this->exists ) {
289
+ return $this->exists;
290
+ }
291
+
292
+ $thumbnail_id = get_post_thumbnail_id( $this->post_id );
293
+
294
+ if ( empty( $thumbnail_id ) ) {
295
+ $this->exists = false;
296
+ } else {
297
+ $this->thumbnail_id = $thumbnail_id;
298
+ $this->exists = true;
299
+ }
300
+
301
+ return $this->exists;
302
+ }
303
  }
common/src/Tribe/Validate.php CHANGED
@@ -109,8 +109,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
109
 
110
  /**
111
  * validates a field as a string containing only letters and numbers
112
- *
113
- * @return stdClass validation result object
114
  */
115
  public function alpha_numeric() {
116
  if ( preg_match( '/^[a-zA-Z0-9]+$/', $this->value ) ) {
@@ -124,8 +122,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
124
  /**
125
  * validates a field as a string containing only letters,
126
  * numbers and carriage returns
127
- *
128
- * @return stdClass validation result object
129
  */
130
  public function alpha_numeric_multi_line() {
131
  if ( preg_match( '/^[a-zA-Z0-9\s]+$/', $this->value ) ) {
@@ -140,8 +136,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
140
  /**
141
  * Validates a field as a string containing only letters,
142
  * numbers, dots and carriage returns
143
- *
144
- * @return stdClass validation result object
145
  */
146
  public function alpha_numeric_multi_line_with_dots_and_dashes() {
147
  if ( preg_match( '/^[a-zA-Z0-9\s.-]+$/', $this->value ) ) {
@@ -156,8 +150,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
156
  /**
157
  * Validates a field as a string containing only letters,
158
  * numbers, dashes and underscores
159
- *
160
- * @return stdClass validation result object
161
  */
162
  public function alpha_numeric_with_dashes_and_underscores() {
163
  $this->value = trim( $this->value );
@@ -173,8 +165,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
173
  * Validates a field as just "not empty".
174
  *
175
  * @since 4.7.6
176
- *
177
- * @return stdClass validation result object
178
  */
179
  public function not_empty() {
180
  $this->value = trim( $this->value );
@@ -189,8 +179,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
189
 
190
  /**
191
  * validates a field as being positive decimal
192
- *
193
- * @return stdClass validation result object
194
  */
195
  public function positive_decimal() {
196
  if ( preg_match( '/^[0-9]+(\.[0-9]+)?$/', $this->value ) && $this->value > 0 ) {
@@ -203,8 +191,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
203
 
204
  /**
205
  * validates a field as being positive decimal or percent
206
- *
207
- * @return stdClass validation result object
208
  */
209
  public function positive_decimal_or_percent() {
210
  if ( preg_match( '/^[0-9]+(\.[0-9]+)?%?$/', $this->value ) && $this->value > 0 ) {
@@ -217,8 +203,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
217
 
218
  /**
219
  * validates a field as being positive integers
220
- *
221
- * @return stdClass validation result object
222
  */
223
  public function positive_int() {
224
  if ( preg_match( '/^[0-9]+$/', $this->value ) && $this->value > 0 ) {
@@ -237,8 +221,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
237
  * with a similar name: positive_int(). This method WILL validate whole numbers that go beyond
238
  * values that PHP's int type supports, however, if someone enters something like that, that's
239
  * on them. Smart people do smart things.
240
- *
241
- * @return stdClass validation result object
242
  */
243
  public function int() {
244
  if ( preg_match( '/^-?[0-9]+$/', $this->value ) ) {
@@ -251,8 +233,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
251
 
252
  /**
253
  * validates & sanitizes fields as URL slugs
254
- *
255
- * @return stdClass validation result object
256
  */
257
  public function slug() {
258
  $maybe_valid_value = esc_url_raw( $this->value );
@@ -270,8 +250,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
270
 
271
  /**
272
  * validates & sanitizes fields as URLs
273
- *
274
- * @return stdClass validation result object
275
  */
276
  public function url() {
277
 
@@ -279,15 +257,13 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
279
  $this->result->valid = true;
280
  } else {
281
  $this->result->valid = false;
282
- $this->result->error = sprintf( esc_html__( '%s must be a valid absolute URL.', 'tribe-common' ), $this->label );
283
  }
284
  }
285
 
286
  /**
287
  * validates fields that have options (radios, dropdowns, etc.)
288
  * by making sure the value is part of the options array
289
- *
290
- * @return stdClass validation result object
291
  */
292
  public function options() {
293
  if ( array_key_exists( $this->value, $this->field['options'] ) ) {
@@ -328,10 +304,8 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
328
  /**
329
  * validates fields that have options (radios, dropdowns, etc.)
330
  * by making sure the value is part of the options array
331
- * then combines the value into an array containg the value
332
  * and name from the option
333
- *
334
- * @return stdClass validation result object
335
  */
336
  public function options_with_label() {
337
  if ( array_key_exists( $this->value, $this->field['options'] ) ) {
@@ -350,8 +324,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
350
  * validates a field as not being able to be the same
351
  * as the specified value as specified in
352
  * $this->additional_args['compare_name']
353
- *
354
- * @return stdClass validation result object
355
  */
356
  public function cannot_be_the_same_as() {
357
  if ( ! isset( $this->additional_args['compare'] ) ) {
@@ -373,8 +345,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
373
 
374
  /**
375
  * validates a field as being a number or a percentage
376
- *
377
- * @return stdClass validation result object
378
  */
379
  public function number_or_percent() {
380
  if ( preg_match( '/^[0-9]+%{0,1}$/', $this->value ) ) {
@@ -387,8 +357,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
387
 
388
  /**
389
  * sanitizes an html field
390
- *
391
- * @return stdClass validation result object
392
  */
393
  public function html() {
394
  $this->value = balanceTags( $this->value );
@@ -397,8 +365,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
397
 
398
  /**
399
  * sanitizes a license key
400
- *
401
- * @return stdClass validation result object
402
  */
403
  public function license_key() {
404
  $this->value = trim( $this->value );
@@ -407,18 +373,14 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
407
 
408
  /**
409
  * sanitizes a textarea field
410
- *
411
- * @return stdClass validation result object
412
  */
413
  public function textarea() {
414
- $this->value = wp_kses( $this->value, array() );
415
  $this->result->valid = true;
416
  }
417
 
418
  /**
419
- * sanitizes a field as beeing a boolean
420
- *
421
- * @return stdClass validation result object
422
  */
423
  public function boolean() {
424
  $this->value = (bool) $this->value;
@@ -427,8 +389,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
427
 
428
  /**
429
  * validates a Google Maps Zoom field
430
- *
431
- * @return stdClass validation result object
432
  */
433
  public function google_maps_zoom() {
434
  if ( preg_match( '/^([0-9]|[0-1][0-9]|2[0-1])$/', $this->value ) ) {
@@ -441,9 +401,7 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
441
 
442
  /**
443
  * validates a field as being part of an address
444
- * allows for letters, numbers, dashses and spaces only
445
- *
446
- * @return stdClass validation result object
447
  */
448
  public function address() {
449
  $this->value = stripslashes( $this->value );
@@ -457,9 +415,7 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
457
 
458
  /**
459
  * validates a field as being a city or province
460
- * allows for letters, dashses and spaces only
461
- *
462
- * @return stdClass validation result object
463
  */
464
  public function city_or_province() {
465
  $this->value = stripslashes( $this->value );
@@ -473,8 +429,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
473
 
474
  /**
475
  * validates a field as being a zip code
476
- *
477
- * @return stdClass validation result object
478
  */
479
  public function zip() {
480
  if ( preg_match( '/^[0-9]{5}$/', $this->value ) ) {
@@ -487,8 +441,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
487
 
488
  /**
489
  * validates a field as being a phone number
490
- *
491
- * @return stdClass validation result object
492
  */
493
  public function phone() {
494
  if ( preg_match( '/^[0-9\(\)\+ -]+$/', $this->value ) ) {
@@ -501,8 +453,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
501
 
502
  /**
503
  * validates & sanitizes a field as being a country list
504
- *
505
- * @return stdClass validation result object
506
  */
507
  public function country_list() {
508
  $country_rows = explode( "\n", $this->value );
@@ -524,8 +474,6 @@ if ( ! class_exists( 'Tribe__Validate' ) ) {
524
  /**
525
  * automatically validate a field regardless of the value
526
  * Don't use this unless you know what you are doing
527
- *
528
- * @return stdClass validation result object
529
  */
530
  public function none() {
531
  $this->result->valid = true;
109
 
110
  /**
111
  * validates a field as a string containing only letters and numbers
 
 
112
  */
113
  public function alpha_numeric() {
114
  if ( preg_match( '/^[a-zA-Z0-9]+$/', $this->value ) ) {
122
  /**
123
  * validates a field as a string containing only letters,
124
  * numbers and carriage returns
 
 
125
  */
126
  public function alpha_numeric_multi_line() {
127
  if ( preg_match( '/^[a-zA-Z0-9\s]+$/', $this->value ) ) {
136
  /**
137
  * Validates a field as a string containing only letters,
138
  * numbers, dots and carriage returns
 
 
139
  */
140
  public function alpha_numeric_multi_line_with_dots_and_dashes() {
141
  if ( preg_match( '/^[a-zA-Z0-9\s.-]+$/', $this->value ) ) {
150
  /**
151
  * Validates a field as a string containing only letters,
152
  * numbers, dashes and underscores
 
 
153
  */
154
  public function alpha_numeric_with_dashes_and_underscores() {
155
  $this->value = trim( $this->value );
165
  * Validates a field as just "not empty".
166
  *
167
  * @since 4.7.6
 
 
168
  */
169
  public function not_empty() {
170
  $this->value = trim( $this->value );
179
 
180
  /**
181
  * validates a field as being positive decimal
 
 
182
  */
183
  public function positive_decimal() {
184
  if ( preg_match( '/^[0-9]+(\.[0-9]+)?$/', $this->value ) && $this->value > 0 ) {
191
 
192
  /**
193
  * validates a field as being positive decimal or percent
 
 
194
  */
195
  public function positive_decimal_or_percent() {
196
  if ( preg_match( '/^[0-9]+(\.[0-9]+)?%?$/', $this->value ) && $this->value > 0 ) {
203
 
204
  /**
205
  * validates a field as being positive integers
 
 
206
  */
207
  public function positive_int() {
208
  if ( preg_match( '/^[0-9]+$/', $this->value ) && $this->value > 0 ) {
221
  * with a similar name: positive_int(). This method WILL validate whole numbers that go beyond
222
  * values that PHP's int type supports, however, if someone enters something like that, that's
223
  * on them. Smart people do smart things.
 
 
224
  */
225
  public function int() {
226
  if ( preg_match( '/^-?[0-9]+$/', $this->value ) ) {
233
 
234
  /**
235
  * validates & sanitizes fields as URL slugs
 
 
236
  */
237
  public function slug() {
238
  $maybe_valid_value = esc_url_raw( $this->value );
250
 
251
  /**
252
  * validates & sanitizes fields as URLs
 
 
253
  */
254
  public function url() {
255
 
257
  $this->result->valid = true;
258
  } else {
259
  $this->result->valid = false;
260
+ $this->result->error = sprintf( esc_html__( '%s must be a valid URL.', 'tribe-common' ), $this->label );
261
  }
262
  }
263
 
264
  /**
265
  * validates fields that have options (radios, dropdowns, etc.)
266
  * by making sure the value is part of the options array
 
 
267
  */
268
  public function options() {
269
  if ( array_key_exists( $this->value, $this->field['options'] ) ) {
304
  /**
305
  * validates fields that have options (radios, dropdowns, etc.)
306
  * by making sure the value is part of the options array
307
+ * then combines the value into an array containing the value
308
  * and name from the option
 
 
309
  */
310
  public function options_with_label() {
311
  if ( array_key_exists( $this->value, $this->field['options'] ) ) {
324
  * validates a field as not being able to be the same
325
  * as the specified value as specified in
326
  * $this->additional_args['compare_name']
 
 
327
  */
328
  public function cannot_be_the_same_as() {
329
  if ( ! isset( $this->additional_args['compare'] ) ) {
345
 
346
  /**
347
  * validates a field as being a number or a percentage
 
 
348
  */
349
  public function number_or_percent() {
350
  if ( preg_match( '/^[0-9]+%{0,1}$/', $this->value ) ) {
357
 
358
  /**
359
  * sanitizes an html field
 
 
360
  */
361
  public function html() {
362
  $this->value = balanceTags( $this->value );
365
 
366
  /**
367
  * sanitizes a license key
 
 
368
  */
369
  public function license_key() {
370
  $this->value = trim( $this->value );
373
 
374
  /**
375
  * sanitizes a textarea field
 
 
376
  */
377
  public function textarea() {
378
+ $this->value = wp_kses( $this->value, [] );
379
  $this->result->valid = true;
380
  }
381
 
382
  /**
383
+ * sanitizes a field as being a boolean
 
 
384
  */
385
  public function boolean() {
386
  $this->value = (bool) $this->value;
389
 
390
  /**
391
  * validates a Google Maps Zoom field
 
 
392
  */
393
  public function google_maps_zoom() {
394
  if ( preg_match( '/^([0-9]|[0-1][0-9]|2[0-1])$/', $this->value ) ) {
401
 
402
  /**
403
  * validates a field as being part of an address
404
+ * allows for letters, numbers, dashes and spaces only
 
 
405
  */
406
  public function address() {
407
  $this->value = stripslashes( $this->value );
415
 
416
  /**
417
  * validates a field as being a city or province
418
+ * allows for letters, dashes and spaces only
 
 
419
  */
420
  public function city_or_province() {
421
  $this->value = stripslashes( $this->value );
429
 
430
  /**
431
  * validates a field as being a zip code
 
 
432
  */
433
  public function zip() {
434
  if ( preg_match( '/^[0-9]{5}$/', $this->value ) ) {
441
 
442
  /**
443
  * validates a field as being a phone number
 
 
444
  */
445
  public function phone() {
446
  if ( preg_match( '/^[0-9\(\)\+ -]+$/', $this->value ) ) {
453
 
454
  /**
455
  * validates & sanitizes a field as being a country list
 
 
456
  */
457
  public function country_list() {
458
  $country_rows = explode( "\n", $this->value );
474
  /**
475
  * automatically validate a field regardless of the value
476
  * Don't use this unless you know what you are doing
 
 
477
  */
478
  public function none() {
479
  $this->result->valid = true;
common/src/admin-views/tribe-options-general.php CHANGED
@@ -1,74 +1,77 @@
1
  <?php
2
 
3
- $generalTabFields = array(
4
- 'info-start' => array(
5
  'type' => 'html',
6
  'html' => '<div id="modern-tribe-info"><img src="' . plugins_url( 'resources/images/modern-tribe@2x.png', dirname( __FILE__ ) ) . '" alt="Modern Tribe Inc." title="Modern Tribe Inc.">',
7
- ),
8
- 'event-tickets-info' => array(
9
  'type' => 'html',
10
  'html' => '<p>' . sprintf( esc_html__( 'Thank you for using Event Tickets! All of us at Modern Tribe sincerely appreciate your support and we\'re excited to see you using our plugins. Check out our handy %1$sNew User Primer%2$s to get started.', 'tribe-common' ), '<a href="http://m.tri.be/18nd">', '</a>' ) . '</p>',
11
  'conditional' => ! class_exists( 'Tribe__Events__Main' ),
12
- ),
13
- 'event-tickets-upsell-info' => array(
14
  'type' => 'html',
15
  'html' => '<p>' . sprintf( esc_html__( 'Optimize your site\'s event listings with %1$sThe Events Calendar%2$s, our free calendar plugin. Looking for additional functionality including recurring events, user-submission, advanced ticket sales and more? Check out our %3$spremium add-ons%4$s.', 'tribe-common' ), '<a href="http://m.tri.be/18x6">', '</a>', '<a href="http://m.tri.be/18x5">', '</a>' ) . '</p>',
16
  'conditional' => ! class_exists( 'Tribe__Events__Main' ),
17
- ),
18
- 'upsell-info' => array(
19
  'type' => 'html',
20
  'html' => '<p>' . esc_html__( 'Looking for additional functionality including recurring events, custom meta, community events, ticket sales and more?', 'tribe-common' ) . ' <a href="' . Tribe__Main::$tec_url . 'products/?utm_source=generaltab&utm_medium=plugin-tec&utm_campaign=in-app">' . esc_html__( 'Check out the available add-ons', 'tribe-common' ) . '</a>.</p>',
21
  'conditional' => ( ! defined( 'TRIBE_HIDE_UPSELL' ) || ! TRIBE_HIDE_UPSELL ) && class_exists( 'Tribe__Events__Main' ),
22
- ),
23
- 'donate-link-heading' => array(
24
  'type' => 'heading',
25
  'label' => esc_html__( 'We hope our plugin is helping you out.', 'tribe-common' ),
26
  'conditional' => class_exists( 'Tribe__Events__Main' ),
27
- ),
28
- 'donate-link-info' => array(
29
  'type' => 'html',
30
  'html' => '<p>' . esc_html__( 'Are you thinking "Wow, this plugin is amazing! I should say thanks to Modern Tribe for all their hard work." The greatest thanks we could ask for is recognition. Add a small text-only link at the bottom of your calendar pointing to The Events Calendar project.', 'tribe-common' ) . '<br><a href="' . esc_url( plugins_url( 'resources/images/donate-link-screenshot.png', dirname( __FILE__ ) ) ) . '" class="thickbox">' . esc_html__( 'See an example of the link', 'tribe-common' ) . '</a>.</p>',
31
  'conditional' => class_exists( 'Tribe__Events__Main' ),
32
- ),
33
- 'donate-link' => array(
34
  'type' => 'checkbox_bool',
35
  'label' => esc_html__( 'Show The Events Calendar link', 'tribe-common' ),
36
  'default' => false,
37
  'validation_type' => 'boolean',
38
  'conditional' => class_exists( 'Tribe__Events__Main' ),
39
- ),
40
- 'info-end' => array(
41
  'type' => 'html',
42
  'html' => '</div>',
43
- ),
44
- 'tribe-form-content-start' => array(
45
  'type' => 'html',
46
  'html' => '<div class="tribe-settings-form-wrap">',
47
- ),
48
- );
49
 
50
  if ( is_super_admin() ) {
51
- $generalTabFields['debugEvents'] = array(
52
  'type' => 'checkbox_bool',
53
  'label' => esc_html__( 'Debug mode', 'tribe-common' ),
 
 
 
 
 
 
 
54
  'default' => false,
55
  'validation_type' => 'boolean',
56
- );
57
- $generalTabFields['debugEventsHelper'] = array(
58
- 'type' => 'html',
59
- 'html' => '<p class="tribe-field-indent tribe-field-description description" style="max-width:400px;">' . sprintf( esc_html__( 'Enable this option to log debug information. By default this will log to your server PHP error log. If you\'d like to see the log messages in your browser, then we recommend that you install the %s and look for the "Tribe" tab in the debug output.', 'tribe-common' ), '<a href="https://wordpress.org/extend/plugins/debug-bar/" target="_blank">' . esc_html__( 'Debug Bar Plugin', 'tribe-common' ) . '</a>' ) . '</p>',
60
- );
61
  }
62
 
63
  // Closes form
64
- $generalTabFields['tribe-form-content-end'] = array(
65
  'type' => 'html',
66
  'html' => '</div>',
67
- );
68
 
69
 
70
- $generalTab = array(
71
  'priority' => 10,
72
  'fields' => apply_filters( 'tribe_general_settings_tab_fields', $generalTabFields ),
73
- );
74
 
1
  <?php
2
 
3
+ $generalTabFields = [
4
+ 'info-start' => [
5
  'type' => 'html',
6
  'html' => '<div id="modern-tribe-info"><img src="' . plugins_url( 'resources/images/modern-tribe@2x.png', dirname( __FILE__ ) ) . '" alt="Modern Tribe Inc." title="Modern Tribe Inc.">',
7
+ ],
8
+ 'event-tickets-info' => [
9
  'type' => 'html',
10
  'html' => '<p>' . sprintf( esc_html__( 'Thank you for using Event Tickets! All of us at Modern Tribe sincerely appreciate your support and we\'re excited to see you using our plugins. Check out our handy %1$sNew User Primer%2$s to get started.', 'tribe-common' ), '<a href="http://m.tri.be/18nd">', '</a>' ) . '</p>',
11
  'conditional' => ! class_exists( 'Tribe__Events__Main' ),
12
+ ],
13
+ 'event-tickets-upsell-info' => [
14
  'type' => 'html',
15
  'html' => '<p>' . sprintf( esc_html__( 'Optimize your site\'s event listings with %1$sThe Events Calendar%2$s, our free calendar plugin. Looking for additional functionality including recurring events, user-submission, advanced ticket sales and more? Check out our %3$spremium add-ons%4$s.', 'tribe-common' ), '<a href="http://m.tri.be/18x6">', '</a>', '<a href="http://m.tri.be/18x5">', '</a>' ) . '</p>',
16
  'conditional' => ! class_exists( 'Tribe__Events__Main' ),
17
+ ],
18
+ 'upsell-info' => [
19
  'type' => 'html',
20
  'html' => '<p>' . esc_html__( 'Looking for additional functionality including recurring events, custom meta, community events, ticket sales and more?', 'tribe-common' ) . ' <a href="' . Tribe__Main::$tec_url . 'products/?utm_source=generaltab&utm_medium=plugin-tec&utm_campaign=in-app">' . esc_html__( 'Check out the available add-ons', 'tribe-common' ) . '</a>.</p>',
21
  'conditional' => ( ! defined( 'TRIBE_HIDE_UPSELL' ) || ! TRIBE_HIDE_UPSELL ) && class_exists( 'Tribe__Events__Main' ),
22
+ ],
23
+ 'donate-link-heading' => [
24
  'type' => 'heading',
25
  'label' => esc_html__( 'We hope our plugin is helping you out.', 'tribe-common' ),
26
  'conditional' => class_exists( 'Tribe__Events__Main' ),
27
+ ],
28
+ 'donate-link-info' => [
29
  'type' => 'html',
30
  'html' => '<p>' . esc_html__( 'Are you thinking "Wow, this plugin is amazing! I should say thanks to Modern Tribe for all their hard work." The greatest thanks we could ask for is recognition. Add a small text-only link at the bottom of your calendar pointing to The Events Calendar project.', 'tribe-common' ) . '<br><a href="' . esc_url( plugins_url( 'resources/images/donate-link-screenshot.png', dirname( __FILE__ ) ) ) . '" class="thickbox">' . esc_html__( 'See an example of the link', 'tribe-common' ) . '</a>.</p>',
31
  'conditional' => class_exists( 'Tribe__Events__Main' ),
32
+ ],
33
+ 'donate-link' => [
34
  'type' => 'checkbox_bool',
35
  'label' => esc_html__( 'Show The Events Calendar link', 'tribe-common' ),
36
  'default' => false,
37
  'validation_type' => 'boolean',
38
  'conditional' => class_exists( 'Tribe__Events__Main' ),
39
+ ],
40
+ 'info-end' => [
41
  'type' => 'html',
42
  'html' => '</div>',
43
+ ],
44
+ 'tribe-form-content-start' => [
45
  'type' => 'html',
46
  'html' => '<div class="tribe-settings-form-wrap">',
47
+ ],
48
+ ];
49
 
50
  if ( is_super_admin() ) {
51
+ $generalTabFields['debugEvents'] = [
52
  'type' => 'checkbox_bool',
53
  'label' => esc_html__( 'Debug mode', 'tribe-common' ),
54
+ 'tooltip' => sprintf(
55
+ esc_html__(
56
+ 'Enable this option to log debug information. By default this will log to your server PHP error log. If you\'d like to see the log messages in your browser, then we recommend that you install the %s and look for the "Tribe" tab in the debug output.',
57
+ 'tribe-common'
58
+ ),
59
+ '<a href="https://wordpress.org/extend/plugins/debug-bar/" target="_blank">' . esc_html__( 'Debug Bar Plugin', 'tribe-common' ) . '</a>'
60
+ ),
61
  'default' => false,
62
  'validation_type' => 'boolean',
63
+ ];
 
 
 
 
64
  }
65
 
66
  // Closes form
67
+ $generalTabFields['tribe-form-content-end'] = [
68
  'type' => 'html',
69
  'html' => '</div>',
70
+ ];
71
 
72
 
73
+ $generalTab = [
74
  'priority' => 10,
75
  'fields' => apply_filters( 'tribe_general_settings_tab_fields', $generalTabFields ),
76
+ ];
77
 
common/src/functions/template-tags/general.php CHANGED
@@ -588,43 +588,49 @@ function tribe_register_error( $indexes, $message ) {
588
  *
589
  * @since 4.3
590
  *
591
- * @param object $origin The main Object for the plugin you are enqueueing the script/style for
592
- * @param string $slug Slug to save the asset
593
- * @param string $file Which file will be loaded, either CSS or JS
594
- * @param array $deps Dependencies
595
- * @param string $action A WordPress Action, needs to happen after: `wp_enqueue_scripts`, `admin_enqueue_scripts`, or `login_enqueue_scripts`
596
- * @param array $arguments Look at `Tribe__Assets::register()` for more info
 
597
  *
598
- * @return array Which Assets was registered
599
  */
600
- function tribe_asset( $origin, $slug, $file, $deps = array(), $action = null, $arguments = array() ) {
601
- return tribe( 'assets' )->register( $origin, $slug, $file, $deps, $action, $arguments );
 
 
 
602
  }
603
 
604
  /**
605
- * Shortcut for Tribe__Assets::enqueue(), include assets
606
- *
607
- * @since 4.7
608
  *
609
- * @param string|array $slug Slug to enqueue
610
  *
611
- * @return string
612
  */
613
  function tribe_asset_enqueue( $slug ) {
614
- return tribe( 'assets' )->enqueue( $slug );
 
 
 
615
  }
616
 
617
  /**
618
- * Shortcut for Tribe__Assets::enqueue_group() include assets by groups
619
- *
620
- * @since 4.7
621
  *
622
- * @param string|array $group Which group(s) should be enqueued
623
  *
624
- * @return string
625
  */
626
  function tribe_asset_enqueue_group( $group ) {
627
- return tribe( 'assets' )->enqueue_group( $group );
 
 
 
628
  }
629
 
630
  /**
588
  *
589
  * @since 4.3
590
  *
591
+ * @param object $origin The main object for the plugin you are enqueueing the asset for.
592
+ * @param string $slug Slug to save the asset - passes through `sanitize_title_with_dashes()`.
593
+ * @param string $file The asset file to load (CSS or JS), including non-minified file extension.
594
+ * @param array $deps The list of dependencies.
595
+ * @param string|array|null $action The WordPress action(s) to enqueue on, such as `wp_enqueue_scripts`,
596
+ * `admin_enqueue_scripts`, or `login_enqueue_scripts`.
597
+ * @param array $arguments See `Tribe__Assets::register()` for more info.
598
  *
599
+ * @return object|false The asset that got registered or false on error.
600
  */
601
+ function tribe_asset( $origin, $slug, $file, $deps = [], $action = null, $arguments = [] ) {
602
+ /** @var Tribe__Assets $assets */
603
+ $assets = tribe( 'assets' );
604
+
605
+ return $assets->register( $origin, $slug, $file, $deps, $action, $arguments );
606
  }
607
 
608
  /**
609
+ * Shortcut for Tribe__Assets::enqueue() to include assets.
 
 
610
  *
611
+ * @since 4.7
612
  *
613
+ * @param string|array $slug Slug to enqueue
614
  */
615
  function tribe_asset_enqueue( $slug ) {
616
+ /** @var Tribe__Assets $assets */
617
+ $assets = tribe( 'assets' );
618
+
619
+ $assets->enqueue( $slug );
620
  }
621
 
622
  /**
623
+ * Shortcut for Tribe__Assets::enqueue_group() include assets by groups.
 
 
624
  *
625
+ * @since 4.7
626
  *
627
+ * @param string|array $group Which group(s) should be enqueued.
628
  */
629
  function tribe_asset_enqueue_group( $group ) {
630
+ /** @var Tribe__Assets $assets */
631
+ $assets = tribe( 'assets' );
632
+
633
+ $assets->enqueue_group( $group );
634
  }
635
 
636
  /**
common/src/functions/utils.php CHANGED
@@ -36,14 +36,10 @@ if ( ! function_exists( 'tribe_register_plugin' ) ) {
36
  * @param string $version The version
37
  * @param array $classes_req Any Main class files/tribe plugins required for this to run
38
  * @param array $dependencies an array of dependencies to check
39
- *
40
- * @return bool Indicates if plugin should continue initialization
41
  */
42
- function tribe_register_plugin( $file_path, $main_class, $version, $classes_req = array(), $dependencies = array() ) {
43
-
44
- $tribe_dependency = Tribe__Dependency::instance();
45
  $tribe_dependency->register_plugin( $file_path, $main_class, $version, $classes_req, $dependencies );
46
-
47
  }
48
  }
49
 
@@ -136,7 +132,9 @@ if ( ! function_exists( 'tribe_get_request_var' ) ) {
136
  *
137
  * The variable being tested for can be an array if you wish to find a nested value.
138
  *
139
- * @see Tribe__Utils__Array::get()
 
 
140
  *
141
  * @param string|array $var
142
  * @param mixed $default
@@ -144,7 +142,7 @@ if ( ! function_exists( 'tribe_get_request_var' ) ) {
144
  * @return mixed
145
  */
146
  function tribe_get_request_var( $var, $default = null ) {
147
- return Tribe__Utils__Array::get_in_any( array( $_GET, $_POST ), $var, $default );
148
  }
149
  }
150
 
36
  * @param string $version The version
37
  * @param array $classes_req Any Main class files/tribe plugins required for this to run
38
  * @param array $dependencies an array of dependencies to check
 
 
39
  */
40
+ function tribe_register_plugin( $file_path, $main_class, $version, $classes_req = [], $dependencies = [] ) {
41
+ $tribe_dependency = tribe( Tribe__Dependency::class );
 
42
  $tribe_dependency->register_plugin( $file_path, $main_class, $version, $classes_req, $dependencies );
 
43
  }
44
  }
45
 
132
  *
133
  * The variable being tested for can be an array if you wish to find a nested value.
134
  *
135
+ * @since 4.9.17 Included explicit check against $_REQUEST.
136
+ *
137
+ * @see Tribe__Utils__Array::get()
138
  *
139
  * @param string|array $var
140
  * @param mixed $default
142
  * @return mixed
143
  */
144
  function tribe_get_request_var( $var, $default = null ) {
145
+ return Tribe__Utils__Array::get_in_any( array( $_GET, $_POST, $_REQUEST ), $var, $default );
146
  }
147
  }
148
 
common/src/resources/css/tribe-common-admin.css CHANGED
@@ -45,13 +45,11 @@ textarea::-webkit-input-placeholder {
45
  color: #999;
46
  }
47
  .bubble {
48
- -khtml-border-radius: 3px;
49
  background-color: #f9f9f9;
50
  border-color: #dfdfdf;
51
- border-radius: 3px;
52
  border-spacing: 0;
53
  border-style: solid;
54
- border-style: solid;
55
  border-width: 1px;
56
  padding: 10px;
57
  }
@@ -77,14 +75,14 @@ td.tribe_message {
77
  #tribe-upgrade {
78
  background: #f6f6f6;
79
  border: 1px solid #ccc;
80
- border-radius: 5px;
81
  margin: 20px 0 30px;
82
  padding: 0 20px 20px;
83
  }
84
  #tribe-upgrade .message {
85
  background-color: #ffffe0;
86
  border-color: #e6db55;
87
- border-radius: 3px;
88
  border-style: solid;
89
  border-width: 1px;
90
  padding: 6px 12px;
@@ -92,22 +90,22 @@ border-radius: 3px;
92
  /* = Plugin Screen
93
  =============================================*/
94
  table.plugins .tribe-plugin-update-message {
95
- background: #D54E21; /* taken from colour scheme in list-tables.css */
96
- color: white;
97
- display: inline-table;
98
- margin: 6px 0;
99
- padding: 10px 12px;
100
  }
101
  table.plugins .tribe-plugin-update-message h4 {
102
- display: inline;
103
- font-weight: bold;
104
  margin-right: 8px;
105
  }
106
  table.plugins .tribe-plugin-update-message h4:after {
107
  content: ' \00BB ';
108
  }
109
  table.plugins .tribe-plugin-update-message a {
110
- color: white;
111
  text-decoration: underline;
112
  }
113
  /* = Settings Screen
@@ -161,10 +159,14 @@ table.plugins .tribe-plugin-update-message a {
161
  .tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection {
162
  margin-bottom: 18px;
163
  }
 
 
 
 
164
  .tribe-settings-form .tribe-settings-form-wrap h3 {
165
- background-color: #f9f9f9;
166
- margin-bottom: 10px;
167
- padding: 6px 0 6px 12px;
168
  }
169
  .tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,
170
  .tribe-settings-form .tribe-settings-form-wrap .system-info,
@@ -173,9 +175,6 @@ table.plugins .tribe-plugin-update-message a {
173
  margin: 0 0 10px;
174
  padding-left: 12px;
175
  }
176
- .tribe-settings-form #tribe-field-stylesheetOption p.description {
177
- color: #999;
178
- }
179
  .tribe_settings .tribe-field-indent {
180
  margin-left: 245px;
181
  }
@@ -201,10 +200,9 @@ table.plugins .tribe-plugin-update-message a {
201
  }
202
  /* Modern Tribe box */
203
  #modern-tribe-info {
204
- -khtml-border-radius: 4px;
205
  background-color: #f9f9f9;
206
  border: 1px solid #ccc;
207
- border-radius: 4px;
208
  margin: 20px 0;
209
  padding: 8px 20px 12px;
210
  }
@@ -333,20 +331,18 @@ border-radius: 4px;
333
  }
334
  /* miscellaneous */
335
  .tribe-admin-box-left {
336
- -khtml-border-radius: 4px;
337
  background-color: #f9f9f9;
338
  border: 1px solid #ccc;
339
- border-radius: 4px;
340
  float: left;
341
  margin: 20px 0;
342
  padding: 0 20px 15px;
343
  width: 20%;
344
  }
345
  .tribe-admin-box-right {
346
- -khtml-border-radius: 4px;
347
  background-color: #f9f9f9;
348
  border: 1px solid #ccc;
349
- border-radius: 4px;
350
  float: right;
351
  margin: 20px 0;
352
  padding: 0 20px 15px;
@@ -440,10 +436,9 @@ border-radius: 4px;
440
  padding-bottom: 10px;
441
  }
442
  .tribe-section-type-box {
443
- -khtml-border-radius: 4px;
444
  background-color: #f9f9f9;
445
  border: 1px solid #ccc;
446
- border-radius: 4px;
447
  padding: 8px 20px 12px;
448
  }
449
  .tribe-section-type-box img {
@@ -500,11 +495,11 @@ border-radius: 4px;
500
  padding-left: 10px;
501
  }
502
  .system-info-copy .system-info-copy-btn {
503
- padding: 6px;
504
- }
505
- .system-info-copy .system-info-copy-btn .dashicons {
506
- padding-right: 10px;
507
  }
 
 
 
508
  .template-updates-wrapper p {
509
  margin-top: 0;
510
  }
@@ -571,8 +566,7 @@ border-radius: 4px;
571
  }
572
  .ui-widget-shadow {
573
  background: #000;
574
- -webkit-border-radius: 5px;
575
- -moz-border-radius: 5px;
576
  filter: Alpha(Opacity=20);
577
  margin: -5px 0 0 -5px;
578
  opacity: .20;
@@ -733,7 +727,6 @@ border-radius: 4px;
733
  position: absolute;
734
  top: 0;
735
  transition: all 1s linear;
736
- webkit-transition: all 1s linear;
737
  width: 100%;
738
  z-index: 4;
739
  }
@@ -763,7 +756,7 @@ border-radius: 4px;
763
  .tribe_welcome_page.wrap h1:before {
764
  color: #555d66;
765
  content: '\f145';
766
- font-family: 'dashicons';
767
  font-size: 0.9em;
768
  line-height: 1;
769
  margin-right: 5px;
@@ -835,7 +828,7 @@ p.tribe-welcome-message {
835
  .tribe_welcome_page .tribe-half-column h4:before {
836
  color: #555d66;
837
  content: '\f145';
838
- font-family: 'dashicons';
839
  font-size: 21px;
840
  line-height: 1;
841
  margin-right: 10px;
@@ -860,7 +853,7 @@ p.tribe-welcome-message {
860
  }
861
  .tribe_update_page h4:before {
862
  content: '\f145';
863
- font-family: 'dashicons';
864
  font-size: 34px;
865
  line-height: 1;
866
  margin-right: 5px;
@@ -1170,7 +1163,6 @@ Red button styles.
1170
  Credit to https://github.com/jensjns/wp-admin-red-button
1171
  =============================================*/
1172
  .wp-core-ui .button-red {
1173
- -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
1174
  background-color: #a00;
1175
  border-bottom-color: #8D1F21;
1176
  border-color: #9B2124;
@@ -1183,7 +1175,6 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1183
  .wp-core-ui .button-red:hover,
1184
  .wp-core-ui .button-red.focus,
1185
  .wp-core-ui .button-red:focus {
1186
- -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
1187
  background-color: #a00;
1188
  border-color: #7F1C1F;
1189
  box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
@@ -1192,7 +1183,6 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1192
  }
1193
  .wp-core-ui .button-red.focus,
1194
  .wp-core-ui .button-red:focus {
1195
- -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
1196
  border-color: #500F0E;
1197
  box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
1198
  }
@@ -1200,7 +1190,6 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1200
  .wp-core-ui .button-red.active:hover,
1201
  .wp-core-ui .button-red.active:focus,
1202
  .wp-core-ui .button-red:active {
1203
- -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
1204
  background: #7F1C1F;
1205
  border-color: #601312 #AE2426 #AE2426 #AE2426;
1206
  box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
@@ -1213,7 +1202,7 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1213
  color: #E79496 !important;
1214
  background: #BA292B !important;
1215
  border-color: #7F1C1F !important;
1216
- box-shadow: none !important;
1217
  text-shadow: 0 -1px 0 rgba(0,0,0,0.1) !important;
1218
  cursor: default;
1219
  }
@@ -1261,14 +1250,20 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1261
  .checkmark.no-checkmark:after {
1262
  display: none;
1263
  }
1264
- .complete, .ok, .yes, .on,
 
 
 
1265
  [data-status="complete"],
1266
  [data-status="ok"],
1267
  [data-status="yes"],
1268
  [data-status="on"] {
1269
  color: #0AB152;
1270
  }
1271
- .incomplete, .ko, .no, .off,
 
 
 
1272
  [data-status="incomplete"],
1273
  [data-status="ko"],
1274
  [data-status="no"],
@@ -1312,11 +1307,13 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1312
  }
1313
  @media
1314
  only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {
 
1315
  #tribe-loading span {
1316
  background-image: url(../images/tribe-loading@2x.gif);
1317
  }
1318
  }
1319
  @media screen and (max-width: 782px) {
 
1320
  .tribe-half-column,
1321
  .tribe-row .tribe-half-column:last-child {
1322
  margin: 0 0 20px 0;
@@ -1328,6 +1325,7 @@ only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device
1328
  }
1329
  }
1330
  @media screen and ( max-width: 782px ) {
 
1331
  .events-cal .subsubsub {
1332
  float: none;
1333
  }
45
  color: #999;
46
  }
47
  .bubble {
 
48
  background-color: #f9f9f9;
49
  border-color: #dfdfdf;
50
+ border-radius: 3px;
51
  border-spacing: 0;
52
  border-style: solid;
 
53
  border-width: 1px;
54
  padding: 10px;
55
  }
75
  #tribe-upgrade {
76
  background: #f6f6f6;
77
  border: 1px solid #ccc;
78
+ border-radius: 5px;
79
  margin: 20px 0 30px;
80
  padding: 0 20px 20px;
81
  }
82
  #tribe-upgrade .message {
83
  background-color: #ffffe0;
84
  border-color: #e6db55;
85
+ border-radius: 3px;
86
  border-style: solid;
87
  border-width: 1px;
88
  padding: 6px 12px;
90
  /* = Plugin Screen
91
  =============================================*/
92
  table.plugins .tribe-plugin-update-message {
93
+ background: #d54e21; /* taken from color scheme in list-tables.css */
94
+ color: white;
95
+ display: inline-table;
96
+ margin: 6px 0;
97
+ padding: 10px 12px;
98
  }
99
  table.plugins .tribe-plugin-update-message h4 {
100
+ display: inline;
101
+ font-weight: bold;
102
  margin-right: 8px;
103
  }
104
  table.plugins .tribe-plugin-update-message h4:after {
105
  content: ' \00BB ';
106
  }
107
  table.plugins .tribe-plugin-update-message a {
108
+ color: white;
109
  text-decoration: underline;
110
  }
111
  /* = Settings Screen
159
  .tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection {
160
  margin-bottom: 18px;
161
  }
162
+ .tribe-settings-form .tribe-settings-form-wrap #tribe-field-stylesheetOption .description {
163
+ color: #999;
164
+ margin-left: 1px;
165
+ }
166
  .tribe-settings-form .tribe-settings-form-wrap h3 {
167
+ background-color: #f9f9f9;
168
+ margin-bottom: 10px;
169
+ padding: 6px 0 6px 12px;
170
  }
171
  .tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,
172
  .tribe-settings-form .tribe-settings-form-wrap .system-info,
175
  margin: 0 0 10px;
176
  padding-left: 12px;
177
  }
 
 
 
178
  .tribe_settings .tribe-field-indent {
179
  margin-left: 245px;
180
  }
200
  }
201
  /* Modern Tribe box */
202
  #modern-tribe-info {
 
203
  background-color: #f9f9f9;
204
  border: 1px solid #ccc;
205
+ border-radius: 4px;
206
  margin: 20px 0;
207
  padding: 8px 20px 12px;
208
  }
331
  }
332
  /* miscellaneous */
333
  .tribe-admin-box-left {
 
334
  background-color: #f9f9f9;
335
  border: 1px solid #ccc;
336
+ border-radius: 4px;
337
  float: left;
338
  margin: 20px 0;
339
  padding: 0 20px 15px;
340
  width: 20%;
341
  }
342
  .tribe-admin-box-right {
 
343
  background-color: #f9f9f9;
344
  border: 1px solid #ccc;
345
+ border-radius: 4px;
346
  float: right;
347
  margin: 20px 0;
348
  padding: 0 20px 15px;
436
  padding-bottom: 10px;
437
  }
438
  .tribe-section-type-box {
 
439
  background-color: #f9f9f9;
440
  border: 1px solid #ccc;
441
+ border-radius: 4px;
442
  padding: 8px 20px 12px;
443
  }
444
  .tribe-section-type-box img {
495
  padding-left: 10px;
496
  }
497
  .system-info-copy .system-info-copy-btn {
498
+ padding: 6px;
 
 
 
499
  }
500
+ .system-info-copy .system-info-copy-btn .dashicons {
501
+ padding-right: 10px;
502
+ }
503
  .template-updates-wrapper p {
504
  margin-top: 0;
505
  }
566
  }
567
  .ui-widget-shadow {
568
  background: #000;
569
+ border-radius: 5px;
 
570
  filter: Alpha(Opacity=20);
571
  margin: -5px 0 0 -5px;
572
  opacity: .20;
727
  position: absolute;
728
  top: 0;
729
  transition: all 1s linear;
 
730
  width: 100%;
731
  z-index: 4;
732
  }
756
  .tribe_welcome_page.wrap h1:before {
757
  color: #555d66;
758
  content: '\f145';
759
+ font-family: dashicons;
760
  font-size: 0.9em;
761
  line-height: 1;
762
  margin-right: 5px;
828
  .tribe_welcome_page .tribe-half-column h4:before {
829
  color: #555d66;
830
  content: '\f145';
831
+ font-family: dashicons;
832
  font-size: 21px;
833
  line-height: 1;
834
  margin-right: 10px;
853
  }
854
  .tribe_update_page h4:before {
855
  content: '\f145';
856
+ font-family: dashicons;
857
  font-size: 34px;
858
  line-height: 1;
859
  margin-right: 5px;
1163
  Credit to https://github.com/jensjns/wp-admin-red-button
1164
  =============================================*/
1165
  .wp-core-ui .button-red {
 
1166
  background-color: #a00;
1167
  border-bottom-color: #8D1F21;
1168
  border-color: #9B2124;
1175
  .wp-core-ui .button-red:hover,
1176
  .wp-core-ui .button-red.focus,
1177
  .wp-core-ui .button-red:focus {
 
1178
  background-color: #a00;
1179
  border-color: #7F1C1F;
1180
  box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
1183
  }
1184
  .wp-core-ui .button-red.focus,
1185
  .wp-core-ui .button-red:focus {
 
1186
  border-color: #500F0E;
1187
  box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
1188
  }
1190
  .wp-core-ui .button-red.active:hover,
1191
  .wp-core-ui .button-red.active:focus,
1192
  .wp-core-ui .button-red:active {
 
1193
  background: #7F1C1F;
1194
  border-color: #601312 #AE2426 #AE2426 #AE2426;
1195
  box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
1202
  color: #E79496 !important;
1203
  background: #BA292B !important;
1204
  border-color: #7F1C1F !important;
1205
+ box-shadow: none !important;
1206
  text-shadow: 0 -1px 0 rgba(0,0,0,0.1) !important;
1207
  cursor: default;
1208
  }
1250
  .checkmark.no-checkmark:after {
1251
  display: none;
1252
  }
1253
+ .complete,
1254
+ .ok,
1255
+ .yes,
1256
+ .on,
1257
  [data-status="complete"],
1258
  [data-status="ok"],
1259
  [data-status="yes"],
1260
  [data-status="on"] {
1261
  color: #0AB152;
1262
  }
1263
+ .incomplete,
1264
+ .ko,
1265
+ .no,
1266
+ .off,
1267
  [data-status="incomplete"],
1268
  [data-status="ko"],
1269
  [data-status="no"],
1307
  }
1308
  @media
1309
  only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-device-pixel-ratio: 2) {
1310
+
1311
  #tribe-loading span {
1312
  background-image: url(../images/tribe-loading@2x.gif);
1313
  }
1314
  }
1315
  @media screen and (max-width: 782px) {
1316
+
1317
  .tribe-half-column,
1318
  .tribe-row .tribe-half-column:last-child {
1319
  margin: 0 0 20px 0;
1325
  }
1326
  }
1327
  @media screen and ( max-width: 782px ) {
1328
+
1329
  .events-cal .subsubsub {
1330
  float: none;
1331
  }
common/src/resources/css/tribe-common-admin.min.css CHANGED
@@ -1 +1 @@
1
- .invalid input{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}input:-ms-input-placeholder,input::-ms-input-placeholder,textarea:-ms-input-placeholder,textarea::-ms-input-placeholder{color:#999}input::placeholder,textarea::placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.bubble{-khtml-border-radius:3px;background-color:#f9f9f9;border:1px solid #dfdfdf;border-radius:3px;border-spacing:0;border-style:solid;padding:10px}.tribe-sticky-tooltip{color:#bbb}td.tribe_message{padding-bottom:10px!important}#tribe_thanks{float:left;margin:5px 0 0;width:200px}.tribe_brand{font-family:Georgia,serif!important;font-size:17px!important;font-weight:400;margin:8px 0}#tribe-upgrade{background:#f6f6f6;border:1px solid #ccc;border-radius:5px;margin:20px 0 30px;padding:0 20px 20px}#tribe-upgrade .message{background-color:#ffffe0;border:1px solid #e6db55;border-radius:3px;padding:6px 12px}table.plugins .tribe-plugin-update-message{background:#d54e21;color:#fff;display:inline-table;margin:6px 0;padding:10px 12px}table.plugins .tribe-plugin-update-message h4{display:inline;font-weight:700;margin-right:8px}table.plugins .tribe-plugin-update-message h4:after{content:" \00BB "}table.plugins .tribe-plugin-update-message a{color:#fff;text-decoration:underline}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{clear:both;display:inline-block;padding:10px 0}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form legend{float:left;font-weight:700;margin-right:20px;width:220px}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-wrap :first-child{margin-top:0}.tribe-settings-form .tribe-field-checkbox_list label,.tribe-settings-form .tribe-field-radio label{display:block;margin:5px 0 5px 20px;text-indent:-20px}.tribe-settings-form .tribe-field-checkbox_list label>p,.tribe-settings-form .tribe-field-radio label>p{text-indent:0;margin-left:1px}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe-settings-form #tribe-field-stylesheetOption p.description{color:#999}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}#modern-tribe-info{-khtml-border-radius:4px;background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{height:18px;margin:10px 0;width:250px}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{-khtml-border-radius:4px;background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{-khtml-border-radius:4px;background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5}.ui-widget-shadow{background:#000;-webkit-border-radius:5px;-moz-border-radius:5px;filter:Alpha(Opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;webkit-transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page,.tribe_welcome_page{max-width:850px}.tribe_welcome_page.wrap h1{font-size:3em;line-height:1.2;margin-top:1em}.tribe_welcome_page.wrap h1:before{color:#555d66;content:"\f145";font-family:dashicons;font-size:.9em;line-height:1;margin-right:5px;position:relative;top:4px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_welcome_page .tribe-half-column h4,.tribe_welcome_page h2{font-size:24px;line-height:1.2;margin-bottom:20px}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3,.tribe_welcome_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4,.tribe_welcome_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p,.tribe_welcome_page p{font-size:15px}.tribe_welcome_page li{font-size:14px;margin-bottom:10px}p.tribe-welcome-message{font-size:18px;font-weight:400}.tribe_welcome_page .tribe-half-column h4{margin-top:1em}.tribe_welcome_page .tribe-half-column h4:before{color:#555d66;content:"\f145";font-family:dashicons;font-size:21px;line-height:1;margin-right:10px;position:relative;top:2px}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-sos]:before{content:"\f468"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-welcome-learn-more]:before{content:"\f118"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-megaphone]:before{content:"\f488"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-heart]:before{content:"\f487"}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}.tribe-welcome-video-wrapper{height:0;margin-bottom:40px;padding-bottom:56.25%;padding-top:25px;position:relative}.tribe-welcome-video-wrapper iframe{height:100%;left:0;position:absolute;top:0;width:100%}a.tribe-rating-link{text-decoration:none}.tribe-update-links,.tribe-welcome-links{margin-top:30px}.tribe_update_page li:before,.tribe_welcome_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-update-bar{display:inline-block}.tribe-update-bar .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-update-bar .progress .bar{background:#ffba00;height:1rem;width:1%;background:#7ad03a}#tribe-dialog-wrapper>div{padding:1rem}#tribe-dialog-wrapper>div .stage{display:none}#tribe-dialog-wrapper #heading{background:#fff}#tribe-dialog-wrapper label{display:block}#tribe-dialog-wrapper .select-single-container{border:1px solid #888;overflow-y:scroll;height:300px}#tribe-dialog-wrapper .select-single-container label{opacity:1;padding:3px 5px;transition:opacity .2s}#tribe-dialog-wrapper .select-single-container label:nth-child(odd){background:#fff}#tribe-dialog-wrapper .select-single-container label.selected{background:#0073aa;color:#fff;font-weight:700}#tribe-dialog-wrapper .select-single-container label input{display:none}#tribe-dialog-wrapper .select-single-container.updating label{opacity:.35;transition:opacity .2s}.ui-front{z-index:1000000}.select2-container .select2-choice abbr{top:6px}.wp-list-table.plugins .column-description .update-message{color:#d54e21}.api-check{padding:1em;min-height:100px}.api-check+.notice-dismiss:hover:before{color:#fff}.api-check:after,.api-check:before{content:"";display:table}.api-check:after{clear:both}.api-check .tribe-mascot{bottom:0;display:none;padding:0 1rem 0 0;position:absolute;right:0;top:0}.api-check .tribe-mascot img{display:inline-block;max-height:150px;max-width:150px;height:100%;width:auto;vertical-align:middle}.api-check p{line-height:1.7;margin-bottom:1em}.api-check a{text-decoration:none}.api-check a:hover{text-decoration:underline}.api-check .plugin-list{display:inline;font-weight:600;margin:0;padding:0}.api-check .plugin-list span.plugin-invalid:after{content:", "}.api-check .plugin-list span.plugin-invalid:last-of-type:after{content:""}.tribe-marketing-notice{padding:1em}.tribe-marketing-notice+.notice-dismiss:hover:before{color:#fff}.tribe-marketing-notice:after,.tribe-marketing-notice:before{content:"";display:table}.tribe-marketing-notice:after{clear:both}.tribe-marketing-notice .tribe-notice-icon{bottom:0;display:none;padding:1rem;position:absolute;left:0;top:0;width:125px}.tribe-marketing-notice .tribe-notice-icon:before{content:"";display:inline-block;height:100%;width:1%;vertical-align:middle}.tribe-marketing-notice .tribe-notice-icon img{display:inline-block;max-height:100%;max-width:96%;vertical-align:middle}.tribe-marketing-notice h3{margin-bottom:.5em;margin-top:.5em}.tribe-marketing-notice p{line-height:1.7;margin-bottom:.5em}.tribe-marketing-notice a{text-decoration:none}.tribe-marketing-notice a:hover{text-decoration:underline}.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:10px 10px 0 0}.tribe-dropdown,.tribe-ea-dropdown{max-width:100%;width:auto}.tribe-dropdown.select2-container-active .select2-choice,.tribe-ea-dropdown.select2-container-active .select2-choice{border-color:#5897fb;box-shadow:0 0 5px rgba(0,0,0,.1)}.tribe-dropdown.select2-dropdown-open .select2-choice,.tribe-ea-dropdown.select2-dropdown-open .select2-choice{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:#aaa}.tribe-dropdown .select2-choice,.tribe-ea-dropdown .select2-choice{background-image:none;border-radius:3px;border:1px solid #ccc}.tribe-dropdown .select2-choice>.select2-chosen,.tribe-ea-dropdown .select2-choice>.select2-chosen{white-space:normal}.tribe-dropdown .select2-choice .select2-arrow,.tribe-ea-dropdown .select2-choice .select2-arrow{background-image:none;background:transparent;border-left:0}.tribe-dropdown .select2-choice div,.tribe-ea-dropdown .select2-choice div{background-image:none;background:none;border-left:0}.tribe-dropdown.select2-container-multi .select2-choices,.tribe-ea-dropdown.select2-container-multi .select2-choices{background-image:none;border-radius:3px;border:1px solid #ccc;min-height:25px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-field,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field{line-height:25px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-field input,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field input{padding-top:0;padding-bottom:0}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice{margin-top:2px;padding-top:0;padding-bottom:0;line-height:19px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice div,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice div{line-height:inherit}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice-close,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice-close{top:3px;left:4px;transition-property:border,color}.select2-results .select2-selected{display:block}.select2-results .select2-selected>.select2-result-label{background-color:#efefef;color:#a1a1a1;cursor:default}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:400}.select2-results li.select2-result-with-children.select2-selected,.select2-results li.select2-result-with-children.select2-selected .select2-result{display:block}.select2-results li.select2-result-with-children.select2-selected>.select2-result-label{background-color:#efefef;color:#a1a1a1;cursor:default}.select2-results li.select2-result-with-children.select2-result-unselectable>.select2-result-label{color:#939393;font-weight:400}.wp-core-ui .button-red{-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.5);background-color:#a00;border-bottom-color:#8d1f21;border-color:#9b2124;box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red.hover,.wp-core-ui .button-red:focus,.wp-core-ui .button-red:hover{-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6);background-color:#a00;border-color:#7f1c1f;box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red:focus{-webkit-box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4);border-color:#500f0e;box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .button-red.active,.wp-core-ui .button-red.active:focus,.wp-core-ui .button-red.active:hover,.wp-core-ui .button-red:active{-webkit-box-shadow:inset 0 1px 0 rgba(0,0,0,.1);background:#7f1c1f;border-color:#601312 #ae2426 #ae2426;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);color:hsla(0,0%,100%,.95);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red-disabled,.wp-core-ui .button-red:disabled,.wp-core-ui .button-red[disabled]{color:#e79496!important;background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.ticket_form .select2-container .select2-choice .select2-arrow{display:none}.clear{zoom:1}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.checkmark:after{content:"";display:block;width:8px;height:15px;border:solid #0ab152;border-width:0 3px 3px 0;transform:rotate(45deg)}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}@media only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){#tribe-loading span{background-image:url(../images/tribe-loading@2x.gif)}}@media screen and (max-width:782px){.tribe-half-column,.tribe-row .tribe-half-column:last-child{margin:0 0 20px;width:100%}input[type=email]{width:100%}}@media screen and (max-width:782px){.events-cal .subsubsub{float:none}.events-cal .search-box{width:98%}.events-cal #search-submit{width:100%}.events-cal .tablenav.top{display:none}}@media screen and (min-width:500px){.api-check .tribe-mascot{display:block}.api-check .notice-content{margin-right:180px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-notice-icon{width:135px}.tribe-marketing-notice .tribe-notice-content{margin-left:145px}}@media screen and (min-width:600px){.tribe-marketing-notice .tribe-notice-icon{display:block}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-notice-content{margin-left:130px}}@media screen and (max-width:956px){.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:0 0 10px}.tribe-marketing-notice.tribe-bf-2018-tec em{clear:both;display:block}}
1
+ .invalid input{border:2px solid red!important}.valid input{border:1px solid green}.clearfix{zoom:1}.placeholder{color:#999;cursor:text;padding:4px}input:-ms-input-placeholder,input::-ms-input-placeholder,textarea:-ms-input-placeholder,textarea::-ms-input-placeholder{color:#999}input::placeholder,textarea::placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.bubble{background-color:#f9f9f9;border:1px solid #dfdfdf;border-radius:3px;border-spacing:0;padding:10px}.tribe-sticky-tooltip{color:#bbb}td.tribe_message{padding-bottom:10px!important}#tribe_thanks{float:left;margin:5px 0 0;width:200px}.tribe_brand{font-family:Georgia,serif!important;font-size:17px!important;font-weight:400;margin:8px 0}#tribe-upgrade{background:#f6f6f6;border:1px solid #ccc;border-radius:5px;margin:20px 0 30px;padding:0 20px 20px}#tribe-upgrade .message{background-color:#ffffe0;border:1px solid #e6db55;border-radius:3px;padding:6px 12px}table.plugins .tribe-plugin-update-message{background:#d54e21;color:#fff;display:inline-table;margin:6px 0;padding:10px 12px}table.plugins .tribe-plugin-update-message h4{display:inline;font-weight:700;margin-right:8px}table.plugins .tribe-plugin-update-message h4:after{content:" \00BB "}table.plugins .tribe-plugin-update-message a{color:#fff;text-decoration:underline}.tribe-settings-form{max-width:1000px}.tribe-settings-form fieldset{clear:both;display:inline-block;padding:10px 0}.tribe-settings-form fieldset.tribe-field-license_key legend{width:auto}.tribe-settings-form legend{float:left;font-weight:700;margin-right:20px;width:220px}.tribe-settings-form .tribe-field-wrap{float:left;max-width:500px}.tribe-settings-form .tribe-field-wrap :first-child{margin-top:0}.tribe-settings-form .tribe-field-checkbox_list label,.tribe-settings-form .tribe-field-radio label{display:block;margin:5px 0 5px 20px;text-indent:-20px}.tribe-settings-form .tribe-field-checkbox_list label>p,.tribe-settings-form .tribe-field-radio label>p{text-indent:0;margin-left:1px}.tribe-settings-form .tribe-field-checkbox_list label input,.tribe-settings-form .tribe-field-radio label input{margin-right:5px}.tribe-settings-form .tribe-settings-form-wrap .description,.tribe-settings-form .tribe-settings-form-wrap fieldset,.tribe-settings-form fieldset[id^=tribe-field-geoloc_]{padding-left:12px}.tribe-settings-form .tribe-settings-form-wrap fieldset .description{margin-left:0;max-width:450px;padding-left:0}.tribe-settings-form .tribe-settings-form-wrap fieldset .tribe-style-selection{margin-bottom:18px}.tribe-settings-form .tribe-settings-form-wrap #tribe-field-stylesheetOption .description{color:#999;margin-left:1px}.tribe-settings-form .tribe-settings-form-wrap h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}.tribe-settings-form .tribe-settings-form-wrap .contained,.tribe-settings-form .tribe-settings-form-wrap .system-info,.tribe-settings-form .tribe-settings-form-wrap .tribe-sysinfo-optin-msg,.tribe-settings-form .tribe-settings-form-wrap h3+p{margin:0 0 10px;padding-left:12px}.tribe_settings .tribe-field-indent{margin-left:245px}.tribe_settings #pu_dashboard_message{display:none}.tribe_settings .tribe-errors-list{margin-left:15px}.tribe_settings .expiring-license{color:red}.tribe_settings .tribe-error{border:1px solid red}.tribe_settings .tribe-field-description{margin-bottom:0;position:relative;top:-12px}.tribe_settings #ical-link{top:-14px}#modern-tribe-info{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:8px 20px 12px}#modern-tribe-info img{height:18px;margin:10px 0;width:250px}#modern-tribe-info ul{list-style:disc;margin-left:20px}#modern-tribe-info ul ul{list-style:circle}.tribe-field-inline-dropdown{margin-left:0;margin-right:0}.tribe-field-inline-text{line-height:28px;margin:0 2px}.tribe-field-textarea.tribe-size-small textarea{height:60px;width:180px}.tribe-field-textarea.tribe-size-medium textarea{height:80px;width:300px}.tribe-field-textarea.tribe-size-large textarea{height:120px;width:450px}.tribe-field-email.tribe-size-small input,.tribe-field-license_key.tribe-size-small input,.tribe-field-text.tribe-size-small input{width:50px}.tribe-field-email.tribe-size-medium input,.tribe-field-license_key.tribe-size-medium input,.tribe-field-text.tribe-size-medium input{width:225px}.tribe-field-email.tribe-size-large input,.tribe-field-license_key.tribe-size-large input,.tribe-field-text.tribe-size-large input{width:450px}.tribe-field-dropdown.tribe-size-small select{width:100px}.tribe-field-dropdown.tribe-size-medium select{width:300px}.tribe-field-dropdown.tribe-size-large select{width:450px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap{max-width:600px}.tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap .description{max-width:100%}.tribe-field-dropdown_chosen.tribe-size-small select{width:100px}.tribe-field-dropdown_chosen.tribe-size-medium select{width:200px}.tribe-field-dropdown_chosen.tribe-size-large select{width:300px}.tribe-field-wrap .tooltip:first-child{font-style:normal}.tribe-field.indent{margin-left:252px;width:75%}.tribe-field.indent legend{font-weight:400;width:auto}.tribe-field.indent .tribe-field-wrap{padding-right:12px}.tribe-field.indent.tribe-field-radio .tribe-field-wrap{clear:left;margin-top:12px}.tribe-field.light-bordered{background-color:#fff;border:1px solid #d3d3d3}.ajax-loading-license,.invalid-key,.valid-key{display:none;margin:0 5px}.ajax-loading-license{position:relative;top:5px}.key-validity{display:inline-block}.invalid-key,.optin-fail{color:red}.optin-success,.valid-key{color:green}.valid-key.service-msg{color:#b72}#additional-field-table{margin-bottom:20px}.tribe-admin-box-left{float:left;width:20%}.tribe-admin-box-left,.tribe-admin-box-right{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;margin:20px 0;padding:0 20px 15px}.tribe-admin-box-right{float:right;width:68%}.ajax-loader{float:right;margin:10px}.tribe-arrangeable-item{border:1px solid #d3d3d3;border-radius:3px}.tribe-arrangeable-item .ui-state-default{border:none}.tribe-arrangeable-item-top{padding:6px}.tribe-arrangeable-item-top:hover{cursor:move}.tribe-arrangeable-action{float:right}.tribe-arrangeable-child{background-color:#f9f9f9;border-top:1px solid #d3d3d3;display:none;padding:25px}.tribe-arrangeable-child label{display:block;margin:0 0 7px}.tribe_events_active_filter_type_options{margin:10px 0}.tribe_events_active_filter_type_options label{margin:7px 0}#event_organizer td small,.OrganizerInfo td small{display:block;margin:0;max-width:250px}#event_organizer .organizer-email,.OrganizerInfo .organizer-email{vertical-align:top}.tribe-table-field-label{max-width:100%;width:200px}#tribe-help-general,#tribe-help-sidebar{float:left;margin-top:20px}#tribe-help-general p{margin-left:15px}#tribe-help-general ul{list-style-type:square}#tribe-help-general ol,#tribe-help-general ul{margin-bottom:20px;margin-left:35px}#tribe-help-general h3{background-color:#f9f9f9;margin-bottom:10px;padding:6px 0 6px 12px}#tribe-help-general h3~h3{margin-top:2.25em}#tribe-help-general h3+p{margin:0 0 20px;padding-left:12px}#tribe-help-general{width:65%}.tribe-help-section{padding-bottom:10px}.tribe-section-type-box{background-color:#f9f9f9;border:1px solid #ccc;border-radius:4px;padding:8px 20px 12px}.tribe-section-type-box img{height:auto;margin:10px 0;max-width:300px}.tribe-section-type-box ul{list-style:disc;margin-left:20px}.tribe-section-type-box ul ul{list-style:circle}#tribe-log-controls{padding-bottom:1rem;padding-left:12px}#tribe-log-controls>div{display:inline-block;padding-right:1rem}#tribe-log-controls .working{opacity:1;transition:opacity .2s}#tribe-log-controls .working.hidden{opacity:0;transition:opacity .2s}#tribe-log-viewer,#tribe-system-info dl.support-stats,.template-updates-wrapper{background:#000;border-radius:2px;color:#888;max-height:400px;overflow:scroll;padding:10px}#tribe-system-info dl.support-stats dt,.template-updates-wrapper dt{clear:both;float:left;font-weight:700;text-transform:uppercase;width:25%}#tribe-system-info dl.support-stats dd,.template-updates-wrapper dd{margin-left:25%;padding-left:10px}.system-info-copy .system-info-copy-btn{padding:6px}.system-info-copy .system-info-copy-btn .dashicons{padding-right:10px}.template-updates-wrapper p{margin-top:0}#tribe-help-sidebar{margin:20px 0 0 3%;max-width:225px;width:32%}.tribe-help-plugin-info{border:1px solid #ccc;padding:0 12px 12px}.tribe-help-plugin-info dd,.tribe-help-plugin-info dt{display:inline;margin:0}.tribe-help-plugin-info dt{font-weight:700}.tribe-help-plugin-info dd:after{content:"";display:block;height:.4em}.tribe-help-plugin-info dd:last-child:after{height:0}.tribe-help-plugin-info+.tribe-help-plugin-info{margin-top:20px}.tribe-help-plugin-info>div{line-height:2em}.tribe-help-plugin-info .star-rating{display:inline-block;margin-left:3px;position:relative;top:-2px}.tribe-help-plugin-info .tribe-list-addons{color:#21a6cb;font-size:24px;list-style:circle inside;margin-bottom:10px;margin-top:10px;padding-left:4px}.tribe-help-plugin-info .tribe-list-addons a{font-size:13px;left:-5px;position:relative;top:-5px}.tribe-help-plugin-info .tribe-list-addons .tribe-active-addon{list-style:disc inside}.ui-widget-overlay{background:#666;filter:Alpha(Opacity=50);opacity:.5}.ui-widget-shadow{background:#000;border-radius:5px;filter:Alpha(Opacity=20);margin:-5px 0 0 -5px;opacity:.2;padding:5px}.ui-resizable{position:relative}.ui-resizable-handle{display:block;font-size:.1px;position:absolute;z-index:99999}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;left:0;top:-5px;width:100%}.ui-resizable-s{bottom:-5px;cursor:s-resize;height:7px;left:0;width:100%}.ui-resizable-e{cursor:e-resize;height:100%;right:-5px;top:0;width:7px}.ui-resizable-w{cursor:w-resize;height:100%;left:-5px;top:0;width:7px}.ui-resizable-se{bottom:1px;cursor:se-resize;height:12px;right:1px;width:12px}.ui-resizable-sw{bottom:-5px;cursor:sw-resize;height:9px;left:-5px;width:9px}.ui-resizable-nw{cursor:nw-resize;height:9px;left:-5px;top:-5px;width:9px}.ui-resizable-ne{cursor:ne-resize;height:9px;right:-5px;top:-5px;width:9px}.ui-dialog{padding:.2em;position:relative;width:375px}.ui-dialog .ui-dialog-titlebar{padding:.5em .3em .3em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0 .2em}.ui-dialog .ui-dialog-titlebar-close{height:18px;margin:-10px 0 0;padding:1px;position:absolute;right:.3em;top:50%;width:19px}.ui-dialog .ui-dialog-titlebar-close span{display:block;margin-left:-8px;margin-top:-8px}.ui-dialog .ui-dialog-titlebar-close:focus,.ui-dialog .ui-dialog-titlebar-close:hover{padding:0}.ui-dialog .ui-dialog-content{background:none;border:0;overflow:auto;padding:.5em 1em;zoom:1}.ui-dialog .ui-dialog-buttonpane{background-image:none;border-width:1px 0 0;margin:.5em 0 0;padding:.3em 1em .5em!important;text-align:right}.ui-dialog .ui-dialog-buttonpane button{cursor:pointer;line-height:1.4em;margin:.5em .4em!important;overflow:visible;padding:.2em .6em .3em;text-shadow:none;width:auto}.ui-dialog .ui-resizable-se{bottom:3px;height:14px;right:3px;width:14px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:none!important;text-align:center}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button .ui-button-text{display:block;line-height:1.4}#ui-datepicker-div{display:none}#tribe-loading{background:#fff;background:hsla(0,0%,100%,.8);display:none;height:100%;left:0;position:absolute;top:0;transition:all 1s linear;width:100%;z-index:4}#tribe-loading span{background:url(../images/tribe-loading.gif) 0 0 no-repeat;background-size:32px 32px;height:32px;left:50%;margin:-16px 0 0 -16px;position:absolute;top:50%;width:32px}.tribe_update_page,.tribe_welcome_page{max-width:850px}.tribe_welcome_page.wrap h1{font-size:3em;line-height:1.2;margin-top:1em}.tribe_welcome_page.wrap h1:before{color:#555d66;content:"\f145";font-family:dashicons;font-size:.9em;line-height:1;margin-right:5px;position:relative;top:4px}.tribe-half-column{float:left;margin-bottom:30px;margin-right:5%;width:45%}.tribe-row:after,.tribe-row:before{content:"";display:table}.tribe-row,.tribe-row:after{clear:both}.tribe-row .tribe-half-column:last-child{margin-right:0;width:50%}.tribe_welcome_page .tribe-half-column h4,.tribe_welcome_page h2{font-size:24px;line-height:1.2;margin-bottom:20px}.tribe_update_page h2{font-size:30px;line-height:1.2;margin-bottom:20px}.tribe_update_page h3,.tribe_welcome_page h3{font-size:24px;font-weight:400;line-height:24px;margin-top:0}.tribe_update_page h4,.tribe_welcome_page h4{font-size:18px;font-weight:600;line-height:18px;margin:0}.tribe_update_page p,.tribe_welcome_page p{font-size:15px}.tribe_welcome_page li{font-size:14px;margin-bottom:10px}p.tribe-welcome-message{font-size:18px;font-weight:400}.tribe_welcome_page .tribe-half-column h4{margin-top:1em}.tribe_welcome_page .tribe-half-column h4:before{color:#555d66;content:"\f145";font-family:dashicons;font-size:21px;line-height:1;margin-right:10px;position:relative;top:2px}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-sos]:before{content:"\f468"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-welcome-learn-more]:before{content:"\f118"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-megaphone]:before{content:"\f488"}.tribe_welcome_page .tribe-half-column h4[data-tribe-icon=dashicons-heart]:before{content:"\f487"}.tribe_update_page h4:before{content:"\f145";font-family:dashicons;font-size:34px;line-height:1;margin-right:5px;position:relative;top:5px}.tribe-welcome-video-wrapper{height:0;margin-bottom:40px;padding-bottom:56.25%;padding-top:25px;position:relative}.tribe-welcome-video-wrapper iframe{height:100%;left:0;position:absolute;top:0;width:100%}a.tribe-rating-link{text-decoration:none}.tribe-update-links,.tribe-welcome-links{margin-top:30px}.tribe_update_page li:before,.tribe_welcome_page li:before{content:"\2022";padding-right:3px}.tribe_update_page .rss-widget{margin:1em 0}.tribe_update_page a.rsswidget{font-size:14px;font-weight:400;line-height:1}.tribe_update_page .rss-widget li:before{display:none}.tribe-update-bar{display:inline-block}.tribe-update-bar .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-update-bar .progress .bar{background:#ffba00;height:1rem;width:1%;background:#7ad03a}#tribe-dialog-wrapper>div{padding:1rem}#tribe-dialog-wrapper>div .stage{display:none}#tribe-dialog-wrapper #heading{background:#fff}#tribe-dialog-wrapper label{display:block}#tribe-dialog-wrapper .select-single-container{border:1px solid #888;overflow-y:scroll;height:300px}#tribe-dialog-wrapper .select-single-container label{opacity:1;padding:3px 5px;transition:opacity .2s}#tribe-dialog-wrapper .select-single-container label:nth-child(odd){background:#fff}#tribe-dialog-wrapper .select-single-container label.selected{background:#0073aa;color:#fff;font-weight:700}#tribe-dialog-wrapper .select-single-container label input{display:none}#tribe-dialog-wrapper .select-single-container.updating label{opacity:.35;transition:opacity .2s}.ui-front{z-index:1000000}.select2-container .select2-choice abbr{top:6px}.wp-list-table.plugins .column-description .update-message{color:#d54e21}.api-check{padding:1em;min-height:100px}.api-check+.notice-dismiss:hover:before{color:#fff}.api-check:after,.api-check:before{content:"";display:table}.api-check:after{clear:both}.api-check .tribe-mascot{bottom:0;display:none;padding:0 1rem 0 0;position:absolute;right:0;top:0}.api-check .tribe-mascot img{display:inline-block;max-height:150px;max-width:150px;height:100%;width:auto;vertical-align:middle}.api-check p{line-height:1.7;margin-bottom:1em}.api-check a{text-decoration:none}.api-check a:hover{text-decoration:underline}.api-check .plugin-list{display:inline;font-weight:600;margin:0;padding:0}.api-check .plugin-list span.plugin-invalid:after{content:", "}.api-check .plugin-list span.plugin-invalid:last-of-type:after{content:""}.tribe-marketing-notice{padding:1em}.tribe-marketing-notice+.notice-dismiss:hover:before{color:#fff}.tribe-marketing-notice:after,.tribe-marketing-notice:before{content:"";display:table}.tribe-marketing-notice:after{clear:both}.tribe-marketing-notice .tribe-notice-icon{bottom:0;display:none;padding:1rem;position:absolute;left:0;top:0;width:125px}.tribe-marketing-notice .tribe-notice-icon:before{content:"";display:inline-block;height:100%;width:1%;vertical-align:middle}.tribe-marketing-notice .tribe-notice-icon img{display:inline-block;max-height:100%;max-width:96%;vertical-align:middle}.tribe-marketing-notice h3{margin-bottom:.5em;margin-top:.5em}.tribe-marketing-notice p{line-height:1.7;margin-bottom:.5em}.tribe-marketing-notice a{text-decoration:none}.tribe-marketing-notice a:hover{text-decoration:underline}.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:10px 10px 0 0}.tribe-dropdown,.tribe-ea-dropdown{max-width:100%;width:auto}.tribe-dropdown.select2-container-active .select2-choice,.tribe-ea-dropdown.select2-container-active .select2-choice{border-color:#5897fb;box-shadow:0 0 5px rgba(0,0,0,.1)}.tribe-dropdown.select2-dropdown-open .select2-choice,.tribe-ea-dropdown.select2-dropdown-open .select2-choice{border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:#aaa}.tribe-dropdown .select2-choice,.tribe-ea-dropdown .select2-choice{background-image:none;border-radius:3px;border:1px solid #ccc}.tribe-dropdown .select2-choice>.select2-chosen,.tribe-ea-dropdown .select2-choice>.select2-chosen{white-space:normal}.tribe-dropdown .select2-choice .select2-arrow,.tribe-ea-dropdown .select2-choice .select2-arrow{background-image:none;background:transparent;border-left:0}.tribe-dropdown .select2-choice div,.tribe-ea-dropdown .select2-choice div{background-image:none;background:none;border-left:0}.tribe-dropdown.select2-container-multi .select2-choices,.tribe-ea-dropdown.select2-container-multi .select2-choices{background-image:none;border-radius:3px;border:1px solid #ccc;min-height:25px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-field,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field{line-height:25px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-field input,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-field input{padding-top:0;padding-bottom:0}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice{margin-top:2px;padding-top:0;padding-bottom:0;line-height:19px}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice div,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice div{line-height:inherit}.tribe-dropdown.select2-container-multi .select2-choices .select2-search-choice-close,.tribe-ea-dropdown.select2-container-multi .select2-choices .select2-search-choice-close{top:3px;left:4px;transition-property:border,color}.select2-results .select2-selected{display:block}.select2-results .select2-selected>.select2-result-label{background-color:#efefef;color:#a1a1a1;cursor:default}.select2-results li.select2-result-with-children>.select2-result-label{font-weight:400}.select2-results li.select2-result-with-children.select2-selected,.select2-results li.select2-result-with-children.select2-selected .select2-result{display:block}.select2-results li.select2-result-with-children.select2-selected>.select2-result-label{background-color:#efefef;color:#a1a1a1;cursor:default}.select2-results li.select2-result-with-children.select2-result-unselectable>.select2-result-label{color:#939393;font-weight:400}.wp-core-ui .button-red{background-color:#a00;border-bottom-color:#8d1f21;border-color:#9b2124;box-shadow:inset 0 1px 0 rgba(120,200,230,.5);color:#fff;text-decoration:none;text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red.hover,.wp-core-ui .button-red:focus,.wp-core-ui .button-red:hover{background-color:#a00;border-color:#7f1c1f;box-shadow:inset 0 1px 0 rgba(120,200,230,.6);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.wp-core-ui .button-red.focus,.wp-core-ui .button-red:focus{border-color:#500f0e;box-shadow:inset 0 1px 0 rgba(120,200,230,.6),1px 1px 2px rgba(0,0,0,.4)}.wp-core-ui .button-red.active,.wp-core-ui .button-red.active:focus,.wp-core-ui .button-red.active:hover,.wp-core-ui .button-red:active{background:#7f1c1f;border-color:#601312 #ae2426 #ae2426;box-shadow:inset 0 1px 0 rgba(0,0,0,.1);color:hsla(0,0%,100%,.95);text-shadow:0 1px 0 rgba(0,0,0,.1)}.wp-core-ui .button-red-disabled,.wp-core-ui .button-red:disabled,.wp-core-ui .button-red[disabled]{color:#e79496!important;background:#ba292b!important;border-color:#7f1c1f!important;box-shadow:none!important;text-shadow:0 -1px 0 rgba(0,0,0,.1)!important;cursor:default}.ticket_form .select2-container .select2-choice .select2-arrow{display:none}.clear{zoom:1}.clear:after,.clear:before{content:" ";display:table}.clear:after{clear:both}.checkmark:after{content:"";display:block;width:8px;height:15px;border:solid #0ab152;border-width:0 3px 3px 0;transform:rotate(45deg)}.checkmark.checkmark-right:after{float:right;margin-right:2em}.checkmark.checkmark-left:after{float:left;margin-left:2em}.checkmark.no-checkmark:after{display:none}.complete,.ok,.on,.yes,[data-status=complete],[data-status=ok],[data-status=on],[data-status=yes]{color:#0ab152}.incomplete,.ko,.no,.off,[data-status=incomplete],[data-status=ko],[data-status=no],[data-status=off]{color:#ff2500}.plugin-card-event-tickets-plus .column-downloaded,.plugin-card-event-tickets-plus .column-rating,.plugin-card-event-tickets-plus .column-updated,.plugin-card-event-tickets .column-downloaded,.plugin-card-event-tickets .column-rating,.plugin-card-event-tickets .column-updated,.plugin-card-events-calendar-pro .column-downloaded,.plugin-card-events-calendar-pro .column-rating,.plugin-card-events-calendar-pro .column-updated,.plugin-card-events-community-tickets .column-downloaded,.plugin-card-events-community-tickets .column-rating,.plugin-card-events-community-tickets .column-updated,.plugin-card-events-community .column-downloaded,.plugin-card-events-community .column-rating,.plugin-card-events-community .column-updated,.plugin-card-image-widget-plus .column-downloaded,.plugin-card-image-widget-plus .column-rating,.plugin-card-image-widget-plus .column-updated,.plugin-card-image-widget .column-downloaded,.plugin-card-image-widget .column-rating,.plugin-card-image-widget .column-updated,.plugin-card-the-events-calendar .column-downloaded,.plugin-card-the-events-calendar .column-rating,.plugin-card-the-events-calendar .column-updated,.plugin-card-tribe-eventbrite .column-downloaded,.plugin-card-tribe-eventbrite .column-rating,.plugin-card-tribe-eventbrite .column-updated,.plugin-card-tribe-filterbar .column-downloaded,.plugin-card-tribe-filterbar .column-rating,.plugin-card-tribe-filterbar .column-updated{display:none}@media only screen and (-o-min-device-pixel-ratio:2/1),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min--moz-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){#tribe-loading span{background-image:url(../images/tribe-loading@2x.gif)}}@media screen and (max-width:782px){.tribe-half-column,.tribe-row .tribe-half-column:last-child{margin:0 0 20px;width:100%}input[type=email]{width:100%}}@media screen and (max-width:782px){.events-cal .subsubsub{float:none}.events-cal .search-box{width:98%}.events-cal #search-submit{width:100%}.events-cal .tablenav.top{display:none}}@media screen and (min-width:500px){.api-check .tribe-mascot{display:block}.api-check .notice-content{margin-right:180px}}@media screen and (min-width:600px) and (max-width:782px){.tribe-marketing-notice .tribe-notice-icon{width:135px}.tribe-marketing-notice .tribe-notice-content{margin-left:145px}}@media screen and (min-width:600px){.tribe-marketing-notice .tribe-notice-icon{display:block}}@media screen and (min-width:782px){.tribe-marketing-notice .tribe-notice-content{margin-left:130px}}@media screen and (max-width:956px){.tribe-marketing-notice.tribe-bf-2018-tec .button.button-primary{margin:0 0 10px}.tribe-marketing-notice.tribe-bf-2018-tec em{clear:both;display:block}}
common/src/resources/postcss/tribe-common-admin.pcss CHANGED
@@ -3,41 +3,45 @@
3
  .invalid input {
4
  border: 2px solid red !important;
5
  }
 
6
  .valid input {
7
  border: 1px solid green;
8
  }
 
9
  .clearfix {
10
  zoom: 1; /* For IE */
11
  }
 
12
  .placeholder {
13
  color: #999;
14
  cursor: text;
15
  padding: 4px 4px 4px 4px;
16
  }
 
17
  input::placeholder,
18
  textarea::placeholder {
19
  color: #999;
20
  }
 
21
  input::-webkit-input-placeholder,
22
  textarea::-webkit-input-placeholder {
23
  color: #999;
24
  }
 
25
  .bubble {
26
- -khtml-border-radius: 3px;
27
  background-color: #f9f9f9;
28
  border-color: #dfdfdf;
29
- -webkit-border-radius: 3px;
30
- -moz-border-radius: 3px;
31
- border-radius: 3px;
32
  border-spacing: 0;
33
  border-style: solid;
34
- border-style: solid;
35
  border-width: 1px;
36
  padding: 10px;
37
  }
 
38
  .tribe-sticky-tooltip {
39
  color: #bbb;
40
  }
 
41
  td.tribe_message {
42
  padding-bottom: 10px !important;
43
  }
@@ -47,6 +51,7 @@ td.tribe_message {
47
  margin: 5px 0 0 0;
48
  width: 200px;
49
  }
 
50
  .tribe_brand {
51
  font-family: Georgia, serif !important;
52
  font-size: 17px !important;
@@ -59,18 +64,15 @@ td.tribe_message {
59
  #tribe-upgrade {
60
  background: #f6f6f6;
61
  border: 1px solid #ccc;
62
- -webkit-border-radius: 5px;
63
- -moz-border-radius: 5px;
64
- border-radius: 5px;
65
  margin: 20px 0 30px;
66
  padding: 0 20px 20px;
67
  }
 
68
  #tribe-upgrade .message {
69
  background-color: #ffffe0;
70
  border-color: #e6db55;
71
- -webkit-border-radius: 3px;
72
- -moz-border-radius: 3px;
73
- border-radius: 3px;
74
  border-style: solid;
75
  border-width: 1px;
76
  padding: 6px 12px;
@@ -79,16 +81,17 @@ td.tribe_message {
79
  /* = Plugin Screen
80
  =============================================*/
81
  table.plugins {
 
82
  .tribe-plugin-update-message {
83
- background: #D54E21; /* taken from colour scheme in list-tables.css */
84
- color: white;
85
- display: inline-table;
86
- margin: 6px 0;
87
- padding: 10px 12px;
88
 
89
  h4 {
90
- display: inline;
91
- font-weight: bold;
92
  margin-right: 8px;
93
 
94
  &:after {
@@ -97,7 +100,7 @@ table.plugins {
97
  }
98
 
99
  a {
100
- color: white;
101
  text-decoration: underline;
102
  }
103
  }
@@ -159,6 +162,7 @@ table.plugins {
159
  }
160
 
161
  .tribe-settings-form-wrap {
 
162
  fieldset {
163
  .description {
164
  margin-left: 0;
@@ -170,11 +174,17 @@ table.plugins {
170
  margin-bottom: 18px;
171
  }
172
  }
 
 
 
 
 
 
173
 
174
  h3 {
175
- background-color: #f9f9f9;
176
- margin-bottom: 10px;
177
- padding: 6px 0 6px 12px;
178
  }
179
 
180
  .tribe-sysinfo-optin-msg,
@@ -185,12 +195,6 @@ table.plugins {
185
  padding-left: 12px;
186
  }
187
  }
188
-
189
- #tribe-field-stylesheetOption {
190
- p.description {
191
- color: #999;
192
- }
193
- }
194
  }
195
 
196
  .tribe_settings {
@@ -227,13 +231,9 @@ table.plugins {
227
 
228
  /* Modern Tribe box */
229
  #modern-tribe-info {
230
- -khtml-border-radius: 4px;
231
  background-color: #f9f9f9;
232
  border: 1px solid #ccc;
233
- -webkit-border-radius: 4px;
234
- -moz-border-radius: 4px;
235
- -o-border-radius: 4px;
236
- border-radius: 4px;
237
  margin: 20px 0;
238
  padding: 8px 20px 12px;
239
  }
@@ -268,10 +268,12 @@ table.plugins {
268
  height: 60px;
269
  width: 180px;
270
  }
 
271
  .tribe-field-textarea.tribe-size-medium textarea {
272
  height: 80px;
273
  width: 300px;
274
  }
 
275
  .tribe-field-textarea.tribe-size-large textarea {
276
  height: 120px;
277
  width: 450px;
@@ -282,11 +284,13 @@ table.plugins {
282
  .tribe-field-license_key.tribe-size-small input {
283
  width: 50px;
284
  }
 
285
  .tribe-field-text.tribe-size-medium input,
286
  .tribe-field-email.tribe-size-medium input,
287
  .tribe-field-license_key.tribe-size-medium input {
288
  width: 225px;
289
  }
 
290
  .tribe-field-text.tribe-size-large input,
291
  .tribe-field-email.tribe-size-large input,
292
  .tribe-field-license_key.tribe-size-large input {
@@ -296,15 +300,18 @@ table.plugins {
296
  .tribe-field-dropdown.tribe-size-small select {
297
  width: 100px;
298
  }
 
299
  .tribe-field-dropdown.tribe-size-medium select {
300
  width: 300px;
301
  }
 
302
  .tribe-field-dropdown.tribe-size-large select {
303
  width: 450px;
304
  }
305
 
306
  .tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap {
307
  max-width: 600px;
 
308
  .description{
309
  max-width: 100%;
310
  }
@@ -313,37 +320,46 @@ table.plugins {
313
  .tribe-field-dropdown_chosen.tribe-size-small select {
314
  width: 100px;
315
  }
 
316
  .tribe-field-dropdown_chosen.tribe-size-medium select {
317
  width: 200px;
318
  }
 
319
  .tribe-field-dropdown_chosen.tribe-size-large select {
320
  width: 300px;
321
  }
322
 
323
  .tribe-field-wrap {
 
324
  .tooltip:first-child {
325
  font-style: normal;
326
  }
327
  }
328
 
329
  .tribe-field {
 
330
  &.indent {
331
  margin-left: 252px;
332
  width: 75%;
 
333
  legend {
334
  font-weight: normal;
335
  width: auto;
336
  }
 
337
  .tribe-field-wrap {
338
  padding-right: 12px;
339
  }
 
340
  &.tribe-field-radio{
 
341
  .tribe-field-wrap {
342
  clear: left;
343
  margin-top: 12px;
344
  }
345
  }
346
  }
 
347
  &.light-bordered {
348
  background-color: white;
349
  border: solid lightgrey 1px;
@@ -357,21 +373,26 @@ table.plugins {
357
  display: none;
358
  margin: 0 5px;
359
  }
 
360
  .ajax-loading-license {
361
  position: relative;
362
  top: 5px;
363
  }
 
364
  .key-validity {
365
  display: inline-block;
366
  }
 
367
  .optin-fail,
368
  .invalid-key {
369
  color: red;
370
  }
 
371
  .optin-success,
372
  .valid-key {
373
  color: green;
374
  }
 
375
  .valid-key.service-msg {
376
  color: #b72;
377
  }
@@ -383,65 +404,67 @@ table.plugins {
383
 
384
  /* miscellaneous */
385
  .tribe-admin-box-left {
386
- -khtml-border-radius: 4px;
387
  background-color: #f9f9f9;
388
  border: 1px solid #ccc;
389
- -webkit-border-radius: 4px;
390
- -moz-border-radius: 4px;
391
- -o-border-radius: 4px;
392
- border-radius: 4px;
393
  float: left;
394
  margin: 20px 0;
395
  padding: 0 20px 15px;
396
  width: 20%;
397
  }
 
398
  .tribe-admin-box-right {
399
- -khtml-border-radius: 4px;
400
  background-color: #f9f9f9;
401
  border: 1px solid #ccc;
402
- -webkit-border-radius: 4px;
403
- -moz-border-radius: 4px;
404
- -o-border-radius: 4px;
405
- border-radius: 4px;
406
  float: right;
407
  margin: 20px 0;
408
  padding: 0 20px 15px;
409
  width: 68%;
410
  }
 
411
  .ajax-loader {
412
  float: right;
413
  margin: 10px;
414
  }
 
415
  .tribe-arrangeable-item {
416
  border: 1px solid lightGrey;
417
- -moz-border-radius: 3px;
418
- border-radius: 3px;
419
  }
 
420
  .tribe-arrangeable-item .ui-state-default {
421
  border: none;
422
  }
 
423
  .tribe-arrangeable-item-top {
424
  padding: 6px;
425
  }
 
426
  .tribe-arrangeable-item-top:hover {
427
  cursor: move;
428
  }
 
429
  .tribe-arrangeable-action {
430
  float: right;
431
  }
 
432
  .tribe-arrangeable-child {
433
  background-color: #f9f9f9;
434
  border-top: 1px solid lightGrey;
435
  display: none;
436
  padding: 25px;
437
  }
 
438
  .tribe-arrangeable-child label {
439
  display: block;
440
  margin: 0 0 7px 0;
441
  }
 
442
  .tribe_events_active_filter_type_options {
443
  margin: 10px 0;
444
  }
 
445
  .tribe_events_active_filter_type_options label {
446
  margin: 7px 0;
447
  }
@@ -452,6 +475,7 @@ table.plugins {
452
  margin: 0;
453
  max-width: 250px;
454
  }
 
455
  .OrganizerInfo .organizer-email,
456
  #event_organizer .organizer-email {
457
  vertical-align: top;
@@ -510,13 +534,9 @@ table.plugins {
510
  }
511
 
512
  .tribe-section-type-box {
513
- -khtml-border-radius: 4px;
514
  background-color: #f9f9f9;
515
  border: 1px solid #ccc;
516
- -webkit-border-radius: 4px;
517
- -moz-border-radius: 4px;
518
- -o-border-radius: 4px;
519
- border-radius: 4px;
520
  padding: 8px 20px 12px;
521
  }
522
 
@@ -584,13 +604,13 @@ table.plugins {
584
  }
585
 
586
  .system-info-copy {
587
- .system-info-copy-btn {
588
- padding: 6px;
589
 
590
- .dashicons {
591
- padding-right: 10px;
 
592
  }
593
- }
594
  }
595
 
596
  .template-updates-wrapper p {
@@ -670,28 +690,32 @@ table.plugins {
670
  filter: Alpha(Opacity=50);
671
  opacity: .50;
672
  }
 
673
  .ui-widget-shadow {
674
  background: #000;
675
- -webkit-border-radius: 5px;
676
- -moz-border-radius: 5px;
677
  filter: Alpha(Opacity=20);
678
  margin: -5px 0 0 -5px;
679
  opacity: .20;
680
  padding: 5px;
681
  }
 
682
  .ui-resizable {
683
  position: relative;
684
  }
 
685
  .ui-resizable-handle {
686
  display: block;
687
  font-size: .1px;
688
  position: absolute;
689
  z-index: 99999;
690
  }
 
691
  .ui-resizable-disabled .ui-resizable-handle,
692
  .ui-resizable-autohide .ui-resizable-handle {
693
  display: none;
694
  }
 
695
  .ui-resizable-n {
696
  cursor: n-resize;
697
  height: 7px;
@@ -699,6 +723,7 @@ table.plugins {
699
  top: -5px;
700
  width: 100%;
701
  }
 
702
  .ui-resizable-s {
703
  bottom: -5px;
704
  cursor: s-resize;
@@ -706,6 +731,7 @@ table.plugins {
706
  left: 0;
707
  width: 100%;
708
  }
 
709
  .ui-resizable-e {
710
  cursor: e-resize;
711
  height: 100%;
@@ -713,6 +739,7 @@ table.plugins {
713
  top: 0;
714
  width: 7px;
715
  }
 
716
  .ui-resizable-w {
717
  cursor: w-resize;
718
  height: 100%;
@@ -720,6 +747,7 @@ table.plugins {
720
  top: 0;
721
  width: 7px;
722
  }
 
723
  .ui-resizable-se {
724
  bottom: 1px;
725
  cursor: se-resize;
@@ -727,6 +755,7 @@ table.plugins {
727
  right: 1px;
728
  width: 12px;
729
  }
 
730
  .ui-resizable-sw {
731
  bottom: -5px;
732
  cursor: sw-resize;
@@ -734,6 +763,7 @@ table.plugins {
734
  left: -5px;
735
  width: 9px;
736
  }
 
737
  .ui-resizable-nw {
738
  cursor: nw-resize;
739
  height: 9px;
@@ -741,6 +771,7 @@ table.plugins {
741
  top: -5px;
742
  width: 9px;
743
  }
 
744
  .ui-resizable-ne {
745
  cursor: ne-resize;
746
  height: 9px;
@@ -748,19 +779,23 @@ table.plugins {
748
  top: -5px;
749
  width: 9px;
750
  }
 
751
  .ui-dialog {
752
  padding: .2em;
753
  position: relative;
754
  width: 375px;
755
  }
 
756
  .ui-dialog .ui-dialog-titlebar {
757
  padding: .5em .3em .3em 1em;
758
  position: relative;
759
  }
 
760
  .ui-dialog .ui-dialog-title {
761
  float: left;
762
  margin: .1em 0 .2em;
763
  }
 
764
  .ui-dialog .ui-dialog-titlebar-close {
765
  height: 18px;
766
  margin: -10px 0 0 0;
@@ -770,15 +805,18 @@ table.plugins {
770
  top: 50%;
771
  width: 19px;
772
  }
 
773
  .ui-dialog .ui-dialog-titlebar-close span {
774
  display: block;
775
  margin-left: -8px;
776
  margin-top: -8px;
777
  }
 
778
  .ui-dialog .ui-dialog-titlebar-close:hover,
779
  .ui-dialog .ui-dialog-titlebar-close:focus {
780
  padding: 0;
781
  }
 
782
  .ui-dialog .ui-dialog-content {
783
  background: none;
784
  border: 0;
@@ -786,6 +824,7 @@ table.plugins {
786
  padding: .5em 1em;
787
  zoom: 1;
788
  }
 
789
  .ui-dialog .ui-dialog-buttonpane {
790
  background-image: none;
791
  border-width: 1px 0 0 0;
@@ -793,6 +832,7 @@ table.plugins {
793
  padding: .3em 1em .5em !important;
794
  text-align: right;
795
  }
 
796
  .ui-dialog .ui-dialog-buttonpane button {
797
  cursor: pointer;
798
  line-height: 1.4em;
@@ -802,26 +842,32 @@ table.plugins {
802
  text-shadow: none;
803
  width: auto;
804
  }
 
805
  .ui-dialog .ui-resizable-se {
806
  bottom: 3px;
807
  height: 14px;
808
  right: 3px;
809
  width: 14px;
810
  }
 
811
  .ui-draggable .ui-dialog-titlebar {
812
  cursor: move;
813
  }
 
814
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
815
  float: none !important;
816
  text-align: center;
817
  }
 
818
  .ui-button-text-only .ui-button-text {
819
  padding: .4em 1em;
820
  }
 
821
  .ui-button .ui-button-text {
822
  display: block;
823
  line-height: 1.4;
824
  }
 
825
  #ui-datepicker-div {
826
  display: none;
827
  }
@@ -834,19 +880,14 @@ table.plugins {
834
  left: 0;
835
  position: absolute;
836
  top: 0;
837
- -moz-transition: all 1s linear;
838
- -ms-transition: all 1s linear;
839
- -o-transition: all 1s linear;
840
- transition: all 1s linear;
841
- webkit-transition: all 1s linear;
842
  width: 100%;
843
  z-index: 4;
844
  }
845
 
846
  #tribe-loading span {
847
  background: url(../images/tribe-loading.gif) 0 0 no-repeat;
848
- -webkit-background-size: 32px 32px;
849
- background-size: 32px 32px;
850
  height: 32px;
851
  left: 50%;
852
  margin: -16px 0 0 -16px;
@@ -862,6 +903,7 @@ only screen and (min--moz-device-pixel-ratio: 2),
862
  only screen and (-o-min-device-pixel-ratio: 2/1),
863
  only screen and (-webkit-min-device-pixel-ratio: 2),
864
  only screen and (min-device-pixel-ratio: 2) {
 
865
  #tribe-loading span {
866
  background-image: url(../images/tribe-loading@2x.gif);
867
  }
@@ -885,7 +927,7 @@ only screen and (min-device-pixel-ratio: 2) {
885
  &:before {
886
  color: #555d66;
887
  content: '\f145';
888
- font-family: 'dashicons';
889
  font-size: 0.9em;
890
  line-height: 1;
891
  margin-right: 5px;
@@ -972,7 +1014,7 @@ p.tribe-welcome-message {
972
  &:before {
973
  color: #555d66;
974
  content: '\f145';
975
- font-family: 'dashicons';
976
  font-size: 21px;
977
  line-height: 1;
978
  margin-right: 10px;
@@ -982,6 +1024,7 @@ p.tribe-welcome-message {
982
 
983
  /* "Life preserver" dashicon */
984
  &[data-tribe-icon="dashicons-sos"] {
 
985
  &:before {
986
  content: '\f468';
987
  }
@@ -989,6 +1032,7 @@ p.tribe-welcome-message {
989
 
990
  /* "Graduation cap" dashicon */
991
  &[data-tribe-icon="dashicons-welcome-learn-more"] {
 
992
  &:before {
993
  content: '\f118';
994
  }
@@ -996,6 +1040,7 @@ p.tribe-welcome-message {
996
 
997
  /* "Megaphone" dashicon */
998
  &[data-tribe-icon="dashicons-megaphone"] {
 
999
  &:before {
1000
  content: '\f488';
1001
  }
@@ -1003,16 +1048,16 @@ p.tribe-welcome-message {
1003
 
1004
  /* "Heart" dashicon */
1005
  &[data-tribe-icon="dashicons-heart"] {
 
1006
  &:before {
1007
  content: '\f487';
1008
  }
1009
  }
1010
  }
1011
 
1012
-
1013
  .tribe_update_page h4:before {
1014
  content: '\f145';
1015
- font-family: 'dashicons';
1016
  font-size: 34px;
1017
  line-height: 1;
1018
  margin-right: 5px;
@@ -1067,6 +1112,7 @@ a.tribe-rating-link {
1067
 
1068
  /* Media Queries for Mobile Dashboard */
1069
  @media screen and (max-width: 782px) {
 
1070
  .tribe-half-column,
1071
  .tribe-row .tribe-half-column:last-child {
1072
  margin: 0 0 20px 0;
@@ -1080,6 +1126,7 @@ a.tribe-rating-link {
1080
 
1081
 
1082
  @media screen and ( max-width: 782px ) {
 
1083
  .events-cal .subsubsub {
1084
  float: none;
1085
  }
@@ -1123,6 +1170,7 @@ a.tribe-rating-link {
1123
  ============================ */
1124
 
1125
  #tribe-dialog-wrapper {
 
1126
  & > div {
1127
  padding: 1rem;
1128
 
@@ -1182,7 +1230,9 @@ a.tribe-rating-link {
1182
  }
1183
 
1184
  .wp-list-table.plugins {
 
1185
  .column-description {
 
1186
  .update-message {
1187
  color: #d54e21;
1188
  }
@@ -1194,7 +1244,9 @@ a.tribe-rating-link {
1194
  min-height: 100px;
1195
 
1196
  & + .notice-dismiss {
 
1197
  &:hover {
 
1198
  &:before {
1199
  color: #fff;
1200
  }
@@ -1252,6 +1304,7 @@ a.tribe-rating-link {
1252
  text-decoration: underline;
1253
  }
1254
  }
 
1255
  .plugin-list {
1256
  display: inline;
1257
  font-weight: 600;
@@ -1278,7 +1331,9 @@ a.tribe-rating-link {
1278
  padding: 1em;
1279
 
1280
  & + .notice-dismiss {
 
1281
  &:hover {
 
1282
  &:before {
1283
  color: #fff;
1284
  }
@@ -1383,6 +1438,7 @@ a.tribe-rating-link {
1383
  width: auto;
1384
 
1385
  &.select2-container-active {
 
1386
  .select2-choice {
1387
  border-color: #5897fb;
1388
  box-shadow: 0 0 5px rgba( 0, 0, 0, .1 );
@@ -1390,6 +1446,7 @@ a.tribe-rating-link {
1390
  }
1391
 
1392
  &.select2-dropdown-open {
 
1393
  .select2-choice {
1394
  border-bottom-left-radius: 0;
1395
  border-bottom-right-radius: 0;
@@ -1420,6 +1477,7 @@ a.tribe-rating-link {
1420
  }
1421
 
1422
  &.select2-container-multi {
 
1423
  .select2-choices {
1424
  background-image: none;
1425
  border-radius: 3px;
@@ -1428,6 +1486,7 @@ a.tribe-rating-link {
1428
 
1429
  .select2-search-field {
1430
  line-height: 25px;
 
1431
  input {
1432
  padding-top: 0;
1433
  padding-bottom: 0;
@@ -1439,6 +1498,7 @@ a.tribe-rating-link {
1439
  padding-top: 0;
1440
  padding-bottom: 0;
1441
  line-height: 19px;
 
1442
  div {
1443
  line-height: inherit;
1444
  }
@@ -1466,6 +1526,7 @@ a.tribe-rating-link {
1466
  }
1467
 
1468
  li.select2-result-with-children {
 
1469
  > .select2-result-label {
1470
  font-weight: normal;
1471
  }
@@ -1497,7 +1558,6 @@ Red button styles.
1497
  Credit to https://github.com/jensjns/wp-admin-red-button
1498
  =============================================*/
1499
  .wp-core-ui .button-red {
1500
- -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.5);
1501
  background-color: #a00;
1502
  border-bottom-color: #8D1F21;
1503
  border-color: #9B2124;
@@ -1511,7 +1571,6 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1511
  .wp-core-ui .button-red:hover,
1512
  .wp-core-ui .button-red.focus,
1513
  .wp-core-ui .button-red:focus {
1514
- -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
1515
  background-color: #a00;
1516
  border-color: #7F1C1F;
1517
  box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
@@ -1521,7 +1580,6 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1521
 
1522
  .wp-core-ui .button-red.focus,
1523
  .wp-core-ui .button-red:focus {
1524
- -webkit-box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
1525
  border-color: #500F0E;
1526
  box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
1527
  }
@@ -1530,7 +1588,6 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1530
  .wp-core-ui .button-red.active:hover,
1531
  .wp-core-ui .button-red.active:focus,
1532
  .wp-core-ui .button-red:active {
1533
- -webkit-box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
1534
  background: #7F1C1F;
1535
  border-color: #601312 #AE2426 #AE2426 #AE2426;
1536
  box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
@@ -1544,15 +1601,17 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1544
  color: #E79496 !important;
1545
  background: #BA292B !important;
1546
  border-color: #7F1C1F !important;
1547
- -webkit-box-shadow: none !important;
1548
- box-shadow: none !important;
1549
  text-shadow: 0 -1px 0 rgba(0,0,0,0.1) !important;
1550
  cursor: default;
1551
  }
1552
 
1553
  .ticket_form {
 
1554
  .select2-container {
 
1555
  .select2-choice {
 
1556
  .select2-arrow {
1557
  display: none;
1558
  }
@@ -1578,6 +1637,7 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1578
 
1579
  /* from https://codepen.io/lajlev/pen/diKbz */
1580
  .checkmark {
 
1581
  &:after {
1582
  /*Add another block-level blank space*/
1583
  content: '';
@@ -1594,20 +1654,26 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1594
  /*Rotate the L 45 degrees to turn it into a checkmark*/
1595
  transform: rotate(45deg);
1596
  }
 
1597
  &.checkmark-right:after {
1598
  float: right;
1599
  margin-right: 2em;
1600
  }
 
1601
  &.checkmark-left:after {
1602
  float: left;
1603
  margin-left: 2em;
1604
  }
 
1605
  &.no-checkmark:after {
1606
  display: none;
1607
  }
1608
  }
1609
 
1610
- .complete, .ok, .yes, .on,
 
 
 
1611
  [data-status="complete"],
1612
  [data-status="ok"],
1613
  [data-status="yes"],
@@ -1615,7 +1681,10 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1615
  color: #0AB152;
1616
  }
1617
 
1618
- .incomplete, .ko, .no, .off,
 
 
 
1619
  [data-status="incomplete"],
1620
  [data-status="ko"],
1621
  [data-status="no"],
@@ -1636,6 +1705,7 @@ Credit to https://github.com/jensjns/wp-admin-red-button
1636
  .plugin-card-tribe-filterbar,
1637
  .plugin-card-image-widget,
1638
  .plugin-card-image-widget-plus {
 
1639
  .column-rating,
1640
  .column-updated,
1641
  .column-downloaded {
3
  .invalid input {
4
  border: 2px solid red !important;
5
  }
6
+
7
  .valid input {
8
  border: 1px solid green;
9
  }
10
+
11
  .clearfix {
12
  zoom: 1; /* For IE */
13
  }
14
+
15
  .placeholder {
16
  color: #999;
17
  cursor: text;
18
  padding: 4px 4px 4px 4px;
19
  }
20
+
21
  input::placeholder,
22
  textarea::placeholder {
23
  color: #999;
24
  }
25
+
26
  input::-webkit-input-placeholder,
27
  textarea::-webkit-input-placeholder {
28
  color: #999;
29
  }
30
+
31
  .bubble {
 
32
  background-color: #f9f9f9;
33
  border-color: #dfdfdf;
34
+ border-radius: 3px;
 
 
35
  border-spacing: 0;
36
  border-style: solid;
 
37
  border-width: 1px;
38
  padding: 10px;
39
  }
40
+
41
  .tribe-sticky-tooltip {
42
  color: #bbb;
43
  }
44
+
45
  td.tribe_message {
46
  padding-bottom: 10px !important;
47
  }
51
  margin: 5px 0 0 0;
52
  width: 200px;
53
  }
54
+
55
  .tribe_brand {
56
  font-family: Georgia, serif !important;
57
  font-size: 17px !important;
64
  #tribe-upgrade {
65
  background: #f6f6f6;
66
  border: 1px solid #ccc;
67
+ border-radius: 5px;
 
 
68
  margin: 20px 0 30px;
69
  padding: 0 20px 20px;
70
  }
71
+
72
  #tribe-upgrade .message {
73
  background-color: #ffffe0;
74
  border-color: #e6db55;
75
+ border-radius: 3px;
 
 
76
  border-style: solid;
77
  border-width: 1px;
78
  padding: 6px 12px;
81
  /* = Plugin Screen
82
  =============================================*/
83
  table.plugins {
84
+
85
  .tribe-plugin-update-message {
86
+ background: #d54e21; /* taken from color scheme in list-tables.css */
87
+ color: white;
88
+ display: inline-table;
89
+ margin: 6px 0;
90
+ padding: 10px 12px;
91
 
92
  h4 {
93
+ display: inline;
94
+ font-weight: bold;
95
  margin-right: 8px;
96
 
97
  &:after {
100
  }
101
 
102
  a {
103
+ color: white;
104
  text-decoration: underline;
105
  }
106
  }
162
  }
163
 
164
  .tribe-settings-form-wrap {
165
+
166
  fieldset {
167
  .description {
168
  margin-left: 0;
174
  margin-bottom: 18px;
175
  }
176
  }
177
+ #tribe-field-stylesheetOption {
178
+ .description {
179
+ color: #999;
180
+ margin-left: 1px;
181
+ }
182
+ }
183
 
184
  h3 {
185
+ background-color: #f9f9f9;
186
+ margin-bottom: 10px;
187
+ padding: 6px 0 6px 12px;
188
  }
189
 
190
  .tribe-sysinfo-optin-msg,
195
  padding-left: 12px;
196
  }
197
  }
 
 
 
 
 
 
198
  }
199
 
200
  .tribe_settings {
231
 
232
  /* Modern Tribe box */
233
  #modern-tribe-info {
 
234
  background-color: #f9f9f9;
235
  border: 1px solid #ccc;
236
+ border-radius: 4px;
 
 
 
237
  margin: 20px 0;
238
  padding: 8px 20px 12px;
239
  }
268
  height: 60px;
269
  width: 180px;
270
  }
271
+
272
  .tribe-field-textarea.tribe-size-medium textarea {
273
  height: 80px;
274
  width: 300px;
275
  }
276
+
277
  .tribe-field-textarea.tribe-size-large textarea {
278
  height: 120px;
279
  width: 450px;
284
  .tribe-field-license_key.tribe-size-small input {
285
  width: 50px;
286
  }
287
+
288
  .tribe-field-text.tribe-size-medium input,
289
  .tribe-field-email.tribe-size-medium input,
290
  .tribe-field-license_key.tribe-size-medium input {
291
  width: 225px;
292
  }
293
+
294
  .tribe-field-text.tribe-size-large input,
295
  .tribe-field-email.tribe-size-large input,
296
  .tribe-field-license_key.tribe-size-large input {
300
  .tribe-field-dropdown.tribe-size-small select {
301
  width: 100px;
302
  }
303
+
304
  .tribe-field-dropdown.tribe-size-medium select {
305
  width: 300px;
306
  }
307
+
308
  .tribe-field-dropdown.tribe-size-large select {
309
  width: 450px;
310
  }
311
 
312
  .tribe-field-wrapped_html.tribe-size-large .tribe-field-wrap {
313
  max-width: 600px;
314
+
315
  .description{
316
  max-width: 100%;
317
  }
320
  .tribe-field-dropdown_chosen.tribe-size-small select {
321
  width: 100px;
322
  }
323
+
324
  .tribe-field-dropdown_chosen.tribe-size-medium select {
325
  width: 200px;
326
  }
327
+
328
  .tribe-field-dropdown_chosen.tribe-size-large select {
329
  width: 300px;
330
  }
331
 
332
  .tribe-field-wrap {
333
+
334
  .tooltip:first-child {
335
  font-style: normal;
336
  }
337
  }
338
 
339
  .tribe-field {
340
+
341
  &.indent {
342
  margin-left: 252px;
343
  width: 75%;
344
+
345
  legend {
346
  font-weight: normal;
347
  width: auto;
348
  }
349
+
350
  .tribe-field-wrap {
351
  padding-right: 12px;
352
  }
353
+
354
  &.tribe-field-radio{
355
+
356
  .tribe-field-wrap {
357
  clear: left;
358
  margin-top: 12px;
359
  }
360
  }
361
  }
362
+
363
  &.light-bordered {
364
  background-color: white;
365
  border: solid lightgrey 1px;
373
  display: none;
374
  margin: 0 5px;
375
  }
376
+
377
  .ajax-loading-license {
378
  position: relative;
379
  top: 5px;
380
  }
381
+
382
  .key-validity {
383
  display: inline-block;
384
  }
385
+
386
  .optin-fail,
387
  .invalid-key {
388
  color: red;
389
  }
390
+
391
  .optin-success,
392
  .valid-key {
393
  color: green;
394
  }
395
+
396
  .valid-key.service-msg {
397
  color: #b72;
398
  }
404
 
405
  /* miscellaneous */
406
  .tribe-admin-box-left {
 
407
  background-color: #f9f9f9;
408
  border: 1px solid #ccc;
409
+ border-radius: 4px;
 
 
 
410
  float: left;
411
  margin: 20px 0;
412
  padding: 0 20px 15px;
413
  width: 20%;
414
  }
415
+
416
  .tribe-admin-box-right {
 
417
  background-color: #f9f9f9;
418
  border: 1px solid #ccc;
419
+ border-radius: 4px;
 
 
 
420
  float: right;
421
  margin: 20px 0;
422
  padding: 0 20px 15px;
423
  width: 68%;
424
  }
425
+
426
  .ajax-loader {
427
  float: right;
428
  margin: 10px;
429
  }
430
+
431
  .tribe-arrangeable-item {
432
  border: 1px solid lightGrey;
433
+ border-radius: 3px;
 
434
  }
435
+
436
  .tribe-arrangeable-item .ui-state-default {
437
  border: none;
438
  }
439
+
440
  .tribe-arrangeable-item-top {
441
  padding: 6px;
442
  }
443
+
444
  .tribe-arrangeable-item-top:hover {
445
  cursor: move;
446
  }
447
+
448
  .tribe-arrangeable-action {
449
  float: right;
450
  }
451
+
452
  .tribe-arrangeable-child {
453
  background-color: #f9f9f9;
454
  border-top: 1px solid lightGrey;
455
  display: none;
456
  padding: 25px;
457
  }
458
+
459
  .tribe-arrangeable-child label {
460
  display: block;
461
  margin: 0 0 7px 0;
462
  }
463
+
464
  .tribe_events_active_filter_type_options {
465
  margin: 10px 0;
466
  }
467
+
468
  .tribe_events_active_filter_type_options label {
469
  margin: 7px 0;
470
  }
475
  margin: 0;
476
  max-width: 250px;
477
  }
478
+
479
  .OrganizerInfo .organizer-email,
480
  #event_organizer .organizer-email {
481
  vertical-align: top;
534
  }
535
 
536
  .tribe-section-type-box {
 
537
  background-color: #f9f9f9;
538
  border: 1px solid #ccc;
539
+ border-radius: 4px;
 
 
 
540
  padding: 8px 20px 12px;
541
  }
542
 
604
  }
605
 
606
  .system-info-copy {
607
+ .system-info-copy-btn {
608
+ padding: 6px;
609
 
610
+ .dashicons {
611
+ padding-right: 10px;
612
+ }
613
  }
 
614
  }
615
 
616
  .template-updates-wrapper p {
690
  filter: Alpha(Opacity=50);
691
  opacity: .50;
692
  }
693
+
694
  .ui-widget-shadow {
695
  background: #000;
696
+ border-radius: 5px;
 
697
  filter: Alpha(Opacity=20);
698
  margin: -5px 0 0 -5px;
699
  opacity: .20;
700
  padding: 5px;
701
  }
702
+
703
  .ui-resizable {
704
  position: relative;
705
  }
706
+
707
  .ui-resizable-handle {
708
  display: block;
709
  font-size: .1px;
710
  position: absolute;
711
  z-index: 99999;
712
  }
713
+
714
  .ui-resizable-disabled .ui-resizable-handle,
715
  .ui-resizable-autohide .ui-resizable-handle {
716
  display: none;
717
  }
718
+
719
  .ui-resizable-n {
720
  cursor: n-resize;
721
  height: 7px;
723
  top: -5px;
724
  width: 100%;
725
  }
726
+
727
  .ui-resizable-s {
728
  bottom: -5px;
729
  cursor: s-resize;
731
  left: 0;
732
  width: 100%;
733
  }
734
+
735
  .ui-resizable-e {
736
  cursor: e-resize;
737
  height: 100%;
739
  top: 0;
740
  width: 7px;
741
  }
742
+
743
  .ui-resizable-w {
744
  cursor: w-resize;
745
  height: 100%;
747
  top: 0;
748
  width: 7px;
749
  }
750
+
751
  .ui-resizable-se {
752
  bottom: 1px;
753
  cursor: se-resize;
755
  right: 1px;
756
  width: 12px;
757
  }
758
+
759
  .ui-resizable-sw {
760
  bottom: -5px;
761
  cursor: sw-resize;
763
  left: -5px;
764
  width: 9px;
765
  }
766
+
767
  .ui-resizable-nw {
768
  cursor: nw-resize;
769
  height: 9px;
771
  top: -5px;
772
  width: 9px;
773
  }
774
+
775
  .ui-resizable-ne {
776
  cursor: ne-resize;
777
  height: 9px;
779
  top: -5px;
780
  width: 9px;
781
  }
782
+
783
  .ui-dialog {
784
  padding: .2em;
785
  position: relative;
786
  width: 375px;
787
  }
788
+
789
  .ui-dialog .ui-dialog-titlebar {
790
  padding: .5em .3em .3em 1em;
791
  position: relative;
792
  }
793
+
794
  .ui-dialog .ui-dialog-title {
795
  float: left;
796
  margin: .1em 0 .2em;
797
  }
798
+
799
  .ui-dialog .ui-dialog-titlebar-close {
800
  height: 18px;
801
  margin: -10px 0 0 0;
805
  top: 50%;
806
  width: 19px;
807
  }
808
+
809
  .ui-dialog .ui-dialog-titlebar-close span {
810
  display: block;
811
  margin-left: -8px;
812
  margin-top: -8px;
813
  }
814
+
815
  .ui-dialog .ui-dialog-titlebar-close:hover,
816
  .ui-dialog .ui-dialog-titlebar-close:focus {
817
  padding: 0;
818
  }
819
+
820
  .ui-dialog .ui-dialog-content {
821
  background: none;
822
  border: 0;
824
  padding: .5em 1em;
825
  zoom: 1;
826
  }
827
+
828
  .ui-dialog .ui-dialog-buttonpane {
829
  background-image: none;
830
  border-width: 1px 0 0 0;
832
  padding: .3em 1em .5em !important;
833
  text-align: right;
834
  }
835
+
836
  .ui-dialog .ui-dialog-buttonpane button {
837
  cursor: pointer;
838
  line-height: 1.4em;
842
  text-shadow: none;
843
  width: auto;
844
  }
845
+
846
  .ui-dialog .ui-resizable-se {
847
  bottom: 3px;
848
  height: 14px;
849
  right: 3px;
850
  width: 14px;
851
  }
852
+
853
  .ui-draggable .ui-dialog-titlebar {
854
  cursor: move;
855
  }
856
+
857
  .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
858
  float: none !important;
859
  text-align: center;
860
  }
861
+
862
  .ui-button-text-only .ui-button-text {
863
  padding: .4em 1em;
864
  }
865
+
866
  .ui-button .ui-button-text {
867
  display: block;
868
  line-height: 1.4;
869
  }
870
+
871
  #ui-datepicker-div {
872
  display: none;
873
  }
880
  left: 0;
881
  position: absolute;
882
  top: 0;
883
+ transition: all 1s linear;
 
 
 
 
884
  width: 100%;
885
  z-index: 4;
886
  }
887
 
888
  #tribe-loading span {
889
  background: url(../images/tribe-loading.gif) 0 0 no-repeat;
890
+ background-size: 32px 32px;
 
891
  height: 32px;
892
  left: 50%;
893
  margin: -16px 0 0 -16px;
903
  only screen and (-o-min-device-pixel-ratio: 2/1),
904
  only screen and (-webkit-min-device-pixel-ratio: 2),
905
  only screen and (min-device-pixel-ratio: 2) {
906
+
907
  #tribe-loading span {
908
  background-image: url(../images/tribe-loading@2x.gif);
909
  }
927
  &:before {
928
  color: #555d66;
929
  content: '\f145';
930
+ font-family: dashicons;
931
  font-size: 0.9em;
932
  line-height: 1;
933
  margin-right: 5px;
1014
  &:before {
1015
  color: #555d66;
1016
  content: '\f145';
1017
+ font-family: dashicons;
1018
  font-size: 21px;
1019
  line-height: 1;
1020
  margin-right: 10px;
1024
 
1025
  /* "Life preserver" dashicon */
1026
  &[data-tribe-icon="dashicons-sos"] {
1027
+
1028
  &:before {
1029
  content: '\f468';
1030
  }
1032
 
1033
  /* "Graduation cap" dashicon */
1034
  &[data-tribe-icon="dashicons-welcome-learn-more"] {
1035
+
1036
  &:before {
1037
  content: '\f118';
1038
  }
1040
 
1041
  /* "Megaphone" dashicon */
1042
  &[data-tribe-icon="dashicons-megaphone"] {
1043
+
1044
  &:before {
1045
  content: '\f488';
1046
  }
1048
 
1049
  /* "Heart" dashicon */
1050
  &[data-tribe-icon="dashicons-heart"] {
1051
+
1052
  &:before {
1053
  content: '\f487';
1054
  }
1055
  }
1056
  }
1057
 
 
1058
  .tribe_update_page h4:before {
1059
  content: '\f145';
1060
+ font-family: dashicons;
1061
  font-size: 34px;
1062
  line-height: 1;
1063
  margin-right: 5px;
1112
 
1113
  /* Media Queries for Mobile Dashboard */
1114
  @media screen and (max-width: 782px) {
1115
+
1116
  .tribe-half-column,
1117
  .tribe-row .tribe-half-column:last-child {
1118
  margin: 0 0 20px 0;
1126
 
1127
 
1128
  @media screen and ( max-width: 782px ) {
1129
+
1130
  .events-cal .subsubsub {
1131
  float: none;
1132
  }
1170
  ============================ */
1171
 
1172
  #tribe-dialog-wrapper {
1173
+
1174
  & > div {
1175
  padding: 1rem;
1176
 
1230
  }
1231
 
1232
  .wp-list-table.plugins {
1233
+
1234
  .column-description {
1235
+
1236
  .update-message {
1237
  color: #d54e21;
1238
  }
1244
  min-height: 100px;
1245
 
1246
  & + .notice-dismiss {
1247
+
1248
  &:hover {
1249
+
1250
  &:before {
1251
  color: #fff;
1252
  }
1304
  text-decoration: underline;
1305
  }
1306
  }
1307
+
1308
  .plugin-list {
1309
  display: inline;
1310
  font-weight: 600;
1331
  padding: 1em;
1332
 
1333
  & + .notice-dismiss {
1334
+
1335
  &:hover {
1336
+
1337
  &:before {
1338
  color: #fff;
1339
  }
1438
  width: auto;
1439
 
1440
  &.select2-container-active {
1441
+
1442
  .select2-choice {
1443
  border-color: #5897fb;
1444
  box-shadow: 0 0 5px rgba( 0, 0, 0, .1 );
1446
  }
1447
 
1448
  &.select2-dropdown-open {
1449
+
1450
  .select2-choice {
1451
  border-bottom-left-radius: 0;
1452
  border-bottom-right-radius: 0;
1477
  }
1478
 
1479
  &.select2-container-multi {
1480
+
1481
  .select2-choices {
1482
  background-image: none;
1483
  border-radius: 3px;
1486
 
1487
  .select2-search-field {
1488
  line-height: 25px;
1489
+
1490
  input {
1491
  padding-top: 0;
1492
  padding-bottom: 0;
1498
  padding-top: 0;
1499
  padding-bottom: 0;
1500
  line-height: 19px;
1501
+
1502
  div {
1503
  line-height: inherit;
1504
  }
1526
  }
1527
 
1528
  li.select2-result-with-children {
1529
+
1530
  > .select2-result-label {
1531
  font-weight: normal;
1532
  }
1558
  Credit to https://github.com/jensjns/wp-admin-red-button
1559
  =============================================*/
1560
  .wp-core-ui .button-red {
 
1561
  background-color: #a00;
1562
  border-bottom-color: #8D1F21;
1563
  border-color: #9B2124;
1571
  .wp-core-ui .button-red:hover,
1572
  .wp-core-ui .button-red.focus,
1573
  .wp-core-ui .button-red:focus {
 
1574
  background-color: #a00;
1575
  border-color: #7F1C1F;
1576
  box-shadow: inset 0 1px 0 rgba(120,200,230,0.6);
1580
 
1581
  .wp-core-ui .button-red.focus,
1582
  .wp-core-ui .button-red:focus {
 
1583
  border-color: #500F0E;
1584
  box-shadow: inset 0 1px 0 rgba(120,200,230,0.6), 1px 1px 2px rgba(0,0,0,0.4);
1585
  }
1588
  .wp-core-ui .button-red.active:hover,
1589
  .wp-core-ui .button-red.active:focus,
1590
  .wp-core-ui .button-red:active {
 
1591
  background: #7F1C1F;
1592
  border-color: #601312 #AE2426 #AE2426 #AE2426;
1593
  box-shadow: inset 0 1px 0 rgba(0,0,0,0.1);
1601
  color: #E79496 !important;
1602
  background: #BA292B !important;
1603
  border-color: #7F1C1F !important;
1604
+ box-shadow: none !important;
 
1605
  text-shadow: 0 -1px 0 rgba(0,0,0,0.1) !important;
1606
  cursor: default;
1607
  }
1608
 
1609
  .ticket_form {
1610
+
1611
  .select2-container {
1612
+
1613
  .select2-choice {
1614
+
1615
  .select2-arrow {
1616
  display: none;
1617
  }
1637
 
1638
  /* from https://codepen.io/lajlev/pen/diKbz */
1639
  .checkmark {
1640
+
1641
  &:after {
1642
  /*Add another block-level blank space*/
1643
  content: '';
1654
  /*Rotate the L 45 degrees to turn it into a checkmark*/
1655
  transform: rotate(45deg);
1656
  }
1657
+
1658
  &.checkmark-right:after {
1659
  float: right;
1660
  margin-right: 2em;
1661
  }
1662
+
1663
  &.checkmark-left:after {
1664
  float: left;
1665
  margin-left: 2em;
1666
  }
1667
+
1668
  &.no-checkmark:after {
1669
  display: none;
1670
  }
1671
  }
1672
 
1673
+ .complete,
1674
+ .ok,
1675
+ .yes,
1676
+ .on,
1677
  [data-status="complete"],
1678
  [data-status="ok"],
1679
  [data-status="yes"],
1681
  color: #0AB152;
1682
  }
1683
 
1684
+ .incomplete,
1685
+ .ko,
1686
+ .no,
1687
+ .off,
1688
  [data-status="incomplete"],
1689
  [data-status="ko"],
1690
  [data-status="no"],
1705
  .plugin-card-tribe-filterbar,
1706
  .plugin-card-image-widget,
1707
  .plugin-card-image-widget-plus {
1708
+
1709
  .column-rating,
1710
  .column-updated,
1711
  .column-downloaded {
common/vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitcdfe53637e1610513a9b1a9ae5f296bc::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInit7463cc922209bc9bad4bfd31ce1c00bf::getLoader();
common/vendor/autoload_52.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
- return ComposerAutoloaderInit32022c19e449559ac17925161f9a331a::getLoader();
4
 
5
  require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
6
 
7
+ return ComposerAutoloaderInit78446093aa9b3c42347fe2d2552fc164::getLoader();
common/vendor/composer/autoload_classmap.php CHANGED
@@ -10,6 +10,114 @@ return array(
10
  'Firebase\\JWT\\ExpiredException' => $vendorDir . '/firebase/php-jwt/src/ExpiredException.php',
11
  'Firebase\\JWT\\JWT' => $vendorDir . '/firebase/php-jwt/src/JWT.php',
12
  'Firebase\\JWT\\SignatureInvalidException' => $vendorDir . '/firebase/php-jwt/src/SignatureInvalidException.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  'Tribe\\PUE\\Update_Prevention' => $baseDir . '/src/Tribe/PUE/Update_Prevention.php',
14
  'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
15
  'Tribe\\Traits\\Cache_User' => $baseDir . '/src/Tribe/Traits/Cache_User.php',
@@ -17,6 +125,8 @@ return array(
17
  'Tribe\\Utils\\Collection_Trait' => $baseDir . '/src/Tribe/Utils/Collection_Trait.php',
18
  'Tribe\\Utils\\Element_Classes' => $baseDir . '/src/Tribe/Utils/Element_Classes.php',
19
  'Tribe\\Utils\\Lazy_Collection' => $baseDir . '/src/Tribe/Utils/Lazy_Collection.php',
 
 
20
  'Tribe\\Utils\\Post_Thumbnail' => $baseDir . '/src/Tribe/Utils/Post_Thumbnail.php',
21
  'tad_DI52_Container' => $vendorDir . '/lucatume/di52/src/tad/DI52/Container.php',
22
  'tad_DI52_ContainerInterface' => $vendorDir . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
10
  'Firebase\\JWT\\ExpiredException' => $vendorDir . '/firebase/php-jwt/src/ExpiredException.php',
11
  'Firebase\\JWT\\JWT' => $vendorDir . '/firebase/php-jwt/src/JWT.php',
12
  'Firebase\\JWT\\SignatureInvalidException' => $vendorDir . '/firebase/php-jwt/src/SignatureInvalidException.php',
13
+ 'Monolog\\ErrorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/ErrorHandler.php',
14
+ 'Monolog\\Formatter\\ChromePHPFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
15
+ 'Monolog\\Formatter\\ElasticaFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
16
+ 'Monolog\\Formatter\\FlowdockFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php',
17
+ 'Monolog\\Formatter\\FluentdFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php',
18
+ 'Monolog\\Formatter\\FormatterInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php',
19
+ 'Monolog\\Formatter\\GelfMessageFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php',
20
+ 'Monolog\\Formatter\\HtmlFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php',
21
+ 'Monolog\\Formatter\\JsonFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php',
22
+ 'Monolog\\Formatter\\LineFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LineFormatter.php',
23
+ 'Monolog\\Formatter\\LogglyFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php',
24
+ 'Monolog\\Formatter\\LogstashFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php',
25
+ 'Monolog\\Formatter\\MongoDBFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php',
26
+ 'Monolog\\Formatter\\NormalizerFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php',
27
+ 'Monolog\\Formatter\\ScalarFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php',
28
+ 'Monolog\\Formatter\\WildfireFormatter' => $vendorDir . '/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php',
29
+ 'Monolog\\Handler\\AbstractHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractHandler.php',
30
+ 'Monolog\\Handler\\AbstractProcessingHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php',
31
+ 'Monolog\\Handler\\AbstractSyslogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php',
32
+ 'Monolog\\Handler\\AmqpHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/AmqpHandler.php',
33
+ 'Monolog\\Handler\\BrowserConsoleHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php',
34
+ 'Monolog\\Handler\\BufferHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/BufferHandler.php',
35
+ 'Monolog\\Handler\\ChromePHPHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php',
36
+ 'Monolog\\Handler\\CouchDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php',
37
+ 'Monolog\\Handler\\CubeHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/CubeHandler.php',
38
+ 'Monolog\\Handler\\Curl\\Util' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/Curl/Util.php',
39
+ 'Monolog\\Handler\\DeduplicationHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php',
40
+ 'Monolog\\Handler\\DoctrineCouchDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php',
41
+ 'Monolog\\Handler\\DynamoDbHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php',
42
+ 'Monolog\\Handler\\ElasticSearchHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php',
43
+ 'Monolog\\Handler\\ErrorLogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php',
44
+ 'Monolog\\Handler\\FilterHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FilterHandler.php',
45
+ 'Monolog\\Handler\\FingersCrossedHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php',
46
+ 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php',
47
+ 'Monolog\\Handler\\FingersCrossed\\ChannelLevelActivationStrategy' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php',
48
+ 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php',
49
+ 'Monolog\\Handler\\FirePHPHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php',
50
+ 'Monolog\\Handler\\FleepHookHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php',
51
+ 'Monolog\\Handler\\FlowdockHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php',
52
+ 'Monolog\\Handler\\GelfHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/GelfHandler.php',
53
+ 'Monolog\\Handler\\GroupHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/GroupHandler.php',
54
+ 'Monolog\\Handler\\HandlerInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HandlerInterface.php',
55
+ 'Monolog\\Handler\\HandlerWrapper' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php',
56
+ 'Monolog\\Handler\\HipChatHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/HipChatHandler.php',
57
+ 'Monolog\\Handler\\IFTTTHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php',
58
+ 'Monolog\\Handler\\InsightOpsHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php',
59
+ 'Monolog\\Handler\\LogEntriesHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php',
60
+ 'Monolog\\Handler\\LogglyHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/LogglyHandler.php',
61
+ 'Monolog\\Handler\\MailHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MailHandler.php',
62
+ 'Monolog\\Handler\\MandrillHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MandrillHandler.php',
63
+ 'Monolog\\Handler\\MissingExtensionException' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php',
64
+ 'Monolog\\Handler\\MongoDBHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php',
65
+ 'Monolog\\Handler\\NativeMailerHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php',
66
+ 'Monolog\\Handler\\NewRelicHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php',
67
+ 'Monolog\\Handler\\NullHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/NullHandler.php',
68
+ 'Monolog\\Handler\\PHPConsoleHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php',
69
+ 'Monolog\\Handler\\PsrHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PsrHandler.php',
70
+ 'Monolog\\Handler\\PushoverHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/PushoverHandler.php',
71
+ 'Monolog\\Handler\\RavenHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RavenHandler.php',
72
+ 'Monolog\\Handler\\RedisHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RedisHandler.php',
73
+ 'Monolog\\Handler\\RollbarHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RollbarHandler.php',
74
+ 'Monolog\\Handler\\RotatingFileHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php',
75
+ 'Monolog\\Handler\\SamplingHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SamplingHandler.php',
76
+ 'Monolog\\Handler\\SlackHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackHandler.php',
77
+ 'Monolog\\Handler\\SlackWebhookHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php',
78
+ 'Monolog\\Handler\\Slack\\SlackRecord' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php',
79
+ 'Monolog\\Handler\\SlackbotHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php',
80
+ 'Monolog\\Handler\\SocketHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SocketHandler.php',
81
+ 'Monolog\\Handler\\StreamHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/StreamHandler.php',
82
+ 'Monolog\\Handler\\SwiftMailerHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php',
83
+ 'Monolog\\Handler\\SyslogHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogHandler.php',
84
+ 'Monolog\\Handler\\SyslogUdpHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php',
85
+ 'Monolog\\Handler\\SyslogUdp\\UdpSocket' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php',
86
+ 'Monolog\\Handler\\TestHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/TestHandler.php',
87
+ 'Monolog\\Handler\\WhatFailureGroupHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php',
88
+ 'Monolog\\Handler\\ZendMonitorHandler' => $vendorDir . '/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php',
89
+ 'Monolog\\Logger' => $vendorDir . '/monolog/monolog/src/Monolog/Logger.php',
90
+ 'Monolog\\Processor\\GitProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/GitProcessor.php',
91
+ 'Monolog\\Processor\\IntrospectionProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php',
92
+ 'Monolog\\Processor\\MemoryPeakUsageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php',
93
+ 'Monolog\\Processor\\MemoryProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php',
94
+ 'Monolog\\Processor\\MemoryUsageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php',
95
+ 'Monolog\\Processor\\MercurialProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php',
96
+ 'Monolog\\Processor\\ProcessIdProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php',
97
+ 'Monolog\\Processor\\ProcessorInterface' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php',
98
+ 'Monolog\\Processor\\PsrLogMessageProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php',
99
+ 'Monolog\\Processor\\TagProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/TagProcessor.php',
100
+ 'Monolog\\Processor\\UidProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/UidProcessor.php',
101
+ 'Monolog\\Processor\\WebProcessor' => $vendorDir . '/monolog/monolog/src/Monolog/Processor/WebProcessor.php',
102
+ 'Monolog\\Registry' => $vendorDir . '/monolog/monolog/src/Monolog/Registry.php',
103
+ 'Monolog\\ResettableInterface' => $vendorDir . '/monolog/monolog/src/Monolog/ResettableInterface.php',
104
+ 'Monolog\\SignalHandler' => $vendorDir . '/monolog/monolog/src/Monolog/SignalHandler.php',
105
+ 'Monolog\\Utils' => $vendorDir . '/monolog/monolog/src/Monolog/Utils.php',
106
+ 'Psr\\Log\\AbstractLogger' => $vendorDir . '/psr/log/Psr/Log/AbstractLogger.php',
107
+ 'Psr\\Log\\InvalidArgumentException' => $vendorDir . '/psr/log/Psr/Log/InvalidArgumentException.php',
108
+ 'Psr\\Log\\LogLevel' => $vendorDir . '/psr/log/Psr/Log/LogLevel.php',
109
+ 'Psr\\Log\\LoggerAwareInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareInterface.php',
110
+ 'Psr\\Log\\LoggerAwareTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerAwareTrait.php',
111
+ 'Psr\\Log\\LoggerInterface' => $vendorDir . '/psr/log/Psr/Log/LoggerInterface.php',
112
+ 'Psr\\Log\\LoggerTrait' => $vendorDir . '/psr/log/Psr/Log/LoggerTrait.php',
113
+ 'Psr\\Log\\NullLogger' => $vendorDir . '/psr/log/Psr/Log/NullLogger.php',
114
+ 'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
115
+ 'Psr\\Log\\Test\\LoggerInterfaceTest' => $vendorDir . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
116
+ 'Psr\\Log\\Test\\TestLogger' => $vendorDir . '/psr/log/Psr/Log/Test/TestLogger.php',
117
+ 'Tribe\\Log\\Action_Logger' => $baseDir . '/src/Tribe/Log/Action_Logger.php',
118
+ 'Tribe\\Log\\Canonical_Formatter' => $baseDir . '/src/Tribe/Log/Canonical_Formatter.php',
119
+ 'Tribe\\Log\\Monolog_Logger' => $baseDir . '/src/Tribe/Log/Monolog_Logger.php',
120
+ 'Tribe\\Log\\Service_Provider' => $baseDir . '/src/Tribe/Log/Service_Provider.php',
121
  'Tribe\\PUE\\Update_Prevention' => $baseDir . '/src/Tribe/PUE/Update_Prevention.php',
122
  'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
123
  'Tribe\\Traits\\Cache_User' => $baseDir . '/src/Tribe/Traits/Cache_User.php',
125
  'Tribe\\Utils\\Collection_Trait' => $baseDir . '/src/Tribe/Utils/Collection_Trait.php',
126
  'Tribe\\Utils\\Element_Classes' => $baseDir . '/src/Tribe/Utils/Element_Classes.php',
127
  'Tribe\\Utils\\Lazy_Collection' => $baseDir . '/src/Tribe/Utils/Lazy_Collection.php',
128
+ 'Tribe\\Utils\\Lazy_Events' => $baseDir . '/src/Tribe/Utils/Lazy_Events.php',
129
+ 'Tribe\\Utils\\Lazy_String' => $baseDir . '/src/Tribe/Utils/Lazy_String.php',
130
  'Tribe\\Utils\\Post_Thumbnail' => $baseDir . '/src/Tribe/Utils/Post_Thumbnail.php',
131
  'tad_DI52_Container' => $vendorDir . '/lucatume/di52/src/tad/DI52/Container.php',
132
  'tad_DI52_ContainerInterface' => $vendorDir . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
common/vendor/composer/autoload_psr4.php CHANGED
@@ -7,5 +7,7 @@ $baseDir = dirname($vendorDir);
7
 
8
  return array(
9
  'Tribe\\' => array($baseDir . '/src/Tribe'),
 
 
10
  'Firebase\\JWT\\' => array($vendorDir . '/firebase/php-jwt/src'),
11
  );
7
 
8
  return array(
9
  'Tribe\\' => array($baseDir . '/src/Tribe'),
10
+ 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
11
+ 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
12
  'Firebase\\JWT\\' => array($vendorDir . '/firebase/php-jwt/src'),
13
  );
common/vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitcdfe53637e1610513a9b1a9ae5f296bc
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInitcdfe53637e1610513a9b1a9ae5f296bc
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitcdfe53637e1610513a9b1a9ae5f296bc', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitcdfe53637e1610513a9b1a9ae5f296bc', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInitcdfe53637e1610513a9b1a9ae5f296bc::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInit7463cc922209bc9bad4bfd31ce1c00bf
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit7463cc922209bc9bad4bfd31ce1c00bf', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit7463cc922209bc9bad4bfd31ce1c00bf', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInit7463cc922209bc9bad4bfd31ce1c00bf::getInitializer($loader));
31
  } else {
32
  $map = require __DIR__ . '/autoload_namespaces.php';
33
  foreach ($map as $namespace => $path) {
common/vendor/composer/autoload_real_52.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
- class ComposerAutoloaderInit32022c19e449559ac17925161f9a331a {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit32022c19e449559ac17925161f9a331a {
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInit32022c19e449559ac17925161f9a331a', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInit32022c19e449559ac17925161f9a331a', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
2
 
3
  // autoload_real_52.php generated by xrstf/composer-php52
4
 
5
+ class ComposerAutoloaderInit78446093aa9b3c42347fe2d2552fc164 {
6
  private static $loader;
7
 
8
  public static function loadClassLoader($class) {
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInit78446093aa9b3c42347fe2d2552fc164', 'loadClassLoader'), true /*, true */);
23
  self::$loader = $loader = new xrstf_Composer52_ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInit78446093aa9b3c42347fe2d2552fc164', 'loadClassLoader'));
25
 
26
  $vendorDir = dirname(dirname(__FILE__));
27
  $baseDir = dirname($vendorDir);
common/vendor/composer/autoload_static.php CHANGED
@@ -4,13 +4,21 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitcdfe53637e1610513a9b1a9ae5f296bc
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
11
  array (
12
  'Tribe\\' => 6,
13
  ),
 
 
 
 
 
 
 
 
14
  'F' =>
15
  array (
16
  'Firebase\\JWT\\' => 13,
@@ -22,6 +30,14 @@ class ComposerStaticInitcdfe53637e1610513a9b1a9ae5f296bc
22
  array (
23
  0 => __DIR__ . '/../..' . '/src/Tribe',
24
  ),
 
 
 
 
 
 
 
 
25
  'Firebase\\JWT\\' =>
26
  array (
27
  0 => __DIR__ . '/..' . '/firebase/php-jwt/src',
@@ -50,6 +66,114 @@ class ComposerStaticInitcdfe53637e1610513a9b1a9ae5f296bc
50
  'Firebase\\JWT\\ExpiredException' => __DIR__ . '/..' . '/firebase/php-jwt/src/ExpiredException.php',
51
  'Firebase\\JWT\\JWT' => __DIR__ . '/..' . '/firebase/php-jwt/src/JWT.php',
52
  'Firebase\\JWT\\SignatureInvalidException' => __DIR__ . '/..' . '/firebase/php-jwt/src/SignatureInvalidException.php',
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  'Tribe\\PUE\\Update_Prevention' => __DIR__ . '/../..' . '/src/Tribe/PUE/Update_Prevention.php',
54
  'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
55
  'Tribe\\Traits\\Cache_User' => __DIR__ . '/../..' . '/src/Tribe/Traits/Cache_User.php',
@@ -57,6 +181,8 @@ class ComposerStaticInitcdfe53637e1610513a9b1a9ae5f296bc
57
  'Tribe\\Utils\\Collection_Trait' => __DIR__ . '/../..' . '/src/Tribe/Utils/Collection_Trait.php',
58
  'Tribe\\Utils\\Element_Classes' => __DIR__ . '/../..' . '/src/Tribe/Utils/Element_Classes.php',
59
  'Tribe\\Utils\\Lazy_Collection' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Collection.php',
 
 
60
  'Tribe\\Utils\\Post_Thumbnail' => __DIR__ . '/../..' . '/src/Tribe/Utils/Post_Thumbnail.php',
61
  'tad_DI52_Container' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/Container.php',
62
  'tad_DI52_ContainerInterface' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
@@ -70,10 +196,10 @@ class ComposerStaticInitcdfe53637e1610513a9b1a9ae5f296bc
70
  public static function getInitializer(ClassLoader $loader)
71
  {
72
  return \Closure::bind(function () use ($loader) {
73
- $loader->prefixLengthsPsr4 = ComposerStaticInitcdfe53637e1610513a9b1a9ae5f296bc::$prefixLengthsPsr4;
74
- $loader->prefixDirsPsr4 = ComposerStaticInitcdfe53637e1610513a9b1a9ae5f296bc::$prefixDirsPsr4;
75
- $loader->prefixesPsr0 = ComposerStaticInitcdfe53637e1610513a9b1a9ae5f296bc::$prefixesPsr0;
76
- $loader->classMap = ComposerStaticInitcdfe53637e1610513a9b1a9ae5f296bc::$classMap;
77
 
78
  }, null, ClassLoader::class);
79
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInit7463cc922209bc9bad4bfd31ce1c00bf
8
  {
9
  public static $prefixLengthsPsr4 = array (
10
  'T' =>
11
  array (
12
  'Tribe\\' => 6,
13
  ),
14
+ 'P' =>
15
+ array (
16
+ 'Psr\\Log\\' => 8,
17
+ ),
18
+ 'M' =>
19
+ array (
20
+ 'Monolog\\' => 8,
21
+ ),
22
  'F' =>
23
  array (
24
  'Firebase\\JWT\\' => 13,
30
  array (
31
  0 => __DIR__ . '/../..' . '/src/Tribe',
32
  ),
33
+ 'Psr\\Log\\' =>
34
+ array (
35
+ 0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
36
+ ),
37
+ 'Monolog\\' =>
38
+ array (
39
+ 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog',
40
+ ),
41
  'Firebase\\JWT\\' =>
42
  array (
43
  0 => __DIR__ . '/..' . '/firebase/php-jwt/src',
66
  'Firebase\\JWT\\ExpiredException' => __DIR__ . '/..' . '/firebase/php-jwt/src/ExpiredException.php',
67
  'Firebase\\JWT\\JWT' => __DIR__ . '/..' . '/firebase/php-jwt/src/JWT.php',
68
  'Firebase\\JWT\\SignatureInvalidException' => __DIR__ . '/..' . '/firebase/php-jwt/src/SignatureInvalidException.php',
69
+ 'Monolog\\ErrorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ErrorHandler.php',
70
+ 'Monolog\\Formatter\\ChromePHPFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php',
71
+ 'Monolog\\Formatter\\ElasticaFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php',
72
+ 'Monolog\\Formatter\\FlowdockFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php',
73
+ 'Monolog\\Formatter\\FluentdFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php',
74
+ 'Monolog\\Formatter\\FormatterInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php',
75
+ 'Monolog\\Formatter\\GelfMessageFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php',
76
+ 'Monolog\\Formatter\\HtmlFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php',
77
+ 'Monolog\\Formatter\\JsonFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php',
78
+ 'Monolog\\Formatter\\LineFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LineFormatter.php',
79
+ 'Monolog\\Formatter\\LogglyFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php',
80
+ 'Monolog\\Formatter\\LogstashFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php',
81
+ 'Monolog\\Formatter\\MongoDBFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php',
82
+ 'Monolog\\Formatter\\NormalizerFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php',
83
+ 'Monolog\\Formatter\\ScalarFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php',
84
+ 'Monolog\\Formatter\\WildfireFormatter' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php',
85
+ 'Monolog\\Handler\\AbstractHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractHandler.php',
86
+ 'Monolog\\Handler\\AbstractProcessingHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php',
87
+ 'Monolog\\Handler\\AbstractSyslogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php',
88
+ 'Monolog\\Handler\\AmqpHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/AmqpHandler.php',
89
+ 'Monolog\\Handler\\BrowserConsoleHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php',
90
+ 'Monolog\\Handler\\BufferHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/BufferHandler.php',
91
+ 'Monolog\\Handler\\ChromePHPHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php',
92
+ 'Monolog\\Handler\\CouchDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php',
93
+ 'Monolog\\Handler\\CubeHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/CubeHandler.php',
94
+ 'Monolog\\Handler\\Curl\\Util' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/Curl/Util.php',
95
+ 'Monolog\\Handler\\DeduplicationHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php',
96
+ 'Monolog\\Handler\\DoctrineCouchDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php',
97
+ 'Monolog\\Handler\\DynamoDbHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php',
98
+ 'Monolog\\Handler\\ElasticSearchHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php',
99
+ 'Monolog\\Handler\\ErrorLogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php',
100
+ 'Monolog\\Handler\\FilterHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FilterHandler.php',
101
+ 'Monolog\\Handler\\FingersCrossedHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php',
102
+ 'Monolog\\Handler\\FingersCrossed\\ActivationStrategyInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php',
103
+ 'Monolog\\Handler\\FingersCrossed\\ChannelLevelActivationStrategy' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php',
104
+ 'Monolog\\Handler\\FingersCrossed\\ErrorLevelActivationStrategy' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php',
105
+ 'Monolog\\Handler\\FirePHPHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php',
106
+ 'Monolog\\Handler\\FleepHookHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php',
107
+ 'Monolog\\Handler\\FlowdockHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php',
108
+ 'Monolog\\Handler\\GelfHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/GelfHandler.php',
109
+ 'Monolog\\Handler\\GroupHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/GroupHandler.php',
110
+ 'Monolog\\Handler\\HandlerInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HandlerInterface.php',
111
+ 'Monolog\\Handler\\HandlerWrapper' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php',
112
+ 'Monolog\\Handler\\HipChatHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/HipChatHandler.php',
113
+ 'Monolog\\Handler\\IFTTTHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php',
114
+ 'Monolog\\Handler\\InsightOpsHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php',
115
+ 'Monolog\\Handler\\LogEntriesHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php',
116
+ 'Monolog\\Handler\\LogglyHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/LogglyHandler.php',
117
+ 'Monolog\\Handler\\MailHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MailHandler.php',
118
+ 'Monolog\\Handler\\MandrillHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MandrillHandler.php',
119
+ 'Monolog\\Handler\\MissingExtensionException' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php',
120
+ 'Monolog\\Handler\\MongoDBHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php',
121
+ 'Monolog\\Handler\\NativeMailerHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php',
122
+ 'Monolog\\Handler\\NewRelicHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php',
123
+ 'Monolog\\Handler\\NullHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/NullHandler.php',
124
+ 'Monolog\\Handler\\PHPConsoleHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php',
125
+ 'Monolog\\Handler\\PsrHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PsrHandler.php',
126
+ 'Monolog\\Handler\\PushoverHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/PushoverHandler.php',
127
+ 'Monolog\\Handler\\RavenHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RavenHandler.php',
128
+ 'Monolog\\Handler\\RedisHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RedisHandler.php',
129
+ 'Monolog\\Handler\\RollbarHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RollbarHandler.php',
130
+ 'Monolog\\Handler\\RotatingFileHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php',
131
+ 'Monolog\\Handler\\SamplingHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SamplingHandler.php',
132
+ 'Monolog\\Handler\\SlackHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackHandler.php',
133
+ 'Monolog\\Handler\\SlackWebhookHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php',
134
+ 'Monolog\\Handler\\Slack\\SlackRecord' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php',
135
+ 'Monolog\\Handler\\SlackbotHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php',
136
+ 'Monolog\\Handler\\SocketHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SocketHandler.php',
137
+ 'Monolog\\Handler\\StreamHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/StreamHandler.php',
138
+ 'Monolog\\Handler\\SwiftMailerHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php',
139
+ 'Monolog\\Handler\\SyslogHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogHandler.php',
140
+ 'Monolog\\Handler\\SyslogUdpHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php',
141
+ 'Monolog\\Handler\\SyslogUdp\\UdpSocket' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php',
142
+ 'Monolog\\Handler\\TestHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/TestHandler.php',
143
+ 'Monolog\\Handler\\WhatFailureGroupHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php',
144
+ 'Monolog\\Handler\\ZendMonitorHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php',
145
+ 'Monolog\\Logger' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Logger.php',
146
+ 'Monolog\\Processor\\GitProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/GitProcessor.php',
147
+ 'Monolog\\Processor\\IntrospectionProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php',
148
+ 'Monolog\\Processor\\MemoryPeakUsageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php',
149
+ 'Monolog\\Processor\\MemoryProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php',
150
+ 'Monolog\\Processor\\MemoryUsageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php',
151
+ 'Monolog\\Processor\\MercurialProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php',
152
+ 'Monolog\\Processor\\ProcessIdProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php',
153
+ 'Monolog\\Processor\\ProcessorInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php',
154
+ 'Monolog\\Processor\\PsrLogMessageProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php',
155
+ 'Monolog\\Processor\\TagProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/TagProcessor.php',
156
+ 'Monolog\\Processor\\UidProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/UidProcessor.php',
157
+ 'Monolog\\Processor\\WebProcessor' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Processor/WebProcessor.php',
158
+ 'Monolog\\Registry' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Registry.php',
159
+ 'Monolog\\ResettableInterface' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/ResettableInterface.php',
160
+ 'Monolog\\SignalHandler' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/SignalHandler.php',
161
+ 'Monolog\\Utils' => __DIR__ . '/..' . '/monolog/monolog/src/Monolog/Utils.php',
162
+ 'Psr\\Log\\AbstractLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/AbstractLogger.php',
163
+ 'Psr\\Log\\InvalidArgumentException' => __DIR__ . '/..' . '/psr/log/Psr/Log/InvalidArgumentException.php',
164
+ 'Psr\\Log\\LogLevel' => __DIR__ . '/..' . '/psr/log/Psr/Log/LogLevel.php',
165
+ 'Psr\\Log\\LoggerAwareInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareInterface.php',
166
+ 'Psr\\Log\\LoggerAwareTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerAwareTrait.php',
167
+ 'Psr\\Log\\LoggerInterface' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerInterface.php',
168
+ 'Psr\\Log\\LoggerTrait' => __DIR__ . '/..' . '/psr/log/Psr/Log/LoggerTrait.php',
169
+ 'Psr\\Log\\NullLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/NullLogger.php',
170
+ 'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
171
+ 'Psr\\Log\\Test\\LoggerInterfaceTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/LoggerInterfaceTest.php',
172
+ 'Psr\\Log\\Test\\TestLogger' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/TestLogger.php',
173
+ 'Tribe\\Log\\Action_Logger' => __DIR__ . '/../..' . '/src/Tribe/Log/Action_Logger.php',
174
+ 'Tribe\\Log\\Canonical_Formatter' => __DIR__ . '/../..' . '/src/Tribe/Log/Canonical_Formatter.php',
175
+ 'Tribe\\Log\\Monolog_Logger' => __DIR__ . '/../..' . '/src/Tribe/Log/Monolog_Logger.php',
176
+ 'Tribe\\Log\\Service_Provider' => __DIR__ . '/../..' . '/src/Tribe/Log/Service_Provider.php',
177
  'Tribe\\PUE\\Update_Prevention' => __DIR__ . '/../..' . '/src/Tribe/PUE/Update_Prevention.php',
178
  'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
179
  'Tribe\\Traits\\Cache_User' => __DIR__ . '/../..' . '/src/Tribe/Traits/Cache_User.php',
181
  'Tribe\\Utils\\Collection_Trait' => __DIR__ . '/../..' . '/src/Tribe/Utils/Collection_Trait.php',
182
  'Tribe\\Utils\\Element_Classes' => __DIR__ . '/../..' . '/src/Tribe/Utils/Element_Classes.php',
183
  'Tribe\\Utils\\Lazy_Collection' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Collection.php',
184
+ 'Tribe\\Utils\\Lazy_Events' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_Events.php',
185
+ 'Tribe\\Utils\\Lazy_String' => __DIR__ . '/../..' . '/src/Tribe/Utils/Lazy_String.php',
186
  'Tribe\\Utils\\Post_Thumbnail' => __DIR__ . '/../..' . '/src/Tribe/Utils/Post_Thumbnail.php',
187
  'tad_DI52_Container' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/Container.php',
188
  'tad_DI52_ContainerInterface' => __DIR__ . '/..' . '/lucatume/di52/src/tad/DI52/ContainerInterface.php',
196
  public static function getInitializer(ClassLoader $loader)
197
  {
198
  return \Closure::bind(function () use ($loader) {
199
+ $loader->prefixLengthsPsr4 = ComposerStaticInit7463cc922209bc9bad4bfd31ce1c00bf::$prefixLengthsPsr4;
200
+ $loader->prefixDirsPsr4 = ComposerStaticInit7463cc922209bc9bad4bfd31ce1c00bf::$prefixDirsPsr4;
201
+ $loader->prefixesPsr0 = ComposerStaticInit7463cc922209bc9bad4bfd31ce1c00bf::$prefixesPsr0;
202
+ $loader->classMap = ComposerStaticInit7463cc922209bc9bad4bfd31ce1c00bf::$classMap;
203
 
204
  }, null, ClassLoader::class);
205
  }
common/vendor/composer/installed.json CHANGED
@@ -92,6 +92,135 @@
92
  ],
93
  "description": "A PHP 5.2 compatible dependency injection container."
94
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  {
96
  "name": "xrstf/composer-php52",
97
  "version": "v1.0.20",
92
  ],
93
  "description": "A PHP 5.2 compatible dependency injection container."
94
  },
95
+ {
96
+ "name": "monolog/monolog",
97
+ "version": "1.24.0",
98
+ "version_normalized": "1.24.0.0",
99
+ "source": {
100
+ "type": "git",
101
+ "url": "https://github.com/Seldaek/monolog.git",
102
+ "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266"
103
+ },
104
+ "dist": {
105
+ "type": "zip",
106
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
107
+ "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266",
108
+ "shasum": ""
109
+ },
110
+ "require": {
111
+ "php": ">=5.3.0",
112
+ "psr/log": "~1.0"
113
+ },
114
+ "provide": {
115
+ "psr/log-implementation": "1.0.0"
116
+ },
117
+ "require-dev": {
118
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
119
+ "doctrine/couchdb": "~1.0@dev",
120
+ "graylog2/gelf-php": "~1.0",
121
+ "jakub-onderka/php-parallel-lint": "0.9",
122
+ "php-amqplib/php-amqplib": "~2.4",
123
+ "php-console/php-console": "^3.1.3",
124
+ "phpunit/phpunit": "~4.5",
125
+ "phpunit/phpunit-mock-objects": "2.3.0",
126
+ "ruflin/elastica": ">=0.90 <3.0",
127
+ "sentry/sentry": "^0.13",
128
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
129
+ },
130
+ "suggest": {
131
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
132
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
133
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
134
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
135
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
136
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
137
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
138
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
139
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
140
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
141
+ "sentry/sentry": "Allow sending log messages to a Sentry server"
142
+ },
143
+ "time": "2018-11-05T09:00:11+00:00",
144
+ "type": "library",
145
+ "extra": {
146
+ "branch-alias": {
147
+ "dev-master": "2.0.x-dev"
148
+ }
149
+ },
150
+ "installation-source": "dist",
151
+ "autoload": {
152
+ "psr-4": {
153
+ "Monolog\\": "src/Monolog"
154
+ }
155
+ },
156
+ "notification-url": "https://packagist.org/downloads/",
157
+ "license": [
158
+ "MIT"
159
+ ],
160
+ "authors": [
161
+ {
162
+ "name": "Jordi Boggiano",
163
+ "email": "j.boggiano@seld.be",
164
+ "homepage": "http://seld.be"
165
+ }
166
+ ],
167
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
168
+ "homepage": "http://github.com/Seldaek/monolog",
169
+ "keywords": [
170
+ "log",
171
+ "logging",
172
+ "psr-3"
173
+ ]
174
+ },
175
+ {
176
+ "name": "psr/log",
177
+ "version": "1.1.0",
178
+ "version_normalized": "1.1.0.0",
179
+ "source": {
180
+ "type": "git",
181
+ "url": "https://github.com/php-fig/log.git",
182
+ "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd"
183
+ },
184
+ "dist": {
185
+ "type": "zip",
186
+ "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
187
+ "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd",
188
+ "shasum": ""
189
+ },
190
+ "require": {
191
+ "php": ">=5.3.0"
192
+ },
193
+ "time": "2018-11-20T15:27:04+00:00",
194
+ "type": "library",
195
+ "extra": {
196
+ "branch-alias": {
197
+ "dev-master": "1.0.x-dev"
198
+ }
199
+ },
200
+ "installation-source": "dist",
201
+ "autoload": {
202
+ "psr-4": {
203
+ "Psr\\Log\\": "Psr/Log/"
204
+ }
205
+ },
206
+ "notification-url": "https://packagist.org/downloads/",
207
+ "license": [
208
+ "MIT"
209
+ ],
210
+ "authors": [
211
+ {
212
+ "name": "PHP-FIG",
213
+ "homepage": "http://www.php-fig.org/"
214
+ }
215
+ ],
216
+ "description": "Common interface for logging libraries",
217
+ "homepage": "https://github.com/php-fig/log",
218
+ "keywords": [
219
+ "log",
220
+ "psr",
221
+ "psr-3"
222
+ ]
223
+ },
224
  {
225
  "name": "xrstf/composer-php52",
226
  "version": "v1.0.20",
common/vendor/monolog/monolog/src/Monolog/ErrorHandler.php ADDED
@@ -0,0 +1,239 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog;
13
+
14
+ use Psr\Log\LoggerInterface;
15
+ use Psr\Log\LogLevel;
16
+ use Monolog\Handler\AbstractHandler;
17
+ use Monolog\Registry;
18
+
19
+ /**
20
+ * Monolog error handler
21
+ *
22
+ * A facility to enable logging of runtime errors, exceptions and fatal errors.
23
+ *
24
+ * Quick setup: <code>ErrorHandler::register($logger);</code>
25
+ *
26
+ * @author Jordi Boggiano <j.boggiano@seld.be>
27
+ */
28
+ class ErrorHandler
29
+ {
30
+ private $logger;
31
+
32
+ private $previousExceptionHandler;
33
+ private $uncaughtExceptionLevel;
34
+
35
+ private $previousErrorHandler;
36
+ private $errorLevelMap;
37
+ private $handleOnlyReportedErrors;
38
+
39
+ private $hasFatalErrorHandler;
40
+ private $fatalLevel;
41
+ private $reservedMemory;
42
+ private $lastFatalTrace;
43
+ private static $fatalErrors = array(E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR);
44
+
45
+ public function __construct(LoggerInterface $logger)
46
+ {
47
+ $this->logger = $logger;
48
+ }
49
+
50
+ /**
51
+ * Registers a new ErrorHandler for a given Logger
52
+ *
53
+ * By default it will handle errors, exceptions and fatal errors
54
+ *
55
+ * @param LoggerInterface $logger
56
+ * @param array|false $errorLevelMap an array of E_* constant to LogLevel::* constant mapping, or false to disable error handling
57
+ * @param int|false $exceptionLevel a LogLevel::* constant, or false to disable exception handling
58
+ * @param int|false $fatalLevel a LogLevel::* constant, or false to disable fatal error handling
59
+ * @return ErrorHandler
60
+ */
61
+ public static function register(LoggerInterface $logger, $errorLevelMap = array(), $exceptionLevel = null, $fatalLevel = null)
62
+ {
63
+ //Forces the autoloader to run for LogLevel. Fixes an autoload issue at compile-time on PHP5.3. See https://github.com/Seldaek/monolog/pull/929
64
+ class_exists('\\Psr\\Log\\LogLevel', true);
65
+
66
+ $handler = new static($logger);
67
+ if ($errorLevelMap !== false) {
68
+ $handler->registerErrorHandler($errorLevelMap);
69
+ }
70
+ if ($exceptionLevel !== false) {
71
+ $handler->registerExceptionHandler($exceptionLevel);
72
+ }
73
+ if ($fatalLevel !== false) {
74
+ $handler->registerFatalHandler($fatalLevel);
75
+ }
76
+
77
+ return $handler;
78
+ }
79
+
80
+ public function registerExceptionHandler($level = null, $callPrevious = true)
81
+ {
82
+ $prev = set_exception_handler(array($this, 'handleException'));
83
+ $this->uncaughtExceptionLevel = $level;
84
+ if ($callPrevious && $prev) {
85
+ $this->previousExceptionHandler = $prev;
86
+ }
87
+ }
88
+
89
+ public function registerErrorHandler(array $levelMap = array(), $callPrevious = true, $errorTypes = -1, $handleOnlyReportedErrors = true)
90
+ {
91
+ $prev = set_error_handler(array($this, 'handleError'), $errorTypes);
92
+ $this->errorLevelMap = array_replace($this->defaultErrorLevelMap(), $levelMap);
93
+ if ($callPrevious) {
94
+ $this->previousErrorHandler = $prev ?: true;
95
+ }
96
+
97
+ $this->handleOnlyReportedErrors = $handleOnlyReportedErrors;
98
+ }
99
+
100
+ public function registerFatalHandler($level = null, $reservedMemorySize = 20)
101
+ {
102
+ register_shutdown_function(array($this, 'handleFatalError'));
103
+
104
+ $this->reservedMemory = str_repeat(' ', 1024 * $reservedMemorySize);
105
+ $this->fatalLevel = $level;
106
+ $this->hasFatalErrorHandler = true;
107
+ }
108
+
109
+ protected function defaultErrorLevelMap()
110
+ {
111
+ return array(
112
+ E_ERROR => LogLevel::CRITICAL,
113
+ E_WARNING => LogLevel::WARNING,
114
+ E_PARSE => LogLevel::ALERT,
115
+ E_NOTICE => LogLevel::NOTICE,
116
+ E_CORE_ERROR => LogLevel::CRITICAL,
117
+ E_CORE_WARNING => LogLevel::WARNING,
118
+ E_COMPILE_ERROR => LogLevel::ALERT,
119
+ E_COMPILE_WARNING => LogLevel::WARNING,
120
+ E_USER_ERROR => LogLevel::ERROR,
121
+ E_USER_WARNING => LogLevel::WARNING,
122
+ E_USER_NOTICE => LogLevel::NOTICE,
123
+ E_STRICT => LogLevel::NOTICE,
124
+ E_RECOVERABLE_ERROR => LogLevel::ERROR,
125
+ E_DEPRECATED => LogLevel::NOTICE,
126
+ E_USER_DEPRECATED => LogLevel::NOTICE,
127
+ );
128
+ }
129
+
130
+ /**
131
+ * @private
132
+ */
133
+ public function handleException($e)
134
+ {
135
+ $this->logger->log(
136
+ $this->uncaughtExceptionLevel === null ? LogLevel::ERROR : $this->uncaughtExceptionLevel,
137
+ sprintf('Uncaught Exception %s: "%s" at %s line %s', Utils::getClass($e), $e->getMessage(), $e->getFile(), $e->getLine()),
138
+ array('exception' => $e)
139
+ );
140
+
141
+ if ($this->previousExceptionHandler) {
142
+ call_user_func($this->previousExceptionHandler, $e);
143
+ }
144
+
145
+ exit(255);
146
+ }
147
+
148
+ /**
149
+ * @private
150
+ */
151
+ public function handleError($code, $message, $file = '', $line = 0, $context = array())
152
+ {
153
+ if ($this->handleOnlyReportedErrors && !(error_reporting() & $code)) {
154
+ return;
155
+ }
156
+
157
+ // fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries
158
+ if (!$this->hasFatalErrorHandler || !in_array($code, self::$fatalErrors, true)) {
159
+ $level = isset($this->errorLevelMap[$code]) ? $this->errorLevelMap[$code] : LogLevel::CRITICAL;
160
+ $this->logger->log($level, self::codeToString($code).': '.$message, array('code' => $code, 'message' => $message, 'file' => $file, 'line' => $line));
161
+ } else {
162
+ // http://php.net/manual/en/function.debug-backtrace.php
163
+ // As of 5.3.6, DEBUG_BACKTRACE_IGNORE_ARGS option was added.
164
+ // Any version less than 5.3.6 must use the DEBUG_BACKTRACE_IGNORE_ARGS constant value '2'.
165
+ $trace = debug_backtrace((PHP_VERSION_ID < 50306) ? 2 : DEBUG_BACKTRACE_IGNORE_ARGS);
166
+ array_shift($trace); // Exclude handleError from trace
167
+ $this->lastFatalTrace = $trace;
168
+ }
169
+
170
+ if ($this->previousErrorHandler === true) {
171
+ return false;
172
+ } elseif ($this->previousErrorHandler) {
173
+ return call_user_func($this->previousErrorHandler, $code, $message, $file, $line, $context);
174
+ }
175
+ }
176
+
177
+ /**
178
+ * @private
179
+ */
180
+ public function handleFatalError()
181
+ {
182
+ $this->reservedMemory = null;
183
+
184
+ $lastError = error_get_last();
185
+ if ($lastError && in_array($lastError['type'], self::$fatalErrors, true)) {
186
+ $this->logger->log(
187
+ $this->fatalLevel === null ? LogLevel::ALERT : $this->fatalLevel,
188
+ 'Fatal Error ('.self::codeToString($lastError['type']).'): '.$lastError['message'],
189
+ array('code' => $lastError['type'], 'message' => $lastError['message'], 'file' => $lastError['file'], 'line' => $lastError['line'], 'trace' => $this->lastFatalTrace)
190
+ );
191
+
192
+ if ($this->logger instanceof Logger) {
193
+ foreach ($this->logger->getHandlers() as $handler) {
194
+ if ($handler instanceof AbstractHandler) {
195
+ $handler->close();
196
+ }
197
+ }
198
+ }
199
+ }
200
+ }
201
+
202
+ private static function codeToString($code)
203
+ {
204
+ switch ($code) {
205
+ case E_ERROR:
206
+ return 'E_ERROR';
207
+ case E_WARNING:
208
+ return 'E_WARNING';
209
+ case E_PARSE:
210
+ return 'E_PARSE';
211
+ case E_NOTICE:
212
+ return 'E_NOTICE';
213
+ case E_CORE_ERROR:
214
+ return 'E_CORE_ERROR';
215
+ case E_CORE_WARNING:
216
+ return 'E_CORE_WARNING';
217
+ case E_COMPILE_ERROR:
218
+ return 'E_COMPILE_ERROR';
219
+ case E_COMPILE_WARNING:
220
+ return 'E_COMPILE_WARNING';
221
+ case E_USER_ERROR:
222
+ return 'E_USER_ERROR';
223
+ case E_USER_WARNING:
224
+ return 'E_USER_WARNING';
225
+ case E_USER_NOTICE:
226
+ return 'E_USER_NOTICE';
227
+ case E_STRICT:
228
+ return 'E_STRICT';
229
+ case E_RECOVERABLE_ERROR:
230
+ return 'E_RECOVERABLE_ERROR';
231
+ case E_DEPRECATED:
232
+ return 'E_DEPRECATED';
233
+ case E_USER_DEPRECATED:
234
+ return 'E_USER_DEPRECATED';
235
+ }
236
+
237
+ return 'Unknown PHP error';
238
+ }
239
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Formats a log message according to the ChromePHP array format
18
+ *
19
+ * @author Christophe Coevoet <stof@notk.org>
20
+ */
21
+ class ChromePHPFormatter implements FormatterInterface
22
+ {
23
+ /**
24
+ * Translates Monolog log levels to Wildfire levels.
25
+ */
26
+ private $logLevels = array(
27
+ Logger::DEBUG => 'log',
28
+ Logger::INFO => 'info',
29
+ Logger::NOTICE => 'info',
30
+ Logger::WARNING => 'warn',
31
+ Logger::ERROR => 'error',
32
+ Logger::CRITICAL => 'error',
33
+ Logger::ALERT => 'error',
34
+ Logger::EMERGENCY => 'error',
35
+ );
36
+
37
+ /**
38
+ * {@inheritdoc}
39
+ */
40
+ public function format(array $record)
41
+ {
42
+ // Retrieve the line and file if set and remove them from the formatted extra
43
+ $backtrace = 'unknown';
44
+ if (isset($record['extra']['file'], $record['extra']['line'])) {
45
+ $backtrace = $record['extra']['file'].' : '.$record['extra']['line'];
46
+ unset($record['extra']['file'], $record['extra']['line']);
47
+ }
48
+
49
+ $message = array('message' => $record['message']);
50
+ if ($record['context']) {
51
+ $message['context'] = $record['context'];
52
+ }
53
+ if ($record['extra']) {
54
+ $message['extra'] = $record['extra'];
55
+ }
56
+ if (count($message) === 1) {
57
+ $message = reset($message);
58
+ }
59
+
60
+ return array(
61
+ $record['channel'],
62
+ $message,
63
+ $backtrace,
64
+ $this->logLevels[$record['level']],
65
+ );
66
+ }
67
+
68
+ public function formatBatch(array $records)
69
+ {
70
+ $formatted = array();
71
+
72
+ foreach ($records as $record) {
73
+ $formatted[] = $this->format($record);
74
+ }
75
+
76
+ return $formatted;
77
+ }
78
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ use Elastica\Document;
15
+
16
+ /**
17
+ * Format a log message into an Elastica Document
18
+ *
19
+ * @author Jelle Vink <jelle.vink@gmail.com>
20
+ */
21
+ class ElasticaFormatter extends NormalizerFormatter
22
+ {
23
+ /**
24
+ * @var string Elastic search index name
25
+ */
26
+ protected $index;
27
+
28
+ /**
29
+ * @var string Elastic search document type
30
+ */
31
+ protected $type;
32
+
33
+ /**
34
+ * @param string $index Elastic Search index name
35
+ * @param string $type Elastic Search document type
36
+ */
37
+ public function __construct($index, $type)
38
+ {
39
+ // elasticsearch requires a ISO 8601 format date with optional millisecond precision.
40
+ parent::__construct('Y-m-d\TH:i:s.uP');
41
+
42
+ $this->index = $index;
43
+ $this->type = $type;
44
+ }
45
+
46
+ /**
47
+ * {@inheritdoc}
48
+ */
49
+ public function format(array $record)
50
+ {
51
+ $record = parent::format($record);
52
+
53
+ return $this->getDocument($record);
54
+ }
55
+
56
+ /**
57
+ * Getter index
58
+ * @return string
59
+ */
60
+ public function getIndex()
61
+ {
62
+ return $this->index;
63
+ }
64
+
65
+ /**
66
+ * Getter type
67
+ * @return string
68
+ */
69
+ public function getType()
70
+ {
71
+ return $this->type;
72
+ }
73
+
74
+ /**
75
+ * Convert a log message into an Elastica Document
76
+ *
77
+ * @param array $record Log message
78
+ * @return Document
79
+ */
80
+ protected function getDocument($record)
81
+ {
82
+ $document = new Document();
83
+ $document->setData($record);
84
+ $document->setType($this->type);
85
+ $document->setIndex($this->index);
86
+
87
+ return $document;
88
+ }
89
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ /**
15
+ * formats the record to be used in the FlowdockHandler
16
+ *
17
+ * @author Dominik Liebler <liebler.dominik@gmail.com>
18
+ */
19
+ class FlowdockFormatter implements FormatterInterface
20
+ {
21
+ /**
22
+ * @var string
23
+ */
24
+ private $source;
25
+
26
+ /**
27
+ * @var string
28
+ */
29
+ private $sourceEmail;
30
+
31
+ /**
32
+ * @param string $source
33
+ * @param string $sourceEmail
34
+ */
35
+ public function __construct($source, $sourceEmail)
36
+ {
37
+ $this->source = $source;
38
+ $this->sourceEmail = $sourceEmail;
39
+ }
40
+
41
+ /**
42
+ * {@inheritdoc}
43
+ */
44
+ public function format(array $record)
45
+ {
46
+ $tags = array(
47
+ '#logs',
48
+ '#' . strtolower($record['level_name']),
49
+ '#' . $record['channel'],
50
+ );
51
+
52
+ foreach ($record['extra'] as $value) {
53
+ $tags[] = '#' . $value;
54
+ }
55
+
56
+ $subject = sprintf(
57
+ 'in %s: %s - %s',
58
+ $this->source,
59
+ $record['level_name'],
60
+ $this->getShortMessage($record['message'])
61
+ );
62
+
63
+ $record['flowdock'] = array(
64
+ 'source' => $this->source,
65
+ 'from_address' => $this->sourceEmail,
66
+ 'subject' => $subject,
67
+ 'content' => $record['message'],
68
+ 'tags' => $tags,
69
+ 'project' => $this->source,
70
+ );
71
+
72
+ return $record;
73
+ }
74
+
75
+ /**
76
+ * {@inheritdoc}
77
+ */
78
+ public function formatBatch(array $records)
79
+ {
80
+ $formatted = array();
81
+
82
+ foreach ($records as $record) {
83
+ $formatted[] = $this->format($record);
84
+ }
85
+
86
+ return $formatted;
87
+ }
88
+
89
+ /**
90
+ * @param string $message
91
+ *
92
+ * @return string
93
+ */
94
+ public function getShortMessage($message)
95
+ {
96
+ static $hasMbString;
97
+
98
+ if (null === $hasMbString) {
99
+ $hasMbString = function_exists('mb_strlen');
100
+ }
101
+
102
+ $maxLength = 45;
103
+
104
+ if ($hasMbString) {
105
+ if (mb_strlen($message, 'UTF-8') > $maxLength) {
106
+ $message = mb_substr($message, 0, $maxLength - 4, 'UTF-8') . ' ...';
107
+ }
108
+ } else {
109
+ if (strlen($message) > $maxLength) {
110
+ $message = substr($message, 0, $maxLength - 4) . ' ...';
111
+ }
112
+ }
113
+
114
+ return $message;
115
+ }
116
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php ADDED
@@ -0,0 +1,86 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ /**
15
+ * Class FluentdFormatter
16
+ *
17
+ * Serializes a log message to Fluentd unix socket protocol
18
+ *
19
+ * Fluentd config:
20
+ *
21
+ * <source>
22
+ * type unix
23
+ * path /var/run/td-agent/td-agent.sock
24
+ * </source>
25
+ *
26
+ * Monolog setup:
27
+ *
28
+ * $logger = new Monolog\Logger('fluent.tag');
29
+ * $fluentHandler = new Monolog\Handler\SocketHandler('unix:///var/run/td-agent/td-agent.sock');
30
+ * $fluentHandler->setFormatter(new Monolog\Formatter\FluentdFormatter());
31
+ * $logger->pushHandler($fluentHandler);
32
+ *
33
+ * @author Andrius Putna <fordnox@gmail.com>
34
+ */
35
+ class FluentdFormatter implements FormatterInterface
36
+ {
37
+ /**
38
+ * @var bool $levelTag should message level be a part of the fluentd tag
39
+ */
40
+ protected $levelTag = false;
41
+
42
+ public function __construct($levelTag = false)
43
+ {
44
+ if (!function_exists('json_encode')) {
45
+ throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s FluentdUnixFormatter');
46
+ }
47
+
48
+ $this->levelTag = (bool) $levelTag;
49
+ }
50
+
51
+ public function isUsingLevelsInTag()
52
+ {
53
+ return $this->levelTag;
54
+ }
55
+
56
+ public function format(array $record)
57
+ {
58
+ $tag = $record['channel'];
59
+ if ($this->levelTag) {
60
+ $tag .= '.' . strtolower($record['level_name']);
61
+ }
62
+
63
+ $message = array(
64
+ 'message' => $record['message'],
65
+ 'context' => $record['context'],
66
+ 'extra' => $record['extra'],
67
+ );
68
+
69
+ if (!$this->levelTag) {
70
+ $message['level'] = $record['level'];
71
+ $message['level_name'] = $record['level_name'];
72
+ }
73
+
74
+ return json_encode(array($tag, $record['datetime']->getTimestamp(), $message));
75
+ }
76
+
77
+ public function formatBatch(array $records)
78
+ {
79
+ $message = '';
80
+ foreach ($records as $record) {
81
+ $message .= $this->format($record);
82
+ }
83
+
84
+ return $message;
85
+ }
86
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ /**
15
+ * Interface for formatters
16
+ *
17
+ * @author Jordi Boggiano <j.boggiano@seld.be>
18
+ */
19
+ interface FormatterInterface
20
+ {
21
+ /**
22
+ * Formats a log record.
23
+ *
24
+ * @param array $record A record to format
25
+ * @return mixed The formatted record
26
+ */
27
+ public function format(array $record);
28
+
29
+ /**
30
+ * Formats a set of log records.
31
+ *
32
+ * @param array $records A set of records to format
33
+ * @return mixed The formatted set of records
34
+ */
35
+ public function formatBatch(array $records);
36
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ use Monolog\Logger;
15
+ use Gelf\Message;
16
+
17
+ /**
18
+ * Serializes a log message to GELF
19
+ * @see http://www.graylog2.org/about/gelf
20
+ *
21
+ * @author Matt Lehner <mlehner@gmail.com>
22
+ */
23
+ class GelfMessageFormatter extends NormalizerFormatter
24
+ {
25
+ const DEFAULT_MAX_LENGTH = 32766;
26
+
27
+ /**
28
+ * @var string the name of the system for the Gelf log message
29
+ */
30
+ protected $systemName;
31
+
32
+ /**
33
+ * @var string a prefix for 'extra' fields from the Monolog record (optional)
34
+ */
35
+ protected $extraPrefix;
36
+
37
+ /**
38
+ * @var string a prefix for 'context' fields from the Monolog record (optional)
39
+ */
40
+ protected $contextPrefix;
41
+
42
+ /**
43
+ * @var int max length per field
44
+ */
45
+ protected $maxLength;
46
+
47
+ /**
48
+ * Translates Monolog log levels to Graylog2 log priorities.
49
+ */
50
+ private $logLevels = array(
51
+ Logger::DEBUG => 7,
52
+ Logger::INFO => 6,
53
+ Logger::NOTICE => 5,
54
+ Logger::WARNING => 4,
55
+ Logger::ERROR => 3,
56
+ Logger::CRITICAL => 2,
57
+ Logger::ALERT => 1,
58
+ Logger::EMERGENCY => 0,
59
+ );
60
+
61
+ public function __construct($systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $maxLength = null)
62
+ {
63
+ parent::__construct('U.u');
64
+
65
+ $this->systemName = $systemName ?: gethostname();
66
+
67
+ $this->extraPrefix = $extraPrefix;
68
+ $this->contextPrefix = $contextPrefix;
69
+ $this->maxLength = is_null($maxLength) ? self::DEFAULT_MAX_LENGTH : $maxLength;
70
+ }
71
+
72
+ /**
73
+ * {@inheritdoc}
74
+ */
75
+ public function format(array $record)
76
+ {
77
+ $record = parent::format($record);
78
+
79
+ if (!isset($record['datetime'], $record['message'], $record['level'])) {
80
+ throw new \InvalidArgumentException('The record should at least contain datetime, message and level keys, '.var_export($record, true).' given');
81
+ }
82
+
83
+ $message = new Message();
84
+ $message
85
+ ->setTimestamp($record['datetime'])
86
+ ->setShortMessage((string) $record['message'])
87
+ ->setHost($this->systemName)
88
+ ->setLevel($this->logLevels[$record['level']]);
89
+
90
+ // message length + system name length + 200 for padding / metadata
91
+ $len = 200 + strlen((string) $record['message']) + strlen($this->systemName);
92
+
93
+ if ($len > $this->maxLength) {
94
+ $message->setShortMessage(substr($record['message'], 0, $this->maxLength));
95
+ }
96
+
97
+ if (isset($record['channel'])) {
98
+ $message->setFacility($record['channel']);
99
+ }
100
+ if (isset($record['extra']['line'])) {
101
+ $message->setLine($record['extra']['line']);
102
+ unset($record['extra']['line']);
103
+ }
104
+ if (isset($record['extra']['file'])) {
105
+ $message->setFile($record['extra']['file']);
106
+ unset($record['extra']['file']);
107
+ }
108
+
109
+ foreach ($record['extra'] as $key => $val) {
110
+ $val = is_scalar($val) || null === $val ? $val : $this->toJson($val);
111
+ $len = strlen($this->extraPrefix . $key . $val);
112
+ if ($len > $this->maxLength) {
113
+ $message->setAdditional($this->extraPrefix . $key, substr($val, 0, $this->maxLength));
114
+ break;
115
+ }
116
+ $message->setAdditional($this->extraPrefix . $key, $val);
117
+ }
118
+
119
+ foreach ($record['context'] as $key => $val) {
120
+ $val = is_scalar($val) || null === $val ? $val : $this->toJson($val);
121
+ $len = strlen($this->contextPrefix . $key . $val);
122
+ if ($len > $this->maxLength) {
123
+ $message->setAdditional($this->contextPrefix . $key, substr($val, 0, $this->maxLength));
124
+ break;
125
+ }
126
+ $message->setAdditional($this->contextPrefix . $key, $val);
127
+ }
128
+
129
+ if (null === $message->getFile() && isset($record['context']['exception']['file'])) {
130
+ if (preg_match("/^(.+):([0-9]+)$/", $record['context']['exception']['file'], $matches)) {
131
+ $message->setFile($matches[1]);
132
+ $message->setLine($matches[2]);
133
+ }
134
+ }
135
+
136
+ return $message;
137
+ }
138
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php ADDED
@@ -0,0 +1,141 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * This file is part of the Monolog package.
4
+ *
5
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
6
+ *
7
+ * For the full copyright and license information, please view the LICENSE
8
+ * file that was distributed with this source code.
9
+ */
10
+
11
+ namespace Monolog\Formatter;
12
+
13
+ use Monolog\Logger;
14
+
15
+ /**
16
+ * Formats incoming records into an HTML table
17
+ *
18
+ * This is especially useful for html email logging
19
+ *
20
+ * @author Tiago Brito <tlfbrito@gmail.com>
21
+ */
22
+ class HtmlFormatter extends NormalizerFormatter
23
+ {
24
+ /**
25
+ * Translates Monolog log levels to html color priorities.
26
+ */
27
+ protected $logLevels = array(
28
+ Logger::DEBUG => '#cccccc',
29
+ Logger::INFO => '#468847',
30
+ Logger::NOTICE => '#3a87ad',
31
+ Logger::WARNING => '#c09853',
32
+ Logger::ERROR => '#f0ad4e',
33
+ Logger::CRITICAL => '#FF7708',
34
+ Logger::ALERT => '#C12A19',
35
+ Logger::EMERGENCY => '#000000',
36
+ );
37
+
38
+ /**
39
+ * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
40
+ */
41
+ public function __construct($dateFormat = null)
42
+ {
43
+ parent::__construct($dateFormat);
44
+ }
45
+
46
+ /**
47
+ * Creates an HTML table row
48
+ *
49
+ * @param string $th Row header content
50
+ * @param string $td Row standard cell content
51
+ * @param bool $escapeTd false if td content must not be html escaped
52
+ * @return string
53
+ */
54
+ protected function addRow($th, $td = ' ', $escapeTd = true)
55
+ {
56
+ $th = htmlspecialchars($th, ENT_NOQUOTES, 'UTF-8');
57
+ if ($escapeTd) {
58
+ $td = '<pre>'.htmlspecialchars($td, ENT_NOQUOTES, 'UTF-8').'</pre>';
59
+ }
60
+
61
+ return "<tr style=\"padding: 4px;text-align: left;\">\n<th style=\"vertical-align: top;background: #ccc;color: #000\" width=\"100\">$th:</th>\n<td style=\"padding: 4px;text-align: left;vertical-align: top;background: #eee;color: #000\">".$td."</td>\n</tr>";
62
+ }
63
+
64
+ /**
65
+ * Create a HTML h1 tag
66
+ *
67
+ * @param string $title Text to be in the h1
68
+ * @param int $level Error level
69
+ * @return string
70
+ */
71
+ protected function addTitle($title, $level)
72
+ {
73
+ $title = htmlspecialchars($title, ENT_NOQUOTES, 'UTF-8');
74
+
75
+ return '<h1 style="background: '.$this->logLevels[$level].';color: #ffffff;padding: 5px;" class="monolog-output">'.$title.'</h1>';
76
+ }
77
+
78
+ /**
79
+ * Formats a log record.
80
+ *
81
+ * @param array $record A record to format
82
+ * @return mixed The formatted record
83
+ */
84
+ public function format(array $record)
85
+ {
86
+ $output = $this->addTitle($record['level_name'], $record['level']);
87
+ $output .= '<table cellspacing="1" width="100%" class="monolog-output">';
88
+
89
+ $output .= $this->addRow('Message', (string) $record['message']);
90
+ $output .= $this->addRow('Time', $record['datetime']->format($this->dateFormat));
91
+ $output .= $this->addRow('Channel', $record['channel']);
92
+ if ($record['context']) {
93
+ $embeddedTable = '<table cellspacing="1" width="100%">';
94
+ foreach ($record['context'] as $key => $value) {
95
+ $embeddedTable .= $this->addRow($key, $this->convertToString($value));
96
+ }
97
+ $embeddedTable .= '</table>';
98
+ $output .= $this->addRow('Context', $embeddedTable, false);
99
+ }
100
+ if ($record['extra']) {
101
+ $embeddedTable = '<table cellspacing="1" width="100%">';
102
+ foreach ($record['extra'] as $key => $value) {
103
+ $embeddedTable .= $this->addRow($key, $this->convertToString($value));
104
+ }
105
+ $embeddedTable .= '</table>';
106
+ $output .= $this->addRow('Extra', $embeddedTable, false);
107
+ }
108
+
109
+ return $output.'</table>';
110
+ }
111
+
112
+ /**
113
+ * Formats a set of log records.
114
+ *
115
+ * @param array $records A set of records to format
116
+ * @return mixed The formatted set of records
117
+ */
118
+ public function formatBatch(array $records)
119
+ {
120
+ $message = '';
121
+ foreach ($records as $record) {
122
+ $message .= $this->format($record);
123
+ }
124
+
125
+ return $message;
126
+ }
127
+
128
+ protected function convertToString($data)
129
+ {
130
+ if (null === $data || is_scalar($data)) {
131
+ return (string) $data;
132
+ }
133
+
134
+ $data = $this->normalize($data);
135
+ if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
136
+ return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
137
+ }
138
+
139
+ return str_replace('\\/', '/', json_encode($data));
140
+ }
141
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php ADDED
@@ -0,0 +1,214 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ use Exception;
15
+ use Monolog\Utils;
16
+ use Throwable;
17
+
18
+ /**
19
+ * Encodes whatever record data is passed to it as json
20
+ *
21
+ * This can be useful to log to databases or remote APIs
22
+ *
23
+ * @author Jordi Boggiano <j.boggiano@seld.be>
24
+ */
25
+ class JsonFormatter extends NormalizerFormatter
26
+ {
27
+ const BATCH_MODE_JSON = 1;
28
+ const BATCH_MODE_NEWLINES = 2;
29
+
30
+ protected $batchMode;
31
+ protected $appendNewline;
32
+
33
+ /**
34
+ * @var bool
35
+ */
36
+ protected $includeStacktraces = false;
37
+
38
+ /**
39
+ * @param int $batchMode
40
+ * @param bool $appendNewline
41
+ */
42
+ public function __construct($batchMode = self::BATCH_MODE_JSON, $appendNewline = true)
43
+ {
44
+ $this->batchMode = $batchMode;
45
+ $this->appendNewline = $appendNewline;
46
+ }
47
+
48
+ /**
49
+ * The batch mode option configures the formatting style for
50
+ * multiple records. By default, multiple records will be
51
+ * formatted as a JSON-encoded array. However, for
52
+ * compatibility with some API endpoints, alternative styles
53
+ * are available.
54
+ *
55
+ * @return int
56
+ */
57
+ public function getBatchMode()
58
+ {
59
+ return $this->batchMode;
60
+ }
61
+
62
+ /**
63
+ * True if newlines are appended to every formatted record
64
+ *
65
+ * @return bool
66
+ */
67
+ public function isAppendingNewlines()
68
+ {
69
+ return $this->appendNewline;
70
+ }
71
+
72
+ /**
73
+ * {@inheritdoc}
74
+ */
75
+ public function format(array $record)
76
+ {
77
+ return $this->toJson($this->normalize($record), true) . ($this->appendNewline ? "\n" : '');
78
+ }
79
+
80
+ /**
81
+ * {@inheritdoc}
82
+ */
83
+ public function formatBatch(array $records)
84
+ {
85
+ switch ($this->batchMode) {
86
+ case static::BATCH_MODE_NEWLINES:
87
+ return $this->formatBatchNewlines($records);
88
+
89
+ case static::BATCH_MODE_JSON:
90
+ default:
91
+ return $this->formatBatchJson($records);
92
+ }
93
+ }
94
+
95
+ /**
96
+ * @param bool $include
97
+ */
98
+ public function includeStacktraces($include = true)
99
+ {
100
+ $this->includeStacktraces = $include;
101
+ }
102
+
103
+ /**
104
+ * Return a JSON-encoded array of records.
105
+ *
106
+ * @param array $records
107
+ * @return string
108
+ */
109
+ protected function formatBatchJson(array $records)
110
+ {
111
+ return $this->toJson($this->normalize($records), true);
112
+ }
113
+
114
+ /**
115
+ * Use new lines to separate records instead of a
116
+ * JSON-encoded array.
117
+ *
118
+ * @param array $records
119
+ * @return string
120
+ */
121
+ protected function formatBatchNewlines(array $records)
122
+ {
123
+ $instance = $this;
124
+
125
+ $oldNewline = $this->appendNewline;
126
+ $this->appendNewline = false;
127
+ array_walk($records, function (&$value, $key) use ($instance) {
128
+ $value = $instance->format($value);
129
+ });
130
+ $this->appendNewline = $oldNewline;
131
+
132
+ return implode("\n", $records);
133
+ }
134
+
135
+ /**
136
+ * Normalizes given $data.
137
+ *
138
+ * @param mixed $data
139
+ *
140
+ * @return mixed
141
+ */
142
+ protected function normalize($data, $depth = 0)
143
+ {
144
+ if ($depth > 9) {
145
+ return 'Over 9 levels deep, aborting normalization';
146
+ }
147
+
148
+ if (is_array($data) || $data instanceof \Traversable) {
149
+ $normalized = array();
150
+
151
+ $count = 1;
152
+ foreach ($data as $key => $value) {
153
+ if ($count++ > 1000) {
154
+ $normalized['...'] = 'Over 1000 items ('.count($data).' total), aborting normalization';
155
+ break;
156
+ }
157
+
158
+ $normalized[$key] = $this->normalize($value, $depth+1);
159
+ }
160
+
161
+ return $normalized;
162
+ }
163
+
164
+ if ($data instanceof Exception || $data instanceof Throwable) {
165
+ return $this->normalizeException($data);
166
+ }
167
+
168
+ return $data;
169
+ }
170
+
171
+ /**
172
+ * Normalizes given exception with or without its own stack trace based on
173
+ * `includeStacktraces` property.
174
+ *
175
+ * @param Exception|Throwable $e
176
+ *
177
+ * @return array
178
+ */
179
+ protected function normalizeException($e)
180
+ {
181
+ // TODO 2.0 only check for Throwable
182
+ if (!$e instanceof Exception && !$e instanceof Throwable) {
183
+ throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.Utils::getClass($e));
184
+ }
185
+
186
+ $data = array(
187
+ 'class' => Utils::getClass($e),
188
+ 'message' => $e->getMessage(),
189
+ 'code' => $e->getCode(),
190
+ 'file' => $e->getFile().':'.$e->getLine(),
191
+ );
192
+
193
+ if ($this->includeStacktraces) {
194
+ $trace = $e->getTrace();
195
+ foreach ($trace as $frame) {
196
+ if (isset($frame['file'])) {
197
+ $data['trace'][] = $frame['file'].':'.$frame['line'];
198
+ } elseif (isset($frame['function']) && $frame['function'] === '{closure}') {
199
+ // We should again normalize the frames, because it might contain invalid items
200
+ $data['trace'][] = $frame['function'];
201
+ } else {
202
+ // We should again normalize the frames, because it might contain invalid items
203
+ $data['trace'][] = $this->normalize($frame);
204
+ }
205
+ }
206
+ }
207
+
208
+ if ($previous = $e->getPrevious()) {
209
+ $data['previous'] = $this->normalizeException($previous);
210
+ }
211
+
212
+ return $data;
213
+ }
214
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php ADDED
@@ -0,0 +1,181 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ use Monolog\Utils;
15
+
16
+ /**
17
+ * Formats incoming records into a one-line string
18
+ *
19
+ * This is especially useful for logging to files
20
+ *
21
+ * @author Jordi Boggiano <j.boggiano@seld.be>
22
+ * @author Christophe Coevoet <stof@notk.org>
23
+ */
24
+ class LineFormatter extends NormalizerFormatter
25
+ {
26
+ const SIMPLE_FORMAT = "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n";
27
+
28
+ protected $format;
29
+ protected $allowInlineLineBreaks;
30
+ protected $ignoreEmptyContextAndExtra;
31
+ protected $includeStacktraces;
32
+
33
+ /**
34
+ * @param string $format The format of the message
35
+ * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
36
+ * @param bool $allowInlineLineBreaks Whether to allow inline line breaks in log entries
37
+ * @param bool $ignoreEmptyContextAndExtra
38
+ */
39
+ public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = false, $ignoreEmptyContextAndExtra = false)
40
+ {
41
+ $this->format = $format ?: static::SIMPLE_FORMAT;
42
+ $this->allowInlineLineBreaks = $allowInlineLineBreaks;
43
+ $this->ignoreEmptyContextAndExtra = $ignoreEmptyContextAndExtra;
44
+ parent::__construct($dateFormat);
45
+ }
46
+
47
+ public function includeStacktraces($include = true)
48
+ {
49
+ $this->includeStacktraces = $include;
50
+ if ($this->includeStacktraces) {
51
+ $this->allowInlineLineBreaks = true;
52
+ }
53
+ }
54
+
55
+ public function allowInlineLineBreaks($allow = true)
56
+ {
57
+ $this->allowInlineLineBreaks = $allow;
58
+ }
59
+
60
+ public function ignoreEmptyContextAndExtra($ignore = true)
61
+ {
62
+ $this->ignoreEmptyContextAndExtra = $ignore;
63
+ }
64
+
65
+ /**
66
+ * {@inheritdoc}
67
+ */
68
+ public function format(array $record)
69
+ {
70
+ $vars = parent::format($record);
71
+
72
+ $output = $this->format;
73
+
74
+ foreach ($vars['extra'] as $var => $val) {
75
+ if (false !== strpos($output, '%extra.'.$var.'%')) {
76
+ $output = str_replace('%extra.'.$var.'%', $this->stringify($val), $output);
77
+ unset($vars['extra'][$var]);
78
+ }
79
+ }
80
+
81
+
82
+ foreach ($vars['context'] as $var => $val) {
83
+ if (false !== strpos($output, '%context.'.$var.'%')) {
84
+ $output = str_replace('%context.'.$var.'%', $this->stringify($val), $output);
85
+ unset($vars['context'][$var]);
86
+ }
87
+ }
88
+
89
+ if ($this->ignoreEmptyContextAndExtra) {
90
+ if (empty($vars['context'])) {
91
+ unset($vars['context']);
92
+ $output = str_replace('%context%', '', $output);
93
+ }
94
+
95
+ if (empty($vars['extra'])) {
96
+ unset($vars['extra']);
97
+ $output = str_replace('%extra%', '', $output);
98
+ }
99
+ }
100
+
101
+ foreach ($vars as $var => $val) {
102
+ if (false !== strpos($output, '%'.$var.'%')) {
103
+ $output = str_replace('%'.$var.'%', $this->stringify($val), $output);
104
+ }
105
+ }
106
+
107
+ // remove leftover %extra.xxx% and %context.xxx% if any
108
+ if (false !== strpos($output, '%')) {
109
+ $output = preg_replace('/%(?:extra|context)\..+?%/', '', $output);
110
+ }
111
+
112
+ return $output;
113
+ }
114
+
115
+ public function formatBatch(array $records)
116
+ {
117
+ $message = '';
118
+ foreach ($records as $record) {
119
+ $message .= $this->format($record);
120
+ }
121
+
122
+ return $message;
123
+ }
124
+
125
+ public function stringify($value)
126
+ {
127
+ return $this->replaceNewlines($this->convertToString($value));
128
+ }
129
+
130
+ protected function normalizeException($e)
131
+ {
132
+ // TODO 2.0 only check for Throwable
133
+ if (!$e instanceof \Exception && !$e instanceof \Throwable) {
134
+ throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.Utils::getClass($e));
135
+ }
136
+
137
+ $previousText = '';
138
+ if ($previous = $e->getPrevious()) {
139
+ do {
140
+ $previousText .= ', '.Utils::getClass($previous).'(code: '.$previous->getCode().'): '.$previous->getMessage().' at '.$previous->getFile().':'.$previous->getLine();
141
+ } while ($previous = $previous->getPrevious());
142
+ }
143
+
144
+ $str = '[object] ('.Utils::getClass($e).'(code: '.$e->getCode().'): '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().$previousText.')';
145
+ if ($this->includeStacktraces) {
146
+ $str .= "\n[stacktrace]\n".$e->getTraceAsString()."\n";
147
+ }
148
+
149
+ return $str;
150
+ }
151
+
152
+ protected function convertToString($data)
153
+ {
154
+ if (null === $data || is_bool($data)) {
155
+ return var_export($data, true);
156
+ }
157
+
158
+ if (is_scalar($data)) {
159
+ return (string) $data;
160
+ }
161
+
162
+ if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
163
+ return $this->toJson($data, true);
164
+ }
165
+
166
+ return str_replace('\\/', '/', @json_encode($data));
167
+ }
168
+
169
+ protected function replaceNewlines($str)
170
+ {
171
+ if ($this->allowInlineLineBreaks) {
172
+ if (0 === strpos($str, '{')) {
173
+ return str_replace(array('\r', '\n'), array("\r", "\n"), $str);
174
+ }
175
+
176
+ return $str;
177
+ }
178
+
179
+ return str_replace(array("\r\n", "\r", "\n"), ' ', $str);
180
+ }
181
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ /**
15
+ * Encodes message information into JSON in a format compatible with Loggly.
16
+ *
17
+ * @author Adam Pancutt <adam@pancutt.com>
18
+ */
19
+ class LogglyFormatter extends JsonFormatter
20
+ {
21
+ /**
22
+ * Overrides the default batch mode to new lines for compatibility with the
23
+ * Loggly bulk API.
24
+ *
25
+ * @param int $batchMode
26
+ */
27
+ public function __construct($batchMode = self::BATCH_MODE_NEWLINES, $appendNewline = false)
28
+ {
29
+ parent::__construct($batchMode, $appendNewline);
30
+ }
31
+
32
+ /**
33
+ * Appends the 'timestamp' parameter for indexing by Loggly.
34
+ *
35
+ * @see https://www.loggly.com/docs/automated-parsing/#json
36
+ * @see \Monolog\Formatter\JsonFormatter::format()
37
+ */
38
+ public function format(array $record)
39
+ {
40
+ if (isset($record["datetime"]) && ($record["datetime"] instanceof \DateTime)) {
41
+ $record["timestamp"] = $record["datetime"]->format("Y-m-d\TH:i:s.uO");
42
+ // TODO 2.0 unset the 'datetime' parameter, retained for BC
43
+ }
44
+
45
+ return parent::format($record);
46
+ }
47
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ /**
15
+ * Serializes a log message to Logstash Event Format
16
+ *
17
+ * @see http://logstash.net/
18
+ * @see https://github.com/logstash/logstash/blob/master/lib/logstash/event.rb
19
+ *
20
+ * @author Tim Mower <timothy.mower@gmail.com>
21
+ */
22
+ class LogstashFormatter extends NormalizerFormatter
23
+ {
24
+ const V0 = 0;
25
+ const V1 = 1;
26
+
27
+ /**
28
+ * @var string the name of the system for the Logstash log message, used to fill the @source field
29
+ */
30
+ protected $systemName;
31
+
32
+ /**
33
+ * @var string an application name for the Logstash log message, used to fill the @type field
34
+ */
35
+ protected $applicationName;
36
+
37
+ /**
38
+ * @var string a prefix for 'extra' fields from the Monolog record (optional)
39
+ */
40
+ protected $extraPrefix;
41
+
42
+ /**
43
+ * @var string a prefix for 'context' fields from the Monolog record (optional)
44
+ */
45
+ protected $contextPrefix;
46
+
47
+ /**
48
+ * @var int logstash format version to use
49
+ */
50
+ protected $version;
51
+
52
+ /**
53
+ * @param string $applicationName the application that sends the data, used as the "type" field of logstash
54
+ * @param string $systemName the system/machine name, used as the "source" field of logstash, defaults to the hostname of the machine
55
+ * @param string $extraPrefix prefix for extra keys inside logstash "fields"
56
+ * @param string $contextPrefix prefix for context keys inside logstash "fields", defaults to ctxt_
57
+ * @param int $version the logstash format version to use, defaults to 0
58
+ */
59
+ public function __construct($applicationName, $systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $version = self::V0)
60
+ {
61
+ // logstash requires a ISO 8601 format date with optional millisecond precision.
62
+ parent::__construct('Y-m-d\TH:i:s.uP');
63
+
64
+ $this->systemName = $systemName ?: gethostname();
65
+ $this->applicationName = $applicationName;
66
+ $this->extraPrefix = $extraPrefix;
67
+ $this->contextPrefix = $contextPrefix;
68
+ $this->version = $version;
69
+ }
70
+
71
+ /**
72
+ * {@inheritdoc}
73
+ */
74
+ public function format(array $record)
75
+ {
76
+ $record = parent::format($record);
77
+
78
+ if ($this->version === self::V1) {
79
+ $message = $this->formatV1($record);
80
+ } else {
81
+ $message = $this->formatV0($record);
82
+ }
83
+
84
+ return $this->toJson($message) . "\n";
85
+ }
86
+
87
+ protected function formatV0(array $record)
88
+ {
89
+ if (empty($record['datetime'])) {
90
+ $record['datetime'] = gmdate('c');
91
+ }
92
+ $message = array(
93
+ '@timestamp' => $record['datetime'],
94
+ '@source' => $this->systemName,
95
+ '@fields' => array(),
96
+ );
97
+ if (isset($record['message'])) {
98
+ $message['@message'] = $record['message'];
99
+ }
100
+ if (isset($record['channel'])) {
101
+ $message['@tags'] = array($record['channel']);
102
+ $message['@fields']['channel'] = $record['channel'];
103
+ }
104
+ if (isset($record['level'])) {
105
+ $message['@fields']['level'] = $record['level'];
106
+ }
107
+ if ($this->applicationName) {
108
+ $message['@type'] = $this->applicationName;
109
+ }
110
+ if (isset($record['extra']['server'])) {
111
+ $message['@source_host'] = $record['extra']['server'];
112
+ }
113
+ if (isset($record['extra']['url'])) {
114
+ $message['@source_path'] = $record['extra']['url'];
115
+ }
116
+ if (!empty($record['extra'])) {
117
+ foreach ($record['extra'] as $key => $val) {
118
+ $message['@fields'][$this->extraPrefix . $key] = $val;
119
+ }
120
+ }
121
+ if (!empty($record['context'])) {
122
+ foreach ($record['context'] as $key => $val) {
123
+ $message['@fields'][$this->contextPrefix . $key] = $val;
124
+ }
125
+ }
126
+
127
+ return $message;
128
+ }
129
+
130
+ protected function formatV1(array $record)
131
+ {
132
+ if (empty($record['datetime'])) {
133
+ $record['datetime'] = gmdate('c');
134
+ }
135
+ $message = array(
136
+ '@timestamp' => $record['datetime'],
137
+ '@version' => 1,
138
+ 'host' => $this->systemName,
139
+ );
140
+ if (isset($record['message'])) {
141
+ $message['message'] = $record['message'];
142
+ }
143
+ if (isset($record['channel'])) {
144
+ $message['type'] = $record['channel'];
145
+ $message['channel'] = $record['channel'];
146
+ }
147
+ if (isset($record['level_name'])) {
148
+ $message['level'] = $record['level_name'];
149
+ }
150
+ if ($this->applicationName) {
151
+ $message['type'] = $this->applicationName;
152
+ }
153
+ if (!empty($record['extra'])) {
154
+ foreach ($record['extra'] as $key => $val) {
155
+ $message[$this->extraPrefix . $key] = $val;
156
+ }
157
+ }
158
+ if (!empty($record['context'])) {
159
+ foreach ($record['context'] as $key => $val) {
160
+ $message[$this->contextPrefix . $key] = $val;
161
+ }
162
+ }
163
+
164
+ return $message;
165
+ }
166
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ use Monolog\Utils;
15
+
16
+ /**
17
+ * Formats a record for use with the MongoDBHandler.
18
+ *
19
+ * @author Florian Plattner <me@florianplattner.de>
20
+ */
21
+ class MongoDBFormatter implements FormatterInterface
22
+ {
23
+ private $exceptionTraceAsString;
24
+ private $maxNestingLevel;
25
+
26
+ /**
27
+ * @param int $maxNestingLevel 0 means infinite nesting, the $record itself is level 1, $record['context'] is 2
28
+ * @param bool $exceptionTraceAsString set to false to log exception traces as a sub documents instead of strings
29
+ */
30
+ public function __construct($maxNestingLevel = 3, $exceptionTraceAsString = true)
31
+ {
32
+ $this->maxNestingLevel = max($maxNestingLevel, 0);
33
+ $this->exceptionTraceAsString = (bool) $exceptionTraceAsString;
34
+ }
35
+
36
+ /**
37
+ * {@inheritDoc}
38
+ */
39
+ public function format(array $record)
40
+ {
41
+ return $this->formatArray($record);
42
+ }
43
+
44
+ /**
45
+ * {@inheritDoc}
46
+ */
47
+ public function formatBatch(array $records)
48
+ {
49
+ foreach ($records as $key => $record) {
50
+ $records[$key] = $this->format($record);
51
+ }
52
+
53
+ return $records;
54
+ }
55
+
56
+ protected function formatArray(array $record, $nestingLevel = 0)
57
+ {
58
+ if ($this->maxNestingLevel == 0 || $nestingLevel <= $this->maxNestingLevel) {
59
+ foreach ($record as $name => $value) {
60
+ if ($value instanceof \DateTime) {
61
+ $record[$name] = $this->formatDate($value, $nestingLevel + 1);
62
+ } elseif ($value instanceof \Exception) {
63
+ $record[$name] = $this->formatException($value, $nestingLevel + 1);
64
+ } elseif (is_array($value)) {
65
+ $record[$name] = $this->formatArray($value, $nestingLevel + 1);
66
+ } elseif (is_object($value)) {
67
+ $record[$name] = $this->formatObject($value, $nestingLevel + 1);
68
+ }
69
+ }
70
+ } else {
71
+ $record = '[...]';
72
+ }
73
+
74
+ return $record;
75
+ }
76
+
77
+ protected function formatObject($value, $nestingLevel)
78
+ {
79
+ $objectVars = get_object_vars($value);
80
+ $objectVars['class'] = Utils::getClass($value);
81
+
82
+ return $this->formatArray($objectVars, $nestingLevel);
83
+ }
84
+
85
+ protected function formatException(\Exception $exception, $nestingLevel)
86
+ {
87
+ $formattedException = array(
88
+ 'class' => Utils::getClass($exception),
89
+ 'message' => $exception->getMessage(),
90
+ 'code' => $exception->getCode(),
91
+ 'file' => $exception->getFile() . ':' . $exception->getLine(),
92
+ );
93
+
94
+ if ($this->exceptionTraceAsString === true) {
95
+ $formattedException['trace'] = $exception->getTraceAsString();
96
+ } else {
97
+ $formattedException['trace'] = $exception->getTrace();
98
+ }
99
+
100
+ return $this->formatArray($formattedException, $nestingLevel);
101
+ }
102
+
103
+ protected function formatDate(\DateTime $value, $nestingLevel)
104
+ {
105
+ return new \MongoDate($value->getTimestamp());
106
+ }
107
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php ADDED
@@ -0,0 +1,314 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ use Exception;
15
+ use Monolog\Utils;
16
+
17
+ /**
18
+ * Normalizes incoming records to remove objects/resources so it's easier to dump to various targets
19
+ *
20
+ * @author Jordi Boggiano <j.boggiano@seld.be>
21
+ */
22
+ class NormalizerFormatter implements FormatterInterface
23
+ {
24
+ const SIMPLE_DATE = "Y-m-d H:i:s";
25
+
26
+ protected $dateFormat;
27
+
28
+ /**
29
+ * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
30
+ */
31
+ public function __construct($dateFormat = null)
32
+ {
33
+ $this->dateFormat = $dateFormat ?: static::SIMPLE_DATE;
34
+ if (!function_exists('json_encode')) {
35
+ throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s NormalizerFormatter');
36
+ }
37
+ }
38
+
39
+ /**
40
+ * {@inheritdoc}
41
+ */
42
+ public function format(array $record)
43
+ {
44
+ return $this->normalize($record);
45
+ }
46
+
47
+ /**
48
+ * {@inheritdoc}
49
+ */
50
+ public function formatBatch(array $records)
51
+ {
52
+ foreach ($records as $key => $record) {
53
+ $records[$key] = $this->format($record);
54
+ }
55
+
56
+ return $records;
57
+ }
58
+
59
+ protected function normalize($data, $depth = 0)
60
+ {
61
+ if ($depth > 9) {
62
+ return 'Over 9 levels deep, aborting normalization';
63
+ }
64
+
65
+ if (null === $data || is_scalar($data)) {
66
+ if (is_float($data)) {
67
+ if (is_infinite($data)) {
68
+ return ($data > 0 ? '' : '-') . 'INF';
69
+ }
70
+ if (is_nan($data)) {
71
+ return 'NaN';
72
+ }
73
+ }
74
+
75
+ return $data;
76
+ }
77
+
78
+ if (is_array($data)) {
79
+ $normalized = array();
80
+
81
+ $count = 1;
82
+ foreach ($data as $key => $value) {
83
+ if ($count++ > 1000) {
84
+ $normalized['...'] = 'Over 1000 items ('.count($data).' total), aborting normalization';
85
+ break;
86
+ }
87
+
88
+ $normalized[$key] = $this->normalize($value, $depth+1);
89
+ }
90
+
91
+ return $normalized;
92
+ }
93
+
94
+ if ($data instanceof \DateTime) {
95
+ return $data->format($this->dateFormat);
96
+ }
97
+
98
+ if (is_object($data)) {
99
+ // TODO 2.0 only check for Throwable
100
+ if ($data instanceof Exception || (PHP_VERSION_ID > 70000 && $data instanceof \Throwable)) {
101
+ return $this->normalizeException($data);
102
+ }
103
+
104
+ // non-serializable objects that implement __toString stringified
105
+ if (method_exists($data, '__toString') && !$data instanceof \JsonSerializable) {
106
+ $value = $data->__toString();
107
+ } else {
108
+ // the rest is json-serialized in some way
109
+ $value = $this->toJson($data, true);
110
+ }
111
+
112
+ return sprintf("[object] (%s: %s)", Utils::getClass($data), $value);
113
+ }
114
+
115
+ if (is_resource($data)) {
116
+ return sprintf('[resource] (%s)', get_resource_type($data));
117
+ }
118
+
119
+ return '[unknown('.gettype($data).')]';
120
+ }
121
+
122
+ protected function normalizeException($e)
123
+ {
124
+ // TODO 2.0 only check for Throwable
125
+ if (!$e instanceof Exception && !$e instanceof \Throwable) {
126
+ throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.Utils::getClass($e));
127
+ }
128
+
129
+ $data = array(
130
+ 'class' => Utils::getClass($e),
131
+ 'message' => $e->getMessage(),
132
+ 'code' => $e->getCode(),
133
+ 'file' => $e->getFile().':'.$e->getLine(),
134
+ );
135
+
136
+ if ($e instanceof \SoapFault) {
137
+ if (isset($e->faultcode)) {
138
+ $data['faultcode'] = $e->faultcode;
139
+ }
140
+
141
+ if (isset($e->faultactor)) {
142
+ $data['faultactor'] = $e->faultactor;
143
+ }
144
+
145
+ if (isset($e->detail)) {
146
+ $data['detail'] = $e->detail;
147
+ }
148
+ }
149
+
150
+ $trace = $e->getTrace();
151
+ foreach ($trace as $frame) {
152
+ if (isset($frame['file'])) {
153
+ $data['trace'][] = $frame['file'].':'.$frame['line'];
154
+ } elseif (isset($frame['function']) && $frame['function'] === '{closure}') {
155
+ // Simplify closures handling
156
+ $data['trace'][] = $frame['function'];
157
+ } else {
158
+ if (isset($frame['args'])) {
159
+ // Make sure that objects present as arguments are not serialized nicely but rather only
160
+ // as a class name to avoid any unexpected leak of sensitive information
161
+ $frame['args'] = array_map(function ($arg) {
162
+ if (is_object($arg) && !($arg instanceof \DateTime || $arg instanceof \DateTimeInterface)) {
163
+ return sprintf("[object] (%s)", Utils::getClass($arg));
164
+ }
165
+
166
+ return $arg;
167
+ }, $frame['args']);
168
+ }
169
+ // We should again normalize the frames, because it might contain invalid items
170
+ $data['trace'][] = $this->toJson($this->normalize($frame), true);
171
+ }
172
+ }
173
+
174
+ if ($previous = $e->getPrevious()) {
175
+ $data['previous'] = $this->normalizeException($previous);
176
+ }
177
+
178
+ return $data;
179
+ }
180
+
181
+ /**
182
+ * Return the JSON representation of a value
183
+ *
184
+ * @param mixed $data
185
+ * @param bool $ignoreErrors
186
+ * @throws \RuntimeException if encoding fails and errors are not ignored
187
+ * @return string
188
+ */
189
+ protected function toJson($data, $ignoreErrors = false)
190
+ {
191
+ // suppress json_encode errors since it's twitchy with some inputs
192
+ if ($ignoreErrors) {
193
+ return @$this->jsonEncode($data);
194
+ }
195
+
196
+ $json = $this->jsonEncode($data);
197
+
198
+ if ($json === false) {
199
+ $json = $this->handleJsonError(json_last_error(), $data);
200
+ }
201
+
202
+ return $json;
203
+ }
204
+
205
+ /**
206
+ * @param mixed $data
207
+ * @return string JSON encoded data or null on failure
208
+ */
209
+ private function jsonEncode($data)
210
+ {
211
+ if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
212
+ return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
213
+ }
214
+
215
+ return json_encode($data);
216
+ }
217
+
218
+ /**
219
+ * Handle a json_encode failure.
220
+ *
221
+ * If the failure is due to invalid string encoding, try to clean the
222
+ * input and encode again. If the second encoding attempt fails, the
223
+ * inital error is not encoding related or the input can't be cleaned then
224
+ * raise a descriptive exception.
225
+ *
226
+ * @param int $code return code of json_last_error function
227
+ * @param mixed $data data that was meant to be encoded
228
+ * @throws \RuntimeException if failure can't be corrected
229
+ * @return string JSON encoded data after error correction
230
+ */
231
+ private function handleJsonError($code, $data)
232
+ {
233
+ if ($code !== JSON_ERROR_UTF8) {
234
+ $this->throwEncodeError($code, $data);
235
+ }
236
+
237
+ if (is_string($data)) {
238
+ $this->detectAndCleanUtf8($data);
239
+ } elseif (is_array($data)) {
240
+ array_walk_recursive($data, array($this, 'detectAndCleanUtf8'));
241
+ } else {
242
+ $this->throwEncodeError($code, $data);
243
+ }
244
+
245
+ $json = $this->jsonEncode($data);
246
+
247
+ if ($json === false) {
248
+ $this->throwEncodeError(json_last_error(), $data);
249
+ }
250
+
251
+ return $json;
252
+ }
253
+
254
+ /**
255
+ * Throws an exception according to a given code with a customized message
256
+ *
257
+ * @param int $code return code of json_last_error function
258
+ * @param mixed $data data that was meant to be encoded
259
+ * @throws \RuntimeException
260
+ */
261
+ private function throwEncodeError($code, $data)
262
+ {
263
+ switch ($code) {
264
+ case JSON_ERROR_DEPTH:
265
+ $msg = 'Maximum stack depth exceeded';
266
+ break;
267
+ case JSON_ERROR_STATE_MISMATCH:
268
+ $msg = 'Underflow or the modes mismatch';
269
+ break;
270
+ case JSON_ERROR_CTRL_CHAR:
271
+ $msg = 'Unexpected control character found';
272
+ break;
273
+ case JSON_ERROR_UTF8:
274
+ $msg = 'Malformed UTF-8 characters, possibly incorrectly encoded';
275
+ break;
276
+ default:
277
+ $msg = 'Unknown error';
278
+ }
279
+
280
+ throw new \RuntimeException('JSON encoding failed: '.$msg.'. Encoding: '.var_export($data, true));
281
+ }
282
+
283
+ /**
284
+ * Detect invalid UTF-8 string characters and convert to valid UTF-8.
285
+ *
286
+ * Valid UTF-8 input will be left unmodified, but strings containing
287
+ * invalid UTF-8 codepoints will be reencoded as UTF-8 with an assumed
288
+ * original encoding of ISO-8859-15. This conversion may result in
289
+ * incorrect output if the actual encoding was not ISO-8859-15, but it
290
+ * will be clean UTF-8 output and will not rely on expensive and fragile
291
+ * detection algorithms.
292
+ *
293
+ * Function converts the input in place in the passed variable so that it
294
+ * can be used as a callback for array_walk_recursive.
295
+ *
296
+ * @param mixed &$data Input to check and convert if needed
297
+ * @private
298
+ */
299
+ public function detectAndCleanUtf8(&$data)
300
+ {
301
+ if (is_string($data) && !preg_match('//u', $data)) {
302
+ $data = preg_replace_callback(
303
+ '/[\x80-\xFF]+/',
304
+ function ($m) { return utf8_encode($m[0]); },
305
+ $data
306
+ );
307
+ $data = str_replace(
308
+ array('¤', '¦', '¨', '´', '¸', '¼', '½', '¾'),
309
+ array('€', 'Š', 'š', 'Ž', 'ž', 'Œ', 'œ', 'Ÿ'),
310
+ $data
311
+ );
312
+ }
313
+ }
314
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php ADDED
@@ -0,0 +1,48 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ /**
15
+ * Formats data into an associative array of scalar values.
16
+ * Objects and arrays will be JSON encoded.
17
+ *
18
+ * @author Andrew Lawson <adlawson@gmail.com>
19
+ */
20
+ class ScalarFormatter extends NormalizerFormatter
21
+ {
22
+ /**
23
+ * {@inheritdoc}
24
+ */
25
+ public function format(array $record)
26
+ {
27
+ foreach ($record as $key => $value) {
28
+ $record[$key] = $this->normalizeValue($value);
29
+ }
30
+
31
+ return $record;
32
+ }
33
+
34
+ /**
35
+ * @param mixed $value
36
+ * @return mixed
37
+ */
38
+ protected function normalizeValue($value)
39
+ {
40
+ $normalized = $this->normalize($value);
41
+
42
+ if (is_array($normalized) || is_object($normalized)) {
43
+ return $this->toJson($normalized, true);
44
+ }
45
+
46
+ return $normalized;
47
+ }
48
+ }
common/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Formatter;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Serializes a log message according to Wildfire's header requirements
18
+ *
19
+ * @author Eric Clemmons (@ericclemmons) <eric@uxdriven.com>
20
+ * @author Christophe Coevoet <stof@notk.org>
21
+ * @author Kirill chEbba Chebunin <iam@chebba.org>
22
+ */
23
+ class WildfireFormatter extends NormalizerFormatter
24
+ {
25
+ const TABLE = 'table';
26
+
27
+ /**
28
+ * Translates Monolog log levels to Wildfire levels.
29
+ */
30
+ private $logLevels = array(
31
+ Logger::DEBUG => 'LOG',
32
+ Logger::INFO => 'INFO',
33
+ Logger::NOTICE => 'INFO',
34
+ Logger::WARNING => 'WARN',
35
+ Logger::ERROR => 'ERROR',
36
+ Logger::CRITICAL => 'ERROR',
37
+ Logger::ALERT => 'ERROR',
38
+ Logger::EMERGENCY => 'ERROR',
39
+ );
40
+
41
+ /**
42
+ * {@inheritdoc}
43
+ */
44
+ public function format(array $record)
45
+ {
46
+ // Retrieve the line and file if set and remove them from the formatted extra
47
+ $file = $line = '';
48
+ if (isset($record['extra']['file'])) {
49
+ $file = $record['extra']['file'];
50
+ unset($record['extra']['file']);
51
+ }
52
+ if (isset($record['extra']['line'])) {
53
+ $line = $record['extra']['line'];
54
+ unset($record['extra']['line']);
55
+ }
56
+
57
+ $record = $this->normalize($record);
58
+ $message = array('message' => $record['message']);
59
+ $handleError = false;
60
+ if ($record['context']) {
61
+ $message['context'] = $record['context'];
62
+ $handleError = true;
63
+ }
64
+ if ($record['extra']) {
65
+ $message['extra'] = $record['extra'];
66
+ $handleError = true;
67
+ }
68
+ if (count($message) === 1) {
69
+ $message = reset($message);
70
+ }
71
+
72
+ if (isset($record['context'][self::TABLE])) {
73
+ $type = 'TABLE';
74
+ $label = $record['channel'] .': '. $record['message'];
75
+ $message = $record['context'][self::TABLE];
76
+ } else {
77
+ $type = $this->logLevels[$record['level']];
78
+ $label = $record['channel'];
79
+ }
80
+
81
+ // Create JSON object describing the appearance of the message in the console
82
+ $json = $this->toJson(array(
83
+ array(
84
+ 'Type' => $type,
85
+ 'File' => $file,
86
+ 'Line' => $line,
87
+ 'Label' => $label,
88
+ ),
89
+ $message,
90
+ ), $handleError);
91
+
92
+ // The message itself is a serialization of the above JSON object + it's length
93
+ return sprintf(
94
+ '%s|%s|',
95
+ strlen($json),
96
+ $json
97
+ );
98
+ }
99
+
100
+ public function formatBatch(array $records)
101
+ {
102
+ throw new \BadMethodCallException('Batch formatting does not make sense for the WildfireFormatter');
103
+ }
104
+
105
+ protected function normalize($data, $depth = 0)
106
+ {
107
+ if (is_object($data) && !$data instanceof \DateTime) {
108
+ return $data;
109
+ }
110
+
111
+ return parent::normalize($data, $depth);
112
+ }
113
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php ADDED
@@ -0,0 +1,196 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\FormatterInterface;
15
+ use Monolog\Formatter\LineFormatter;
16
+ use Monolog\Logger;
17
+ use Monolog\ResettableInterface;
18
+
19
+ /**
20
+ * Base Handler class providing the Handler structure
21
+ *
22
+ * @author Jordi Boggiano <j.boggiano@seld.be>
23
+ */
24
+ abstract class AbstractHandler implements HandlerInterface, ResettableInterface
25
+ {
26
+ protected $level = Logger::DEBUG;
27
+ protected $bubble = true;
28
+
29
+ /**
30
+ * @var FormatterInterface
31
+ */
32
+ protected $formatter;
33
+ protected $processors = array();
34
+
35
+ /**
36
+ * @param int $level The minimum logging level at which this handler will be triggered
37
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
38
+ */
39
+ public function __construct($level = Logger::DEBUG, $bubble = true)
40
+ {
41
+ $this->setLevel($level);
42
+ $this->bubble = $bubble;
43
+ }
44
+
45
+ /**
46
+ * {@inheritdoc}
47
+ */
48
+ public function isHandling(array $record)
49
+ {
50
+ return $record['level'] >= $this->level;
51
+ }
52
+
53
+ /**
54
+ * {@inheritdoc}
55
+ */
56
+ public function handleBatch(array $records)
57
+ {
58
+ foreach ($records as $record) {
59
+ $this->handle($record);
60
+ }
61
+ }
62
+
63
+ /**
64
+ * Closes the handler.
65
+ *
66
+ * This will be called automatically when the object is destroyed
67
+ */
68
+ public function close()
69
+ {
70
+ }
71
+
72
+ /**
73
+ * {@inheritdoc}
74
+ */
75
+ public function pushProcessor($callback)
76
+ {
77
+ if (!is_callable($callback)) {
78
+ throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given');
79
+ }
80
+ array_unshift($this->processors, $callback);
81
+
82
+ return $this;
83
+ }
84
+
85
+ /**
86
+ * {@inheritdoc}
87
+ */
88
+ public function popProcessor()
89
+ {
90
+ if (!$this->processors) {
91
+ throw new \LogicException('You tried to pop from an empty processor stack.');
92
+ }
93
+
94
+ return array_shift($this->processors);
95
+ }
96
+
97
+ /**
98
+ * {@inheritdoc}
99
+ */
100
+ public function setFormatter(FormatterInterface $formatter)
101
+ {
102
+ $this->formatter = $formatter;
103
+
104
+ return $this;
105
+ }
106
+
107
+ /**
108
+ * {@inheritdoc}
109
+ */
110
+ public function getFormatter()
111
+ {
112
+ if (!$this->formatter) {
113
+ $this->formatter = $this->getDefaultFormatter();
114
+ }
115
+
116
+ return $this->formatter;
117
+ }
118
+
119
+ /**
120
+ * Sets minimum logging level at which this handler will be triggered.
121
+ *
122
+ * @param int|string $level Level or level name
123
+ * @return self
124
+ */
125
+ public function setLevel($level)
126
+ {
127
+ $this->level = Logger::toMonologLevel($level);
128
+
129
+ return $this;
130
+ }
131
+
132
+ /**
133
+ * Gets minimum logging level at which this handler will be triggered.
134
+ *
135
+ * @return int
136
+ */
137
+ public function getLevel()
138
+ {
139
+ return $this->level;
140
+ }
141
+
142
+ /**
143
+ * Sets the bubbling behavior.
144
+ *
145
+ * @param bool $bubble true means that this handler allows bubbling.
146
+ * false means that bubbling is not permitted.
147
+ * @return self
148
+ */
149
+ public function setBubble($bubble)
150
+ {
151
+ $this->bubble = $bubble;
152
+
153
+ return $this;
154
+ }
155
+
156
+ /**
157
+ * Gets the bubbling behavior.
158
+ *
159
+ * @return bool true means that this handler allows bubbling.
160
+ * false means that bubbling is not permitted.
161
+ */
162
+ public function getBubble()
163
+ {
164
+ return $this->bubble;
165
+ }
166
+
167
+ public function __destruct()
168
+ {
169
+ try {
170
+ $this->close();
171
+ } catch (\Exception $e) {
172
+ // do nothing
173
+ } catch (\Throwable $e) {
174
+ // do nothing
175
+ }
176
+ }
177
+
178
+ public function reset()
179
+ {
180
+ foreach ($this->processors as $processor) {
181
+ if ($processor instanceof ResettableInterface) {
182
+ $processor->reset();
183
+ }
184
+ }
185
+ }
186
+
187
+ /**
188
+ * Gets the default formatter.
189
+ *
190
+ * @return FormatterInterface
191
+ */
192
+ protected function getDefaultFormatter()
193
+ {
194
+ return new LineFormatter();
195
+ }
196
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\ResettableInterface;
15
+
16
+ /**
17
+ * Base Handler class providing the Handler structure
18
+ *
19
+ * Classes extending it should (in most cases) only implement write($record)
20
+ *
21
+ * @author Jordi Boggiano <j.boggiano@seld.be>
22
+ * @author Christophe Coevoet <stof@notk.org>
23
+ */
24
+ abstract class AbstractProcessingHandler extends AbstractHandler
25
+ {
26
+ /**
27
+ * {@inheritdoc}
28
+ */
29
+ public function handle(array $record)
30
+ {
31
+ if (!$this->isHandling($record)) {
32
+ return false;
33
+ }
34
+
35
+ $record = $this->processRecord($record);
36
+
37
+ $record['formatted'] = $this->getFormatter()->format($record);
38
+
39
+ $this->write($record);
40
+
41
+ return false === $this->bubble;
42
+ }
43
+
44
+ /**
45
+ * Writes the record down to the log of the implementing handler
46
+ *
47
+ * @param array $record
48
+ * @return void
49
+ */
50
+ abstract protected function write(array $record);
51
+
52
+ /**
53
+ * Processes a record.
54
+ *
55
+ * @param array $record
56
+ * @return array
57
+ */
58
+ protected function processRecord(array $record)
59
+ {
60
+ if ($this->processors) {
61
+ foreach ($this->processors as $processor) {
62
+ $record = call_user_func($processor, $record);
63
+ }
64
+ }
65
+
66
+ return $record;
67
+ }
68
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Formatter\LineFormatter;
16
+
17
+ /**
18
+ * Common syslog functionality
19
+ */
20
+ abstract class AbstractSyslogHandler extends AbstractProcessingHandler
21
+ {
22
+ protected $facility;
23
+
24
+ /**
25
+ * Translates Monolog log levels to syslog log priorities.
26
+ */
27
+ protected $logLevels = array(
28
+ Logger::DEBUG => LOG_DEBUG,
29
+ Logger::INFO => LOG_INFO,
30
+ Logger::NOTICE => LOG_NOTICE,
31
+ Logger::WARNING => LOG_WARNING,
32
+ Logger::ERROR => LOG_ERR,
33
+ Logger::CRITICAL => LOG_CRIT,
34
+ Logger::ALERT => LOG_ALERT,
35
+ Logger::EMERGENCY => LOG_EMERG,
36
+ );
37
+
38
+ /**
39
+ * List of valid log facility names.
40
+ */
41
+ protected $facilities = array(
42
+ 'auth' => LOG_AUTH,
43
+ 'authpriv' => LOG_AUTHPRIV,
44
+ 'cron' => LOG_CRON,
45
+ 'daemon' => LOG_DAEMON,
46
+ 'kern' => LOG_KERN,
47
+ 'lpr' => LOG_LPR,
48
+ 'mail' => LOG_MAIL,
49
+ 'news' => LOG_NEWS,
50
+ 'syslog' => LOG_SYSLOG,
51
+ 'user' => LOG_USER,
52
+ 'uucp' => LOG_UUCP,
53
+ );
54
+
55
+ /**
56
+ * @param mixed $facility
57
+ * @param int $level The minimum logging level at which this handler will be triggered
58
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
59
+ */
60
+ public function __construct($facility = LOG_USER, $level = Logger::DEBUG, $bubble = true)
61
+ {
62
+ parent::__construct($level, $bubble);
63
+
64
+ if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
65
+ $this->facilities['local0'] = LOG_LOCAL0;
66
+ $this->facilities['local1'] = LOG_LOCAL1;
67
+ $this->facilities['local2'] = LOG_LOCAL2;
68
+ $this->facilities['local3'] = LOG_LOCAL3;
69
+ $this->facilities['local4'] = LOG_LOCAL4;
70
+ $this->facilities['local5'] = LOG_LOCAL5;
71
+ $this->facilities['local6'] = LOG_LOCAL6;
72
+ $this->facilities['local7'] = LOG_LOCAL7;
73
+ } else {
74
+ $this->facilities['local0'] = 128; // LOG_LOCAL0
75
+ $this->facilities['local1'] = 136; // LOG_LOCAL1
76
+ $this->facilities['local2'] = 144; // LOG_LOCAL2
77
+ $this->facilities['local3'] = 152; // LOG_LOCAL3
78
+ $this->facilities['local4'] = 160; // LOG_LOCAL4
79
+ $this->facilities['local5'] = 168; // LOG_LOCAL5
80
+ $this->facilities['local6'] = 176; // LOG_LOCAL6
81
+ $this->facilities['local7'] = 184; // LOG_LOCAL7
82
+ }
83
+
84
+ // convert textual description of facility to syslog constant
85
+ if (array_key_exists(strtolower($facility), $this->facilities)) {
86
+ $facility = $this->facilities[strtolower($facility)];
87
+ } elseif (!in_array($facility, array_values($this->facilities), true)) {
88
+ throw new \UnexpectedValueException('Unknown facility value "'.$facility.'" given');
89
+ }
90
+
91
+ $this->facility = $facility;
92
+ }
93
+
94
+ /**
95
+ * {@inheritdoc}
96
+ */
97
+ protected function getDefaultFormatter()
98
+ {
99
+ return new LineFormatter('%channel%.%level_name%: %message% %context% %extra%');
100
+ }
101
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Formatter\JsonFormatter;
16
+ use PhpAmqpLib\Message\AMQPMessage;
17
+ use PhpAmqpLib\Channel\AMQPChannel;
18
+ use AMQPExchange;
19
+
20
+ class AmqpHandler extends AbstractProcessingHandler
21
+ {
22
+ /**
23
+ * @var AMQPExchange|AMQPChannel $exchange
24
+ */
25
+ protected $exchange;
26
+
27
+ /**
28
+ * @var string
29
+ */
30
+ protected $exchangeName;
31
+
32
+ /**
33
+ * @param AMQPExchange|AMQPChannel $exchange AMQPExchange (php AMQP ext) or PHP AMQP lib channel, ready for use
34
+ * @param string $exchangeName
35
+ * @param int $level
36
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
37
+ */
38
+ public function __construct($exchange, $exchangeName = 'log', $level = Logger::DEBUG, $bubble = true)
39
+ {
40
+ if ($exchange instanceof AMQPExchange) {
41
+ $exchange->setName($exchangeName);
42
+ } elseif ($exchange instanceof AMQPChannel) {
43
+ $this->exchangeName = $exchangeName;
44
+ } else {
45
+ throw new \InvalidArgumentException('PhpAmqpLib\Channel\AMQPChannel or AMQPExchange instance required');
46
+ }
47
+ $this->exchange = $exchange;
48
+
49
+ parent::__construct($level, $bubble);
50
+ }
51
+
52
+ /**
53
+ * {@inheritDoc}
54
+ */
55
+ protected function write(array $record)
56
+ {
57
+ $data = $record["formatted"];
58
+ $routingKey = $this->getRoutingKey($record);
59
+
60
+ if ($this->exchange instanceof AMQPExchange) {
61
+ $this->exchange->publish(
62
+ $data,
63
+ $routingKey,
64
+ 0,
65
+ array(
66
+ 'delivery_mode' => 2,
67
+ 'content_type' => 'application/json',
68
+ )
69
+ );
70
+ } else {
71
+ $this->exchange->basic_publish(
72
+ $this->createAmqpMessage($data),
73
+ $this->exchangeName,
74
+ $routingKey
75
+ );
76
+ }
77
+ }
78
+
79
+ /**
80
+ * {@inheritDoc}
81
+ */
82
+ public function handleBatch(array $records)
83
+ {
84
+ if ($this->exchange instanceof AMQPExchange) {
85
+ parent::handleBatch($records);
86
+
87
+ return;
88
+ }
89
+
90
+ foreach ($records as $record) {
91
+ if (!$this->isHandling($record)) {
92
+ continue;
93
+ }
94
+
95
+ $record = $this->processRecord($record);
96
+ $data = $this->getFormatter()->format($record);
97
+
98
+ $this->exchange->batch_basic_publish(
99
+ $this->createAmqpMessage($data),
100
+ $this->exchangeName,
101
+ $this->getRoutingKey($record)
102
+ );
103
+ }
104
+
105
+ $this->exchange->publish_batch();
106
+ }
107
+
108
+ /**
109
+ * Gets the routing key for the AMQP exchange
110
+ *
111
+ * @param array $record
112
+ * @return string
113
+ */
114
+ protected function getRoutingKey(array $record)
115
+ {
116
+ $routingKey = sprintf(
117
+ '%s.%s',
118
+ // TODO 2.0 remove substr call
119
+ substr($record['level_name'], 0, 4),
120
+ $record['channel']
121
+ );
122
+
123
+ return strtolower($routingKey);
124
+ }
125
+
126
+ /**
127
+ * @param string $data
128
+ * @return AMQPMessage
129
+ */
130
+ private function createAmqpMessage($data)
131
+ {
132
+ return new AMQPMessage(
133
+ (string) $data,
134
+ array(
135
+ 'delivery_mode' => 2,
136
+ 'content_type' => 'application/json',
137
+ )
138
+ );
139
+ }
140
+
141
+ /**
142
+ * {@inheritDoc}
143
+ */
144
+ protected function getDefaultFormatter()
145
+ {
146
+ return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
147
+ }
148
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php ADDED
@@ -0,0 +1,240 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\LineFormatter;
15
+
16
+ /**
17
+ * Handler sending logs to browser's javascript console with no browser extension required
18
+ *
19
+ * @author Olivier Poitrey <rs@dailymotion.com>
20
+ */
21
+ class BrowserConsoleHandler extends AbstractProcessingHandler
22
+ {
23
+ protected static $initialized = false;
24
+ protected static $records = array();
25
+
26
+ /**
27
+ * {@inheritDoc}
28
+ *
29
+ * Formatted output may contain some formatting markers to be transferred to `console.log` using the %c format.
30
+ *
31
+ * Example of formatted string:
32
+ *
33
+ * You can do [[blue text]]{color: blue} or [[green background]]{background-color: green; color: white}
34
+ */
35
+ protected function getDefaultFormatter()
36
+ {
37
+ return new LineFormatter('[[%channel%]]{macro: autolabel} [[%level_name%]]{font-weight: bold} %message%');
38
+ }
39
+
40
+ /**
41
+ * {@inheritDoc}
42
+ */
43
+ protected function write(array $record)
44
+ {
45
+ // Accumulate records
46
+ static::$records[] = $record;
47
+
48
+ // Register shutdown handler if not already done
49
+ if (!static::$initialized) {
50
+ static::$initialized = true;
51
+ $this->registerShutdownFunction();
52
+ }
53
+ }
54
+
55
+ /**
56
+ * Convert records to javascript console commands and send it to the browser.
57
+ * This method is automatically called on PHP shutdown if output is HTML or Javascript.
58
+ */
59
+ public static function send()
60
+ {
61
+ $format = static::getResponseFormat();
62
+ if ($format === 'unknown') {
63
+ return;
64
+ }
65
+
66
+ if (count(static::$records)) {
67
+ if ($format === 'html') {
68
+ static::writeOutput('<script>' . static::generateScript() . '</script>');
69
+ } elseif ($format === 'js') {
70
+ static::writeOutput(static::generateScript());
71
+ }
72
+ static::resetStatic();
73
+ }
74
+ }
75
+
76
+ public function close()
77
+ {
78
+ self::resetStatic();
79
+ }
80
+
81
+ public function reset()
82
+ {
83
+ self::resetStatic();
84
+ }
85
+
86
+ /**
87
+ * Forget all logged records
88
+ */
89
+ public static function resetStatic()
90
+ {
91
+ static::$records = array();
92
+ }
93
+
94
+ /**
95
+ * Wrapper for register_shutdown_function to allow overriding
96
+ */
97
+ protected function registerShutdownFunction()
98
+ {
99
+ if (PHP_SAPI !== 'cli') {
100
+ register_shutdown_function(array('Monolog\Handler\BrowserConsoleHandler', 'send'));
101
+ }
102
+ }
103
+
104
+ /**
105
+ * Wrapper for echo to allow overriding
106
+ *
107
+ * @param string $str
108
+ */
109
+ protected static function writeOutput($str)
110
+ {
111
+ echo $str;
112
+ }
113
+
114
+ /**
115
+ * Checks the format of the response
116
+ *
117
+ * If Content-Type is set to application/javascript or text/javascript -> js
118
+ * If Content-Type is set to text/html, or is unset -> html
119
+ * If Content-Type is anything else -> unknown
120
+ *
121
+ * @return string One of 'js', 'html' or 'unknown'
122
+ */
123
+ protected static function getResponseFormat()
124
+ {
125
+ // Check content type
126
+ foreach (headers_list() as $header) {
127
+ if (stripos($header, 'content-type:') === 0) {
128
+ // This handler only works with HTML and javascript outputs
129
+ // text/javascript is obsolete in favour of application/javascript, but still used
130
+ if (stripos($header, 'application/javascript') !== false || stripos($header, 'text/javascript') !== false) {
131
+ return 'js';
132
+ }
133
+ if (stripos($header, 'text/html') === false) {
134
+ return 'unknown';
135
+ }
136
+ break;
137
+ }
138
+ }
139
+
140
+ return 'html';
141
+ }
142
+
143
+ private static function generateScript()
144
+ {
145
+ $script = array();
146
+ foreach (static::$records as $record) {
147
+ $context = static::dump('Context', $record['context']);
148
+ $extra = static::dump('Extra', $record['extra']);
149
+
150
+ if (empty($context) && empty($extra)) {
151
+ $script[] = static::call_array('log', static::handleStyles($record['formatted']));
152
+ } else {
153
+ $script = array_merge($script,
154
+ array(static::call_array('groupCollapsed', static::handleStyles($record['formatted']))),
155
+ $context,
156
+ $extra,
157
+ array(static::call('groupEnd'))
158
+ );
159
+ }
160
+ }
161
+
162
+ return "(function (c) {if (c && c.groupCollapsed) {\n" . implode("\n", $script) . "\n}})(console);";
163
+ }
164
+
165
+ private static function handleStyles($formatted)
166
+ {
167
+ $args = array(static::quote('font-weight: normal'));
168
+ $format = '%c' . $formatted;
169
+ preg_match_all('/\[\[(.*?)\]\]\{([^}]*)\}/s', $format, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
170
+
171
+ foreach (array_reverse($matches) as $match) {
172
+ $args[] = static::quote(static::handleCustomStyles($match[2][0], $match[1][0]));
173
+ $args[] = '"font-weight: normal"';
174
+
175
+ $pos = $match[0][1];
176
+ $format = substr($format, 0, $pos) . '%c' . $match[1][0] . '%c' . substr($format, $pos + strlen($match[0][0]));
177
+ }
178
+
179
+ array_unshift($args, static::quote($format));
180
+
181
+ return $args;
182
+ }
183
+
184
+ private static function handleCustomStyles($style, $string)
185
+ {
186
+ static $colors = array('blue', 'green', 'red', 'magenta', 'orange', 'black', 'grey');
187
+ static $labels = array();
188
+
189
+ return preg_replace_callback('/macro\s*:(.*?)(?:;|$)/', function ($m) use ($string, &$colors, &$labels) {
190
+ if (trim($m[1]) === 'autolabel') {
191
+ // Format the string as a label with consistent auto assigned background color
192
+ if (!isset($labels[$string])) {
193
+ $labels[$string] = $colors[count($labels) % count($colors)];
194
+ }
195
+ $color = $labels[$string];
196
+
197
+ return "background-color: $color; color: white; border-radius: 3px; padding: 0 2px 0 2px";
198
+ }
199
+
200
+ return $m[1];
201
+ }, $style);
202
+ }
203
+
204
+ private static function dump($title, array $dict)
205
+ {
206
+ $script = array();
207
+ $dict = array_filter($dict);
208
+ if (empty($dict)) {
209
+ return $script;
210
+ }
211
+ $script[] = static::call('log', static::quote('%c%s'), static::quote('font-weight: bold'), static::quote($title));
212
+ foreach ($dict as $key => $value) {
213
+ $value = json_encode($value);
214
+ if (empty($value)) {
215
+ $value = static::quote('');
216
+ }
217
+ $script[] = static::call('log', static::quote('%s: %o'), static::quote($key), $value);
218
+ }
219
+
220
+ return $script;
221
+ }
222
+
223
+ private static function quote($arg)
224
+ {
225
+ return '"' . addcslashes($arg, "\"\n\\") . '"';
226
+ }
227
+
228
+ private static function call()
229
+ {
230
+ $args = func_get_args();
231
+ $method = array_shift($args);
232
+
233
+ return static::call_array($method, $args);
234
+ }
235
+
236
+ private static function call_array($method, array $args)
237
+ {
238
+ return 'c.' . $method . '(' . implode(', ', $args) . ');';
239
+ }
240
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\ResettableInterface;
16
+
17
+ /**
18
+ * Buffers all records until closing the handler and then pass them as batch.
19
+ *
20
+ * This is useful for a MailHandler to send only one mail per request instead of
21
+ * sending one per log message.
22
+ *
23
+ * @author Christophe Coevoet <stof@notk.org>
24
+ */
25
+ class BufferHandler extends AbstractHandler
26
+ {
27
+ protected $handler;
28
+ protected $bufferSize = 0;
29
+ protected $bufferLimit;
30
+ protected $flushOnOverflow;
31
+ protected $buffer = array();
32
+ protected $initialized = false;
33
+
34
+ /**
35
+ * @param HandlerInterface $handler Handler.
36
+ * @param int $bufferLimit How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
37
+ * @param int $level The minimum logging level at which this handler will be triggered
38
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
39
+ * @param bool $flushOnOverflow If true, the buffer is flushed when the max size has been reached, by default oldest entries are discarded
40
+ */
41
+ public function __construct(HandlerInterface $handler, $bufferLimit = 0, $level = Logger::DEBUG, $bubble = true, $flushOnOverflow = false)
42
+ {
43
+ parent::__construct($level, $bubble);
44
+ $this->handler = $handler;
45
+ $this->bufferLimit = (int) $bufferLimit;
46
+ $this->flushOnOverflow = $flushOnOverflow;
47
+ }
48
+
49
+ /**
50
+ * {@inheritdoc}
51
+ */
52
+ public function handle(array $record)
53
+ {
54
+ if ($record['level'] < $this->level) {
55
+ return false;
56
+ }
57
+
58
+ if (!$this->initialized) {
59
+ // __destructor() doesn't get called on Fatal errors
60
+ register_shutdown_function(array($this, 'close'));
61
+ $this->initialized = true;
62
+ }
63
+
64
+ if ($this->bufferLimit > 0 && $this->bufferSize === $this->bufferLimit) {
65
+ if ($this->flushOnOverflow) {
66
+ $this->flush();
67
+ } else {
68
+ array_shift($this->buffer);
69
+ $this->bufferSize--;
70
+ }
71
+ }
72
+
73
+ if ($this->processors) {
74
+ foreach ($this->processors as $processor) {
75
+ $record = call_user_func($processor, $record);
76
+ }
77
+ }
78
+
79
+ $this->buffer[] = $record;
80
+ $this->bufferSize++;
81
+
82
+ return false === $this->bubble;
83
+ }
84
+
85
+ public function flush()
86
+ {
87
+ if ($this->bufferSize === 0) {
88
+ return;
89
+ }
90
+
91
+ $this->handler->handleBatch($this->buffer);
92
+ $this->clear();
93
+ }
94
+
95
+ public function __destruct()
96
+ {
97
+ // suppress the parent behavior since we already have register_shutdown_function()
98
+ // to call close(), and the reference contained there will prevent this from being
99
+ // GC'd until the end of the request
100
+ }
101
+
102
+ /**
103
+ * {@inheritdoc}
104
+ */
105
+ public function close()
106
+ {
107
+ $this->flush();
108
+ }
109
+
110
+ /**
111
+ * Clears the buffer without flushing any messages down to the wrapped handler.
112
+ */
113
+ public function clear()
114
+ {
115
+ $this->bufferSize = 0;
116
+ $this->buffer = array();
117
+ }
118
+
119
+ public function reset()
120
+ {
121
+ $this->flush();
122
+
123
+ parent::reset();
124
+
125
+ if ($this->handler instanceof ResettableInterface) {
126
+ $this->handler->reset();
127
+ }
128
+ }
129
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php ADDED
@@ -0,0 +1,211 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\ChromePHPFormatter;
15
+ use Monolog\Logger;
16
+
17
+ /**
18
+ * Handler sending logs to the ChromePHP extension (http://www.chromephp.com/)
19
+ *
20
+ * This also works out of the box with Firefox 43+
21
+ *
22
+ * @author Christophe Coevoet <stof@notk.org>
23
+ */
24
+ class ChromePHPHandler extends AbstractProcessingHandler
25
+ {
26
+ /**
27
+ * Version of the extension
28
+ */
29
+ const VERSION = '4.0';
30
+
31
+ /**
32
+ * Header name
33
+ */
34
+ const HEADER_NAME = 'X-ChromeLogger-Data';
35
+
36
+ /**
37
+ * Regular expression to detect supported browsers (matches any Chrome, or Firefox 43+)
38
+ */
39
+ const USER_AGENT_REGEX = '{\b(?:Chrome/\d+(?:\.\d+)*|HeadlessChrome|Firefox/(?:4[3-9]|[5-9]\d|\d{3,})(?:\.\d)*)\b}';
40
+
41
+ protected static $initialized = false;
42
+
43
+ /**
44
+ * Tracks whether we sent too much data
45
+ *
46
+ * Chrome limits the headers to 256KB, so when we sent 240KB we stop sending
47
+ *
48
+ * @var bool
49
+ */
50
+ protected static $overflowed = false;
51
+
52
+ protected static $json = array(
53
+ 'version' => self::VERSION,
54
+ 'columns' => array('label', 'log', 'backtrace', 'type'),
55
+ 'rows' => array(),
56
+ );
57
+
58
+ protected static $sendHeaders = true;
59
+
60
+ /**
61
+ * @param int $level The minimum logging level at which this handler will be triggered
62
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
63
+ */
64
+ public function __construct($level = Logger::DEBUG, $bubble = true)
65
+ {
66
+ parent::__construct($level, $bubble);
67
+ if (!function_exists('json_encode')) {
68
+ throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s ChromePHPHandler');
69
+ }
70
+ }
71
+
72
+ /**
73
+ * {@inheritdoc}
74
+ */
75
+ public function handleBatch(array $records)
76
+ {
77
+ $messages = array();
78
+
79
+ foreach ($records as $record) {
80
+ if ($record['level'] < $this->level) {
81
+ continue;
82
+ }
83
+ $messages[] = $this->processRecord($record);
84
+ }
85
+
86
+ if (!empty($messages)) {
87
+ $messages = $this->getFormatter()->formatBatch($messages);
88
+ self::$json['rows'] = array_merge(self::$json['rows'], $messages);
89
+ $this->send();
90
+ }
91
+ }
92
+
93
+ /**
94
+ * {@inheritDoc}
95
+ */
96
+ protected function getDefaultFormatter()
97
+ {
98
+ return new ChromePHPFormatter();
99
+ }
100
+
101
+ /**
102
+ * Creates & sends header for a record
103
+ *
104
+ * @see sendHeader()
105
+ * @see send()
106
+ * @param array $record
107
+ */
108
+ protected function write(array $record)
109
+ {
110
+ self::$json['rows'][] = $record['formatted'];
111
+
112
+ $this->send();
113
+ }
114
+
115
+ /**
116
+ * Sends the log header
117
+ *
118
+ * @see sendHeader()
119
+ */
120
+ protected function send()
121
+ {
122
+ if (self::$overflowed || !self::$sendHeaders) {
123
+ return;
124
+ }
125
+
126
+ if (!self::$initialized) {
127
+ self::$initialized = true;
128
+
129
+ self::$sendHeaders = $this->headersAccepted();
130
+ if (!self::$sendHeaders) {
131
+ return;
132
+ }
133
+
134
+ self::$json['request_uri'] = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
135
+ }
136
+
137
+ $json = @json_encode(self::$json);
138
+ $data = base64_encode(utf8_encode($json));
139
+ if (strlen($data) > 240 * 1024) {
140
+ self::$overflowed = true;
141
+
142
+ $record = array(
143
+ 'message' => 'Incomplete logs, chrome header size limit reached',
144
+ 'context' => array(),
145
+ 'level' => Logger::WARNING,
146
+ 'level_name' => Logger::getLevelName(Logger::WARNING),
147
+ 'channel' => 'monolog',
148
+ 'datetime' => new \DateTime(),
149
+ 'extra' => array(),
150
+ );
151
+ self::$json['rows'][count(self::$json['rows']) - 1] = $this->getFormatter()->format($record);
152
+ $json = @json_encode(self::$json);
153
+ $data = base64_encode(utf8_encode($json));
154
+ }
155
+
156
+ if (trim($data) !== '') {
157
+ $this->sendHeader(self::HEADER_NAME, $data);
158
+ }
159
+ }
160
+
161
+ /**
162
+ * Send header string to the client
163
+ *
164
+ * @param string $header
165
+ * @param string $content
166
+ */
167
+ protected function sendHeader($header, $content)
168
+ {
169
+ if (!headers_sent() && self::$sendHeaders) {
170
+ header(sprintf('%s: %s', $header, $content));
171
+ }
172
+ }
173
+
174
+ /**
175
+ * Verifies if the headers are accepted by the current user agent
176
+ *
177
+ * @return bool
178
+ */
179
+ protected function headersAccepted()
180
+ {
181
+ if (empty($_SERVER['HTTP_USER_AGENT'])) {
182
+ return false;
183
+ }
184
+
185
+ return preg_match(self::USER_AGENT_REGEX, $_SERVER['HTTP_USER_AGENT']);
186
+ }
187
+
188
+ /**
189
+ * BC getter for the sendHeaders property that has been made static
190
+ */
191
+ public function __get($property)
192
+ {
193
+ if ('sendHeaders' !== $property) {
194
+ throw new \InvalidArgumentException('Undefined property '.$property);
195
+ }
196
+
197
+ return static::$sendHeaders;
198
+ }
199
+
200
+ /**
201
+ * BC setter for the sendHeaders property that has been made static
202
+ */
203
+ public function __set($property, $value)
204
+ {
205
+ if ('sendHeaders' !== $property) {
206
+ throw new \InvalidArgumentException('Undefined property '.$property);
207
+ }
208
+
209
+ static::$sendHeaders = $value;
210
+ }
211
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php ADDED
@@ -0,0 +1,72 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\JsonFormatter;
15
+ use Monolog\Logger;
16
+
17
+ /**
18
+ * CouchDB handler
19
+ *
20
+ * @author Markus Bachmann <markus.bachmann@bachi.biz>
21
+ */
22
+ class CouchDBHandler extends AbstractProcessingHandler
23
+ {
24
+ private $options;
25
+
26
+ public function __construct(array $options = array(), $level = Logger::DEBUG, $bubble = true)
27
+ {
28
+ $this->options = array_merge(array(
29
+ 'host' => 'localhost',
30
+ 'port' => 5984,
31
+ 'dbname' => 'logger',
32
+ 'username' => null,
33
+ 'password' => null,
34
+ ), $options);
35
+
36
+ parent::__construct($level, $bubble);
37
+ }
38
+
39
+ /**
40
+ * {@inheritDoc}
41
+ */
42
+ protected function write(array $record)
43
+ {
44
+ $basicAuth = null;
45
+ if ($this->options['username']) {
46
+ $basicAuth = sprintf('%s:%s@', $this->options['username'], $this->options['password']);
47
+ }
48
+
49
+ $url = 'http://'.$basicAuth.$this->options['host'].':'.$this->options['port'].'/'.$this->options['dbname'];
50
+ $context = stream_context_create(array(
51
+ 'http' => array(
52
+ 'method' => 'POST',
53
+ 'content' => $record['formatted'],
54
+ 'ignore_errors' => true,
55
+ 'max_redirects' => 0,
56
+ 'header' => 'Content-type: application/json',
57
+ ),
58
+ ));
59
+
60
+ if (false === @file_get_contents($url, null, $context)) {
61
+ throw new \RuntimeException(sprintf('Could not connect to %s', $url));
62
+ }
63
+ }
64
+
65
+ /**
66
+ * {@inheritDoc}
67
+ */
68
+ protected function getDefaultFormatter()
69
+ {
70
+ return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
71
+ }
72
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php ADDED
@@ -0,0 +1,151 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Logs to Cube.
18
+ *
19
+ * @link http://square.github.com/cube/
20
+ * @author Wan Chen <kami@kamisama.me>
21
+ */
22
+ class CubeHandler extends AbstractProcessingHandler
23
+ {
24
+ private $udpConnection;
25
+ private $httpConnection;
26
+ private $scheme;
27
+ private $host;
28
+ private $port;
29
+ private $acceptedSchemes = array('http', 'udp');
30
+
31
+ /**
32
+ * Create a Cube handler
33
+ *
34
+ * @throws \UnexpectedValueException when given url is not a valid url.
35
+ * A valid url must consist of three parts : protocol://host:port
36
+ * Only valid protocols used by Cube are http and udp
37
+ */
38
+ public function __construct($url, $level = Logger::DEBUG, $bubble = true)
39
+ {
40
+ $urlInfo = parse_url($url);
41
+
42
+ if (!isset($urlInfo['scheme'], $urlInfo['host'], $urlInfo['port'])) {
43
+ throw new \UnexpectedValueException('URL "'.$url.'" is not valid');
44
+ }
45
+
46
+ if (!in_array($urlInfo['scheme'], $this->acceptedSchemes)) {
47
+ throw new \UnexpectedValueException(
48
+ 'Invalid protocol (' . $urlInfo['scheme'] . ').'
49
+ . ' Valid options are ' . implode(', ', $this->acceptedSchemes));
50
+ }
51
+
52
+ $this->scheme = $urlInfo['scheme'];
53
+ $this->host = $urlInfo['host'];
54
+ $this->port = $urlInfo['port'];
55
+
56
+ parent::__construct($level, $bubble);
57
+ }
58
+
59
+ /**
60
+ * Establish a connection to an UDP socket
61
+ *
62
+ * @throws \LogicException when unable to connect to the socket
63
+ * @throws MissingExtensionException when there is no socket extension
64
+ */
65
+ protected function connectUdp()
66
+ {
67
+ if (!extension_loaded('sockets')) {
68
+ throw new MissingExtensionException('The sockets extension is required to use udp URLs with the CubeHandler');
69
+ }
70
+
71
+ $this->udpConnection = socket_create(AF_INET, SOCK_DGRAM, 0);
72
+ if (!$this->udpConnection) {
73
+ throw new \LogicException('Unable to create a socket');
74
+ }
75
+
76
+ if (!socket_connect($this->udpConnection, $this->host, $this->port)) {
77
+ throw new \LogicException('Unable to connect to the socket at ' . $this->host . ':' . $this->port);
78
+ }
79
+ }
80
+
81
+ /**
82
+ * Establish a connection to a http server
83
+ * @throws \LogicException when no curl extension
84
+ */
85
+ protected function connectHttp()
86
+ {
87
+ if (!extension_loaded('curl')) {
88
+ throw new \LogicException('The curl extension is needed to use http URLs with the CubeHandler');
89
+ }
90
+
91
+ $this->httpConnection = curl_init('http://'.$this->host.':'.$this->port.'/1.0/event/put');
92
+
93
+ if (!$this->httpConnection) {
94
+ throw new \LogicException('Unable to connect to ' . $this->host . ':' . $this->port);
95
+ }
96
+
97
+ curl_setopt($this->httpConnection, CURLOPT_CUSTOMREQUEST, "POST");
98
+ curl_setopt($this->httpConnection, CURLOPT_RETURNTRANSFER, true);
99
+ }
100
+
101
+ /**
102
+ * {@inheritdoc}
103
+ */
104
+ protected function write(array $record)
105
+ {
106
+ $date = $record['datetime'];
107
+
108
+ $data = array('time' => $date->format('Y-m-d\TH:i:s.uO'));
109
+ unset($record['datetime']);
110
+
111
+ if (isset($record['context']['type'])) {
112
+ $data['type'] = $record['context']['type'];
113
+ unset($record['context']['type']);
114
+ } else {
115
+ $data['type'] = $record['channel'];
116
+ }
117
+
118
+ $data['data'] = $record['context'];
119
+ $data['data']['level'] = $record['level'];
120
+
121
+ if ($this->scheme === 'http') {
122
+ $this->writeHttp(json_encode($data));
123
+ } else {
124
+ $this->writeUdp(json_encode($data));
125
+ }
126
+ }
127
+
128
+ private function writeUdp($data)
129
+ {
130
+ if (!$this->udpConnection) {
131
+ $this->connectUdp();
132
+ }
133
+
134
+ socket_send($this->udpConnection, $data, strlen($data), 0);
135
+ }
136
+
137
+ private function writeHttp($data)
138
+ {
139
+ if (!$this->httpConnection) {
140
+ $this->connectHttp();
141
+ }
142
+
143
+ curl_setopt($this->httpConnection, CURLOPT_POSTFIELDS, '['.$data.']');
144
+ curl_setopt($this->httpConnection, CURLOPT_HTTPHEADER, array(
145
+ 'Content-Type: application/json',
146
+ 'Content-Length: ' . strlen('['.$data.']'),
147
+ ));
148
+
149
+ Curl\Util::execute($this->httpConnection, 5, false);
150
+ }
151
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler\Curl;
13
+
14
+ class Util
15
+ {
16
+ private static $retriableErrorCodes = array(
17
+ CURLE_COULDNT_RESOLVE_HOST,
18
+ CURLE_COULDNT_CONNECT,
19
+ CURLE_HTTP_NOT_FOUND,
20
+ CURLE_READ_ERROR,
21
+ CURLE_OPERATION_TIMEOUTED,
22
+ CURLE_HTTP_POST_ERROR,
23
+ CURLE_SSL_CONNECT_ERROR,
24
+ );
25
+
26
+ /**
27
+ * Executes a CURL request with optional retries and exception on failure
28
+ *
29
+ * @param resource $ch curl handler
30
+ * @throws \RuntimeException
31
+ */
32
+ public static function execute($ch, $retries = 5, $closeAfterDone = true)
33
+ {
34
+ while ($retries--) {
35
+ if (curl_exec($ch) === false) {
36
+ $curlErrno = curl_errno($ch);
37
+
38
+ if (false === in_array($curlErrno, self::$retriableErrorCodes, true) || !$retries) {
39
+ $curlError = curl_error($ch);
40
+
41
+ if ($closeAfterDone) {
42
+ curl_close($ch);
43
+ }
44
+
45
+ throw new \RuntimeException(sprintf('Curl error (code %s): %s', $curlErrno, $curlError));
46
+ }
47
+
48
+ continue;
49
+ }
50
+
51
+ if ($closeAfterDone) {
52
+ curl_close($ch);
53
+ }
54
+ break;
55
+ }
56
+ }
57
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php ADDED
@@ -0,0 +1,169 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Simple handler wrapper that deduplicates log records across multiple requests
18
+ *
19
+ * It also includes the BufferHandler functionality and will buffer
20
+ * all messages until the end of the request or flush() is called.
21
+ *
22
+ * This works by storing all log records' messages above $deduplicationLevel
23
+ * to the file specified by $deduplicationStore. When further logs come in at the end of the
24
+ * request (or when flush() is called), all those above $deduplicationLevel are checked
25
+ * against the existing stored logs. If they match and the timestamps in the stored log is
26
+ * not older than $time seconds, the new log record is discarded. If no log record is new, the
27
+ * whole data set is discarded.
28
+ *
29
+ * This is mainly useful in combination with Mail handlers or things like Slack or HipChat handlers
30
+ * that send messages to people, to avoid spamming with the same message over and over in case of
31
+ * a major component failure like a database server being down which makes all requests fail in the
32
+ * same way.
33
+ *
34
+ * @author Jordi Boggiano <j.boggiano@seld.be>
35
+ */
36
+ class DeduplicationHandler extends BufferHandler
37
+ {
38
+ /**
39
+ * @var string
40
+ */
41
+ protected $deduplicationStore;
42
+
43
+ /**
44
+ * @var int
45
+ */
46
+ protected $deduplicationLevel;
47
+
48
+ /**
49
+ * @var int
50
+ */
51
+ protected $time;
52
+
53
+ /**
54
+ * @var bool
55
+ */
56
+ private $gc = false;
57
+
58
+ /**
59
+ * @param HandlerInterface $handler Handler.
60
+ * @param string $deduplicationStore The file/path where the deduplication log should be kept
61
+ * @param int $deduplicationLevel The minimum logging level for log records to be looked at for deduplication purposes
62
+ * @param int $time The period (in seconds) during which duplicate entries should be suppressed after a given log is sent through
63
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
64
+ */
65
+ public function __construct(HandlerInterface $handler, $deduplicationStore = null, $deduplicationLevel = Logger::ERROR, $time = 60, $bubble = true)
66
+ {
67
+ parent::__construct($handler, 0, Logger::DEBUG, $bubble, false);
68
+
69
+ $this->deduplicationStore = $deduplicationStore === null ? sys_get_temp_dir() . '/monolog-dedup-' . substr(md5(__FILE__), 0, 20) .'.log' : $deduplicationStore;
70
+ $this->deduplicationLevel = Logger::toMonologLevel($deduplicationLevel);
71
+ $this->time = $time;
72
+ }
73
+
74
+ public function flush()
75
+ {
76
+ if ($this->bufferSize === 0) {
77
+ return;
78
+ }
79
+
80
+ $passthru = null;
81
+
82
+ foreach ($this->buffer as $record) {
83
+ if ($record['level'] >= $this->deduplicationLevel) {
84
+
85
+ $passthru = $passthru || !$this->isDuplicate($record);
86
+ if ($passthru) {
87
+ $this->appendRecord($record);
88
+ }
89
+ }
90
+ }
91
+
92
+ // default of null is valid as well as if no record matches duplicationLevel we just pass through
93
+ if ($passthru === true || $passthru === null) {
94
+ $this->handler->handleBatch($this->buffer);
95
+ }
96
+
97
+ $this->clear();
98
+
99
+ if ($this->gc) {
100
+ $this->collectLogs();
101
+ }
102
+ }
103
+
104
+ private function isDuplicate(array $record)
105
+ {
106
+ if (!file_exists($this->deduplicationStore)) {
107
+ return false;
108
+ }
109
+
110
+ $store = file($this->deduplicationStore, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
111
+ if (!is_array($store)) {
112
+ return false;
113
+ }
114
+
115
+ $yesterday = time() - 86400;
116
+ $timestampValidity = $record['datetime']->getTimestamp() - $this->time;
117
+ $expectedMessage = preg_replace('{[\r\n].*}', '', $record['message']);
118
+
119
+ for ($i = count($store) - 1; $i >= 0; $i--) {
120
+ list($timestamp, $level, $message) = explode(':', $store[$i], 3);
121
+
122
+ if ($level === $record['level_name'] && $message === $expectedMessage && $timestamp > $timestampValidity) {
123
+ return true;
124
+ }
125
+
126
+ if ($timestamp < $yesterday) {
127
+ $this->gc = true;
128
+ }
129
+ }
130
+
131
+ return false;
132
+ }
133
+
134
+ private function collectLogs()
135
+ {
136
+ if (!file_exists($this->deduplicationStore)) {
137
+ return false;
138
+ }
139
+
140
+ $handle = fopen($this->deduplicationStore, 'rw+');
141
+ flock($handle, LOCK_EX);
142
+ $validLogs = array();
143
+
144
+ $timestampValidity = time() - $this->time;
145
+
146
+ while (!feof($handle)) {
147
+ $log = fgets($handle);
148
+ if (substr($log, 0, 10) >= $timestampValidity) {
149
+ $validLogs[] = $log;
150
+ }
151
+ }
152
+
153
+ ftruncate($handle, 0);
154
+ rewind($handle);
155
+ foreach ($validLogs as $log) {
156
+ fwrite($handle, $log);
157
+ }
158
+
159
+ flock($handle, LOCK_UN);
160
+ fclose($handle);
161
+
162
+ $this->gc = false;
163
+ }
164
+
165
+ private function appendRecord(array $record)
166
+ {
167
+ file_put_contents($this->deduplicationStore, $record['datetime']->getTimestamp() . ':' . $record['level_name'] . ':' . preg_replace('{[\r\n].*}', '', $record['message']) . "\n", FILE_APPEND);
168
+ }
169
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Formatter\NormalizerFormatter;
16
+ use Doctrine\CouchDB\CouchDBClient;
17
+
18
+ /**
19
+ * CouchDB handler for Doctrine CouchDB ODM
20
+ *
21
+ * @author Markus Bachmann <markus.bachmann@bachi.biz>
22
+ */
23
+ class DoctrineCouchDBHandler extends AbstractProcessingHandler
24
+ {
25
+ private $client;
26
+
27
+ public function __construct(CouchDBClient $client, $level = Logger::DEBUG, $bubble = true)
28
+ {
29
+ $this->client = $client;
30
+ parent::__construct($level, $bubble);
31
+ }
32
+
33
+ /**
34
+ * {@inheritDoc}
35
+ */
36
+ protected function write(array $record)
37
+ {
38
+ $this->client->postDocument($record['formatted']);
39
+ }
40
+
41
+ protected function getDefaultFormatter()
42
+ {
43
+ return new NormalizerFormatter;
44
+ }
45
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Aws\Sdk;
15
+ use Aws\DynamoDb\DynamoDbClient;
16
+ use Aws\DynamoDb\Marshaler;
17
+ use Monolog\Formatter\ScalarFormatter;
18
+ use Monolog\Logger;
19
+
20
+ /**
21
+ * Amazon DynamoDB handler (http://aws.amazon.com/dynamodb/)
22
+ *
23
+ * @link https://github.com/aws/aws-sdk-php/
24
+ * @author Andrew Lawson <adlawson@gmail.com>
25
+ */
26
+ class DynamoDbHandler extends AbstractProcessingHandler
27
+ {
28
+ const DATE_FORMAT = 'Y-m-d\TH:i:s.uO';
29
+
30
+ /**
31
+ * @var DynamoDbClient
32
+ */
33
+ protected $client;
34
+
35
+ /**
36
+ * @var string
37
+ */
38
+ protected $table;
39
+
40
+ /**
41
+ * @var int
42
+ */
43
+ protected $version;
44
+
45
+ /**
46
+ * @var Marshaler
47
+ */
48
+ protected $marshaler;
49
+
50
+ /**
51
+ * @param DynamoDbClient $client
52
+ * @param string $table
53
+ * @param int $level
54
+ * @param bool $bubble
55
+ */
56
+ public function __construct(DynamoDbClient $client, $table, $level = Logger::DEBUG, $bubble = true)
57
+ {
58
+ if (defined('Aws\Sdk::VERSION') && version_compare(Sdk::VERSION, '3.0', '>=')) {
59
+ $this->version = 3;
60
+ $this->marshaler = new Marshaler;
61
+ } else {
62
+ $this->version = 2;
63
+ }
64
+
65
+ $this->client = $client;
66
+ $this->table = $table;
67
+
68
+ parent::__construct($level, $bubble);
69
+ }
70
+
71
+ /**
72
+ * {@inheritdoc}
73
+ */
74
+ protected function write(array $record)
75
+ {
76
+ $filtered = $this->filterEmptyFields($record['formatted']);
77
+ if ($this->version === 3) {
78
+ $formatted = $this->marshaler->marshalItem($filtered);
79
+ } else {
80
+ $formatted = $this->client->formatAttributes($filtered);
81
+ }
82
+
83
+ $this->client->putItem(array(
84
+ 'TableName' => $this->table,
85
+ 'Item' => $formatted,
86
+ ));
87
+ }
88
+
89
+ /**
90
+ * @param array $record
91
+ * @return array
92
+ */
93
+ protected function filterEmptyFields(array $record)
94
+ {
95
+ return array_filter($record, function ($value) {
96
+ return !empty($value) || false === $value || 0 === $value;
97
+ });
98
+ }
99
+
100
+ /**
101
+ * {@inheritdoc}
102
+ */
103
+ protected function getDefaultFormatter()
104
+ {
105
+ return new ScalarFormatter(self::DATE_FORMAT);
106
+ }
107
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\FormatterInterface;
15
+ use Monolog\Formatter\ElasticaFormatter;
16
+ use Monolog\Logger;
17
+ use Elastica\Client;
18
+ use Elastica\Exception\ExceptionInterface;
19
+
20
+ /**
21
+ * Elastic Search handler
22
+ *
23
+ * Usage example:
24
+ *
25
+ * $client = new \Elastica\Client();
26
+ * $options = array(
27
+ * 'index' => 'elastic_index_name',
28
+ * 'type' => 'elastic_doc_type',
29
+ * );
30
+ * $handler = new ElasticSearchHandler($client, $options);
31
+ * $log = new Logger('application');
32
+ * $log->pushHandler($handler);
33
+ *
34
+ * @author Jelle Vink <jelle.vink@gmail.com>
35
+ */
36
+ class ElasticSearchHandler extends AbstractProcessingHandler
37
+ {
38
+ /**
39
+ * @var Client
40
+ */
41
+ protected $client;
42
+
43
+ /**
44
+ * @var array Handler config options
45
+ */
46
+ protected $options = array();
47
+
48
+ /**
49
+ * @param Client $client Elastica Client object
50
+ * @param array $options Handler configuration
51
+ * @param int $level The minimum logging level at which this handler will be triggered
52
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
53
+ */
54
+ public function __construct(Client $client, array $options = array(), $level = Logger::DEBUG, $bubble = true)
55
+ {
56
+ parent::__construct($level, $bubble);
57
+ $this->client = $client;
58
+ $this->options = array_merge(
59
+ array(
60
+ 'index' => 'monolog', // Elastic index name
61
+ 'type' => 'record', // Elastic document type
62
+ 'ignore_error' => false, // Suppress Elastica exceptions
63
+ ),
64
+ $options
65
+ );
66
+ }
67
+
68
+ /**
69
+ * {@inheritDoc}
70
+ */
71
+ protected function write(array $record)
72
+ {
73
+ $this->bulkSend(array($record['formatted']));
74
+ }
75
+
76
+ /**
77
+ * {@inheritdoc}
78
+ */
79
+ public function setFormatter(FormatterInterface $formatter)
80
+ {
81
+ if ($formatter instanceof ElasticaFormatter) {
82
+ return parent::setFormatter($formatter);
83
+ }
84
+ throw new \InvalidArgumentException('ElasticSearchHandler is only compatible with ElasticaFormatter');
85
+ }
86
+
87
+ /**
88
+ * Getter options
89
+ * @return array
90
+ */
91
+ public function getOptions()
92
+ {
93
+ return $this->options;
94
+ }
95
+
96
+ /**
97
+ * {@inheritDoc}
98
+ */
99
+ protected function getDefaultFormatter()
100
+ {
101
+ return new ElasticaFormatter($this->options['index'], $this->options['type']);
102
+ }
103
+
104
+ /**
105
+ * {@inheritdoc}
106
+ */
107
+ public function handleBatch(array $records)
108
+ {
109
+ $documents = $this->getFormatter()->formatBatch($records);
110
+ $this->bulkSend($documents);
111
+ }
112
+
113
+ /**
114
+ * Use Elasticsearch bulk API to send list of documents
115
+ * @param array $documents
116
+ * @throws \RuntimeException
117
+ */
118
+ protected function bulkSend(array $documents)
119
+ {
120
+ try {
121
+ $this->client->addDocuments($documents);
122
+ } catch (ExceptionInterface $e) {
123
+ if (!$this->options['ignore_error']) {
124
+ throw new \RuntimeException("Error sending messages to Elasticsearch", 0, $e);
125
+ }
126
+ }
127
+ }
128
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\LineFormatter;
15
+ use Monolog\Logger;
16
+
17
+ /**
18
+ * Stores to PHP error_log() handler.
19
+ *
20
+ * @author Elan Ruusamäe <glen@delfi.ee>
21
+ */
22
+ class ErrorLogHandler extends AbstractProcessingHandler
23
+ {
24
+ const OPERATING_SYSTEM = 0;
25
+ const SAPI = 4;
26
+
27
+ protected $messageType;
28
+ protected $expandNewlines;
29
+
30
+ /**
31
+ * @param int $messageType Says where the error should go.
32
+ * @param int $level The minimum logging level at which this handler will be triggered
33
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
34
+ * @param bool $expandNewlines If set to true, newlines in the message will be expanded to be take multiple log entries
35
+ */
36
+ public function __construct($messageType = self::OPERATING_SYSTEM, $level = Logger::DEBUG, $bubble = true, $expandNewlines = false)
37
+ {
38
+ parent::__construct($level, $bubble);
39
+
40
+ if (false === in_array($messageType, self::getAvailableTypes())) {
41
+ $message = sprintf('The given message type "%s" is not supported', print_r($messageType, true));
42
+ throw new \InvalidArgumentException($message);
43
+ }
44
+
45
+ $this->messageType = $messageType;
46
+ $this->expandNewlines = $expandNewlines;
47
+ }
48
+
49
+ /**
50
+ * @return array With all available types
51
+ */
52
+ public static function getAvailableTypes()
53
+ {
54
+ return array(
55
+ self::OPERATING_SYSTEM,
56
+ self::SAPI,
57
+ );
58
+ }
59
+
60
+ /**
61
+ * {@inheritDoc}
62
+ */
63
+ protected function getDefaultFormatter()
64
+ {
65
+ return new LineFormatter('[%datetime%] %channel%.%level_name%: %message% %context% %extra%');
66
+ }
67
+
68
+ /**
69
+ * {@inheritdoc}
70
+ */
71
+ protected function write(array $record)
72
+ {
73
+ if ($this->expandNewlines) {
74
+ $lines = preg_split('{[\r\n]+}', (string) $record['formatted']);
75
+ foreach ($lines as $line) {
76
+ error_log($line, $this->messageType);
77
+ }
78
+ } else {
79
+ error_log((string) $record['formatted'], $this->messageType);
80
+ }
81
+ }
82
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Simple handler wrapper that filters records based on a list of levels
18
+ *
19
+ * It can be configured with an exact list of levels to allow, or a min/max level.
20
+ *
21
+ * @author Hennadiy Verkh
22
+ * @author Jordi Boggiano <j.boggiano@seld.be>
23
+ */
24
+ class FilterHandler extends AbstractHandler
25
+ {
26
+ /**
27
+ * Handler or factory callable($record, $this)
28
+ *
29
+ * @var callable|\Monolog\Handler\HandlerInterface
30
+ */
31
+ protected $handler;
32
+
33
+ /**
34
+ * Minimum level for logs that are passed to handler
35
+ *
36
+ * @var int[]
37
+ */
38
+ protected $acceptedLevels;
39
+
40
+ /**
41
+ * Whether the messages that are handled can bubble up the stack or not
42
+ *
43
+ * @var bool
44
+ */
45
+ protected $bubble;
46
+
47
+ /**
48
+ * @param callable|HandlerInterface $handler Handler or factory callable($record, $this).
49
+ * @param int|array $minLevelOrList A list of levels to accept or a minimum level if maxLevel is provided
50
+ * @param int $maxLevel Maximum level to accept, only used if $minLevelOrList is not an array
51
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
52
+ */
53
+ public function __construct($handler, $minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY, $bubble = true)
54
+ {
55
+ $this->handler = $handler;
56
+ $this->bubble = $bubble;
57
+ $this->setAcceptedLevels($minLevelOrList, $maxLevel);
58
+
59
+ if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
60
+ throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
61
+ }
62
+ }
63
+
64
+ /**
65
+ * @return array
66
+ */
67
+ public function getAcceptedLevels()
68
+ {
69
+ return array_flip($this->acceptedLevels);
70
+ }
71
+
72
+ /**
73
+ * @param int|string|array $minLevelOrList A list of levels to accept or a minimum level or level name if maxLevel is provided
74
+ * @param int|string $maxLevel Maximum level or level name to accept, only used if $minLevelOrList is not an array
75
+ */
76
+ public function setAcceptedLevels($minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY)
77
+ {
78
+ if (is_array($minLevelOrList)) {
79
+ $acceptedLevels = array_map('Monolog\Logger::toMonologLevel', $minLevelOrList);
80
+ } else {
81
+ $minLevelOrList = Logger::toMonologLevel($minLevelOrList);
82
+ $maxLevel = Logger::toMonologLevel($maxLevel);
83
+ $acceptedLevels = array_values(array_filter(Logger::getLevels(), function ($level) use ($minLevelOrList, $maxLevel) {
84
+ return $level >= $minLevelOrList && $level <= $maxLevel;
85
+ }));
86
+ }
87
+ $this->acceptedLevels = array_flip($acceptedLevels);
88
+ }
89
+
90
+ /**
91
+ * {@inheritdoc}
92
+ */
93
+ public function isHandling(array $record)
94
+ {
95
+ return isset($this->acceptedLevels[$record['level']]);
96
+ }
97
+
98
+ /**
99
+ * {@inheritdoc}
100
+ */
101
+ public function handle(array $record)
102
+ {
103
+ if (!$this->isHandling($record)) {
104
+ return false;
105
+ }
106
+
107
+ // The same logic as in FingersCrossedHandler
108
+ if (!$this->handler instanceof HandlerInterface) {
109
+ $this->handler = call_user_func($this->handler, $record, $this);
110
+ if (!$this->handler instanceof HandlerInterface) {
111
+ throw new \RuntimeException("The factory callable should return a HandlerInterface");
112
+ }
113
+ }
114
+
115
+ if ($this->processors) {
116
+ foreach ($this->processors as $processor) {
117
+ $record = call_user_func($processor, $record);
118
+ }
119
+ }
120
+
121
+ $this->handler->handle($record);
122
+
123
+ return false === $this->bubble;
124
+ }
125
+
126
+ /**
127
+ * {@inheritdoc}
128
+ */
129
+ public function handleBatch(array $records)
130
+ {
131
+ $filtered = array();
132
+ foreach ($records as $record) {
133
+ if ($this->isHandling($record)) {
134
+ $filtered[] = $record;
135
+ }
136
+ }
137
+
138
+ $this->handler->handleBatch($filtered);
139
+ }
140
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler\FingersCrossed;
13
+
14
+ /**
15
+ * Interface for activation strategies for the FingersCrossedHandler.
16
+ *
17
+ * @author Johannes M. Schmitt <schmittjoh@gmail.com>
18
+ */
19
+ interface ActivationStrategyInterface
20
+ {
21
+ /**
22
+ * Returns whether the given record activates the handler.
23
+ *
24
+ * @param array $record
25
+ * @return bool
26
+ */
27
+ public function isHandlerActivated(array $record);
28
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler\FingersCrossed;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Channel and Error level based monolog activation strategy. Allows to trigger activation
18
+ * based on level per channel. e.g. trigger activation on level 'ERROR' by default, except
19
+ * for records of the 'sql' channel; those should trigger activation on level 'WARN'.
20
+ *
21
+ * Example:
22
+ *
23
+ * <code>
24
+ * $activationStrategy = new ChannelLevelActivationStrategy(
25
+ * Logger::CRITICAL,
26
+ * array(
27
+ * 'request' => Logger::ALERT,
28
+ * 'sensitive' => Logger::ERROR,
29
+ * )
30
+ * );
31
+ * $handler = new FingersCrossedHandler(new StreamHandler('php://stderr'), $activationStrategy);
32
+ * </code>
33
+ *
34
+ * @author Mike Meessen <netmikey@gmail.com>
35
+ */
36
+ class ChannelLevelActivationStrategy implements ActivationStrategyInterface
37
+ {
38
+ private $defaultActionLevel;
39
+ private $channelToActionLevel;
40
+
41
+ /**
42
+ * @param int $defaultActionLevel The default action level to be used if the record's category doesn't match any
43
+ * @param array $channelToActionLevel An array that maps channel names to action levels.
44
+ */
45
+ public function __construct($defaultActionLevel, $channelToActionLevel = array())
46
+ {
47
+ $this->defaultActionLevel = Logger::toMonologLevel($defaultActionLevel);
48
+ $this->channelToActionLevel = array_map('Monolog\Logger::toMonologLevel', $channelToActionLevel);
49
+ }
50
+
51
+ public function isHandlerActivated(array $record)
52
+ {
53
+ if (isset($this->channelToActionLevel[$record['channel']])) {
54
+ return $record['level'] >= $this->channelToActionLevel[$record['channel']];
55
+ }
56
+
57
+ return $record['level'] >= $this->defaultActionLevel;
58
+ }
59
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler\FingersCrossed;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Error level based activation strategy.
18
+ *
19
+ * @author Johannes M. Schmitt <schmittjoh@gmail.com>
20
+ */
21
+ class ErrorLevelActivationStrategy implements ActivationStrategyInterface
22
+ {
23
+ private $actionLevel;
24
+
25
+ public function __construct($actionLevel)
26
+ {
27
+ $this->actionLevel = Logger::toMonologLevel($actionLevel);
28
+ }
29
+
30
+ public function isHandlerActivated(array $record)
31
+ {
32
+ return $record['level'] >= $this->actionLevel;
33
+ }
34
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php ADDED
@@ -0,0 +1,177 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy;
15
+ use Monolog\Handler\FingersCrossed\ActivationStrategyInterface;
16
+ use Monolog\Logger;
17
+ use Monolog\ResettableInterface;
18
+
19
+ /**
20
+ * Buffers all records until a certain level is reached
21
+ *
22
+ * The advantage of this approach is that you don't get any clutter in your log files.
23
+ * Only requests which actually trigger an error (or whatever your actionLevel is) will be
24
+ * in the logs, but they will contain all records, not only those above the level threshold.
25
+ *
26
+ * You can find the various activation strategies in the
27
+ * Monolog\Handler\FingersCrossed\ namespace.
28
+ *
29
+ * @author Jordi Boggiano <j.boggiano@seld.be>
30
+ */
31
+ class FingersCrossedHandler extends AbstractHandler
32
+ {
33
+ protected $handler;
34
+ protected $activationStrategy;
35
+ protected $buffering = true;
36
+ protected $bufferSize;
37
+ protected $buffer = array();
38
+ protected $stopBuffering;
39
+ protected $passthruLevel;
40
+
41
+ /**
42
+ * @param callable|HandlerInterface $handler Handler or factory callable($record, $fingersCrossedHandler).
43
+ * @param int|ActivationStrategyInterface $activationStrategy Strategy which determines when this handler takes action
44
+ * @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
45
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
46
+ * @param bool $stopBuffering Whether the handler should stop buffering after being triggered (default true)
47
+ * @param int $passthruLevel Minimum level to always flush to handler on close, even if strategy not triggered
48
+ */
49
+ public function __construct($handler, $activationStrategy = null, $bufferSize = 0, $bubble = true, $stopBuffering = true, $passthruLevel = null)
50
+ {
51
+ if (null === $activationStrategy) {
52
+ $activationStrategy = new ErrorLevelActivationStrategy(Logger::WARNING);
53
+ }
54
+
55
+ // convert simple int activationStrategy to an object
56
+ if (!$activationStrategy instanceof ActivationStrategyInterface) {
57
+ $activationStrategy = new ErrorLevelActivationStrategy($activationStrategy);
58
+ }
59
+
60
+ $this->handler = $handler;
61
+ $this->activationStrategy = $activationStrategy;
62
+ $this->bufferSize = $bufferSize;
63
+ $this->bubble = $bubble;
64
+ $this->stopBuffering = $stopBuffering;
65
+
66
+ if ($passthruLevel !== null) {
67
+ $this->passthruLevel = Logger::toMonologLevel($passthruLevel);
68
+ }
69
+
70
+ if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
71
+ throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
72
+ }
73
+ }
74
+
75
+ /**
76
+ * {@inheritdoc}
77
+ */
78
+ public function isHandling(array $record)
79
+ {
80
+ return true;
81
+ }
82
+
83
+ /**
84
+ * Manually activate this logger regardless of the activation strategy
85
+ */
86
+ public function activate()
87
+ {
88
+ if ($this->stopBuffering) {
89
+ $this->buffering = false;
90
+ }
91
+ if (!$this->handler instanceof HandlerInterface) {
92
+ $record = end($this->buffer) ?: null;
93
+
94
+ $this->handler = call_user_func($this->handler, $record, $this);
95
+ if (!$this->handler instanceof HandlerInterface) {
96
+ throw new \RuntimeException("The factory callable should return a HandlerInterface");
97
+ }
98
+ }
99
+ $this->handler->handleBatch($this->buffer);
100
+ $this->buffer = array();
101
+ }
102
+
103
+ /**
104
+ * {@inheritdoc}
105
+ */
106
+ public function handle(array $record)
107
+ {
108
+ if ($this->processors) {
109
+ foreach ($this->processors as $processor) {
110
+ $record = call_user_func($processor, $record);
111
+ }
112
+ }
113
+
114
+ if ($this->buffering) {
115
+ $this->buffer[] = $record;
116
+ if ($this->bufferSize > 0 && count($this->buffer) > $this->bufferSize) {
117
+ array_shift($this->buffer);
118
+ }
119
+ if ($this->activationStrategy->isHandlerActivated($record)) {
120
+ $this->activate();
121
+ }
122
+ } else {
123
+ $this->handler->handle($record);
124
+ }
125
+
126
+ return false === $this->bubble;
127
+ }
128
+
129
+ /**
130
+ * {@inheritdoc}
131
+ */
132
+ public function close()
133
+ {
134
+ $this->flushBuffer();
135
+ }
136
+
137
+ public function reset()
138
+ {
139
+ $this->flushBuffer();
140
+
141
+ parent::reset();
142
+
143
+ if ($this->handler instanceof ResettableInterface) {
144
+ $this->handler->reset();
145
+ }
146
+ }
147
+
148
+ /**
149
+ * Clears the buffer without flushing any messages down to the wrapped handler.
150
+ *
151
+ * It also resets the handler to its initial buffering state.
152
+ */
153
+ public function clear()
154
+ {
155
+ $this->buffer = array();
156
+ $this->reset();
157
+ }
158
+
159
+ /**
160
+ * Resets the state of the handler. Stops forwarding records to the wrapped handler.
161
+ */
162
+ private function flushBuffer()
163
+ {
164
+ if (null !== $this->passthruLevel) {
165
+ $level = $this->passthruLevel;
166
+ $this->buffer = array_filter($this->buffer, function ($record) use ($level) {
167
+ return $record['level'] >= $level;
168
+ });
169
+ if (count($this->buffer) > 0) {
170
+ $this->handler->handleBatch($this->buffer);
171
+ }
172
+ }
173
+
174
+ $this->buffer = array();
175
+ $this->buffering = true;
176
+ }
177
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php ADDED
@@ -0,0 +1,195 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\WildfireFormatter;
15
+
16
+ /**
17
+ * Simple FirePHP Handler (http://www.firephp.org/), which uses the Wildfire protocol.
18
+ *
19
+ * @author Eric Clemmons (@ericclemmons) <eric@uxdriven.com>
20
+ */
21
+ class FirePHPHandler extends AbstractProcessingHandler
22
+ {
23
+ /**
24
+ * WildFire JSON header message format
25
+ */
26
+ const PROTOCOL_URI = 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2';
27
+
28
+ /**
29
+ * FirePHP structure for parsing messages & their presentation
30
+ */
31
+ const STRUCTURE_URI = 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1';
32
+
33
+ /**
34
+ * Must reference a "known" plugin, otherwise headers won't display in FirePHP
35
+ */
36
+ const PLUGIN_URI = 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3';
37
+
38
+ /**
39
+ * Header prefix for Wildfire to recognize & parse headers
40
+ */
41
+ const HEADER_PREFIX = 'X-Wf';
42
+
43
+ /**
44
+ * Whether or not Wildfire vendor-specific headers have been generated & sent yet
45
+ */
46
+ protected static $initialized = false;
47
+
48
+ /**
49
+ * Shared static message index between potentially multiple handlers
50
+ * @var int
51
+ */
52
+ protected static $messageIndex = 1;
53
+
54
+ protected static $sendHeaders = true;
55
+
56
+ /**
57
+ * Base header creation function used by init headers & record headers
58
+ *
59
+ * @param array $meta Wildfire Plugin, Protocol & Structure Indexes
60
+ * @param string $message Log message
61
+ * @return array Complete header string ready for the client as key and message as value
62
+ */
63
+ protected function createHeader(array $meta, $message)
64
+ {
65
+ $header = sprintf('%s-%s', self::HEADER_PREFIX, join('-', $meta));
66
+
67
+ return array($header => $message);
68
+ }
69
+
70
+ /**
71
+ * Creates message header from record
72
+ *
73
+ * @see createHeader()
74
+ * @param array $record
75
+ * @return string
76
+ */
77
+ protected function createRecordHeader(array $record)
78
+ {
79
+ // Wildfire is extensible to support multiple protocols & plugins in a single request,
80
+ // but we're not taking advantage of that (yet), so we're using "1" for simplicity's sake.
81
+ return $this->createHeader(
82
+ array(1, 1, 1, self::$messageIndex++),
83
+ $record['formatted']
84
+ );
85
+ }
86
+
87
+ /**
88
+ * {@inheritDoc}
89
+ */
90
+ protected function getDefaultFormatter()
91
+ {
92
+ return new WildfireFormatter();
93
+ }
94
+
95
+ /**
96
+ * Wildfire initialization headers to enable message parsing
97
+ *
98
+ * @see createHeader()
99
+ * @see sendHeader()
100
+ * @return array
101
+ */
102
+ protected function getInitHeaders()
103
+ {
104
+ // Initial payload consists of required headers for Wildfire
105
+ return array_merge(
106
+ $this->createHeader(array('Protocol', 1), self::PROTOCOL_URI),
107
+ $this->createHeader(array(1, 'Structure', 1), self::STRUCTURE_URI),
108
+ $this->createHeader(array(1, 'Plugin', 1), self::PLUGIN_URI)
109
+ );
110
+ }
111
+
112
+ /**
113
+ * Send header string to the client
114
+ *
115
+ * @param string $header
116
+ * @param string $content
117
+ */
118
+ protected function sendHeader($header, $content)
119
+ {
120
+ if (!headers_sent() && self::$sendHeaders) {
121
+ header(sprintf('%s: %s', $header, $content));
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Creates & sends header for a record, ensuring init headers have been sent prior
127
+ *
128
+ * @see sendHeader()
129
+ * @see sendInitHeaders()
130
+ * @param array $record
131
+ */
132
+ protected function write(array $record)
133
+ {
134
+ if (!self::$sendHeaders) {
135
+ return;
136
+ }
137
+
138
+ // WildFire-specific headers must be sent prior to any messages
139
+ if (!self::$initialized) {
140
+ self::$initialized = true;
141
+
142
+ self::$sendHeaders = $this->headersAccepted();
143
+ if (!self::$sendHeaders) {
144
+ return;
145
+ }
146
+
147
+ foreach ($this->getInitHeaders() as $header => $content) {
148
+ $this->sendHeader($header, $content);
149
+ }
150
+ }
151
+
152
+ $header = $this->createRecordHeader($record);
153
+ if (trim(current($header)) !== '') {
154
+ $this->sendHeader(key($header), current($header));
155
+ }
156
+ }
157
+
158
+ /**
159
+ * Verifies if the headers are accepted by the current user agent
160
+ *
161
+ * @return bool
162
+ */
163
+ protected function headersAccepted()
164
+ {
165
+ if (!empty($_SERVER['HTTP_USER_AGENT']) && preg_match('{\bFirePHP/\d+\.\d+\b}', $_SERVER['HTTP_USER_AGENT'])) {
166
+ return true;
167
+ }
168
+
169
+ return isset($_SERVER['HTTP_X_FIREPHP_VERSION']);
170
+ }
171
+
172
+ /**
173
+ * BC getter for the sendHeaders property that has been made static
174
+ */
175
+ public function __get($property)
176
+ {
177
+ if ('sendHeaders' !== $property) {
178
+ throw new \InvalidArgumentException('Undefined property '.$property);
179
+ }
180
+
181
+ return static::$sendHeaders;
182
+ }
183
+
184
+ /**
185
+ * BC setter for the sendHeaders property that has been made static
186
+ */
187
+ public function __set($property, $value)
188
+ {
189
+ if ('sendHeaders' !== $property) {
190
+ throw new \InvalidArgumentException('Undefined property '.$property);
191
+ }
192
+
193
+ static::$sendHeaders = $value;
194
+ }
195
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\LineFormatter;
15
+ use Monolog\Logger;
16
+
17
+ /**
18
+ * Sends logs to Fleep.io using Webhook integrations
19
+ *
20
+ * You'll need a Fleep.io account to use this handler.
21
+ *
22
+ * @see https://fleep.io/integrations/webhooks/ Fleep Webhooks Documentation
23
+ * @author Ando Roots <ando@sqroot.eu>
24
+ */
25
+ class FleepHookHandler extends SocketHandler
26
+ {
27
+ const FLEEP_HOST = 'fleep.io';
28
+
29
+ const FLEEP_HOOK_URI = '/hook/';
30
+
31
+ /**
32
+ * @var string Webhook token (specifies the conversation where logs are sent)
33
+ */
34
+ protected $token;
35
+
36
+ /**
37
+ * Construct a new Fleep.io Handler.
38
+ *
39
+ * For instructions on how to create a new web hook in your conversations
40
+ * see https://fleep.io/integrations/webhooks/
41
+ *
42
+ * @param string $token Webhook token
43
+ * @param bool|int $level The minimum logging level at which this handler will be triggered
44
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
45
+ * @throws MissingExtensionException
46
+ */
47
+ public function __construct($token, $level = Logger::DEBUG, $bubble = true)
48
+ {
49
+ if (!extension_loaded('openssl')) {
50
+ throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FleepHookHandler');
51
+ }
52
+
53
+ $this->token = $token;
54
+
55
+ $connectionString = 'ssl://' . self::FLEEP_HOST . ':443';
56
+ parent::__construct($connectionString, $level, $bubble);
57
+ }
58
+
59
+ /**
60
+ * Returns the default formatter to use with this handler
61
+ *
62
+ * Overloaded to remove empty context and extra arrays from the end of the log message.
63
+ *
64
+ * @return LineFormatter
65
+ */
66
+ protected function getDefaultFormatter()
67
+ {
68
+ return new LineFormatter(null, null, true, true);
69
+ }
70
+
71
+ /**
72
+ * Handles a log record
73
+ *
74
+ * @param array $record
75
+ */
76
+ public function write(array $record)
77
+ {
78
+ parent::write($record);
79
+ $this->closeSocket();
80
+ }
81
+
82
+ /**
83
+ * {@inheritdoc}
84
+ *
85
+ * @param array $record
86
+ * @return string
87
+ */
88
+ protected function generateDataStream($record)
89
+ {
90
+ $content = $this->buildContent($record);
91
+
92
+ return $this->buildHeader($content) . $content;
93
+ }
94
+
95
+ /**
96
+ * Builds the header of the API Call
97
+ *
98
+ * @param string $content
99
+ * @return string
100
+ */
101
+ private function buildHeader($content)
102
+ {
103
+ $header = "POST " . self::FLEEP_HOOK_URI . $this->token . " HTTP/1.1\r\n";
104
+ $header .= "Host: " . self::FLEEP_HOST . "\r\n";
105
+ $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
106
+ $header .= "Content-Length: " . strlen($content) . "\r\n";
107
+ $header .= "\r\n";
108
+
109
+ return $header;
110
+ }
111
+
112
+ /**
113
+ * Builds the body of API call
114
+ *
115
+ * @param array $record
116
+ * @return string
117
+ */
118
+ private function buildContent($record)
119
+ {
120
+ $dataArray = array(
121
+ 'message' => $record['formatted'],
122
+ );
123
+
124
+ return http_build_query($dataArray);
125
+ }
126
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php ADDED
@@ -0,0 +1,127 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Formatter\FlowdockFormatter;
16
+ use Monolog\Formatter\FormatterInterface;
17
+
18
+ /**
19
+ * Sends notifications through the Flowdock push API
20
+ *
21
+ * This must be configured with a FlowdockFormatter instance via setFormatter()
22
+ *
23
+ * Notes:
24
+ * API token - Flowdock API token
25
+ *
26
+ * @author Dominik Liebler <liebler.dominik@gmail.com>
27
+ * @see https://www.flowdock.com/api/push
28
+ */
29
+ class FlowdockHandler extends SocketHandler
30
+ {
31
+ /**
32
+ * @var string
33
+ */
34
+ protected $apiToken;
35
+
36
+ /**
37
+ * @param string $apiToken
38
+ * @param bool|int $level The minimum logging level at which this handler will be triggered
39
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
40
+ *
41
+ * @throws MissingExtensionException if OpenSSL is missing
42
+ */
43
+ public function __construct($apiToken, $level = Logger::DEBUG, $bubble = true)
44
+ {
45
+ if (!extension_loaded('openssl')) {
46
+ throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FlowdockHandler');
47
+ }
48
+
49
+ parent::__construct('ssl://api.flowdock.com:443', $level, $bubble);
50
+ $this->apiToken = $apiToken;
51
+ }
52
+
53
+ /**
54
+ * {@inheritdoc}
55
+ */
56
+ public function setFormatter(FormatterInterface $formatter)
57
+ {
58
+ if (!$formatter instanceof FlowdockFormatter) {
59
+ throw new \InvalidArgumentException('The FlowdockHandler requires an instance of Monolog\Formatter\FlowdockFormatter to function correctly');
60
+ }
61
+
62
+ return parent::setFormatter($formatter);
63
+ }
64
+
65
+ /**
66
+ * Gets the default formatter.
67
+ *
68
+ * @return FormatterInterface
69
+ */
70
+ protected function getDefaultFormatter()
71
+ {
72
+ throw new \InvalidArgumentException('The FlowdockHandler must be configured (via setFormatter) with an instance of Monolog\Formatter\FlowdockFormatter to function correctly');
73
+ }
74
+
75
+ /**
76
+ * {@inheritdoc}
77
+ *
78
+ * @param array $record
79
+ */
80
+ protected function write(array $record)
81
+ {
82
+ parent::write($record);
83
+
84
+ $this->closeSocket();
85
+ }
86
+
87
+ /**
88
+ * {@inheritdoc}
89
+ *
90
+ * @param array $record
91
+ * @return string
92
+ */
93
+ protected function generateDataStream($record)
94
+ {
95
+ $content = $this->buildContent($record);
96
+
97
+ return $this->buildHeader($content) . $content;
98
+ }
99
+
100
+ /**
101
+ * Builds the body of API call
102
+ *
103
+ * @param array $record
104
+ * @return string
105
+ */
106
+ private function buildContent($record)
107
+ {
108
+ return json_encode($record['formatted']['flowdock']);
109
+ }
110
+
111
+ /**
112
+ * Builds the header of the API Call
113
+ *
114
+ * @param string $content
115
+ * @return string
116
+ */
117
+ private function buildHeader($content)
118
+ {
119
+ $header = "POST /v1/messages/team_inbox/" . $this->apiToken . " HTTP/1.1\r\n";
120
+ $header .= "Host: api.flowdock.com\r\n";
121
+ $header .= "Content-Type: application/json\r\n";
122
+ $header .= "Content-Length: " . strlen($content) . "\r\n";
123
+ $header .= "\r\n";
124
+
125
+ return $header;
126
+ }
127
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Gelf\IMessagePublisher;
15
+ use Gelf\PublisherInterface;
16
+ use Gelf\Publisher;
17
+ use InvalidArgumentException;
18
+ use Monolog\Logger;
19
+ use Monolog\Formatter\GelfMessageFormatter;
20
+
21
+ /**
22
+ * Handler to send messages to a Graylog2 (http://www.graylog2.org) server
23
+ *
24
+ * @author Matt Lehner <mlehner@gmail.com>
25
+ * @author Benjamin Zikarsky <benjamin@zikarsky.de>
26
+ */
27
+ class GelfHandler extends AbstractProcessingHandler
28
+ {
29
+ /**
30
+ * @var Publisher the publisher object that sends the message to the server
31
+ */
32
+ protected $publisher;
33
+
34
+ /**
35
+ * @param PublisherInterface|IMessagePublisher|Publisher $publisher a publisher object
36
+ * @param int $level The minimum logging level at which this handler will be triggered
37
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
38
+ */
39
+ public function __construct($publisher, $level = Logger::DEBUG, $bubble = true)
40
+ {
41
+ parent::__construct($level, $bubble);
42
+
43
+ if (!$publisher instanceof Publisher && !$publisher instanceof IMessagePublisher && !$publisher instanceof PublisherInterface) {
44
+ throw new InvalidArgumentException('Invalid publisher, expected a Gelf\Publisher, Gelf\IMessagePublisher or Gelf\PublisherInterface instance');
45
+ }
46
+
47
+ $this->publisher = $publisher;
48
+ }
49
+
50
+ /**
51
+ * {@inheritdoc}
52
+ */
53
+ protected function write(array $record)
54
+ {
55
+ $this->publisher->publish($record['formatted']);
56
+ }
57
+
58
+ /**
59
+ * {@inheritDoc}
60
+ */
61
+ protected function getDefaultFormatter()
62
+ {
63
+ return new GelfMessageFormatter();
64
+ }
65
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\FormatterInterface;
15
+ use Monolog\ResettableInterface;
16
+
17
+ /**
18
+ * Forwards records to multiple handlers
19
+ *
20
+ * @author Lenar Lõhmus <lenar@city.ee>
21
+ */
22
+ class GroupHandler extends AbstractHandler
23
+ {
24
+ protected $handlers;
25
+
26
+ /**
27
+ * @param array $handlers Array of Handlers.
28
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
29
+ */
30
+ public function __construct(array $handlers, $bubble = true)
31
+ {
32
+ foreach ($handlers as $handler) {
33
+ if (!$handler instanceof HandlerInterface) {
34
+ throw new \InvalidArgumentException('The first argument of the GroupHandler must be an array of HandlerInterface instances.');
35
+ }
36
+ }
37
+
38
+ $this->handlers = $handlers;
39
+ $this->bubble = $bubble;
40
+ }
41
+
42
+ /**
43
+ * {@inheritdoc}
44
+ */
45
+ public function isHandling(array $record)
46
+ {
47
+ foreach ($this->handlers as $handler) {
48
+ if ($handler->isHandling($record)) {
49
+ return true;
50
+ }
51
+ }
52
+
53
+ return false;
54
+ }
55
+
56
+ /**
57
+ * {@inheritdoc}
58
+ */
59
+ public function handle(array $record)
60
+ {
61
+ if ($this->processors) {
62
+ foreach ($this->processors as $processor) {
63
+ $record = call_user_func($processor, $record);
64
+ }
65
+ }
66
+
67
+ foreach ($this->handlers as $handler) {
68
+ $handler->handle($record);
69
+ }
70
+
71
+ return false === $this->bubble;
72
+ }
73
+
74
+ /**
75
+ * {@inheritdoc}
76
+ */
77
+ public function handleBatch(array $records)
78
+ {
79
+ if ($this->processors) {
80
+ $processed = array();
81
+ foreach ($records as $record) {
82
+ foreach ($this->processors as $processor) {
83
+ $processed[] = call_user_func($processor, $record);
84
+ }
85
+ }
86
+ $records = $processed;
87
+ }
88
+
89
+ foreach ($this->handlers as $handler) {
90
+ $handler->handleBatch($records);
91
+ }
92
+ }
93
+
94
+ public function reset()
95
+ {
96
+ parent::reset();
97
+
98
+ foreach ($this->handlers as $handler) {
99
+ if ($handler instanceof ResettableInterface) {
100
+ $handler->reset();
101
+ }
102
+ }
103
+ }
104
+
105
+ /**
106
+ * {@inheritdoc}
107
+ */
108
+ public function setFormatter(FormatterInterface $formatter)
109
+ {
110
+ foreach ($this->handlers as $handler) {
111
+ $handler->setFormatter($formatter);
112
+ }
113
+
114
+ return $this;
115
+ }
116
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php ADDED
@@ -0,0 +1,90 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\FormatterInterface;
15
+
16
+ /**
17
+ * Interface that all Monolog Handlers must implement
18
+ *
19
+ * @author Jordi Boggiano <j.boggiano@seld.be>
20
+ */
21
+ interface HandlerInterface
22
+ {
23
+ /**
24
+ * Checks whether the given record will be handled by this handler.
25
+ *
26
+ * This is mostly done for performance reasons, to avoid calling processors for nothing.
27
+ *
28
+ * Handlers should still check the record levels within handle(), returning false in isHandling()
29
+ * is no guarantee that handle() will not be called, and isHandling() might not be called
30
+ * for a given record.
31
+ *
32
+ * @param array $record Partial log record containing only a level key
33
+ *
34
+ * @return bool
35
+ */
36
+ public function isHandling(array $record);
37
+
38
+ /**
39
+ * Handles a record.
40
+ *
41
+ * All records may be passed to this method, and the handler should discard
42
+ * those that it does not want to handle.
43
+ *
44
+ * The return value of this function controls the bubbling process of the handler stack.
45
+ * Unless the bubbling is interrupted (by returning true), the Logger class will keep on
46
+ * calling further handlers in the stack with a given log record.
47
+ *
48
+ * @param array $record The record to handle
49
+ * @return bool true means that this handler handled the record, and that bubbling is not permitted.
50
+ * false means the record was either not processed or that this handler allows bubbling.
51
+ */
52
+ public function handle(array $record);
53
+
54
+ /**
55
+ * Handles a set of records at once.
56
+ *
57
+ * @param array $records The records to handle (an array of record arrays)
58
+ */
59
+ public function handleBatch(array $records);
60
+
61
+ /**
62
+ * Adds a processor in the stack.
63
+ *
64
+ * @param callable $callback
65
+ * @return self
66
+ */
67
+ public function pushProcessor($callback);
68
+
69
+ /**
70
+ * Removes the processor on top of the stack and returns it.
71
+ *
72
+ * @return callable
73
+ */
74
+ public function popProcessor();
75
+
76
+ /**
77
+ * Sets the formatter.
78
+ *
79
+ * @param FormatterInterface $formatter
80
+ * @return self
81
+ */
82
+ public function setFormatter(FormatterInterface $formatter);
83
+
84
+ /**
85
+ * Gets the formatter.
86
+ *
87
+ * @return FormatterInterface
88
+ */
89
+ public function getFormatter();
90
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php ADDED
@@ -0,0 +1,116 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\ResettableInterface;
15
+ use Monolog\Formatter\FormatterInterface;
16
+
17
+ /**
18
+ * This simple wrapper class can be used to extend handlers functionality.
19
+ *
20
+ * Example: A custom filtering that can be applied to any handler.
21
+ *
22
+ * Inherit from this class and override handle() like this:
23
+ *
24
+ * public function handle(array $record)
25
+ * {
26
+ * if ($record meets certain conditions) {
27
+ * return false;
28
+ * }
29
+ * return $this->handler->handle($record);
30
+ * }
31
+ *
32
+ * @author Alexey Karapetov <alexey@karapetov.com>
33
+ */
34
+ class HandlerWrapper implements HandlerInterface, ResettableInterface
35
+ {
36
+ /**
37
+ * @var HandlerInterface
38
+ */
39
+ protected $handler;
40
+
41
+ /**
42
+ * HandlerWrapper constructor.
43
+ * @param HandlerInterface $handler
44
+ */
45
+ public function __construct(HandlerInterface $handler)
46
+ {
47
+ $this->handler = $handler;
48
+ }
49
+
50
+ /**
51
+ * {@inheritdoc}
52
+ */
53
+ public function isHandling(array $record)
54
+ {
55
+ return $this->handler->isHandling($record);
56
+ }
57
+
58
+ /**
59
+ * {@inheritdoc}
60
+ */
61
+ public function handle(array $record)
62
+ {
63
+ return $this->handler->handle($record);
64
+ }
65
+
66
+ /**
67
+ * {@inheritdoc}
68
+ */
69
+ public function handleBatch(array $records)
70
+ {
71
+ return $this->handler->handleBatch($records);
72
+ }
73
+
74
+ /**
75
+ * {@inheritdoc}
76
+ */
77
+ public function pushProcessor($callback)
78
+ {
79
+ $this->handler->pushProcessor($callback);
80
+
81
+ return $this;
82
+ }
83
+
84
+ /**
85
+ * {@inheritdoc}
86
+ */
87
+ public function popProcessor()
88
+ {
89
+ return $this->handler->popProcessor();
90
+ }
91
+
92
+ /**
93
+ * {@inheritdoc}
94
+ */
95
+ public function setFormatter(FormatterInterface $formatter)
96
+ {
97
+ $this->handler->setFormatter($formatter);
98
+
99
+ return $this;
100
+ }
101
+
102
+ /**
103
+ * {@inheritdoc}
104
+ */
105
+ public function getFormatter()
106
+ {
107
+ return $this->handler->getFormatter();
108
+ }
109
+
110
+ public function reset()
111
+ {
112
+ if ($this->handler instanceof ResettableInterface) {
113
+ return $this->handler->reset();
114
+ }
115
+ }
116
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php ADDED
@@ -0,0 +1,365 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Sends notifications through the hipchat api to a hipchat room
18
+ *
19
+ * Notes:
20
+ * API token - HipChat API token
21
+ * Room - HipChat Room Id or name, where messages are sent
22
+ * Name - Name used to send the message (from)
23
+ * notify - Should the message trigger a notification in the clients
24
+ * version - The API version to use (HipChatHandler::API_V1 | HipChatHandler::API_V2)
25
+ *
26
+ * @author Rafael Dohms <rafael@doh.ms>
27
+ * @see https://www.hipchat.com/docs/api
28
+ */
29
+ class HipChatHandler extends SocketHandler
30
+ {
31
+ /**
32
+ * Use API version 1
33
+ */
34
+ const API_V1 = 'v1';
35
+
36
+ /**
37
+ * Use API version v2
38
+ */
39
+ const API_V2 = 'v2';
40
+
41
+ /**
42
+ * The maximum allowed length for the name used in the "from" field.
43
+ */
44
+ const MAXIMUM_NAME_LENGTH = 15;
45
+
46
+ /**
47
+ * The maximum allowed length for the message.
48
+ */
49
+ const MAXIMUM_MESSAGE_LENGTH = 9500;
50
+
51
+ /**
52
+ * @var string
53
+ */
54
+ private $token;
55
+
56
+ /**
57
+ * @var string
58
+ */
59
+ private $room;
60
+
61
+ /**
62
+ * @var string
63
+ */
64
+ private $name;
65
+
66
+ /**
67
+ * @var bool
68
+ */
69
+ private $notify;
70
+
71
+ /**
72
+ * @var string
73
+ */
74
+ private $format;
75
+
76
+ /**
77
+ * @var string
78
+ */
79
+ private $host;
80
+
81
+ /**
82
+ * @var string
83
+ */
84
+ private $version;
85
+
86
+ /**
87
+ * @param string $token HipChat API Token
88
+ * @param string $room The room that should be alerted of the message (Id or Name)
89
+ * @param string $name Name used in the "from" field.
90
+ * @param bool $notify Trigger a notification in clients or not
91
+ * @param int $level The minimum logging level at which this handler will be triggered
92
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
93
+ * @param bool $useSSL Whether to connect via SSL.
94
+ * @param string $format The format of the messages (default to text, can be set to html if you have html in the messages)
95
+ * @param string $host The HipChat server hostname.
96
+ * @param string $version The HipChat API version (default HipChatHandler::API_V1)
97
+ */
98
+ public function __construct($token, $room, $name = 'Monolog', $notify = false, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $format = 'text', $host = 'api.hipchat.com', $version = self::API_V1)
99
+ {
100
+ if ($version == self::API_V1 && !$this->validateStringLength($name, static::MAXIMUM_NAME_LENGTH)) {
101
+ throw new \InvalidArgumentException('The supplied name is too long. HipChat\'s v1 API supports names up to 15 UTF-8 characters.');
102
+ }
103
+
104
+ $connectionString = $useSSL ? 'ssl://'.$host.':443' : $host.':80';
105
+ parent::__construct($connectionString, $level, $bubble);
106
+
107
+ $this->token = $token;
108
+ $this->name = $name;
109
+ $this->notify = $notify;
110
+ $this->room = $room;
111
+ $this->format = $format;
112
+ $this->host = $host;
113
+ $this->version = $version;
114
+ }
115
+
116
+ /**
117
+ * {@inheritdoc}
118
+ *
119
+ * @param array $record
120
+ * @return string
121
+ */
122
+ protected function generateDataStream($record)
123
+ {
124
+ $content = $this->buildContent($record);
125
+
126
+ return $this->buildHeader($content) . $content;
127
+ }
128
+
129
+ /**
130
+ * Builds the body of API call
131
+ *
132
+ * @param array $record
133
+ * @return string
134
+ */
135
+ private function buildContent($record)
136
+ {
137
+ $dataArray = array(
138
+ 'notify' => $this->version == self::API_V1 ?
139
+ ($this->notify ? 1 : 0) :
140
+ ($this->notify ? 'true' : 'false'),
141
+ 'message' => $record['formatted'],
142
+ 'message_format' => $this->format,
143
+ 'color' => $this->getAlertColor($record['level']),
144
+ );
145
+
146
+ if (!$this->validateStringLength($dataArray['message'], static::MAXIMUM_MESSAGE_LENGTH)) {
147
+ if (function_exists('mb_substr')) {
148
+ $dataArray['message'] = mb_substr($dataArray['message'], 0, static::MAXIMUM_MESSAGE_LENGTH).' [truncated]';
149
+ } else {
150
+ $dataArray['message'] = substr($dataArray['message'], 0, static::MAXIMUM_MESSAGE_LENGTH).' [truncated]';
151
+ }
152
+ }
153
+
154
+ // if we are using the legacy API then we need to send some additional information
155
+ if ($this->version == self::API_V1) {
156
+ $dataArray['room_id'] = $this->room;
157
+ }
158
+
159
+ // append the sender name if it is set
160
+ // always append it if we use the v1 api (it is required in v1)
161
+ if ($this->version == self::API_V1 || $this->name !== null) {
162
+ $dataArray['from'] = (string) $this->name;
163
+ }
164
+
165
+ return http_build_query($dataArray);
166
+ }
167
+
168
+ /**
169
+ * Builds the header of the API Call
170
+ *
171
+ * @param string $content
172
+ * @return string
173
+ */
174
+ private function buildHeader($content)
175
+ {
176
+ if ($this->version == self::API_V1) {
177
+ $header = "POST /v1/rooms/message?format=json&auth_token={$this->token} HTTP/1.1\r\n";
178
+ } else {
179
+ // needed for rooms with special (spaces, etc) characters in the name
180
+ $room = rawurlencode($this->room);
181
+ $header = "POST /v2/room/{$room}/notification?auth_token={$this->token} HTTP/1.1\r\n";
182
+ }
183
+
184
+ $header .= "Host: {$this->host}\r\n";
185
+ $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
186
+ $header .= "Content-Length: " . strlen($content) . "\r\n";
187
+ $header .= "\r\n";
188
+
189
+ return $header;
190
+ }
191
+
192
+ /**
193
+ * Assigns a color to each level of log records.
194
+ *
195
+ * @param int $level
196
+ * @return string
197
+ */
198
+ protected function getAlertColor($level)
199
+ {
200
+ switch (true) {
201
+ case $level >= Logger::ERROR:
202
+ return 'red';
203
+ case $level >= Logger::WARNING:
204
+ return 'yellow';
205
+ case $level >= Logger::INFO:
206
+ return 'green';
207
+ case $level == Logger::DEBUG:
208
+ return 'gray';
209
+ default:
210
+ return 'yellow';
211
+ }
212
+ }
213
+
214
+ /**
215
+ * {@inheritdoc}
216
+ *
217
+ * @param array $record
218
+ */
219
+ protected function write(array $record)
220
+ {
221
+ parent::write($record);
222
+ $this->finalizeWrite();
223
+ }
224
+
225
+ /**
226
+ * Finalizes the request by reading some bytes and then closing the socket
227
+ *
228
+ * If we do not read some but close the socket too early, hipchat sometimes
229
+ * drops the request entirely.
230
+ */
231
+ protected function finalizeWrite()
232
+ {
233
+ $res = $this->getResource();
234
+ if (is_resource($res)) {
235
+ @fread($res, 2048);
236
+ }
237
+ $this->closeSocket();
238
+ }
239
+
240
+ /**
241
+ * {@inheritdoc}
242
+ */
243
+ public function handleBatch(array $records)
244
+ {
245
+ if (count($records) == 0) {
246
+ return true;
247
+ }
248
+
249
+ $batchRecords = $this->combineRecords($records);
250
+
251
+ $handled = false;
252
+ foreach ($batchRecords as $batchRecord) {
253
+ if ($this->isHandling($batchRecord)) {
254
+ $this->write($batchRecord);
255
+ $handled = true;
256
+ }
257
+ }
258
+
259
+ if (!$handled) {
260
+ return false;
261
+ }
262
+
263
+ return false === $this->bubble;
264
+ }
265
+
266
+ /**
267
+ * Combines multiple records into one. Error level of the combined record
268
+ * will be the highest level from the given records. Datetime will be taken
269
+ * from the first record.
270
+ *
271
+ * @param $records
272
+ * @return array
273
+ */
274
+ private function combineRecords($records)
275
+ {
276
+ $batchRecord = null;
277
+ $batchRecords = array();
278
+ $messages = array();
279
+ $formattedMessages = array();
280
+ $level = 0;
281
+ $levelName = null;
282
+ $datetime = null;
283
+
284
+ foreach ($records as $record) {
285
+ $record = $this->processRecord($record);
286
+
287
+ if ($record['level'] > $level) {
288
+ $level = $record['level'];
289
+ $levelName = $record['level_name'];
290
+ }
291
+
292
+ if (null === $datetime) {
293
+ $datetime = $record['datetime'];
294
+ }
295
+
296
+ $messages[] = $record['message'];
297
+ $messageStr = implode(PHP_EOL, $messages);
298
+ $formattedMessages[] = $this->getFormatter()->format($record);
299
+ $formattedMessageStr = implode('', $formattedMessages);
300
+
301
+ $batchRecord = array(
302
+ 'message' => $messageStr,
303
+ 'formatted' => $formattedMessageStr,
304
+ 'context' => array(),
305
+ 'extra' => array(),
306
+ );
307
+
308
+ if (!$this->validateStringLength($batchRecord['formatted'], static::MAXIMUM_MESSAGE_LENGTH)) {
309
+ // Pop the last message and implode the remaining messages
310
+ $lastMessage = array_pop($messages);
311
+ $lastFormattedMessage = array_pop($formattedMessages);
312
+ $batchRecord['message'] = implode(PHP_EOL, $messages);
313
+ $batchRecord['formatted'] = implode('', $formattedMessages);
314
+
315
+ $batchRecords[] = $batchRecord;
316
+ $messages = array($lastMessage);
317
+ $formattedMessages = array($lastFormattedMessage);
318
+
319
+ $batchRecord = null;
320
+ }
321
+ }
322
+
323
+ if (null !== $batchRecord) {
324
+ $batchRecords[] = $batchRecord;
325
+ }
326
+
327
+ // Set the max level and datetime for all records
328
+ foreach ($batchRecords as &$batchRecord) {
329
+ $batchRecord = array_merge(
330
+ $batchRecord,
331
+ array(
332
+ 'level' => $level,
333
+ 'level_name' => $levelName,
334
+ 'datetime' => $datetime,
335
+ )
336
+ );
337
+ }
338
+
339
+ return $batchRecords;
340
+ }
341
+
342
+ /**
343
+ * Validates the length of a string.
344
+ *
345
+ * If the `mb_strlen()` function is available, it will use that, as HipChat
346
+ * allows UTF-8 characters. Otherwise, it will fall back to `strlen()`.
347
+ *
348
+ * Note that this might cause false failures in the specific case of using
349
+ * a valid name with less than 16 characters, but 16 or more bytes, on a
350
+ * system where `mb_strlen()` is unavailable.
351
+ *
352
+ * @param string $str
353
+ * @param int $length
354
+ *
355
+ * @return bool
356
+ */
357
+ private function validateStringLength($str, $length)
358
+ {
359
+ if (function_exists('mb_strlen')) {
360
+ return (mb_strlen($str) <= $length);
361
+ }
362
+
363
+ return (strlen($str) <= $length);
364
+ }
365
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * IFTTTHandler uses cURL to trigger IFTTT Maker actions
18
+ *
19
+ * Register a secret key and trigger/event name at https://ifttt.com/maker
20
+ *
21
+ * value1 will be the channel from monolog's Logger constructor,
22
+ * value2 will be the level name (ERROR, WARNING, ..)
23
+ * value3 will be the log record's message
24
+ *
25
+ * @author Nehal Patel <nehal@nehalpatel.me>
26
+ */
27
+ class IFTTTHandler extends AbstractProcessingHandler
28
+ {
29
+ private $eventName;
30
+ private $secretKey;
31
+
32
+ /**
33
+ * @param string $eventName The name of the IFTTT Maker event that should be triggered
34
+ * @param string $secretKey A valid IFTTT secret key
35
+ * @param int $level The minimum logging level at which this handler will be triggered
36
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
37
+ */
38
+ public function __construct($eventName, $secretKey, $level = Logger::ERROR, $bubble = true)
39
+ {
40
+ $this->eventName = $eventName;
41
+ $this->secretKey = $secretKey;
42
+
43
+ parent::__construct($level, $bubble);
44
+ }
45
+
46
+ /**
47
+ * {@inheritdoc}
48
+ */
49
+ public function write(array $record)
50
+ {
51
+ $postData = array(
52
+ "value1" => $record["channel"],
53
+ "value2" => $record["level_name"],
54
+ "value3" => $record["message"],
55
+ );
56
+ $postString = json_encode($postData);
57
+
58
+ $ch = curl_init();
59
+ curl_setopt($ch, CURLOPT_URL, "https://maker.ifttt.com/trigger/" . $this->eventName . "/with/key/" . $this->secretKey);
60
+ curl_setopt($ch, CURLOPT_POST, true);
61
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
62
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
63
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array(
64
+ "Content-Type: application/json",
65
+ ));
66
+
67
+ Curl\Util::execute($ch);
68
+ }
69
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/InsightOpsHandler.php ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Inspired on LogEntriesHandler.
18
+ *
19
+ * @author Robert Kaufmann III <rok3@rok3.me>
20
+ * @author Gabriel Machado <gabriel.ms1@hotmail.com>
21
+ */
22
+ class InsightOpsHandler extends SocketHandler
23
+ {
24
+ /**
25
+ * @var string
26
+ */
27
+ protected $logToken;
28
+
29
+ /**
30
+ * @param string $token Log token supplied by InsightOps
31
+ * @param string $region Region where InsightOps account is hosted. Could be 'us' or 'eu'.
32
+ * @param bool $useSSL Whether or not SSL encryption should be used
33
+ * @param int $level The minimum logging level to trigger this handler
34
+ * @param bool $bubble Whether or not messages that are handled should bubble up the stack.
35
+ *
36
+ * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing
37
+ */
38
+ public function __construct($token, $region = 'us', $useSSL = true, $level = Logger::DEBUG, $bubble = true)
39
+ {
40
+ if ($useSSL && !extension_loaded('openssl')) {
41
+ throw new MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for LogEntriesHandler');
42
+ }
43
+
44
+ $endpoint = $useSSL
45
+ ? 'ssl://' . $region . '.data.logs.insight.rapid7.com:443'
46
+ : $region . '.data.logs.insight.rapid7.com:80';
47
+
48
+ parent::__construct($endpoint, $level, $bubble);
49
+ $this->logToken = $token;
50
+ }
51
+
52
+ /**
53
+ * {@inheritdoc}
54
+ *
55
+ * @param array $record
56
+ * @return string
57
+ */
58
+ protected function generateDataStream($record)
59
+ {
60
+ return $this->logToken . ' ' . $record['formatted'];
61
+ }
62
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php ADDED
@@ -0,0 +1,55 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * @author Robert Kaufmann III <rok3@rok3.me>
18
+ */
19
+ class LogEntriesHandler extends SocketHandler
20
+ {
21
+ /**
22
+ * @var string
23
+ */
24
+ protected $logToken;
25
+
26
+ /**
27
+ * @param string $token Log token supplied by LogEntries
28
+ * @param bool $useSSL Whether or not SSL encryption should be used.
29
+ * @param int $level The minimum logging level to trigger this handler
30
+ * @param bool $bubble Whether or not messages that are handled should bubble up the stack.
31
+ *
32
+ * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing
33
+ */
34
+ public function __construct($token, $useSSL = true, $level = Logger::DEBUG, $bubble = true, $host = 'data.logentries.com')
35
+ {
36
+ if ($useSSL && !extension_loaded('openssl')) {
37
+ throw new MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for LogEntriesHandler');
38
+ }
39
+
40
+ $endpoint = $useSSL ? 'ssl://' . $host . ':443' : $host . ':80';
41
+ parent::__construct($endpoint, $level, $bubble);
42
+ $this->logToken = $token;
43
+ }
44
+
45
+ /**
46
+ * {@inheritdoc}
47
+ *
48
+ * @param array $record
49
+ * @return string
50
+ */
51
+ protected function generateDataStream($record)
52
+ {
53
+ return $this->logToken . ' ' . $record['formatted'];
54
+ }
55
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Formatter\LogglyFormatter;
16
+
17
+ /**
18
+ * Sends errors to Loggly.
19
+ *
20
+ * @author Przemek Sobstel <przemek@sobstel.org>
21
+ * @author Adam Pancutt <adam@pancutt.com>
22
+ * @author Gregory Barchard <gregory@barchard.net>
23
+ */
24
+ class LogglyHandler extends AbstractProcessingHandler
25
+ {
26
+ const HOST = 'logs-01.loggly.com';
27
+ const ENDPOINT_SINGLE = 'inputs';
28
+ const ENDPOINT_BATCH = 'bulk';
29
+
30
+ protected $token;
31
+
32
+ protected $tag = array();
33
+
34
+ public function __construct($token, $level = Logger::DEBUG, $bubble = true)
35
+ {
36
+ if (!extension_loaded('curl')) {
37
+ throw new \LogicException('The curl extension is needed to use the LogglyHandler');
38
+ }
39
+
40
+ $this->token = $token;
41
+
42
+ parent::__construct($level, $bubble);
43
+ }
44
+
45
+ public function setTag($tag)
46
+ {
47
+ $tag = !empty($tag) ? $tag : array();
48
+ $this->tag = is_array($tag) ? $tag : array($tag);
49
+ }
50
+
51
+ public function addTag($tag)
52
+ {
53
+ if (!empty($tag)) {
54
+ $tag = is_array($tag) ? $tag : array($tag);
55
+ $this->tag = array_unique(array_merge($this->tag, $tag));
56
+ }
57
+ }
58
+
59
+ protected function write(array $record)
60
+ {
61
+ $this->send($record["formatted"], self::ENDPOINT_SINGLE);
62
+ }
63
+
64
+ public function handleBatch(array $records)
65
+ {
66
+ $level = $this->level;
67
+
68
+ $records = array_filter($records, function ($record) use ($level) {
69
+ return ($record['level'] >= $level);
70
+ });
71
+
72
+ if ($records) {
73
+ $this->send($this->getFormatter()->formatBatch($records), self::ENDPOINT_BATCH);
74
+ }
75
+ }
76
+
77
+ protected function send($data, $endpoint)
78
+ {
79
+ $url = sprintf("https://%s/%s/%s/", self::HOST, $endpoint, $this->token);
80
+
81
+ $headers = array('Content-Type: application/json');
82
+
83
+ if (!empty($this->tag)) {
84
+ $headers[] = 'X-LOGGLY-TAG: '.implode(',', $this->tag);
85
+ }
86
+
87
+ $ch = curl_init();
88
+
89
+ curl_setopt($ch, CURLOPT_URL, $url);
90
+ curl_setopt($ch, CURLOPT_POST, true);
91
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
92
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
93
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
94
+
95
+ Curl\Util::execute($ch);
96
+ }
97
+
98
+ protected function getDefaultFormatter()
99
+ {
100
+ return new LogglyFormatter();
101
+ }
102
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ /**
15
+ * Base class for all mail handlers
16
+ *
17
+ * @author Gyula Sallai
18
+ */
19
+ abstract class MailHandler extends AbstractProcessingHandler
20
+ {
21
+ /**
22
+ * {@inheritdoc}
23
+ */
24
+ public function handleBatch(array $records)
25
+ {
26
+ $messages = array();
27
+
28
+ foreach ($records as $record) {
29
+ if ($record['level'] < $this->level) {
30
+ continue;
31
+ }
32
+ $messages[] = $this->processRecord($record);
33
+ }
34
+
35
+ if (!empty($messages)) {
36
+ $this->send((string) $this->getFormatter()->formatBatch($messages), $messages);
37
+ }
38
+ }
39
+
40
+ /**
41
+ * Send a mail with the given content
42
+ *
43
+ * @param string $content formatted email body to be sent
44
+ * @param array $records the array of log records that formed this content
45
+ */
46
+ abstract protected function send($content, array $records);
47
+
48
+ /**
49
+ * {@inheritdoc}
50
+ */
51
+ protected function write(array $record)
52
+ {
53
+ $this->send((string) $record['formatted'], array($record));
54
+ }
55
+
56
+ protected function getHighestRecord(array $records)
57
+ {
58
+ $highestRecord = null;
59
+ foreach ($records as $record) {
60
+ if ($highestRecord === null || $highestRecord['level'] < $record['level']) {
61
+ $highestRecord = $record;
62
+ }
63
+ }
64
+
65
+ return $highestRecord;
66
+ }
67
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * MandrillHandler uses cURL to send the emails to the Mandrill API
18
+ *
19
+ * @author Adam Nicholson <adamnicholson10@gmail.com>
20
+ */
21
+ class MandrillHandler extends MailHandler
22
+ {
23
+ protected $message;
24
+ protected $apiKey;
25
+
26
+ /**
27
+ * @param string $apiKey A valid Mandrill API key
28
+ * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced
29
+ * @param int $level The minimum logging level at which this handler will be triggered
30
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
31
+ */
32
+ public function __construct($apiKey, $message, $level = Logger::ERROR, $bubble = true)
33
+ {
34
+ parent::__construct($level, $bubble);
35
+
36
+ if (!$message instanceof \Swift_Message && is_callable($message)) {
37
+ $message = call_user_func($message);
38
+ }
39
+ if (!$message instanceof \Swift_Message) {
40
+ throw new \InvalidArgumentException('You must provide either a Swift_Message instance or a callable returning it');
41
+ }
42
+ $this->message = $message;
43
+ $this->apiKey = $apiKey;
44
+ }
45
+
46
+ /**
47
+ * {@inheritdoc}
48
+ */
49
+ protected function send($content, array $records)
50
+ {
51
+ $message = clone $this->message;
52
+ $message->setBody($content);
53
+ $message->setDate(time());
54
+
55
+ $ch = curl_init();
56
+
57
+ curl_setopt($ch, CURLOPT_URL, 'https://mandrillapp.com/api/1.0/messages/send-raw.json');
58
+ curl_setopt($ch, CURLOPT_POST, 1);
59
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
60
+ curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
61
+ 'key' => $this->apiKey,
62
+ 'raw_message' => (string) $message,
63
+ 'async' => false,
64
+ )));
65
+
66
+ Curl\Util::execute($ch);
67
+ }
68
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ /**
15
+ * Exception can be thrown if an extension for an handler is missing
16
+ *
17
+ * @author Christian Bergau <cbergau86@gmail.com>
18
+ */
19
+ class MissingExtensionException extends \Exception
20
+ {
21
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Formatter\NormalizerFormatter;
16
+
17
+ /**
18
+ * Logs to a MongoDB database.
19
+ *
20
+ * usage example:
21
+ *
22
+ * $log = new Logger('application');
23
+ * $mongodb = new MongoDBHandler(new \Mongo("mongodb://localhost:27017"), "logs", "prod");
24
+ * $log->pushHandler($mongodb);
25
+ *
26
+ * @author Thomas Tourlourat <thomas@tourlourat.com>
27
+ */
28
+ class MongoDBHandler extends AbstractProcessingHandler
29
+ {
30
+ protected $mongoCollection;
31
+
32
+ public function __construct($mongo, $database, $collection, $level = Logger::DEBUG, $bubble = true)
33
+ {
34
+ if (!($mongo instanceof \MongoClient || $mongo instanceof \Mongo || $mongo instanceof \MongoDB\Client)) {
35
+ throw new \InvalidArgumentException('MongoClient, Mongo or MongoDB\Client instance required');
36
+ }
37
+
38
+ $this->mongoCollection = $mongo->selectCollection($database, $collection);
39
+
40
+ parent::__construct($level, $bubble);
41
+ }
42
+
43
+ protected function write(array $record)
44
+ {
45
+ if ($this->mongoCollection instanceof \MongoDB\Collection) {
46
+ $this->mongoCollection->insertOne($record["formatted"]);
47
+ } else {
48
+ $this->mongoCollection->save($record["formatted"]);
49
+ }
50
+ }
51
+
52
+ /**
53
+ * {@inheritDoc}
54
+ */
55
+ protected function getDefaultFormatter()
56
+ {
57
+ return new NormalizerFormatter();
58
+ }
59
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Formatter\LineFormatter;
16
+
17
+ /**
18
+ * NativeMailerHandler uses the mail() function to send the emails
19
+ *
20
+ * @author Christophe Coevoet <stof@notk.org>
21
+ * @author Mark Garrett <mark@moderndeveloperllc.com>
22
+ */
23
+ class NativeMailerHandler extends MailHandler
24
+ {
25
+ /**
26
+ * The email addresses to which the message will be sent
27
+ * @var array
28
+ */
29
+ protected $to;
30
+
31
+ /**
32
+ * The subject of the email
33
+ * @var string
34
+ */
35
+ protected $subject;
36
+
37
+ /**
38
+ * Optional headers for the message
39
+ * @var array
40
+ */
41
+ protected $headers = array();
42
+
43
+ /**
44
+ * Optional parameters for the message
45
+ * @var array
46
+ */
47
+ protected $parameters = array();
48
+
49
+ /**
50
+ * The wordwrap length for the message
51
+ * @var int
52
+ */
53
+ protected $maxColumnWidth;
54
+
55
+ /**
56
+ * The Content-type for the message
57
+ * @var string
58
+ */
59
+ protected $contentType = 'text/plain';
60
+
61
+ /**
62
+ * The encoding for the message
63
+ * @var string
64
+ */
65
+ protected $encoding = 'utf-8';
66
+
67
+ /**
68
+ * @param string|array $to The receiver of the mail
69
+ * @param string $subject The subject of the mail
70
+ * @param string $from The sender of the mail
71
+ * @param int $level The minimum logging level at which this handler will be triggered
72
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
73
+ * @param int $maxColumnWidth The maximum column width that the message lines will have
74
+ */
75
+ public function __construct($to, $subject, $from, $level = Logger::ERROR, $bubble = true, $maxColumnWidth = 70)
76
+ {
77
+ parent::__construct($level, $bubble);
78
+ $this->to = is_array($to) ? $to : array($to);
79
+ $this->subject = $subject;
80
+ $this->addHeader(sprintf('From: %s', $from));
81
+ $this->maxColumnWidth = $maxColumnWidth;
82
+ }
83
+
84
+ /**
85
+ * Add headers to the message
86
+ *
87
+ * @param string|array $headers Custom added headers
88
+ * @return self
89
+ */
90
+ public function addHeader($headers)
91
+ {
92
+ foreach ((array) $headers as $header) {
93
+ if (strpos($header, "\n") !== false || strpos($header, "\r") !== false) {
94
+ throw new \InvalidArgumentException('Headers can not contain newline characters for security reasons');
95
+ }
96
+ $this->headers[] = $header;
97
+ }
98
+
99
+ return $this;
100
+ }
101
+
102
+ /**
103
+ * Add parameters to the message
104
+ *
105
+ * @param string|array $parameters Custom added parameters
106
+ * @return self
107
+ */
108
+ public function addParameter($parameters)
109
+ {
110
+ $this->parameters = array_merge($this->parameters, (array) $parameters);
111
+
112
+ return $this;
113
+ }
114
+
115
+ /**
116
+ * {@inheritdoc}
117
+ */
118
+ protected function send($content, array $records)
119
+ {
120
+ $content = wordwrap($content, $this->maxColumnWidth);
121
+ $headers = ltrim(implode("\r\n", $this->headers) . "\r\n", "\r\n");
122
+ $headers .= 'Content-type: ' . $this->getContentType() . '; charset=' . $this->getEncoding() . "\r\n";
123
+ if ($this->getContentType() == 'text/html' && false === strpos($headers, 'MIME-Version:')) {
124
+ $headers .= 'MIME-Version: 1.0' . "\r\n";
125
+ }
126
+
127
+ $subject = $this->subject;
128
+ if ($records) {
129
+ $subjectFormatter = new LineFormatter($this->subject);
130
+ $subject = $subjectFormatter->format($this->getHighestRecord($records));
131
+ }
132
+
133
+ $parameters = implode(' ', $this->parameters);
134
+ foreach ($this->to as $to) {
135
+ mail($to, $subject, $content, $headers, $parameters);
136
+ }
137
+ }
138
+
139
+ /**
140
+ * @return string $contentType
141
+ */
142
+ public function getContentType()
143
+ {
144
+ return $this->contentType;
145
+ }
146
+
147
+ /**
148
+ * @return string $encoding
149
+ */
150
+ public function getEncoding()
151
+ {
152
+ return $this->encoding;
153
+ }
154
+
155
+ /**
156
+ * @param string $contentType The content type of the email - Defaults to text/plain. Use text/html for HTML
157
+ * messages.
158
+ * @return self
159
+ */
160
+ public function setContentType($contentType)
161
+ {
162
+ if (strpos($contentType, "\n") !== false || strpos($contentType, "\r") !== false) {
163
+ throw new \InvalidArgumentException('The content type can not contain newline characters to prevent email header injection');
164
+ }
165
+
166
+ $this->contentType = $contentType;
167
+
168
+ return $this;
169
+ }
170
+
171
+ /**
172
+ * @param string $encoding
173
+ * @return self
174
+ */
175
+ public function setEncoding($encoding)
176
+ {
177
+ if (strpos($encoding, "\n") !== false || strpos($encoding, "\r") !== false) {
178
+ throw new \InvalidArgumentException('The encoding can not contain newline characters to prevent email header injection');
179
+ }
180
+
181
+ $this->encoding = $encoding;
182
+
183
+ return $this;
184
+ }
185
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php ADDED
@@ -0,0 +1,204 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Formatter\NormalizerFormatter;
16
+
17
+ /**
18
+ * Class to record a log on a NewRelic application.
19
+ * Enabling New Relic High Security mode may prevent capture of useful information.
20
+ *
21
+ * This handler requires a NormalizerFormatter to function and expects an array in $record['formatted']
22
+ *
23
+ * @see https://docs.newrelic.com/docs/agents/php-agent
24
+ * @see https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security
25
+ */
26
+ class NewRelicHandler extends AbstractProcessingHandler
27
+ {
28
+ /**
29
+ * Name of the New Relic application that will receive logs from this handler.
30
+ *
31
+ * @var string
32
+ */
33
+ protected $appName;
34
+
35
+ /**
36
+ * Name of the current transaction
37
+ *
38
+ * @var string
39
+ */
40
+ protected $transactionName;
41
+
42
+ /**
43
+ * Some context and extra data is passed into the handler as arrays of values. Do we send them as is
44
+ * (useful if we are using the API), or explode them for display on the NewRelic RPM website?
45
+ *
46
+ * @var bool
47
+ */
48
+ protected $explodeArrays;
49
+
50
+ /**
51
+ * {@inheritDoc}
52
+ *
53
+ * @param string $appName
54
+ * @param bool $explodeArrays
55
+ * @param string $transactionName
56
+ */
57
+ public function __construct(
58
+ $level = Logger::ERROR,
59
+ $bubble = true,
60
+ $appName = null,
61
+ $explodeArrays = false,
62
+ $transactionName = null
63
+ ) {
64
+ parent::__construct($level, $bubble);
65
+
66
+ $this->appName = $appName;
67
+ $this->explodeArrays = $explodeArrays;
68
+ $this->transactionName = $transactionName;
69
+ }
70
+
71
+ /**
72
+ * {@inheritDoc}
73
+ */
74
+ protected function write(array $record)
75
+ {
76
+ if (!$this->isNewRelicEnabled()) {
77
+ throw new MissingExtensionException('The newrelic PHP extension is required to use the NewRelicHandler');
78
+ }
79
+
80
+ if ($appName = $this->getAppName($record['context'])) {
81
+ $this->setNewRelicAppName($appName);
82
+ }
83
+
84
+ if ($transactionName = $this->getTransactionName($record['context'])) {
85
+ $this->setNewRelicTransactionName($transactionName);
86
+ unset($record['formatted']['context']['transaction_name']);
87
+ }
88
+
89
+ if (isset($record['context']['exception']) && ($record['context']['exception'] instanceof \Exception || (PHP_VERSION_ID >= 70000 && $record['context']['exception'] instanceof \Throwable))) {
90
+ newrelic_notice_error($record['message'], $record['context']['exception']);
91
+ unset($record['formatted']['context']['exception']);
92
+ } else {
93
+ newrelic_notice_error($record['message']);
94
+ }
95
+
96
+ if (isset($record['formatted']['context']) && is_array($record['formatted']['context'])) {
97
+ foreach ($record['formatted']['context'] as $key => $parameter) {
98
+ if (is_array($parameter) && $this->explodeArrays) {
99
+ foreach ($parameter as $paramKey => $paramValue) {
100
+ $this->setNewRelicParameter('context_' . $key . '_' . $paramKey, $paramValue);
101
+ }
102
+ } else {
103
+ $this->setNewRelicParameter('context_' . $key, $parameter);
104
+ }
105
+ }
106
+ }
107
+
108
+ if (isset($record['formatted']['extra']) && is_array($record['formatted']['extra'])) {
109
+ foreach ($record['formatted']['extra'] as $key => $parameter) {
110
+ if (is_array($parameter) && $this->explodeArrays) {
111
+ foreach ($parameter as $paramKey => $paramValue) {
112
+ $this->setNewRelicParameter('extra_' . $key . '_' . $paramKey, $paramValue);
113
+ }
114
+ } else {
115
+ $this->setNewRelicParameter('extra_' . $key, $parameter);
116
+ }
117
+ }
118
+ }
119
+ }
120
+
121
+ /**
122
+ * Checks whether the NewRelic extension is enabled in the system.
123
+ *
124
+ * @return bool
125
+ */
126
+ protected function isNewRelicEnabled()
127
+ {
128
+ return extension_loaded('newrelic');
129
+ }
130
+
131
+ /**
132
+ * Returns the appname where this log should be sent. Each log can override the default appname, set in this
133
+ * handler's constructor, by providing the appname in it's context.
134
+ *
135
+ * @param array $context
136
+ * @return null|string
137
+ */
138
+ protected function getAppName(array $context)
139
+ {
140
+ if (isset($context['appname'])) {
141
+ return $context['appname'];
142
+ }
143
+
144
+ return $this->appName;
145
+ }
146
+
147
+ /**
148
+ * Returns the name of the current transaction. Each log can override the default transaction name, set in this
149
+ * handler's constructor, by providing the transaction_name in it's context
150
+ *
151
+ * @param array $context
152
+ *
153
+ * @return null|string
154
+ */
155
+ protected function getTransactionName(array $context)
156
+ {
157
+ if (isset($context['transaction_name'])) {
158
+ return $context['transaction_name'];
159
+ }
160
+
161
+ return $this->transactionName;
162
+ }
163
+
164
+ /**
165
+ * Sets the NewRelic application that should receive this log.
166
+ *
167
+ * @param string $appName
168
+ */
169
+ protected function setNewRelicAppName($appName)
170
+ {
171
+ newrelic_set_appname($appName);
172
+ }
173
+
174
+ /**
175
+ * Overwrites the name of the current transaction
176
+ *
177
+ * @param string $transactionName
178
+ */
179
+ protected function setNewRelicTransactionName($transactionName)
180
+ {
181
+ newrelic_name_transaction($transactionName);
182
+ }
183
+
184
+ /**
185
+ * @param string $key
186
+ * @param mixed $value
187
+ */
188
+ protected function setNewRelicParameter($key, $value)
189
+ {
190
+ if (null === $value || is_scalar($value)) {
191
+ newrelic_add_custom_parameter($key, $value);
192
+ } else {
193
+ newrelic_add_custom_parameter($key, @json_encode($value));
194
+ }
195
+ }
196
+
197
+ /**
198
+ * {@inheritDoc}
199
+ */
200
+ protected function getDefaultFormatter()
201
+ {
202
+ return new NormalizerFormatter();
203
+ }
204
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Blackhole
18
+ *
19
+ * Any record it can handle will be thrown away. This can be used
20
+ * to put on top of an existing stack to override it temporarily.
21
+ *
22
+ * @author Jordi Boggiano <j.boggiano@seld.be>
23
+ */
24
+ class NullHandler extends AbstractHandler
25
+ {
26
+ /**
27
+ * @param int $level The minimum logging level at which this handler will be triggered
28
+ */
29
+ public function __construct($level = Logger::DEBUG)
30
+ {
31
+ parent::__construct($level, false);
32
+ }
33
+
34
+ /**
35
+ * {@inheritdoc}
36
+ */
37
+ public function handle(array $record)
38
+ {
39
+ if ($record['level'] < $this->level) {
40
+ return false;
41
+ }
42
+
43
+ return true;
44
+ }
45
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php ADDED
@@ -0,0 +1,242 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Exception;
15
+ use Monolog\Formatter\LineFormatter;
16
+ use Monolog\Logger;
17
+ use PhpConsole\Connector;
18
+ use PhpConsole\Handler;
19
+ use PhpConsole\Helper;
20
+
21
+ /**
22
+ * Monolog handler for Google Chrome extension "PHP Console"
23
+ *
24
+ * Display PHP error/debug log messages in Google Chrome console and notification popups, executes PHP code remotely
25
+ *
26
+ * Usage:
27
+ * 1. Install Google Chrome extension https://chrome.google.com/webstore/detail/php-console/nfhmhhlpfleoednkpnnnkolmclajemef
28
+ * 2. See overview https://github.com/barbushin/php-console#overview
29
+ * 3. Install PHP Console library https://github.com/barbushin/php-console#installation
30
+ * 4. Example (result will looks like http://i.hizliresim.com/vg3Pz4.png)
31
+ *
32
+ * $logger = new \Monolog\Logger('all', array(new \Monolog\Handler\PHPConsoleHandler()));
33
+ * \Monolog\ErrorHandler::register($logger);
34
+ * echo $undefinedVar;
35
+ * $logger->addDebug('SELECT * FROM users', array('db', 'time' => 0.012));
36
+ * PC::debug($_SERVER); // PHP Console debugger for any type of vars
37
+ *
38
+ * @author Sergey Barbushin https://www.linkedin.com/in/barbushin
39
+ */
40
+ class PHPConsoleHandler extends AbstractProcessingHandler
41
+ {
42
+ private $options = array(
43
+ 'enabled' => true, // bool Is PHP Console server enabled
44
+ 'classesPartialsTraceIgnore' => array('Monolog\\'), // array Hide calls of classes started with...
45
+ 'debugTagsKeysInContext' => array(0, 'tag'), // bool Is PHP Console server enabled
46
+ 'useOwnErrorsHandler' => false, // bool Enable errors handling
47
+ 'useOwnExceptionsHandler' => false, // bool Enable exceptions handling
48
+ 'sourcesBasePath' => null, // string Base path of all project sources to strip in errors source paths
49
+ 'registerHelper' => true, // bool Register PhpConsole\Helper that allows short debug calls like PC::debug($var, 'ta.g.s')
50
+ 'serverEncoding' => null, // string|null Server internal encoding
51
+ 'headersLimit' => null, // int|null Set headers size limit for your web-server
52
+ 'password' => null, // string|null Protect PHP Console connection by password
53
+ 'enableSslOnlyMode' => false, // bool Force connection by SSL for clients with PHP Console installed
54
+ 'ipMasks' => array(), // array Set IP masks of clients that will be allowed to connect to PHP Console: array('192.168.*.*', '127.0.0.1')
55
+ 'enableEvalListener' => false, // bool Enable eval request to be handled by eval dispatcher(if enabled, 'password' option is also required)
56
+ 'dumperDetectCallbacks' => false, // bool Convert callback items in dumper vars to (callback SomeClass::someMethod) strings
57
+ 'dumperLevelLimit' => 5, // int Maximum dumped vars array or object nested dump level
58
+ 'dumperItemsCountLimit' => 100, // int Maximum dumped var same level array items or object properties number
59
+ 'dumperItemSizeLimit' => 5000, // int Maximum length of any string or dumped array item
60
+ 'dumperDumpSizeLimit' => 500000, // int Maximum approximate size of dumped vars result formatted in JSON
61
+ 'detectDumpTraceAndSource' => false, // bool Autodetect and append trace data to debug
62
+ 'dataStorage' => null, // PhpConsole\Storage|null Fixes problem with custom $_SESSION handler(see http://goo.gl/Ne8juJ)
63
+ );
64
+
65
+ /** @var Connector */
66
+ private $connector;
67
+
68
+ /**
69
+ * @param array $options See \Monolog\Handler\PHPConsoleHandler::$options for more details
70
+ * @param Connector|null $connector Instance of \PhpConsole\Connector class (optional)
71
+ * @param int $level
72
+ * @param bool $bubble
73
+ * @throws Exception
74
+ */
75
+ public function __construct(array $options = array(), Connector $connector = null, $level = Logger::DEBUG, $bubble = true)
76
+ {
77
+ if (!class_exists('PhpConsole\Connector')) {
78
+ throw new Exception('PHP Console library not found. See https://github.com/barbushin/php-console#installation');
79
+ }
80
+ parent::__construct($level, $bubble);
81
+ $this->options = $this->initOptions($options);
82
+ $this->connector = $this->initConnector($connector);
83
+ }
84
+
85
+ private function initOptions(array $options)
86
+ {
87
+ $wrongOptions = array_diff(array_keys($options), array_keys($this->options));
88
+ if ($wrongOptions) {
89
+ throw new Exception('Unknown options: ' . implode(', ', $wrongOptions));
90
+ }
91
+
92
+ return array_replace($this->options, $options);
93
+ }
94
+
95
+ private function initConnector(Connector $connector = null)
96
+ {
97
+ if (!$connector) {
98
+ if ($this->options['dataStorage']) {
99
+ Connector::setPostponeStorage($this->options['dataStorage']);
100
+ }
101
+ $connector = Connector::getInstance();
102
+ }
103
+
104
+ if ($this->options['registerHelper'] && !Helper::isRegistered()) {
105
+ Helper::register();
106
+ }
107
+
108
+ if ($this->options['enabled'] && $connector->isActiveClient()) {
109
+ if ($this->options['useOwnErrorsHandler'] || $this->options['useOwnExceptionsHandler']) {
110
+ $handler = Handler::getInstance();
111
+ $handler->setHandleErrors($this->options['useOwnErrorsHandler']);
112
+ $handler->setHandleExceptions($this->options['useOwnExceptionsHandler']);
113
+ $handler->start();
114
+ }
115
+ if ($this->options['sourcesBasePath']) {
116
+ $connector->setSourcesBasePath($this->options['sourcesBasePath']);
117
+ }
118
+ if ($this->options['serverEncoding']) {
119
+ $connector->setServerEncoding($this->options['serverEncoding']);
120
+ }
121
+ if ($this->options['password']) {
122
+ $connector->setPassword($this->options['password']);
123
+ }
124
+ if ($this->options['enableSslOnlyMode']) {
125
+ $connector->enableSslOnlyMode();
126
+ }
127
+ if ($this->options['ipMasks']) {
128
+ $connector->setAllowedIpMasks($this->options['ipMasks']);
129
+ }
130
+ if ($this->options['headersLimit']) {
131
+ $connector->setHeadersLimit($this->options['headersLimit']);
132
+ }
133
+ if ($this->options['detectDumpTraceAndSource']) {
134
+ $connector->getDebugDispatcher()->detectTraceAndSource = true;
135
+ }
136
+ $dumper = $connector->getDumper();
137
+ $dumper->levelLimit = $this->options['dumperLevelLimit'];
138
+ $dumper->itemsCountLimit = $this->options['dumperItemsCountLimit'];
139
+ $dumper->itemSizeLimit = $this->options['dumperItemSizeLimit'];
140
+ $dumper->dumpSizeLimit = $this->options['dumperDumpSizeLimit'];
141
+ $dumper->detectCallbacks = $this->options['dumperDetectCallbacks'];
142
+ if ($this->options['enableEvalListener']) {
143
+ $connector->startEvalRequestsListener();
144
+ }
145
+ }
146
+
147
+ return $connector;
148
+ }
149
+
150
+ public function getConnector()
151
+ {
152
+ return $this->connector;
153
+ }
154
+
155
+ public function getOptions()
156
+ {
157
+ return $this->options;
158
+ }
159
+
160
+ public function handle(array $record)
161
+ {
162
+ if ($this->options['enabled'] && $this->connector->isActiveClient()) {
163
+ return parent::handle($record);
164
+ }
165
+
166
+ return !$this->bubble;
167
+ }
168
+
169
+ /**
170
+ * Writes the record down to the log of the implementing handler
171
+ *
172
+ * @param array $record
173
+ * @return void
174
+ */
175
+ protected function write(array $record)
176
+ {
177
+ if ($record['level'] < Logger::NOTICE) {
178
+ $this->handleDebugRecord($record);
179
+ } elseif (isset($record['context']['exception']) && $record['context']['exception'] instanceof Exception) {
180
+ $this->handleExceptionRecord($record);
181
+ } else {
182
+ $this->handleErrorRecord($record);
183
+ }
184
+ }
185
+
186
+ private function handleDebugRecord(array $record)
187
+ {
188
+ $tags = $this->getRecordTags($record);
189
+ $message = $record['message'];
190
+ if ($record['context']) {
191
+ $message .= ' ' . json_encode($this->connector->getDumper()->dump(array_filter($record['context'])));
192
+ }
193
+ $this->connector->getDebugDispatcher()->dispatchDebug($message, $tags, $this->options['classesPartialsTraceIgnore']);
194
+ }
195
+
196
+ private function handleExceptionRecord(array $record)
197
+ {
198
+ $this->connector->getErrorsDispatcher()->dispatchException($record['context']['exception']);
199
+ }
200
+
201
+ private function handleErrorRecord(array $record)
202
+ {
203
+ $context = $record['context'];
204
+
205
+ $this->connector->getErrorsDispatcher()->dispatchError(
206
+ isset($context['code']) ? $context['code'] : null,
207
+ isset($context['message']) ? $context['message'] : $record['message'],
208
+ isset($context['file']) ? $context['file'] : null,
209
+ isset($context['line']) ? $context['line'] : null,
210
+ $this->options['classesPartialsTraceIgnore']
211
+ );
212
+ }
213
+
214
+ private function getRecordTags(array &$record)
215
+ {
216
+ $tags = null;
217
+ if (!empty($record['context'])) {
218
+ $context = & $record['context'];
219
+ foreach ($this->options['debugTagsKeysInContext'] as $key) {
220
+ if (!empty($context[$key])) {
221
+ $tags = $context[$key];
222
+ if ($key === 0) {
223
+ array_shift($context);
224
+ } else {
225
+ unset($context[$key]);
226
+ }
227
+ break;
228
+ }
229
+ }
230
+ }
231
+
232
+ return $tags ?: strtolower($record['level_name']);
233
+ }
234
+
235
+ /**
236
+ * {@inheritDoc}
237
+ */
238
+ protected function getDefaultFormatter()
239
+ {
240
+ return new LineFormatter('%message%');
241
+ }
242
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Psr\Log\LoggerInterface;
16
+
17
+ /**
18
+ * Proxies log messages to an existing PSR-3 compliant logger.
19
+ *
20
+ * @author Michael Moussa <michael.moussa@gmail.com>
21
+ */
22
+ class PsrHandler extends AbstractHandler
23
+ {
24
+ /**
25
+ * PSR-3 compliant logger
26
+ *
27
+ * @var LoggerInterface
28
+ */
29
+ protected $logger;
30
+
31
+ /**
32
+ * @param LoggerInterface $logger The underlying PSR-3 compliant logger to which messages will be proxied
33
+ * @param int $level The minimum logging level at which this handler will be triggered
34
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
35
+ */
36
+ public function __construct(LoggerInterface $logger, $level = Logger::DEBUG, $bubble = true)
37
+ {
38
+ parent::__construct($level, $bubble);
39
+
40
+ $this->logger = $logger;
41
+ }
42
+
43
+ /**
44
+ * {@inheritDoc}
45
+ */
46
+ public function handle(array $record)
47
+ {
48
+ if (!$this->isHandling($record)) {
49
+ return false;
50
+ }
51
+
52
+ $this->logger->log(strtolower($record['level_name']), $record['message'], $record['context']);
53
+
54
+ return false === $this->bubble;
55
+ }
56
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php ADDED
@@ -0,0 +1,185 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Sends notifications through the pushover api to mobile phones
18
+ *
19
+ * @author Sebastian Göttschkes <sebastian.goettschkes@googlemail.com>
20
+ * @see https://www.pushover.net/api
21
+ */
22
+ class PushoverHandler extends SocketHandler
23
+ {
24
+ private $token;
25
+ private $users;
26
+ private $title;
27
+ private $user;
28
+ private $retry;
29
+ private $expire;
30
+
31
+ private $highPriorityLevel;
32
+ private $emergencyLevel;
33
+ private $useFormattedMessage = false;
34
+
35
+ /**
36
+ * All parameters that can be sent to Pushover
37
+ * @see https://pushover.net/api
38
+ * @var array
39
+ */
40
+ private $parameterNames = array(
41
+ 'token' => true,
42
+ 'user' => true,
43
+ 'message' => true,
44
+ 'device' => true,
45
+ 'title' => true,
46
+ 'url' => true,
47
+ 'url_title' => true,
48
+ 'priority' => true,
49
+ 'timestamp' => true,
50
+ 'sound' => true,
51
+ 'retry' => true,
52
+ 'expire' => true,
53
+ 'callback' => true,
54
+ );
55
+
56
+ /**
57
+ * Sounds the api supports by default
58
+ * @see https://pushover.net/api#sounds
59
+ * @var array
60
+ */
61
+ private $sounds = array(
62
+ 'pushover', 'bike', 'bugle', 'cashregister', 'classical', 'cosmic', 'falling', 'gamelan', 'incoming',
63
+ 'intermission', 'magic', 'mechanical', 'pianobar', 'siren', 'spacealarm', 'tugboat', 'alien', 'climb',
64
+ 'persistent', 'echo', 'updown', 'none',
65
+ );
66
+
67
+ /**
68
+ * @param string $token Pushover api token
69
+ * @param string|array $users Pushover user id or array of ids the message will be sent to
70
+ * @param string $title Title sent to the Pushover API
71
+ * @param int $level The minimum logging level at which this handler will be triggered
72
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
73
+ * @param bool $useSSL Whether to connect via SSL. Required when pushing messages to users that are not
74
+ * the pushover.net app owner. OpenSSL is required for this option.
75
+ * @param int $highPriorityLevel The minimum logging level at which this handler will start
76
+ * sending "high priority" requests to the Pushover API
77
+ * @param int $emergencyLevel The minimum logging level at which this handler will start
78
+ * sending "emergency" requests to the Pushover API
79
+ * @param int $retry The retry parameter specifies how often (in seconds) the Pushover servers will send the same notification to the user.
80
+ * @param int $expire The expire parameter specifies how many seconds your notification will continue to be retried for (every retry seconds).
81
+ */
82
+ public function __construct($token, $users, $title = null, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $highPriorityLevel = Logger::CRITICAL, $emergencyLevel = Logger::EMERGENCY, $retry = 30, $expire = 25200)
83
+ {
84
+ $connectionString = $useSSL ? 'ssl://api.pushover.net:443' : 'api.pushover.net:80';
85
+ parent::__construct($connectionString, $level, $bubble);
86
+
87
+ $this->token = $token;
88
+ $this->users = (array) $users;
89
+ $this->title = $title ?: gethostname();
90
+ $this->highPriorityLevel = Logger::toMonologLevel($highPriorityLevel);
91
+ $this->emergencyLevel = Logger::toMonologLevel($emergencyLevel);
92
+ $this->retry = $retry;
93
+ $this->expire = $expire;
94
+ }
95
+
96
+ protected function generateDataStream($record)
97
+ {
98
+ $content = $this->buildContent($record);
99
+
100
+ return $this->buildHeader($content) . $content;
101
+ }
102
+
103
+ private function buildContent($record)
104
+ {
105
+ // Pushover has a limit of 512 characters on title and message combined.
106
+ $maxMessageLength = 512 - strlen($this->title);
107
+
108
+ $message = ($this->useFormattedMessage) ? $record['formatted'] : $record['message'];
109
+ $message = substr($message, 0, $maxMessageLength);
110
+
111
+ $timestamp = $record['datetime']->getTimestamp();
112
+
113
+ $dataArray = array(
114
+ 'token' => $this->token,
115
+ 'user' => $this->user,
116
+ 'message' => $message,
117
+ 'title' => $this->title,
118
+ 'timestamp' => $timestamp,
119
+ );
120
+
121
+ if (isset($record['level']) && $record['level'] >= $this->emergencyLevel) {
122
+ $dataArray['priority'] = 2;
123
+ $dataArray['retry'] = $this->retry;
124
+ $dataArray['expire'] = $this->expire;
125
+ } elseif (isset($record['level']) && $record['level'] >= $this->highPriorityLevel) {
126
+ $dataArray['priority'] = 1;
127
+ }
128
+
129
+ // First determine the available parameters
130
+ $context = array_intersect_key($record['context'], $this->parameterNames);
131
+ $extra = array_intersect_key($record['extra'], $this->parameterNames);
132
+
133
+ // Least important info should be merged with subsequent info
134
+ $dataArray = array_merge($extra, $context, $dataArray);
135
+
136
+ // Only pass sounds that are supported by the API
137
+ if (isset($dataArray['sound']) && !in_array($dataArray['sound'], $this->sounds)) {
138
+ unset($dataArray['sound']);
139
+ }
140
+
141
+ return http_build_query($dataArray);
142
+ }
143
+
144
+ private function buildHeader($content)
145
+ {
146
+ $header = "POST /1/messages.json HTTP/1.1\r\n";
147
+ $header .= "Host: api.pushover.net\r\n";
148
+ $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
149
+ $header .= "Content-Length: " . strlen($content) . "\r\n";
150
+ $header .= "\r\n";
151
+
152
+ return $header;
153
+ }
154
+
155
+ protected function write(array $record)
156
+ {
157
+ foreach ($this->users as $user) {
158
+ $this->user = $user;
159
+
160
+ parent::write($record);
161
+ $this->closeSocket();
162
+ }
163
+
164
+ $this->user = null;
165
+ }
166
+
167
+ public function setHighPriorityLevel($value)
168
+ {
169
+ $this->highPriorityLevel = $value;
170
+ }
171
+
172
+ public function setEmergencyLevel($value)
173
+ {
174
+ $this->emergencyLevel = $value;
175
+ }
176
+
177
+ /**
178
+ * Use the formatted message?
179
+ * @param bool $value
180
+ */
181
+ public function useFormattedMessage($value)
182
+ {
183
+ $this->useFormattedMessage = (bool) $value;
184
+ }
185
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php ADDED
@@ -0,0 +1,232 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\LineFormatter;
15
+ use Monolog\Formatter\FormatterInterface;
16
+ use Monolog\Logger;
17
+ use Raven_Client;
18
+
19
+ /**
20
+ * Handler to send messages to a Sentry (https://github.com/getsentry/sentry) server
21
+ * using sentry-php (https://github.com/getsentry/sentry-php)
22
+ *
23
+ * @author Marc Abramowitz <marc@marc-abramowitz.com>
24
+ */
25
+ class RavenHandler extends AbstractProcessingHandler
26
+ {
27
+ /**
28
+ * Translates Monolog log levels to Raven log levels.
29
+ */
30
+ protected $logLevels = array(
31
+ Logger::DEBUG => Raven_Client::DEBUG,
32
+ Logger::INFO => Raven_Client::INFO,
33
+ Logger::NOTICE => Raven_Client::INFO,
34
+ Logger::WARNING => Raven_Client::WARNING,
35
+ Logger::ERROR => Raven_Client::ERROR,
36
+ Logger::CRITICAL => Raven_Client::FATAL,
37
+ Logger::ALERT => Raven_Client::FATAL,
38
+ Logger::EMERGENCY => Raven_Client::FATAL,
39
+ );
40
+
41
+ /**
42
+ * @var string should represent the current version of the calling
43
+ * software. Can be any string (git commit, version number)
44
+ */
45
+ protected $release;
46
+
47
+ /**
48
+ * @var Raven_Client the client object that sends the message to the server
49
+ */
50
+ protected $ravenClient;
51
+
52
+ /**
53
+ * @var LineFormatter The formatter to use for the logs generated via handleBatch()
54
+ */
55
+ protected $batchFormatter;
56
+
57
+ /**
58
+ * @param Raven_Client $ravenClient
59
+ * @param int $level The minimum logging level at which this handler will be triggered
60
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
61
+ */
62
+ public function __construct(Raven_Client $ravenClient, $level = Logger::DEBUG, $bubble = true)
63
+ {
64
+ parent::__construct($level, $bubble);
65
+
66
+ $this->ravenClient = $ravenClient;
67
+ }
68
+
69
+ /**
70
+ * {@inheritdoc}
71
+ */
72
+ public function handleBatch(array $records)
73
+ {
74
+ $level = $this->level;
75
+
76
+ // filter records based on their level
77
+ $records = array_filter($records, function ($record) use ($level) {
78
+ return $record['level'] >= $level;
79
+ });
80
+
81
+ if (!$records) {
82
+ return;
83
+ }
84
+
85
+ // the record with the highest severity is the "main" one
86
+ $record = array_reduce($records, function ($highest, $record) {
87
+ if ($record['level'] > $highest['level']) {
88
+ return $record;
89
+ }
90
+
91
+ return $highest;
92
+ });
93
+
94
+ // the other ones are added as a context item
95
+ $logs = array();
96
+ foreach ($records as $r) {
97
+ $logs[] = $this->processRecord($r);
98
+ }
99
+
100
+ if ($logs) {
101
+ $record['context']['logs'] = (string) $this->getBatchFormatter()->formatBatch($logs);
102
+ }
103
+
104
+ $this->handle($record);
105
+ }
106
+
107
+ /**
108
+ * Sets the formatter for the logs generated by handleBatch().
109
+ *
110
+ * @param FormatterInterface $formatter
111
+ */
112
+ public function setBatchFormatter(FormatterInterface $formatter)
113
+ {
114
+ $this->batchFormatter = $formatter;
115
+ }
116
+
117
+ /**
118
+ * Gets the formatter for the logs generated by handleBatch().
119
+ *
120
+ * @return FormatterInterface
121
+ */
122
+ public function getBatchFormatter()
123
+ {
124
+ if (!$this->batchFormatter) {
125
+ $this->batchFormatter = $this->getDefaultBatchFormatter();
126
+ }
127
+
128
+ return $this->batchFormatter;
129
+ }
130
+
131
+ /**
132
+ * {@inheritdoc}
133
+ */
134
+ protected function write(array $record)
135
+ {
136
+ $previousUserContext = false;
137
+ $options = array();
138
+ $options['level'] = $this->logLevels[$record['level']];
139
+ $options['tags'] = array();
140
+ if (!empty($record['extra']['tags'])) {
141
+ $options['tags'] = array_merge($options['tags'], $record['extra']['tags']);
142
+ unset($record['extra']['tags']);
143
+ }
144
+ if (!empty($record['context']['tags'])) {
145
+ $options['tags'] = array_merge($options['tags'], $record['context']['tags']);
146
+ unset($record['context']['tags']);
147
+ }
148
+ if (!empty($record['context']['fingerprint'])) {
149
+ $options['fingerprint'] = $record['context']['fingerprint'];
150
+ unset($record['context']['fingerprint']);
151
+ }
152
+ if (!empty($record['context']['logger'])) {
153
+ $options['logger'] = $record['context']['logger'];
154
+ unset($record['context']['logger']);
155
+ } else {
156
+ $options['logger'] = $record['channel'];
157
+ }
158
+ foreach ($this->getExtraParameters() as $key) {
159
+ foreach (array('extra', 'context') as $source) {
160
+ if (!empty($record[$source][$key])) {
161
+ $options[$key] = $record[$source][$key];
162
+ unset($record[$source][$key]);
163
+ }
164
+ }
165
+ }
166
+ if (!empty($record['context'])) {
167
+ $options['extra']['context'] = $record['context'];
168
+ if (!empty($record['context']['user'])) {
169
+ $previousUserContext = $this->ravenClient->context->user;
170
+ $this->ravenClient->user_context($record['context']['user']);
171
+ unset($options['extra']['context']['user']);
172
+ }
173
+ }
174
+ if (!empty($record['extra'])) {
175
+ $options['extra']['extra'] = $record['extra'];
176
+ }
177
+
178
+ if (!empty($this->release) && !isset($options['release'])) {
179
+ $options['release'] = $this->release;
180
+ }
181
+
182
+ if (isset($record['context']['exception']) && ($record['context']['exception'] instanceof \Exception || (PHP_VERSION_ID >= 70000 && $record['context']['exception'] instanceof \Throwable))) {
183
+ $options['message'] = $record['formatted'];
184
+ $this->ravenClient->captureException($record['context']['exception'], $options);
185
+ } else {
186
+ $this->ravenClient->captureMessage($record['formatted'], array(), $options);
187
+ }
188
+
189
+ if ($previousUserContext !== false) {
190
+ $this->ravenClient->user_context($previousUserContext);
191
+ }
192
+ }
193
+
194
+ /**
195
+ * {@inheritDoc}
196
+ */
197
+ protected function getDefaultFormatter()
198
+ {
199
+ return new LineFormatter('[%channel%] %message%');
200
+ }
201
+
202
+ /**
203
+ * Gets the default formatter for the logs generated by handleBatch().
204
+ *
205
+ * @return FormatterInterface
206
+ */
207
+ protected function getDefaultBatchFormatter()
208
+ {
209
+ return new LineFormatter();
210
+ }
211
+
212
+ /**
213
+ * Gets extra parameters supported by Raven that can be found in "extra" and "context"
214
+ *
215
+ * @return array
216
+ */
217
+ protected function getExtraParameters()
218
+ {
219
+ return array('contexts', 'checksum', 'release', 'event_id');
220
+ }
221
+
222
+ /**
223
+ * @param string $value
224
+ * @return self
225
+ */
226
+ public function setRelease($value)
227
+ {
228
+ $this->release = $value;
229
+
230
+ return $this;
231
+ }
232
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\LineFormatter;
15
+ use Monolog\Logger;
16
+
17
+ /**
18
+ * Logs to a Redis key using rpush
19
+ *
20
+ * usage example:
21
+ *
22
+ * $log = new Logger('application');
23
+ * $redis = new RedisHandler(new Predis\Client("tcp://localhost:6379"), "logs", "prod");
24
+ * $log->pushHandler($redis);
25
+ *
26
+ * @author Thomas Tourlourat <thomas@tourlourat.com>
27
+ */
28
+ class RedisHandler extends AbstractProcessingHandler
29
+ {
30
+ private $redisClient;
31
+ private $redisKey;
32
+ protected $capSize;
33
+
34
+ /**
35
+ * @param \Predis\Client|\Redis $redis The redis instance
36
+ * @param string $key The key name to push records to
37
+ * @param int $level The minimum logging level at which this handler will be triggered
38
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
39
+ * @param int $capSize Number of entries to limit list size to
40
+ */
41
+ public function __construct($redis, $key, $level = Logger::DEBUG, $bubble = true, $capSize = false)
42
+ {
43
+ if (!(($redis instanceof \Predis\Client) || ($redis instanceof \Redis))) {
44
+ throw new \InvalidArgumentException('Predis\Client or Redis instance required');
45
+ }
46
+
47
+ $this->redisClient = $redis;
48
+ $this->redisKey = $key;
49
+ $this->capSize = $capSize;
50
+
51
+ parent::__construct($level, $bubble);
52
+ }
53
+
54
+ /**
55
+ * {@inheritDoc}
56
+ */
57
+ protected function write(array $record)
58
+ {
59
+ if ($this->capSize) {
60
+ $this->writeCapped($record);
61
+ } else {
62
+ $this->redisClient->rpush($this->redisKey, $record["formatted"]);
63
+ }
64
+ }
65
+
66
+ /**
67
+ * Write and cap the collection
68
+ * Writes the record to the redis list and caps its
69
+ *
70
+ * @param array $record associative record array
71
+ * @return void
72
+ */
73
+ protected function writeCapped(array $record)
74
+ {
75
+ if ($this->redisClient instanceof \Redis) {
76
+ $this->redisClient->multi()
77
+ ->rpush($this->redisKey, $record["formatted"])
78
+ ->ltrim($this->redisKey, -$this->capSize, -1)
79
+ ->exec();
80
+ } else {
81
+ $redisKey = $this->redisKey;
82
+ $capSize = $this->capSize;
83
+ $this->redisClient->transaction(function ($tx) use ($record, $redisKey, $capSize) {
84
+ $tx->rpush($redisKey, $record["formatted"]);
85
+ $tx->ltrim($redisKey, -$capSize, -1);
86
+ });
87
+ }
88
+ }
89
+
90
+ /**
91
+ * {@inheritDoc}
92
+ */
93
+ protected function getDefaultFormatter()
94
+ {
95
+ return new LineFormatter();
96
+ }
97
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use RollbarNotifier;
15
+ use Exception;
16
+ use Monolog\Logger;
17
+
18
+ /**
19
+ * Sends errors to Rollbar
20
+ *
21
+ * If the context data contains a `payload` key, that is used as an array
22
+ * of payload options to RollbarNotifier's report_message/report_exception methods.
23
+ *
24
+ * Rollbar's context info will contain the context + extra keys from the log record
25
+ * merged, and then on top of that a few keys:
26
+ *
27
+ * - level (rollbar level name)
28
+ * - monolog_level (monolog level name, raw level, as rollbar only has 5 but monolog 8)
29
+ * - channel
30
+ * - datetime (unix timestamp)
31
+ *
32
+ * @author Paul Statezny <paulstatezny@gmail.com>
33
+ */
34
+ class RollbarHandler extends AbstractProcessingHandler
35
+ {
36
+ /**
37
+ * Rollbar notifier
38
+ *
39
+ * @var RollbarNotifier
40
+ */
41
+ protected $rollbarNotifier;
42
+
43
+ protected $levelMap = array(
44
+ Logger::DEBUG => 'debug',
45
+ Logger::INFO => 'info',
46
+ Logger::NOTICE => 'info',
47
+ Logger::WARNING => 'warning',
48
+ Logger::ERROR => 'error',
49
+ Logger::CRITICAL => 'critical',
50
+ Logger::ALERT => 'critical',
51
+ Logger::EMERGENCY => 'critical',
52
+ );
53
+
54
+ /**
55
+ * Records whether any log records have been added since the last flush of the rollbar notifier
56
+ *
57
+ * @var bool
58
+ */
59
+ private $hasRecords = false;
60
+
61
+ protected $initialized = false;
62
+
63
+ /**
64
+ * @param RollbarNotifier $rollbarNotifier RollbarNotifier object constructed with valid token
65
+ * @param int $level The minimum logging level at which this handler will be triggered
66
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
67
+ */
68
+ public function __construct(RollbarNotifier $rollbarNotifier, $level = Logger::ERROR, $bubble = true)
69
+ {
70
+ $this->rollbarNotifier = $rollbarNotifier;
71
+
72
+ parent::__construct($level, $bubble);
73
+ }
74
+
75
+ /**
76
+ * {@inheritdoc}
77
+ */
78
+ protected function write(array $record)
79
+ {
80
+ if (!$this->initialized) {
81
+ // __destructor() doesn't get called on Fatal errors
82
+ register_shutdown_function(array($this, 'close'));
83
+ $this->initialized = true;
84
+ }
85
+
86
+ $context = $record['context'];
87
+ $payload = array();
88
+ if (isset($context['payload'])) {
89
+ $payload = $context['payload'];
90
+ unset($context['payload']);
91
+ }
92
+ $context = array_merge($context, $record['extra'], array(
93
+ 'level' => $this->levelMap[$record['level']],
94
+ 'monolog_level' => $record['level_name'],
95
+ 'channel' => $record['channel'],
96
+ 'datetime' => $record['datetime']->format('U'),
97
+ ));
98
+
99
+ if (isset($context['exception']) && $context['exception'] instanceof Exception) {
100
+ $payload['level'] = $context['level'];
101
+ $exception = $context['exception'];
102
+ unset($context['exception']);
103
+
104
+ $this->rollbarNotifier->report_exception($exception, $context, $payload);
105
+ } else {
106
+ $this->rollbarNotifier->report_message(
107
+ $record['message'],
108
+ $context['level'],
109
+ $context,
110
+ $payload
111
+ );
112
+ }
113
+
114
+ $this->hasRecords = true;
115
+ }
116
+
117
+ public function flush()
118
+ {
119
+ if ($this->hasRecords) {
120
+ $this->rollbarNotifier->flush();
121
+ $this->hasRecords = false;
122
+ }
123
+ }
124
+
125
+ /**
126
+ * {@inheritdoc}
127
+ */
128
+ public function close()
129
+ {
130
+ $this->flush();
131
+ }
132
+
133
+ /**
134
+ * {@inheritdoc}
135
+ */
136
+ public function reset()
137
+ {
138
+ $this->flush();
139
+
140
+ parent::reset();
141
+ }
142
+
143
+
144
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Stores logs to files that are rotated every day and a limited number of files are kept.
18
+ *
19
+ * This rotation is only intended to be used as a workaround. Using logrotate to
20
+ * handle the rotation is strongly encouraged when you can use it.
21
+ *
22
+ * @author Christophe Coevoet <stof@notk.org>
23
+ * @author Jordi Boggiano <j.boggiano@seld.be>
24
+ */
25
+ class RotatingFileHandler extends StreamHandler
26
+ {
27
+ const FILE_PER_DAY = 'Y-m-d';
28
+ const FILE_PER_MONTH = 'Y-m';
29
+ const FILE_PER_YEAR = 'Y';
30
+
31
+ protected $filename;
32
+ protected $maxFiles;
33
+ protected $mustRotate;
34
+ protected $nextRotation;
35
+ protected $filenameFormat;
36
+ protected $dateFormat;
37
+
38
+ /**
39
+ * @param string $filename
40
+ * @param int $maxFiles The maximal amount of files to keep (0 means unlimited)
41
+ * @param int $level The minimum logging level at which this handler will be triggered
42
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
43
+ * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write)
44
+ * @param bool $useLocking Try to lock log file before doing any writes
45
+ */
46
+ public function __construct($filename, $maxFiles = 0, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false)
47
+ {
48
+ $this->filename = $filename;
49
+ $this->maxFiles = (int) $maxFiles;
50
+ $this->nextRotation = new \DateTime('tomorrow');
51
+ $this->filenameFormat = '{filename}-{date}';
52
+ $this->dateFormat = 'Y-m-d';
53
+
54
+ parent::__construct($this->getTimedFilename(), $level, $bubble, $filePermission, $useLocking);
55
+ }
56
+
57
+ /**
58
+ * {@inheritdoc}
59
+ */
60
+ public function close()
61
+ {
62
+ parent::close();
63
+
64
+ if (true === $this->mustRotate) {
65
+ $this->rotate();
66
+ }
67
+ }
68
+
69
+ /**
70
+ * {@inheritdoc}
71
+ */
72
+ public function reset()
73
+ {
74
+ parent::reset();
75
+
76
+ if (true === $this->mustRotate) {
77
+ $this->rotate();
78
+ }
79
+ }
80
+
81
+ public function setFilenameFormat($filenameFormat, $dateFormat)
82
+ {
83
+ if (!preg_match('{^Y(([/_.-]?m)([/_.-]?d)?)?$}', $dateFormat)) {
84
+ trigger_error(
85
+ 'Invalid date format - format must be one of '.
86
+ 'RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), RotatingFileHandler::FILE_PER_MONTH ("Y-m") '.
87
+ 'or RotatingFileHandler::FILE_PER_YEAR ("Y"), or you can set one of the '.
88
+ 'date formats using slashes, underscores and/or dots instead of dashes.',
89
+ E_USER_DEPRECATED
90
+ );
91
+ }
92
+ if (substr_count($filenameFormat, '{date}') === 0) {
93
+ trigger_error(
94
+ 'Invalid filename format - format should contain at least `{date}`, because otherwise rotating is impossible.',
95
+ E_USER_DEPRECATED
96
+ );
97
+ }
98
+ $this->filenameFormat = $filenameFormat;
99
+ $this->dateFormat = $dateFormat;
100
+ $this->url = $this->getTimedFilename();
101
+ $this->close();
102
+ }
103
+
104
+ /**
105
+ * {@inheritdoc}
106
+ */
107
+ protected function write(array $record)
108
+ {
109
+ // on the first record written, if the log is new, we should rotate (once per day)
110
+ if (null === $this->mustRotate) {
111
+ $this->mustRotate = !file_exists($this->url);
112
+ }
113
+
114
+ if ($this->nextRotation < $record['datetime']) {
115
+ $this->mustRotate = true;
116
+ $this->close();
117
+ }
118
+
119
+ parent::write($record);
120
+ }
121
+
122
+ /**
123
+ * Rotates the files.
124
+ */
125
+ protected function rotate()
126
+ {
127
+ // update filename
128
+ $this->url = $this->getTimedFilename();
129
+ $this->nextRotation = new \DateTime('tomorrow');
130
+
131
+ // skip GC of old logs if files are unlimited
132
+ if (0 === $this->maxFiles) {
133
+ return;
134
+ }
135
+
136
+ $logFiles = glob($this->getGlobPattern());
137
+ if ($this->maxFiles >= count($logFiles)) {
138
+ // no files to remove
139
+ return;
140
+ }
141
+
142
+ // Sorting the files by name to remove the older ones
143
+ usort($logFiles, function ($a, $b) {
144
+ return strcmp($b, $a);
145
+ });
146
+
147
+ foreach (array_slice($logFiles, $this->maxFiles) as $file) {
148
+ if (is_writable($file)) {
149
+ // suppress errors here as unlink() might fail if two processes
150
+ // are cleaning up/rotating at the same time
151
+ set_error_handler(function ($errno, $errstr, $errfile, $errline) {});
152
+ unlink($file);
153
+ restore_error_handler();
154
+ }
155
+ }
156
+
157
+ $this->mustRotate = false;
158
+ }
159
+
160
+ protected function getTimedFilename()
161
+ {
162
+ $fileInfo = pathinfo($this->filename);
163
+ $timedFilename = str_replace(
164
+ array('{filename}', '{date}'),
165
+ array($fileInfo['filename'], date($this->dateFormat)),
166
+ $fileInfo['dirname'] . '/' . $this->filenameFormat
167
+ );
168
+
169
+ if (!empty($fileInfo['extension'])) {
170
+ $timedFilename .= '.'.$fileInfo['extension'];
171
+ }
172
+
173
+ return $timedFilename;
174
+ }
175
+
176
+ protected function getGlobPattern()
177
+ {
178
+ $fileInfo = pathinfo($this->filename);
179
+ $glob = str_replace(
180
+ array('{filename}', '{date}'),
181
+ array($fileInfo['filename'], '[0-9][0-9][0-9][0-9]*'),
182
+ $fileInfo['dirname'] . '/' . $this->filenameFormat
183
+ );
184
+ if (!empty($fileInfo['extension'])) {
185
+ $glob .= '.'.$fileInfo['extension'];
186
+ }
187
+
188
+ return $glob;
189
+ }
190
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php ADDED
@@ -0,0 +1,82 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ /**
15
+ * Sampling handler
16
+ *
17
+ * A sampled event stream can be useful for logging high frequency events in
18
+ * a production environment where you only need an idea of what is happening
19
+ * and are not concerned with capturing every occurrence. Since the decision to
20
+ * handle or not handle a particular event is determined randomly, the
21
+ * resulting sampled log is not guaranteed to contain 1/N of the events that
22
+ * occurred in the application, but based on the Law of large numbers, it will
23
+ * tend to be close to this ratio with a large number of attempts.
24
+ *
25
+ * @author Bryan Davis <bd808@wikimedia.org>
26
+ * @author Kunal Mehta <legoktm@gmail.com>
27
+ */
28
+ class SamplingHandler extends AbstractHandler
29
+ {
30
+ /**
31
+ * @var callable|HandlerInterface $handler
32
+ */
33
+ protected $handler;
34
+
35
+ /**
36
+ * @var int $factor
37
+ */
38
+ protected $factor;
39
+
40
+ /**
41
+ * @param callable|HandlerInterface $handler Handler or factory callable($record, $fingersCrossedHandler).
42
+ * @param int $factor Sample factor
43
+ */
44
+ public function __construct($handler, $factor)
45
+ {
46
+ parent::__construct();
47
+ $this->handler = $handler;
48
+ $this->factor = $factor;
49
+
50
+ if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
51
+ throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
52
+ }
53
+ }
54
+
55
+ public function isHandling(array $record)
56
+ {
57
+ return $this->handler->isHandling($record);
58
+ }
59
+
60
+ public function handle(array $record)
61
+ {
62
+ if ($this->isHandling($record) && mt_rand(1, $this->factor) === 1) {
63
+ // The same logic as in FingersCrossedHandler
64
+ if (!$this->handler instanceof HandlerInterface) {
65
+ $this->handler = call_user_func($this->handler, $record, $this);
66
+ if (!$this->handler instanceof HandlerInterface) {
67
+ throw new \RuntimeException("The factory callable should return a HandlerInterface");
68
+ }
69
+ }
70
+
71
+ if ($this->processors) {
72
+ foreach ($this->processors as $processor) {
73
+ $record = call_user_func($processor, $record);
74
+ }
75
+ }
76
+
77
+ $this->handler->handle($record);
78
+ }
79
+
80
+ return false === $this->bubble;
81
+ }
82
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php ADDED
@@ -0,0 +1,294 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler\Slack;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Formatter\NormalizerFormatter;
16
+ use Monolog\Formatter\FormatterInterface;
17
+
18
+ /**
19
+ * Slack record utility helping to log to Slack webhooks or API.
20
+ *
21
+ * @author Greg Kedzierski <greg@gregkedzierski.com>
22
+ * @author Haralan Dobrev <hkdobrev@gmail.com>
23
+ * @see https://api.slack.com/incoming-webhooks
24
+ * @see https://api.slack.com/docs/message-attachments
25
+ */
26
+ class SlackRecord
27
+ {
28
+ const COLOR_DANGER = 'danger';
29
+
30
+ const COLOR_WARNING = 'warning';
31
+
32
+ const COLOR_GOOD = 'good';
33
+
34
+ const COLOR_DEFAULT = '#e3e4e6';
35
+
36
+ /**
37
+ * Slack channel (encoded ID or name)
38
+ * @var string|null
39
+ */
40
+ private $channel;
41
+
42
+ /**
43
+ * Name of a bot
44
+ * @var string|null
45
+ */
46
+ private $username;
47
+
48
+ /**
49
+ * User icon e.g. 'ghost', 'http://example.com/user.png'
50
+ * @var string
51
+ */
52
+ private $userIcon;
53
+
54
+ /**
55
+ * Whether the message should be added to Slack as attachment (plain text otherwise)
56
+ * @var bool
57
+ */
58
+ private $useAttachment;
59
+
60
+ /**
61
+ * Whether the the context/extra messages added to Slack as attachments are in a short style
62
+ * @var bool
63
+ */
64
+ private $useShortAttachment;
65
+
66
+ /**
67
+ * Whether the attachment should include context and extra data
68
+ * @var bool
69
+ */
70
+ private $includeContextAndExtra;
71
+
72
+ /**
73
+ * Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2']
74
+ * @var array
75
+ */
76
+ private $excludeFields;
77
+
78
+ /**
79
+ * @var FormatterInterface
80
+ */
81
+ private $formatter;
82
+
83
+ /**
84
+ * @var NormalizerFormatter
85
+ */
86
+ private $normalizerFormatter;
87
+
88
+ public function __construct($channel = null, $username = null, $useAttachment = true, $userIcon = null, $useShortAttachment = false, $includeContextAndExtra = false, array $excludeFields = array(), FormatterInterface $formatter = null)
89
+ {
90
+ $this->channel = $channel;
91
+ $this->username = $username;
92
+ $this->userIcon = trim($userIcon, ':');
93
+ $this->useAttachment = $useAttachment;
94
+ $this->useShortAttachment = $useShortAttachment;
95
+ $this->includeContextAndExtra = $includeContextAndExtra;
96
+ $this->excludeFields = $excludeFields;
97
+ $this->formatter = $formatter;
98
+
99
+ if ($this->includeContextAndExtra) {
100
+ $this->normalizerFormatter = new NormalizerFormatter();
101
+ }
102
+ }
103
+
104
+ public function getSlackData(array $record)
105
+ {
106
+ $dataArray = array();
107
+ $record = $this->excludeFields($record);
108
+
109
+ if ($this->username) {
110
+ $dataArray['username'] = $this->username;
111
+ }
112
+
113
+ if ($this->channel) {
114
+ $dataArray['channel'] = $this->channel;
115
+ }
116
+
117
+ if ($this->formatter && !$this->useAttachment) {
118
+ $message = $this->formatter->format($record);
119
+ } else {
120
+ $message = $record['message'];
121
+ }
122
+
123
+ if ($this->useAttachment) {
124
+ $attachment = array(
125
+ 'fallback' => $message,
126
+ 'text' => $message,
127
+ 'color' => $this->getAttachmentColor($record['level']),
128
+ 'fields' => array(),
129
+ 'mrkdwn_in' => array('fields'),
130
+ 'ts' => $record['datetime']->getTimestamp()
131
+ );
132
+
133
+ if ($this->useShortAttachment) {
134
+ $attachment['title'] = $record['level_name'];
135
+ } else {
136
+ $attachment['title'] = 'Message';
137
+ $attachment['fields'][] = $this->generateAttachmentField('Level', $record['level_name']);
138
+ }
139
+
140
+
141
+ if ($this->includeContextAndExtra) {
142
+ foreach (array('extra', 'context') as $key) {
143
+ if (empty($record[$key])) {
144
+ continue;
145
+ }
146
+
147
+ if ($this->useShortAttachment) {
148
+ $attachment['fields'][] = $this->generateAttachmentField(
149
+ $key,
150
+ $record[$key]
151
+ );
152
+ } else {
153
+ // Add all extra fields as individual fields in attachment
154
+ $attachment['fields'] = array_merge(
155
+ $attachment['fields'],
156
+ $this->generateAttachmentFields($record[$key])
157
+ );
158
+ }
159
+ }
160
+ }
161
+
162
+ $dataArray['attachments'] = array($attachment);
163
+ } else {
164
+ $dataArray['text'] = $message;
165
+ }
166
+
167
+ if ($this->userIcon) {
168
+ if (filter_var($this->userIcon, FILTER_VALIDATE_URL)) {
169
+ $dataArray['icon_url'] = $this->userIcon;
170
+ } else {
171
+ $dataArray['icon_emoji'] = ":{$this->userIcon}:";
172
+ }
173
+ }
174
+
175
+ return $dataArray;
176
+ }
177
+
178
+ /**
179
+ * Returned a Slack message attachment color associated with
180
+ * provided level.
181
+ *
182
+ * @param int $level
183
+ * @return string
184
+ */
185
+ public function getAttachmentColor($level)
186
+ {
187
+ switch (true) {
188
+ case $level >= Logger::ERROR:
189
+ return self::COLOR_DANGER;
190
+ case $level >= Logger::WARNING:
191
+ return self::COLOR_WARNING;
192
+ case $level >= Logger::INFO:
193
+ return self::COLOR_GOOD;
194
+ default:
195
+ return self::COLOR_DEFAULT;
196
+ }
197
+ }
198
+
199
+ /**
200
+ * Stringifies an array of key/value pairs to be used in attachment fields
201
+ *
202
+ * @param array $fields
203
+ *
204
+ * @return string
205
+ */
206
+ public function stringify($fields)
207
+ {
208
+ $normalized = $this->normalizerFormatter->format($fields);
209
+ $prettyPrintFlag = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 128;
210
+
211
+ $hasSecondDimension = count(array_filter($normalized, 'is_array'));
212
+ $hasNonNumericKeys = !count(array_filter(array_keys($normalized), 'is_numeric'));
213
+
214
+ return $hasSecondDimension || $hasNonNumericKeys
215
+ ? json_encode($normalized, $prettyPrintFlag)
216
+ : json_encode($normalized);
217
+ }
218
+
219
+ /**
220
+ * Sets the formatter
221
+ *
222
+ * @param FormatterInterface $formatter
223
+ */
224
+ public function setFormatter(FormatterInterface $formatter)
225
+ {
226
+ $this->formatter = $formatter;
227
+ }
228
+
229
+ /**
230
+ * Generates attachment field
231
+ *
232
+ * @param string $title
233
+ * @param string|array $value
234
+ *
235
+ * @return array
236
+ */
237
+ private function generateAttachmentField($title, $value)
238
+ {
239
+ $value = is_array($value)
240
+ ? sprintf('```%s```', $this->stringify($value))
241
+ : $value;
242
+
243
+ return array(
244
+ 'title' => ucfirst($title),
245
+ 'value' => $value,
246
+ 'short' => false
247
+ );
248
+ }
249
+
250
+ /**
251
+ * Generates a collection of attachment fields from array
252
+ *
253
+ * @param array $data
254
+ *
255
+ * @return array
256
+ */
257
+ private function generateAttachmentFields(array $data)
258
+ {
259
+ $fields = array();
260
+ foreach ($this->normalizerFormatter->format($data) as $key => $value) {
261
+ $fields[] = $this->generateAttachmentField($key, $value);
262
+ }
263
+
264
+ return $fields;
265
+ }
266
+
267
+ /**
268
+ * Get a copy of record with fields excluded according to $this->excludeFields
269
+ *
270
+ * @param array $record
271
+ *
272
+ * @return array
273
+ */
274
+ private function excludeFields(array $record)
275
+ {
276
+ foreach ($this->excludeFields as $field) {
277
+ $keys = explode('.', $field);
278
+ $node = &$record;
279
+ $lastKey = end($keys);
280
+ foreach ($keys as $key) {
281
+ if (!isset($node[$key])) {
282
+ break;
283
+ }
284
+ if ($lastKey === $key) {
285
+ unset($node[$key]);
286
+ break;
287
+ }
288
+ $node = &$node[$key];
289
+ }
290
+ }
291
+
292
+ return $record;
293
+ }
294
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php ADDED
@@ -0,0 +1,220 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\FormatterInterface;
15
+ use Monolog\Logger;
16
+ use Monolog\Handler\Slack\SlackRecord;
17
+
18
+ /**
19
+ * Sends notifications through Slack API
20
+ *
21
+ * @author Greg Kedzierski <greg@gregkedzierski.com>
22
+ * @see https://api.slack.com/
23
+ */
24
+ class SlackHandler extends SocketHandler
25
+ {
26
+ /**
27
+ * Slack API token
28
+ * @var string
29
+ */
30
+ private $token;
31
+
32
+ /**
33
+ * Instance of the SlackRecord util class preparing data for Slack API.
34
+ * @var SlackRecord
35
+ */
36
+ private $slackRecord;
37
+
38
+ /**
39
+ * @param string $token Slack API token
40
+ * @param string $channel Slack channel (encoded ID or name)
41
+ * @param string|null $username Name of a bot
42
+ * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise)
43
+ * @param string|null $iconEmoji The emoji name to use (or null)
44
+ * @param int $level The minimum logging level at which this handler will be triggered
45
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
46
+ * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style
47
+ * @param bool $includeContextAndExtra Whether the attachment should include context and extra data
48
+ * @param array $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2']
49
+ * @throws MissingExtensionException If no OpenSSL PHP extension configured
50
+ */
51
+ public function __construct($token, $channel, $username = null, $useAttachment = true, $iconEmoji = null, $level = Logger::CRITICAL, $bubble = true, $useShortAttachment = false, $includeContextAndExtra = false, array $excludeFields = array())
52
+ {
53
+ if (!extension_loaded('openssl')) {
54
+ throw new MissingExtensionException('The OpenSSL PHP extension is required to use the SlackHandler');
55
+ }
56
+
57
+ parent::__construct('ssl://slack.com:443', $level, $bubble);
58
+
59
+ $this->slackRecord = new SlackRecord(
60
+ $channel,
61
+ $username,
62
+ $useAttachment,
63
+ $iconEmoji,
64
+ $useShortAttachment,
65
+ $includeContextAndExtra,
66
+ $excludeFields,
67
+ $this->formatter
68
+ );
69
+
70
+ $this->token = $token;
71
+ }
72
+
73
+ public function getSlackRecord()
74
+ {
75
+ return $this->slackRecord;
76
+ }
77
+
78
+ public function getToken()
79
+ {
80
+ return $this->token;
81
+ }
82
+
83
+ /**
84
+ * {@inheritdoc}
85
+ *
86
+ * @param array $record
87
+ * @return string
88
+ */
89
+ protected function generateDataStream($record)
90
+ {
91
+ $content = $this->buildContent($record);
92
+
93
+ return $this->buildHeader($content) . $content;
94
+ }
95
+
96
+ /**
97
+ * Builds the body of API call
98
+ *
99
+ * @param array $record
100
+ * @return string
101
+ */
102
+ private function buildContent($record)
103
+ {
104
+ $dataArray = $this->prepareContentData($record);
105
+
106
+ return http_build_query($dataArray);
107
+ }
108
+
109
+ /**
110
+ * Prepares content data
111
+ *
112
+ * @param array $record
113
+ * @return array
114
+ */
115
+ protected function prepareContentData($record)
116
+ {
117
+ $dataArray = $this->slackRecord->getSlackData($record);
118
+ $dataArray['token'] = $this->token;
119
+
120
+ if (!empty($dataArray['attachments'])) {
121
+ $dataArray['attachments'] = json_encode($dataArray['attachments']);
122
+ }
123
+
124
+ return $dataArray;
125
+ }
126
+
127
+ /**
128
+ * Builds the header of the API Call
129
+ *
130
+ * @param string $content
131
+ * @return string
132
+ */
133
+ private function buildHeader($content)
134
+ {
135
+ $header = "POST /api/chat.postMessage HTTP/1.1\r\n";
136
+ $header .= "Host: slack.com\r\n";
137
+ $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
138
+ $header .= "Content-Length: " . strlen($content) . "\r\n";
139
+ $header .= "\r\n";
140
+
141
+ return $header;
142
+ }
143
+
144
+ /**
145
+ * {@inheritdoc}
146
+ *
147
+ * @param array $record
148
+ */
149
+ protected function write(array $record)
150
+ {
151
+ parent::write($record);
152
+ $this->finalizeWrite();
153
+ }
154
+
155
+ /**
156
+ * Finalizes the request by reading some bytes and then closing the socket
157
+ *
158
+ * If we do not read some but close the socket too early, slack sometimes
159
+ * drops the request entirely.
160
+ */
161
+ protected function finalizeWrite()
162
+ {
163
+ $res = $this->getResource();
164
+ if (is_resource($res)) {
165
+ @fread($res, 2048);
166
+ }
167
+ $this->closeSocket();
168
+ }
169
+
170
+ /**
171
+ * Returned a Slack message attachment color associated with
172
+ * provided level.
173
+ *
174
+ * @param int $level
175
+ * @return string
176
+ * @deprecated Use underlying SlackRecord instead
177
+ */
178
+ protected function getAttachmentColor($level)
179
+ {
180
+ trigger_error(
181
+ 'SlackHandler::getAttachmentColor() is deprecated. Use underlying SlackRecord instead.',
182
+ E_USER_DEPRECATED
183
+ );
184
+
185
+ return $this->slackRecord->getAttachmentColor($level);
186
+ }
187
+
188
+ /**
189
+ * Stringifies an array of key/value pairs to be used in attachment fields
190
+ *
191
+ * @param array $fields
192
+ * @return string
193
+ * @deprecated Use underlying SlackRecord instead
194
+ */
195
+ protected function stringify($fields)
196
+ {
197
+ trigger_error(
198
+ 'SlackHandler::stringify() is deprecated. Use underlying SlackRecord instead.',
199
+ E_USER_DEPRECATED
200
+ );
201
+
202
+ return $this->slackRecord->stringify($fields);
203
+ }
204
+
205
+ public function setFormatter(FormatterInterface $formatter)
206
+ {
207
+ parent::setFormatter($formatter);
208
+ $this->slackRecord->setFormatter($formatter);
209
+
210
+ return $this;
211
+ }
212
+
213
+ public function getFormatter()
214
+ {
215
+ $formatter = parent::getFormatter();
216
+ $this->slackRecord->setFormatter($formatter);
217
+
218
+ return $formatter;
219
+ }
220
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Formatter\FormatterInterface;
15
+ use Monolog\Logger;
16
+ use Monolog\Handler\Slack\SlackRecord;
17
+
18
+ /**
19
+ * Sends notifications through Slack Webhooks
20
+ *
21
+ * @author Haralan Dobrev <hkdobrev@gmail.com>
22
+ * @see https://api.slack.com/incoming-webhooks
23
+ */
24
+ class SlackWebhookHandler extends AbstractProcessingHandler
25
+ {
26
+ /**
27
+ * Slack Webhook token
28
+ * @var string
29
+ */
30
+ private $webhookUrl;
31
+
32
+ /**
33
+ * Instance of the SlackRecord util class preparing data for Slack API.
34
+ * @var SlackRecord
35
+ */
36
+ private $slackRecord;
37
+
38
+ /**
39
+ * @param string $webhookUrl Slack Webhook URL
40
+ * @param string|null $channel Slack channel (encoded ID or name)
41
+ * @param string|null $username Name of a bot
42
+ * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise)
43
+ * @param string|null $iconEmoji The emoji name to use (or null)
44
+ * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style
45
+ * @param bool $includeContextAndExtra Whether the attachment should include context and extra data
46
+ * @param int $level The minimum logging level at which this handler will be triggered
47
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
48
+ * @param array $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2']
49
+ */
50
+ public function __construct($webhookUrl, $channel = null, $username = null, $useAttachment = true, $iconEmoji = null, $useShortAttachment = false, $includeContextAndExtra = false, $level = Logger::CRITICAL, $bubble = true, array $excludeFields = array())
51
+ {
52
+ parent::__construct($level, $bubble);
53
+
54
+ $this->webhookUrl = $webhookUrl;
55
+
56
+ $this->slackRecord = new SlackRecord(
57
+ $channel,
58
+ $username,
59
+ $useAttachment,
60
+ $iconEmoji,
61
+ $useShortAttachment,
62
+ $includeContextAndExtra,
63
+ $excludeFields,
64
+ $this->formatter
65
+ );
66
+ }
67
+
68
+ public function getSlackRecord()
69
+ {
70
+ return $this->slackRecord;
71
+ }
72
+
73
+ public function getWebhookUrl()
74
+ {
75
+ return $this->webhookUrl;
76
+ }
77
+
78
+ /**
79
+ * {@inheritdoc}
80
+ *
81
+ * @param array $record
82
+ */
83
+ protected function write(array $record)
84
+ {
85
+ $postData = $this->slackRecord->getSlackData($record);
86
+ $postString = json_encode($postData);
87
+
88
+ $ch = curl_init();
89
+ $options = array(
90
+ CURLOPT_URL => $this->webhookUrl,
91
+ CURLOPT_POST => true,
92
+ CURLOPT_RETURNTRANSFER => true,
93
+ CURLOPT_HTTPHEADER => array('Content-type: application/json'),
94
+ CURLOPT_POSTFIELDS => $postString
95
+ );
96
+ if (defined('CURLOPT_SAFE_UPLOAD')) {
97
+ $options[CURLOPT_SAFE_UPLOAD] = true;
98
+ }
99
+
100
+ curl_setopt_array($ch, $options);
101
+
102
+ Curl\Util::execute($ch);
103
+ }
104
+
105
+ public function setFormatter(FormatterInterface $formatter)
106
+ {
107
+ parent::setFormatter($formatter);
108
+ $this->slackRecord->setFormatter($formatter);
109
+
110
+ return $this;
111
+ }
112
+
113
+ public function getFormatter()
114
+ {
115
+ $formatter = parent::getFormatter();
116
+ $this->slackRecord->setFormatter($formatter);
117
+
118
+ return $formatter;
119
+ }
120
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php ADDED
@@ -0,0 +1,80 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Sends notifications through Slack's Slackbot
18
+ *
19
+ * @author Haralan Dobrev <hkdobrev@gmail.com>
20
+ * @see https://slack.com/apps/A0F81R8ET-slackbot
21
+ */
22
+ class SlackbotHandler extends AbstractProcessingHandler
23
+ {
24
+ /**
25
+ * The slug of the Slack team
26
+ * @var string
27
+ */
28
+ private $slackTeam;
29
+
30
+ /**
31
+ * Slackbot token
32
+ * @var string
33
+ */
34
+ private $token;
35
+
36
+ /**
37
+ * Slack channel name
38
+ * @var string
39
+ */
40
+ private $channel;
41
+
42
+ /**
43
+ * @param string $slackTeam Slack team slug
44
+ * @param string $token Slackbot token
45
+ * @param string $channel Slack channel (encoded ID or name)
46
+ * @param int $level The minimum logging level at which this handler will be triggered
47
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
48
+ */
49
+ public function __construct($slackTeam, $token, $channel, $level = Logger::CRITICAL, $bubble = true)
50
+ {
51
+ parent::__construct($level, $bubble);
52
+
53
+ $this->slackTeam = $slackTeam;
54
+ $this->token = $token;
55
+ $this->channel = $channel;
56
+ }
57
+
58
+ /**
59
+ * {@inheritdoc}
60
+ *
61
+ * @param array $record
62
+ */
63
+ protected function write(array $record)
64
+ {
65
+ $slackbotUrl = sprintf(
66
+ 'https://%s.slack.com/services/hooks/slackbot?token=%s&channel=%s',
67
+ $this->slackTeam,
68
+ $this->token,
69
+ $this->channel
70
+ );
71
+
72
+ $ch = curl_init();
73
+ curl_setopt($ch, CURLOPT_URL, $slackbotUrl);
74
+ curl_setopt($ch, CURLOPT_POST, true);
75
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
76
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $record['message']);
77
+
78
+ Curl\Util::execute($ch);
79
+ }
80
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php ADDED
@@ -0,0 +1,385 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Stores to any socket - uses fsockopen() or pfsockopen().
18
+ *
19
+ * @author Pablo de Leon Belloc <pablolb@gmail.com>
20
+ * @see http://php.net/manual/en/function.fsockopen.php
21
+ */
22
+ class SocketHandler extends AbstractProcessingHandler
23
+ {
24
+ private $connectionString;
25
+ private $connectionTimeout;
26
+ private $resource;
27
+ private $timeout = 0;
28
+ private $writingTimeout = 10;
29
+ private $lastSentBytes = null;
30
+ private $chunkSize = null;
31
+ private $persistent = false;
32
+ private $errno;
33
+ private $errstr;
34
+ private $lastWritingAt;
35
+
36
+ /**
37
+ * @param string $connectionString Socket connection string
38
+ * @param int $level The minimum logging level at which this handler will be triggered
39
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
40
+ */
41
+ public function __construct($connectionString, $level = Logger::DEBUG, $bubble = true)
42
+ {
43
+ parent::__construct($level, $bubble);
44
+ $this->connectionString = $connectionString;
45
+ $this->connectionTimeout = (float) ini_get('default_socket_timeout');
46
+ }
47
+
48
+ /**
49
+ * Connect (if necessary) and write to the socket
50
+ *
51
+ * @param array $record
52
+ *
53
+ * @throws \UnexpectedValueException
54
+ * @throws \RuntimeException
55
+ */
56
+ protected function write(array $record)
57
+ {
58
+ $this->connectIfNotConnected();
59
+ $data = $this->generateDataStream($record);
60
+ $this->writeToSocket($data);
61
+ }
62
+
63
+ /**
64
+ * We will not close a PersistentSocket instance so it can be reused in other requests.
65
+ */
66
+ public function close()
67
+ {
68
+ if (!$this->isPersistent()) {
69
+ $this->closeSocket();
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Close socket, if open
75
+ */
76
+ public function closeSocket()
77
+ {
78
+ if (is_resource($this->resource)) {
79
+ fclose($this->resource);
80
+ $this->resource = null;
81
+ }
82
+ }
83
+
84
+ /**
85
+ * Set socket connection to nbe persistent. It only has effect before the connection is initiated.
86
+ *
87
+ * @param bool $persistent
88
+ */
89
+ public function setPersistent($persistent)
90
+ {
91
+ $this->persistent = (bool) $persistent;
92
+ }
93
+
94
+ /**
95
+ * Set connection timeout. Only has effect before we connect.
96
+ *
97
+ * @param float $seconds
98
+ *
99
+ * @see http://php.net/manual/en/function.fsockopen.php
100
+ */
101
+ public function setConnectionTimeout($seconds)
102
+ {
103
+ $this->validateTimeout($seconds);
104
+ $this->connectionTimeout = (float) $seconds;
105
+ }
106
+
107
+ /**
108
+ * Set write timeout. Only has effect before we connect.
109
+ *
110
+ * @param float $seconds
111
+ *
112
+ * @see http://php.net/manual/en/function.stream-set-timeout.php
113
+ */
114
+ public function setTimeout($seconds)
115
+ {
116
+ $this->validateTimeout($seconds);
117
+ $this->timeout = (float) $seconds;
118
+ }
119
+
120
+ /**
121
+ * Set writing timeout. Only has effect during connection in the writing cycle.
122
+ *
123
+ * @param float $seconds 0 for no timeout
124
+ */
125
+ public function setWritingTimeout($seconds)
126
+ {
127
+ $this->validateTimeout($seconds);
128
+ $this->writingTimeout = (float) $seconds;
129
+ }
130
+
131
+ /**
132
+ * Set chunk size. Only has effect during connection in the writing cycle.
133
+ *
134
+ * @param float $bytes
135
+ */
136
+ public function setChunkSize($bytes)
137
+ {
138
+ $this->chunkSize = $bytes;
139
+ }
140
+
141
+ /**
142
+ * Get current connection string
143
+ *
144
+ * @return string
145
+ */
146
+ public function getConnectionString()
147
+ {
148
+ return $this->connectionString;
149
+ }
150
+
151
+ /**
152
+ * Get persistent setting
153
+ *
154
+ * @return bool
155
+ */
156
+ public function isPersistent()
157
+ {
158
+ return $this->persistent;
159
+ }
160
+
161
+ /**
162
+ * Get current connection timeout setting
163
+ *
164
+ * @return float
165
+ */
166
+ public function getConnectionTimeout()
167
+ {
168
+ return $this->connectionTimeout;
169
+ }
170
+
171
+ /**
172
+ * Get current in-transfer timeout
173
+ *
174
+ * @return float
175
+ */
176
+ public function getTimeout()
177
+ {
178
+ return $this->timeout;
179
+ }
180
+
181
+ /**
182
+ * Get current local writing timeout
183
+ *
184
+ * @return float
185
+ */
186
+ public function getWritingTimeout()
187
+ {
188
+ return $this->writingTimeout;
189
+ }
190
+
191
+ /**
192
+ * Get current chunk size
193
+ *
194
+ * @return float
195
+ */
196
+ public function getChunkSize()
197
+ {
198
+ return $this->chunkSize;
199
+ }
200
+
201
+ /**
202
+ * Check to see if the socket is currently available.
203
+ *
204
+ * UDP might appear to be connected but might fail when writing. See http://php.net/fsockopen for details.
205
+ *
206
+ * @return bool
207
+ */
208
+ public function isConnected()
209
+ {
210
+ return is_resource($this->resource)
211
+ && !feof($this->resource); // on TCP - other party can close connection.
212
+ }
213
+
214
+ /**
215
+ * Wrapper to allow mocking
216
+ */
217
+ protected function pfsockopen()
218
+ {
219
+ return @pfsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout);
220
+ }
221
+
222
+ /**
223
+ * Wrapper to allow mocking
224
+ */
225
+ protected function fsockopen()
226
+ {
227
+ return @fsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout);
228
+ }
229
+
230
+ /**
231
+ * Wrapper to allow mocking
232
+ *
233
+ * @see http://php.net/manual/en/function.stream-set-timeout.php
234
+ */
235
+ protected function streamSetTimeout()
236
+ {
237
+ $seconds = floor($this->timeout);
238
+ $microseconds = round(($this->timeout - $seconds) * 1e6);
239
+
240
+ return stream_set_timeout($this->resource, $seconds, $microseconds);
241
+ }
242
+
243
+ /**
244
+ * Wrapper to allow mocking
245
+ *
246
+ * @see http://php.net/manual/en/function.stream-set-chunk-size.php
247
+ */
248
+ protected function streamSetChunkSize()
249
+ {
250
+ return stream_set_chunk_size($this->resource, $this->chunkSize);
251
+ }
252
+
253
+ /**
254
+ * Wrapper to allow mocking
255
+ */
256
+ protected function fwrite($data)
257
+ {
258
+ return @fwrite($this->resource, $data);
259
+ }
260
+
261
+ /**
262
+ * Wrapper to allow mocking
263
+ */
264
+ protected function streamGetMetadata()
265
+ {
266
+ return stream_get_meta_data($this->resource);
267
+ }
268
+
269
+ private function validateTimeout($value)
270
+ {
271
+ $ok = filter_var($value, FILTER_VALIDATE_FLOAT);
272
+ if ($ok === false || $value < 0) {
273
+ throw new \InvalidArgumentException("Timeout must be 0 or a positive float (got $value)");
274
+ }
275
+ }
276
+
277
+ private function connectIfNotConnected()
278
+ {
279
+ if ($this->isConnected()) {
280
+ return;
281
+ }
282
+ $this->connect();
283
+ }
284
+
285
+ protected function generateDataStream($record)
286
+ {
287
+ return (string) $record['formatted'];
288
+ }
289
+
290
+ /**
291
+ * @return resource|null
292
+ */
293
+ protected function getResource()
294
+ {
295
+ return $this->resource;
296
+ }
297
+
298
+ private function connect()
299
+ {
300
+ $this->createSocketResource();
301
+ $this->setSocketTimeout();
302
+ $this->setStreamChunkSize();
303
+ }
304
+
305
+ private function createSocketResource()
306
+ {
307
+ if ($this->isPersistent()) {
308
+ $resource = $this->pfsockopen();
309
+ } else {
310
+ $resource = $this->fsockopen();
311
+ }
312
+ if (!$resource) {
313
+ throw new \UnexpectedValueException("Failed connecting to $this->connectionString ($this->errno: $this->errstr)");
314
+ }
315
+ $this->resource = $resource;
316
+ }
317
+
318
+ private function setSocketTimeout()
319
+ {
320
+ if (!$this->streamSetTimeout()) {
321
+ throw new \UnexpectedValueException("Failed setting timeout with stream_set_timeout()");
322
+ }
323
+ }
324
+
325
+ private function setStreamChunkSize()
326
+ {
327
+ if ($this->chunkSize && !$this->streamSetChunkSize()) {
328
+ throw new \UnexpectedValueException("Failed setting chunk size with stream_set_chunk_size()");
329
+ }
330
+ }
331
+
332
+ private function writeToSocket($data)
333
+ {
334
+ $length = strlen($data);
335
+ $sent = 0;
336
+ $this->lastSentBytes = $sent;
337
+ while ($this->isConnected() && $sent < $length) {
338
+ if (0 == $sent) {
339
+ $chunk = $this->fwrite($data);
340
+ } else {
341
+ $chunk = $this->fwrite(substr($data, $sent));
342
+ }
343
+ if ($chunk === false) {
344
+ throw new \RuntimeException("Could not write to socket");
345
+ }
346
+ $sent += $chunk;
347
+ $socketInfo = $this->streamGetMetadata();
348
+ if ($socketInfo['timed_out']) {
349
+ throw new \RuntimeException("Write timed-out");
350
+ }
351
+
352
+ if ($this->writingIsTimedOut($sent)) {
353
+ throw new \RuntimeException("Write timed-out, no data sent for `{$this->writingTimeout}` seconds, probably we got disconnected (sent $sent of $length)");
354
+ }
355
+ }
356
+ if (!$this->isConnected() && $sent < $length) {
357
+ throw new \RuntimeException("End-of-file reached, probably we got disconnected (sent $sent of $length)");
358
+ }
359
+ }
360
+
361
+ private function writingIsTimedOut($sent)
362
+ {
363
+ $writingTimeout = (int) floor($this->writingTimeout);
364
+ if (0 === $writingTimeout) {
365
+ return false;
366
+ }
367
+
368
+ if ($sent !== $this->lastSentBytes) {
369
+ $this->lastWritingAt = time();
370
+ $this->lastSentBytes = $sent;
371
+
372
+ return false;
373
+ } else {
374
+ usleep(100);
375
+ }
376
+
377
+ if ((time() - $this->lastWritingAt) >= $writingTimeout) {
378
+ $this->closeSocket();
379
+
380
+ return true;
381
+ }
382
+
383
+ return false;
384
+ }
385
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php ADDED
@@ -0,0 +1,176 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Stores to any stream resource
18
+ *
19
+ * Can be used to store into php://stderr, remote and local files, etc.
20
+ *
21
+ * @author Jordi Boggiano <j.boggiano@seld.be>
22
+ */
23
+ class StreamHandler extends AbstractProcessingHandler
24
+ {
25
+ protected $stream;
26
+ protected $url;
27
+ private $errorMessage;
28
+ protected $filePermission;
29
+ protected $useLocking;
30
+ private $dirCreated;
31
+
32
+ /**
33
+ * @param resource|string $stream
34
+ * @param int $level The minimum logging level at which this handler will be triggered
35
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
36
+ * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write)
37
+ * @param bool $useLocking Try to lock log file before doing any writes
38
+ *
39
+ * @throws \Exception If a missing directory is not buildable
40
+ * @throws \InvalidArgumentException If stream is not a resource or string
41
+ */
42
+ public function __construct($stream, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false)
43
+ {
44
+ parent::__construct($level, $bubble);
45
+ if (is_resource($stream)) {
46
+ $this->stream = $stream;
47
+ } elseif (is_string($stream)) {
48
+ $this->url = $stream;
49
+ } else {
50
+ throw new \InvalidArgumentException('A stream must either be a resource or a string.');
51
+ }
52
+
53
+ $this->filePermission = $filePermission;
54
+ $this->useLocking = $useLocking;
55
+ }
56
+
57
+ /**
58
+ * {@inheritdoc}
59
+ */
60
+ public function close()
61
+ {
62
+ if ($this->url && is_resource($this->stream)) {
63
+ fclose($this->stream);
64
+ }
65
+ $this->stream = null;
66
+ }
67
+
68
+ /**
69
+ * Return the currently active stream if it is open
70
+ *
71
+ * @return resource|null
72
+ */
73
+ public function getStream()
74
+ {
75
+ return $this->stream;
76
+ }
77
+
78
+ /**
79
+ * Return the stream URL if it was configured with a URL and not an active resource
80
+ *
81
+ * @return string|null
82
+ */
83
+ public function getUrl()
84
+ {
85
+ return $this->url;
86
+ }
87
+
88
+ /**
89
+ * {@inheritdoc}
90
+ */
91
+ protected function write(array $record)
92
+ {
93
+ if (!is_resource($this->stream)) {
94
+ if (null === $this->url || '' === $this->url) {
95
+ throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().');
96
+ }
97
+ $this->createDir();
98
+ $this->errorMessage = null;
99
+ set_error_handler(array($this, 'customErrorHandler'));
100
+ $this->stream = fopen($this->url, 'a');
101
+ if ($this->filePermission !== null) {
102
+ @chmod($this->url, $this->filePermission);
103
+ }
104
+ restore_error_handler();
105
+ if (!is_resource($this->stream)) {
106
+ $this->stream = null;
107
+ throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: '.$this->errorMessage, $this->url));
108
+ }
109
+ }
110
+
111
+ if ($this->useLocking) {
112
+ // ignoring errors here, there's not much we can do about them
113
+ flock($this->stream, LOCK_EX);
114
+ }
115
+
116
+ $this->streamWrite($this->stream, $record);
117
+
118
+ if ($this->useLocking) {
119
+ flock($this->stream, LOCK_UN);
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Write to stream
125
+ * @param resource $stream
126
+ * @param array $record
127
+ */
128
+ protected function streamWrite($stream, array $record)
129
+ {
130
+ fwrite($stream, (string) $record['formatted']);
131
+ }
132
+
133
+ private function customErrorHandler($code, $msg)
134
+ {
135
+ $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg);
136
+ }
137
+
138
+ /**
139
+ * @param string $stream
140
+ *
141
+ * @return null|string
142
+ */
143
+ private function getDirFromStream($stream)
144
+ {
145
+ $pos = strpos($stream, '://');
146
+ if ($pos === false) {
147
+ return dirname($stream);
148
+ }
149
+
150
+ if ('file://' === substr($stream, 0, 7)) {
151
+ return dirname(substr($stream, 7));
152
+ }
153
+
154
+ return;
155
+ }
156
+
157
+ private function createDir()
158
+ {
159
+ // Do not try to create dir if it has already been tried.
160
+ if ($this->dirCreated) {
161
+ return;
162
+ }
163
+
164
+ $dir = $this->getDirFromStream($this->url);
165
+ if (null !== $dir && !is_dir($dir)) {
166
+ $this->errorMessage = null;
167
+ set_error_handler(array($this, 'customErrorHandler'));
168
+ $status = mkdir($dir, 0777, true);
169
+ restore_error_handler();
170
+ if (false === $status && !is_dir($dir)) {
171
+ throw new \UnexpectedValueException(sprintf('There is no existing directory at "%s" and its not buildable: '.$this->errorMessage, $dir));
172
+ }
173
+ }
174
+ $this->dirCreated = true;
175
+ }
176
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php ADDED
@@ -0,0 +1,111 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Formatter\FormatterInterface;
16
+ use Monolog\Formatter\LineFormatter;
17
+ use Swift;
18
+
19
+ /**
20
+ * SwiftMailerHandler uses Swift_Mailer to send the emails
21
+ *
22
+ * @author Gyula Sallai
23
+ */
24
+ class SwiftMailerHandler extends MailHandler
25
+ {
26
+ protected $mailer;
27
+ private $messageTemplate;
28
+
29
+ /**
30
+ * @param \Swift_Mailer $mailer The mailer to use
31
+ * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced
32
+ * @param int $level The minimum logging level at which this handler will be triggered
33
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
34
+ */
35
+ public function __construct(\Swift_Mailer $mailer, $message, $level = Logger::ERROR, $bubble = true)
36
+ {
37
+ parent::__construct($level, $bubble);
38
+
39
+ $this->mailer = $mailer;
40
+ $this->messageTemplate = $message;
41
+ }
42
+
43
+ /**
44
+ * {@inheritdoc}
45
+ */
46
+ protected function send($content, array $records)
47
+ {
48
+ $this->mailer->send($this->buildMessage($content, $records));
49
+ }
50
+
51
+ /**
52
+ * Gets the formatter for the Swift_Message subject.
53
+ *
54
+ * @param string $format The format of the subject
55
+ * @return FormatterInterface
56
+ */
57
+ protected function getSubjectFormatter($format)
58
+ {
59
+ return new LineFormatter($format);
60
+ }
61
+
62
+ /**
63
+ * Creates instance of Swift_Message to be sent
64
+ *
65
+ * @param string $content formatted email body to be sent
66
+ * @param array $records Log records that formed the content
67
+ * @return \Swift_Message
68
+ */
69
+ protected function buildMessage($content, array $records)
70
+ {
71
+ $message = null;
72
+ if ($this->messageTemplate instanceof \Swift_Message) {
73
+ $message = clone $this->messageTemplate;
74
+ $message->generateId();
75
+ } elseif (is_callable($this->messageTemplate)) {
76
+ $message = call_user_func($this->messageTemplate, $content, $records);
77
+ }
78
+
79
+ if (!$message instanceof \Swift_Message) {
80
+ throw new \InvalidArgumentException('Could not resolve message as instance of Swift_Message or a callable returning it');
81
+ }
82
+
83
+ if ($records) {
84
+ $subjectFormatter = $this->getSubjectFormatter($message->getSubject());
85
+ $message->setSubject($subjectFormatter->format($this->getHighestRecord($records)));
86
+ }
87
+
88
+ $message->setBody($content);
89
+ if (version_compare(Swift::VERSION, '6.0.0', '>=')) {
90
+ $message->setDate(new \DateTimeImmutable());
91
+ } else {
92
+ $message->setDate(time());
93
+ }
94
+
95
+ return $message;
96
+ }
97
+
98
+ /**
99
+ * BC getter, to be removed in 2.0
100
+ */
101
+ public function __get($name)
102
+ {
103
+ if ($name === 'message') {
104
+ trigger_error('SwiftMailerHandler->message is deprecated, use ->buildMessage() instead to retrieve the message', E_USER_DEPRECATED);
105
+
106
+ return $this->buildMessage(null, array());
107
+ }
108
+
109
+ throw new \InvalidArgumentException('Invalid property '.$name);
110
+ }
111
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Logs to syslog service.
18
+ *
19
+ * usage example:
20
+ *
21
+ * $log = new Logger('application');
22
+ * $syslog = new SyslogHandler('myfacility', 'local6');
23
+ * $formatter = new LineFormatter("%channel%.%level_name%: %message% %extra%");
24
+ * $syslog->setFormatter($formatter);
25
+ * $log->pushHandler($syslog);
26
+ *
27
+ * @author Sven Paulus <sven@karlsruhe.org>
28
+ */
29
+ class SyslogHandler extends AbstractSyslogHandler
30
+ {
31
+ protected $ident;
32
+ protected $logopts;
33
+
34
+ /**
35
+ * @param string $ident
36
+ * @param mixed $facility
37
+ * @param int $level The minimum logging level at which this handler will be triggered
38
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
39
+ * @param int $logopts Option flags for the openlog() call, defaults to LOG_PID
40
+ */
41
+ public function __construct($ident, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $logopts = LOG_PID)
42
+ {
43
+ parent::__construct($facility, $level, $bubble);
44
+
45
+ $this->ident = $ident;
46
+ $this->logopts = $logopts;
47
+ }
48
+
49
+ /**
50
+ * {@inheritdoc}
51
+ */
52
+ public function close()
53
+ {
54
+ closelog();
55
+ }
56
+
57
+ /**
58
+ * {@inheritdoc}
59
+ */
60
+ protected function write(array $record)
61
+ {
62
+ if (!openlog($this->ident, $this->logopts, $this->facility)) {
63
+ throw new \LogicException('Can\'t open syslog for ident "'.$this->ident.'" and facility "'.$this->facility.'"');
64
+ }
65
+ syslog($this->logLevels[$record['level']], (string) $record['formatted']);
66
+ }
67
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler\SyslogUdp;
13
+
14
+ class UdpSocket
15
+ {
16
+ const DATAGRAM_MAX_LENGTH = 65023;
17
+
18
+ protected $ip;
19
+ protected $port;
20
+ protected $socket;
21
+
22
+ public function __construct($ip, $port = 514)
23
+ {
24
+ $this->ip = $ip;
25
+ $this->port = $port;
26
+ $this->socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
27
+ }
28
+
29
+ public function write($line, $header = "")
30
+ {
31
+ $this->send($this->assembleMessage($line, $header));
32
+ }
33
+
34
+ public function close()
35
+ {
36
+ if (is_resource($this->socket)) {
37
+ socket_close($this->socket);
38
+ $this->socket = null;
39
+ }
40
+ }
41
+
42
+ protected function send($chunk)
43
+ {
44
+ if (!is_resource($this->socket)) {
45
+ throw new \LogicException('The UdpSocket to '.$this->ip.':'.$this->port.' has been closed and can not be written to anymore');
46
+ }
47
+ socket_sendto($this->socket, $chunk, strlen($chunk), $flags = 0, $this->ip, $this->port);
48
+ }
49
+
50
+ protected function assembleMessage($line, $header)
51
+ {
52
+ $chunkSize = self::DATAGRAM_MAX_LENGTH - strlen($header);
53
+
54
+ return $header . substr($line, 0, $chunkSize);
55
+ }
56
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php ADDED
@@ -0,0 +1,103 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ use Monolog\Logger;
15
+ use Monolog\Handler\SyslogUdp\UdpSocket;
16
+
17
+ /**
18
+ * A Handler for logging to a remote syslogd server.
19
+ *
20
+ * @author Jesper Skovgaard Nielsen <nulpunkt@gmail.com>
21
+ */
22
+ class SyslogUdpHandler extends AbstractSyslogHandler
23
+ {
24
+ protected $socket;
25
+ protected $ident;
26
+
27
+ /**
28
+ * @param string $host
29
+ * @param int $port
30
+ * @param mixed $facility
31
+ * @param int $level The minimum logging level at which this handler will be triggered
32
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
33
+ * @param string $ident Program name or tag for each log message.
34
+ */
35
+ public function __construct($host, $port = 514, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $ident = 'php')
36
+ {
37
+ parent::__construct($facility, $level, $bubble);
38
+
39
+ $this->ident = $ident;
40
+
41
+ $this->socket = new UdpSocket($host, $port ?: 514);
42
+ }
43
+
44
+ protected function write(array $record)
45
+ {
46
+ $lines = $this->splitMessageIntoLines($record['formatted']);
47
+
48
+ $header = $this->makeCommonSyslogHeader($this->logLevels[$record['level']]);
49
+
50
+ foreach ($lines as $line) {
51
+ $this->socket->write($line, $header);
52
+ }
53
+ }
54
+
55
+ public function close()
56
+ {
57
+ $this->socket->close();
58
+ }
59
+
60
+ private function splitMessageIntoLines($message)
61
+ {
62
+ if (is_array($message)) {
63
+ $message = implode("\n", $message);
64
+ }
65
+
66
+ return preg_split('/$\R?^/m', $message, -1, PREG_SPLIT_NO_EMPTY);
67
+ }
68
+
69
+ /**
70
+ * Make common syslog header (see rfc5424)
71
+ */
72
+ protected function makeCommonSyslogHeader($severity)
73
+ {
74
+ $priority = $severity + $this->facility;
75
+
76
+ if (!$pid = getmypid()) {
77
+ $pid = '-';
78
+ }
79
+
80
+ if (!$hostname = gethostname()) {
81
+ $hostname = '-';
82
+ }
83
+
84
+ return "<$priority>1 " .
85
+ $this->getDateTime() . " " .
86
+ $hostname . " " .
87
+ $this->ident . " " .
88
+ $pid . " - - ";
89
+ }
90
+
91
+ protected function getDateTime()
92
+ {
93
+ return date(\DateTime::RFC3339);
94
+ }
95
+
96
+ /**
97
+ * Inject your own socket, mainly used for testing
98
+ */
99
+ public function setSocket($socket)
100
+ {
101
+ $this->socket = $socket;
102
+ }
103
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php ADDED
@@ -0,0 +1,164 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ /**
15
+ * Used for testing purposes.
16
+ *
17
+ * It records all records and gives you access to them for verification.
18
+ *
19
+ * @author Jordi Boggiano <j.boggiano@seld.be>
20
+ *
21
+ * @method bool hasEmergency($record)
22
+ * @method bool hasAlert($record)
23
+ * @method bool hasCritical($record)
24
+ * @method bool hasError($record)
25
+ * @method bool hasWarning($record)
26
+ * @method bool hasNotice($record)
27
+ * @method bool hasInfo($record)
28
+ * @method bool hasDebug($record)
29
+ *
30
+ * @method bool hasEmergencyRecords()
31
+ * @method bool hasAlertRecords()
32
+ * @method bool hasCriticalRecords()
33
+ * @method bool hasErrorRecords()
34
+ * @method bool hasWarningRecords()
35
+ * @method bool hasNoticeRecords()
36
+ * @method bool hasInfoRecords()
37
+ * @method bool hasDebugRecords()
38
+ *
39
+ * @method bool hasEmergencyThatContains($message)
40
+ * @method bool hasAlertThatContains($message)
41
+ * @method bool hasCriticalThatContains($message)
42
+ * @method bool hasErrorThatContains($message)
43
+ * @method bool hasWarningThatContains($message)
44
+ * @method bool hasNoticeThatContains($message)
45
+ * @method bool hasInfoThatContains($message)
46
+ * @method bool hasDebugThatContains($message)
47
+ *
48
+ * @method bool hasEmergencyThatMatches($message)
49
+ * @method bool hasAlertThatMatches($message)
50
+ * @method bool hasCriticalThatMatches($message)
51
+ * @method bool hasErrorThatMatches($message)
52
+ * @method bool hasWarningThatMatches($message)
53
+ * @method bool hasNoticeThatMatches($message)
54
+ * @method bool hasInfoThatMatches($message)
55
+ * @method bool hasDebugThatMatches($message)
56
+ *
57
+ * @method bool hasEmergencyThatPasses($message)
58
+ * @method bool hasAlertThatPasses($message)
59
+ * @method bool hasCriticalThatPasses($message)
60
+ * @method bool hasErrorThatPasses($message)
61
+ * @method bool hasWarningThatPasses($message)
62
+ * @method bool hasNoticeThatPasses($message)
63
+ * @method bool hasInfoThatPasses($message)
64
+ * @method bool hasDebugThatPasses($message)
65
+ */
66
+ class TestHandler extends AbstractProcessingHandler
67
+ {
68
+ protected $records = array();
69
+ protected $recordsByLevel = array();
70
+
71
+ public function getRecords()
72
+ {
73
+ return $this->records;
74
+ }
75
+
76
+ public function clear()
77
+ {
78
+ $this->records = array();
79
+ $this->recordsByLevel = array();
80
+ }
81
+
82
+ public function hasRecords($level)
83
+ {
84
+ return isset($this->recordsByLevel[$level]);
85
+ }
86
+
87
+ /**
88
+ * @param string|array $record Either a message string or an array containing message and optionally context keys that will be checked against all records
89
+ * @param int $level Logger::LEVEL constant value
90
+ */
91
+ public function hasRecord($record, $level)
92
+ {
93
+ if (is_string($record)) {
94
+ $record = array('message' => $record);
95
+ }
96
+
97
+ return $this->hasRecordThatPasses(function ($rec) use ($record) {
98
+ if ($rec['message'] !== $record['message']) {
99
+ return false;
100
+ }
101
+ if (isset($record['context']) && $rec['context'] !== $record['context']) {
102
+ return false;
103
+ }
104
+ return true;
105
+ }, $level);
106
+ }
107
+
108
+ public function hasRecordThatContains($message, $level)
109
+ {
110
+ return $this->hasRecordThatPasses(function ($rec) use ($message) {
111
+ return strpos($rec['message'], $message) !== false;
112
+ }, $level);
113
+ }
114
+
115
+ public function hasRecordThatMatches($regex, $level)
116
+ {
117
+ return $this->hasRecordThatPasses(function ($rec) use ($regex) {
118
+ return preg_match($regex, $rec['message']) > 0;
119
+ }, $level);
120
+ }
121
+
122
+ public function hasRecordThatPasses($predicate, $level)
123
+ {
124
+ if (!is_callable($predicate)) {
125
+ throw new \InvalidArgumentException("Expected a callable for hasRecordThatSucceeds");
126
+ }
127
+
128
+ if (!isset($this->recordsByLevel[$level])) {
129
+ return false;
130
+ }
131
+
132
+ foreach ($this->recordsByLevel[$level] as $i => $rec) {
133
+ if (call_user_func($predicate, $rec, $i)) {
134
+ return true;
135
+ }
136
+ }
137
+
138
+ return false;
139
+ }
140
+
141
+ /**
142
+ * {@inheritdoc}
143
+ */
144
+ protected function write(array $record)
145
+ {
146
+ $this->recordsByLevel[$record['level']][] = $record;
147
+ $this->records[] = $record;
148
+ }
149
+
150
+ public function __call($method, $args)
151
+ {
152
+ if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) {
153
+ $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3];
154
+ $level = constant('Monolog\Logger::' . strtoupper($matches[2]));
155
+ if (method_exists($this, $genericMethod)) {
156
+ $args[] = $level;
157
+
158
+ return call_user_func_array(array($this, $genericMethod), $args);
159
+ }
160
+ }
161
+
162
+ throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()');
163
+ }
164
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php ADDED
@@ -0,0 +1,71 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Handler;
13
+
14
+ /**
15
+ * Forwards records to multiple handlers suppressing failures of each handler
16
+ * and continuing through to give every handler a chance to succeed.
17
+ *
18
+ * @author Craig D'Amelio <craig@damelio.ca>
19
+ */
20
+ class WhatFailureGroupHandler extends GroupHandler
21
+ {
22
+ /**
23
+ * {@inheritdoc}
24
+ */
25
+ public function handle(array $record)
26
+ {
27
+ if ($this->processors) {
28
+ foreach ($this->processors as $processor) {
29
+ $record = call_user_func($processor, $record);
30
+ }
31
+ }
32
+
33
+ foreach ($this->handlers as $handler) {
34
+ try {
35
+ $handler->handle($record);
36
+ } catch (\Exception $e) {
37
+ // What failure?
38
+ } catch (\Throwable $e) {
39
+ // What failure?
40
+ }
41
+ }
42
+
43
+ return false === $this->bubble;
44
+ }
45
+
46
+ /**
47
+ * {@inheritdoc}
48
+ */
49
+ public function handleBatch(array $records)
50
+ {
51
+ if ($this->processors) {
52
+ $processed = array();
53
+ foreach ($records as $record) {
54
+ foreach ($this->processors as $processor) {
55
+ $processed[] = call_user_func($processor, $record);
56
+ }
57
+ }
58
+ $records = $processed;
59
+ }
60
+
61
+ foreach ($this->handlers as $handler) {
62
+ try {
63
+ $handler->handleBatch($records);
64
+ } catch (\Exception $e) {
65
+ // What failure?
66
+ } catch (\Throwable $e) {
67
+ // What failure?
68
+ }
69
+ }
70
+ }
71
+ }
common/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ * This file is part of the Monolog package.
4
+ *
5
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
6
+ *
7
+ * For the full copyright and license information, please view the LICENSE
8
+ * file that was distributed with this source code.
9
+ */
10
+
11
+ namespace Monolog\Handler;
12
+
13
+ use Monolog\Formatter\NormalizerFormatter;
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Handler sending logs to Zend Monitor
18
+ *
19
+ * @author Christian Bergau <cbergau86@gmail.com>
20
+ */
21
+ class ZendMonitorHandler extends AbstractProcessingHandler
22
+ {
23
+ /**
24
+ * Monolog level / ZendMonitor Custom Event priority map
25
+ *
26
+ * @var array
27
+ */
28
+ protected $levelMap = array(
29
+ Logger::DEBUG => 1,
30
+ Logger::INFO => 2,
31
+ Logger::NOTICE => 3,
32
+ Logger::WARNING => 4,
33
+ Logger::ERROR => 5,
34
+ Logger::CRITICAL => 6,
35
+ Logger::ALERT => 7,
36
+ Logger::EMERGENCY => 0,
37
+ );
38
+
39
+ /**
40
+ * Construct
41
+ *
42
+ * @param int $level
43
+ * @param bool $bubble
44
+ * @throws MissingExtensionException
45
+ */
46
+ public function __construct($level = Logger::DEBUG, $bubble = true)
47
+ {
48
+ if (!function_exists('zend_monitor_custom_event')) {
49
+ throw new MissingExtensionException('You must have Zend Server installed in order to use this handler');
50
+ }
51
+ parent::__construct($level, $bubble);
52
+ }
53
+
54
+ /**
55
+ * {@inheritdoc}
56
+ */
57
+ protected function write(array $record)
58
+ {
59
+ $this->writeZendMonitorCustomEvent(
60
+ $this->levelMap[$record['level']],
61
+ $record['message'],
62
+ $record['formatted']
63
+ );
64
+ }
65
+
66
+ /**
67
+ * Write a record to Zend Monitor
68
+ *
69
+ * @param int $level
70
+ * @param string $message
71
+ * @param array $formatted
72
+ */
73
+ protected function writeZendMonitorCustomEvent($level, $message, $formatted)
74
+ {
75
+ zend_monitor_custom_event($level, $message, $formatted);
76
+ }
77
+
78
+ /**
79
+ * {@inheritdoc}
80
+ */
81
+ public function getDefaultFormatter()
82
+ {
83
+ return new NormalizerFormatter();
84
+ }
85
+
86
+ /**
87
+ * Get the level map
88
+ *
89
+ * @return array
90
+ */
91
+ public function getLevelMap()
92
+ {
93
+ return $this->levelMap;
94
+ }
95
+ }
common/vendor/monolog/monolog/src/Monolog/Logger.php ADDED
@@ -0,0 +1,791 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog;
13
+
14
+ use Monolog\Handler\HandlerInterface;
15
+ use Monolog\Handler\StreamHandler;
16
+ use Psr\Log\LoggerInterface;
17
+ use Psr\Log\InvalidArgumentException;
18
+ use Exception;
19
+
20
+ /**
21
+ * Monolog log channel
22
+ *
23
+ * It contains a stack of Handlers and a stack of Processors,
24
+ * and uses them to store records that are added to it.
25
+ *
26
+ * @author Jordi Boggiano <j.boggiano@seld.be>
27
+ */
28
+ class Logger implements LoggerInterface, ResettableInterface
29
+ {
30
+ /**
31
+ * Detailed debug information
32
+ */
33
+ const DEBUG = 100;
34
+
35
+ /**
36
+ * Interesting events
37
+ *
38
+ * Examples: User logs in, SQL logs.
39
+ */
40
+ const INFO = 200;
41
+
42
+ /**
43
+ * Uncommon events
44
+ */
45
+ const NOTICE = 250;
46
+
47
+ /**
48
+ * Exceptional occurrences that are not errors
49
+ *
50
+ * Examples: Use of deprecated APIs, poor use of an API,
51
+ * undesirable things that are not necessarily wrong.
52
+ */
53
+ const WARNING = 300;
54
+
55
+ /**
56
+ * Runtime errors
57
+ */
58
+ const ERROR = 400;
59
+
60
+ /**
61
+ * Critical conditions
62
+ *
63
+ * Example: Application component unavailable, unexpected exception.
64
+ */
65
+ const CRITICAL = 500;
66
+
67
+ /**
68
+ * Action must be taken immediately
69
+ *
70
+ * Example: Entire website down, database unavailable, etc.
71
+ * This should trigger the SMS alerts and wake you up.
72
+ */
73
+ const ALERT = 550;
74
+
75
+ /**
76
+ * Urgent alert.
77
+ */
78
+ const EMERGENCY = 600;
79
+
80
+ /**
81
+ * Monolog API version
82
+ *
83
+ * This is only bumped when API breaks are done and should
84
+ * follow the major version of the library
85
+ *
86
+ * @var int
87
+ */
88
+ const API = 1;
89
+
90
+ /**
91
+ * Logging levels from syslog protocol defined in RFC 5424
92
+ *
93
+ * @var array $levels Logging levels
94
+ */
95
+ protected static $levels = array(
96
+ self::DEBUG => 'DEBUG',
97
+ self::INFO => 'INFO',
98
+ self::NOTICE => 'NOTICE',
99
+ self::WARNING => 'WARNING',
100
+ self::ERROR => 'ERROR',
101
+ self::CRITICAL => 'CRITICAL',
102
+ self::ALERT => 'ALERT',
103
+ self::EMERGENCY => 'EMERGENCY',
104
+ );
105
+
106
+ /**
107
+ * @var \DateTimeZone
108
+ */
109
+ protected static $timezone;
110
+
111
+ /**
112
+ * @var string
113
+ */
114
+ protected $name;
115
+
116
+ /**
117
+ * The handler stack
118
+ *
119
+ * @var HandlerInterface[]
120
+ */
121
+ protected $handlers;
122
+
123
+ /**
124
+ * Processors that will process all log records
125
+ *
126
+ * To process records of a single handler instead, add the processor on that specific handler
127
+ *
128
+ * @var callable[]
129
+ */
130
+ protected $processors;
131
+
132
+ /**
133
+ * @var bool
134
+ */
135
+ protected $microsecondTimestamps = true;
136
+
137
+ /**
138
+ * @var callable
139
+ */
140
+ protected $exceptionHandler;
141
+
142
+ /**
143
+ * @param string $name The logging channel
144
+ * @param HandlerInterface[] $handlers Optional stack of handlers, the first one in the array is called first, etc.
145
+ * @param callable[] $processors Optional array of processors
146
+ */
147
+ public function __construct($name, array $handlers = array(), array $processors = array())
148
+ {
149
+ $this->name = $name;
150
+ $this->setHandlers($handlers);
151
+ $this->processors = $processors;
152
+ }
153
+
154
+ /**
155
+ * @return string
156
+ */
157
+ public function getName()
158
+ {
159
+ return $this->name;
160
+ }
161
+
162
+ /**
163
+ * Return a new cloned instance with the name changed
164
+ *
165
+ * @return static
166
+ */
167
+ public function withName($name)
168
+ {
169
+ $new = clone $this;
170
+ $new->name = $name;
171
+
172
+ return $new;
173
+ }
174
+
175
+ /**
176
+ * Pushes a handler on to the stack.
177
+ *
178
+ * @param HandlerInterface $handler
179
+ * @return $this
180
+ */
181
+ public function pushHandler(HandlerInterface $handler)
182
+ {
183
+ array_unshift($this->handlers, $handler);
184
+
185
+ return $this;
186
+ }
187
+
188
+ /**
189
+ * Pops a handler from the stack
190
+ *
191
+ * @return HandlerInterface
192
+ */
193
+ public function popHandler()
194
+ {
195
+ if (!$this->handlers) {
196
+ throw new \LogicException('You tried to pop from an empty handler stack.');
197
+ }
198
+
199
+ return array_shift($this->handlers);
200
+ }
201
+
202
+ /**
203
+ * Set handlers, replacing all existing ones.
204
+ *
205
+ * If a map is passed, keys will be ignored.
206
+ *
207
+ * @param HandlerInterface[] $handlers
208
+ * @return $this
209
+ */
210
+ public function setHandlers(array $handlers)
211
+ {
212
+ $this->handlers = array();
213
+ foreach (array_reverse($handlers) as $handler) {
214
+ $this->pushHandler($handler);
215
+ }
216
+
217
+ return $this;
218
+ }
219
+
220
+ /**
221
+ * @return HandlerInterface[]
222
+ */
223
+ public function getHandlers()
224
+ {
225
+ return $this->handlers;
226
+ }
227
+
228
+ /**
229
+ * Adds a processor on to the stack.
230
+ *
231
+ * @param callable $callback
232
+ * @return $this
233
+ */
234
+ public function pushProcessor($callback)
235
+ {
236
+ if (!is_callable($callback)) {
237
+ throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given');
238
+ }
239
+ array_unshift($this->processors, $callback);
240
+
241
+ return $this;
242
+ }
243
+
244
+ /**
245
+ * Removes the processor on top of the stack and returns it.
246
+ *
247
+ * @return callable
248
+ */
249
+ public function popProcessor()
250
+ {
251
+ if (!$this->processors) {
252
+ throw new \LogicException('You tried to pop from an empty processor stack.');
253
+ }
254
+
255
+ return array_shift($this->processors);
256
+ }
257
+
258
+ /**
259
+ * @return callable[]
260
+ */
261
+ public function getProcessors()
262
+ {
263
+ return $this->processors;
264
+ }
265
+
266
+ /**
267
+ * Control the use of microsecond resolution timestamps in the 'datetime'
268
+ * member of new records.
269
+ *
270
+ * Generating microsecond resolution timestamps by calling
271
+ * microtime(true), formatting the result via sprintf() and then parsing
272
+ * the resulting string via \DateTime::createFromFormat() can incur
273
+ * a measurable runtime overhead vs simple usage of DateTime to capture
274
+ * a second resolution timestamp in systems which generate a large number
275
+ * of log events.
276
+ *
277
+ * @param bool $micro True to use microtime() to create timestamps
278
+ */
279
+ public function useMicrosecondTimestamps($micro)
280
+ {
281
+ $this->microsecondTimestamps = (bool) $micro;
282
+ }
283
+
284
+ /**
285
+ * Adds a log record.
286
+ *
287
+ * @param int $level The logging level
288
+ * @param string $message The log message
289
+ * @param array $context The log context
290
+ * @return bool Whether the record has been processed
291
+ */
292
+ public function addRecord($level, $message, array $context = array())
293
+ {
294
+ if (!$this->handlers) {
295
+ $this->pushHandler(new StreamHandler('php://stderr', static::DEBUG));
296
+ }
297
+
298
+ $levelName = static::getLevelName($level);
299
+
300
+ // check if any handler will handle this message so we can return early and save cycles
301
+ $handlerKey = null;
302
+ reset($this->handlers);
303
+ while ($handler = current($this->handlers)) {
304
+ if ($handler->isHandling(array('level' => $level))) {
305
+ $handlerKey = key($this->handlers);
306
+ break;
307
+ }
308
+
309
+ next($this->handlers);
310
+ }
311
+
312
+ if (null === $handlerKey) {
313
+ return false;
314
+ }
315
+
316
+ if (!static::$timezone) {
317
+ static::$timezone = new \DateTimeZone(date_default_timezone_get() ?: 'UTC');
318
+ }
319
+
320
+ // php7.1+ always has microseconds enabled, so we do not need this hack
321
+ if ($this->microsecondTimestamps && PHP_VERSION_ID < 70100) {
322
+ $ts = \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone);
323
+ } else {
324
+ $ts = new \DateTime(null, static::$timezone);
325
+ }
326
+ $ts->setTimezone(static::$timezone);
327
+
328
+ $record = array(
329
+ 'message' => (string) $message,
330
+ 'context' => $context,
331
+ 'level' => $level,
332
+ 'level_name' => $levelName,
333
+ 'channel' => $this->name,
334
+ 'datetime' => $ts,
335
+ 'extra' => array(),
336
+ );
337
+
338
+ try {
339
+ foreach ($this->processors as $processor) {
340
+ $record = call_user_func($processor, $record);
341
+ }
342
+
343
+ while ($handler = current($this->handlers)) {
344
+ if (true === $handler->handle($record)) {
345
+ break;
346
+ }
347
+
348
+ next($this->handlers);
349
+ }
350
+ } catch (Exception $e) {
351
+ $this->handleException($e, $record);
352
+ }
353
+
354
+ return true;
355
+ }
356
+
357
+ /**
358
+ * Ends a log cycle and frees all resources used by handlers.
359
+ *
360
+ * Closing a Handler means flushing all buffers and freeing any open resources/handles.
361
+ * Handlers that have been closed should be able to accept log records again and re-open
362
+ * themselves on demand, but this may not always be possible depending on implementation.
363
+ *
364
+ * This is useful at the end of a request and will be called automatically on every handler
365
+ * when they get destructed.
366
+ */
367
+ public function close()
368
+ {
369
+ foreach ($this->handlers as $handler) {
370
+ if (method_exists($handler, 'close')) {
371
+ $handler->close();
372
+ }
373
+ }
374
+ }
375
+
376
+ /**
377
+ * Ends a log cycle and resets all handlers and processors to their initial state.
378
+ *
379
+ * Resetting a Handler or a Processor means flushing/cleaning all buffers, resetting internal
380
+ * state, and getting it back to a state in which it can receive log records again.
381
+ *
382
+ * This is useful in case you want to avoid logs leaking between two requests or jobs when you
383
+ * have a long running process like a worker or an application server serving multiple requests
384
+ * in one process.
385
+ */
386
+ public function reset()
387
+ {
388
+ foreach ($this->handlers as $handler) {
389
+ if ($handler instanceof ResettableInterface) {
390
+ $handler->reset();
391
+ }
392
+ }
393
+
394
+ foreach ($this->processors as $processor) {
395
+ if ($processor instanceof ResettableInterface) {
396
+ $processor->reset();
397
+ }
398
+ }
399
+ }
400
+
401
+ /**
402
+ * Adds a log record at the DEBUG level.
403
+ *
404
+ * @param string $message The log message
405
+ * @param array $context The log context
406
+ * @return bool Whether the record has been processed
407
+ */
408
+ public function addDebug($message, array $context = array())
409
+ {
410
+ return $this->addRecord(static::DEBUG, $message, $context);
411
+ }
412
+
413
+ /**
414
+ * Adds a log record at the INFO level.
415
+ *
416
+ * @param string $message The log message
417
+ * @param array $context The log context
418
+ * @return bool Whether the record has been processed
419
+ */
420
+ public function addInfo($message, array $context = array())
421
+ {
422
+ return $this->addRecord(static::INFO, $message, $context);
423
+ }
424
+
425
+ /**
426
+ * Adds a log record at the NOTICE level.
427
+ *
428
+ * @param string $message The log message
429
+ * @param array $context The log context
430
+ * @return bool Whether the record has been processed
431
+ */
432
+ public function addNotice($message, array $context = array())
433
+ {
434
+ return $this->addRecord(static::NOTICE, $message, $context);
435
+ }
436
+
437
+ /**
438
+ * Adds a log record at the WARNING level.
439
+ *
440
+ * @param string $message The log message
441
+ * @param array $context The log context
442
+ * @return bool Whether the record has been processed
443
+ */
444
+ public function addWarning($message, array $context = array())
445
+ {
446
+ return $this->addRecord(static::WARNING, $message, $context);
447
+ }
448
+
449
+ /**
450
+ * Adds a log record at the ERROR level.
451
+ *
452
+ * @param string $message The log message
453
+ * @param array $context The log context
454
+ * @return bool Whether the record has been processed
455
+ */
456
+ public function addError($message, array $context = array())
457
+ {
458
+ return $this->addRecord(static::ERROR, $message, $context);
459
+ }
460
+
461
+ /**
462
+ * Adds a log record at the CRITICAL level.
463
+ *
464
+ * @param string $message The log message
465
+ * @param array $context The log context
466
+ * @return bool Whether the record has been processed
467
+ */
468
+ public function addCritical($message, array $context = array())
469
+ {
470
+ return $this->addRecord(static::CRITICAL, $message, $context);
471
+ }
472
+
473
+ /**
474
+ * Adds a log record at the ALERT level.
475
+ *
476
+ * @param string $message The log message
477
+ * @param array $context The log context
478
+ * @return bool Whether the record has been processed
479
+ */
480
+ public function addAlert($message, array $context = array())
481
+ {
482
+ return $this->addRecord(static::ALERT, $message, $context);
483
+ }
484
+
485
+ /**
486
+ * Adds a log record at the EMERGENCY level.
487
+ *
488
+ * @param string $message The log message
489
+ * @param array $context The log context
490
+ * @return bool Whether the record has been processed
491
+ */
492
+ public function addEmergency($message, array $context = array())
493
+ {
494
+ return $this->addRecord(static::EMERGENCY, $message, $context);
495
+ }
496
+
497
+ /**
498
+ * Gets all supported logging levels.
499
+ *
500
+ * @return array Assoc array with human-readable level names => level codes.
501
+ */
502
+ public static function getLevels()
503
+ {
504
+ return array_flip(static::$levels);
505
+ }
506
+
507
+ /**
508
+ * Gets the name of the logging level.
509
+ *
510
+ * @param int $level
511
+ * @return string
512
+ */
513
+ public static function getLevelName($level)
514
+ {
515
+ if (!isset(static::$levels[$level])) {
516
+ throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', array_keys(static::$levels)));
517
+ }
518
+
519
+ return static::$levels[$level];
520
+ }
521
+
522
+ /**
523
+ * Converts PSR-3 levels to Monolog ones if necessary
524
+ *
525
+ * @param string|int Level number (monolog) or name (PSR-3)
526
+ * @return int
527
+ */
528
+ public static function toMonologLevel($level)
529
+ {
530
+ if (is_string($level) && defined(__CLASS__.'::'.strtoupper($level))) {
531
+ return constant(__CLASS__.'::'.strtoupper($level));
532
+ }
533
+
534
+ return $level;
535
+ }
536
+
537
+ /**
538
+ * Checks whether the Logger has a handler that listens on the given level
539
+ *
540
+ * @param int $level
541
+ * @return bool
542
+ */
543
+ public function isHandling($level)
544
+ {
545
+ $record = array(
546
+ 'level' => $level,
547
+ );
548
+
549
+ foreach ($this->handlers as $handler) {
550
+ if ($handler->isHandling($record)) {
551
+ return true;
552
+ }
553
+ }
554
+
555
+ return false;
556
+ }
557
+
558
+ /**
559
+ * Set a custom exception handler
560
+ *
561
+ * @param callable $callback
562
+ * @return $this
563
+ */
564
+ public function setExceptionHandler($callback)
565
+ {
566
+ if (!is_callable($callback)) {
567
+ throw new \InvalidArgumentException('Exception handler must be valid callable (callback or object with an __invoke method), '.var_export($callback, true).' given');
568
+ }
569
+ $this->exceptionHandler = $callback;
570
+
571
+ return $this;
572
+ }
573
+
574
+ /**
575
+ * @return callable
576
+ */
577
+ public function getExceptionHandler()
578
+ {
579
+ return $this->exceptionHandler;
580
+ }
581
+
582
+ /**
583
+ * Delegates exception management to the custom exception handler,
584
+ * or throws the exception if no custom handler is set.
585
+ */
586
+ protected function handleException(Exception $e, array $record)
587
+ {
588
+ if (!$this->exceptionHandler) {
589
+ throw $e;
590
+ }
591
+
592
+ call_user_func($this->exceptionHandler, $e, $record);
593
+ }
594
+
595
+ /**
596
+ * Adds a log record at an arbitrary level.
597
+ *
598
+ * This method allows for compatibility with common interfaces.
599
+ *
600
+ * @param mixed $level The log level
601
+ * @param string $message The log message
602
+ * @param array $context The log context
603
+ * @return bool Whether the record has been processed
604
+ */
605
+ public function log($level, $message, array $context = array())
606
+ {
607
+ $level = static::toMonologLevel($level);
608
+
609
+ return $this->addRecord($level, $message, $context);
610
+ }
611
+
612
+ /**
613
+ * Adds a log record at the DEBUG level.
614
+ *
615
+ * This method allows for compatibility with common interfaces.
616
+ *
617
+ * @param string $message The log message
618
+ * @param array $context The log context
619
+ * @return bool Whether the record has been processed
620
+ */
621
+ public function debug($message, array $context = array())
622
+ {
623
+ return $this->addRecord(static::DEBUG, $message, $context);
624
+ }
625
+
626
+ /**
627
+ * Adds a log record at the INFO level.
628
+ *
629
+ * This method allows for compatibility with common interfaces.
630
+ *
631
+ * @param string $message The log message
632
+ * @param array $context The log context
633
+ * @return bool Whether the record has been processed
634
+ */
635
+ public function info($message, array $context = array())
636
+ {
637
+ return $this->addRecord(static::INFO, $message, $context);
638
+ }
639
+
640
+ /**
641
+ * Adds a log record at the NOTICE level.
642
+ *
643
+ * This method allows for compatibility with common interfaces.
644
+ *
645
+ * @param string $message The log message
646
+ * @param array $context The log context
647
+ * @return bool Whether the record has been processed
648
+ */
649
+ public function notice($message, array $context = array())
650
+ {
651
+ return $this->addRecord(static::NOTICE, $message, $context);
652
+ }
653
+
654
+ /**
655
+ * Adds a log record at the WARNING level.
656
+ *
657
+ * This method allows for compatibility with common interfaces.
658
+ *
659
+ * @param string $message The log message
660
+ * @param array $context The log context
661
+ * @return bool Whether the record has been processed
662
+ */
663
+ public function warn($message, array $context = array())
664
+ {
665
+ return $this->addRecord(static::WARNING, $message, $context);
666
+ }
667
+
668
+ /**
669
+ * Adds a log record at the WARNING level.
670
+ *
671
+ * This method allows for compatibility with common interfaces.
672
+ *
673
+ * @param string $message The log message
674
+ * @param array $context The log context
675
+ * @return bool Whether the record has been processed
676
+ */
677
+ public function warning($message, array $context = array())
678
+ {
679
+ return $this->addRecord(static::WARNING, $message, $context);
680
+ }
681
+
682
+ /**
683
+ * Adds a log record at the ERROR level.
684
+ *
685
+ * This method allows for compatibility with common interfaces.
686
+ *
687
+ * @param string $message The log message
688
+ * @param array $context The log context
689
+ * @return bool Whether the record has been processed
690
+ */
691
+ public function err($message, array $context = array())
692
+ {
693
+ return $this->addRecord(static::ERROR, $message, $context);
694
+ }
695
+
696
+ /**
697
+ * Adds a log record at the ERROR level.
698
+ *
699
+ * This method allows for compatibility with common interfaces.
700
+ *
701
+ * @param string $message The log message
702
+ * @param array $context The log context
703
+ * @return bool Whether the record has been processed
704
+ */
705
+ public function error($message, array $context = array())
706
+ {
707
+ return $this->addRecord(static::ERROR, $message, $context);
708
+ }
709
+
710
+ /**
711
+ * Adds a log record at the CRITICAL level.
712
+ *
713
+ * This method allows for compatibility with common interfaces.
714
+ *
715
+ * @param string $message The log message
716
+ * @param array $context The log context
717
+ * @return bool Whether the record has been processed
718
+ */
719
+ public function crit($message, array $context = array())
720
+ {
721
+ return $this->addRecord(static::CRITICAL, $message, $context);
722
+ }
723
+
724
+ /**
725
+ * Adds a log record at the CRITICAL level.
726
+ *
727
+ * This method allows for compatibility with common interfaces.
728
+ *
729
+ * @param string $message The log message
730
+ * @param array $context The log context
731
+ * @return bool Whether the record has been processed
732
+ */
733
+ public function critical($message, array $context = array())
734
+ {
735
+ return $this->addRecord(static::CRITICAL, $message, $context);
736
+ }
737
+
738
+ /**
739
+ * Adds a log record at the ALERT level.
740
+ *
741
+ * This method allows for compatibility with common interfaces.
742
+ *
743
+ * @param string $message The log message
744
+ * @param array $context The log context
745
+ * @return bool Whether the record has been processed
746
+ */
747
+ public function alert($message, array $context = array())
748
+ {
749
+ return $this->addRecord(static::ALERT, $message, $context);
750
+ }
751
+
752
+ /**
753
+ * Adds a log record at the EMERGENCY level.
754
+ *
755
+ * This method allows for compatibility with common interfaces.
756
+ *
757
+ * @param string $message The log message
758
+ * @param array $context The log context
759
+ * @return bool Whether the record has been processed
760
+ */
761
+ public function emerg($message, array $context = array())
762
+ {
763
+ return $this->addRecord(static::EMERGENCY, $message, $context);
764
+ }
765
+
766
+ /**
767
+ * Adds a log record at the EMERGENCY level.
768
+ *
769
+ * This method allows for compatibility with common interfaces.
770
+ *
771
+ * @param string $message The log message
772
+ * @param array $context The log context
773
+ * @return bool Whether the record has been processed
774
+ */
775
+ public function emergency($message, array $context = array())
776
+ {
777
+ return $this->addRecord(static::EMERGENCY, $message, $context);
778
+ }
779
+
780
+ /**
781
+ * Set the timezone to be used for the timestamp of log records.
782
+ *
783
+ * This is stored globally for all Logger instances
784
+ *
785
+ * @param \DateTimeZone $tz Timezone object
786
+ */
787
+ public static function setTimezone(\DateTimeZone $tz)
788
+ {
789
+ self::$timezone = $tz;
790
+ }
791
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Injects Git branch and Git commit SHA in all records
18
+ *
19
+ * @author Nick Otter
20
+ * @author Jordi Boggiano <j.boggiano@seld.be>
21
+ */
22
+ class GitProcessor implements ProcessorInterface
23
+ {
24
+ private $level;
25
+ private static $cache;
26
+
27
+ public function __construct($level = Logger::DEBUG)
28
+ {
29
+ $this->level = Logger::toMonologLevel($level);
30
+ }
31
+
32
+ /**
33
+ * @param array $record
34
+ * @return array
35
+ */
36
+ public function __invoke(array $record)
37
+ {
38
+ // return if the level is not high enough
39
+ if ($record['level'] < $this->level) {
40
+ return $record;
41
+ }
42
+
43
+ $record['extra']['git'] = self::getGitInfo();
44
+
45
+ return $record;
46
+ }
47
+
48
+ private static function getGitInfo()
49
+ {
50
+ if (self::$cache) {
51
+ return self::$cache;
52
+ }
53
+
54
+ $branches = `git branch -v --no-abbrev`;
55
+ if (preg_match('{^\* (.+?)\s+([a-f0-9]{40})(?:\s|$)}m', $branches, $matches)) {
56
+ return self::$cache = array(
57
+ 'branch' => $matches[1],
58
+ 'commit' => $matches[2],
59
+ );
60
+ }
61
+
62
+ return self::$cache = array();
63
+ }
64
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Injects line/file:class/function where the log message came from
18
+ *
19
+ * Warning: This only works if the handler processes the logs directly.
20
+ * If you put the processor on a handler that is behind a FingersCrossedHandler
21
+ * for example, the processor will only be called once the trigger level is reached,
22
+ * and all the log records will have the same file/line/.. data from the call that
23
+ * triggered the FingersCrossedHandler.
24
+ *
25
+ * @author Jordi Boggiano <j.boggiano@seld.be>
26
+ */
27
+ class IntrospectionProcessor implements ProcessorInterface
28
+ {
29
+ private $level;
30
+
31
+ private $skipClassesPartials;
32
+
33
+ private $skipStackFramesCount;
34
+
35
+ private $skipFunctions = array(
36
+ 'call_user_func',
37
+ 'call_user_func_array',
38
+ );
39
+
40
+ public function __construct($level = Logger::DEBUG, array $skipClassesPartials = array(), $skipStackFramesCount = 0)
41
+ {
42
+ $this->level = Logger::toMonologLevel($level);
43
+ $this->skipClassesPartials = array_merge(array('Monolog\\'), $skipClassesPartials);
44
+ $this->skipStackFramesCount = $skipStackFramesCount;
45
+ }
46
+
47
+ /**
48
+ * @param array $record
49
+ * @return array
50
+ */
51
+ public function __invoke(array $record)
52
+ {
53
+ // return if the level is not high enough
54
+ if ($record['level'] < $this->level) {
55
+ return $record;
56
+ }
57
+
58
+ /*
59
+ * http://php.net/manual/en/function.debug-backtrace.php
60
+ * As of 5.3.6, DEBUG_BACKTRACE_IGNORE_ARGS option was added.
61
+ * Any version less than 5.3.6 must use the DEBUG_BACKTRACE_IGNORE_ARGS constant value '2'.
62
+ */
63
+ $trace = debug_backtrace((PHP_VERSION_ID < 50306) ? 2 : DEBUG_BACKTRACE_IGNORE_ARGS);
64
+
65
+ // skip first since it's always the current method
66
+ array_shift($trace);
67
+ // the call_user_func call is also skipped
68
+ array_shift($trace);
69
+
70
+ $i = 0;
71
+
72
+ while ($this->isTraceClassOrSkippedFunction($trace, $i)) {
73
+ if (isset($trace[$i]['class'])) {
74
+ foreach ($this->skipClassesPartials as $part) {
75
+ if (strpos($trace[$i]['class'], $part) !== false) {
76
+ $i++;
77
+ continue 2;
78
+ }
79
+ }
80
+ } elseif (in_array($trace[$i]['function'], $this->skipFunctions)) {
81
+ $i++;
82
+ continue;
83
+ }
84
+
85
+ break;
86
+ }
87
+
88
+ $i += $this->skipStackFramesCount;
89
+
90
+ // we should have the call source now
91
+ $record['extra'] = array_merge(
92
+ $record['extra'],
93
+ array(
94
+ 'file' => isset($trace[$i - 1]['file']) ? $trace[$i - 1]['file'] : null,
95
+ 'line' => isset($trace[$i - 1]['line']) ? $trace[$i - 1]['line'] : null,
96
+ 'class' => isset($trace[$i]['class']) ? $trace[$i]['class'] : null,
97
+ 'function' => isset($trace[$i]['function']) ? $trace[$i]['function'] : null,
98
+ )
99
+ );
100
+
101
+ return $record;
102
+ }
103
+
104
+ private function isTraceClassOrSkippedFunction(array $trace, $index)
105
+ {
106
+ if (!isset($trace[$index])) {
107
+ return false;
108
+ }
109
+
110
+ return isset($trace[$index]['class']) || in_array($trace[$index]['function'], $this->skipFunctions);
111
+ }
112
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ /**
15
+ * Injects memory_get_peak_usage in all records
16
+ *
17
+ * @see Monolog\Processor\MemoryProcessor::__construct() for options
18
+ * @author Rob Jensen
19
+ */
20
+ class MemoryPeakUsageProcessor extends MemoryProcessor
21
+ {
22
+ /**
23
+ * @param array $record
24
+ * @return array
25
+ */
26
+ public function __invoke(array $record)
27
+ {
28
+ $bytes = memory_get_peak_usage($this->realUsage);
29
+ $formatted = $this->formatBytes($bytes);
30
+
31
+ $record['extra']['memory_peak_usage'] = $formatted;
32
+
33
+ return $record;
34
+ }
35
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ /**
15
+ * Some methods that are common for all memory processors
16
+ *
17
+ * @author Rob Jensen
18
+ */
19
+ abstract class MemoryProcessor implements ProcessorInterface
20
+ {
21
+ /**
22
+ * @var bool If true, get the real size of memory allocated from system. Else, only the memory used by emalloc() is reported.
23
+ */
24
+ protected $realUsage;
25
+
26
+ /**
27
+ * @var bool If true, then format memory size to human readable string (MB, KB, B depending on size)
28
+ */
29
+ protected $useFormatting;
30
+
31
+ /**
32
+ * @param bool $realUsage Set this to true to get the real size of memory allocated from system.
33
+ * @param bool $useFormatting If true, then format memory size to human readable string (MB, KB, B depending on size)
34
+ */
35
+ public function __construct($realUsage = true, $useFormatting = true)
36
+ {
37
+ $this->realUsage = (bool) $realUsage;
38
+ $this->useFormatting = (bool) $useFormatting;
39
+ }
40
+
41
+ /**
42
+ * Formats bytes into a human readable string if $this->useFormatting is true, otherwise return $bytes as is
43
+ *
44
+ * @param int $bytes
45
+ * @return string|int Formatted string if $this->useFormatting is true, otherwise return $bytes as is
46
+ */
47
+ protected function formatBytes($bytes)
48
+ {
49
+ $bytes = (int) $bytes;
50
+
51
+ if (!$this->useFormatting) {
52
+ return $bytes;
53
+ }
54
+
55
+ if ($bytes > 1024 * 1024) {
56
+ return round($bytes / 1024 / 1024, 2).' MB';
57
+ } elseif ($bytes > 1024) {
58
+ return round($bytes / 1024, 2).' KB';
59
+ }
60
+
61
+ return $bytes . ' B';
62
+ }
63
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ /**
15
+ * Injects memory_get_usage in all records
16
+ *
17
+ * @see Monolog\Processor\MemoryProcessor::__construct() for options
18
+ * @author Rob Jensen
19
+ */
20
+ class MemoryUsageProcessor extends MemoryProcessor
21
+ {
22
+ /**
23
+ * @param array $record
24
+ * @return array
25
+ */
26
+ public function __invoke(array $record)
27
+ {
28
+ $bytes = memory_get_usage($this->realUsage);
29
+ $formatted = $this->formatBytes($bytes);
30
+
31
+ $record['extra']['memory_usage'] = $formatted;
32
+
33
+ return $record;
34
+ }
35
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jonathan A. Schweder <jonathanschweder@gmail.com>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ use Monolog\Logger;
15
+
16
+ /**
17
+ * Injects Hg branch and Hg revision number in all records
18
+ *
19
+ * @author Jonathan A. Schweder <jonathanschweder@gmail.com>
20
+ */
21
+ class MercurialProcessor implements ProcessorInterface
22
+ {
23
+ private $level;
24
+ private static $cache;
25
+
26
+ public function __construct($level = Logger::DEBUG)
27
+ {
28
+ $this->level = Logger::toMonologLevel($level);
29
+ }
30
+
31
+ /**
32
+ * @param array $record
33
+ * @return array
34
+ */
35
+ public function __invoke(array $record)
36
+ {
37
+ // return if the level is not high enough
38
+ if ($record['level'] < $this->level) {
39
+ return $record;
40
+ }
41
+
42
+ $record['extra']['hg'] = self::getMercurialInfo();
43
+
44
+ return $record;
45
+ }
46
+
47
+ private static function getMercurialInfo()
48
+ {
49
+ if (self::$cache) {
50
+ return self::$cache;
51
+ }
52
+
53
+ $result = explode(' ', trim(`hg id -nb`));
54
+ if (count($result) >= 3) {
55
+ return self::$cache = array(
56
+ 'branch' => $result[1],
57
+ 'revision' => $result[2],
58
+ );
59
+ }
60
+
61
+ return self::$cache = array();
62
+ }
63
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ /**
15
+ * Adds value of getmypid into records
16
+ *
17
+ * @author Andreas Hörnicke
18
+ */
19
+ class ProcessIdProcessor implements ProcessorInterface
20
+ {
21
+ /**
22
+ * @param array $record
23
+ * @return array
24
+ */
25
+ public function __invoke(array $record)
26
+ {
27
+ $record['extra']['process_id'] = getmypid();
28
+
29
+ return $record;
30
+ }
31
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/ProcessorInterface.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ /**
15
+ * An optional interface to allow labelling Monolog processors.
16
+ *
17
+ * @author Nicolas Grekas <p@tchwork.com>
18
+ */
19
+ interface ProcessorInterface
20
+ {
21
+ /**
22
+ * @return array The processed records
23
+ */
24
+ public function __invoke(array $records);
25
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ use Monolog\Utils;
15
+
16
+ /**
17
+ * Processes a record's message according to PSR-3 rules
18
+ *
19
+ * It replaces {foo} with the value from $context['foo']
20
+ *
21
+ * @author Jordi Boggiano <j.boggiano@seld.be>
22
+ */
23
+ class PsrLogMessageProcessor implements ProcessorInterface
24
+ {
25
+ /**
26
+ * @param array $record
27
+ * @return array
28
+ */
29
+ public function __invoke(array $record)
30
+ {
31
+ if (false === strpos($record['message'], '{')) {
32
+ return $record;
33
+ }
34
+
35
+ $replacements = array();
36
+ foreach ($record['context'] as $key => $val) {
37
+ if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val, "__toString"))) {
38
+ $replacements['{'.$key.'}'] = $val;
39
+ } elseif (is_object($val)) {
40
+ $replacements['{'.$key.'}'] = '[object '.Utils::getClass($val).']';
41
+ } else {
42
+ $replacements['{'.$key.'}'] = '['.gettype($val).']';
43
+ }
44
+ }
45
+
46
+ $record['message'] = strtr($record['message'], $replacements);
47
+
48
+ return $record;
49
+ }
50
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ /**
15
+ * Adds a tags array into record
16
+ *
17
+ * @author Martijn Riemers
18
+ */
19
+ class TagProcessor implements ProcessorInterface
20
+ {
21
+ private $tags;
22
+
23
+ public function __construct(array $tags = array())
24
+ {
25
+ $this->setTags($tags);
26
+ }
27
+
28
+ public function addTags(array $tags = array())
29
+ {
30
+ $this->tags = array_merge($this->tags, $tags);
31
+ }
32
+
33
+ public function setTags(array $tags = array())
34
+ {
35
+ $this->tags = $tags;
36
+ }
37
+
38
+ public function __invoke(array $record)
39
+ {
40
+ $record['extra']['tags'] = $this->tags;
41
+
42
+ return $record;
43
+ }
44
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ use Monolog\ResettableInterface;
15
+
16
+ /**
17
+ * Adds a unique identifier into records
18
+ *
19
+ * @author Simon Mönch <sm@webfactory.de>
20
+ */
21
+ class UidProcessor implements ProcessorInterface, ResettableInterface
22
+ {
23
+ private $uid;
24
+
25
+ public function __construct($length = 7)
26
+ {
27
+ if (!is_int($length) || $length > 32 || $length < 1) {
28
+ throw new \InvalidArgumentException('The uid length must be an integer between 1 and 32');
29
+ }
30
+
31
+
32
+ $this->uid = $this->generateUid($length);
33
+ }
34
+
35
+ public function __invoke(array $record)
36
+ {
37
+ $record['extra']['uid'] = $this->uid;
38
+
39
+ return $record;
40
+ }
41
+
42
+ /**
43
+ * @return string
44
+ */
45
+ public function getUid()
46
+ {
47
+ return $this->uid;
48
+ }
49
+
50
+ public function reset()
51
+ {
52
+ $this->uid = $this->generateUid(strlen($this->uid));
53
+ }
54
+
55
+ private function generateUid($length)
56
+ {
57
+ return substr(hash('md5', uniqid('', true)), 0, $length);
58
+ }
59
+ }
common/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog\Processor;
13
+
14
+ /**
15
+ * Injects url/method and remote IP of the current web request in all records
16
+ *
17
+ * @author Jordi Boggiano <j.boggiano@seld.be>
18
+ */
19
+ class WebProcessor implements ProcessorInterface
20
+ {
21
+ /**
22
+ * @var array|\ArrayAccess
23
+ */
24
+ protected $serverData;
25
+
26
+ /**
27
+ * Default fields
28
+ *
29
+ * Array is structured as [key in record.extra => key in $serverData]
30
+ *
31
+ * @var array
32
+ */
33
+ protected $extraFields = array(
34
+ 'url' => 'REQUEST_URI',
35
+ 'ip' => 'REMOTE_ADDR',
36
+ 'http_method' => 'REQUEST_METHOD',
37
+ 'server' => 'SERVER_NAME',
38
+ 'referrer' => 'HTTP_REFERER',
39
+ );
40
+
41
+ /**
42
+ * @param array|\ArrayAccess $serverData Array or object w/ ArrayAccess that provides access to the $_SERVER data
43
+ * @param array|null $extraFields Field names and the related key inside $serverData to be added. If not provided it defaults to: url, ip, http_method, server, referrer
44
+ */
45
+ public function __construct($serverData = null, array $extraFields = null)
46
+ {
47
+ if (null === $serverData) {
48
+ $this->serverData = &$_SERVER;
49
+ } elseif (is_array($serverData) || $serverData instanceof \ArrayAccess) {
50
+ $this->serverData = $serverData;
51
+ } else {
52
+ throw new \UnexpectedValueException('$serverData must be an array or object implementing ArrayAccess.');
53
+ }
54
+
55
+ if (null !== $extraFields) {
56
+ if (isset($extraFields[0])) {
57
+ foreach (array_keys($this->extraFields) as $fieldName) {
58
+ if (!in_array($fieldName, $extraFields)) {
59
+ unset($this->extraFields[$fieldName]);
60
+ }
61
+ }
62
+ } else {
63
+ $this->extraFields = $extraFields;
64
+ }
65
+ }
66
+ }
67
+
68
+ /**
69
+ * @param array $record
70
+ * @return array
71
+ */
72
+ public function __invoke(array $record)
73
+ {
74
+ // skip processing if for some reason request data
75
+ // is not present (CLI or wonky SAPIs)
76
+ if (!isset($this->serverData['REQUEST_URI'])) {
77
+ return $record;
78
+ }
79
+
80
+ $record['extra'] = $this->appendExtraFields($record['extra']);
81
+
82
+ return $record;
83
+ }
84
+
85
+ /**
86
+ * @param string $extraName
87
+ * @param string $serverName
88
+ * @return $this
89
+ */
90
+ public function addExtraField($extraName, $serverName)
91
+ {
92
+ $this->extraFields[$extraName] = $serverName;
93
+
94
+ return $this;
95
+ }
96
+
97
+ /**
98
+ * @param array $extra
99
+ * @return array
100
+ */
101
+ private function appendExtraFields(array $extra)
102
+ {
103
+ foreach ($this->extraFields as $extraName => $serverName) {
104
+ $extra[$extraName] = isset($this->serverData[$serverName]) ? $this->serverData[$serverName] : null;
105
+ }
106
+
107
+ if (isset($this->serverData['UNIQUE_ID'])) {
108
+ $extra['unique_id'] = $this->serverData['UNIQUE_ID'];
109
+ }
110
+
111
+ return $extra;
112
+ }
113
+ }
common/vendor/monolog/monolog/src/Monolog/Registry.php ADDED
@@ -0,0 +1,134 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog;
13
+
14
+ use InvalidArgumentException;
15
+
16
+ /**
17
+ * Monolog log registry
18
+ *
19
+ * Allows to get `Logger` instances in the global scope
20
+ * via static method calls on this class.
21
+ *
22
+ * <code>
23
+ * $application = new Monolog\Logger('application');
24
+ * $api = new Monolog\Logger('api');
25
+ *
26
+ * Monolog\Registry::addLogger($application);
27
+ * Monolog\Registry::addLogger($api);
28
+ *
29
+ * function testLogger()
30
+ * {
31
+ * Monolog\Registry::api()->addError('Sent to $api Logger instance');
32
+ * Monolog\Registry::application()->addError('Sent to $application Logger instance');
33
+ * }
34
+ * </code>
35
+ *
36
+ * @author Tomas Tatarko <tomas@tatarko.sk>
37
+ */
38
+ class Registry
39
+ {
40
+ /**
41
+ * List of all loggers in the registry (by named indexes)
42
+ *
43
+ * @var Logger[]
44
+ */
45
+ private static $loggers = array();
46
+
47
+ /**
48
+ * Adds new logging channel to the registry
49
+ *
50
+ * @param Logger $logger Instance of the logging channel
51
+ * @param string|null $name Name of the logging channel ($logger->getName() by default)
52
+ * @param bool $overwrite Overwrite instance in the registry if the given name already exists?
53
+ * @throws \InvalidArgumentException If $overwrite set to false and named Logger instance already exists
54
+ */
55
+ public static function addLogger(Logger $logger, $name = null, $overwrite = false)
56
+ {
57
+ $name = $name ?: $logger->getName();
58
+
59
+ if (isset(self::$loggers[$name]) && !$overwrite) {
60
+ throw new InvalidArgumentException('Logger with the given name already exists');
61
+ }
62
+
63
+ self::$loggers[$name] = $logger;
64
+ }
65
+
66
+ /**
67
+ * Checks if such logging channel exists by name or instance
68
+ *
69
+ * @param string|Logger $logger Name or logger instance
70
+ */
71
+ public static function hasLogger($logger)
72
+ {
73
+ if ($logger instanceof Logger) {
74
+ $index = array_search($logger, self::$loggers, true);
75
+
76
+ return false !== $index;
77
+ } else {
78
+ return isset(self::$loggers[$logger]);
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Removes instance from registry by name or instance
84
+ *
85
+ * @param string|Logger $logger Name or logger instance
86
+ */
87
+ public static function removeLogger($logger)
88
+ {
89
+ if ($logger instanceof Logger) {
90
+ if (false !== ($idx = array_search($logger, self::$loggers, true))) {
91
+ unset(self::$loggers[$idx]);
92
+ }
93
+ } else {
94
+ unset(self::$loggers[$logger]);
95
+ }
96
+ }
97
+
98
+ /**
99
+ * Clears the registry
100
+ */
101
+ public static function clear()
102
+ {
103
+ self::$loggers = array();
104
+ }
105
+
106
+ /**
107
+ * Gets Logger instance from the registry
108
+ *
109
+ * @param string $name Name of the requested Logger instance
110
+ * @throws \InvalidArgumentException If named Logger instance is not in the registry
111
+ * @return Logger Requested instance of Logger
112
+ */
113
+ public static function getInstance($name)
114
+ {
115
+ if (!isset(self::$loggers[$name])) {
116
+ throw new InvalidArgumentException(sprintf('Requested "%s" logger instance is not in the registry', $name));
117
+ }
118
+
119
+ return self::$loggers[$name];
120
+ }
121
+
122
+ /**
123
+ * Gets Logger instance from the registry via static method call
124
+ *
125
+ * @param string $name Name of the requested Logger instance
126
+ * @param array $arguments Arguments passed to static method call
127
+ * @throws \InvalidArgumentException If named Logger instance is not in the registry
128
+ * @return Logger Requested instance of Logger
129
+ */
130
+ public static function __callStatic($name, $arguments)
131
+ {
132
+ return self::getInstance($name);
133
+ }
134
+ }
common/vendor/monolog/monolog/src/Monolog/ResettableInterface.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog;
13
+
14
+ /**
15
+ * Handler or Processor implementing this interface will be reset when Logger::reset() is called.
16
+ *
17
+ * Resetting ends a log cycle gets them back to their initial state.
18
+ *
19
+ * Resetting a Handler or a Processor means flushing/cleaning all buffers, resetting internal
20
+ * state, and getting it back to a state in which it can receive log records again.
21
+ *
22
+ * This is useful in case you want to avoid logs leaking between two requests or jobs when you
23
+ * have a long running process like a worker or an application server serving multiple requests
24
+ * in one process.
25
+ *
26
+ * @author Grégoire Pineau <lyrixx@lyrixx.info>
27
+ */
28
+ interface ResettableInterface
29
+ {
30
+ public function reset();
31
+ }
common/vendor/monolog/monolog/src/Monolog/SignalHandler.php ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog;
13
+
14
+ use Psr\Log\LoggerInterface;
15
+ use Psr\Log\LogLevel;
16
+ use ReflectionExtension;
17
+
18
+ /**
19
+ * Monolog POSIX signal handler
20
+ *
21
+ * @author Robert Gust-Bardon <robert@gust-bardon.org>
22
+ */
23
+ class SignalHandler
24
+ {
25
+ private $logger;
26
+
27
+ private $previousSignalHandler = array();
28
+ private $signalLevelMap = array();
29
+ private $signalRestartSyscalls = array();
30
+
31
+ public function __construct(LoggerInterface $logger)
32
+ {
33
+ $this->logger = $logger;
34
+ }
35
+
36
+ public function registerSignalHandler($signo, $level = LogLevel::CRITICAL, $callPrevious = true, $restartSyscalls = true, $async = true)
37
+ {
38
+ if (!extension_loaded('pcntl') || !function_exists('pcntl_signal')) {
39
+ return $this;
40
+ }
41
+
42
+ if ($callPrevious) {
43
+ if (function_exists('pcntl_signal_get_handler')) {
44
+ $handler = pcntl_signal_get_handler($signo);
45
+ if ($handler === false) {
46
+ return $this;
47
+ }
48
+ $this->previousSignalHandler[$signo] = $handler;
49
+ } else {
50
+ $this->previousSignalHandler[$signo] = true;
51
+ }
52
+ } else {
53
+ unset($this->previousSignalHandler[$signo]);
54
+ }
55
+ $this->signalLevelMap[$signo] = $level;
56
+ $this->signalRestartSyscalls[$signo] = $restartSyscalls;
57
+
58
+ if (function_exists('pcntl_async_signals') && $async !== null) {
59
+ pcntl_async_signals($async);
60
+ }
61
+
62
+ pcntl_signal($signo, array($this, 'handleSignal'), $restartSyscalls);
63
+
64
+ return $this;
65
+ }
66
+
67
+ public function handleSignal($signo, array $siginfo = null)
68
+ {
69
+ static $signals = array();
70
+
71
+ if (!$signals && extension_loaded('pcntl')) {
72
+ $pcntl = new ReflectionExtension('pcntl');
73
+ $constants = $pcntl->getConstants();
74
+ if (!$constants) {
75
+ // HHVM 3.24.2 returns an empty array.
76
+ $constants = get_defined_constants(true);
77
+ $constants = $constants['Core'];
78
+ }
79
+ foreach ($constants as $name => $value) {
80
+ if (substr($name, 0, 3) === 'SIG' && $name[3] !== '_' && is_int($value)) {
81
+ $signals[$value] = $name;
82
+ }
83
+ }
84
+ unset($constants);
85
+ }
86
+
87
+ $level = isset($this->signalLevelMap[$signo]) ? $this->signalLevelMap[$signo] : LogLevel::CRITICAL;
88
+ $signal = isset($signals[$signo]) ? $signals[$signo] : $signo;
89
+ $context = isset($siginfo) ? $siginfo : array();
90
+ $this->logger->log($level, sprintf('Program received signal %s', $signal), $context);
91
+
92
+ if (!isset($this->previousSignalHandler[$signo])) {
93
+ return;
94
+ }
95
+
96
+ if ($this->previousSignalHandler[$signo] === true || $this->previousSignalHandler[$signo] === SIG_DFL) {
97
+ if (extension_loaded('pcntl') && function_exists('pcntl_signal') && function_exists('pcntl_sigprocmask') && function_exists('pcntl_signal_dispatch')
98
+ && extension_loaded('posix') && function_exists('posix_getpid') && function_exists('posix_kill')) {
99
+ $restartSyscalls = isset($this->restartSyscalls[$signo]) ? $this->restartSyscalls[$signo] : true;
100
+ pcntl_signal($signo, SIG_DFL, $restartSyscalls);
101
+ pcntl_sigprocmask(SIG_UNBLOCK, array($signo), $oldset);
102
+ posix_kill(posix_getpid(), $signo);
103
+ pcntl_signal_dispatch();
104
+ pcntl_sigprocmask(SIG_SETMASK, $oldset);
105
+ pcntl_signal($signo, array($this, 'handleSignal'), $restartSyscalls);
106
+ }
107
+ } elseif (is_callable($this->previousSignalHandler[$signo])) {
108
+ if (PHP_VERSION_ID >= 70100) {
109
+ $this->previousSignalHandler[$signo]($signo, $siginfo);
110
+ } else {
111
+ $this->previousSignalHandler[$signo]($signo);
112
+ }
113
+ }
114
+ }
115
+ }
common/vendor/monolog/monolog/src/Monolog/Utils.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /*
4
+ * This file is part of the Monolog package.
5
+ *
6
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
7
+ *
8
+ * For the full copyright and license information, please view the LICENSE
9
+ * file that was distributed with this source code.
10
+ */
11
+
12
+ namespace Monolog;
13
+
14
+ class Utils
15
+ {
16
+ /**
17
+ * @internal
18
+ */
19
+ public static function getClass($object)
20
+ {
21
+ $class = \get_class($object);
22
+
23
+ return 'c' === $class[0] && 0 === strpos($class, "class@anonymous\0") ? get_parent_class($class).'@anonymous' : $class;
24
+ }
25
+ }
common/vendor/psr/log/Psr/Log/AbstractLogger.php ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Log;
4
+
5
+ /**
6
+ * This is a simple Logger implementation that other Loggers can inherit from.
7
+ *
8
+ * It simply delegates all log-level-specific methods to the `log` method to
9
+ * reduce boilerplate code that a simple Logger that does the same thing with
10
+ * messages regardless of the error level has to implement.
11
+ */
12
+ abstract class AbstractLogger implements LoggerInterface
13
+ {
14
+ /**
15
+ * System is unusable.
16
+ *
17
+ * @param string $message
18
+ * @param array $context
19
+ *
20
+ * @return void
21
+ */
22
+ public function emergency($message, array $context = array())
23
+ {
24
+ $this->log(LogLevel::EMERGENCY, $message, $context);
25
+ }
26
+
27
+ /**
28
+ * Action must be taken immediately.
29
+ *
30
+ * Example: Entire website down, database unavailable, etc. This should
31
+ * trigger the SMS alerts and wake you up.
32
+ *
33
+ * @param string $message
34
+ * @param array $context
35
+ *
36
+ * @return void
37
+ */
38
+ public function alert($message, array $context = array())
39
+ {
40
+ $this->log(LogLevel::ALERT, $message, $context);
41
+ }
42
+
43
+ /**
44
+ * Critical conditions.
45
+ *
46
+ * Example: Application component unavailable, unexpected exception.
47
+ *
48
+ * @param string $message
49
+ * @param array $context
50
+ *
51
+ * @return void
52
+ */
53
+ public function critical($message, array $context = array())
54
+ {
55
+ $this->log(LogLevel::CRITICAL, $message, $context);
56
+ }
57
+
58
+ /**
59
+ * Runtime errors that do not require immediate action but should typically
60
+ * be logged and monitored.
61
+ *
62
+ * @param string $message
63
+ * @param array $context
64
+ *
65
+ * @return void
66
+ */
67
+ public function error($message, array $context = array())
68
+ {
69
+ $this->log(LogLevel::ERROR, $message, $context);
70
+ }
71
+
72
+ /**
73
+ * Exceptional occurrences that are not errors.
74
+ *
75
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
76
+ * that are not necessarily wrong.
77
+ *
78
+ * @param string $message
79
+ * @param array $context
80
+ *
81
+ * @return void
82
+ */
83
+ public function warning($message, array $context = array())
84
+ {
85
+ $this->log(LogLevel::WARNING, $message, $context);
86
+ }
87
+
88
+ /**
89
+ * Normal but significant events.
90
+ *
91
+ * @param string $message
92
+ * @param array $context
93
+ *
94
+ * @return void
95
+ */
96
+ public function notice($message, array $context = array())
97
+ {
98
+ $this->log(LogLevel::NOTICE, $message, $context);
99
+ }
100
+
101
+ /**
102
+ * Interesting events.
103
+ *
104
+ * Example: User logs in, SQL logs.
105
+ *
106
+ * @param string $message
107
+ * @param array $context
108
+ *
109
+ * @return void
110
+ */
111
+ public function info($message, array $context = array())
112
+ {
113
+ $this->log(LogLevel::INFO, $message, $context);
114
+ }
115
+
116
+ /**
117
+ * Detailed debug information.
118
+ *
119
+ * @param string $message
120
+ * @param array $context
121
+ *
122
+ * @return void
123
+ */
124
+ public function debug($message, array $context = array())
125
+ {
126
+ $this->log(LogLevel::DEBUG, $message, $context);
127
+ }
128
+ }
common/vendor/psr/log/Psr/Log/InvalidArgumentException.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Log;
4
+
5
+ class InvalidArgumentException extends \InvalidArgumentException
6
+ {
7
+ }
common/vendor/psr/log/Psr/Log/LogLevel.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Log;
4
+
5
+ /**
6
+ * Describes log levels.
7
+ */
8
+ class LogLevel
9
+ {
10
+ const EMERGENCY = 'emergency';
11
+ const ALERT = 'alert';
12
+ const CRITICAL = 'critical';
13
+ const ERROR = 'error';
14
+ const WARNING = 'warning';
15
+ const NOTICE = 'notice';
16
+ const INFO = 'info';
17
+ const DEBUG = 'debug';
18
+ }
common/vendor/psr/log/Psr/Log/LoggerAwareInterface.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Log;
4
+
5
+ /**
6
+ * Describes a logger-aware instance.
7
+ */
8
+ interface LoggerAwareInterface
9
+ {
10
+ /**
11
+ * Sets a logger instance on the object.
12
+ *
13
+ * @param LoggerInterface $logger
14
+ *
15
+ * @return void
16
+ */
17
+ public function setLogger(LoggerInterface $logger);
18
+ }
common/vendor/psr/log/Psr/Log/LoggerAwareTrait.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Log;
4
+
5
+ /**
6
+ * Basic Implementation of LoggerAwareInterface.
7
+ */
8
+ trait LoggerAwareTrait
9
+ {
10
+ /**
11
+ * The logger instance.
12
+ *
13
+ * @var LoggerInterface
14
+ */
15
+ protected $logger;
16
+
17
+ /**
18
+ * Sets a logger.
19
+ *
20
+ * @param LoggerInterface $logger
21
+ */
22
+ public function setLogger(LoggerInterface $logger)
23
+ {
24
+ $this->logger = $logger;
25
+ }
26
+ }
common/vendor/psr/log/Psr/Log/LoggerInterface.php ADDED
@@ -0,0 +1,123 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Log;
4
+
5
+ /**
6
+ * Describes a logger instance.
7
+ *
8
+ * The message MUST be a string or object implementing __toString().
9
+ *
10
+ * The message MAY contain placeholders in the form: {foo} where foo
11
+ * will be replaced by the context data in key "foo".
12
+ *
13
+ * The context array can contain arbitrary data. The only assumption that
14
+ * can be made by implementors is that if an Exception instance is given
15
+ * to produce a stack trace, it MUST be in a key named "exception".
16
+ *
17
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
18
+ * for the full interface specification.
19
+ */
20
+ interface LoggerInterface
21
+ {
22
+ /**
23
+ * System is unusable.
24
+ *
25
+ * @param string $message
26
+ * @param array $context
27
+ *
28
+ * @return void
29
+ */
30
+ public function emergency($message, array $context = array());
31
+
32
+ /**
33
+ * Action must be taken immediately.
34
+ *
35
+ * Example: Entire website down, database unavailable, etc. This should
36
+ * trigger the SMS alerts and wake you up.
37
+ *
38
+ * @param string $message
39
+ * @param array $context
40
+ *
41
+ * @return void
42
+ */
43
+ public function alert($message, array $context = array());
44
+
45
+ /**
46
+ * Critical conditions.
47
+ *
48
+ * Example: Application component unavailable, unexpected exception.
49
+ *
50
+ * @param string $message
51
+ * @param array $context
52
+ *
53
+ * @return void
54
+ */
55
+ public function critical($message, array $context = array());
56
+
57
+ /**
58
+ * Runtime errors that do not require immediate action but should typically
59
+ * be logged and monitored.
60
+ *
61
+ * @param string $message
62
+ * @param array $context
63
+ *
64
+ * @return void
65
+ */
66
+ public function error($message, array $context = array());
67
+
68
+ /**
69
+ * Exceptional occurrences that are not errors.
70
+ *
71
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
72
+ * that are not necessarily wrong.
73
+ *
74
+ * @param string $message
75
+ * @param array $context
76
+ *
77
+ * @return void
78
+ */
79
+ public function warning($message, array $context = array());
80
+
81
+ /**
82
+ * Normal but significant events.
83
+ *
84
+ * @param string $message
85
+ * @param array $context
86
+ *
87
+ * @return void
88
+ */
89
+ public function notice($message, array $context = array());
90
+
91
+ /**
92
+ * Interesting events.
93
+ *
94
+ * Example: User logs in, SQL logs.
95
+ *
96
+ * @param string $message
97
+ * @param array $context
98
+ *
99
+ * @return void
100
+ */
101
+ public function info($message, array $context = array());
102
+
103
+ /**
104
+ * Detailed debug information.
105
+ *
106
+ * @param string $message
107
+ * @param array $context
108
+ *
109
+ * @return void
110
+ */
111
+ public function debug($message, array $context = array());
112
+
113
+ /**
114
+ * Logs with an arbitrary level.
115
+ *
116
+ * @param mixed $level
117
+ * @param string $message
118
+ * @param array $context
119
+ *
120
+ * @return void
121
+ */
122
+ public function log($level, $message, array $context = array());
123
+ }
common/vendor/psr/log/Psr/Log/LoggerTrait.php ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Log;
4
+
5
+ /**
6
+ * This is a simple Logger trait that classes unable to extend AbstractLogger
7
+ * (because they extend another class, etc) can include.
8
+ *
9
+ * It simply delegates all log-level-specific methods to the `log` method to
10
+ * reduce boilerplate code that a simple Logger that does the same thing with
11
+ * messages regardless of the error level has to implement.
12
+ */
13
+ trait LoggerTrait
14
+ {
15
+ /**
16
+ * System is unusable.
17
+ *
18
+ * @param string $message
19
+ * @param array $context
20
+ *
21
+ * @return void
22
+ */
23
+ public function emergency($message, array $context = array())
24
+ {
25
+ $this->log(LogLevel::EMERGENCY, $message, $context);
26
+ }
27
+
28
+ /**
29
+ * Action must be taken immediately.
30
+ *
31
+ * Example: Entire website down, database unavailable, etc. This should
32
+ * trigger the SMS alerts and wake you up.
33
+ *
34
+ * @param string $message
35
+ * @param array $context
36
+ *
37
+ * @return void
38
+ */
39
+ public function alert($message, array $context = array())
40
+ {
41
+ $this->log(LogLevel::ALERT, $message, $context);
42
+ }
43
+
44
+ /**
45
+ * Critical conditions.
46
+ *
47
+ * Example: Application component unavailable, unexpected exception.
48
+ *
49
+ * @param string $message
50
+ * @param array $context
51
+ *
52
+ * @return void
53
+ */
54
+ public function critical($message, array $context = array())
55
+ {
56
+ $this->log(LogLevel::CRITICAL, $message, $context);
57
+ }
58
+
59
+ /**
60
+ * Runtime errors that do not require immediate action but should typically
61
+ * be logged and monitored.
62
+ *
63
+ * @param string $message
64
+ * @param array $context
65
+ *
66
+ * @return void
67
+ */
68
+ public function error($message, array $context = array())
69
+ {
70
+ $this->log(LogLevel::ERROR, $message, $context);
71
+ }
72
+
73
+ /**
74
+ * Exceptional occurrences that are not errors.
75
+ *
76
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
77
+ * that are not necessarily wrong.
78
+ *
79
+ * @param string $message
80
+ * @param array $context
81
+ *
82
+ * @return void
83
+ */
84
+ public function warning($message, array $context = array())
85
+ {
86
+ $this->log(LogLevel::WARNING, $message, $context);
87
+ }
88
+
89
+ /**
90
+ * Normal but significant events.
91
+ *
92
+ * @param string $message
93
+ * @param array $context
94
+ *
95
+ * @return void
96
+ */
97
+ public function notice($message, array $context = array())
98
+ {
99
+ $this->log(LogLevel::NOTICE, $message, $context);
100
+ }
101
+
102
+ /**
103
+ * Interesting events.
104
+ *
105
+ * Example: User logs in, SQL logs.
106
+ *
107
+ * @param string $message
108
+ * @param array $context
109
+ *
110
+ * @return void
111
+ */
112
+ public function info($message, array $context = array())
113
+ {
114
+ $this->log(LogLevel::INFO, $message, $context);
115
+ }
116
+
117
+ /**
118
+ * Detailed debug information.
119
+ *
120
+ * @param string $message
121
+ * @param array $context
122
+ *
123
+ * @return void
124
+ */
125
+ public function debug($message, array $context = array())
126
+ {
127
+ $this->log(LogLevel::DEBUG, $message, $context);
128
+ }
129
+
130
+ /**
131
+ * Logs with an arbitrary level.
132
+ *
133
+ * @param mixed $level
134
+ * @param string $message
135
+ * @param array $context
136
+ *
137
+ * @return void
138
+ */
139
+ abstract public function log($level, $message, array $context = array());
140
+ }
common/vendor/psr/log/Psr/Log/NullLogger.php ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Psr\Log;
4
+
5
+ /**
6
+ * This Logger can be used to avoid conditional log calls.
7
+ *
8
+ * Logging should always be optional, and if no logger is provided to your
9
+ * library creating a NullLogger instance to have something to throw logs at
10
+ * is a good way to avoid littering your code with `if ($this->logger) { }`
11
+ * blocks.
12
+ */
13
+ class NullLogger extends AbstractLogger
14
+ {
15
+ /**
16
+ * Logs with an arbitrary level.
17
+ *
18
+ * @param mixed $level
19
+ * @param string $message
20
+ * @param array $context
21
+ *
22
+ * @return void
23
+ */
24
+ public function log($level, $message, array $context = array())
25
+ {
26
+ // noop
27
+ }
28
+ }
event-tickets.php CHANGED
@@ -3,7 +3,7 @@
3
  Plugin Name: Event Tickets
4
  Plugin URI: http://m.tri.be/1acb
5
  Description: Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event.
6
- Version: 4.10.7.2
7
  Author: Modern Tribe, Inc.
8
  Author URI: http://m.tri.be/28
9
  License: GPLv2 or later
3
  Plugin Name: Event Tickets
4
  Plugin URI: http://m.tri.be/1acb
5
  Description: Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event.
6
+ Version: 4.10.8
7
  Author: Modern Tribe, Inc.
8
  Author URI: http://m.tri.be/28
9
  License: GPLv2 or later
lang/event-tickets-af.po DELETED
@@ -1,5985 +0,0 @@
1
- # Translation of Plugins - Event Tickets - Stable (latest release) in Afrikaans
2
- # This file is distributed under the same license as the Plugins - Event Tickets - Stable (latest release) package.
3
- msgid ""
4
- msgstr ""
5
- "PO-Revision-Date: 2017-01-29 05:43:25+0000\n"
6
- "MIME-Version: 1.0\n"
7
- "Content-Type: text/plain; charset=UTF-8\n"
8
- "Content-Transfer-Encoding: 8bit\n"
9
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
- "X-Generator: GlotPress/2.4.0-alpha\n"
11
- "Language: af_ZA\n"
12
- "Project-Id-Version: Plugins - Event Tickets - Stable (latest release)\n"
13
-
14
- #: src/admin-views/tribe-options-tickets.php:307
15
- msgid "Email address PayPal tickets customers will receive confirmation from. Leave empty to use the default WordPress site email address."
16
- msgstr ""
17
-
18
- #: src/modules/blocks/attendees/template.js:119
19
- #: src/resources/js/app/blocks.js:46894
20
- msgid "Display Subtitle"
21
- msgstr ""
22
-
23
- #: src/modules/blocks/attendees/template.js:114
24
- #: src/resources/js/app/blocks.js:46889
25
- msgid "Display Title"
26
- msgstr ""
27
-
28
- #: src/modules/blocks/attendees/template.js:112
29
- #: src/resources/js/app/blocks.js:46887
30
- msgid "Attendees Settings"
31
- msgstr ""
32
-
33
- #: src/modules/blocks/ticket/container-header/title/template.js:48
34
- #: src/resources/js/app/blocks.js:44562
35
- msgid "Ticket Type *"
36
- msgstr ""
37
-
38
- #: src/modules/blocks/ticket/container-header/title/template.js:32
39
- #: src/resources/js/app/blocks.js:44550
40
- msgid "This ticket has Additional Fields configured."
41
- msgstr ""
42
-
43
- #: src/modules/blocks/rsvp/header-image/template.js:26
44
- #: src/modules/blocks/tickets/header-image/template.js:26
45
- #: src/resources/js/app/blocks.js:42536 src/resources/js/app/blocks.js:43774
46
- msgid "Select an image from your Media Library to display on emailed tickets and RSVPs. For best results, use a .jpg, .png, or .gif at least 1160px wide."
47
- msgstr ""
48
-
49
- #: src/modules/blocks/rsvp/duration/template.js:24
50
- #: src/modules/blocks/ticket/container-content/advanced-options/duration/template.js:44
51
- #: src/resources/js/app/blocks.js:41501 src/resources/js/app/blocks.js:45526
52
- msgid "There is an error with the selected sales duration. Please fix the issue before saving."
53
- msgstr ""
54
-
55
- #: common/src/views/promoter/auth.php:84
56
- msgid "Terms"
57
- msgstr ""
58
-
59
- #: common/src/views/promoter/auth.php:83
60
- msgid "and"
61
- msgstr ""
62
-
63
- #: common/src/views/promoter/auth.php:82
64
- msgid "Privacy"
65
- msgstr ""
66
-
67
- #: common/src/views/promoter/auth.php:81
68
- msgid "Promoter All rights reserved."
69
- msgstr ""
70
-
71
- #: common/src/views/promoter/auth.php:68
72
- msgid "Authorize Promoter"
73
- msgstr ""
74
-
75
- #: common/src/views/promoter/auth.php:60
76
- msgid "Please authorize to continue onboarding."
77
- msgstr ""
78
-
79
- #: common/src/views/promoter/auth.php:58
80
- msgid "Sorry, unable to authenticate your site. Please contact Promoter support."
81
- msgstr ""
82
-
83
- #: common/src/views/promoter/auth.php:52
84
- msgid "Please log out and log back in as an admin account"
85
- msgstr ""
86
-
87
- #: common/src/views/promoter/auth.php:50
88
- msgid "You do not have access to authenticate this site."
89
- msgstr ""
90
-
91
- #: common/src/views/promoter/auth.php:45
92
- msgid "Please log in to continue"
93
- msgstr ""
94
-
95
- #: common/src/views/promoter/auth.php:40
96
- msgid "You're ready to begin using Promoter! Please close this window."
97
- msgstr ""
98
-
99
- #: common/src/views/promoter/auth.php:34
100
- msgid "Promoter would like to sync with your site"
101
- msgstr ""
102
-
103
- #: common/src/admin-views/tribe-options-licenses.php:43
104
- msgid "Licenses for Multisites"
105
- msgstr ""
106
-
107
- #: common/src/admin-views/tribe-options-licenses.php:37
108
- msgid "Expired license keys and subscriptions"
109
- msgstr ""
110
-
111
- #: common/src/admin-views/tribe-options-licenses.php:34
112
- msgid "Moving your license keys"
113
- msgstr ""
114
-
115
- #: common/src/admin-views/tribe-options-licenses.php:31
116
- msgid "View and manage your license keys"
117
- msgstr ""
118
-
119
- #: common/src/admin-views/tribe-options-licenses.php:28
120
- msgid "Why am I being told my license key is out of installs?"
121
- msgstr ""
122
-
123
- #: common/src/admin-views/tribe-options-licenses.php:23
124
- msgid "Helpful Links:"
125
- msgstr ""
126
-
127
- #: common/src/admin-views/tribe-options-licenses.php:10
128
- msgid "In order to register a plugin license, you'll first need to %1$sdownload and install%2$s the plugin you purchased. You can download the latest version of your plugin(s) from %3$syour account's downloads page%4$s. Once the plugin is installed and activated on this site, the license key field will appear below."
129
- msgstr ""
130
-
131
- #: common/src/admin-views/tribe-options-licenses.php:5
132
- msgid "If you've purchased a premium add-on, you'll need to enter your license key here in order to have access to automatic updates when new versions are available."
133
- msgstr ""
134
-
135
- #: common/src/Tribe/Plugins_API.php:84
136
- msgid "With Promoter, you’ll connect with your community via email through every stage of your event, bolster event attendance, and manage notifications more efficiently than ever. Increase event attendance and engagement by automatically sending reminders for on-sale dates, event times and more."
137
- msgstr ""
138
-
139
- #: common/src/views/promoter/auth.php:29 common/src/views/promoter/auth.php:77
140
- #: common/src/Tribe/Plugins_API.php:80 common/src/Tribe/Promoter/PUE.php:28
141
- msgid "Promoter"
142
- msgstr ""
143
-
144
- #: src/views/blocks/tickets/content-inactive.php:18
145
- #: src/modules/blocks/tickets/container/template.js:45
146
- #: src/resources/js/app/blocks.js:44105
147
- msgid "Tickets are no longer available"
148
- msgstr ""
149
-
150
- #: src/views/blocks/rsvp/content-inactive.php:18
151
- msgid "RSVPs are not yet available"
152
- msgstr ""
153
-
154
- #: src/views/blocks/rsvp/content-inactive.php:18
155
- msgid "RSVPs are no longer available"
156
- msgstr ""
157
-
158
- #: src/views/blocks/rsvp/form/submit-login.php:23
159
- msgid "Log in to RSVP"
160
- msgstr ""
161
-
162
- #: src/views/registration/attendees/success.php:15
163
- msgid "Attendee information has been saved."
164
- msgstr ""
165
-
166
- #: src/views/registration/attendees/error.php:19
167
- msgid "An error occurred while saving, please try again."
168
- msgstr ""
169
-
170
- #: src/admin-views/tpp-orders.php:103
171
- msgid "Total Tickets Ordered"
172
- msgstr ""
173
-
174
- #: src/admin-views/tpp-orders.php:90
175
- msgid "Total Ticket Sales"
176
- msgstr ""
177
-
178
- #: src/admin-views/tpp-orders.php:61
179
- msgid "Sales by Ticket Type"
180
- msgstr ""
181
-
182
- #: src/admin-views/admin-welcome-message.php:78
183
- msgid "Your ratings keep us focused on making our plugins as useful as possible so we can help other WordPress users just like you."
184
- msgstr ""
185
-
186
- #: src/admin-views/admin-welcome-message.php:65
187
- msgid "Add me to the list"
188
- msgstr ""
189
-
190
- #: src/admin-views/admin-welcome-message.php:59
191
- msgid "Stay in touch with Event Tickets and our entire family of events management tools. We share news, occasional discounts, and hilarious gifs."
192
- msgstr ""
193
-
194
- #: src/admin-views/admin-welcome-message.php:58
195
- msgid "Don't Miss Out"
196
- msgstr ""
197
-
198
- #: src/admin-views/admin-welcome-message.php:54
199
- msgid "Get the latest block editor news"
200
- msgstr ""
201
-
202
- #: src/admin-views/admin-welcome-message.php:54
203
- msgid "Gearing up with Gutenberg?"
204
- msgstr ""
205
-
206
- #: src/admin-views/admin-welcome-message.php:53
207
- msgid "View the latest changelog"
208
- msgstr ""
209
-
210
- #: src/admin-views/admin-welcome-message.php:53
211
- msgid "Frequent maintenance releases keep your ticket sales running smoothly."
212
- msgstr ""
213
-
214
- #: src/admin-views/admin-welcome-message.php:52
215
- msgid "The Latest and Greatest"
216
- msgstr ""
217
-
218
- #: src/admin-views/admin-welcome-message.php:44
219
- msgid "Submit a Help Desk Request"
220
- msgstr ""
221
-
222
- #: src/admin-views/admin-welcome-message.php:43
223
- msgid "Available Translations"
224
- msgstr ""
225
-
226
- #: src/admin-views/admin-welcome-message.php:42
227
- msgid "Search the Knowledgebase"
228
- msgstr ""
229
-
230
- #: src/admin-views/admin-welcome-message.php:40
231
- msgid "We’ve got your back every step of the way."
232
- msgstr ""
233
-
234
- #: src/admin-views/admin-welcome-message.php:39
235
- msgid "Resources and Support"
236
- msgstr ""
237
-
238
- #: src/admin-views/admin-welcome-message.php:32
239
- msgid "Key Features"
240
- msgstr ""
241
-
242
- #: src/admin-views/admin-welcome-message.php:30
243
- msgid "Start strong with these helpful resources."
244
- msgstr ""
245
-
246
- #: src/admin-views/admin-welcome-message.php:20
247
- msgid "to create your very first ticket!"
248
- msgstr ""
249
-
250
- #: src/admin-views/admin-welcome-message.php:19
251
- msgid "section of the admin"
252
- msgstr ""
253
-
254
- #: src/admin-views/admin-welcome-message.php:17
255
- msgid "the"
256
- msgstr ""
257
-
258
- #: src/admin-views/admin-welcome-message.php:15
259
- msgid "Check out the resources below for a comprehensive intro to the plugin, or head to"
260
- msgstr ""
261
-
262
- #: src/admin-views/admin-welcome-message.php:9
263
- msgid "Event Tickets is all about getting tickets into the hands of your attendees as efficiently as possible. No muss, no fuss&mdash;just one seamless transaction on your site."
264
- msgstr ""
265
-
266
- #: src/admin-views/tribe-options-tickets.php:113
267
- msgid "If this number is less than the number of tickets left for sale on your event, this will prevent the \"# of tickets left\" text from showing on your website. You can leave this blank if you would like to always show the text."
268
- msgstr ""
269
-
270
- #: src/admin-views/tribe-options-tickets.php:112
271
- msgid "Display # tickets left threshold"
272
- msgstr ""
273
-
274
- #: src/admin-views/tribe-options-tickets.php:93
275
- #: src/admin-views/tribe-options-tickets.php:103
276
- msgid "This setting only impacts events made with the classic editor."
277
- msgstr ""
278
-
279
- #: src/Tribe/Assets.php:193
280
- msgid "There is unsaved attendee information. Are you sure you want to continue?"
281
- msgstr ""
282
-
283
- #: src/Tribe/Editor/Attendee_Registration.php:119
284
- msgid "Back to Editor"
285
- msgstr ""
286
-
287
- #: src/Tribe/Editor/Attendee_Registration.php:92
288
- msgid "Attendee Registration fields saved. Make additional changes or %1$s"
289
- msgstr ""
290
-
291
- #: src/Tribe/Editor/Attendee_Registration.php:90
292
- msgid "return to the content editor"
293
- msgstr ""
294
-
295
- #: src/Tribe/Main.php:400
296
- msgid "Sorry, Event Tickets requires PHP %s or higher. Talk to your Web host about moving you to a newer version of PHP."
297
- msgstr ""
298
-
299
- #: src/Tribe/Main.php:396
300
- msgid "Sorry, Event Tickets requires WordPress %s or higher. Please upgrade your WordPress install."
301
- msgstr ""
302
-
303
- #: src/Tribe/Status/Abstract_Commerce.php:275
304
- msgid "Total Ordered counts tickets from orders of any status, including pending and refunded."
305
- msgstr ""
306
-
307
- #: src/Tribe/Status/Abstract_Commerce.php:255
308
- msgid "Total Sales counts tickets from all completed orders."
309
- msgstr ""
310
-
311
- #: src/Tribe/Status/Abstract_Commerce.php:235
312
- msgid "Sold counts tickets from completed orders only."
313
- msgstr ""
314
-
315
- #: src/Tribe/Status/Abstract_Commerce.php:210
316
- msgid "pending order completion"
317
- msgstr ""
318
-
319
- #: src/Tribe/Commerce/Currency.php:275
320
- msgid "Russian Ruble (RUB)"
321
- msgstr ""
322
-
323
- #: src/Tribe/Commerce/Currency.php:227
324
- msgid "Indian Rupee (INR)"
325
- msgstr ""
326
-
327
- #: src/functions/php-min-version.php:76
328
- msgid "Contact your Host or your system administrator and ask to upgrade to the latest version of PHP."
329
- msgstr ""
330
-
331
- #: src/functions/php-min-version.php:74
332
- msgid "To allow better control over dates, advanced security improvements and performance gain."
333
- msgstr ""
334
-
335
- #: src/functions/php-min-version.php:64
336
- msgid "<b>%1$s</b> requires <b>PHP %2$s</b> or higher."
337
- msgid_plural "<b>%1$s</b> require <b>PHP %2$s</b> or higher."
338
- msgstr[0] ""
339
- msgstr[1] ""
340
-
341
- #: src/functions/php-min-version.php:52
342
- msgctxt "Plugin A\",\" Plugin B"
343
- msgid ", "
344
- msgstr ""
345
-
346
- #: src/functions/php-min-version.php:51
347
- msgctxt "Plugin A \"and\" Plugin B"
348
- msgid " and "
349
- msgstr ""
350
-
351
- #. Plugin URI of the plugin
352
- msgid "http://m.tri.be/1acb"
353
- msgstr ""
354
-
355
- #: src/resources/js/app/blocks.js:45739
356
- msgid "Ticket SKU"
357
- msgstr ""
358
-
359
- #: src/resources/js/app/blocks.js:45387
360
- msgid "Ticket capacity will only be used by attendees buying this ticket type"
361
- msgstr ""
362
-
363
- #: src/resources/js/app/blocks.js:45299
364
- msgid "Number of tickets available"
365
- msgstr ""
366
-
367
- #: src/resources/js/app/blocks.js:45299
368
- msgid "(optional) Limit sales of this ticket to:"
369
- msgstr ""
370
-
371
- #: src/resources/js/app/blocks.js:45276
372
- msgid "Set shared capacity:"
373
- msgstr ""
374
-
375
- #: src/resources/js/app/blocks.js:42888
376
- msgid "You can also enter keywords to help find the target event by title or description"
377
- msgstr ""
378
-
379
- #: src/resources/js/app/blocks.js:42854
380
- msgid "No posts found"
381
- msgstr ""
382
-
383
- #: src/resources/js/app/blocks.js:41928
384
- msgid "Enable \"Not Going\" responses"
385
- msgstr ""
386
-
387
- #: src/resources/js/app/blocks.js:41899
388
- msgid "Leave blank if unlimited"
389
- msgstr ""
390
-
391
- #: src/resources/js/app/blocks.js:41894
392
- msgid "RSVP Capacity"
393
- msgstr ""
394
-
395
- #: src/resources/js/app/blocks.js:41688 src/resources/js/app/blocks.js:46104
396
- msgid "Advanced Options"
397
- msgstr ""
398
-
399
- #: common/src/modules/elements/time-picker/element.js:57
400
- #: common/src/modules/elements/time-picker/element.js:148
401
- #: common/src/resources/js/app/elements.js:60102
402
- #: common/src/resources/js/app/elements.js:60204
403
- msgid "All Day"
404
- msgstr ""
405
-
406
- #: common/src/modules/elements/image-upload/element.js:46
407
- #: common/src/resources/js/app/elements.js:59581
408
- msgid "remove"
409
- msgstr ""
410
-
411
- #: src/modules/blocks/tickets/container/template.js:40
412
- #: src/resources/js/app/blocks.js:44100
413
- msgid "To create tickets, you'll need to enable an ecommerce solution."
414
- msgstr ""
415
-
416
- #: src/modules/blocks/tickets/container/template.js:43
417
- #: src/resources/js/app/blocks.js:44103
418
- msgid "Edit this block to create your first ticket."
419
- msgstr ""
420
-
421
- #: src/modules/blocks/tickets/container/template.js:39
422
- #: src/resources/js/app/blocks.js:44099
423
- msgid "There is no ecommerce available"
424
- msgstr ""
425
-
426
- #: src/modules/blocks/tickets/container/template.js:42
427
- #: src/resources/js/app/blocks.js:44102
428
- msgid "There are no tickets yet"
429
- msgstr ""
430
-
431
- #: src/modules/blocks/tickets/index.js:26 src/resources/js/app/blocks.js:44472
432
- msgid "Sell tickets and register attendees."
433
- msgstr ""
434
-
435
- #: src/modules/blocks/tickets/availability/template.js:43
436
- #: src/resources/js/app/blocks.js:44016
437
- msgid "%d total tickets"
438
- msgstr ""
439
-
440
- #: src/modules/blocks/tickets/availability/template.js:42
441
- #: src/resources/js/app/blocks.js:44015
442
- msgid "%d total ticket"
443
- msgstr ""
444
-
445
- #: src/modules/blocks/tickets/availability/template.js:31
446
- #: src/resources/js/app/blocks.js:44009
447
- msgid "%d tickets available"
448
- msgstr ""
449
-
450
- #: src/modules/blocks/tickets/availability/template.js:30
451
- #: src/resources/js/app/blocks.js:44008
452
- msgid "%d ticket available"
453
- msgstr ""
454
-
455
- #: src/modules/blocks/tickets/action-dashboard/template.js:24
456
- #: src/resources/js/app/blocks.js:43456
457
- msgid "Add Tickets"
458
- msgstr ""
459
-
460
- #: src/modules/blocks/tickets/controls/template.js:62
461
- #: src/resources/js/app/blocks.js:44261
462
- msgid "Sell tickets using"
463
- msgstr ""
464
-
465
- #: src/modules/blocks/tickets/controls/template.js:59
466
- #: src/resources/js/app/blocks.js:44251
467
- msgid "Tickets Settings"
468
- msgstr ""
469
-
470
- #: src/modules/blocks/tickets/controls/template.js:25
471
- #: src/resources/js/app/blocks.js:44211
472
- msgid "Note: adjusting this setting will only impact new tickets. Existing tickets will not change. We highly recommend that all tickets for one event use the same ecommerce plugin"
473
- msgstr ""
474
-
475
- #: src/modules/blocks/tickets/controls/template.js:20
476
- #: src/resources/js/app/blocks.js:44209
477
- msgid "It looks like you have multiple ecommerce plugins active. We recommend running only one at a time. However, if you need to run multiple, please select which one to use to sell tickets for this event. "
478
- msgstr ""
479
-
480
- #: src/modules/blocks/tickets/capacity-table/template.js:49
481
- #: src/resources/js/app/blocks.js:43674
482
- msgid "Total Capacity"
483
- msgstr ""
484
-
485
- #: src/modules/blocks/tickets/capacity-table/template.js:44
486
- #: src/resources/js/app/blocks.js:43669
487
- msgid "Independent capacity"
488
- msgstr ""
489
-
490
- #: src/modules/blocks/tickets/capacity-table/template.js:39
491
- #: src/resources/js/app/blocks.js:43664
492
- msgid "Shared capacity"
493
- msgstr ""
494
-
495
- #: src/modules/blocks/attendees/index.js:22
496
- #: src/resources/js/app/blocks.js:46990
497
- msgid "Show the gravatars of people coming to this event."
498
- msgstr ""
499
-
500
- #: src/modules/blocks/attendees/template.js:30
501
- #: src/resources/js/app/blocks.js:46791
502
- msgid "(X) people are attending this event"
503
- msgstr ""
504
-
505
- #: src/modules/blocks/attendees/template.js:29
506
- #: src/modules/blocks/attendees/index.js:37
507
- #: src/resources/js/app/blocks.js:46790 src/resources/js/app/blocks.js:47002
508
- msgid "Who's Attending?"
509
- msgstr ""
510
-
511
- #: src/modules/blocks/ticket/container-content/attendees-registration/template.js:18
512
- #: src/resources/js/app/blocks.js:46200
513
- msgid "Save your ticket to enable attendee registration fields"
514
- msgstr ""
515
-
516
- #: src/modules/blocks/ticket/container-content/advanced-options/move-delete/template.js:21
517
- #: src/resources/js/app/blocks.js:46001
518
- msgid "Remove Ticket"
519
- msgstr ""
520
-
521
- #: src/modules/blocks/ticket/container-content/advanced-options/duration/template.js:31
522
- #: src/resources/js/app/blocks.js:45516
523
- msgid "Sale Duration"
524
- msgstr ""
525
-
526
- #: src/modules/blocks/ticket/container-content/advanced-options/ecommerce-options/template.js:78
527
- #: src/resources/js/app/blocks.js:45878
528
- msgid "Ecommerce"
529
- msgstr ""
530
-
531
- #: src/modules/blocks/ticket/container-content/advanced-options/ecommerce-options/template.js:51
532
- #: src/resources/js/app/blocks.js:45857
533
- msgid "View Sales Report"
534
- msgstr ""
535
-
536
- #: src/modules/blocks/ticket/container-content/advanced-options/ecommerce-options/template.js:38
537
- #: src/resources/js/app/blocks.js:45848
538
- msgid "Edit Ticket in WooCommerce"
539
- msgstr ""
540
-
541
- #: src/modules/blocks/ticket/container-content/advanced-options/ecommerce-options/template.js:36
542
- #: src/resources/js/app/blocks.js:45846
543
- msgid "Edit Ticket in Easy Digital Downloads"
544
- msgstr ""
545
-
546
- #: src/modules/blocks/ticket/container-header/quantity/quantity-bar/element.js:37
547
- #: src/resources/js/app/blocks.js:44986
548
- msgid "cap"
549
- msgstr ""
550
-
551
- #: src/modules/blocks/ticket/container-header/quantity/template.js:40
552
- #: src/resources/js/app/blocks.js:45051
553
- msgid "unlimited"
554
- msgstr ""
555
-
556
- #: src/modules/blocks/ticket/container-header/quantity/template.js:33
557
- #: src/resources/js/app/blocks.js:45044
558
- msgid "%d of %d sold"
559
- msgstr ""
560
-
561
- #: src/modules/blocks/ticket/container-header/quantity/template.js:32
562
- #: src/resources/js/app/blocks.js:45044
563
- msgid "%d sold"
564
- msgstr ""
565
-
566
- #: src/modules/blocks/ticket/container-header/price/template.js:34
567
- #: src/resources/js/app/blocks.js:44753
568
- msgid "0"
569
- msgstr ""
570
-
571
- #: src/modules/blocks/ticket/container-header/description/template.js:30
572
- #: src/resources/js/app/blocks.js:44657
573
- msgid "Description"
574
- msgstr ""
575
-
576
- #: src/modules/blocks/ticket/index.js:16 src/resources/js/app/blocks.js:46724
577
- msgid "A single configured ticket type."
578
- msgstr ""
579
-
580
- #: src/modules/blocks/ticket/index.js:15 src/resources/js/app/blocks.js:46723
581
- msgid "Event Ticket"
582
- msgstr ""
583
-
584
- #: src/modules/blocks/ticket/dashboard/template.js:21
585
- #: src/resources/js/app/blocks.js:46444
586
- msgid "Create Ticket"
587
- msgstr ""
588
-
589
- #: src/modules/blocks/ticket/dashboard/template.js:20
590
- #: src/resources/js/app/blocks.js:46444
591
- msgid "Update Ticket"
592
- msgstr ""
593
-
594
- #: src/modules/blocks/rsvp/attendee-registration/template.js:22
595
- #: src/modules/blocks/ticket/container-content/attendees-registration/template.js:20
596
- #: src/resources/js/app/blocks.js:41780 src/resources/js/app/blocks.js:46202
597
- msgid "+ Add"
598
- msgstr ""
599
-
600
- #: src/modules/blocks/rsvp/attendee-registration/template.js:18
601
- #: src/resources/js/app/blocks.js:41776
602
- msgid "Save your RSVP to enable attendee registration fields"
603
- msgstr ""
604
-
605
- #: src/modules/blocks/rsvp/container-header/template.js:71
606
- #: src/resources/js/app/blocks.js:41102
607
- msgid "%d available"
608
- msgstr ""
609
-
610
- #: src/modules/blocks/rsvp/container-header/template.js:57
611
- #: src/resources/js/app/blocks.js:41090
612
- msgid "description"
613
- msgstr ""
614
-
615
- #: src/modules/blocks/rsvp/index.js:23 src/resources/js/app/blocks.js:43193
616
- msgid "Find out who is planning to attend!"
617
- msgstr ""
618
-
619
- #: src/modules/blocks/rsvp/header-image/template.js:33
620
- #: src/modules/blocks/tickets/header-image/template.js:33
621
- #: src/resources/js/app/blocks.js:42541 src/resources/js/app/blocks.js:43779
622
- msgid "Upload Image"
623
- msgstr ""
624
-
625
- #: src/modules/blocks/rsvp/header-image/template.js:25
626
- #: src/modules/blocks/tickets/header-image/template.js:25
627
- #: src/resources/js/app/blocks.js:42535 src/resources/js/app/blocks.js:43773
628
- msgid "Ticket Header Image"
629
- msgstr ""
630
-
631
- #: src/modules/blocks/rsvp/advanced-options/move-delete/container.js:44
632
- #: src/resources/js/app/blocks.js:41616
633
- msgid "Are you sure you want to delete this RSVP? It cannot be undone."
634
- msgstr ""
635
-
636
- #: src/modules/blocks/rsvp/advanced-options/move-delete/template.js:21
637
- #: src/resources/js/app/blocks.js:41557
638
- msgid "Remove RSVP"
639
- msgstr ""
640
-
641
- #: src/modules/blocks/rsvp/action-dashboard/template.js:44
642
- #: src/modules/blocks/tickets/action-dashboard/template.js:38
643
- #: src/resources/js/app/blocks.js:42334 src/resources/js/app/blocks.js:43470
644
- msgid "This is a recurring event. If you add tickets they will only show up on the next upcoming event in the recurrence pattern. The same ticket form will appear across all events in the series. Please configure your events accordingly."
645
- msgstr ""
646
-
647
- #: src/modules/blocks/rsvp/action-dashboard/template.js:41
648
- #: src/modules/blocks/tickets/action-dashboard/template.js:36
649
- #: src/resources/js/app/blocks.js:42331 src/resources/js/app/blocks.js:43468
650
- msgid "Warning"
651
- msgstr ""
652
-
653
- #: src/modules/blocks/rsvp/action-dashboard/template.js:26
654
- #: src/resources/js/app/blocks.js:42315
655
- msgid "Create RSVP"
656
- msgstr ""
657
-
658
- #: src/modules/blocks/rsvp/action-dashboard/template.js:25
659
- #: src/resources/js/app/blocks.js:42315
660
- msgid "Update RSVP"
661
- msgstr ""
662
-
663
- #: src/modules/blocks/rsvp/duration-label/template.js:32
664
- #: src/resources/js/app/blocks.js:41245
665
- msgid "By default, sales will begin as soon as you save the ticket and end when the event begins"
666
- msgstr ""
667
-
668
- #: src/modules/blocks/rsvp/duration-label/template.js:28
669
- #: src/resources/js/app/blocks.js:41241
670
- msgid "Duration"
671
- msgstr ""
672
-
673
- #: src/modules/blocks/rsvp/inactive-block/template.js:31
674
- #: src/resources/js/app/blocks.js:42766
675
- msgid "Edit this block to create an RSVP form."
676
- msgstr ""
677
-
678
- #: src/modules/blocks/rsvp/inactive-block/template.js:30
679
- #: src/resources/js/app/blocks.js:42766
680
- msgid "Edit this block to change RSVP settings."
681
- msgstr ""
682
-
683
- #: src/modules/blocks/rsvp/inactive-block/template.js:27
684
- #: src/resources/js/app/blocks.js:42764
685
- msgid "There is no RSVP configured"
686
- msgstr ""
687
-
688
- #: src/modules/blocks/rsvp/inactive-block/template.js:26
689
- #: src/resources/js/app/blocks.js:42764
690
- msgid "RSVP is not currently active"
691
- msgstr ""
692
-
693
- #: src/modules/elements/settings-dashboard/element.js:56
694
- #: src/resources/js/app/blocks.js:14448 src/resources/js/app/elements.js:5510
695
- msgid "close"
696
- msgstr ""
697
-
698
- #: src/modules/data/blocks/ticket/options.js:13
699
- #: src/resources/js/app/blocks.js:5517 src/resources/js/app/data.js:5500
700
- msgid "Share capacity with other tickets"
701
- msgstr ""
702
-
703
- #: src/modules/data/blocks/ticket/sagas.js:566
704
- #: src/resources/js/app/blocks.js:7745 src/resources/js/app/data.js:7728
705
- msgid "Are you sure you want to delete this ticket? It cannot be undone."
706
- msgstr ""
707
-
708
- #: common/src/Tribe/Editor/Configuration.php:96
709
- msgid "F j"
710
- msgstr ""
711
-
712
- #: common/src/Tribe/Editor/Configuration.php:95
713
- #: common/src/Tribe/Editor/Configuration.php:97
714
- msgid "F j, Y"
715
- msgstr ""
716
-
717
- #: common/src/Tribe/Editor/Configuration.php:94
718
- #: common/src/Tribe/Editor/Configuration.php:97
719
- msgid "g:i a"
720
- msgstr ""
721
-
722
- #. translators: %s: duration
723
- #: common/src/Tribe/Editor/Configuration.php:90
724
- msgid "%s ago"
725
- msgstr ""
726
-
727
- #. translators: %s: duration
728
- #: common/src/Tribe/Editor/Configuration.php:88
729
- msgid "%s from now"
730
- msgstr ""
731
-
732
- #: common/src/Tribe/Editor/Blocks/Abstract.php:127
733
- msgid "Problem loading the block, please remove this block to restart."
734
- msgstr ""
735
-
736
- #: common/src/Tribe/Editor/Meta.php:123
737
- msgid "Text Array"
738
- msgstr ""
739
-
740
- #: common/src/Tribe/Editor/Meta.php:105
741
- msgid "Numeric Array"
742
- msgstr ""
743
-
744
- #: src/Tribe/Editor.php:209
745
- msgid "Tickets Blocks"
746
- msgstr ""
747
-
748
- #: src/Tribe/Attendee_Registration/Template.php:376
749
- #: src/modules/blocks/rsvp/attendee-registration/template.js:20
750
- #: src/modules/blocks/ticket/container-content/attendees-registration/template.js:19
751
- #: src/resources/js/app/blocks.js:41778 src/resources/js/app/blocks.js:46201
752
- msgid "Attendee Registration"
753
- msgstr ""
754
-
755
- #: src/Tribe/Editor/Attendee_Registration.php:140
756
- msgid "Are you sure you want to leave this page?"
757
- msgstr ""
758
-
759
- #: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:272
760
- msgid "Ticket was not able to be updated"
761
- msgstr ""
762
-
763
- #: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:56
764
- #: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:228
765
- msgid "Invalid nonce"
766
- msgstr ""
767
-
768
- #: src/Tribe/Editor/Blocks/Attendees.php:27
769
- msgid "Who's coming?"
770
- msgstr ""
771
-
772
- #: src/views/blocks/tickets/extra-available-quantity.php:22
773
- #: src/Tribe/Status/Abstract_Commerce.php:204
774
- msgid "available"
775
- msgstr ""
776
-
777
- #: src/views/blocks/tickets/quantity-unavailable.php:23
778
- msgid "Sold Out"
779
- msgstr ""
780
-
781
- #: src/views/blocks/tickets/submit-button.php:23
782
- msgid "Add to cart"
783
- msgstr ""
784
-
785
- #: src/views/blocks/tickets/quantity-add.php:24
786
- msgid "+"
787
- msgstr ""
788
-
789
- #: src/views/blocks/tickets/registration/summary/description.php:10
790
- msgid "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor."
791
- msgstr ""
792
-
793
- #: src/views/blocks/tickets/registration/summary/title.php:21
794
- msgid "Ticket Registration"
795
- msgstr ""
796
-
797
- #: src/views/blocks/tickets/registration/summary/ticket-quantity.php:19
798
- msgid "1"
799
- msgstr ""
800
-
801
- #: src/views/blocks/tickets/quantity-remove.php:23
802
- msgid "-"
803
- msgstr ""
804
-
805
- #: src/views/blocks/attendees/description.php:25
806
- msgid "One person is attending %2$s"
807
- msgid_plural "%d people are attending %s"
808
- msgstr[0] ""
809
- msgstr[1] ""
810
-
811
- #: src/views/blocks/attendees/order-links.php:55
812
- #: src/views/blocks/attendees/order-links.php:59
813
- msgid "%d %s"
814
- msgid_plural "%d %ss"
815
- msgstr[0] ""
816
- msgstr[1] ""
817
-
818
- #: src/views/blocks/rsvp/form/opt-out.php:39
819
- msgid "Don't show my information on public attendee lists"
820
- msgstr ""
821
-
822
- #: src/views/blocks/rsvp/form/error.php:20
823
- msgid "Please fill in the RSVP confirmation name and email fields."
824
- msgstr ""
825
-
826
- #: src/views/blocks/rsvp/form/submit-button.php:25
827
- msgid "Submit RSVP"
828
- msgstr ""
829
-
830
- #: src/views/blocks/rsvp/details/availability.php:26
831
- msgid "remaining"
832
- msgstr ""
833
-
834
- #: src/views/blocks/rsvp/status/not-going.php:45
835
- #: src/modules/blocks/rsvp/counters/template.js:33
836
- #: src/resources/js/app/blocks.js:40999
837
- msgid "Not going"
838
- msgstr ""
839
-
840
- #: src/views/blocks/rsvp/status/full.php:18
841
- msgid "RSVP Full"
842
- msgstr ""
843
-
844
- #: src/views/registration/attendees/fields.php:15
845
- msgid "Attendee"
846
- msgstr ""
847
-
848
- #: src/views/registration/attendees/error.php:16
849
- msgid "Please fill in all required fields."
850
- msgstr ""
851
-
852
- #: src/views/registration/attendees/fields/select.php:39
853
- #: src/views/blocks/tickets/registration/attendee/fields/select.php:47
854
- msgid "Select an option"
855
- msgstr ""
856
-
857
- #: src/views/registration/summary/tickets-header.php:16
858
- msgid "Ticket summary"
859
- msgstr ""
860
-
861
- #: src/views/registration/button-checkout.php:31
862
- msgid "Checkout"
863
- msgstr ""
864
-
865
- #: src/views/registration/content.php:44
866
- msgid "Save Attendee Info"
867
- msgstr ""
868
-
869
- #: src/views/registration/cart-empty.php:26
870
- msgid "Find events to attend on %1$s"
871
- msgstr ""
872
-
873
- #: src/views/registration/cart-empty.php:23
874
- msgid "the calendar"
875
- msgstr ""
876
-
877
- #: src/views/registration/cart-empty.php:15
878
- msgid "You currently have no events awaiting registration"
879
- msgstr ""
880
-
881
- #: src/views/registration/button-cart.php:20
882
- msgid "Back to cart"
883
- msgstr ""
884
-
885
- #: src/template-tags/tickets.php:436
886
- msgid "issued"
887
- msgstr ""
888
-
889
- #: src/admin-views/attendees.php:78
890
- msgctxt "attendee screen summary"
891
- msgid "Overview"
892
- msgstr ""
893
-
894
- #: src/Tribe/Tickets.php:1861
895
- msgid " at "
896
- msgstr ""
897
-
898
- #: src/Tribe/Tickets.php:1855
899
- msgid "Tickets will be available on "
900
- msgstr ""
901
-
902
- #: src/Tribe/REST/V1/Post_Repository.php:165
903
- msgid "An error happened while building the response: "
904
- msgstr ""
905
-
906
- #: src/Tribe/REST/V1/Messages.php:33
907
- msgid "The page number requested is larger than the number of pages available."
908
- msgstr ""
909
-
910
- #: src/Tribe/REST/V1/Messages.php:31
911
- msgid "There was a problem while fetching the requested attendee post"
912
- msgstr ""
913
-
914
- #: src/Tribe/REST/V1/Messages.php:30
915
- msgid "There was a problem while fetching the requested ticket post"
916
- msgstr ""
917
-
918
- #: src/Tribe/REST/V1/Messages.php:28
919
- msgid "The ticket global id could not be generated"
920
- msgstr ""
921
-
922
- #: src/Tribe/REST/V1/Messages.php:26
923
- msgid "The requested ticket object could not be built or found"
924
- msgstr ""
925
-
926
- #: src/Tribe/REST/V1/Messages.php:25
927
- msgid "The post associated with the requested ticket was not found"
928
- msgstr ""
929
-
930
- #: src/Tribe/REST/V1/Messages.php:24
931
- msgid "The ticket provider for the requested ticket is not available"
932
- msgstr ""
933
-
934
- #: src/Tribe/REST/V1/Messages.php:23
935
- msgid "The requested ticket post could not be found"
936
- msgstr ""
937
-
938
- #: src/Tribe/REST/V1/Messages.php:21
939
- msgid "The requested attendee is not accessible"
940
- msgstr ""
941
-
942
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:446
943
- msgid "Limit results to tickets that provide attendees the possibility to fill in additional information or not; requires ET+."
944
- msgstr ""
945
-
946
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:436
947
- msgid "Limit results to tickets priced in one of the 3-letter currency codes specified in the CSV list or array."
948
- msgstr ""
949
-
950
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:425
951
- msgid "Limit results to tickets that are in one of post statuses specified in the CSV list or array; defaults to publish."
952
- msgstr ""
953
-
954
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:414
955
- msgid "Limit results to tickets assigned to posts that are in one of the post statuses specified in the CSV list or array; defaults to publish."
956
- msgstr ""
957
-
958
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:408
959
- msgid "Limit results to tickets that will be available up to the specified UTC date (parseable by strtotime) or timestamp."
960
- msgstr ""
961
-
962
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:402
963
- msgid "Limit results to tickets that will be available at or after the specified UTC date (parseable by strtotime) or timestamp."
964
- msgstr ""
965
-
966
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:396
967
- msgid "Limit results to tickets that have at most this capacity."
968
- msgstr ""
969
-
970
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:390
971
- msgid "Limit results to tickets that have at least this capacity."
972
- msgstr ""
973
-
974
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:384
975
- msgid "Limit results to tickets that have at least this number of checked-in attendees."
976
- msgstr ""
977
-
978
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:378
979
- msgid "Limit results to tickets that have at most this number of checked-in attendee."
980
- msgstr ""
981
-
982
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:372
983
- msgid "Limit results to tickets that have at most this number of attendees."
984
- msgstr ""
985
-
986
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:366
987
- msgid "Limit results to tickets that have at least this number or attendees."
988
- msgstr ""
989
-
990
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:353
991
- msgid "Limit results to tickets that are not assigned to any of the posts specified in the CSV list or array."
992
- msgstr ""
993
-
994
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:340
995
- msgid "Limit results to tickets that are assigned to one of the posts specified in the CSV list or array."
996
- msgstr ""
997
-
998
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:327
999
- msgid "Exclude a specific CSV list or array of ticket IDs from the results."
1000
- msgstr ""
1001
-
1002
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:308
1003
- msgid "Limit results to tickets created before or on the specified UTC date or timestamp."
1004
- msgstr ""
1005
-
1006
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:302
1007
- msgid "Limit results to tickets created after or on the specified UTC date or timestamp."
1008
- msgstr ""
1009
-
1010
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:291
1011
- msgid "Limit results to tickets provided by one of the providers specified in the CSV list or array; defaults to all available."
1012
- msgstr ""
1013
-
1014
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:286
1015
- msgid "Limit results to tickets that have or do not have capacity currently available."
1016
- msgstr ""
1017
-
1018
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:275
1019
- msgid "Order the results by one of date, relevance, id, include, title, or slug; defaults to title."
1020
- msgstr ""
1021
-
1022
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:254
1023
- msgid "Limit results to tickets containing the specified string in the title or description."
1024
- msgstr ""
1025
-
1026
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:246
1027
- msgid "How many tickets to return per results page; defaults to posts_per_page."
1028
- msgstr ""
1029
-
1030
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:26
1031
- msgid "Returns all the tickets matching the search criteria"
1032
- msgstr ""
1033
-
1034
- #: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:17
1035
- #: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:135
1036
- #: src/Tribe/REST/V1/Endpoints/Single_Ticket.php:72
1037
- msgid "The ticket post ID"
1038
- msgstr ""
1039
-
1040
- #: src/Tribe/REST/V1/Endpoints/Single_Ticket.php:50
1041
- msgid "A ticket with the specified ID does not exist."
1042
- msgstr ""
1043
-
1044
- #: src/Tribe/REST/V1/Endpoints/Single_Ticket.php:40
1045
- msgid "The ticket with the specified ID is not accessible."
1046
- msgstr ""
1047
-
1048
- #: src/Tribe/REST/V1/Endpoints/Single_Ticket.php:30
1049
- msgid "The ticket post ID is invalid."
1050
- msgstr ""
1051
-
1052
- #: src/Tribe/REST/V1/Endpoints/Single_Ticket.php:20
1053
- msgid "Returns the data of the ticket with the specified post ID"
1054
- msgstr ""
1055
-
1056
- #: src/Tribe/REST/V1/Endpoints/Single_Ticket.php:16
1057
- msgid "Returns a single ticket data"
1058
- msgstr ""
1059
-
1060
- #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:71
1061
- msgid "The attendee post ID"
1062
- msgstr ""
1063
-
1064
- #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:49
1065
- msgid "An attendee with the specified ID does not exist."
1066
- msgstr ""
1067
-
1068
- #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:39
1069
- msgid "The attendee with the specified ID is not accessible."
1070
- msgstr ""
1071
-
1072
- #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:29
1073
- msgid "The attendee post ID is invalid."
1074
- msgstr ""
1075
-
1076
- #: src/Tribe/REST/V1/Endpoints/Single_Attendee.php:19
1077
- msgid "Returns the data of the attendee with the specified post ID"
1078
- msgstr ""
1079
-
1080
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:422
1081
- msgid "Limit results to attendees for tickets that provide attendees the possibility to fill in additional information or not; requires ET+."
1082
- msgstr ""
1083
-
1084
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:411
1085
- msgid "Limit results to RSVP Attendees that have one of the RSVP Going status specified in the CSV list or array."
1086
- msgstr ""
1087
-
1088
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:406
1089
- msgid "Limit results to attendees that are or not checked-in."
1090
- msgstr ""
1091
-
1092
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:395
1093
- msgid "Limit results to attendees whose order status is in one of post statuses specified in the CSV list or array; defaults to public."
1094
- msgstr ""
1095
-
1096
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:384
1097
- msgid "Limit results to attendees that are in one of post statuses specified in the CSV list or array; defaults to publish."
1098
- msgstr ""
1099
-
1100
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:373
1101
- msgid "Limit results to attendees for posts that are in one of the post statuses specified in the CSV list or array; defaults to publish."
1102
- msgstr ""
1103
-
1104
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:361
1105
- msgid "Exclude a specific CSV list or array of ticket IDs."
1106
- msgstr ""
1107
-
1108
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:314
1109
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:349
1110
- msgid "Limit results to a specific CSV list or array of ticket IDs."
1111
- msgstr ""
1112
-
1113
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:336
1114
- msgid "Limit results to attendees whose tickets is not assigned to any of the posts specified in the CSV list or array.."
1115
- msgstr ""
1116
-
1117
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:323
1118
- msgid "Limit results to attendees whose ticket is assigned to one of the posts specified in the CSV list or array."
1119
- msgstr ""
1120
-
1121
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:317
1122
- msgid "Limit results to attendees that paid tickets a price equal or above the specified value; if not specified no minimum price limit will be used."
1123
- msgstr ""
1124
-
1125
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:311
1126
- msgid "Limit results to attendees that paid tickets a price equal or below the specified value; if not specified no maximum price limit will be used."
1127
- msgstr ""
1128
-
1129
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:298
1130
- msgid "Exclude a specific CSV list or array of attendee IDs from the results."
1131
- msgstr ""
1132
-
1133
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:285
1134
- msgid "Limit results to a specific CSV list or array of attendee IDs."
1135
- msgstr ""
1136
-
1137
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:279
1138
- msgid "Limit results to attendees created before or on the specified UTC date or timestamp."
1139
- msgstr ""
1140
-
1141
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:273
1142
- msgid "Limit results to attendees created after or on the specified UTC date or timestamp."
1143
- msgstr ""
1144
-
1145
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:267
1146
- msgid "Limit results to attendees associated with a ticket."
1147
- msgstr ""
1148
-
1149
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:261
1150
- msgid "Limit results to attendees by post the ticket is associated with."
1151
- msgstr ""
1152
-
1153
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:249
1154
- msgid "Order the results by one of date, relevance, id, include, title or slug. Defaults to id."
1155
- msgstr ""
1156
-
1157
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:266
1158
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:240
1159
- msgid "Sort results in ASC or DESC order. Defaults to ASC."
1160
- msgstr ""
1161
-
1162
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:260
1163
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:234
1164
- msgid "Offset the results by a specific number of items."
1165
- msgstr ""
1166
-
1167
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:228
1168
- msgid "Limit results to attendees containing the specified string in the title or description."
1169
- msgstr ""
1170
-
1171
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:215
1172
- msgid "Limit results to attendees whose ticket is provided by one of the providers specified in the CSV list or array; defaults to all the available."
1173
- msgstr ""
1174
-
1175
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:206
1176
- msgid "How many attendees to return per results page; defaults to posts_per_page."
1177
- msgstr ""
1178
-
1179
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:239
1180
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:198
1181
- msgid "The page of results to return; defaults to 1"
1182
- msgstr ""
1183
-
1184
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:65
1185
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:65
1186
- msgid "The requested page was not found."
1187
- msgstr ""
1188
-
1189
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:55
1190
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:55
1191
- msgid "One or more of the specified query variables has a bad format"
1192
- msgstr ""
1193
-
1194
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:43
1195
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:43
1196
- msgid "The total number of result pages matching the search criteria"
1197
- msgstr ""
1198
-
1199
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:39
1200
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:39
1201
- msgid "The total number of results across all pages"
1202
- msgstr ""
1203
-
1204
- #: src/Tribe/REST/V1/Endpoints/Ticket_Archive.php:35
1205
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:35
1206
- msgid "This results page REST URL"
1207
- msgstr ""
1208
-
1209
- #: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php:26
1210
- msgid "Returns all the attendees matching the search criteria"
1211
- msgstr ""
1212
-
1213
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:137
1214
- msgid "A list of attendee information fields supported/required by the ticket in the format [ <field-slug>: label, required, type, extra ]"
1215
- msgstr ""
1216
-
1217
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:133
1218
- msgid "Whether the ticket requires at least one attendee information field, ET+ required"
1219
- msgstr ""
1220
-
1221
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:129
1222
- msgid "Whether the ticket supports at least one attendee information field, ET+ required"
1223
- msgstr ""
1224
-
1225
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:125
1226
- msgid "A list of attendees for the ticket, "
1227
- msgstr ""
1228
-
1229
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:115
1230
- msgid "The formatted cost string"
1231
- msgstr ""
1232
-
1233
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:111
1234
- msgid "Whether the ticket is currently available or not due to capacity or date constraints"
1235
- msgstr ""
1236
-
1237
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:104
1238
- msgid "The formatted ticket current capacity"
1239
- msgstr ""
1240
-
1241
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:89
1242
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:97
1243
- msgid "The date the ticket will be available"
1244
- msgstr ""
1245
-
1246
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:81
1247
- msgid "The ticket description"
1248
- msgstr ""
1249
-
1250
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:77
1251
- msgid "The ticket title"
1252
- msgstr ""
1253
-
1254
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:68
1255
- msgid "The ticket ET REST API URL"
1256
- msgstr ""
1257
-
1258
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:63
1259
- msgid "The ticket modification UTC date"
1260
- msgstr ""
1261
-
1262
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:58
1263
- msgid "The ticket modification date"
1264
- msgstr ""
1265
-
1266
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:53
1267
- msgid "The ticket creation UTC date"
1268
- msgstr ""
1269
-
1270
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:48
1271
- msgid "The ticket creation date"
1272
- msgstr ""
1273
-
1274
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:43
1275
- msgid "The ticket post status"
1276
- msgstr ""
1277
-
1278
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:39
1279
- msgid "The ticket post author ID"
1280
- msgstr ""
1281
-
1282
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:35
1283
- msgid "The ticket global ID lineage"
1284
- msgstr ""
1285
-
1286
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:28
1287
- msgid "The ticket global ID"
1288
- msgstr ""
1289
-
1290
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:24
1291
- msgid "The ID of the post the ticket is associated to"
1292
- msgstr ""
1293
-
1294
- #: src/Tribe/REST/V1/Documentation/RSVP_Report_Definition_Provider.php:24
1295
- msgid "How many attendees are “Not going”"
1296
- msgstr ""
1297
-
1298
- #: src/Tribe/REST/V1/Documentation/RSVP_Report_Definition_Provider.php:20
1299
- msgid "How many attendees are “Going”"
1300
- msgstr ""
1301
-
1302
- #: src/Tribe/REST/V1/Documentation/Payment_Details_Definition_Provider.php:33
1303
- msgid "The payment date"
1304
- msgstr ""
1305
-
1306
- #: src/Tribe/REST/V1/Documentation/Payment_Details_Definition_Provider.php:28
1307
- msgid "The currency used by the attendee to pay"
1308
- msgstr ""
1309
-
1310
- #: src/Tribe/REST/V1/Documentation/Payment_Details_Definition_Provider.php:24
1311
- msgid "The price paid by the attendee when he/she purchased the ticket"
1312
- msgstr ""
1313
-
1314
- #: src/Tribe/REST/V1/Documentation/Payment_Details_Definition_Provider.php:20
1315
- msgid "The payment provider/gateway"
1316
- msgstr ""
1317
-
1318
- #: src/Tribe/REST/V1/Documentation/Checkin_Report_Definition_Provider.php:32
1319
- msgid "The number of unchecked-in attendee"
1320
- msgstr ""
1321
-
1322
- #: src/Tribe/REST/V1/Documentation/Checkin_Report_Definition_Provider.php:28
1323
- msgid "The percentage of checked-in attendees"
1324
- msgstr ""
1325
-
1326
- #: src/Tribe/REST/V1/Documentation/Checkin_Report_Definition_Provider.php:24
1327
- msgid "The number of unchecked-in attendees"
1328
- msgstr ""
1329
-
1330
- #: src/Tribe/REST/V1/Documentation/Checkin_Report_Definition_Provider.php:20
1331
- msgid "The number of checked-in attendees"
1332
- msgstr ""
1333
-
1334
- #: src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php:31
1335
- msgid "The ID or identifying string of the site user or operator that checked in the attendee"
1336
- msgstr ""
1337
-
1338
- #: src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php:27
1339
- msgid "The check-in source for the attendee; e.g. “kiosk” or “site”"
1340
- msgstr ""
1341
-
1342
- #: src/Tribe/REST/V1/Documentation/Checkin_Details_Definition_Provider.php:20
1343
- msgid "The time the attendee checked in"
1344
- msgstr ""
1345
-
1346
- #: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:36
1347
- msgid "The ticket pending count"
1348
- msgstr ""
1349
-
1350
- #: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:32
1351
- msgid "The ticket sale count"
1352
- msgstr ""
1353
-
1354
- #: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:28
1355
- msgid "The ticket current available capacity"
1356
- msgstr ""
1357
-
1358
- #: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:24
1359
- msgid "The ticket max capacity"
1360
- msgstr ""
1361
-
1362
- #: src/Tribe/REST/V1/Documentation/Capacity_Details_Definition_Provider.php:20
1363
- msgid "The ticket available capacity percentage"
1364
- msgstr ""
1365
-
1366
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:112
1367
- msgid "The attendee information; requires ET+"
1368
- msgstr ""
1369
-
1370
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:105
1371
- msgid "If the attendee is for an RSVP ticket, this will be set to true if he/she is “Going”, false otherwise"
1372
- msgstr ""
1373
-
1374
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:98
1375
- msgid "Whether the attendee is checked-in or not"
1376
- msgstr ""
1377
-
1378
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:94
1379
- msgid "The attendee email address"
1380
- msgstr ""
1381
-
1382
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:89
1383
- msgid "The attendee title or name"
1384
- msgstr ""
1385
-
1386
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:85
1387
- msgid "The attendee ticket SKU"
1388
- msgstr ""
1389
-
1390
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:81
1391
- msgid "The order number, or identifier, of the ticket purchase that generated the attendee"
1392
- msgstr ""
1393
-
1394
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:76
1395
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:72
1396
- msgid "The ticket commerce provider"
1397
- msgstr ""
1398
-
1399
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:72
1400
- msgid "The attendee ET REST API URL"
1401
- msgstr ""
1402
-
1403
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:67
1404
- msgid "The attendee modification UTC date"
1405
- msgstr ""
1406
-
1407
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:62
1408
- msgid "The attendee modification date"
1409
- msgstr ""
1410
-
1411
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:57
1412
- msgid "The attendee creation UTC date"
1413
- msgstr ""
1414
-
1415
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:52
1416
- msgid "The attendee creation date"
1417
- msgstr ""
1418
-
1419
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:47
1420
- msgid "The attendee post status"
1421
- msgstr ""
1422
-
1423
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:43
1424
- msgid "The attendee post author ID"
1425
- msgstr ""
1426
-
1427
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:39
1428
- msgid "The attendee global ID lineage"
1429
- msgstr ""
1430
-
1431
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:32
1432
- msgid "The attendee global ID"
1433
- msgstr ""
1434
-
1435
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:28
1436
- msgid "The ID of the ticket the attendee is associated with"
1437
- msgstr ""
1438
-
1439
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:24
1440
- msgid "The ID of the post the attendee is associated to"
1441
- msgstr ""
1442
-
1443
- #: src/Tribe/REST/V1/Documentation/Attendee_Definition_Provider.php:20
1444
- msgid "The attendee WordPress post ID"
1445
- msgstr ""
1446
-
1447
- #: src/Tribe/Privacy.php:536
1448
- msgid "Billing Address"
1449
- msgstr ""
1450
-
1451
- #: src/Tribe/Privacy.php:519
1452
- msgid "Order Number"
1453
- msgstr ""
1454
-
1455
- #: src/Tribe/Privacy.php:514
1456
- msgid "Event Tickets TribeCommerce Order Data"
1457
- msgstr ""
1458
-
1459
- #: src/Tribe/Privacy.php:381
1460
- msgid "TribeCommerce order information was not removed. A database error may have occurred during deletion."
1461
- msgstr ""
1462
-
1463
- #: src/Tribe/Privacy.php:312
1464
- msgid "TribeCommerce attendee information was not removed. A database error may have occurred during deletion."
1465
- msgstr ""
1466
-
1467
- #: src/Tribe/Privacy.php:248
1468
- msgid "RSVP information was not removed. A database error may have occurred during deletion."
1469
- msgstr ""
1470
-
1471
- #: src/Tribe/Privacy.php:81 src/Tribe/Privacy.php:108
1472
- msgid "Event Tickets TribeCommerce Order"
1473
- msgstr ""
1474
-
1475
- #: src/Tribe/Main.php:887
1476
- msgid "When Event Tickets and Event Tickets Plus are both activated, Event Tickets Plus must be running version %1$s or greater. Please %2$smanually update now%3$s."
1477
- msgstr ""
1478
-
1479
- #: src/Tribe/Attendees.php:426
1480
- msgid "%s - Attendee list"
1481
- msgstr ""
1482
-
1483
- #: common/src/Tribe/Plugins_API.php:37
1484
- msgid "Event Aggregator adds massive import functionality to your calendar. Before you know it, you’ll be importing events from Meetup, Eventbrite, Google Calendar, iCalendar, and other URLs with ease. Schedule imports to run automatically behind-the-scenes or run them manually when you’re ready. Go ahead and import to your heart’s content—Event Aggregator hooks you up with a central dashboard in the admin to make managing your imports a breeze."
1485
- msgstr ""
1486
-
1487
- #: common/src/Tribe/Main.php:291
1488
- msgid "Clear"
1489
- msgstr ""
1490
-
1491
- #: src/admin-views/tribe-options-tickets.php:327
1492
- msgid "You have tickets!"
1493
- msgstr ""
1494
-
1495
- #: src/admin-views/tribe-options-tickets.php:295
1496
- msgid "After a successful PayPal order users will be redirected to this page; use the %s shortcode to display the order confirmation to the user in the page content."
1497
- msgstr ""
1498
-
1499
- #: src/admin-views/privacy.php:56
1500
- msgid "If you have extended our plugin(s) to send data to a third-party service such as Eventbrite, Google Maps, or PayPal, user information may be passed to these external services. These services may be located abroad."
1501
- msgstr ""
1502
-
1503
- #: src/admin-views/privacy.php:54
1504
- msgid "Modern Tribe does not send any user data outside of your website by default."
1505
- msgstr ""
1506
-
1507
- #: src/admin-views/privacy.php:52
1508
- msgid "Where We Send Your Data"
1509
- msgstr ""
1510
-
1511
- #: src/admin-views/privacy.php:50
1512
- msgid "Certain data may be exported or removed upon users request via the existing Exporter or Eraser. Please note, however, that several “edge cases” exist in which we are unable to perfect the gathering and export of all data for your end users. We suggest running a search in your local database, as well as within the WordPress Dashboard, in order to identify all data collected and stored for your specific user requests."
1513
- msgstr ""
1514
-
1515
- #: src/admin-views/privacy.php:48
1516
- msgid "All information (data) is retained in the local database indefinitely, unless otherwise deleted."
1517
- msgstr ""
1518
-
1519
- #: src/admin-views/privacy.php:46
1520
- msgid "How Long You Retain this Data"
1521
- msgstr ""
1522
-
1523
- #: src/admin-views/privacy.php:44
1524
- msgid "These API keys may include the following third party services: Google Maps and PayPal."
1525
- msgstr ""
1526
-
1527
- #: src/admin-views/privacy.php:42
1528
- msgid "We make use of certain API keys, in order to provide specific features."
1529
- msgstr ""
1530
-
1531
- #: src/admin-views/privacy.php:38
1532
- msgid "Events Tickets suite offers the use of third-party API keys. The primary functions are to enhance the features we've built in, some of which use Google Maps and PayPal. These API keys are not supplied by Modern Tribe."
1533
- msgstr ""
1534
-
1535
- #: src/admin-views/privacy.php:36
1536
- msgid "API Keys"
1537
- msgstr ""
1538
-
1539
- #: src/admin-views/privacy.php:34
1540
- msgid "Please note: The website owner can collect nearly any Attendee Information requested from ticket buyers by creating a custom registration form."
1541
- msgstr ""
1542
-
1543
- #: src/admin-views/privacy.php:31
1544
- msgid "Ticket purchaser billing address, which is collected through the use of WooCommerce, Easy Digital Downloads, or PayPal"
1545
- msgstr ""
1546
-
1547
- #: src/admin-views/privacy.php:30
1548
- msgid "Ticket purchaser information: name and email address"
1549
- msgstr ""
1550
-
1551
- #: src/admin-views/privacy.php:29
1552
- msgid "Ticket information (RSVPs and Tickets): name, email address, and ticket number/SKU (via check-in page)"
1553
- msgstr ""
1554
-
1555
- #: src/admin-views/privacy.php:28
1556
- msgid "Attendees information (RSVPs and Tickets): name and email address"
1557
- msgstr ""
1558
-
1559
- #: src/admin-views/privacy.php:25
1560
- msgid "If you create, submit, import, save, or publish event ticket information, as well as RSVP or purchase tickets to events, such information is retained in the local database:"
1561
- msgstr ""
1562
-
1563
- #: src/admin-views/privacy.php:24 src/admin-views/privacy.php:40
1564
- msgid "Suggested text:"
1565
- msgstr ""
1566
-
1567
- #: src/admin-views/privacy.php:23
1568
- msgid "Through the usage of Event Tickets, Event Tickets Plus, and Community Tickets, information may be collected and stored within your website’s database."
1569
- msgstr ""
1570
-
1571
- #: src/admin-views/privacy.php:21
1572
- msgid "Event, Attendee, and Ticket Purchaser Information"
1573
- msgstr ""
1574
-
1575
- #: src/admin-views/privacy.php:19
1576
- msgid "What personal data we collect and why we collect it"
1577
- msgstr ""
1578
-
1579
- #: src/admin-views/privacy.php:17
1580
- msgid "This information is only for guidance and not to be considered as legal advice."
1581
- msgstr ""
1582
-
1583
- #: src/admin-views/privacy.php:17
1584
- msgid "Disclaimer:"
1585
- msgstr ""
1586
-
1587
- #: src/admin-views/privacy.php:16
1588
- msgid "You should include the information below in the correct sections of you privacy policy."
1589
- msgstr ""
1590
-
1591
- #: src/admin-views/privacy.php:15
1592
- msgid "This information serves as a guide on what sections need to be modified due to usage of Event Tickets and its Add-ons."
1593
- msgstr ""
1594
-
1595
- #: src/admin-views/privacy.php:14
1596
- msgid "Hello,"
1597
- msgstr ""
1598
-
1599
- #: src/Tribe/REST/V1/Messages.php:22
1600
- msgid "The requested attendee check in is not available"
1601
- msgstr ""
1602
-
1603
- #: src/Tribe/REST/V1/Messages.php:27
1604
- msgid "The requested ticket is not accessible"
1605
- msgstr ""
1606
-
1607
- #: src/Tribe/REST/V1/Messages.php:20
1608
- msgid "The requested post ID does not exist or is not an attendee"
1609
- msgstr ""
1610
-
1611
- #: src/Tribe/REST/V1/Messages.php:19
1612
- msgid "The attendee ID is missing from the request"
1613
- msgstr ""
1614
-
1615
- #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:160
1616
- msgid "Returns the documentation for Event Tickets REST API in Swagger consumable format."
1617
- msgstr ""
1618
-
1619
- #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:109
1620
- msgid "Event Tickets REST API allows accessing ticket information easily and conveniently."
1621
- msgstr ""
1622
-
1623
- #: src/Tribe/REST/V1/Endpoints/Swagger_Documentation.php:108
1624
- msgid "Event Tickets REST API"
1625
- msgstr ""
1626
-
1627
- #: src/Tribe/REST/V1/Endpoints/Base.php:77
1628
- msgid "No description provided"
1629
- msgstr ""
1630
-
1631
- #: src/Tribe/REST/V1/Documentation/Ticket_Definition_Provider.php:20
1632
- msgid "The ticket WordPress post ID"
1633
- msgstr ""
1634
-
1635
- #: src/Tribe/Privacy.php:435
1636
- msgid "Order Title"
1637
- msgstr ""
1638
-
1639
- #: src/Tribe/Privacy.php:430
1640
- msgid "Event Tickets TribeCommerce Attendee Data"
1641
- msgstr ""
1642
-
1643
- #: src/Tribe/Privacy.php:154
1644
- #: src/modules/blocks/rsvp/container-header/template.js:35
1645
- #: src/resources/js/app/blocks.js:41074
1646
- msgid "RSVP Title"
1647
- msgstr ""
1648
-
1649
- #: src/Tribe/Privacy.php:149
1650
- msgid "Event Tickets RSVP Attendee Data"
1651
- msgstr ""
1652
-
1653
- #: src/Tribe/Privacy.php:76 src/Tribe/Privacy.php:103
1654
- msgid "Event Tickets TribeCommerce Attendee"
1655
- msgstr ""
1656
-
1657
- #: src/Tribe/Privacy.php:71 src/Tribe/Privacy.php:98
1658
- msgid "Event Tickets RSVP Attendee"
1659
- msgstr ""
1660
-
1661
- #: src/views/tickets/orders.php:32
1662
- msgid "You don't have tickets for this event"
1663
- msgstr ""
1664
-
1665
- #: src/admin-views/tribe-options-tickets.php:263
1666
- msgid "For help creating and configuring your account, call PayPal at 1-844-720-4038 (USA)"
1667
- msgstr ""
1668
-
1669
- #: common/src/Tribe/Admin/Notice/Php_Version.php:101
1670
- msgid "Starting March 2019, %1$s will no longer work with versions prior to PHP 5.4. Currently your site is using PHP version %2$s. For best results, we recommend using PHP 5.6 or above."
1671
- msgstr ""
1672
-
1673
- #: common/src/Tribe/Admin/Notice/Php_Version.php:98
1674
- msgid "Starting March 2019, %1$s will no longer support versions prior to PHP 5.6. Your site is currently using PHP version %2$s which will no longer be supported by %1$s. For best results, we recommend using PHP 5.6 or above."
1675
- msgstr ""
1676
-
1677
- #: src/views/tickets/tpp-return-to-cart.php:6
1678
- msgid "Return to Cart"
1679
- msgstr ""
1680
-
1681
- #: src/admin-views/tribe-options-tickets.php:160
1682
- msgid "Tribe Commerce is a light implementation of a commerce gateway using PayPal and simplified stock handling. If you need more advanced features, take a look at %1$s. In addition to integrating with your favorite ecommerce provider, Event Tickets Plus includes options to collect custom information for attendees, check users in via QR codes, and share stock between tickets. %2$s"
1683
- msgstr ""
1684
-
1685
- #: src/admin-views/tribe-options-tickets.php:156
1686
- msgid "Check it out!"
1687
- msgstr ""
1688
-
1689
- #: src/admin-views/editor/list-row.php:101
1690
- msgid "Stock management is disabled. Enable it on the related Woocommerce product's inventory settings."
1691
- msgstr ""
1692
-
1693
- #: src/admin-views/editor/fieldset/price.php:72
1694
- msgid "Current sale or member price. This can be managed via the product editor."
1695
- msgstr ""
1696
-
1697
- #: src/admin-views/editor/fieldset/price.php:71
1698
- msgid "Sale/Member Price:"
1699
- msgstr ""
1700
-
1701
- #: src/admin-views/attendees.php:125
1702
- msgid "Search attendees"
1703
- msgstr ""
1704
-
1705
- #: src/Tribe/CSV_Importer/Column_Names.php:37
1706
- msgid "Ticket Show Description"
1707
- msgstr ""
1708
-
1709
- #: common/src/admin-views/tribe-options-help.php:33
1710
- msgid "Search our support help desk"
1711
- msgstr ""
1712
-
1713
- #: common/src/Tribe/Plugins_API.php:71
1714
- msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Easy Digital Downloads, or our built in Tribe Commerce tool. Add tickets to your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your event listings. Create custom registration forms, manage attendees, use custom capacity options, and more. Guest check in is easy with QR codes and our custom scanning app."
1715
- msgstr ""
1716
-
1717
- #: src/views/tickets/tpp.php:93
1718
- msgid "%1$s available"
1719
- msgstr ""
1720
-
1721
- #: src/views/tickets/tpp.php:54
1722
- msgid "Please fill in the ticket confirmation name and email fields."
1723
- msgstr ""
1724
-
1725
- #: src/views/tickets/tpp.php:36
1726
- msgctxt "form heading"
1727
- msgid "Tickets"
1728
- msgstr ""
1729
-
1730
- #: src/views/tickets/tpp-success.php:134 src/Tribe/Privacy.php:524
1731
- msgid "Order Total"
1732
- msgstr ""
1733
-
1734
- #: src/views/tickets/tpp-success.php:80
1735
- msgctxt "Success page tickets table header"
1736
- msgid "Subtotal"
1737
- msgstr ""
1738
-
1739
- #: src/views/tickets/tpp-success.php:79
1740
- msgctxt "Success page tickets table header"
1741
- msgid "Quantity"
1742
- msgstr ""
1743
-
1744
- #: src/views/tickets/tpp-success.php:78
1745
- msgctxt "Success page tickets table header"
1746
- msgid "Price"
1747
- msgstr ""
1748
-
1749
- #: src/views/tickets/tpp-success.php:77
1750
- msgctxt "Success page tickets table header"
1751
- msgid "Ticket"
1752
- msgstr ""
1753
-
1754
- #: src/views/tickets/tpp-success.php:65
1755
- msgid "Thank you for your purchase! You will receive your receipt and tickets via email."
1756
- msgstr ""
1757
-
1758
- #: src/views/tickets/tpp-success.php:56
1759
- msgid "Your order (#%s) is currently processing. Once completed, you'll receive your ticket(s) in an email."
1760
- msgstr ""
1761
-
1762
- #: src/views/tickets/tpp-success.php:48
1763
- msgid "Whoops! It looks like there was a problem with your order. Please contact the site owner for assistance."
1764
- msgstr ""
1765
-
1766
- #: src/views/tickets/tpp-success.php:42
1767
- msgid "No order confirmation is available because no purchase was made."
1768
- msgstr ""
1769
-
1770
- #: src/views/tickets/orders-pp-tickets.php:71
1771
- msgctxt "order status label"
1772
- msgid "Payment status: "
1773
- msgstr ""
1774
-
1775
- #: src/views/tickets/orders-pp-tickets.php:41
1776
- msgid "Purchased by %1$s (%2$s)"
1777
- msgstr ""
1778
-
1779
- #: src/views/tickets/orders-pp-tickets.php:32
1780
- msgid "My Tickets for This %s"
1781
- msgstr ""
1782
-
1783
- #: src/views/login-to-purchase.php:16
1784
- #: src/views/blocks/tickets/submit-login.php:20
1785
- msgid "Log in to purchase"
1786
- msgstr ""
1787
-
1788
- #: src/views/login-before-purchase.php:24
1789
- msgctxt "Registration link on Tribe Commerce checkout page, shown as an alternative the login link"
1790
- msgid "create an account"
1791
- msgstr ""
1792
-
1793
- #: src/views/login-before-purchase.php:23
1794
- msgctxt "Login link on Tribe Commerce checkout page, shown as an alternative to the registration link"
1795
- msgid "Log in"
1796
- msgstr ""
1797
-
1798
- #: src/views/login-before-purchase.php:21
1799
- msgctxt "Login link on Tribe Commerce checkout page"
1800
- msgid "Log in before purchasing"
1801
- msgstr ""
1802
-
1803
- #: src/admin-views/tribe-options-tickets.php:358
1804
- msgid "Override the default IPN notify URL with this value. This value must be the same set in PayPal IPN Notifications settings area (%s)."
1805
- msgstr ""
1806
-
1807
- #: src/admin-views/tribe-options-tickets.php:356
1808
- msgid "IPN Notify URL"
1809
- msgstr ""
1810
-
1811
- #: src/admin-views/tribe-options-tickets.php:347
1812
- msgid "You can see and manage your IPN Notifications history from the IPN Notifications settings area (%s)."
1813
- msgstr ""
1814
-
1815
- #: src/admin-views/tribe-options-tickets.php:344
1816
- msgid "See your IPN Notification history"
1817
- msgstr ""
1818
-
1819
- #: src/admin-views/tribe-options-tickets.php:334
1820
- msgid "Enables PayPal Sandbox mode for testing."
1821
- msgstr ""
1822
-
1823
- #: src/admin-views/tribe-options-tickets.php:333
1824
- msgid "PayPal Sandbox"
1825
- msgstr ""
1826
-
1827
- #: src/admin-views/tribe-options-tickets.php:325
1828
- msgid "Subject of the confirmation email sent to customers when confirming a ticket purchase."
1829
- msgstr ""
1830
-
1831
- #: src/admin-views/tribe-options-tickets.php:324
1832
- msgid "Confirmation email subject"
1833
- msgstr ""
1834
-
1835
- #: src/admin-views/tribe-options-tickets.php:316
1836
- msgid "Sender name of the confirmation email sent to customers when confirming a ticket purchase."
1837
- msgstr ""
1838
-
1839
- #: src/admin-views/tribe-options-tickets.php:315
1840
- msgid "Confirmation email sender name"
1841
- msgstr ""
1842
-
1843
- #: src/admin-views/tribe-options-tickets.php:306
1844
- msgid "Confirmation email sender address"
1845
- msgstr ""
1846
-
1847
- #: src/admin-views/tribe-options-tickets.php:292
1848
- msgid "Success page"
1849
- msgstr ""
1850
-
1851
- #: src/admin-views/tribe-options-tickets.php:286
1852
- msgid "Only decrease available ticket stock if an order is confirmed as Completed by PayPal."
1853
- msgstr ""
1854
-
1855
- #: src/admin-views/tribe-options-tickets.php:285
1856
- msgid "Decrease available ticket stock as soon as a Pending order is created."
1857
- msgstr ""
1858
-
1859
- #: src/admin-views/tribe-options-tickets.php:281
1860
- msgid "When a customer purchases a ticket, PayPal might flag the order as Pending. The order will be Complete once payment is confirmed by PayPal."
1861
- msgstr ""
1862
-
1863
- #: src/admin-views/tribe-options-tickets.php:280
1864
- msgid "Stock Handling"
1865
- msgstr ""
1866
-
1867
- #: src/admin-views/tribe-options-tickets.php:273
1868
- msgid "The currency that will be used for Tribe Commerce transactions."
1869
- msgstr ""
1870
-
1871
- #: src/admin-views/tribe-options-tickets.php:272
1872
- msgid "Currency Code"
1873
- msgstr ""
1874
-
1875
- #: src/admin-views/tribe-options-tickets.php:260
1876
- msgid "PayPal configuration status:"
1877
- msgstr ""
1878
-
1879
- #: src/admin-views/tribe-options-tickets.php:237
1880
- #: src/admin-views/tribe-options-tickets.php:249
1881
- msgid "No"
1882
- msgstr ""
1883
-
1884
- #: src/admin-views/tribe-options-tickets.php:234
1885
- msgid "Have you enabled instant payment notifications (IPN) in your PayPal account's Selling Tools?"
1886
- msgstr ""
1887
-
1888
- #: src/admin-views/tribe-options-tickets.php:226
1889
- msgid "PayPal email to receive payments:"
1890
- msgstr ""
1891
-
1892
- #: src/admin-views/tribe-options-tickets.php:220
1893
- msgid "Configure PayPal:"
1894
- msgstr ""
1895
-
1896
- #: src/admin-views/tribe-options-tickets.php:212
1897
- msgid "Your site address is: %s"
1898
- msgstr ""
1899
-
1900
- #: src/admin-views/tribe-options-tickets.php:210
1901
- msgid "Have you entered this site's address in the Notification URL field in IPN Settings?"
1902
- msgstr ""
1903
-
1904
- #: src/admin-views/tribe-options-tickets.php:204
1905
- msgid "In order to use Tribe Commerce to sell tickets, you must configure your PayPal account to communicate with your WordPress site. If you need help getting set up, follow %s"
1906
- msgstr ""
1907
-
1908
- #: src/admin-views/tribe-options-tickets.php:202
1909
- msgid "these instructions"
1910
- msgstr ""
1911
-
1912
- #: src/admin-views/tribe-options-tickets.php:175
1913
- msgid "Check this box if you wish to turn on Tribe Commerce functionality"
1914
- msgstr ""
1915
-
1916
- #: src/admin-views/tribe-options-tickets.php:174
1917
- msgid "Enable Tribe Commerce "
1918
- msgstr ""
1919
-
1920
- #: src/admin-views/tribe-options-tickets.php:144
1921
- msgid "Tribe Commerce"
1922
- msgstr ""
1923
-
1924
- #: src/admin-views/tribe-options-tickets.php:54
1925
- msgid "Require users to log in before they purchase tickets"
1926
- msgstr ""
1927
-
1928
- #: src/Tribe/Status/Abstract_Commerce.php:176
1929
- msgid "SKU: (%s)"
1930
- msgstr ""
1931
-
1932
- #: src/admin-views/tpp-orders.php:23
1933
- msgctxt "post type details"
1934
- msgid "%s Details"
1935
- msgstr ""
1936
-
1937
- #: src/admin-views/tpp-metabox-sku.php:30 src/resources/js/app/blocks.js:45740
1938
- msgid "A unique identifying code for each ticket type you're selling"
1939
- msgstr ""
1940
-
1941
- #: src/admin-views/tpp-metabox-sku.php:20
1942
- msgid "SKU:"
1943
- msgstr ""
1944
-
1945
- #: src/admin-views/editor/panel/list.php:66
1946
- msgid "New ticket"
1947
- msgstr ""
1948
-
1949
- #: src/admin-views/editor/panel/list.php:9
1950
- msgid "No commerce providers available"
1951
- msgstr ""
1952
-
1953
- #: src/admin-views/editor/panel/list.php:8
1954
- msgid "Add a new ticket"
1955
- msgstr ""
1956
-
1957
- #: src/admin-views/editor/fieldset/settings-provider.php:33
1958
- msgid "Note: adjusting this setting will only impact new tickets. Existing tickets will not change. We highly recommend that all tickets for one event use the same ecommerce plugin."
1959
- msgstr ""
1960
-
1961
- #: src/admin-views/editor/fieldset/settings-provider.php:33
1962
- msgid "It looks like you have multiple ecommerce plugins active. We recommend running only one at a time. However, if you need to run multiple, please select which one to use to sell tickets for this event."
1963
- msgstr ""
1964
-
1965
- #: src/admin-views/editor/fieldset/settings-provider.php:32
1966
- msgid "Sell tickets using:"
1967
- msgstr ""
1968
-
1969
- #: src/admin-views/editor/fieldset/price.php:68
1970
- msgid "Current sale price. This can be managed via the product editor."
1971
- msgstr ""
1972
-
1973
- #: src/admin-views/editor/fieldset/price.php:21
1974
- msgid "Leave blank for free tickets"
1975
- msgstr ""
1976
-
1977
- #: src/admin-views/editor/fieldset/price.php:7
1978
- msgid "Ticket Price must be greater than zero."
1979
- msgstr ""
1980
-
1981
- #: src/views/registration/summary/tickets-header.php:19
1982
- #: src/admin-views/editor/column-head-price.php:1
1983
- msgid "Price"
1984
- msgstr ""
1985
-
1986
- #: src/admin-views/editor/button-view-orders.php:35
1987
- msgid "View Orders"
1988
- msgstr ""
1989
-
1990
- #: src/Tribe/Metabox.php:349 src/Tribe/Metabox.php:386
1991
- msgid "The attendee ID is missing from the request parameters."
1992
- msgstr ""
1993
-
1994
- #: src/Tribe/Commerce/PayPal/Tickets_View.php:149
1995
- msgid "unavailable"
1996
- msgstr ""
1997
-
1998
- #: src/Tribe/Commerce/PayPal/Tickets_View.php:118
1999
- msgid "This ticket is no longer active."
2000
- msgstr ""
2001
-
2002
- #: src/Tribe/Commerce/PayPal/Oversell/Sell_Available.php:47
2003
- msgid "Sell only available"
2004
- msgstr ""
2005
-
2006
- #: src/Tribe/Commerce/PayPal/Oversell/Sell_All.php:46
2007
- msgid "Oversell all requested"
2008
- msgstr ""
2009
-
2010
- #: src/Tribe/Commerce/PayPal/Oversell/No_Oversell.php:46
2011
- msgid "Do not oversell"
2012
- msgstr ""
2013
-
2014
- #: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:242
2015
- msgid "Process order"
2016
- msgstr ""
2017
-
2018
- #: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:224
2019
- msgid "Delete all attendees for this order and do not email tickets. You may also want to refund the order %1$sin your PayPal account%2$s."
2020
- msgstr ""
2021
-
2022
- #: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:217
2023
- msgid "Create attendee records and send emails for all tickets in this order (overselling the event)."
2024
- msgstr ""
2025
-
2026
- #: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:124
2027
- msgid "%1$s is oversold: there are more tickets sold than the available capacity. This can occur when the PayPal transaction is not completed immediately, delaying the decrease in ticket availability. Order %2$s includes %3$s ticket(s). There are only %4$s ticket(s) left. Ticket emails have not yet been sent for this order. Choose how to process this order from the options below."
2028
- msgstr ""
2029
-
2030
- #. Description of the plugin
2031
- msgid "Event Tickets allows you to sell basic tickets and collect RSVPs from any post, page, or event."
2032
- msgstr ""
2033
-
2034
- #: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:122
2035
- msgid "in your PayPal account"
2036
- msgstr ""
2037
-
2038
- #: src/Tribe/Commerce/PayPal/Oversell/Admin_Notice_Decorator.php:110
2039
- msgid "An event"
2040
- msgstr ""
2041
-
2042
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:247
2043
- msgid "No matching orders found."
2044
- msgstr ""
2045
-
2046
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:157
2047
- msgid "Refunded with %s"
2048
- msgstr ""
2049
-
2050
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:150
2051
- msgid "%1$s"
2052
- msgstr ""
2053
-
2054
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:79
2055
- msgid "Total"
2056
- msgstr ""
2057
-
2058
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:76
2059
- msgid "Status"
2060
- msgstr ""
2061
-
2062
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:75 src/Tribe/Privacy.php:169
2063
- #: src/Tribe/Privacy.php:450 src/Tribe/Privacy.php:546
2064
- msgid "Date"
2065
- msgstr ""
2066
-
2067
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:74
2068
- msgid "Purchased"
2069
- msgstr ""
2070
-
2071
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:71
2072
- msgid "Order"
2073
- msgstr ""
2074
-
2075
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:42
2076
- msgid "Number of orders per page:"
2077
- msgstr ""
2078
-
2079
- #: src/Tribe/Commerce/PayPal/Orders/Sales.php:259
2080
- msgid "Not completed"
2081
- msgstr ""
2082
-
2083
- #: src/Tribe/Commerce/PayPal/Orders/Sales.php:255
2084
- #: src/admin-views/tpp-orders.php:121
2085
- msgid "Completed"
2086
- msgstr ""
2087
-
2088
- #: src/Tribe/Commerce/PayPal/Orders/Report.php:315
2089
- msgid "Search Orders"
2090
- msgstr ""
2091
-
2092
- #: src/Tribe/Commerce/PayPal/Orders/Report.php:213
2093
- msgctxt "Browser title"
2094
- msgid "%s - PayPal Orders"
2095
- msgstr ""
2096
-
2097
- #: src/Tribe/Commerce/PayPal/Orders/Tab.php:33
2098
- #: src/Tribe/Commerce/PayPal/Orders/Report.php:108
2099
- #: src/Tribe/Commerce/PayPal/Orders/Report.php:157
2100
- msgid "PayPal Orders"
2101
- msgstr ""
2102
-
2103
- #: src/Tribe/Commerce/PayPal/Orders/Report.php:106
2104
- msgid "See PayPal purchases for this %s"
2105
- msgstr ""
2106
-
2107
- #: src/Tribe/Commerce/PayPal/Notices.php:45
2108
- msgid "set it here"
2109
- msgstr ""
2110
-
2111
- #: src/Tribe/Commerce/PayPal/Notices.php:43
2112
- msgid "PayPal is using PDT data but you have not set the PDT identity token"
2113
- msgstr ""
2114
-
2115
- #: src/Tribe/Commerce/PayPal/Main.php:1779
2116
- msgid "Report"
2117
- msgstr ""
2118
-
2119
- #: src/Tribe/Commerce/PayPal/Main.php:1753
2120
- msgid "Sales report"
2121
- msgstr ""
2122
-
2123
- #: src/Tribe/Commerce/PayPal/Main.php:454
2124
- #: src/modules/blocks/tickets/action-buttons/orders/template.js:25
2125
- #: src/resources/js/app/blocks.js:43316
2126
- msgid "Orders"
2127
- msgstr ""
2128
-
2129
- #: src/Tribe/Commerce/PayPal/Main.php:429
2130
- msgid "Tribe Commerce Ticket"
2131
- msgstr ""
2132
-
2133
- #: src/Tribe/Commerce/PayPal/Main.php:428
2134
- msgid "Tribe Commerce Tickets"
2135
- msgstr ""
2136
-
2137
- #: src/Tribe/Commerce/PayPal/Main.php:176
2138
- msgctxt "ticket provider"
2139
- msgid "Tribe Commerce"
2140
- msgstr ""
2141
-
2142
- #: src/Tribe/Commerce/PayPal/Links.php:56
2143
- msgid "Profile and Settings > My selling tools > Instant Payment Notification > Update"
2144
- msgstr ""
2145
-
2146
- #: src/Tribe/Commerce/PayPal/Links.php:29
2147
- msgid "Profile and Settings > My selling tools > Instant Payment Notification > IPN History Page"
2148
- msgstr ""
2149
-
2150
- #: src/Tribe/Commerce/PayPal/Handler/IPN.php:147
2151
- #: src/Tribe/Commerce/PayPal/Handler/Invalid_PDT.php:74
2152
- #: src/Tribe/Commerce/PayPal/Handler/PDT.php:136
2153
- msgctxt "a PayPal configuration status"
2154
- msgid "incomplete"
2155
- msgstr ""
2156
-
2157
- #: src/Tribe/Commerce/PayPal/Handler/IPN.php:143
2158
- msgctxt "a PayPal configuration status"
2159
- msgid "complete"
2160
- msgstr ""
2161
-
2162
- #: src/Tribe/Commerce/PayPal/Frontend/Tickets_Form.php:69
2163
- msgid "Your PayPal Ticket has been received! Check your email for your PayPal Ticket confirmation."
2164
- msgstr ""
2165
-
2166
- #: src/Tribe/Commerce/PayPal/Errors.php:34
2167
- msgid "Your order is currently processing. Once completed, you'll receive your ticket(s) in an email."
2168
- msgstr ""
2169
-
2170
- #: src/Tribe/Commerce/PayPal/Errors.php:31
2171
- msgid "You should add at least one ticket."
2172
- msgstr ""
2173
-
2174
- #: src/Tribe/Commerce/PayPal/Errors.php:30
2175
- msgid "You can't add more tickets than the total remaining tickets."
2176
- msgstr ""
2177
-
2178
- #: src/Tribe/Commerce/PayPal/Errors.php:29
2179
- msgid "In order to purchase tickets, you must enter your name and a valid email address."
2180
- msgstr ""
2181
-
2182
- #: src/Tribe/Commerce/PayPal/Errors.php:26
2183
- msgid "Ticket quantity is 0"
2184
- msgstr ""
2185
-
2186
- #: src/Tribe/Commerce/PayPal/Errors.php:25
2187
- msgid "Trying to oversell a ticket but the current oversell policy does not allow it"
2188
- msgstr ""
2189
-
2190
- #: src/Tribe/Commerce/PayPal/Errors.php:24
2191
- msgid "Attendee email and/or full name is missing"
2192
- msgstr ""
2193
-
2194
- #: src/Tribe/Commerce/PayPal/Errors.php:23
2195
- msgid "There was an error"
2196
- msgstr ""
2197
-
2198
- #: src/Tribe/Commerce/PayPal/Endpoints/Success_Template.php:99
2199
- msgid "pending"
2200
- msgstr ""
2201
-
2202
- #: src/Tribe/Commerce/PayPal/Attendance_Totals.php:71
2203
- msgctxt "attendee summary"
2204
- msgid "Complete:"
2205
- msgstr ""
2206
-
2207
- #: src/Tribe/Commerce/PayPal/Attendance_Totals.php:70
2208
- msgctxt "attendee summary"
2209
- msgid "Total Tickets Issued:"
2210
- msgstr ""
2211
-
2212
- #: src/Tribe/Commerce/Currency.php:305
2213
- msgid "U.S. Dollar (USD)"
2214
- msgstr ""
2215
-
2216
- #: src/Tribe/Commerce/Currency.php:299
2217
- msgid "Taiwan New Dollar (TWD)"
2218
- msgstr ""
2219
-
2220
- #: src/Tribe/Commerce/Currency.php:293
2221
- msgid "Thai Baht (THB)"
2222
- msgstr ""
2223
-
2224
- #: src/Tribe/Commerce/Currency.php:287
2225
- msgid "Singapore Dollar (SGD)"
2226
- msgstr ""
2227
-
2228
- #: src/Tribe/Commerce/Currency.php:281
2229
- msgid "Swedish Krona (SEK)"
2230
- msgstr ""
2231
-
2232
- #: src/Tribe/Commerce/Currency.php:269
2233
- msgid "Polish Zloty (PLN)"
2234
- msgstr ""
2235
-
2236
- #: src/Tribe/Commerce/Currency.php:263
2237
- msgid "Philippine Peso (PHP)"
2238
- msgstr ""
2239
-
2240
- #: src/Tribe/Commerce/Currency.php:257
2241
- msgid "New Zealand Dollar (NZD)"
2242
- msgstr ""
2243
-
2244
- #: src/Tribe/Commerce/Currency.php:251
2245
- msgid "Norwegian Krone (NOK)"
2246
- msgstr ""
2247
-
2248
- #: src/Tribe/Commerce/Currency.php:245
2249
- msgid "Mexican Peso (MXN)"
2250
- msgstr ""
2251
-
2252
- #: src/Tribe/Commerce/Currency.php:239
2253
- msgid "Malaysian Ringgit (MYR)"
2254
- msgstr ""
2255
-
2256
- #: src/Tribe/Commerce/Currency.php:233
2257
- msgid "Japanese Yen (JPY)"
2258
- msgstr ""
2259
-
2260
- #: src/Tribe/Commerce/Currency.php:221
2261
- msgid "Israeli New Sheqel (ILS)"
2262
- msgstr ""
2263
-
2264
- #: src/Tribe/Commerce/Currency.php:215
2265
- msgid "Hungarian Forint (HUF)"
2266
- msgstr ""
2267
-
2268
- #: src/Tribe/Commerce/Currency.php:209
2269
- msgid "Hong Kong Dollar (HKD)"
2270
- msgstr ""
2271
-
2272
- #: src/Tribe/Commerce/Currency.php:203
2273
- msgid "Pound Sterling (GBP)"
2274
- msgstr ""
2275
-
2276
- #: src/Tribe/Commerce/Currency.php:197
2277
- msgid "Euro (EUR)"
2278
- msgstr ""
2279
-
2280
- #: src/Tribe/Commerce/Currency.php:191
2281
- msgid "Danish Krone (DKK)"
2282
- msgstr ""
2283
-
2284
- #: src/Tribe/Commerce/Currency.php:184
2285
- msgid "Czech Koruna (CZK)"
2286
- msgstr ""
2287
-
2288
- #: src/Tribe/Commerce/Currency.php:178
2289
- msgid "Swiss Franc (CHF)"
2290
- msgstr ""
2291
-
2292
- #: src/Tribe/Commerce/Currency.php:172
2293
- msgid "Canadian Dollar (CAD)"
2294
- msgstr ""
2295
-
2296
- #: src/Tribe/Commerce/Currency.php:166
2297
- msgid "Brazilian Real (BRL)"
2298
- msgstr ""
2299
-
2300
- #: src/Tribe/Commerce/Currency.php:160
2301
- msgid "Australian Dollar (AUD)"
2302
- msgstr ""
2303
-
2304
- #: src/Tribe/Attendees_Table.php:814
2305
- msgid "No matching attendees found."
2306
- msgstr ""
2307
-
2308
- #: src/Tribe/Attendees_Table.php:44
2309
- msgid "Number of attendees per page:"
2310
- msgstr ""
2311
-
2312
- #: src/Tribe/Admin/Notices.php:53
2313
- msgid "Event Tickets does not support ticket sales via third party ecommerce plugins. If you want to sell tickets with %1$s, please purchase a license for %2$s."
2314
- msgstr ""
2315
-
2316
- #: common/src/Tribe/Validate.php:184
2317
- msgid "%s must not be empty"
2318
- msgstr ""
2319
-
2320
- #: src/template-tags/tickets.php:446
2321
- msgctxt "ticket shared capacity message (remaining stock)"
2322
- msgid "%1$d available of shared capacity"
2323
- msgstr ""
2324
-
2325
- #: src/admin-views/rsvp-metabox-capacity.php:19
2326
- #: src/admin-views/tpp-metabox-capacity.php:25
2327
- #: src/resources/js/app/blocks.js:45360
2328
- msgid "Leave blank for unlimited"
2329
- msgstr ""
2330
-
2331
- #: src/admin-views/editor/panel/ticket.php:190
2332
- msgid "Save RSVP"
2333
- msgstr ""
2334
-
2335
- #: src/admin-views/editor/panel/ticket.php:181
2336
- msgid "Save ticket"
2337
- msgstr ""
2338
-
2339
- #: src/admin-views/editor/panel/ticket.php:99
2340
- msgid "Ticket type name shows on the front end and emailed tickets"
2341
- msgstr ""
2342
-
2343
- #: src/admin-views/editor/panel/ticket.php:97
2344
- msgid "Ticket Type is a required field."
2345
- msgstr ""
2346
-
2347
- #: src/admin-views/editor/panel/ticket.php:88
2348
- msgid "Type:"
2349
- msgstr ""
2350
-
2351
- #: src/admin-views/editor/panel/ticket.php:83
2352
- msgid "Edit RSVP"
2353
- msgstr ""
2354
-
2355
- #: src/admin-views/editor/panel/ticket.php:75
2356
- msgid "Add new RSVP"
2357
- msgstr ""
2358
-
2359
- #: src/admin-views/editor/panel/settings.php:80
2360
- msgid "Save settings"
2361
- msgstr ""
2362
-
2363
- #: src/admin-views/editor/panel/settings.php:43
2364
- msgid "Select an image from your Media Library to display on emailed tickets. For best results, use a .jpg, .png, or .gif at least 1160px wide."
2365
- msgstr ""
2366
-
2367
- #: src/admin-views/editor/panel/settings.php:41
2368
- msgid "Ticket header image:"
2369
- msgstr ""
2370
-
2371
- #: src/admin-views/editor/panel/list.php:74
2372
- msgid "New RSVP"
2373
- msgstr ""
2374
-
2375
- #: src/admin-views/editor/panel/list.php:72
2376
- msgid "Add a new RSVP"
2377
- msgstr ""
2378
-
2379
- #: src/admin-views/editor/panel/list.php:43
2380
- msgid "View Attendees"
2381
- msgstr ""
2382
-
2383
- #: src/admin-views/editor/panel/list.php:15
2384
- msgid "You have unsaved changes to your tickets. Discard those changes?"
2385
- msgstr ""
2386
-
2387
- #: src/admin-views/editor/list-table.php:40
2388
- msgid "Available"
2389
- msgstr ""
2390
-
2391
- #: src/admin-views/editor/list-table.php:39
2392
- #: src/modules/blocks/tickets/capacity-table/template.js:36
2393
- #: src/resources/js/app/blocks.js:43661
2394
- msgid "Capacity"
2395
- msgstr ""
2396
-
2397
- #: src/admin-views/editor/list-row.php:112
2398
- msgid "( Ticket ID: %d )"
2399
- msgstr ""
2400
-
2401
- #: src/admin-views/editor/list-row.php:98
2402
- msgid "The number of Complete ticket sales does not match the number of attendees. Please check the Attendees list and adjust ticket stock in WooCommerce as needed."
2403
- msgstr ""
2404
-
2405
- #: src/admin-views/editor/list-row.php:96
2406
- msgid "Available:"
2407
- msgstr ""
2408
-
2409
- #: src/admin-views/rsvp-metabox-capacity.php:10
2410
- #: src/admin-views/editor/list-row.php:91
2411
- #: src/admin-views/tpp-metabox-capacity.php:16
2412
- msgid "Capacity:"
2413
- msgstr ""
2414
-
2415
- #: src/admin-views/editor/fieldset/history.php:30
2416
- msgid "Ti"
2417
- msgstr ""
2418
-
2419
- #: src/admin-views/editor/fieldset/history.php:27
2420
- msgid "History"
2421
- msgstr ""
2422
-
2423
- #: src/admin-views/editor/fieldset/advanced.php:132
2424
- msgid "If you do not set an end sale date, tickets sales will never end."
2425
- msgstr ""
2426
-
2427
- #: src/admin-views/editor/fieldset/advanced.php:130
2428
- msgid "If you do not set an end sale date, tickets will be available until the event begins."
2429
- msgstr ""
2430
-
2431
- #: src/admin-views/editor/fieldset/advanced.php:124
2432
- msgid "Ticket end date"
2433
- msgstr ""
2434
-
2435
- #: src/admin-views/editor/fieldset/advanced.php:98
2436
- #: src/modules/blocks/ticket/container-content/advanced-options/duration/template.js:32
2437
- #: src/resources/js/app/blocks.js:45517
2438
- msgid "If you do not set a start sale date, tickets will be available immediately."
2439
- msgstr ""
2440
-
2441
- #: src/admin-views/editor/fieldset/advanced.php:97
2442
- #: src/admin-views/editor/fieldset/advanced.php:126
2443
- msgid "HH:MM"
2444
- msgstr ""
2445
-
2446
- #: src/admin-views/editor/fieldset/advanced.php:95
2447
- msgid "Ticket start date"
2448
- msgstr ""
2449
-
2450
- #: src/admin-views/editor/fieldset/advanced.php:84
2451
- #: src/admin-views/editor/fieldset/advanced.php:113
2452
- #: common/src/modules/utils/date.js:103
2453
- #: common/src/resources/js/app/elements.js:9804
2454
- #: common/src/resources/js/app/utils.js:7352
2455
- msgid "at"
2456
- msgstr ""
2457
-
2458
- #: src/admin-views/editor/fieldset/advanced.php:83
2459
- #: src/admin-views/editor/fieldset/advanced.php:112
2460
- msgid "YYYY-MM-DD"
2461
- msgstr ""
2462
-
2463
- #: src/admin-views/editor/fieldset/advanced.php:65
2464
- msgid "Show description on front end ticket form."
2465
- msgstr ""
2466
-
2467
- #: src/admin-views/editor/fieldset/advanced.php:47
2468
- msgid "Description:"
2469
- msgstr ""
2470
-
2471
- #: src/admin-views/editor/fieldset/advanced.php:45
2472
- msgid "Advanced Settings"
2473
- msgstr ""
2474
-
2475
- #: src/admin-views/editor/fieldset/advanced.php:42
2476
- msgid "Advanced"
2477
- msgstr ""
2478
-
2479
- #: src/admin-views/editor/fieldset/advanced.php:38
2480
- msgid "Start sale date cannot be greater than End Sale date"
2481
- msgstr ""
2482
-
2483
- #: src/admin-views/editor/fieldset/advanced.php:37
2484
- msgid "Start sale date cannot be empty."
2485
- msgstr ""
2486
-
2487
- #: src/admin-views/admin-welcome-message.php:33
2488
- msgid "Settings Overview"
2489
- msgstr ""
2490
-
2491
- #: src/Tribe/Main.php:673
2492
- msgid "Welcome to Event Tickets!"
2493
- msgstr ""
2494
-
2495
- #: src/views/blocks/rsvp/details/availability.php:28
2496
- #: src/views/blocks/tickets/extra-available-unlimited.php:18
2497
- #: src/views/blocks/tickets/extra-available.php:19
2498
- #: src/Tribe/Tickets_Handler.php:84
2499
- #: src/modules/data/blocks/ticket/options.js:19
2500
- #: src/modules/blocks/rsvp/container-header/template.js:75
2501
- #: src/resources/js/app/blocks.js:5523 src/resources/js/app/blocks.js:41107
2502
- #: src/resources/js/app/data.js:5506
2503
- msgid "Unlimited"
2504
- msgstr ""
2505
-
2506
- #: src/Tribe/Tickets.php:1196 src/modules/data/blocks/ticket/options.js:16
2507
- #: src/resources/js/app/blocks.js:5520 src/resources/js/app/data.js:5503
2508
- msgid "Set capacity for this ticket only"
2509
- msgstr ""
2510
-
2511
- #: src/Tribe/Tickets.php:1195
2512
- msgid "Shared capacity with other tickets"
2513
- msgstr ""
2514
-
2515
- #: src/Tribe/Tickets.php:459
2516
- #: src/modules/blocks/ticket/container-content/advanced-options/move-delete/template.js:18
2517
- #: src/resources/js/app/blocks.js:45996
2518
- msgid "Move Ticket"
2519
- msgstr ""
2520
-
2521
- #: src/Tribe/Tickets.php:459
2522
- #: src/modules/blocks/rsvp/advanced-options/move-delete/template.js:18
2523
- #: src/resources/js/app/blocks.js:41552
2524
- msgid "Move RSVP"
2525
- msgstr ""
2526
-
2527
- #: src/Tribe/Tickets.php:384
2528
- msgid "Delete Ticket"
2529
- msgstr ""
2530
-
2531
- #: src/Tribe/Tickets.php:384
2532
- msgid "Delete RSVP"
2533
- msgstr ""
2534
-
2535
- #: src/Tribe/Metabox.php:311
2536
- msgid "Failed to Delete the Ticket, Refresh the Page to try again."
2537
- msgstr ""
2538
-
2539
- #: src/Tribe/Metabox.php:271 src/Tribe/Metabox.php:317
2540
- #: src/Tribe/Metabox.php:355 src/Tribe/Metabox.php:392
2541
- #: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:66
2542
- #: src/Tribe/Editor/REST/V1/Endpoints/Single_Ticket.php:242
2543
- msgid "Commerce Module invalid"
2544
- msgstr ""
2545
-
2546
- #: src/Tribe/Metabox.php:265
2547
- msgid "Failed to Edit the Ticket, Refresh the Page to try again."
2548
- msgstr ""
2549
-
2550
- #: src/Tribe/Metabox.php:255 src/Tribe/Metabox.php:307
2551
- msgid "Invalid Ticket"
2552
- msgstr ""
2553
-
2554
- #: src/Tribe/Metabox.php:220
2555
- msgid "Failed to Add the Ticket"
2556
- msgstr ""
2557
-
2558
- #: src/Tribe/Metabox.php:202
2559
- msgid "Commerce Provider invalid"
2560
- msgstr ""
2561
-
2562
- #: src/Tribe/Metabox.php:198
2563
- msgid "Failed to Add the Ticket, Refresh the Page to try again."
2564
- msgstr ""
2565
-
2566
- #: src/Tribe/Metabox.php:188 src/Tribe/Metabox.php:249
2567
- #: src/Tribe/Metabox.php:301
2568
- msgid "Invalid parent Post"
2569
- msgstr ""
2570
-
2571
- #: src/Tribe/Metabox.php:109
2572
- msgid "Invalid Post ID"
2573
- msgstr ""
2574
-
2575
- #: src/Tribe/CSV_Importer/Column_Names.php:43
2576
- #: src/resources/js/app/blocks.js:45386
2577
- msgid "Ticket Capacity"
2578
- msgstr ""
2579
-
2580
- #: common/src/admin-views/tribe-options-help.php:20
2581
- msgid "Check out our %s for developers."
2582
- msgstr ""
2583
-
2584
- #: common/src/admin-views/tribe-options-help.php:18
2585
- msgid "Want to dive deeper?"
2586
- msgstr ""
2587
-
2588
- #: common/src/admin-views/tribe-options-display.php:28
2589
- msgid "The following three fields accept the date format options available to the PHP %1$s function. <a href=\"%2$s\" target=\"_blank\">Learn how to make your own date format here</a>."
2590
- msgstr ""
2591
-
2592
- #: common/src/Tribe/Validate.php:545
2593
- msgid "%s must be an email address."
2594
- msgstr ""
2595
-
2596
- #: common/src/Tribe/Main.php:266
2597
- msgid "Clear Selection."
2598
- msgstr ""
2599
-
2600
- #: common/src/Tribe/Main.php:265
2601
- msgid "Select all pages"
2602
- msgstr ""
2603
-
2604
- #: common/src/Tribe/Main.php:264
2605
- msgid "All items on this page were selected. "
2606
- msgstr ""
2607
-
2608
- #: common/src/Tribe/Languages/Locations.php:252
2609
- msgid "Sint Maarten"
2610
- msgstr ""
2611
-
2612
- #: common/src/Tribe/Languages/Locations.php:245
2613
- msgid "S&atilde;o Tom&eacute; and Pr&iacute;ncipe"
2614
- msgstr ""
2615
-
2616
- #: common/src/Tribe/Languages/Locations.php:238
2617
- msgid "Saint Helena"
2618
- msgstr ""
2619
-
2620
- #: common/src/Tribe/Languages/Locations.php:237
2621
- msgid "Saint Barth&eacute;lemy"
2622
- msgstr ""
2623
-
2624
- #: common/src/Tribe/Languages/Locations.php:113
2625
- msgid "Cura&ccedil;ao"
2626
- msgstr ""
2627
-
2628
- #: common/src/Tribe/Languages/Locations.php:103
2629
- msgid "Collectivity of Saint Martin"
2630
- msgstr ""
2631
-
2632
- #: common/src/Tribe/Languages/Locations.php:57
2633
- msgid "&Aring;land Islands"
2634
- msgstr ""
2635
-
2636
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:57
2637
- msgid "A list of links to the term own, archive and parent REST URL"
2638
- msgstr ""
2639
-
2640
- #: src/views/tickets/tpp.php:154 src/views/tickets/rsvp.php:230
2641
- msgid "You must have JavaScript activated to purchase tickets. Please enable JavaScript in your browser."
2642
- msgstr ""
2643
-
2644
- #: src/template-tags/tickets.php:254
2645
- msgctxt "list view buy now ticket button"
2646
- msgid "Buy Now!"
2647
- msgstr ""
2648
-
2649
- #: src/template-tags/tickets.php:251
2650
- msgctxt "list view rsvp now ticket button"
2651
- msgid "RSVP Now!"
2652
- msgstr ""
2653
-
2654
- #: src/template-tags/tickets.php:239
2655
- msgid "%s ticket left"
2656
- msgid_plural "%s tickets left"
2657
- msgstr[0] ""
2658
- msgstr[1] ""
2659
-
2660
- #: src/template-tags/tickets.php:237
2661
- msgid "%s spot left"
2662
- msgid_plural "%s spots left"
2663
- msgstr[0] ""
2664
- msgstr[1] ""
2665
-
2666
- #: src/template-tags/tickets.php:204
2667
- msgctxt "list view stock sold out"
2668
- msgid "Sold out"
2669
- msgstr ""
2670
-
2671
- #: common/src/Tribe/Plugins_API.php:139
2672
- msgid "Take your image widgets to the next level with Image Widget Plus! We've taken the simple functionality of our basic Image Widget and amped it up with several popular feature requests - multiple image support, slideshow, lightbox, and random image - all backed by a full year of premium support."
2673
- msgstr ""
2674
-
2675
- #: common/src/Tribe/Plugins_API.php:135
2676
- msgid "Image Widget Plus"
2677
- msgstr ""
2678
-
2679
- #: common/src/Tribe/Plugins_API.php:104
2680
- msgid "Accept user-submitted events on your site! With Community Events, you can accept public submissions or require account sign-on. Settings give you the options to save as a draft or publish automatically, enable categories and tags, and choose whether users can edit/manage their own events or simply submit. Best of all - setup is easy! Just activate, configure the options, and off you go."
2681
- msgstr ""
2682
-
2683
- #: common/src/Tribe/Plugins_API.php:60
2684
- msgid "Event Tickets provides a simple way for visitors to RSVP to your events. As a standalone plugin, it enables you to add RSVP functionality to posts or pages. When paired with The Events Calendar, you can add that same RSVP functionality directly to your event listings."
2685
- msgstr ""
2686
-
2687
- #: common/src/Tribe/Plugins_API.php:28
2688
- msgid "Create an events calendar and manage it with ease. The Events Calendar plugin provides professional-level quality and features backed by a team you can trust."
2689
- msgstr ""
2690
-
2691
- #: src/views/tickets/tpp.php:112
2692
- msgid "Buy now"
2693
- msgstr ""
2694
-
2695
- #: common/src/Tribe/PUE/Notices.php:398
2696
- msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
2697
- msgstr ""
2698
-
2699
- #: common/src/Tribe/PUE/Notices.php:279
2700
- msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
2701
- msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
2702
- msgstr[0] ""
2703
- msgstr[1] ""
2704
-
2705
- #: common/src/Tribe/PUE/Checker.php:987
2706
- msgid "Please refresh the page and try your request again."
2707
- msgstr ""
2708
-
2709
- #: common/src/Tribe/Ajax/Dropdown.php:243
2710
- msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
2711
- msgstr ""
2712
-
2713
- #: common/src/Tribe/Ajax/Dropdown.php:193
2714
- msgid "Empty data set for this dropdown"
2715
- msgstr ""
2716
-
2717
- #: common/src/Tribe/Ajax/Dropdown.php:180
2718
- msgid "Missing data source for this dropdown"
2719
- msgstr ""
2720
-
2721
- #: common/src/Tribe/Ajax/Dropdown.php:38
2722
- msgid "Cannot look for Terms without a taxonomy"
2723
- msgstr ""
2724
-
2725
- #: common/src/Tribe/PUE/Checker.php:1106
2726
- msgid "There is a new version of %1$s available. %2$s"
2727
- msgstr ""
2728
-
2729
- #: common/src/Tribe/PUE/Checker.php:1095
2730
- msgid "Update now to version %s."
2731
- msgstr ""
2732
-
2733
- #: common/src/Tribe/PUE/Checker.php:500
2734
- msgid "%1$sBuy a license%2$s for the Event Aggregator service to access additional import features."
2735
- msgstr ""
2736
-
2737
- #: common/src/Tribe/Validate.php:248
2738
- msgid "%s must be a whole number."
2739
- msgstr ""
2740
-
2741
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:52
2742
- msgid "The URL to the term archive page"
2743
- msgstr ""
2744
-
2745
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:48
2746
- msgid "The number of posts associated with the term"
2747
- msgstr ""
2748
-
2749
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:44
2750
- msgid "The term parent term if any"
2751
- msgstr ""
2752
-
2753
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:40
2754
- msgid "The term description"
2755
- msgstr ""
2756
-
2757
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:36
2758
- msgid "The taxonomy the term belongs to"
2759
- msgstr ""
2760
-
2761
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:32
2762
- msgid "The term slug"
2763
- msgstr ""
2764
-
2765
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:28
2766
- msgid "The term name"
2767
- msgstr ""
2768
-
2769
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:24
2770
- msgid "The WordPress term ID"
2771
- msgstr ""
2772
-
2773
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:37
2774
- msgid "The link to the image in the specified size on the site"
2775
- msgstr ""
2776
-
2777
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:32
2778
- msgid "The image mime-type"
2779
- msgstr ""
2780
-
2781
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:28
2782
- msgid "The image height in pixels in the specified size"
2783
- msgstr ""
2784
-
2785
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:24
2786
- msgid "The image width in pixels in the specified size"
2787
- msgstr ""
2788
-
2789
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:45
2790
- msgid "The details about each size available for the image"
2791
- msgstr ""
2792
-
2793
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:41
2794
- msgid "The image natural height in pixels"
2795
- msgstr ""
2796
-
2797
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:37
2798
- msgid "The image natural width in pixels"
2799
- msgstr ""
2800
-
2801
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:33
2802
- msgid "The image file extension"
2803
- msgstr ""
2804
-
2805
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:29
2806
- msgid "The image WordPress post ID"
2807
- msgstr ""
2808
-
2809
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:25
2810
- msgid "The URL to the full size version of the image"
2811
- msgstr ""
2812
-
2813
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:44
2814
- msgid "The date seconds"
2815
- msgstr ""
2816
-
2817
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:40
2818
- msgid "The date minutes"
2819
- msgstr ""
2820
-
2821
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:36
2822
- msgid "The date hour"
2823
- msgstr ""
2824
-
2825
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:32
2826
- msgid "The date day"
2827
- msgstr ""
2828
-
2829
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:28
2830
- msgid "The date month"
2831
- msgstr ""
2832
-
2833
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:24
2834
- msgid "The date year"
2835
- msgstr ""
2836
-
2837
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:34
2838
- msgid "A sorted array of all the numeric values for the cost"
2839
- msgstr ""
2840
-
2841
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:28
2842
- msgid "The position of the currency symbol in the cost string"
2843
- msgstr ""
2844
-
2845
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24
2846
- msgid "The cost currency symbol"
2847
- msgstr ""
2848
-
2849
- #: src/template-tags/tickets.php:449
2850
- msgctxt "ticket stock message (remaining stock)"
2851
- msgid "%1$d available"
2852
- msgstr ""
2853
-
2854
- #: src/template-tags/tickets.php:444
2855
- msgid "%s %d"
2856
- msgstr ""
2857
-
2858
- #: src/template-tags/tickets.php:438
2859
- msgctxt "separate going and remain RSVPs"
2860
- msgid "RSVP'd Going"
2861
- msgstr ""
2862
-
2863
- #: src/admin-views/tribe-options-tickets.php:102
2864
- msgid "Location of Tickets form"
2865
- msgstr ""
2866
-
2867
- #: src/admin-views/tribe-options-tickets.php:92
2868
- msgid "Location of RSVP form"
2869
- msgstr ""
2870
-
2871
- #: src/admin-views/tribe-options-tickets.php:87
2872
- msgid "Above the event description"
2873
- msgstr ""
2874
-
2875
- #: src/admin-views/tribe-options-tickets.php:86
2876
- msgid "Below the event description"
2877
- msgstr ""
2878
-
2879
- #: src/admin-views/tribe-options-tickets.php:85
2880
- msgid "Above the event details"
2881
- msgstr ""
2882
-
2883
- #: src/admin-views/tribe-options-tickets.php:84
2884
- msgid "Below the event details [default]"
2885
- msgstr ""
2886
-
2887
- #: src/admin-views/attendees.php:40
2888
- msgctxt "attendee screen summary"
2889
- msgid "%s Details"
2890
- msgstr ""
2891
-
2892
- #: src/Tribe/Attendees.php:112
2893
- msgctxt "attendee event actions"
2894
- msgid "View %s"
2895
- msgstr ""
2896
-
2897
- #: src/Tribe/Attendees.php:111
2898
- msgctxt "attendee event actions"
2899
- msgid "Edit %s"
2900
- msgstr ""
2901
-
2902
- #: src/Tribe/Attendees_Table.php:430 src/Tribe/Attendees_Table.php:450
2903
- msgid "Undo"
2904
- msgstr ""
2905
-
2906
- #: src/Tribe/Attendees_Table.php:422 src/Tribe/Attendees_Table.php:431
2907
- #: src/Tribe/Attendees_Table.php:442 src/Tribe/Attendees_Table.php:451
2908
- msgid "Check In"
2909
- msgstr ""
2910
-
2911
- #: src/Tribe/Attendees_Table.php:72 src/Tribe/Attendees_Table.php:76
2912
- msgctxt "attendee table"
2913
- msgid "Check in"
2914
- msgstr ""
2915
-
2916
- #: src/Tribe/Attendees_Table.php:70
2917
- msgctxt "attendee table"
2918
- msgid "Security Code"
2919
- msgstr ""
2920
-
2921
- #: src/Tribe/Attendees_Table.php:69
2922
- msgctxt "attendee table"
2923
- msgid "Primary Information"
2924
- msgstr ""
2925
-
2926
- #: src/Tribe/Admin/Views/Ticketed.php:59
2927
- msgid "Unticketed"
2928
- msgstr ""
2929
-
2930
- #: src/Tribe/Admin/Views/Ticketed.php:47
2931
- msgid "Ticketed"
2932
- msgstr ""
2933
-
2934
- #: common/src/Tribe/Settings.php:281 common/src/Tribe/Settings.php:282
2935
- msgid "Events Help"
2936
- msgstr ""
2937
-
2938
- #: common/src/Tribe/PUE/Checker.php:1688
2939
- msgid "Expired license. Consult your network administrator."
2940
- msgstr ""
2941
-
2942
- #: common/src/Tribe/PUE/Checker.php:1687
2943
- msgid "No license entered. Consult your network administrator."
2944
- msgstr ""
2945
-
2946
- #: common/src/Tribe/PUE/Checker.php:1686
2947
- msgid "A valid license has been entered by your network administrator."
2948
- msgstr ""
2949
-
2950
- #: common/src/Tribe/PUE/Checker.php:553
2951
- msgid "Site License Key"
2952
- msgstr ""
2953
-
2954
- #: common/src/Tribe/PUE/Checker.php:542
2955
- msgid "Check this box if you wish to override the network license key with your own"
2956
- msgstr ""
2957
-
2958
- #: common/src/Tribe/PUE/Checker.php:541
2959
- msgid "Override network license key"
2960
- msgstr ""
2961
-
2962
- #: common/src/Tribe/PUE/Checker.php:532 common/src/Tribe/PUE/Checker.php:566
2963
- msgid "License Key Status:"
2964
- msgstr ""
2965
-
2966
- #: common/src/Tribe/Main.php:289
2967
- msgid "Done"
2968
- msgstr ""
2969
-
2970
- #: common/src/Tribe/Main.php:288 common/src/Tribe/Main.php:290
2971
- msgid "Today"
2972
- msgstr ""
2973
-
2974
- #: common/src/Tribe/Main.php:287
2975
- msgid "Prev"
2976
- msgstr ""
2977
-
2978
- #: common/src/Tribe/Customizer.php:643
2979
- msgid "Use the following panel of your customizer to change the styling of your Calendar and Event pages."
2980
- msgstr ""
2981
-
2982
- #: common/src/admin-views/app-shop.php:31
2983
- msgid "Installed"
2984
- msgstr ""
2985
-
2986
- #: common/src/admin-views/app-shop.php:29
2987
- msgid "Installed Add-Ons"
2988
- msgstr ""
2989
-
2990
- #: common/src/Tribe/Extension.php:377
2991
- msgid "Unable to run Tribe Extensions. Your website host is running PHP 5.2 or older, and has likely disabled or misconfigured debug_backtrace(). You, or your website host, will need to upgrade PHP or properly configure debug_backtrace() for Tribe Extensions to work."
2992
- msgstr ""
2993
-
2994
- #: common/src/Tribe/Extension.php:144
2995
- msgid "Tutorial"
2996
- msgstr ""
2997
-
2998
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:118
2999
- #: common/src/Tribe/Admin/Notice/Php_Version.php:60
3000
- msgctxt "the final separator in a list of two or more items"
3001
- msgid " and "
3002
- msgstr "en"
3003
-
3004
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:117
3005
- #: common/src/Tribe/Admin/Notice/Php_Version.php:59
3006
- msgctxt "separator used in a list of items"
3007
- msgid ", "
3008
- msgstr ","
3009
-
3010
- #: src/views/tickets/rsvp.php:171
3011
- msgctxt "order status label"
3012
- msgid "RSVP"
3013
- msgstr "RSVP"
3014
-
3015
- #: src/views/tickets/rsvp.php:31
3016
- msgctxt "form heading"
3017
- msgid "RSVP"
3018
- msgstr "RSVP"
3019
-
3020
- #: src/views/tickets/orders-rsvp.php:68
3021
- msgctxt "order status label"
3022
- msgid "RSVP: "
3023
- msgstr "RSVP: "
3024
-
3025
- #: src/views/tickets/email-tickets-moved.php:103
3026
- msgid "We wanted to let you know that a ticket you purchased for %2$s has been transferred to %3$s%4$s. Your ticket remains valid and no further action is needed on your part:"
3027
- msgid_plural "We wanted to let you know that the following %1$s tickets for %2$s have been transferred to %3$s%4$s. Your existing tickets remain valid and no further action is needed on your part:"
3028
- msgstr[0] ""
3029
- msgstr[1] ""
3030
-
3031
- #: src/views/tickets/email-ticket-type-moved.php:115
3032
- #: src/views/tickets/email-tickets-moved.php:117
3033
- msgid " (taking place on %s)"
3034
- msgstr "(vind plaas op %s)"
3035
-
3036
- #: src/views/tickets/email-ticket-type-moved.php:101
3037
- msgid "We wanted to let you know that your ticket for %2$s has been transferred to %3$s%4$s. Your ticket remains valid and no further action is needed on your part."
3038
- msgid_plural "We wanted to let you know that your %1$s tickets for %2$s have been transferred to %3$s%4$s. Your existing tickets remain valid and no further action is needed on your part."
3039
- msgstr[0] ""
3040
- msgstr[1] ""
3041
-
3042
- #: src/views/tickets/email-ticket-type-moved.php:97
3043
- #: src/views/tickets/email-tickets-moved.php:99
3044
- msgid "Important changes to your tickets"
3045
- msgstr "Belangrike veranderinge aan jou kaartjies"
3046
-
3047
- #: src/admin-views/ticket-type-history.php:15
3048
- msgid "Click to hide history"
3049
- msgstr "Kliek om die geskiedenis weg te steek"
3050
-
3051
- #: src/admin-views/ticket-type-history.php:14
3052
- msgid "Click to view the history"
3053
- msgstr "Kliek om die geskiedenis te sien"
3054
-
3055
- #: src/admin-views/ticket-type-history.php:10
3056
- msgid "Ticket history:"
3057
- msgstr "Kaartjie geskiedenis"
3058
-
3059
- #: src/admin-views/move-tickets.php:89
3060
- msgctxt "move tickets dialog"
3061
- msgid "Next &raquo;"
3062
- msgstr "Volgende &raquo;"
3063
-
3064
- #: src/admin-views/move-tickets.php:88 src/resources/js/app/blocks.js:42914
3065
- msgid "Finish!"
3066
- msgstr "Voltooid!"
3067
-
3068
- #: src/admin-views/move-tickets.php:87
3069
- msgctxt "move tickets dialog"
3070
- msgid "&laquo; Back"
3071
- msgstr "&laquo; Terug"
3072
-
3073
- #: src/admin-views/move-tickets.php:80
3074
- msgctxt "move tickets dialog"
3075
- msgid "Please be patient while your request is processed&hellip;"
3076
- msgstr "Wees asseblief geduldig terwyl jou versoek bewerk word&hellip;"
3077
-
3078
- #: src/admin-views/move-tickets.php:72
3079
- msgid "Select the ticket type that the tickets should be transferred to:"
3080
- msgstr "Kies die kaartjie tipe waarheen die kaartjies oorgedra moet word:"
3081
-
3082
- #: src/admin-views/move-tickets.php:64 src/resources/js/app/blocks.js:42899
3083
- msgid "Select the post you wish to move the ticket type to:"
3084
- msgstr ""
3085
-
3086
- #: src/admin-views/move-tickets.php:59
3087
- msgid "You can also enter keywords to help find the target event by title or description:"
3088
- msgstr ""
3089
-
3090
- #: src/admin-views/move-tickets.php:54 src/resources/js/app/blocks.js:42877
3091
- msgid "You can optionally focus on a specific post type:"
3092
- msgstr ""
3093
-
3094
- #: src/admin-views/move-tickets.php:47
3095
- msgid "Move tickets to a different event"
3096
- msgstr ""
3097
-
3098
- #: src/admin-views/move-tickets.php:43
3099
- msgid "Move to a different ticket type within the same event"
3100
- msgstr ""
3101
-
3102
- #: src/admin-views/move-tickets.php:30
3103
- msgid "You have selected %1$s ticket for %2$s. You can move it to a different ticket type within the same event, or to a different event."
3104
- msgid_plural "You have selected %1$s tickets for %2$s. You can move them to a different ticket type within the same event, or to a different event."
3105
- msgstr[0] ""
3106
- msgstr[1] ""
3107
-
3108
- #: src/admin-views/move-tickets.php:25
3109
- msgid "You have specified a range of attendees that are managed by different providers. It is not currently possible to move these together."
3110
- msgstr ""
3111
-
3112
- #: src/admin-views/move-tickets.php:19
3113
- msgid "No attendees specified! Please try again."
3114
- msgstr "Geen deelnemers gespesifiseer nie. Probeer asseblief weer."
3115
-
3116
- #: src/admin-views/list.php:67
3117
- msgid "Move"
3118
- msgstr "Skuif"
3119
-
3120
- #: src/admin-views/admin-welcome-message.php:29
3121
- msgid "Getting Started"
3122
- msgstr ""
3123
-
3124
- #: src/admin-views/admin-welcome-message.php:69
3125
- msgid "Sign Up"
3126
- msgstr ""
3127
-
3128
- #: src/admin-views/admin-welcome-message.php:80
3129
- msgid "Rate It"
3130
- msgstr ""
3131
-
3132
- #: src/admin-views/admin-welcome-message.php:79
3133
- msgid "Rate us today!"
3134
- msgstr ""
3135
-
3136
- #: src/admin-views/admin-welcome-message.php:77
3137
- msgid "We Need Your Help"
3138
- msgstr ""
3139
-
3140
- #: src/Tribe/Attendees.php:503
3141
- msgctxt "attendee export"
3142
- msgid "Customer Email Address"
3143
- msgstr "Kliënt se e-pos adres"
3144
-
3145
- #: src/Tribe/Attendees.php:502
3146
- msgctxt "attendee export"
3147
- msgid "Customer Name"
3148
- msgstr "Kliënt se naam"
3149
-
3150
- #: src/Tribe/Attendees.php:501
3151
- msgctxt "attendee export"
3152
- msgid "Ticket #"
3153
- msgstr "Kaartjie #"
3154
-
3155
- #: src/Tribe/Attendees.php:500
3156
- msgctxt "attendee export"
3157
- msgid "Order Status"
3158
- msgstr "Bestelling Status"
3159
-
3160
- #: src/Tribe/Attendees.php:499
3161
- msgctxt "attendee export"
3162
- msgid "Order ID"
3163
- msgstr "Bestelling ID"
3164
-
3165
- #: src/Tribe/Attendees.php:317
3166
- msgid "You must first select one or more tickets before you can move them!"
3167
- msgstr "Jy moet eers een of meer kaartjies kies voor jy hulle kan skuif!"
3168
-
3169
- #: src/Tribe/Attendees.php:82
3170
- msgid "Post type"
3171
- msgstr ""
3172
-
3173
- #: src/Tribe/Attendees.php:116
3174
- msgctxt "attendee event actions"
3175
- msgid "View"
3176
- msgstr "Kyk"
3177
-
3178
- #: src/Tribe/Attendees.php:115
3179
- msgctxt "attendee event actions"
3180
- msgid "Edit"
3181
- msgstr "Verander"
3182
-
3183
- #: src/Tribe/RSVP.php:332
3184
- msgid "RSVP Ticket"
3185
- msgstr "RSVP Kaartjie"
3186
-
3187
- #: src/Tribe/RSVP.php:331
3188
- msgid "RSVP Tickets"
3189
- msgstr "RSVP Kaartjies"
3190
-
3191
- #: src/Tribe/RSVP.php:163
3192
- msgctxt "ticket provider"
3193
- msgid "RSVP"
3194
- msgstr "RSVP"
3195
-
3196
- #: src/Tribe/RSVP/Attendance_Totals.php:39
3197
- msgctxt "attendee summary"
3198
- msgid "Not Going:"
3199
- msgstr "Ek gaan nie:"
3200
-
3201
- #: src/Tribe/RSVP/Attendance_Totals.php:38
3202
- msgctxt "attendee summary"
3203
- msgid "Going:"
3204
- msgstr "Ek gaan:"
3205
-
3206
- #: src/Tribe/RSVP/Attendance_Totals.php:37
3207
- msgctxt "attendee summary"
3208
- msgid "Total RSVPs:"
3209
- msgstr "Totale aantal RSVPs:"
3210
-
3211
- #: src/Tribe/Assets.php:112
3212
- msgid "Are you sure you want to delete this ticket? This cannot be undone."
3213
- msgstr "Is jy seker jy wil hierdie kaartjie verwyder? Die aksie kan nie ontdoen word nie. "
3214
-
3215
- #: src/Tribe/Main.php:808
3216
- msgctxt "button text"
3217
- msgid "RSVP"
3218
- msgstr "RSVP"
3219
-
3220
- #: src/Tribe/CSV_Importer/Rows.php:49
3221
- msgctxt "post type label"
3222
- msgid "RSVPs"
3223
- msgstr "RSVPs"
3224
-
3225
- #: src/Tribe/CSV_Importer/Rows.php:35
3226
- msgctxt "import type"
3227
- msgid "RSVPs"
3228
- msgstr "RSVPs"
3229
-
3230
- #: src/Tribe/Attendees_Table.php:330
3231
- msgctxt "row action"
3232
- msgid "Delete"
3233
- msgstr "Verwyder"
3234
-
3235
- #: src/Tribe/Attendees_Table.php:318
3236
- msgctxt "row action"
3237
- msgid "Move"
3238
- msgstr "Skuif"
3239
-
3240
- #: src/Tribe/Attendees_Table.php:308
3241
- msgctxt "row action"
3242
- msgid "Check In"
3243
- msgstr "Boek in"
3244
-
3245
- #: src/Tribe/Attendees_Table.php:309
3246
- msgctxt "row action"
3247
- msgid "Undo Check In"
3248
- msgstr "Kanseleer in-boek"
3249
-
3250
- #: src/Tribe/Attendees_Table.php:71
3251
- msgctxt "attendee table"
3252
- msgid "Status"
3253
- msgstr "Status"
3254
-
3255
- #: src/Tribe/Attendees_Table.php:68
3256
- msgctxt "attendee table"
3257
- msgid "Ticket"
3258
- msgstr "Kaartjie"
3259
-
3260
- #: src/Tribe/Attendance_Totals.php:30
3261
- msgctxt "attendee summary"
3262
- msgid "Deleted Attendees:"
3263
- msgstr "Verwyder deelnemers:"
3264
-
3265
- #: src/Tribe/Attendees.php:143
3266
- msgctxt "attendee summary"
3267
- msgid "Checked in:"
3268
- msgstr "Ingeboek:"
3269
-
3270
- #: src/Tribe/Admin/Ticket_History.php:65
3271
- msgid "No history available"
3272
- msgstr "Geen geskiedenis beskikbaar nie"
3273
-
3274
- #: src/Tribe/Admin/Ticket_History.php:35
3275
- msgctxt "attendee table"
3276
- msgid "Hide history"
3277
- msgstr "Steek geskiedenis weg"
3278
-
3279
- #: src/Tribe/Admin/Ticket_History.php:34
3280
- msgctxt "attendee table"
3281
- msgid "View history"
3282
- msgstr "Kyk na gesiekdenis"
3283
-
3284
- #: src/Tribe/Admin/Move_Tickets.php:763
3285
- msgid "This ticket was moved to %1$s from %2$s"
3286
- msgstr "Hierdie kaartjie is geskuif na %1$s van %2$s"
3287
-
3288
- #: src/Tribe/Admin/Move_Tickets.php:583
3289
- msgid "This ticket was moved to %1$s %2$s from %3$s %4$s"
3290
- msgstr "Hierdie kaartjie is geskuif na %1$s %2$s van %3$s %4$s"
3291
-
3292
- #: src/Tribe/Admin/Move_Tickets.php:465
3293
- msgid "%1$d attendee for %2$s was successfully %3$s. Please adjust capacity and stock manually as needed. This attendee will receive an email notifying them of the change."
3294
- msgid_plural "%1$d attendees for %2$s were successfully %3$s. Please adjust capacity and stock manually as needed. These attendees will receive an email notifying them of the change."
3295
- msgstr[0] ""
3296
- msgstr[1] ""
3297
-
3298
- #: src/Tribe/Admin/Move_Tickets.php:458
3299
- msgctxt "moved tickets success message fragment"
3300
- msgid "moved to %s and"
3301
- msgstr ""
3302
-
3303
- #: src/Tribe/Admin/Move_Tickets.php:451
3304
- msgctxt "moved tickets success message fragment"
3305
- msgid "assigned to %s"
3306
- msgstr ""
3307
-
3308
- #: src/Tribe/Admin/Move_Tickets.php:443
3309
- msgid "Tickets could not be moved: there was an unexpected failure during reassignment."
3310
- msgstr ""
3311
-
3312
- #: src/Tribe/Admin/Move_Tickets.php:435
3313
- msgid "Tickets could not be moved: valid ticket IDs or a destination ID were not provided."
3314
- msgstr ""
3315
-
3316
- #: src/Tribe/Admin/Move_Tickets.php:225
3317
- msgctxt "attendee screen bulk actions"
3318
- msgid "Move"
3319
- msgstr ""
3320
-
3321
- #: src/Tribe/Admin/Move_Tickets.php:116
3322
- msgid "Loading, please wait&hellip;"
3323
- msgstr ""
3324
-
3325
- #: src/Tribe/Admin/Move_Tickets.php:115
3326
- msgid "No ticket types were found for this post."
3327
- msgstr ""
3328
-
3329
- #: src/Tribe/Admin/Move_Tickets.php:114
3330
- msgid "No results found - you may need to widen your search criteria."
3331
- msgstr ""
3332
-
3333
- #: src/Tribe/Admin/Move_Tickets.php:113
3334
- msgid "Unable to update the post list. Please refresh the page and try again."
3335
- msgstr ""
3336
-
3337
- #: src/Tribe/Admin/Move_Tickets.php:112
3338
- msgid "Woops! We could not complete the requested operation due to an unforeseen problem."
3339
- msgstr ""
3340
-
3341
- #: src/Tribe/Admin/Move_Tickets.php:77
3342
- msgid "Move Attendees"
3343
- msgstr ""
3344
-
3345
- #: src/Tribe/Admin/Move_Ticket_Types.php:302
3346
- #: src/Tribe/Admin/Move_Tickets.php:704
3347
- msgid "Changes to your tickets from %s"
3348
- msgstr ""
3349
-
3350
- #: src/Tribe/Admin/Move_Ticket_Types.php:205
3351
- msgid "Ticket type was moved to <a href=\"%1$s\" target=\"_blank\">%2$s</a> from <a href=\"%3$s\" target=\"_blank\">%4$s</a>"
3352
- msgstr ""
3353
-
3354
- #: src/Tribe/Admin/Move_Ticket_Types.php:115
3355
- msgid "Ticket type %1$s for %2$s was successfully moved to %3$s. All previously sold tickets of this type have been transferred to %3$s. Please adjust capacity and stock manually as needed. %1$s ticket holders have received an email notifying them of the change. You may now close this window!"
3356
- msgstr ""
3357
-
3358
- #: src/Tribe/Admin/Move_Ticket_Types.php:109
3359
- msgid "Ticket type could not be moved: unexpected failure during reassignment."
3360
- msgstr ""
3361
-
3362
- #: src/Tribe/Admin/Move_Ticket_Types.php:103
3363
- msgid "Ticket type could not be moved: the ticket type or destination post was invalid."
3364
- msgstr ""
3365
-
3366
- #: src/Tribe/Admin/Move_Ticket_Types.php:72
3367
- #: src/Tribe/Admin/Move_Tickets.php:252
3368
- msgid "All supported types"
3369
- msgstr ""
3370
-
3371
- #: src/Tribe/Admin/Move_Ticket_Types.php:28
3372
- #: src/resources/js/app/blocks.js:42942
3373
- msgid "Move Ticket Types"
3374
- msgstr ""
3375
-
3376
- #: common/src/admin-views/tribe-options-licenses.php:19
3377
- msgid "Each paid add-on has its own unique license key. Paste the key into its appropriate field below, and give it a moment to validate. You know you're set when a green expiration date appears alongside a \"valid\" message. Then click Save Changes."
3378
- msgstr ""
3379
-
3380
- #: common/src/admin-views/tribe-options-help.php:55
3381
- msgid "Event Log"
3382
- msgstr ""
3383
-
3384
- #: common/src/admin-views/tribe-options-help.php:42
3385
- msgid "The details of your calendar plugin and settings is often needed for you or our staff to help troubleshoot an issue. Please opt-in below to automatically share your system information with our support team. This will allow us to assist you faster if you post in our help desk."
3386
- msgstr ""
3387
-
3388
- #: common/src/admin-views/app-shop.php:26
3389
- msgid "Buy This Add-On"
3390
- msgstr ""
3391
-
3392
- #: common/src/admin-views/app-shop.php:5
3393
- msgid "Browse All Add-Ons"
3394
- msgstr ""
3395
-
3396
- #: common/src/admin-views/app-shop.php:4
3397
- msgid "Events Add-Ons"
3398
- msgstr ""
3399
-
3400
- #: common/src/Tribe/Languages/Locations.php:110
3401
- msgid "C&ocirc;te d'Ivoire"
3402
- msgstr ""
3403
-
3404
- #: common/src/Tribe/Support.php:372
3405
- msgid "Unique System Info Key Generated"
3406
- msgstr ""
3407
-
3408
- #: common/src/Tribe/Support.php:358 common/src/Tribe/Support.php:384
3409
- msgid "Permission Error"
3410
- msgstr ""
3411
-
3412
- #: common/src/Tribe/Support.php:325 common/src/Tribe/Support.php:330
3413
- msgid "Invalid Key"
3414
- msgstr ""
3415
-
3416
- #: common/src/Tribe/Support.php:306
3417
- msgid "Your system information will only be used by the Modern Tribe support team. All information is stored securely. We do not share this information with any third parties."
3418
- msgstr ""
3419
-
3420
- #: common/src/Tribe/Support.php:305
3421
- msgid "Yes, automatically share my system information with the Modern Tribe support team"
3422
- msgstr ""
3423
-
3424
- #: common/src/Tribe/PUE/Notices.php:441
3425
- msgctxt "formatted plugin list"
3426
- msgid "%1$s and %2$s"
3427
- msgstr ""
3428
-
3429
- #: common/src/Tribe/PUE/Notices.php:356
3430
- msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
3431
- msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
3432
- msgstr[0] ""
3433
- msgstr[1] ""
3434
-
3435
- #: common/src/Tribe/PUE/Notices.php:324
3436
- msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
3437
- msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
3438
- msgstr[0] ""
3439
- msgstr[1] ""
3440
-
3441
- #: common/src/Tribe/PUE/Checker.php:1065
3442
- msgid "There is an update for %s. %sRenew your license%s to get access to bug fixes, security updates, and new features."
3443
- msgstr ""
3444
-
3445
- #: common/src/Tribe/PUE/Checker.php:1008
3446
- msgid "There is an update for %s. You'll need to %scheck your license%s to have access to updates, downloads, and support."
3447
- msgstr ""
3448
-
3449
- #: common/src/Tribe/PUE/Notices.php:339 common/src/Tribe/PUE/Checker.php:972
3450
- msgid " (opens in a new window)"
3451
- msgstr ""
3452
-
3453
- #: common/src/Tribe/PUE/Notices.php:337 common/src/Tribe/PUE/Checker.php:970
3454
- msgid "Renew Your License Now"
3455
- msgstr ""
3456
-
3457
- #: common/src/Tribe/Main.php:276
3458
- msgid ": Selected 1 row"
3459
- msgstr ""
3460
-
3461
- #: common/src/Tribe/Main.php:275
3462
- msgid ": Selected %d rows"
3463
- msgstr ""
3464
-
3465
- #: common/src/Tribe/Main.php:270
3466
- msgid "Previous"
3467
- msgstr ""
3468
-
3469
- #: common/src/Tribe/Main.php:269 common/src/Tribe/Main.php:286
3470
- msgid "Next"
3471
- msgstr ""
3472
-
3473
- #: common/src/Tribe/Main.php:268
3474
- msgid "All"
3475
- msgstr ""
3476
-
3477
- #: common/src/Tribe/Main.php:263
3478
- msgid "Search:"
3479
- msgstr ""
3480
-
3481
- #: common/src/Tribe/Main.php:262
3482
- msgid "No matching records found"
3483
- msgstr ""
3484
-
3485
- #: common/src/Tribe/Main.php:261
3486
- msgid "(filtered from _MAX_ total entries)"
3487
- msgstr ""
3488
-
3489
- #: common/src/Tribe/Main.php:260
3490
- msgid "Showing 0 to 0 of 0 entries"
3491
- msgstr ""
3492
-
3493
- #: common/src/Tribe/Main.php:259
3494
- msgid "Showing _START_ to _END_ of _TOTAL_ entries"
3495
- msgstr ""
3496
-
3497
- #: common/src/Tribe/Main.php:258
3498
- msgid "No data available in table"
3499
- msgstr ""
3500
-
3501
- #: common/src/Tribe/Main.php:257
3502
- msgid "Show _MENU_ entries"
3503
- msgstr ""
3504
-
3505
- #: common/src/Tribe/Main.php:255
3506
- msgid ": activate to sort column descending"
3507
- msgstr ""
3508
-
3509
- #: common/src/Tribe/Main.php:254
3510
- msgid ": activate to sort column ascending"
3511
- msgstr ""
3512
-
3513
- #: common/src/Tribe/Main.php:299
3514
- msgid "Press \"Cmd + C\" to copy"
3515
- msgstr ""
3516
-
3517
- #: common/src/Tribe/Main.php:298
3518
- msgid "System info copied"
3519
- msgstr ""
3520
-
3521
- #: common/src/Tribe/Main.php:297
3522
- #: common/src/admin-views/tribe-options-help.php:50
3523
- msgid "Copy to clipboard"
3524
- msgstr ""
3525
-
3526
- #: common/src/Tribe/Error.php:38
3527
- msgid "An Unknown error occurred"
3528
- msgstr ""
3529
-
3530
- #: common/src/Tribe/Admin/Help_Page.php:219 common/src/Tribe/Plugins_API.php:34
3531
- msgid "Event Aggregator"
3532
- msgstr ""
3533
-
3534
- #: common/src/Tribe/Admin/Activation_Page.php:92
3535
- msgid "Return to WordPress Updates"
3536
- msgstr ""
3537
-
3538
- #: common/src/Tribe/Admin/Activation_Page.php:92
3539
- msgid "Go to WordPress Updates page"
3540
- msgstr ""
3541
-
3542
- #: common/src/Tribe/Admin/Activation_Page.php:84
3543
- msgid "Return to Plugins page"
3544
- msgstr ""
3545
-
3546
- #: common/src/Tribe/Admin/Activation_Page.php:84
3547
- msgid "Go to plugins page"
3548
- msgstr ""
3549
-
3550
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:101
3551
- msgid "To begin using %2$s, please install and activate the latest version of %3$s."
3552
- msgstr ""
3553
-
3554
- #: src/Tribe/Tickets.php:1819
3555
- msgid "Tickets are not available as this %s has passed."
3556
- msgstr ""
3557
-
3558
- #: src/Tribe/Metabox.php:559 src/Tribe/Assets.php:125
3559
- msgid "Please enter in without thousand separators and currency symbols."
3560
- msgstr ""
3561
-
3562
- #: common/src/Tribe/Support.php:171
3563
- msgid "English"
3564
- msgstr ""
3565
-
3566
- #: common/src/Tribe/Plugins_API.php:126
3567
- msgid "The Eventbrite Tickets add-on allows you to create & sell tickets through The Events Calendar using the power of %1$sEventbrite%2$s. Whether you’re creating your ticket on the WordPress dashboard or importing the details of an already-existing event from %1$sEventbrite.com%2$s, this add-on brings the power of the Eventbrite API to your calendar."
3568
- msgstr ""
3569
-
3570
- #: common/src/Tribe/Plugins_API.php:115
3571
- msgctxt "Names of required plugins for Community Tickets"
3572
- msgid "Event Tickets Plus and Community Events"
3573
- msgstr ""
3574
-
3575
- #: common/src/Tribe/Plugins_API.php:114
3576
- msgid "Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin"
3577
- msgstr ""
3578
-
3579
- #: common/src/Tribe/Plugins_API.php:48
3580
- msgid "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more."
3581
- msgstr ""
3582
-
3583
- #: common/src/Tribe/Plugins_API.php:94
3584
- msgid "It is awesome that your calendar is <em>THE PLACE</em> to get hooked up with prime choice ways to spend time. You have more events than Jabba the Hutt has rolls. Too bad visitors are hiring a personal assistant to go through all the choices. Ever wish you could just filter the calendar to only show events in walking distance, on a weekend, that are free? BOOM. Now you can. Introducing… the Filter Bar."
3585
- msgstr ""
3586
-
3587
- #: common/src/Tribe/Admin/Help_Page.php:227 common/src/Tribe/Plugins_API.php:90
3588
- msgid "Filter Bar"
3589
- msgstr "Filtreer strook"
3590
-
3591
- #: common/src/Tribe/Credits.php:64
3592
- msgid "Rate %1$sEvent Tickets%2$s %3$s"
3593
- msgstr ""
3594
-
3595
- #: common/src/Tribe/Credits.php:55
3596
- msgid "Rate %1$sThe Events Calendar%2$s %3$s"
3597
- msgstr ""
3598
-
3599
- #: src/Tribe/RSVP.php:811
3600
- msgid "You confirmed you will not be attending %s"
3601
- msgstr "Jy het bevestig dat jy nie %s gaan bywoon nie"
3602
-
3603
- #: src/views/tickets/email-non-attendance.php:263
3604
- msgid "Thank you for confirming that you will not be attending the above event."
3605
- msgstr "Dankie dat jy bevestig het dat jy nie die boonste gebeurtenis gaan bywoon nie."
3606
-
3607
- #: src/views/tickets/orders-rsvp.php:87
3608
- #: src/views/tickets/orders-pp-tickets.php:76
3609
- msgid "Type: "
3610
- msgstr "Tipe:"
3611
-
3612
- #: src/views/tickets/rsvp.php:211
3613
- msgid "Login to RSVP"
3614
- msgstr "Teken in om te RSVP"
3615
-
3616
- #: src/views/tickets/orders.php:79
3617
- msgid "Update %s"
3618
- msgstr "Opdateer %s"
3619
-
3620
- #: src/views/tickets/orders.php:41
3621
- msgid "View %s"
3622
- msgstr "Kyk na %s"
3623
-
3624
- #: src/views/tickets/orders-rsvp.php:63
3625
- #: src/views/tickets/orders-pp-tickets.php:66
3626
- msgid "Attendee %d"
3627
- msgstr "Deelnemer %d"
3628
-
3629
- #: src/views/tickets/orders-rsvp.php:44
3630
- #: src/views/tickets/orders-pp-tickets.php:47
3631
- msgid " on %s"
3632
- msgstr " op %s"
3633
-
3634
- #: src/views/tickets/orders-rsvp.php:38
3635
- msgid "Reserved by %1$s (%2$s)"
3636
- msgstr "Gereserveer deur %1$s (%2$s)"
3637
-
3638
- #: src/views/tickets/orders-rsvp.php:29
3639
- msgid "My RSVPs for This %s"
3640
- msgstr "My RSVPs vir hierdie %s"
3641
-
3642
- #: src/views/tickets/orders-link.php:39
3643
- #: src/views/blocks/attendees/order-links.php:65
3644
- msgid "View your %s"
3645
- msgstr "Kyk na jou %s"
3646
-
3647
- #: src/views/tickets/orders-link.php:38
3648
- #: src/views/blocks/attendees/order-links.php:48
3649
- msgid "You have %s for this %s."
3650
- msgstr "Jy het %s vir hierdie%s."
3651
-
3652
- #: src/views/tickets/orders-link.php:34
3653
- msgid "%d Ticket"
3654
- msgid_plural "%d Tickets"
3655
- msgstr[0] "%d Kaartjie"
3656
- msgstr[1] "%d Kaartjies"
3657
-
3658
- #: src/views/tickets/orders-link.php:30
3659
- msgid "%d RSVP"
3660
- msgid_plural "%d RSVPs"
3661
- msgstr[0] "%d RSVP"
3662
- msgstr[1] "%d RSVPs"
3663
-
3664
- #: src/views/shortcodes/my-attendance-list.php:32
3665
- msgid "You have not indicated your attendance for any upcoming events."
3666
- msgstr "Jy het nog nie aangewys of jy enige opkomende geleenthede gaan bywoon nie."
3667
-
3668
- #: src/views/shortcodes/my-attendance-list-logged-out.php:12
3669
- msgid "To see a list of events you're attending, you will need to log in."
3670
- msgstr ""
3671
-
3672
- #: src/admin-views/tribe-options-tickets.php:129
3673
- msgid "You can require that users log into your site before they are able to RSVP (or buy tickets). Please review your WordPress Membership option (via the General Settings admin screen) before adjusting this setting."
3674
- msgstr ""
3675
-
3676
- #: src/admin-views/tribe-options-tickets.php:124
3677
- msgid "Login Requirements"
3678
- msgstr ""
3679
-
3680
- #: src/admin-views/tribe-options-tickets.php:53
3681
- msgid "Require users to log in before they RSVP"
3682
- msgstr "Benodig gebruikers om in te teken voor daar geRSVP kan word"
3683
-
3684
- #: src/Tribe/Tickets_View.php:808
3685
- msgid "This RSVP is no longer active."
3686
- msgstr "Die RSVP is nie meer aktief nie."
3687
-
3688
- #: src/Tribe/Tickets_View.php:741
3689
- msgid "Ticket"
3690
- msgstr "Kaartjie"
3691
-
3692
- #: src/views/blocks/rsvp/status/going.php:26
3693
- #: src/modules/blocks/rsvp/counters/template.js:27
3694
- #: src/resources/js/app/blocks.js:40994
3695
- msgid "Going"
3696
- msgstr "Ek gaan"
3697
-
3698
- #: src/Tribe/Tickets.php:1869
3699
- msgid "There are no tickets available at this time."
3700
- msgstr "Daar is geen kaartjies beskikbaar op die oomblik nie"
3701
-
3702
- #: src/Tribe/Tickets.php:1867
3703
- msgid "Tickets are no longer available."
3704
- msgstr "Kaartjies is nie meer beskikbaar nie"
3705
-
3706
- #: src/views/blocks/tickets/content-inactive.php:18 src/Tribe/Tickets.php:1864
3707
- #: src/modules/blocks/tickets/container/template.js:47
3708
- #: src/resources/js/app/blocks.js:44107
3709
- msgid "Tickets are not yet available"
3710
- msgstr ""
3711
-
3712
- #: src/Tribe/Main.php:808
3713
- msgid "Buy"
3714
- msgstr "Koop"
3715
-
3716
- #: src/Tribe/JSON_LD/Order.php:132 src/Tribe/RSVP.php:1024
3717
- #: src/admin-views/editor/column-body-price.php:18
3718
- #: common/src/Tribe/Cost_Utils.php:114
3719
- msgid "Free"
3720
- msgstr "Gratis"
3721
-
3722
- #: src/Tribe/Tickets_View.php:737
3723
- msgid "RSVPs"
3724
- msgstr "RSVP's"
3725
-
3726
- #: src/Tribe/CSV_Importer/RSVP_Importer.php:250
3727
- msgid "Recurring event tickets are not supported, event %s."
3728
- msgstr ""
3729
-
3730
- #: src/Tribe/CSV_Importer/Column_Names.php:42
3731
- msgid "Ticket Stock"
3732
- msgstr "Kaartjie Vooraad"
3733
-
3734
- #: src/Tribe/CSV_Importer/Column_Names.php:41
3735
- msgid "Ticket End Sale Time"
3736
- msgstr "Kaartjie Verkope Eindig Tyd"
3737
-
3738
- #: src/Tribe/CSV_Importer/Column_Names.php:40
3739
- msgid "Ticket End Sale Date"
3740
- msgstr "Kaartjie Verkope Eindig Datum"
3741
-
3742
- #: src/Tribe/CSV_Importer/Column_Names.php:39
3743
- msgid "Ticket Start Sale Time"
3744
- msgstr "Kaartjie Verkope Begin Tyd"
3745
-
3746
- #: src/Tribe/CSV_Importer/Column_Names.php:38
3747
- msgid "Ticket Start Sale Date"
3748
- msgstr "Kaartjie Verkope Begin Datum"
3749
-
3750
- #: src/Tribe/CSV_Importer/Column_Names.php:36
3751
- msgid "Ticket Description"
3752
- msgstr "Kaartjie beskrywing"
3753
-
3754
- #: src/Tribe/CSV_Importer/Column_Names.php:35
3755
- msgid "Ticket Name"
3756
- msgstr "Kaartjie naam"
3757
-
3758
- #: src/Tribe/CSV_Importer/Column_Names.php:34
3759
- msgid "Event Name or ID or Slug"
3760
- msgstr "Geleentheid naam of ID of Slug"
3761
-
3762
- #: common/src/admin-views/event-log.php:117
3763
- msgid "Download log"
3764
- msgstr ""
3765
-
3766
- #: common/src/admin-views/event-log.php:100
3767
- msgid "The selected log file is empty or has not been generated yet."
3768
- msgstr ""
3769
-
3770
- #: common/src/admin-views/event-log.php:43
3771
- msgid "Method"
3772
- msgstr ""
3773
-
3774
- #: common/src/admin-views/event-log.php:21
3775
- msgid "Logging level"
3776
- msgstr ""
3777
-
3778
- #: common/src/Tribe/Validate.php:168
3779
- msgid "%s must contain numbers, letters, dashes and undescores only"
3780
- msgstr ""
3781
-
3782
- #: common/src/Tribe/Log.php:376
3783
- msgid "Full debug (all events)"
3784
- msgstr ""
3785
-
3786
- #: common/src/Tribe/Log.php:375
3787
- msgid "Warnings and errors"
3788
- msgstr ""
3789
-
3790
- #: common/src/Tribe/Log.php:374
3791
- msgid "Only errors"
3792
- msgstr ""
3793
-
3794
- #: common/src/Tribe/Log.php:373
3795
- msgid "Disabled"
3796
- msgstr ""
3797
-
3798
- #: common/src/Tribe/Log.php:274
3799
- msgid "Cannot set %s as the current logging engine"
3800
- msgstr ""
3801
-
3802
- #: common/src/Tribe/Log/Null_Logger.php:26
3803
- msgid "Null logger (will log nothing)"
3804
- msgstr ""
3805
-
3806
- #: common/src/Tribe/Log/File_Logger.php:128
3807
- msgid "Default (uses temporary files)"
3808
- msgstr ""
3809
-
3810
- #: common/src/Tribe/Log/Admin.php:148
3811
- msgctxt "log engines"
3812
- msgid "None currently available"
3813
- msgstr "Nie huidiglik beskikbaar nie"
3814
-
3815
- #: common/src/Tribe/Log/Admin.php:133
3816
- msgctxt "log selector"
3817
- msgid "None currently available"
3818
- msgstr "Nie huidiglik beskikbaar nie"
3819
-
3820
- #: src/views/tickets/rsvp.php:199
3821
- msgid "Don't list me on the public attendee list"
3822
- msgstr "Moenie my op die publieke deelenemerslys sit nie."
3823
-
3824
- #: src/views/tickets/rsvp.php:124
3825
- msgid "Send RSVP confirmation to:"
3826
- msgstr "Stuur RSVP konfirmasie na:"
3827
-
3828
- #: src/views/tickets/rsvp.php:50
3829
- msgid "Please fill in the RSVP quantity, confirmation name, and email fields."
3830
- msgstr ""
3831
-
3832
- #: src/admin-views/meta-box.php:85
3833
- msgid "(%s sold)"
3834
- msgid_plural "(%s sold)"
3835
- msgstr[0] ""
3836
- msgstr[1] ""
3837
-
3838
- #: src/admin-views/meta-box.php:79
3839
- msgid "Global stock level"
3840
- msgstr ""
3841
-
3842
- #: src/admin-views/meta-box.php:69
3843
- msgid "Enable global stock"
3844
- msgstr ""
3845
-
3846
- #: src/Tribe/Assets.php:118
3847
- msgid "It looks like you have modified your shared capacity setting but have not saved or updated the post."
3848
- msgstr ""
3849
-
3850
- #: src/Tribe/Attendees_Table.php:410
3851
- msgid "View order"
3852
- msgstr "Kyk na bestelling"
3853
-
3854
- #: common/src/admin-views/tribe-options-help.php:52
3855
- msgid "Recent Template Changes"
3856
- msgstr ""
3857
-
3858
- #: common/src/Tribe/Support/Template_Checker_Report.php:115
3859
- msgid "Information about recent template changes and potentially impacted template overrides is provided below."
3860
- msgstr ""
3861
-
3862
- #: common/src/Tribe/Support/Template_Checker_Report.php:113
3863
- msgid "No notable template changes detected."
3864
- msgstr ""
3865
-
3866
- #: common/src/Tribe/Support/Template_Checker_Report.php:97
3867
- msgid "based on %s version"
3868
- msgstr ""
3869
-
3870
- #: common/src/Tribe/Support/Template_Checker_Report.php:96
3871
- msgid "version data missing from override"
3872
- msgstr ""
3873
-
3874
- #: common/src/Tribe/Support/Template_Checker_Report.php:92
3875
- msgid "Existing theme overrides that may need revision:"
3876
- msgstr ""
3877
-
3878
- #: common/src/Tribe/Support/Template_Checker_Report.php:82
3879
- msgid "Templates introduced or updated with this release (%s):"
3880
- msgstr ""
3881
-
3882
- #: common/src/Tribe/Support/Template_Checker_Report.php:78
3883
- msgid "No notable changes detected"
3884
- msgstr ""
3885
-
3886
- #. Author URI of the plugin
3887
- msgid "http://m.tri.be/28"
3888
- msgstr "http://m.tri.be/28"
3889
-
3890
- #. Author of the plugin
3891
- msgid "Modern Tribe, Inc."
3892
- msgstr "Modern Tribe, Inc."
3893
-
3894
- #: src/views/tickets/rsvp.php:221
3895
- msgid "Confirm RSVP"
3896
- msgstr "Bevestig RSVP"
3897
-
3898
- #: src/views/tickets/rsvp.php:154 src/views/blocks/rsvp/form/name.php:31
3899
- #: src/Tribe/Privacy.php:159 src/Tribe/Privacy.php:440
3900
- msgid "Full Name"
3901
- msgstr "Volle naam"
3902
-
3903
- #: src/views/tickets/tpp.php:98 src/views/tickets/rsvp.php:97
3904
- #: src/views/blocks/rsvp/details/availability.php:23
3905
- msgid "Out of stock!"
3906
- msgstr "Uit voorraad uit!"
3907
-
3908
- #: src/views/tickets/rsvp.php:93
3909
- msgid "%1$s out of %2$s available"
3910
- msgstr "%1$s uit %2$s beskikbaar"
3911
-
3912
- #: src/views/blocks/rsvp/icon.php:21 src/Tribe/Tickets_View.php:737
3913
- #: src/admin-views/editor/column-body-price.php:16
3914
- #: src/modules/blocks/rsvp/index.js:22
3915
- #: src/modules/blocks/rsvp/container/template.js:31
3916
- #: src/resources/js/app/blocks.js:42083 src/resources/js/app/blocks.js:43192
3917
- msgid "RSVP"
3918
- msgstr "RSVP"
3919
-
3920
- #: src/views/tickets/email.php:406
3921
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:72
3922
- msgid "Purchaser"
3923
- msgstr "Aankoper"
3924
-
3925
- #: src/views/tickets/email.php:402
3926
- msgid "Ticket Type"
3927
- msgstr "Kaartjie Tipe"
3928
-
3929
- #: src/views/tickets/email.php:27
3930
- #: src/views/tickets/email-ticket-type-moved.php:25
3931
- #: src/views/tickets/email-non-attendance.php:39
3932
- #: src/views/tickets/email-tickets-moved.php:26
3933
- msgid "Your tickets"
3934
- msgstr "Jou Kaartjies"
3935
-
3936
- #: src/views/tickets/attendees-email.php:24
3937
- #: src/modules/blocks/attendees/index.js:21
3938
- #: src/resources/js/app/blocks.js:46989
3939
- msgid "Attendee List"
3940
- msgstr "Deelnemerslys"
3941
-
3942
- #: src/admin-views/tribe-options-tickets.php:68
3943
- msgid "Post types that can have tickets"
3944
- msgstr ""
3945
-
3946
- #: src/admin-views/editor/panel/settings.php:14
3947
- #: src/admin-views/tribe-options-tickets.php:64
3948
- msgid "Ticket Settings"
3949
- msgstr ""
3950
-
3951
- #: src/admin-views/meta-box.php:240 src/admin-views/editor/panel/ticket.php:199
3952
- #: src/admin-views/editor/panel/settings.php:81
3953
- #: src/modules/blocks/rsvp/action-dashboard/template.js:29
3954
- #: src/modules/blocks/ticket/dashboard/template.js:24
3955
- #: src/resources/js/app/blocks.js:42318 src/resources/js/app/blocks.js:46447
3956
- msgid "Cancel"
3957
- msgstr "Kanselleer"
3958
-
3959
- #: src/admin-views/meta-box.php:239
3960
- msgid "Save this ticket"
3961
- msgstr "Stoor hierdie kaartjie."
3962
-
3963
- #: src/admin-views/meta-box.php:219
3964
- msgid "If you don't set a start/end date for sales, tickets will be available from now until the event ends."
3965
- msgstr ""
3966
-
3967
- #: src/admin-views/meta-box.php:215
3968
- msgid "When will ticket sales occur?"
3969
- msgstr ""
3970
-
3971
- #: src/admin-views/meta-box.php:192
3972
- #: src/admin-views/editor/fieldset/advanced.php:102
3973
- msgid "End sale:"
3974
- msgstr "Eindig uitverkooping:"
3975
-
3976
- #: src/admin-views/meta-box.php:161
3977
- #: src/admin-views/editor/fieldset/advanced.php:70
3978
- msgid "Start sale:"
3979
- msgstr "Uitverkope begin:"
3980
-
3981
- #: src/admin-views/meta-box.php:152
3982
- msgid "Ticket Description:"
3983
- msgstr "Kaartjie Beskrywing"
3984
-
3985
- #: src/admin-views/meta-box.php:145
3986
- msgid "Ticket Name:"
3987
- msgstr "Kaartjie Naam:"
3988
-
3989
- #: src/admin-views/meta-box.php:128 src/admin-views/editor/panel/ticket.php:102
3990
- msgid "Sell using:"
3991
- msgstr "Verkoop deur middel van:"
3992
-
3993
- #: src/admin-views/meta-box.php:123 src/admin-views/editor/panel/ticket.php:61
3994
- msgid "Edit ticket"
3995
- msgstr "Wysig Kaartjie"
3996
-
3997
- #: src/admin-views/meta-box.php:112 src/admin-views/meta-box.php:122
3998
- #: src/admin-views/editor/panel/ticket.php:53
3999
- msgid "Add new ticket"
4000
- msgstr "Voeg 'n Nuwe Kaartjie by"
4001
-
4002
- #: src/admin-views/meta-box.php:54 src/admin-views/editor/panel/settings.php:67
4003
- msgid "Remove"
4004
- msgstr "Verwyder"
4005
-
4006
- #: src/admin-views/meta-box.php:46 src/admin-views/editor/panel/settings.php:51
4007
- msgid "Select an Image"
4008
- msgstr "Kies 'n beeld"
4009
-
4010
- #: src/admin-views/meta-box.php:43
4011
- msgid "The maximum image size in the email will be 580px wide by any height, and then scaled for mobile. If you would like \"retina\" support use an image sized to 1160px wide."
4012
- msgstr "Die maksimum beeld grootte in die e-pos is 580px wyd deur enige hoogte, en sal dan afgeskaal wordvir selfone. As jy van \"retina\" ondersteuning gebruik wil maak kan die beeld tot die grootte van 1160px ver breed word."
4013
-
4014
- #: src/admin-views/meta-box.php:42
4015
- msgid "Upload image for the ticket header."
4016
- msgstr "Laai foto vir die kaartjie hoofstrook op."
4017
-
4018
- #: src/admin-views/meta-box.php:31
4019
- msgid "This event was created using Community Events. Are you sure you want to sell tickets for it?"
4020
- msgstr "Hierdie geleentheid is geskep met behulp van gemeenskap gebeure. Is jy seker jy wil geld vra vir hierdie kaartjies?"
4021
-
4022
- #: src/Tribe/Status/Abstract_Commerce.php:168
4023
- msgid "Sold %d"
4024
- msgstr "Verkoop %d"
4025
-
4026
- #: src/admin-views/list.php:52
4027
- msgid "Edit in %s"
4028
- msgstr "Wysig in %s"
4029
-
4030
- #: src/admin-views/list.php:47 common/src/admin-views/event-log.php:65
4031
- msgid "View"
4032
- msgstr "Sien"
4033
-
4034
- #: src/admin-views/list.php:33
4035
- #: src/modules/blocks/rsvp/attendee-registration/template.js:23
4036
- #: src/modules/blocks/ticket/container-content/attendees-registration/template.js:21
4037
- #: src/resources/js/app/blocks.js:41781 src/resources/js/app/blocks.js:46203
4038
- msgid "Edit"
4039
- msgstr "Verander"
4040
-
4041
- #: src/admin-views/price-fields.php:16
4042
- #: src/admin-views/legacy-ticket-fields.php:28
4043
- msgid "(Current sale price - this can be managed via the product editor)"
4044
- msgstr ""
4045
-
4046
- #: src/admin-views/price-fields.php:12
4047
- #: src/admin-views/editor/fieldset/price.php:67
4048
- #: src/admin-views/legacy-ticket-fields.php:24
4049
- msgid "Sale Price:"
4050
- msgstr "Verkoop Prys:"
4051
-
4052
- #: src/admin-views/price-fields.php:7
4053
- #: src/admin-views/legacy-ticket-fields.php:19
4054
- msgid "(0 or empty for free tickets)"
4055
- msgstr "(0 of laat leeg vir gratis kaartjies)"
4056
-
4057
- #: src/admin-views/price-fields.php:3
4058
- #: src/admin-views/editor/column-body-price.php:9
4059
- #: src/admin-views/editor/fieldset/price.php:49
4060
- #: src/admin-views/legacy-ticket-fields.php:15
4061
- msgid "Price:"
4062
- msgstr "Prys:"
4063
-
4064
- #: src/admin-views/attendees-email.php:59
4065
- msgid "Send Email"
4066
- msgstr "Stuur die e-pos"
4067
-
4068
- #: src/admin-views/attendees-email.php:38
4069
- msgid "Email Address:"
4070
- msgstr "E-pos Adres:"
4071
-
4072
- #: src/admin-views/attendees-email.php:36
4073
- msgid "or"
4074
- msgstr "of"
4075
-
4076
- #: src/admin-views/attendees-email.php:6
4077
- msgid "Select..."
4078
- msgstr "Kies..."
4079
-
4080
- #: src/admin-views/attendees-email.php:33
4081
- msgid "Select a User:"
4082
- msgstr "Kies 'n Gebruiker:"
4083
-
4084
- #: src/admin-views/attendees-email.php:27
4085
- msgid "Send the attendee list by email"
4086
- msgstr "Stuur die deelnemers per e-pos"
4087
-
4088
- #: src/Tribe/Attendees.php:702
4089
- msgid "Email sent successfully!"
4090
- msgstr "E-pos suksesvol gestuur!"
4091
-
4092
- #: src/Tribe/Attendees.php:695
4093
- msgid "Error when sending the email"
4094
- msgstr "Daar was 'n probleem met die stuur van die e-pos"
4095
-
4096
- #: src/Tribe/Attendees.php:694
4097
- msgid "Attendee List for: %s"
4098
- msgstr "Besoekerslyn vir: %s"
4099
-
4100
- #: src/Tribe/Attendees.php:658 src/Tribe/Attendees.php:674
4101
- msgid "Invalid User ID"
4102
- msgstr "Ongeldige Gebruiker ID"
4103
-
4104
- #: src/Tribe/Attendees.php:652
4105
- msgid "Invalid Email"
4106
- msgstr "Ongedige e-pos"
4107
-
4108
- #: src/Tribe/Attendees.php:640
4109
- msgid "Empty user and email"
4110
- msgstr "Leë gebruiker of e-pos"
4111
-
4112
- #: src/Tribe/Attendees.php:617
4113
- msgid "Invalid Event ID"
4114
- msgstr "Ongeldige Geleentheid ID"
4115
-
4116
- #: src/Tribe/Attendees.php:634
4117
- msgid "Cheatin Huh?"
4118
- msgstr "Kroek jy?"
4119
-
4120
- #: src/Tribe/Attendees.php:583
4121
- msgid "attendees"
4122
- msgstr "deelenemers"
4123
-
4124
- #: src/Tribe/Attendees.php:532 src/admin-views/tribe-options-tickets.php:236
4125
- #: src/admin-views/tribe-options-tickets.php:248
4126
- msgid "Yes"
4127
- msgstr "Ja"
4128
-
4129
- #: src/Tribe/Attendees.php:348
4130
- msgid "You can use Screen Options to select which columns you want to see. The selection works in the table below, in the email, for print and for the CSV export."
4131
- msgstr "Jy kan die skerm Opsies gebruik om te kies watter kolomme jy wil sien. Die seleksie werk in die tabel hieronder, in die e-pos, vir die druk van inligting en vir die CSV uitvoer."
4132
-
4133
- #: src/Tribe/Attendees.php:348
4134
- msgid "Columns"
4135
- msgstr "Kolomme"
4136
-
4137
- #: src/Tribe/Attendees.php:313
4138
- msgid "Sending..."
4139
- msgstr "Besig om te stuur...."
4140
-
4141
- #: src/Tribe/Attendees.php:312
4142
- msgid "You need to select a user or type a valid email address"
4143
- msgstr "Jy moet 'n gebruiker kies of 'n geldige e-pos adres insleutel"
4144
-
4145
- #: src/Tribe/Tabbed_View/Attendee_Report_Tab.php:22
4146
- #: src/Tribe/Admin/Columns/Tickets.php:57 src/Tribe/Attendees.php:210
4147
- #: src/Tribe/Commerce/PayPal/Main.php:442 src/admin-views/list.php:92
4148
- #: src/admin-views/attendees.php:23
4149
- #: src/modules/blocks/rsvp/action-buttons/attendees-action-button/template.js:27
4150
- #: src/modules/blocks/tickets/action-buttons/attendees/template.js:25
4151
- #: src/resources/js/app/blocks.js:42168 src/resources/js/app/blocks.js:43387
4152
- msgid "Attendees"
4153
- msgstr "Deelnemers"
4154
-
4155
- #: src/Tribe/Attendees.php:208 src/admin-views/list.php:90
4156
- msgid "See who purchased tickets to this event"
4157
- msgstr "Sien wie het kaartjies vir die geleentheid gekoop"
4158
-
4159
- #: src/Tribe/Commerce/PayPal/Main.php:1948 src/Tribe/RSVP.php:1786
4160
- msgid "Post draft updated."
4161
- msgstr "Artikel konsep opgedateer"
4162
-
4163
- #: src/Tribe/Commerce/PayPal/Main.php:1947 src/Tribe/RSVP.php:1785
4164
- msgid "Post scheduled."
4165
- msgstr ""
4166
-
4167
- #: src/Tribe/Commerce/PayPal/Main.php:1946 src/Tribe/RSVP.php:1784
4168
- msgid "Post submitted."
4169
- msgstr "Artikel voorgelê."
4170
-
4171
- #: src/Tribe/Commerce/PayPal/Main.php:1943 src/Tribe/RSVP.php:1781
4172
- msgid "Post published. %1$s"
4173
- msgstr ""
4174
-
4175
- #: src/Tribe/Commerce/PayPal/Main.php:1939 src/Tribe/RSVP.php:1777
4176
- msgid "Post updated. %1$s"
4177
- msgstr ""
4178
-
4179
- #: src/Tribe/Commerce/PayPal/Main.php:1932 src/Tribe/RSVP.php:1770
4180
- msgid "Return to the %1$sAttendees Report%2$s."
4181
- msgstr ""
4182
-
4183
- #: src/Tribe/Commerce/PayPal/Main.php:2679 src/Tribe/RSVP.php:1439
4184
- msgid "(deleted)"
4185
- msgstr ""
4186
-
4187
- #: src/Tribe/RSVP.php:1135
4188
- msgid "In order to RSVP, you must enter your name and a valid email address."
4189
- msgstr "Om te kan RSVP moet jy jou naam en 'n geldige e-pos adres in tik."
4190
-
4191
- #: src/Tribe/RSVP.php:1130
4192
- msgid "You can't RSVP more than the total remaining tickets."
4193
- msgstr "Jy kan nie meer RSVP as wat die totale aantal oorblywende kaartjies is nie."
4194
-
4195
- #: src/views/blocks/rsvp/messages/success.php:21 src/Tribe/RSVP.php:1124
4196
- msgid "Your RSVP has been received! Check your email for your RSVP confirmation."
4197
- msgstr "Jou RSVP is gekry! Hou jou e-pos dop vir jou RSVP konfirmasie."
4198
-
4199
- #: src/Tribe/Commerce/PayPal/Main.php:1151 src/Tribe/RSVP.php:723
4200
- msgid "Your tickets from %s"
4201
- msgstr "Jou kaartjies van %s"
4202
-
4203
- #: src/Tribe/Commerce/PayPal/Main.php:361 src/Tribe/RSVP.php:293
4204
- msgctxt "Attendee number"
4205
- msgid "Attendee %1$s"
4206
- msgstr "Deelnemer %1$s"
4207
-
4208
- #: src/Tribe/Assets.php:54
4209
- msgid "Set as ticket header"
4210
- msgstr "Stel as kaartjie hoof op"
4211
-
4212
- #: src/views/tickets/tpp-success.php:95 src/Tribe/Assets.php:53
4213
- msgid "Ticket header image"
4214
- msgstr "Kaartjie Hoof beeld "
4215
-
4216
- #: src/Tribe/Main.php:572
4217
- msgid "If you have a valid license for one of our paid plugins, you can %s in our premium support forums. Our support team monitors the forums and will respond to your thread within 24-48 hours (during the week)."
4218
- msgstr ""
4219
-
4220
- #: src/Tribe/Main.php:567
4221
- msgid "Already have Events Tickets Plus? You can %s in our premium support forums. Our support team monitors the forums and will respond to your thread within 24-48 hours (during the week)."
4222
- msgstr ""
4223
-
4224
- #: src/Tribe/Main.php:566 src/Tribe/Main.php:571
4225
- msgid "post a thread"
4226
- msgstr ""
4227
-
4228
- #: src/Tribe/Main.php:564
4229
- msgid "Looking for more immediate support? We offer %1$s with the purchase of any of our premium plugins (like %2$s). Pick up a license and you can post there directly and expect a response within 24-48 hours during weekdays."
4230
- msgstr ""
4231
-
4232
- #: src/Tribe/Main.php:563 src/admin-views/tribe-options-tickets.php:151
4233
- msgid "Events Tickets Plus"
4234
- msgstr "Events Tickets Plus"
4235
-
4236
- #: src/Tribe/Main.php:562
4237
- msgid "premium support on our website"
4238
- msgstr ""
4239
-
4240
- #: src/Tribe/Main.php:560
4241
- msgid "If you have tried the above steps and are still having trouble, you can post a new thread to our %s. Our support staff monitors these forums once a week and would be happy to assist you there."
4242
- msgstr ""
4243
-
4244
- #: src/Tribe/Main.php:559
4245
- msgid "open-source forum on WordPress.org"
4246
- msgstr ""
4247
-
4248
- #: src/Tribe/Main.php:542
4249
- msgid "We are committed to helping you sell tickets for your event. Check out our handy %s to get started."
4250
- msgstr ""
4251
-
4252
- #: src/Tribe/Main.php:540 src/admin-views/admin-welcome-message.php:34
4253
- msgid "New User Primer"
4254
- msgstr ""
4255
-
4256
- #: src/Tribe/Main.php:523
4257
- msgid "Customizing Event Tickets"
4258
- msgstr ""
4259
-
4260
- #: src/Tribe/Main.php:522
4261
- msgid "Troubleshooting common problems"
4262
- msgstr ""
4263
-
4264
- #: src/Tribe/Main.php:521
4265
- msgid "Features overview"
4266
- msgstr ""
4267
-
4268
- #: src/Tribe/Main.php:520
4269
- msgid "Settings overview"
4270
- msgstr ""
4271
-
4272
- #: src/Tribe/Main.php:518
4273
- msgid "Support for Event Tickets"
4274
- msgstr ""
4275
-
4276
- #: src/Tribe/Main.php:333
4277
- msgid "When The Events Calendar and Event Tickets are both activated, The Events Calendar must be running version %1$s or greater. Please %2$supdate now.%3$s"
4278
- msgstr ""
4279
-
4280
- #: src/Tribe/Attendees_Table.php:589 src/admin-views/list.php:43
4281
- msgid "Delete"
4282
- msgstr "Skrap"
4283
-
4284
- #: src/Tribe/Attendees_Table.php:555
4285
- msgid "Export"
4286
- msgstr "Voer uit"
4287
-
4288
- #: src/views/tickets/rsvp.php:162 src/views/blocks/rsvp/form/email.php:32
4289
- #: src/Tribe/Attendees_Table.php:562
4290
- #: src/Tribe/Commerce/PayPal/Orders/Table.php:73 src/Tribe/Privacy.php:164
4291
- #: src/Tribe/Privacy.php:445 src/Tribe/Privacy.php:541
4292
- #: src/admin-views/admin-welcome-message.php:62
4293
- msgid "Email"
4294
- msgstr "E-pos"
4295
-
4296
- #: src/Tribe/Attendees_Table.php:554
4297
- msgid "Print"
4298
- msgstr "Druk"
4299
-
4300
- #: src/Tribe/Attendees_Table.php:591
4301
- msgid "Undo Check in"
4302
- msgstr "Kanseleer Aanmelding"
4303
-
4304
- #: src/Tribe/Attendees_Table.php:590
4305
- msgid "Check in"
4306
- msgstr "Meld aan"
4307
-
4308
- #: src/views/tickets/email.php:410
4309
- msgid "Security Code"
4310
- msgstr "Sekuriteit Kode"
4311
-
4312
- #: src/views/tickets/email.php:398
4313
- msgid "Ticket #"
4314
- msgstr "Kaartjie #"
4315
-
4316
- #: src/admin-views/editor/list-row.php:43
4317
- msgid "Ticket Type:"
4318
- msgstr ""
4319
-
4320
- #: src/views/tickets/tpp-success.php:71
4321
- msgid "Purchaser Email"
4322
- msgstr ""
4323
-
4324
- #: src/views/tickets/tpp-success.php:68
4325
- msgid "Purchaser Name"
4326
- msgstr ""
4327
-
4328
- #: src/Tribe/Metabox.php:53 src/Tribe/Admin/Ticket_Settings.php:22
4329
- #: src/Tribe/Commerce/PayPal/Main.php:426 src/Tribe/Tickets_View.php:741
4330
- #: src/admin-views/editor/list-table.php:30
4331
- #: src/modules/blocks/tickets/index.js:25 src/resources/js/app/blocks.js:44471
4332
- msgid "Tickets"
4333
- msgstr "Kaartjies"
4334
-
4335
- #: common/src/admin-views/tribe-options-network.php:27
4336
- msgid "Hide the following settings tabs on every site:"
4337
- msgstr "Steek die volgende instellings oortjies op elke webtuiste weg:"
4338
-
4339
- #: common/src/admin-views/tribe-options-network.php:19
4340
- msgid "This is where all of the global network settings for Modern Tribe's The Events Calendar can be modified."
4341
- msgstr "Dit is waar al die wêreldwye netwerk instellings vir Modern Tribe's The Events Calendar kan verander word."
4342
-
4343
- #: common/src/admin-views/tribe-options-network.php:15
4344
- msgid "Network Settings"
4345
- msgstr "Netwerk instellings"
4346
-
4347
- #: common/src/admin-views/tribe-options-help.php:80
4348
- msgid "More..."
4349
- msgstr "Meer..."
4350
-
4351
- #: common/src/admin-views/tribe-options-help.php:74
4352
- msgid "News and Tutorials"
4353
- msgstr "Nuus en Stap-vir-stap Voorbeelde"
4354
-
4355
- #: common/src/admin-views/tribe-options-help.php:41
4356
- msgid "System Information"
4357
- msgstr "Sisteem Inligting"
4358
-
4359
- #: common/src/admin-views/tribe-options-help.php:38
4360
- msgid "Read more about our support policy"
4361
- msgstr ""
4362
-
4363
- #: common/src/admin-views/tribe-options-help.php:37
4364
- msgid "Please note that all hands-on support is provided via the help desk. You can email or tweet at us… ​but we will probably point you back to the help desk 😄"
4365
- msgstr ""
4366
-
4367
- #: common/src/admin-views/tribe-options-help.php:33
4368
- msgid "%s. There are very few issues we haven’t seen and it’s likely another user has already asked your question and gotten an answer from our support staff. While posting to the help desk is open only to paid customers, they are open for anyone to search and review."
4369
- msgstr ""
4370
-
4371
- #: common/src/admin-views/tribe-options-help.php:32
4372
- msgid "Test for a theme or plugin conflict"
4373
- msgstr ""
4374
-
4375
- #: common/src/admin-views/tribe-options-help.php:32
4376
- msgid "%s. Testing for an existing conflict is the best start for in-depth troubleshooting. We will often ask you to follow these steps when opening a new thread, so doing this ahead of time will be super helpful."
4377
- msgstr ""
4378
-
4379
- #: common/src/admin-views/tribe-options-help.php:31
4380
- msgid "Check our Knowledgebase"
4381
- msgstr ""
4382
-
4383
- #: common/src/admin-views/tribe-options-help.php:31
4384
- msgid "%s. All of the common (and not-so-common) answers to questions we see are here. It’s often the fastest path to finding an answer!"
4385
- msgstr ""
4386
-
4387
- #: common/src/admin-views/tribe-options-help.php:27
4388
- msgid "While the resources above help solve a majority of the issues we see, there are times you might be looking for extra support. If you need assistance using our plugins and would like us to take a look, please follow these steps:"
4389
- msgstr ""
4390
-
4391
- #: common/src/admin-views/tribe-options-help.php:26
4392
- msgid "Getting More Help"
4393
- msgstr ""
4394
-
4395
- #: common/src/admin-views/tribe-options-help.php:21
4396
- msgid "list of available functions"
4397
- msgstr ""
4398
-
4399
- #: common/src/admin-views/tribe-options-help.php:15
4400
- msgid "Knowledgebase"
4401
- msgstr ""
4402
-
4403
- #: common/src/admin-views/tribe-options-help.php:15
4404
- msgid "Our website’s %s is a great place to find tips and tricks for using and customizing our plugins."
4405
- msgstr ""
4406
-
4407
- #: common/src/admin-views/tribe-options-help.php:14
4408
- msgid "Getting Support"
4409
- msgstr ""
4410
-
4411
- #: common/src/admin-views/tribe-options-help.php:11
4412
- msgid "Thank you for using %s! All of us at Modern Tribe sincerely appreciate your support and we’re excited to see you using our plugins."
4413
- msgstr ""
4414
-
4415
- #: common/src/admin-views/tribe-options-general.php:59
4416
- msgid "Debug Bar Plugin"
4417
- msgstr "Ontfout Funksie Toevoeging"
4418
-
4419
- #: common/src/admin-views/tribe-options-general.php:59
4420
- msgid "Enable this option to log debug information. By default this will log to your server PHP error log. If you'd like to see the log messages in your browser, then we recommend that you install the %s and look for the \"Tribe\" tab in the debug output."
4421
- msgstr "Aktiveer hierdie opsie om ontfout inligting aan te teken. By verstek sal hierdiefoute by jou PHP fout puntelys aangemeld word. As jy die puntelys boodskappe in jou webleser wil te sien, dan raai ons jou aan om %s te installer en te soek na die \"Tribe\"oortjie in die foutspoor."
4422
-
4423
- #: common/src/admin-views/tribe-options-general.php:53
4424
- msgid "Debug mode"
4425
- msgstr "Ontfoutmodus"
4426
-
4427
- #: common/src/admin-views/tribe-options-general.php:35
4428
- msgid "Show The Events Calendar link"
4429
- msgstr "Wys 'n voorbeeld van die skakel"
4430
-
4431
- #: common/src/admin-views/tribe-options-general.php:30
4432
- msgid "See an example of the link"
4433
- msgstr "Wys 'n voorbeeld van die skakel"
4434
-
4435
- #: common/src/admin-views/tribe-options-general.php:30
4436
- msgid "Are you thinking \"Wow, this plugin is amazing! I should say thanks to Modern Tribe for all their hard work.\" The greatest thanks we could ask for is recognition. Add a small text-only link at the bottom of your calendar pointing to The Events Calendar project."
4437
- msgstr "Dink jy \"Sjoe, hierdie toevoeging is ongelooflik! Ek moet Modern Tribe vir al hul harde werk bedank. \" Die grootste belonging wat ons kan vra is vir erkenning. Voeg 'n klein tekst skakel aan die onderkant van jou kalender wat wys na ons Kalender projek."
4438
-
4439
- #: common/src/admin-views/tribe-options-general.php:25
4440
- msgid "We hope our plugin is helping you out."
4441
- msgstr "Ons hoop dat ons toevoeging help jou uit."
4442
-
4443
- #: common/src/admin-views/tribe-options-general.php:20
4444
- msgid "Check out the available add-ons"
4445
- msgstr "Check uit die beskikbare byvoegings"
4446
-
4447
- #: common/src/admin-views/tribe-options-general.php:20
4448
- msgid "Looking for additional functionality including recurring events, custom meta, community events, ticket sales and more?"
4449
- msgstr "Op soek na bykomende funksionaliteit, insluitend herhalende gebeure, bykomende meta, gemeenskap gebeure, kaartjieverkope en meer?"
4450
-
4451
- #: common/src/admin-views/tribe-options-general.php:15
4452
- msgid "Optimize your site's event listings with %1$sThe Events Calendar%2$s, our free calendar plugin. Looking for additional functionality including recurring events, user-submission, advanced ticket sales and more? Check out our %3$spremium add-ons%4$s."
4453
- msgstr ""
4454
-
4455
- #: common/src/admin-views/tribe-options-general.php:10
4456
- msgid "Thank you for using Event Tickets! All of us at Modern Tribe sincerely appreciate your support and we're excited to see you using our plugins. Check out our handy %1$sNew User Primer%2$s to get started."
4457
- msgstr ""
4458
-
4459
- #: common/src/admin-views/tribe-options-display.php:37
4460
- msgid "Select the date format to use in datepickers"
4461
- msgstr ""
4462
-
4463
- #: common/src/admin-views/tribe-options-display.php:36
4464
- msgid "Datepicker Date Format"
4465
- msgstr ""
4466
-
4467
- #: common/src/admin-views/tribe-options-display.php:22
4468
- msgid "Date Format Settings"
4469
- msgstr ""
4470
-
4471
- #: src/admin-views/admin-welcome-message.php:7
4472
- msgid "Version"
4473
- msgstr "Weergawe"
4474
-
4475
- #: common/src/Tribe/Languages/Locations.php:374
4476
- msgid "Wyoming"
4477
- msgstr "Wyoming"
4478
-
4479
- #: common/src/Tribe/Languages/Locations.php:373
4480
- msgid "Wisconsin"
4481
- msgstr "Wisconsin"
4482
-
4483
- #: common/src/Tribe/Languages/Locations.php:372
4484
- msgid "West Virginia"
4485
- msgstr "West Virginia"
4486
-
4487
- #: common/src/Tribe/Languages/Locations.php:371
4488
- msgid "Washington"
4489
- msgstr "Washington"
4490
-
4491
- #: common/src/Tribe/Languages/Locations.php:370
4492
- msgid "Virginia"
4493
- msgstr "Virginia"
4494
-
4495
- #: common/src/Tribe/Languages/Locations.php:369
4496
- msgid "Vermont"
4497
- msgstr "Vermont"
4498
-
4499
- #: common/src/Tribe/Languages/Locations.php:368
4500
- msgid "Utah"
4501
- msgstr "Utah"
4502
-
4503
- #: common/src/Tribe/Languages/Locations.php:367
4504
- msgid "Texas"
4505
- msgstr "Texas"
4506
-
4507
- #: common/src/Tribe/Languages/Locations.php:366
4508
- msgid "Tennessee"
4509
- msgstr "Tennessee"
4510
-
4511
- #: common/src/Tribe/Languages/Locations.php:365
4512
- msgid "South Dakota"
4513
- msgstr "South Dakota"
4514
-
4515
- #: common/src/Tribe/Languages/Locations.php:364
4516
- msgid "South Carolina"
4517
- msgstr "South Carolina"
4518
-
4519
- #: common/src/Tribe/Languages/Locations.php:363
4520
- msgid "Rhode Island"
4521
- msgstr "Rhode Island"
4522
-
4523
- #: common/src/Tribe/Languages/Locations.php:362
4524
- msgid "Pennsylvania"
4525
- msgstr "Pennsylvania"
4526
-
4527
- #: common/src/Tribe/Languages/Locations.php:361
4528
- msgid "Oregon"
4529
- msgstr "Oregon"
4530
-
4531
- #: common/src/Tribe/Languages/Locations.php:360
4532
- msgid "Oklahoma"
4533
- msgstr "Oklahoma"
4534
-
4535
- #: common/src/Tribe/Languages/Locations.php:359
4536
- msgid "Ohio"
4537
- msgstr "Ohio"
4538
-
4539
- #: common/src/Tribe/Languages/Locations.php:358
4540
- msgid "North Dakota"
4541
- msgstr "Noord Dakota"
4542
-
4543
- #: common/src/Tribe/Languages/Locations.php:357
4544
- msgid "North Carolina"
4545
- msgstr "North Carolina"
4546
-
4547
- #: common/src/Tribe/Languages/Locations.php:356
4548
- msgid "New York"
4549
- msgstr "New York"
4550
-
4551
- #: common/src/Tribe/Languages/Locations.php:355
4552
- msgid "New Mexico"
4553
- msgstr "New Mexico"
4554
-
4555
- #: common/src/Tribe/Languages/Locations.php:354
4556
- msgid "New Jersey"
4557
- msgstr "New Jersey"
4558
-
4559
- #: common/src/Tribe/Languages/Locations.php:353
4560
- msgid "New Hampshire"
4561
- msgstr "New Hampshire"
4562
-
4563
- #: common/src/Tribe/Languages/Locations.php:352
4564
- msgid "Nevada"
4565
- msgstr "Nevada"
4566
-
4567
- #: common/src/Tribe/Languages/Locations.php:351
4568
- msgid "Nebraska"
4569
- msgstr "Nebraska"
4570
-
4571
- #: common/src/Tribe/Languages/Locations.php:350
4572
- msgid "Montana"
4573
- msgstr "Montana"
4574
-
4575
- #: common/src/Tribe/Languages/Locations.php:349
4576
- msgid "Missouri"
4577
- msgstr "Missouri"
4578
-
4579
- #: common/src/Tribe/Languages/Locations.php:348
4580
- msgid "Mississippi"
4581
- msgstr "Mississippi"
4582
-
4583
- #: common/src/Tribe/Languages/Locations.php:347
4584
- msgid "Minnesota"
4585
- msgstr "Minnesota"
4586
-
4587
- #: common/src/Tribe/Languages/Locations.php:346
4588
- msgid "Michigan"
4589
- msgstr "Michigan"
4590
-
4591
- #: common/src/Tribe/Languages/Locations.php:345
4592
- msgid "Massachusetts"
4593
- msgstr "Massachusetts"
4594
-
4595
- #: common/src/Tribe/Languages/Locations.php:344
4596
- msgid "Maryland"
4597
- msgstr "Maryland"
4598
-
4599
- #: common/src/Tribe/Languages/Locations.php:343
4600
- msgid "Maine"
4601
- msgstr "Maine"
4602
-
4603
- #: common/src/Tribe/Languages/Locations.php:342
4604
- msgid "Louisiana"
4605
- msgstr "Louisiana"
4606
-
4607
- #: common/src/Tribe/Languages/Locations.php:341
4608
- msgid "Kentucky"
4609
- msgstr "Kentucky"
4610
-
4611
- #: common/src/Tribe/Languages/Locations.php:340
4612
- msgid "Kansas"
4613
- msgstr "Kansas"
4614
-
4615
- #: common/src/Tribe/Languages/Locations.php:339
4616
- msgid "Iowa"
4617
- msgstr "Iowa"
4618
-
4619
- #: common/src/Tribe/Languages/Locations.php:338
4620
- msgid "Indiana"
4621
- msgstr "Indiana"
4622
-
4623
- #: common/src/Tribe/Languages/Locations.php:337
4624
- msgid "Illinois"
4625
- msgstr "Illinois"
4626
-
4627
- #: common/src/Tribe/Languages/Locations.php:336
4628
- msgid "Idaho"
4629
- msgstr "Idaho"
4630
-
4631
- #: common/src/Tribe/Languages/Locations.php:335
4632
- msgid "Hawaii"
4633
- msgstr "Hawaii"
4634
-
4635
- #: common/src/Tribe/Languages/Locations.php:333
4636
- msgid "Florida"
4637
- msgstr "Florida"
4638
-
4639
- #: common/src/Tribe/Languages/Locations.php:332
4640
- msgid "District of Columbia"
4641
- msgstr "District of Columbia"
4642
-
4643
- #: common/src/Tribe/Languages/Locations.php:331
4644
- msgid "Delaware"
4645
- msgstr "Delaware"
4646
-
4647
- #: common/src/Tribe/Languages/Locations.php:330
4648
- msgid "Connecticut"
4649
- msgstr "Connecticut"
4650
-
4651
- #: common/src/Tribe/Languages/Locations.php:329
4652
- msgid "Colorado"
4653
- msgstr "Colorado"
4654
-
4655
- #: common/src/Tribe/Languages/Locations.php:328
4656
- msgid "California"
4657
- msgstr "California"
4658
-
4659
- #: common/src/Tribe/Languages/Locations.php:327
4660
- msgid "Arkansas"
4661
- msgstr "Arkansas"
4662
-
4663
- #: common/src/Tribe/Languages/Locations.php:326
4664
- msgid "Arizona"
4665
- msgstr "Arizona"
4666
-
4667
- #: common/src/Tribe/Languages/Locations.php:325
4668
- msgid "Alaska"
4669
- msgstr "Alaska"
4670
-
4671
- #: common/src/Tribe/Languages/Locations.php:324
4672
- msgid "Alabama"
4673
- msgstr "Alabama"
4674
-
4675
- #: common/src/Tribe/Languages/Locations.php:297
4676
- msgid "Zimbabwe"
4677
- msgstr "Zimbabwe"
4678
-
4679
- #: common/src/Tribe/Languages/Locations.php:296
4680
- msgid "Zambia"
4681
- msgstr "Zambia"
4682
-
4683
- #: common/src/Tribe/Languages/Locations.php:295
4684
- msgid "Yemen"
4685
- msgstr "Yemen"
4686
-
4687
- #: common/src/Tribe/Languages/Locations.php:294
4688
- msgid "Western Sahara"
4689
- msgstr "Western Sahara"
4690
-
4691
- #: common/src/Tribe/Languages/Locations.php:293
4692
- msgid "Wallis and Futuna Islands"
4693
- msgstr ""
4694
-
4695
- #: common/src/Tribe/Languages/Locations.php:292
4696
- msgid "Virgin Islands (U.S.)"
4697
- msgstr "Virgin Islands (U.S.)"
4698
-
4699
- #: common/src/Tribe/Languages/Locations.php:291
4700
- msgid "Virgin Islands (British)"
4701
- msgstr "Virgin Islands (British)"
4702
-
4703
- #: common/src/Tribe/Languages/Locations.php:290
4704
- msgid "Viet Nam"
4705
- msgstr "Viet Nam"
4706
-
4707
- #: common/src/Tribe/Languages/Locations.php:289
4708
- msgid "Venezuela"
4709
- msgstr "Venezuela"
4710
-
4711
- #: common/src/Tribe/Languages/Locations.php:288
4712
- msgid "Vanuatu"
4713
- msgstr "Vanuatu"
4714
-
4715
- #: common/src/Tribe/Languages/Locations.php:287
4716
- msgid "Uzbekistan"
4717
- msgstr "Uzbekistan"
4718
-
4719
- #: common/src/Tribe/Languages/Locations.php:286
4720
- msgid "Uruguay"
4721
- msgstr "Uruguay"
4722
-
4723
- #: common/src/Tribe/Languages/Locations.php:285
4724
- msgid "United States Minor Outlying Islands"
4725
- msgstr "United States Minor Outlying Islands"
4726
-
4727
- #: common/src/Tribe/Languages/Locations.php:284
4728
- msgid "United Kingdom"
4729
- msgstr "United Kingdom"
4730
-
4731
- #: common/src/Tribe/Languages/Locations.php:283
4732
- msgid "United Arab Emirates"
4733
- msgstr "United Arab Emirates"
4734
-
4735
- #: common/src/Tribe/Languages/Locations.php:282
4736
- msgid "Ukraine"
4737
- msgstr "Ukraine"
4738
-
4739
- #: common/src/Tribe/Languages/Locations.php:281
4740
- msgid "Uganda"
4741
- msgstr "Uganda"
4742
-
4743
- #: common/src/Tribe/Languages/Locations.php:280
4744
- msgid "Tuvalu"
4745
- msgstr "Tuvalu"
4746
-
4747
- #: common/src/Tribe/Languages/Locations.php:279
4748
- msgid "Turks and Caicos Islands"
4749
- msgstr ""
4750
-
4751
- #: common/src/Tribe/Languages/Locations.php:278
4752
- msgid "Turkmenistan"
4753
- msgstr "Turkmenistan"
4754
-
4755
- #: common/src/Tribe/Languages/Locations.php:277
4756
- msgid "Turkey"
4757
- msgstr "Turkey"
4758
-
4759
- #: common/src/Tribe/Languages/Locations.php:276
4760
- msgid "Tunisia"
4761
- msgstr "Tunisia"
4762
-
4763
- #: common/src/Tribe/Languages/Locations.php:275
4764
- msgid "Trinidad and Tobago"
4765
- msgstr ""
4766
-
4767
- #: common/src/Tribe/Languages/Locations.php:274
4768
- msgid "Tonga"
4769
- msgstr "Tonga"
4770
-
4771
- #: common/src/Tribe/Languages/Locations.php:273
4772
- msgid "Tokelau"
4773
- msgstr "Tokelau"
4774
-
4775
- #: common/src/Tribe/Languages/Locations.php:272
4776
- msgid "Togo"
4777
- msgstr "Togo"
4778
-
4779
- #: common/src/Tribe/Languages/Locations.php:271
4780
- msgid "Thailand"
4781
- msgstr "Thailand"
4782
-
4783
- #: common/src/Tribe/Languages/Locations.php:270
4784
- msgid "Tanzania, United Republic of"
4785
- msgstr ""
4786
-
4787
- #: common/src/Tribe/Languages/Locations.php:269
4788
- msgid "Tajikistan"
4789
- msgstr "Tajikistan"
4790
-
4791
- #: common/src/Tribe/Languages/Locations.php:268
4792
- msgid "Taiwan"
4793
- msgstr "Taiwan"
4794
-
4795
- #: common/src/Tribe/Languages/Locations.php:267
4796
- msgid "Syrian Arab Republic"
4797
- msgstr "Syrian Arab Republic"
4798
-
4799
- #: common/src/Tribe/Languages/Locations.php:266
4800
- msgid "Switzerland"
4801
- msgstr "Switzerland"
4802
-
4803
- #: common/src/Tribe/Languages/Locations.php:265
4804
- msgid "Sweden"
4805
- msgstr "Sweden"
4806
-
4807
- #: common/src/Tribe/Languages/Locations.php:264
4808
- msgid "Swaziland"
4809
- msgstr "Swaziland"
4810
-
4811
- #: common/src/Tribe/Languages/Locations.php:263
4812
- msgid "Svalbard and Jan Mayen Islands"
4813
- msgstr ""
4814
-
4815
- #: common/src/Tribe/Languages/Locations.php:262
4816
- msgid "Suriname"
4817
- msgstr "Suriname"
4818
-
4819
- #: common/src/Tribe/Languages/Locations.php:261
4820
- msgid "Sudan"
4821
- msgstr "Sudan"
4822
-
4823
- #: common/src/Tribe/Languages/Locations.php:241
4824
- msgid "Saint Pierre and Miquelon"
4825
- msgstr ""
4826
-
4827
- #: common/src/Tribe/Languages/Locations.php:260
4828
- msgid "Sri Lanka"
4829
- msgstr "Sri Lanka"
4830
-
4831
- #: common/src/Tribe/Languages/Locations.php:259
4832
- msgid "Spain"
4833
- msgstr "Spanje"
4834
-
4835
- #: common/src/Tribe/Languages/Locations.php:258
4836
- msgid "South Georgia, South Sandwich Islands"
4837
- msgstr "South Georgia, South Sandwich Islands"
4838
-
4839
- #: common/src/Tribe/Languages/Locations.php:257
4840
- msgid "South Africa"
4841
- msgstr "Suid Afrika"
4842
-
4843
- #: common/src/Tribe/Languages/Locations.php:256
4844
- msgid "Somalia"
4845
- msgstr "Somalia"
4846
-
4847
- #: common/src/Tribe/Languages/Locations.php:255
4848
- msgid "Solomon Islands"
4849
- msgstr "Solomon Islands"
4850
-
4851
- #: common/src/Tribe/Languages/Locations.php:254
4852
- msgid "Slovenia"
4853
- msgstr "Slovenia"
4854
-
4855
- #: common/src/Tribe/Languages/Locations.php:253
4856
- msgid "Slovakia (Slovak Republic)"
4857
- msgstr "Slovakia (Slovak Republic)"
4858
-
4859
- #: common/src/Tribe/Languages/Locations.php:251
4860
- msgid "Singapore"
4861
- msgstr "Singapore"
4862
-
4863
- #: common/src/Tribe/Languages/Locations.php:250
4864
- msgid "Sierra Leone"
4865
- msgstr "Sierra Leone"
4866
-
4867
- #: common/src/Tribe/Languages/Locations.php:249
4868
- msgid "Seychelles"
4869
- msgstr "Seychelles"
4870
-
4871
- #: common/src/Tribe/Languages/Locations.php:248
4872
- msgid "Serbia"
4873
- msgstr "Serbia"
4874
-
4875
- #: common/src/Tribe/Languages/Locations.php:247
4876
- msgid "Senegal"
4877
- msgstr "Senegal"
4878
-
4879
- #: common/src/Tribe/Languages/Locations.php:246
4880
- msgid "Saudi Arabia"
4881
- msgstr "Saudi Arabia"
4882
-
4883
- #: common/src/Tribe/Languages/Locations.php:244
4884
- msgid "San Marino"
4885
- msgstr "San Marino"
4886
-
4887
- #: common/src/Tribe/Languages/Locations.php:243
4888
- msgid "Samoa"
4889
- msgstr "Samoa"
4890
-
4891
- #: common/src/Tribe/Languages/Locations.php:242
4892
- msgid "Saint Vincent and The Grenadines"
4893
- msgstr ""
4894
-
4895
- #: common/src/Tribe/Languages/Locations.php:240
4896
- msgid "Saint Lucia"
4897
- msgstr "Saint Lucia"
4898
-
4899
- #: common/src/Tribe/Languages/Locations.php:239
4900
- msgid "Saint Kitts and Nevis"
4901
- msgstr ""
4902
-
4903
- #: common/src/Tribe/Languages/Locations.php:236
4904
- msgid "Rwanda"
4905
- msgstr "Rwanda"
4906
-
4907
- #: common/src/Tribe/Languages/Locations.php:235
4908
- msgid "Russian Federation"
4909
- msgstr "Russian Federation"
4910
-
4911
- #: common/src/Tribe/Languages/Locations.php:234
4912
- msgid "Romania"
4913
- msgstr "Romania"
4914
-
4915
- #: common/src/Tribe/Languages/Locations.php:233
4916
- msgid "Reunion"
4917
- msgstr "Reunion"
4918
-
4919
- #: common/src/Tribe/Languages/Locations.php:232
4920
- msgid "Qatar"
4921
- msgstr "Qatar"
4922
-
4923
- #: common/src/Tribe/Languages/Locations.php:231
4924
- msgid "Puerto Rico"
4925
- msgstr "Puerto Rico"
4926
-
4927
- #: common/src/Tribe/Languages/Locations.php:230
4928
- msgid "Portugal"
4929
- msgstr "Portugal"
4930
-
4931
- #: common/src/Tribe/Languages/Locations.php:229
4932
- msgid "Poland"
4933
- msgstr "Poland"
4934
-
4935
- #: common/src/Tribe/Languages/Locations.php:228
4936
- msgid "Pitcairn"
4937
- msgstr "Pitcairn"
4938
-
4939
- #: common/src/Tribe/Languages/Locations.php:227
4940
- msgid "Philippines"
4941
- msgstr "Philippines"
4942
-
4943
- #: common/src/Tribe/Languages/Locations.php:226
4944
- msgid "Peru"
4945
- msgstr "Peru"
4946
-
4947
- #: common/src/Tribe/Languages/Locations.php:225
4948
- msgid "Paraguay"
4949
- msgstr "Paraguay"
4950
-
4951
- #: common/src/Tribe/Languages/Locations.php:224
4952
- msgid "Papua New Guinea"
4953
- msgstr "Papua New Guinea"
4954
-
4955
- #: common/src/Tribe/Languages/Locations.php:223
4956
- msgid "Panama"
4957
- msgstr "Panama"
4958
-
4959
- #: common/src/Tribe/Languages/Locations.php:222
4960
- msgid "Palau"
4961
- msgstr "Palau"
4962
-
4963
- #: common/src/Tribe/Languages/Locations.php:221
4964
- msgid "Pakistan"
4965
- msgstr "Pakistan"
4966
-
4967
- #: common/src/Tribe/Languages/Locations.php:220
4968
- msgid "Oman"
4969
- msgstr "Oman"
4970
-
4971
- #: common/src/Tribe/Languages/Locations.php:219
4972
- msgid "Norway"
4973
- msgstr "Norway"
4974
-
4975
- #: common/src/Tribe/Languages/Locations.php:218
4976
- msgid "Northern Mariana Islands"
4977
- msgstr "Northern Mariana Islands"
4978
-
4979
- #: common/src/Tribe/Languages/Locations.php:217
4980
- msgid "Norfolk Island"
4981
- msgstr "Norfolk Island"
4982
-
4983
- #: common/src/Tribe/Languages/Locations.php:216
4984
- msgid "Niue"
4985
- msgstr "Niue"
4986
-
4987
- #: common/src/Tribe/Languages/Locations.php:215
4988
- msgid "Nigeria"
4989
- msgstr "Nigerië"
4990
-
4991
- #: common/src/Tribe/Languages/Locations.php:214
4992
- msgid "Niger"
4993
- msgstr "Niger"
4994
-
4995
- #: common/src/Tribe/Languages/Locations.php:213
4996
- msgid "Nicaragua"
4997
- msgstr "Nicaragua"
4998
-
4999
- #: common/src/Tribe/Languages/Locations.php:212
5000
- msgid "New Zealand"
5001
- msgstr "New Zealand"
5002
-
5003
- #: common/src/Tribe/Languages/Locations.php:211
5004
- msgid "New Caledonia"
5005
- msgstr "New Caledonia"
5006
-
5007
- #: common/src/Tribe/Languages/Locations.php:210
5008
- msgid "Netherlands"
5009
- msgstr "Nederland"
5010
-
5011
- #: common/src/Tribe/Languages/Locations.php:209
5012
- msgid "Nepal"
5013
- msgstr "Nepal"
5014
-
5015
- #: common/src/Tribe/Languages/Locations.php:208
5016
- msgid "Nauru"
5017
- msgstr "Nauru"
5018
-
5019
- #: common/src/Tribe/Languages/Locations.php:207
5020
- msgid "Namibia"
5021
- msgstr "Namibië"
5022
-
5023
- #: common/src/Tribe/Languages/Locations.php:206
5024
- msgid "Myanmar"
5025
- msgstr "Myanmar"
5026
-
5027
- #: common/src/Tribe/Languages/Locations.php:205
5028
- msgid "Mozambique"
5029
- msgstr "Mosambiek"
5030
-
5031
- #: common/src/Tribe/Languages/Locations.php:204
5032
- msgid "Morocco"
5033
- msgstr "Morocco"
5034
-
5035
- #: common/src/Tribe/Languages/Locations.php:203
5036
- msgid "Montserrat"
5037
- msgstr "Montserrat"
5038
-
5039
- #: common/src/Tribe/Languages/Locations.php:202
5040
- msgid "Montenegro"
5041
- msgstr "Montenegro"
5042
-
5043
- #: common/src/Tribe/Languages/Locations.php:201
5044
- msgid "Mongolia"
5045
- msgstr "Mongolia"
5046
-
5047
- #: common/src/Tribe/Languages/Locations.php:200
5048
- msgid "Monaco"
5049
- msgstr "Monaco"
5050
-
5051
- #: common/src/Tribe/Languages/Locations.php:199
5052
- msgid "Moldova, Republic of"
5053
- msgstr ""
5054
-
5055
- #: common/src/Tribe/Languages/Locations.php:198
5056
- msgid "Micronesia, Federated States of"
5057
- msgstr ""
5058
-
5059
- #: common/src/Tribe/Languages/Locations.php:197
5060
- msgid "Mexico"
5061
- msgstr "Mexico"
5062
-
5063
- #: common/src/Tribe/Languages/Locations.php:196
5064
- msgid "Mayotte"
5065
- msgstr "Mayotte"
5066
-
5067
- #: common/src/Tribe/Languages/Locations.php:195
5068
- msgid "Mauritius"
5069
- msgstr "Mauritius"
5070
-
5071
- #: common/src/Tribe/Languages/Locations.php:194
5072
- msgid "Mauritania"
5073
- msgstr "Mauritania"
5074
-
5075
- #: common/src/Tribe/Languages/Locations.php:193
5076
- msgid "Martinique"
5077
- msgstr "Martinique"
5078
-
5079
- #: common/src/Tribe/Languages/Locations.php:192
5080
- msgid "Marshall Islands"
5081
- msgstr "Marshall Islands"
5082
-
5083
- #: common/src/Tribe/Languages/Locations.php:191
5084
- msgid "Malta"
5085
- msgstr "Malta"
5086
-
5087
- #: common/src/Tribe/Languages/Locations.php:190
5088
- msgid "Mali"
5089
- msgstr "Mali"
5090
-
5091
- #: common/src/Tribe/Languages/Locations.php:189
5092
- msgid "Maldives"
5093
- msgstr "Maldives"
5094
-
5095
- #: common/src/Tribe/Languages/Locations.php:188
5096
- msgid "Malaysia"
5097
- msgstr "Malaysia"
5098
-
5099
- #: common/src/Tribe/Languages/Locations.php:187
5100
- msgid "Malawi"
5101
- msgstr "Malawi"
5102
-
5103
- #: common/src/Tribe/Languages/Locations.php:186
5104
- msgid "Madagascar"
5105
- msgstr "Madagascar"
5106
-
5107
- #: common/src/Tribe/Languages/Locations.php:185
5108
- msgid "Macedonia"
5109
- msgstr "Macedonia"
5110
-
5111
- #: common/src/Tribe/Languages/Locations.php:184
5112
- msgid "Macau"
5113
- msgstr "Macau"
5114
-
5115
- #: common/src/Tribe/Languages/Locations.php:183
5116
- msgid "Luxembourg"
5117
- msgstr "Luxemburg"
5118
-
5119
- #: common/src/Tribe/Languages/Locations.php:182
5120
- msgid "Lithuania"
5121
- msgstr "Lithuania"
5122
-
5123
- #: common/src/Tribe/Languages/Locations.php:181
5124
- msgid "Liechtenstein"
5125
- msgstr "Liechtenstein"
5126
-
5127
- #: common/src/Tribe/Languages/Locations.php:180
5128
- msgid "Libya"
5129
- msgstr "Libya"
5130
-
5131
- #: common/src/Tribe/Languages/Locations.php:179
5132
- msgid "Liberia"
5133
- msgstr "Liberia"
5134
-
5135
- #: common/src/Tribe/Languages/Locations.php:178
5136
- msgid "Lesotho"
5137
- msgstr "Lesotho"
5138
-
5139
- #: common/src/Tribe/Languages/Locations.php:177
5140
- msgid "Lebanon"
5141
- msgstr "Lebanon"
5142
-
5143
- #: common/src/Tribe/Languages/Locations.php:176
5144
- msgid "Latvia"
5145
- msgstr "Latvia"
5146
-
5147
- #: common/src/Tribe/Languages/Locations.php:175
5148
- msgid "Lao People's Democratic Republic"
5149
- msgstr "Lao People's Democratic Republic"
5150
-
5151
- #: common/src/Tribe/Languages/Locations.php:174
5152
- msgid "Kyrgyzstan"
5153
- msgstr "Kyrgyzstan"
5154
-
5155
- #: common/src/Tribe/Languages/Locations.php:173
5156
- msgid "Kuwait"
5157
- msgstr "Kuwait"
5158
-
5159
- #: common/src/Tribe/Languages/Locations.php:172
5160
- msgid "Korea, Republic of"
5161
- msgstr ""
5162
-
5163
- #: common/src/Tribe/Languages/Locations.php:171
5164
- msgid "Korea, Democratic People's Republic of"
5165
- msgstr ""
5166
-
5167
- #: common/src/Tribe/Languages/Locations.php:170
5168
- msgid "Kiribati"
5169
- msgstr "Kiribati"
5170
-
5171
- #: common/src/Tribe/Languages/Locations.php:169
5172
- msgid "Kenya"
5173
- msgstr "Kenya"
5174
-
5175
- #: common/src/Tribe/Languages/Locations.php:168
5176
- msgid "Kazakhstan"
5177
- msgstr "Kazakhstan"
5178
-
5179
- #: common/src/Tribe/Languages/Locations.php:167
5180
- msgid "Jordan"
5181
- msgstr "Jordan"
5182
-
5183
- #: common/src/Tribe/Languages/Locations.php:166
5184
- msgid "Japan"
5185
- msgstr "Japan"
5186
-
5187
- #: common/src/Tribe/Languages/Locations.php:165
5188
- msgid "Jamaica"
5189
- msgstr "Jamaica"
5190
-
5191
- #: common/src/Tribe/Languages/Locations.php:164
5192
- msgid "Italy"
5193
- msgstr "Italy"
5194
-
5195
- #: common/src/Tribe/Languages/Locations.php:163
5196
- msgid "Israel"
5197
- msgstr "Israel"
5198
-
5199
- #: common/src/Tribe/Languages/Locations.php:162
5200
- msgid "Ireland"
5201
- msgstr "Ireland"
5202
-
5203
- #: common/src/Tribe/Languages/Locations.php:161
5204
- msgid "Iraq"
5205
- msgstr "Iraq"
5206
-
5207
- #: common/src/Tribe/Languages/Locations.php:160
5208
- msgid "Iran, Islamic Republic of"
5209
- msgstr ""
5210
-
5211
- #: common/src/Tribe/Languages/Locations.php:159
5212
- msgid "Indonesia"
5213
- msgstr "Indonesia"
5214
-
5215
- #: common/src/Tribe/Languages/Locations.php:158
5216
- msgid "India"
5217
- msgstr "India"
5218
-
5219
- #: common/src/Tribe/Languages/Locations.php:157
5220
- msgid "Iceland"
5221
- msgstr "Iceland"
5222
-
5223
- #: common/src/Tribe/Languages/Locations.php:156
5224
- msgid "Hungary"
5225
- msgstr "Hungary"
5226
-
5227
- #: common/src/Tribe/Languages/Locations.php:155
5228
- msgid "Hong Kong"
5229
- msgstr "Hong Kong"
5230
-
5231
- #: common/src/Tribe/Languages/Locations.php:154
5232
- msgid "Honduras"
5233
- msgstr "Honduras"
5234
-
5235
- #: common/src/Tribe/Languages/Locations.php:153
5236
- msgid "Holy See (Vatican City State)"
5237
- msgstr "Holy See (Vatican City State)"
5238
-
5239
- #: common/src/Tribe/Languages/Locations.php:152
5240
- msgid "Heard and McDonald Islands"
5241
- msgstr ""
5242
-
5243
- #: common/src/Tribe/Languages/Locations.php:151
5244
- msgid "Haiti"
5245
- msgstr "Haiti"
5246
-
5247
- #: common/src/Tribe/Languages/Locations.php:150
5248
- msgid "Guyana"
5249
- msgstr "Guyana"
5250
-
5251
- #: common/src/Tribe/Languages/Locations.php:149
5252
- msgid "Guinea-Bissau"
5253
- msgstr "Guinea-Bissau"
5254
-
5255
- #: common/src/Tribe/Languages/Locations.php:148
5256
- msgid "Guinea"
5257
- msgstr "Guinea"
5258
-
5259
- #: common/src/Tribe/Languages/Locations.php:147
5260
- msgid "Guatemala"
5261
- msgstr "Guatemala"
5262
-
5263
- #: common/src/Tribe/Languages/Locations.php:146
5264
- msgid "Guam"
5265
- msgstr "Guam"
5266
-
5267
- #: common/src/Tribe/Languages/Locations.php:145
5268
- msgid "Guadeloupe"
5269
- msgstr "Guadeloupe"
5270
-
5271
- #: common/src/Tribe/Languages/Locations.php:144
5272
- msgid "Grenada"
5273
- msgstr "Grenada"
5274
-
5275
- #: common/src/Tribe/Languages/Locations.php:143
5276
- msgid "Greenland"
5277
- msgstr "Greenland"
5278
-
5279
- #: common/src/Tribe/Languages/Locations.php:142
5280
- msgid "Greece"
5281
- msgstr "Greece"
5282
-
5283
- #: common/src/Tribe/Languages/Locations.php:141
5284
- msgid "Gibraltar"
5285
- msgstr "Gibraltar"
5286
-
5287
- #: common/src/Tribe/Languages/Locations.php:140
5288
- msgid "Ghana"
5289
- msgstr "Ghana"
5290
-
5291
- #: common/src/Tribe/Languages/Locations.php:139
5292
- msgid "Germany"
5293
- msgstr "Germany"
5294
-
5295
- #: common/src/Tribe/Languages/Locations.php:138
5296
- #: common/src/Tribe/Languages/Locations.php:334
5297
- msgid "Georgia"
5298
- msgstr "Georgia"
5299
-
5300
- #: common/src/Tribe/Languages/Locations.php:137
5301
- msgid "Gambia"
5302
- msgstr "Gambia"
5303
-
5304
- #: common/src/Tribe/Languages/Locations.php:136
5305
- msgid "Gabon"
5306
- msgstr "Gabon"
5307
-
5308
- #: common/src/Tribe/Languages/Locations.php:135
5309
- msgid "French Southern Territories"
5310
- msgstr "French Southern Territories"
5311
-
5312
- #: common/src/Tribe/Languages/Locations.php:134
5313
- msgid "French Polynesia"
5314
- msgstr "French Polynesia"
5315
-
5316
- #: common/src/Tribe/Languages/Locations.php:133
5317
- msgid "French Guiana"
5318
- msgstr "French Guiana"
5319
-
5320
- #: common/src/Tribe/Languages/Locations.php:132
5321
- msgid "France"
5322
- msgstr "France"
5323
-
5324
- #: common/src/Tribe/Languages/Locations.php:131
5325
- msgid "Finland"
5326
- msgstr "Finland"
5327
-
5328
- #: common/src/Tribe/Languages/Locations.php:130
5329
- msgid "Fiji"
5330
- msgstr "Fidji"
5331
-
5332
- #: common/src/Tribe/Languages/Locations.php:129
5333
- msgid "Faroe Islands"
5334
- msgstr "Faroe Islands"
5335
-
5336
- #: common/src/Tribe/Languages/Locations.php:128
5337
- msgid "Falkland Islands (Malvinas)"
5338
- msgstr "Falkland Islands (Malvinas)"
5339
-
5340
- #: common/src/Tribe/Languages/Locations.php:127
5341
- msgid "Ethiopia"
5342
- msgstr "Ethiopia"
5343
-
5344
- #: common/src/Tribe/Languages/Locations.php:126
5345
- msgid "Estonia"
5346
- msgstr "Estonia"
5347
-
5348
- #: common/src/Tribe/Languages/Locations.php:125
5349
- msgid "Eritrea"
5350
- msgstr "Eritrea"
5351
-
5352
- #: common/src/Tribe/Languages/Locations.php:124
5353
- msgid "Equatorial Guinea"
5354
- msgstr "Equatorial Guinea"
5355
-
5356
- #: common/src/Tribe/Languages/Locations.php:123
5357
- msgid "El Salvador"
5358
- msgstr "El Salvador"
5359
-
5360
- #: common/src/Tribe/Languages/Locations.php:122
5361
- msgid "Egypt"
5362
- msgstr "East Timor"
5363
-
5364
- #: common/src/Tribe/Languages/Locations.php:121
5365
- msgid "Ecuador"
5366
- msgstr "East Timor"
5367
-
5368
- #: common/src/Tribe/Languages/Locations.php:120
5369
- msgid "East Timor"
5370
- msgstr "East Timor"
5371
-
5372
- #: common/src/Tribe/Languages/Locations.php:119
5373
- msgid "Dominican Republic"
5374
- msgstr "Dominican Republic"
5375
-
5376
- #: common/src/Tribe/Languages/Locations.php:118
5377
- msgid "Dominica"
5378
- msgstr "Dominica"
5379
-
5380
- #: common/src/Tribe/Languages/Locations.php:117
5381
- msgid "Djibouti"
5382
- msgstr "Djibouti"
5383
-
5384
- #: common/src/Tribe/Languages/Locations.php:116
5385
- msgid "Denmark"
5386
- msgstr "Denmark"
5387
-
5388
- #: common/src/Tribe/Languages/Locations.php:115
5389
- msgid "Czech Republic"
5390
- msgstr "Czech Republic"
5391
-
5392
- #: common/src/Tribe/Languages/Locations.php:114
5393
- msgid "Cyprus"
5394
- msgstr "Cyprus"
5395
-
5396
- #: common/src/Tribe/Languages/Locations.php:112
5397
- msgid "Cuba"
5398
- msgstr "Cuba"
5399
-
5400
- #: common/src/Tribe/Languages/Locations.php:111
5401
- msgid "Croatia (Local Name: Hrvatska)"
5402
- msgstr "Croatia (Local Name: Hrvatska)"
5403
-
5404
- #: common/src/Tribe/Languages/Locations.php:109
5405
- msgid "Costa Rica"
5406
- msgstr "Costa Rica"
5407
-
5408
- #: common/src/Tribe/Languages/Locations.php:108
5409
- msgid "Cook Islands"
5410
- msgstr "Cook Islands"
5411
-
5412
- #: common/src/Tribe/Languages/Locations.php:107
5413
- msgid "Congo, Democratic Republic of the"
5414
- msgstr ""
5415
-
5416
- #: common/src/Tribe/Languages/Locations.php:106
5417
- msgid "Congo"
5418
- msgstr "Congo"
5419
-
5420
- #: common/src/Tribe/Languages/Locations.php:105
5421
- msgid "Comoros"
5422
- msgstr "Comoros"
5423
-
5424
- #: common/src/Tribe/Languages/Locations.php:104
5425
- msgid "Colombia"
5426
- msgstr "Colombia"
5427
-
5428
- #: common/src/Tribe/Languages/Locations.php:102
5429
- msgid "Cocos (Keeling) Islands"
5430
- msgstr "Cocos (Keeling) Islands"
5431
-
5432
- #: common/src/Tribe/Languages/Locations.php:101
5433
- msgid "Christmas Island"
5434
- msgstr "Christmas Island"
5435
-
5436
- #: common/src/Tribe/Languages/Locations.php:100
5437
- msgid "China"
5438
- msgstr "China"
5439
-
5440
- #: common/src/Tribe/Languages/Locations.php:99
5441
- msgid "Chile"
5442
- msgstr "Chile"
5443
-
5444
- #: common/src/Tribe/Languages/Locations.php:98
5445
- msgid "Chad"
5446
- msgstr "Chad"
5447
-
5448
- #: common/src/Tribe/Languages/Locations.php:97
5449
- msgid "Central African Republic"
5450
- msgstr "Sentaal Afrika Republiek"
5451
-
5452
- #: common/src/Tribe/Languages/Locations.php:96
5453
- msgid "Cayman Islands"
5454
- msgstr "Cayman Islands"
5455
-
5456
- #: common/src/Tribe/Languages/Locations.php:95
5457
- msgid "Cape Verde"
5458
- msgstr "Cape Verde"
5459
-
5460
- #: common/src/Tribe/Languages/Locations.php:94
5461
- msgid "Canada"
5462
- msgstr "Kanada"
5463
-
5464
- #: common/src/Tribe/Languages/Locations.php:93
5465
- msgid "Cameroon"
5466
- msgstr "Cameroon"
5467
-
5468
- #: common/src/Tribe/Languages/Locations.php:92
5469
- msgid "Cambodia"
5470
- msgstr "Cambodia"
5471
-
5472
- #: common/src/Tribe/Languages/Locations.php:91
5473
- msgid "Burundi"
5474
- msgstr "Burundi"
5475
-
5476
- #: common/src/Tribe/Languages/Locations.php:90
5477
- msgid "Burkina Faso"
5478
- msgstr "Burkina Faso"
5479
-
5480
- #: common/src/Tribe/Languages/Locations.php:89
5481
- msgid "Bulgaria"
5482
- msgstr "Bulgaria"
5483
-
5484
- #: common/src/Tribe/Languages/Locations.php:88
5485
- msgid "Brunei Darussalam"
5486
- msgstr "Brunei Darussalam"
5487
-
5488
- #: common/src/Tribe/Languages/Locations.php:87
5489
- msgid "British Indian Ocean Territory"
5490
- msgstr "Britise Indianse Oseaan Gebied"
5491
-
5492
- #: common/src/Tribe/Languages/Locations.php:86
5493
- msgid "Brazil"
5494
- msgstr "Brazilië"
5495
-
5496
- #: common/src/Tribe/Languages/Locations.php:85
5497
- msgid "Bouvet Island"
5498
- msgstr "Bouvet Island"
5499
-
5500
- #: common/src/Tribe/Languages/Locations.php:84
5501
- msgid "Botswana"
5502
- msgstr "Botswana"
5503
-
5504
- #: common/src/Tribe/Languages/Locations.php:83
5505
- msgid "Bosnia and Herzegovina"
5506
- msgstr ""
5507
-
5508
- #: common/src/Tribe/Languages/Locations.php:82
5509
- msgid "Bolivia"
5510
- msgstr "Bolivia"
5511
-
5512
- #: common/src/Tribe/Languages/Locations.php:81
5513
- msgid "Bhutan"
5514
- msgstr "Bhutan"
5515
-
5516
- #: common/src/Tribe/Languages/Locations.php:80
5517
- msgid "Bermuda"
5518
- msgstr "Bermuda"
5519
-
5520
- #: common/src/Tribe/Languages/Locations.php:79
5521
- msgid "Benin"
5522
- msgstr "Benin"
5523
-
5524
- #: common/src/Tribe/Languages/Locations.php:78
5525
- msgid "Belize"
5526
- msgstr "Belize"
5527
-
5528
- #: common/src/Tribe/Languages/Locations.php:77
5529
- msgid "Belgium"
5530
- msgstr "België"
5531
-
5532
- #: common/src/Tribe/Languages/Locations.php:76
5533
- msgid "Belarus"
5534
- msgstr "Belarus"
5535
-
5536
- #: common/src/Tribe/Languages/Locations.php:75
5537
- msgid "Barbados"
5538
- msgstr "Barbados"
5539
-
5540
- #: common/src/Tribe/Languages/Locations.php:74
5541
- msgid "Bangladesh"
5542
- msgstr "Bangladesh"
5543
-
5544
- #: common/src/Tribe/Languages/Locations.php:73
5545
- msgid "Bahrain"
5546
- msgstr "Bahrain"
5547
-
5548
- #: common/src/Tribe/Languages/Locations.php:72
5549
- msgid "Bahamas"
5550
- msgstr "Bahamas"
5551
-
5552
- #: common/src/Tribe/Languages/Locations.php:71
5553
- msgid "Azerbaijan"
5554
- msgstr "Azerbaijan"
5555
-
5556
- #: common/src/Tribe/Languages/Locations.php:70
5557
- msgid "Austria"
5558
- msgstr "Austria"
5559
-
5560
- #: common/src/Tribe/Languages/Locations.php:69
5561
- msgid "Australia"
5562
- msgstr "Australië"
5563
-
5564
- #: common/src/Tribe/Languages/Locations.php:68
5565
- msgid "Aruba"
5566
- msgstr "Aruba"
5567
-
5568
- #: common/src/Tribe/Languages/Locations.php:67
5569
- msgid "Armenia"
5570
- msgstr "Armenië"
5571
-
5572
- #: common/src/Tribe/Languages/Locations.php:66
5573
- msgid "Argentina"
5574
- msgstr "Argentinië"
5575
-
5576
- #: common/src/Tribe/Languages/Locations.php:65
5577
- msgid "Antigua and Barbuda"
5578
- msgstr ""
5579
-
5580
- #: common/src/Tribe/Languages/Locations.php:64
5581
- msgid "Antarctica"
5582
- msgstr "Antarctika"
5583
-
5584
- #: common/src/Tribe/Languages/Locations.php:63
5585
- msgid "Anguilla"
5586
- msgstr "Anguilla"
5587
-
5588
- #: common/src/Tribe/Languages/Locations.php:62
5589
- msgid "Angola"
5590
- msgstr "Angola"
5591
-
5592
- #: common/src/Tribe/Languages/Locations.php:61
5593
- msgid "Andorra"
5594
- msgstr "Andorra"
5595
-
5596
- #: common/src/Tribe/Languages/Locations.php:60
5597
- msgid "American Samoa"
5598
- msgstr "Amerikaanse Samoa"
5599
-
5600
- #: common/src/Tribe/Languages/Locations.php:59
5601
- msgid "Algeria"
5602
- msgstr "Algerië"
5603
-
5604
- #: common/src/Tribe/Languages/Locations.php:58
5605
- msgid "Albania"
5606
- msgstr "Albania"
5607
-
5608
- #: common/src/Tribe/Languages/Locations.php:56
5609
- msgid "Afghanistan"
5610
- msgstr "Afghanistan"
5611
-
5612
- #: common/src/Tribe/Languages/Locations.php:55
5613
- msgid "United States"
5614
- msgstr "United States"
5615
-
5616
- #: common/src/Tribe/View_Helpers.php:51
5617
- msgid "Select a Country:"
5618
- msgstr "Kies 'n Land:"
5619
-
5620
- #: common/src/Tribe/Validate.php:514
5621
- msgid "Country List must be formatted as one country per line in the following format: <br>US, United States <br> UK, United Kingdom."
5622
- msgstr "Die lys van lande moet georganiseer word volgens een land per reël: <br> VSA, die Verenigde State van Amerika <br>VK, Verenigde Koninkryk."
5623
-
5624
- #: common/src/Tribe/Validate.php:498
5625
- msgid "%s must be a phone number."
5626
- msgstr "%s moet 'n telefoon nommer wees."
5627
-
5628
- #: common/src/Tribe/Validate.php:484
5629
- msgid "%s must consist of 5 numbers."
5630
- msgstr "%s moet uit 5 syfers bestaan."
5631
-
5632
- #: common/src/Tribe/Validate.php:470
5633
- msgid "%s must consist of letters, spaces, apostrophes, and dashes."
5634
- msgstr "%s moet bestaan ​​uit letters, spasies, afkapings, en strepies."
5635
-
5636
- #: common/src/Tribe/Validate.php:454
5637
- msgid "%s must consist of letters, numbers, dashes, apostrophes, and spaces only."
5638
- msgstr "%s moet bestaan uit letters, getalle, koppeltekens, afkapings, en ruimtes."
5639
-
5640
- #: common/src/Tribe/Validate.php:438
5641
- msgid "%s must be a number between 0 and 21."
5642
- msgstr "%s moet 'n getal 0 en 21 wees."
5643
-
5644
- #: common/src/Tribe/Validate.php:384
5645
- msgid "%s must be a number or percentage."
5646
- msgstr "%s moet 'n syfer of 'n persentasie wees."
5647
-
5648
- #: common/src/Tribe/Validate.php:368
5649
- msgid "%s cannot be a duplicate"
5650
- msgstr "%s mag nie 'n duplikaat wees nie"
5651
-
5652
- #: common/src/Tribe/Validate.php:366
5653
- msgid "%s cannot be the same as %s."
5654
- msgstr "%s mag nie die selfde wees nie %s."
5655
-
5656
- #: common/src/Tribe/Validate.php:359
5657
- msgid "Comparison validation failed because no comparison value was provided, for field %s"
5658
- msgstr "Vergelyking bekragtiging misluk omdat geen vergelyking waarde is verskaf vir veld %s"
5659
-
5660
- #: common/src/Tribe/Validate.php:298 common/src/Tribe/Validate.php:310
5661
- #: common/src/Tribe/Validate.php:323 common/src/Tribe/Validate.php:345
5662
- msgid "%s must have a value that's part of its options."
5663
- msgstr "%s moet 'n waarde hê wat deel is van sy opsies."
5664
-
5665
- #: common/src/Tribe/Validate.php:282
5666
- msgid "%s must be a valid absolute URL."
5667
- msgstr "% s moet 'n geldige absolute URL wees."
5668
-
5669
- #: common/src/Tribe/Validate.php:267
5670
- msgid "%s must be a valid slug (numbers, letters, dashes, and underscores)."
5671
- msgstr "%s moet 'n geldige afkorting (getalle, letters, koppeltekens en onderstreep) wees."
5672
-
5673
- #: common/src/Tribe/Validate.php:214
5674
- msgid "%s must be a positive number or percent."
5675
- msgstr ""
5676
-
5677
- #: common/src/Tribe/Validate.php:200 common/src/Tribe/Validate.php:228
5678
- msgid "%s must be a positive number."
5679
- msgstr "%s moet 'n positiewe getal wees."
5680
-
5681
- #: common/src/Tribe/Validate.php:152
5682
- msgid "%s must contain numbers, letters and dots only"
5683
- msgstr "%s moet slegs syfers, letters en punte bevat"
5684
-
5685
- #: common/src/Tribe/Validate.php:120 common/src/Tribe/Validate.php:136
5686
- msgid "%s must contain numbers and letters only"
5687
- msgstr "%s moet slegs syfers en letters bevat"
5688
-
5689
- #: common/src/Tribe/Validate.php:105
5690
- msgctxt "non-existant function name passed for field validation"
5691
- msgid "with function name:"
5692
- msgstr ""
5693
-
5694
- #: common/src/Tribe/Validate.php:104
5695
- msgid "Non-existant field validation function passed"
5696
- msgstr "Nie-bestaande veld validering funksie geslaag"
5697
-
5698
- #: common/src/Tribe/Validate.php:73 common/src/Tribe/Validate.php:85
5699
- #: common/src/Tribe/Validate.php:105
5700
- msgid "Field ID:"
5701
- msgstr "Veld ID:"
5702
-
5703
- #: common/src/Tribe/Validate.php:72 common/src/Tribe/Validate.php:84
5704
- msgid "Invalid or incomplete field passed"
5705
- msgstr "Ongeldige of onvolledige veld geslaag"
5706
-
5707
- #: common/src/Tribe/Support.php:199
5708
- msgid "Rewrite rules were purged on load of this help page. Chances are there is a rewrite rule flush occurring in a plugin or theme!"
5709
- msgstr ""
5710
-
5711
- #: common/src/Tribe/Support.php:188 common/src/Tribe/Support.php:189
5712
- msgid "Unknown or not set"
5713
- msgstr ""
5714
-
5715
- #: common/src/Tribe/Settings_Tab.php:222
5716
- msgid "There are no fields setup for this tab yet."
5717
- msgstr "Daar is geen velde opgestel vir hierdie afdeling nie."
5718
-
5719
- #: common/src/Tribe/Settings_Manager.php:253
5720
- #: common/src/admin-views/tribe-options-licenses.php:57
5721
- msgid "Licenses"
5722
- msgstr "Lisensies"
5723
-
5724
- #: common/src/Tribe/Settings_Manager.php:219
5725
- msgid "Network"
5726
- msgstr "Netwerk"
5727
-
5728
- #: common/src/Tribe/Settings_Manager.php:279
5729
- msgid "Help"
5730
- msgstr "Help"
5731
-
5732
- #: common/src/Tribe/Settings_Manager.php:55
5733
- msgid "Display"
5734
- msgstr "Vertoon"
5735
-
5736
- #: common/src/Tribe/Settings_Manager.php:54
5737
- msgid "General"
5738
- msgstr "Algemene"
5739
-
5740
- #: common/src/Tribe/Settings.php:641
5741
- msgid "Settings saved."
5742
- msgstr "Verstellings is gestoor."
5743
-
5744
- #: common/src/Tribe/Settings.php:619
5745
- msgid "The above setting was not saved. Other settings were successfully saved."
5746
- msgid_plural "The above settings were not saved. Other settings were successfully saved."
5747
- msgstr[0] ""
5748
- msgstr[1] ""
5749
-
5750
- #: common/src/Tribe/Settings.php:618
5751
- msgid "None of your settings were saved. Please try again."
5752
- msgstr "Nie een van jou stellings is gestoor nie. Probeer asseblief weer."
5753
-
5754
- #: common/src/Tribe/Settings.php:608
5755
- msgid "Your form had the following errors:"
5756
- msgstr "Jou vorm het die volgende probleme gehad:"
5757
-
5758
- #: common/src/Tribe/Settings.php:431
5759
- msgid "The request wasn't sent from this tab."
5760
- msgstr "Die versoek is nie van hierdie afdeling af gestuur nie."
5761
-
5762
- #: common/src/Tribe/Settings.php:425
5763
- msgid "The request was sent insecurely."
5764
- msgstr "Die versoek is onveilig gestuur."
5765
-
5766
- #: common/src/Tribe/Settings.php:419
5767
- msgid "You don't have permission to do that."
5768
- msgstr "Jy het nie toestemming om dit te doen nie."
5769
-
5770
- #: src/Tribe/Editor/Attendee_Registration.php:128
5771
- #: common/src/Tribe/Settings.php:371
5772
- msgid "Save Changes"
5773
- msgstr "Stoor veranderinge"
5774
-
5775
- #: common/src/Tribe/Settings.php:363
5776
- msgid "You've requested a non-existent tab."
5777
- msgstr "Jy het 'n nie-bestaande afdeling gekies."
5778
-
5779
- #: common/src/Tribe/Settings.php:349
5780
- msgid "%s Settings"
5781
- msgstr "%s Verstellings"
5782
-
5783
- #: src/admin-views/editor/panel/list.php:79 common/src/Tribe/Settings.php:254
5784
- #: src/modules/elements/settings-dashboard/element.js:64
5785
- #: src/modules/blocks/rsvp/action-buttons/settings-action-button/template.js:26
5786
- #: src/modules/blocks/tickets/action-buttons/settings/template.js:20
5787
- #: src/resources/js/app/blocks.js:14458 src/resources/js/app/blocks.js:42245
5788
- #: src/resources/js/app/blocks.js:43252 src/resources/js/app/elements.js:5520
5789
- msgid "Settings"
5790
- msgstr "Verstellings"
5791
-
5792
- #: common/src/Tribe/Settings.php:253 common/src/Tribe/Settings.php:273
5793
- msgid "Events Settings"
5794
- msgstr "Gebeurtenis Verstellings"
5795
-
5796
- #: src/admin-views/admin-welcome-message.php:18
5797
- #: common/src/Tribe/Settings.php:177 common/src/Tribe/Settings.php:241
5798
- #: common/src/Tribe/Settings.php:242
5799
- msgid "Events"
5800
- msgstr "Geleenthede"
5801
-
5802
- #: common/src/Tribe/PUE/Checker.php:899
5803
- msgid "Hmmm... something's wrong with this validator. Please contact %ssupport%s."
5804
- msgstr ""
5805
-
5806
- #: common/src/Tribe/PUE/Checker.php:943
5807
- msgid "Thanks for setting up a valid key. It will expire on %s"
5808
- msgstr ""
5809
-
5810
- #: common/src/Tribe/PUE/Checker.php:938
5811
- msgid "Valid Key! Expires on %s"
5812
- msgstr "Geldig sleutel! Verval op %s"
5813
-
5814
- #: common/src/Tribe/PUE/Checker.php:918
5815
- msgid "Sorry, key validation server is not available."
5816
- msgstr "Jammer, sleutel validering bediener is nie beskikbaar nie."
5817
-
5818
- #: common/src/Tribe/PUE/Checker.php:912
5819
- msgid "unknown date"
5820
- msgstr "onbekende datum"
5821
-
5822
- #: common/src/Tribe/PUE/Checker.php:653
5823
- msgid "License key(s) updated."
5824
- msgstr "Lisensiesleutel(s) opgedateer"
5825
-
5826
- #: common/src/Tribe/PUE/Checker.php:497
5827
- msgid "A valid license key is required for support and updates"
5828
- msgstr "'n Geldige lisensie sleutel word benodig vir die ondersteuning en opgraderings"
5829
-
5830
- #: common/src/Tribe/PUE/Checker.php:512 common/src/Tribe/PUE/Checker.php:523
5831
- msgid "License Key"
5832
- msgstr "Lisensiesleutel"
5833
-
5834
- #: common/src/Tribe/Field.php:626
5835
- msgid "No select options specified"
5836
- msgstr "Geen kies opsies gespesifiseer"
5837
-
5838
- #: common/src/Tribe/Field.php:568
5839
- msgid "No checkbox options specified"
5840
- msgstr "Geen boks opsies gespesifiseer"
5841
-
5842
- #: common/src/Tribe/Field.php:532
5843
- msgid "No radio options specified"
5844
- msgstr "Geen radio opsies gespesifiseer"
5845
-
5846
- #: common/src/Tribe/Field.php:231
5847
- msgid "Invalid field type specified"
5848
- msgstr "Ongeldig veld tipe gespesifiseer"
5849
-
5850
- #: common/src/Tribe/Credits.php:31
5851
- msgid "This calendar is powered by The Events Calendar."
5852
- msgstr ""
5853
-
5854
- #: common/src/Tribe/App_Shop.php:50 common/src/Tribe/App_Shop.php:51
5855
- #: common/src/Tribe/App_Shop.php:72
5856
- msgid "Event Add-Ons"
5857
- msgstr "Gebeurtenis Toevoegings"
5858
-
5859
- #: common/src/Tribe/Admin/Help_Page.php:860
5860
- msgid "Visit the Add-on Page"
5861
- msgstr ""
5862
-
5863
- #: common/src/Tribe/Admin/Help_Page.php:855
5864
- msgid "Plugin Inactive"
5865
- msgstr ""
5866
-
5867
- #: common/src/Tribe/Admin/Help_Page.php:853
5868
- msgid "Plugin Active"
5869
- msgstr ""
5870
-
5871
- #: common/src/Tribe/Admin/Help_Page.php:847
5872
- msgid "Premium Add-Ons"
5873
- msgstr "Premium Toevoegings"
5874
-
5875
- #: common/src/Tribe/Admin/Help_Page.php:828
5876
- msgid "Rating:"
5877
- msgstr ""
5878
-
5879
- #: common/src/Tribe/Admin/Help_Page.php:825
5880
- msgid "Active Users:"
5881
- msgstr ""
5882
-
5883
- #: common/src/Tribe/Admin/Help_Page.php:823
5884
- msgid "WordPress "
5885
- msgstr "WordPress "
5886
-
5887
- #: common/src/Tribe/Admin/Help_Page.php:822
5888
- #: common/src/admin-views/app-shop.php:77
5889
- msgid "Requires:"
5890
- msgstr "Benodig:"
5891
-
5892
- #: common/src/Tribe/Admin/Help_Page.php:819
5893
- msgid "Latest Version:"
5894
- msgstr "Nuuster Weergawe"
5895
-
5896
- #: common/src/Tribe/Admin/Help_Page.php:802
5897
- msgid "Install Plugin"
5898
- msgstr ""
5899
-
5900
- #: common/src/Tribe/Admin/Help_Page.php:802
5901
- msgid "Install %s"
5902
- msgstr ""
5903
-
5904
- #: common/src/Tribe/Admin/Help_Page.php:786
5905
- msgid "Upgrade Plugin"
5906
- msgstr ""
5907
-
5908
- #: common/src/Tribe/Admin/Help_Page.php:778
5909
- msgid "Activate Plugin"
5910
- msgstr ""
5911
-
5912
- #: common/src/Tribe/Admin/Help_Page.php:778
5913
- msgid "Activate %s"
5914
- msgstr "Maak %s netwerk aktief"
5915
-
5916
- #: common/src/Tribe/Admin/Help_Page.php:413
5917
- #: common/src/Tribe/Admin/Help_Page.php:788
5918
- msgid "You are up to date!"
5919
- msgstr "Jy is op datum!"
5920
-
5921
- #: common/src/Tribe/Admin/Help_Page.php:413
5922
- msgid "You need to upgrade!"
5923
- msgstr "Jy moet opgradeer!"
5924
-
5925
- #: common/src/Tribe/Admin/Help_Page.php:405
5926
- msgctxt "not available"
5927
- msgid "n/a"
5928
- msgstr ""
5929
-
5930
- #: common/src/Tribe/Admin/Help_Page.php:244
5931
- #: common/src/Tribe/Plugins_API.php:110
5932
- msgid "Community Tickets"
5933
- msgstr "Gemeenskap kaartjies"
5934
-
5935
- #: common/src/Tribe/Admin/Help_Page.php:235 common/src/Tribe/Plugins_API.php:66
5936
- msgid "Event Tickets Plus"
5937
- msgstr "Event Tickets Plus"
5938
-
5939
- #: common/src/Tribe/Admin/Help_Page.php:211
5940
- #: common/src/Tribe/Plugins_API.php:100
5941
- msgid "Community Events"
5942
- msgstr "Gemeenskap gebeurtenisse"
5943
-
5944
- #: common/src/Tribe/Admin/Help_Page.php:203
5945
- #: common/src/Tribe/Plugins_API.php:121
5946
- msgid "Eventbrite Tickets"
5947
- msgstr "Eventbrite kaartjies"
5948
-
5949
- #: common/src/Tribe/Admin/Help_Page.php:194 common/src/Tribe/Plugins_API.php:43
5950
- msgid "Events Calendar PRO"
5951
- msgstr "Events Calendar PRO"
5952
-
5953
- #: src/views/tickets/orders-link.php:38
5954
- #: src/views/blocks/attendees/order-links.php:48 src/Tribe/Tickets_View.php:749
5955
- #: common/src/Tribe/Admin/Help_Page.php:170
5956
- msgid " and "
5957
- msgstr " en "
5958
-
5959
- #: common/src/Tribe/Admin/Help_Page.php:95
5960
- msgid "Turbo charge your posts admin for any custom post type with sortable filters and columns, and auto-registration of metaboxes."
5961
- msgstr ""
5962
-
5963
- #: common/src/Tribe/Admin/Help_Page.php:91
5964
- msgid "Advanced Post Manager"
5965
- msgstr ""
5966
-
5967
- #: common/src/Tribe/Admin/Help_Page.php:79
5968
- msgid "Events Tickets is a carefully crafted, extensible plugin that lets you easily sell tickets for your events."
5969
- msgstr ""
5970
-
5971
- #. Plugin Name of the plugin
5972
- #: src/Tribe/Privacy.php:32 src/Tribe/Main.php:586
5973
- #: common/src/Tribe/Admin/Help_Page.php:75 common/src/Tribe/Plugins_API.php:57
5974
- #: event-tickets.php:59
5975
- msgid "Event Tickets"
5976
- msgstr "Geleentheid Kaartjies"
5977
-
5978
- #: common/src/Tribe/Admin/Help_Page.php:63
5979
- msgid "The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events."
5980
- msgstr ""
5981
-
5982
- #: common/src/Tribe/Admin/Help_Page.php:59 common/src/Tribe/Plugins_API.php:25
5983
- #: common/src/Tribe/Customizer.php:642
5984
- msgid "The Events Calendar"
5985
- msgstr "The Events Calendar"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lang/event-tickets-ar.po DELETED
@@ -1,3715 +0,0 @@
1
- # Translation of Plugins - Event Tickets - Stable (latest release) in Arabic
2
- # This file is distributed under the same license as the Plugins - Event Tickets - Stable (latest release) package.
3
- msgid ""
4
- msgstr ""
5
- "PO-Revision-Date: 2017-01-29 05:43:24+0000\n"
6
- "MIME-Version: 1.0\n"
7
- "Content-Type: text/plain; charset=UTF-8\n"
8
- "Content-Transfer-Encoding: 8bit\n"
9
- "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
10
- "X-Generator: GlotPress/2.4.0-alpha\n"
11
- "Language: ar\n"
12
- "Project-Id-Version: Plugins - Event Tickets - Stable (latest release)\n"
13
-
14
- #: src/template-tags/tickets.php:410
15
- msgctxt "ticket shared capacity message (remaining stock)"
16
- msgid "%1$d Remaining of shared capacity"
17
- msgstr ""
18
-
19
- #: src/admin-views/rsvp-metabox-capacity.php:19
20
- msgid "Leave blank for unlimited"
21
- msgstr ""
22
-
23
- #: src/admin-views/editor/panel/ticket.php:189
24
- msgid "Save RSVP"
25
- msgstr ""
26
-
27
- #: src/admin-views/editor/panel/ticket.php:180
28
- msgid "Save ticket"
29
- msgstr ""
30
-
31
- #: src/admin-views/editor/panel/ticket.php:98
32
- msgid "Ticket type name shows on the front end and emailed tickets"
33
- msgstr ""
34
-
35
- #: src/admin-views/editor/panel/ticket.php:96
36
- msgid "Ticket Type is a required field."
37
- msgstr ""
38
-
39
- #: src/admin-views/editor/panel/ticket.php:87
40
- msgid "Type:"
41
- msgstr ""
42
-
43
- #: src/admin-views/editor/panel/ticket.php:82
44
- msgid "Edit RSVP"
45
- msgstr ""
46
-
47
- #: src/admin-views/editor/panel/ticket.php:74
48
- msgid "Add new RSVP"
49
- msgstr ""
50
-
51
- #: src/admin-views/editor/panel/settings.php:69
52
- msgid "Save settings"
53
- msgstr ""
54
-
55
- #: src/admin-views/editor/panel/settings.php:32
56
- msgid "Select an image from your Media Library to display on emailed tickets. For best results, use a .jpg, .png, or .gif at least 1160px wide."
57
- msgstr ""
58
-
59
- #: src/admin-views/editor/panel/settings.php:30
60
- msgid "Ticket header image:"
61
- msgstr ""
62
-
63
- #: src/admin-views/editor/panel/list.php:61
64
- msgid "New RSVP"
65
- msgstr ""
66
-
67
- #: src/admin-views/editor/panel/list.php:59
68
- msgid "Add a new RSVP"
69
- msgstr ""
70
-
71
- #: src/admin-views/editor/panel/list.php:39
72
- msgid "View Attendees"
73
- msgstr ""
74
-
75
- #: src/admin-views/editor/panel/list.php:11
76
- msgid "You have unsaved changes to your tickets. Discard those changes?"
77
- msgstr ""
78
-
79
- #: src/admin-views/editor/list-table.php:40
80
- msgid "Available"
81
- msgstr ""
82
-
83
- #: src/admin-views/editor/list-table.php:39
84
- msgid "Capacity"
85
- msgstr ""
86
-
87
- #: src/admin-views/editor/list-row.php:100
88
- msgid "( Ticket ID: %d )"
89
- msgstr ""
90
-
91
- #: src/admin-views/editor/list-row.php:88
92
- msgid "The number of Complete ticket sales does not match the number of attendees. Please check the Attendees list and adjust ticket stock in WooCommerce as needed."
93
- msgstr ""
94
-
95
- #: src/admin-views/editor/list-row.php:86
96
- msgid "Available:"
97
- msgstr ""
98
-
99
- #: src/admin-views/editor/list-row.php:81
100
- #: src/admin-views/rsvp-metabox-capacity.php:10
101
- msgid "Capacity:"
102
- msgstr ""
103
-
104
- #: src/admin-views/editor/fieldset/history.php:30
105
- msgid "Ti"
106
- msgstr ""
107
-
108
- #: src/admin-views/editor/fieldset/history.php:27
109
- msgid "History"
110
- msgstr ""
111
-
112
- #: src/admin-views/editor/fieldset/advanced.php:132
113
- msgid "If you do not set an end sale date, tickets sales will never end."
114
- msgstr ""
115
-
116
- #: src/admin-views/editor/fieldset/advanced.php:130
117
- msgid "If you do not set an end sale date, tickets will be available until the event begins."
118
- msgstr ""
119
-
120
- #: src/admin-views/editor/fieldset/advanced.php:124
121
- msgid "Ticket end date"
122
- msgstr ""
123
-
124
- #: src/admin-views/editor/fieldset/advanced.php:98
125
- msgid "If you do not set a start sale date, tickets will be available immediately."
126
- msgstr ""
127
-
128
- #: src/admin-views/editor/fieldset/advanced.php:97
129
- #: src/admin-views/editor/fieldset/advanced.php:126
130
- msgid "HH:MM"
131
- msgstr ""
132
-
133
- #: src/admin-views/editor/fieldset/advanced.php:95
134
- msgid "Ticket start date"
135
- msgstr ""
136
-
137
- #: src/admin-views/editor/fieldset/advanced.php:84
138
- #: src/admin-views/editor/fieldset/advanced.php:113
139
- msgid "at"
140
- msgstr ""
141
-
142
- #: src/admin-views/editor/fieldset/advanced.php:83
143
- #: src/admin-views/editor/fieldset/advanced.php:112
144
- msgid "YYYY-MM-DD"
145
- msgstr ""
146
-
147
- #: src/admin-views/editor/fieldset/advanced.php:65
148
- msgid "Show description on front end ticket form."
149
- msgstr ""
150
-
151
- #: src/admin-views/editor/fieldset/advanced.php:47
152
- msgid "Description:"
153
- msgstr ""
154
-
155
- #: src/admin-views/editor/fieldset/advanced.php:45
156
- msgid "Advanced Settings"
157
- msgstr ""
158
-
159
- #: src/admin-views/editor/fieldset/advanced.php:42
160
- msgid "Advanced"
161
- msgstr ""
162
-
163
- #: src/admin-views/editor/fieldset/advanced.php:38
164
- msgid "Start sale date cannot be greater than End Sale date"
165
- msgstr ""
166
-
167
- #: src/admin-views/editor/fieldset/advanced.php:37
168
- msgid "Start sale date cannot be empty."
169
- msgstr ""
170
-
171
- #: src/admin-views/admin-welcome-message.php:25
172
- msgid "Event Tickets Features"
173
- msgstr ""
174
-
175
- #: src/admin-views/admin-welcome-message.php:24
176
- msgid "Settings Overview"
177
- msgstr ""
178
-
179
- #: src/admin-views/admin-welcome-message.php:15
180
- msgid "If you need a little help, hit us up in %s."
181
- msgstr ""
182
-
183
- #: src/admin-views/admin-welcome-message.php:14
184
- msgid "Giving you the best experience with our plugin is our top goal. Check out the resources below for a step-by-step introduction to your new features or head straight to the Events section in your admin to create your first ticket."
185
- msgstr ""
186
-
187
- #: src/admin-views/admin-welcome-message.php:13
188
- msgid "Welcome to Event Tickets!"
189
- msgstr ""
190
-
191
- #: src/admin-views/admin-welcome-message.php:5
192
- msgid "our support forums"
193
- msgstr ""
194
-
195
- #: src/Tribe/Tickets_Handler.php:84
196
- msgid "Unlimited"
197
- msgstr ""
198
-
199
- #: src/Tribe/Tickets.php:904
200
- msgid "Set capacity for this ticket only"
201
- msgstr ""
202
-
203
- #: src/Tribe/Tickets.php:903
204
- msgid "Shared capacity with other tickets"
205
- msgstr ""
206
-
207
- #: src/Tribe/Tickets.php:385
208
- msgid "Move Ticket"
209
- msgstr ""
210
-
211
- #: src/Tribe/Tickets.php:385
212
- msgid "Move RSVP"
213
- msgstr ""
214
-
215
- #: src/Tribe/Tickets.php:310
216
- msgid "Delete Ticket"
217
- msgstr ""
218
-
219
- #: src/Tribe/Tickets.php:310
220
- msgid "Delete RSVP"
221
- msgstr ""
222
-
223
- #: src/Tribe/Metabox.php:308
224
- msgid "Failed to Delete the Ticket, Refresh the Page to try again."
225
- msgstr ""
226
-
227
- #: src/Tribe/Metabox.php:268 src/Tribe/Metabox.php:314
228
- #: src/Tribe/Metabox.php:352 src/Tribe/Metabox.php:388
229
- msgid "Commerce Module invalid"
230
- msgstr ""
231
-
232
- #: src/Tribe/Metabox.php:262
233
- msgid "Failed to Edit the Ticket, Refresh the Page to try again."
234
- msgstr ""
235
-
236
- #: src/Tribe/Metabox.php:252 src/Tribe/Metabox.php:304
237
- msgid "Invalid Ticket"
238
- msgstr ""
239
-
240
- #: src/Tribe/Metabox.php:217
241
- msgid "Failed to Add the Ticket"
242
- msgstr ""
243
-
244
- #: src/Tribe/Metabox.php:199
245
- msgid "Commerce Provider invalid"
246
- msgstr ""
247
-
248
- #: src/Tribe/Metabox.php:195
249
- msgid "Failed to Add the Ticket, Refresh the Page to try again."
250
- msgstr ""
251
-
252
- #: src/Tribe/Metabox.php:185 src/Tribe/Metabox.php:246
253
- #: src/Tribe/Metabox.php:298
254
- msgid "Invalid parent Post"
255
- msgstr ""
256
-
257
- #: src/Tribe/Metabox.php:106
258
- msgid "Invalid Post ID"
259
- msgstr ""
260
-
261
- #: src/Tribe/CSV_Importer/Column_Names.php:42
262
- msgid "Ticket Capacity"
263
- msgstr ""
264
-
265
- #: common/src/admin-views/tribe-options-help.php:20
266
- msgid "Check out our %s for developers."
267
- msgstr ""
268
-
269
- #: common/src/admin-views/tribe-options-help.php:18
270
- msgid "Want to dive deeper?"
271
- msgstr ""
272
-
273
- #: common/src/admin-views/tribe-options-display.php:28
274
- msgid "The following three fields accept the date format options available to the PHP %1$s function. <a href=\"%2$s\" target=\"_blank\">Learn how to make your own date format here</a>."
275
- msgstr ""
276
-
277
- #: common/src/Tribe/Validate.php:527
278
- msgid "%s must be an email address."
279
- msgstr ""
280
-
281
- #: common/src/Tribe/Main.php:283
282
- msgid "Clear Selection."
283
- msgstr ""
284
-
285
- #: common/src/Tribe/Main.php:282
286
- msgid "Select all pages"
287
- msgstr ""
288
-
289
- #: common/src/Tribe/Main.php:281
290
- msgid "All items on this page were selected. "
291
- msgstr ""
292
-
293
- #: common/src/Tribe/Languages/Locations.php:252
294
- msgid "Sint Maarten"
295
- msgstr ""
296
-
297
- #: common/src/Tribe/Languages/Locations.php:245
298
- msgid "S&atilde;o Tom&eacute; and Pr&iacute;ncipe"
299
- msgstr ""
300
-
301
- #: common/src/Tribe/Languages/Locations.php:238
302
- msgid "Saint Helena"
303
- msgstr ""
304
-
305
- #: common/src/Tribe/Languages/Locations.php:237
306
- msgid "Saint Barth&eacute;lemy"
307
- msgstr ""
308
-
309
- #: common/src/Tribe/Languages/Locations.php:113
310
- msgid "Cura&ccedil;ao"
311
- msgstr ""
312
-
313
- #: common/src/Tribe/Languages/Locations.php:103
314
- msgid "Collectivity of Saint Martin"
315
- msgstr ""
316
-
317
- #: common/src/Tribe/Languages/Locations.php:57
318
- msgid "&Aring;land Islands"
319
- msgstr ""
320
-
321
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:57
322
- msgid "A list of links to the term own, archive and parent REST URL"
323
- msgstr ""
324
-
325
- #: src/views/tickets/rsvp.php:209
326
- msgid "You must have JavaScript activated to purchase tickets. Please enable JavaScript in your browser."
327
- msgstr ""
328
-
329
- #: src/template-tags/tickets.php:237
330
- msgctxt "list view buy now ticket button"
331
- msgid "Buy Now!"
332
- msgstr ""
333
-
334
- #: src/template-tags/tickets.php:234
335
- msgctxt "list view rsvp now ticket button"
336
- msgid "RSVP Now!"
337
- msgstr ""
338
-
339
- #: src/template-tags/tickets.php:223
340
- msgid "%s ticket left"
341
- msgid_plural "%s tickets left"
342
- msgstr[0] ""
343
- msgstr[1] ""
344
- msgstr[2] ""
345
- msgstr[3] ""
346
- msgstr[4] ""
347
- msgstr[5] ""
348
-
349
- #: src/template-tags/tickets.php:221
350
- msgid "%s spot left"
351
- msgid_plural "%s spots left"
352
- msgstr[0] ""
353
- msgstr[1] ""
354
- msgstr[2] ""
355
- msgstr[3] ""
356
- msgstr[4] ""
357
- msgstr[5] ""
358
-
359
- #: src/template-tags/tickets.php:204
360
- msgctxt "list view stock sold out"
361
- msgid "Sold out"
362
- msgstr ""
363
-
364
- #: common/src/Tribe/Plugins_API.php:129
365
- msgid "Take your image widgets to the next level with Image Widget Plus! We've taken the simple functionality of our basic Image Widget and amped it up with several popular feature requests - multiple image support, slideshow, lightbox, and random image - all backed by a full year of premium support."
366
- msgstr ""
367
-
368
- #: common/src/Tribe/Plugins_API.php:125
369
- msgid "Image Widget Plus"
370
- msgstr ""
371
-
372
- #: common/src/Tribe/Plugins_API.php:94
373
- msgid "Accept user-submitted events on your site! With Community Events, you can accept public submissions or require account sign-on. Settings give you the options to save as a draft or publish automatically, enable categories and tags, and choose whether users can edit/manage their own events or simply submit. Best of all - setup is easy! Just activate, configure the options, and off you go."
374
- msgstr ""
375
-
376
- #: common/src/Tribe/Plugins_API.php:60
377
- msgid "Event Tickets provides a simple way for visitors to RSVP to your events. As a standalone plugin, it enables you to add RSVP functionality to posts or pages. When paired with The Events Calendar, you can add that same RSVP functionality directly to your event listings."
378
- msgstr ""
379
-
380
- #: common/src/Tribe/Plugins_API.php:37
381
- msgid "Import events from across the web! Event Aggregator makes it easy to run scheduled or manual imports from Facebook, Meetup, Google Calendar, and iCalendar, along with uploads from CSV and ICS files. You can also import directly from other sites running The Events Calendar thanks to our built-in REST API support."
382
- msgstr ""
383
-
384
- #: common/src/Tribe/Plugins_API.php:28
385
- msgid "Create an events calendar and manage it with ease. The Events Calendar plugin provides professional-level quality and features backed by a team you can trust."
386
- msgstr ""
387
-
388
- #: common/src/Tribe/PUE/Notices.php:340
389
- msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
390
- msgstr ""
391
-
392
- #: common/src/Tribe/PUE/Notices.php:225
393
- msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
394
- msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
395
- msgstr[0] ""
396
- msgstr[1] ""
397
- msgstr[2] ""
398
- msgstr[3] ""
399
- msgstr[4] ""
400
- msgstr[5] ""
401
-
402
- #: common/src/Tribe/PUE/Checker.php:976
403
- msgid "Please refresh the page and try your request again."
404
- msgstr ""
405
-
406
- #: common/src/Tribe/Ajax/Dropdown.php:243
407
- msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
408
- msgstr ""
409
-
410
- #: common/src/Tribe/Ajax/Dropdown.php:193
411
- msgid "Empty data set for this dropdown"
412
- msgstr ""
413
-
414
- #: common/src/Tribe/Ajax/Dropdown.php:180
415
- msgid "Missing data source for this dropdown"
416
- msgstr ""
417
-
418
- #: common/src/Tribe/Ajax/Dropdown.php:38
419
- msgid "Cannot look for Terms without a taxonomy"
420
- msgstr ""
421
-
422
- #: common/src/Tribe/PUE/Checker.php:1095
423
- msgid "There is a new version of %1$s available. %2$s"
424
- msgstr ""
425
-
426
- #: common/src/Tribe/PUE/Checker.php:1084
427
- msgid "Update now to version %s."
428
- msgstr ""
429
-
430
- #: common/src/Tribe/PUE/Checker.php:497
431
- msgid "%1$sBuy a license%2$s for the Event Aggregator service to access additional import features."
432
- msgstr ""
433
-
434
- #: common/src/Tribe/Validate.php:238
435
- msgid "%s must be a whole number."
436
- msgstr ""
437
-
438
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:52
439
- msgid "The URL to the term archive page"
440
- msgstr ""
441
-
442
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:48
443
- msgid "The number of posts associated with the term"
444
- msgstr ""
445
-
446
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:44
447
- msgid "The term parent term if any"
448
- msgstr ""
449
-
450
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:40
451
- msgid "The term description"
452
- msgstr ""
453
-
454
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:36
455
- msgid "The taxonomy the term belongs to"
456
- msgstr ""
457
-
458
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:32
459
- msgid "The term slug"
460
- msgstr ""
461
-
462
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:28
463
- msgid "The term name"
464
- msgstr ""
465
-
466
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:24
467
- msgid "The WordPress term ID"
468
- msgstr ""
469
-
470
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:36
471
- msgid "The link to the image in the specified size on the site"
472
- msgstr ""
473
-
474
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:32
475
- msgid "The image mime-type"
476
- msgstr ""
477
-
478
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:28
479
- msgid "The image height in pixels in the specified size"
480
- msgstr ""
481
-
482
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:24
483
- msgid "The image width in pixels in the specified size"
484
- msgstr ""
485
-
486
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:44
487
- msgid "The details about each size available for the image"
488
- msgstr ""
489
-
490
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:40
491
- msgid "The image natural height in pixels"
492
- msgstr ""
493
-
494
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:36
495
- msgid "The image natural width in pixels"
496
- msgstr ""
497
-
498
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:32
499
- msgid "The image file extension"
500
- msgstr ""
501
-
502
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:28
503
- msgid "The image WordPress post ID"
504
- msgstr ""
505
-
506
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:24
507
- msgid "The URL to the full size version of the image"
508
- msgstr ""
509
-
510
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:44
511
- msgid "The date seconds"
512
- msgstr ""
513
-
514
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:40
515
- msgid "The date minutes"
516
- msgstr ""
517
-
518
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:36
519
- msgid "The date hour"
520
- msgstr ""
521
-
522
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:32
523
- msgid "The date day"
524
- msgstr ""
525
-
526
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:28
527
- msgid "The date month"
528
- msgstr ""
529
-
530
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:24
531
- msgid "The date year"
532
- msgstr ""
533
-
534
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:34
535
- msgid "A sorted array of all the numeric values for the cost"
536
- msgstr ""
537
-
538
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:28
539
- msgid "The position of the currency symbol in the cost string"
540
- msgstr ""
541
-
542
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24
543
- msgid "The cost currency symbol"
544
- msgstr ""
545
-
546
- #: src/template-tags/tickets.php:417
547
- msgctxt "ticket stock message (pending stock)"
548
- msgid "%1$d Awaiting Review"
549
- msgstr ""
550
-
551
- #: src/template-tags/tickets.php:412
552
- msgctxt "ticket stock message (remaining stock)"
553
- msgid "%1$d Remaining"
554
- msgstr ""
555
-
556
- #: src/template-tags/tickets.php:408
557
- msgid "%s %d"
558
- msgstr ""
559
-
560
- #: src/template-tags/tickets.php:402
561
- msgctxt "separate going and remain RSVPs"
562
- msgid "RSVP'd Going"
563
- msgstr ""
564
-
565
- #: src/template-tags/tickets.php:400
566
- msgid "Sold"
567
- msgstr ""
568
-
569
- #: src/admin-views/tribe-options-tickets.php:83
570
- msgid "Location of Tickets form"
571
- msgstr ""
572
-
573
- #: src/admin-views/tribe-options-tickets.php:75
574
- msgid "Location of RSVP form"
575
- msgstr ""
576
-
577
- #: src/admin-views/tribe-options-tickets.php:69
578
- msgid "Above the event description"
579
- msgstr ""
580
-
581
- #: src/admin-views/tribe-options-tickets.php:68
582
- msgid "Below the event description"
583
- msgstr ""
584
-
585
- #: src/admin-views/tribe-options-tickets.php:67
586
- msgid "Above the event details"
587
- msgstr ""
588
-
589
- #: src/admin-views/tribe-options-tickets.php:66
590
- msgid "Below the event details [default]"
591
- msgstr ""
592
-
593
- #: src/admin-views/attendees.php:76
594
- msgctxt "attendee screen summary"
595
- msgid "Attendees By Ticket"
596
- msgstr ""
597
-
598
- #: src/admin-views/attendees.php:38
599
- msgctxt "attendee screen summary"
600
- msgid "Event Details"
601
- msgstr ""
602
-
603
- #: src/Tribe/Attendees.php:106
604
- msgctxt "attendee event actions"
605
- msgid "View Event"
606
- msgstr ""
607
-
608
- #: src/Tribe/Attendees.php:105
609
- msgctxt "attendee event actions"
610
- msgid "Edit Event"
611
- msgstr ""
612
-
613
- #: src/Tribe/Attendees_Table.php:430 src/Tribe/Attendees_Table.php:450
614
- msgid "Undo"
615
- msgstr ""
616
-
617
- #: src/Tribe/Attendees_Table.php:422 src/Tribe/Attendees_Table.php:431
618
- #: src/Tribe/Attendees_Table.php:442 src/Tribe/Attendees_Table.php:451
619
- msgid "Check In"
620
- msgstr ""
621
-
622
- #: src/Tribe/Attendees_Table.php:59
623
- msgctxt "attendee table"
624
- msgid "Check in"
625
- msgstr ""
626
-
627
- #: src/Tribe/Attendees_Table.php:54
628
- msgctxt "attendee table"
629
- msgid "Security Code"
630
- msgstr ""
631
-
632
- #: src/Tribe/Attendees_Table.php:53
633
- msgctxt "attendee table"
634
- msgid "Primary Information"
635
- msgstr ""
636
-
637
- #: src/Tribe/Admin/Views/Ticketed.php:59
638
- msgid "Unticketed"
639
- msgstr ""
640
-
641
- #: src/Tribe/Admin/Views/Ticketed.php:47
642
- msgid "Ticketed"
643
- msgstr ""
644
-
645
- #: common/src/Tribe/Settings.php:269 common/src/Tribe/Settings.php:270
646
- msgid "Events Help"
647
- msgstr ""
648
-
649
- #: common/src/Tribe/PUE/Checker.php:1670
650
- msgid "Expired license. Consult your network administrator."
651
- msgstr ""
652
-
653
- #: common/src/Tribe/PUE/Checker.php:1669
654
- msgid "No license entered. Consult your network administrator."
655
- msgstr ""
656
-
657
- #: common/src/Tribe/PUE/Checker.php:1668
658
- msgid "A valid license has been entered by your network administrator."
659
- msgstr ""
660
-
661
- #: common/src/Tribe/PUE/Checker.php:550
662
- msgid "Site License Key"
663
- msgstr ""
664
-
665
- #: common/src/Tribe/PUE/Checker.php:539
666
- msgid "Check this box if you wish to override the network license key with your own"
667
- msgstr ""
668
-
669
- #: common/src/Tribe/PUE/Checker.php:538
670
- msgid "Override network license key"
671
- msgstr ""
672
-
673
- #: common/src/Tribe/PUE/Checker.php:529 common/src/Tribe/PUE/Checker.php:563
674
- msgid "License Key Status:"
675
- msgstr ""
676
-
677
- #: common/src/Tribe/Main.php:305
678
- msgid "Done"
679
- msgstr ""
680
-
681
- #: common/src/Tribe/Main.php:304
682
- msgid "Today"
683
- msgstr ""
684
-
685
- #: common/src/Tribe/Main.php:303
686
- msgid "Prev"
687
- msgstr ""
688
-
689
- #: common/src/Tribe/Customizer.php:569
690
- msgid "Use the following panel of your customizer to change the styling of your Calendar and Event pages."
691
- msgstr ""
692
-
693
- #: common/src/admin-views/app-shop.php:31
694
- msgid "Installed"
695
- msgstr ""
696
-
697
- #: common/src/admin-views/app-shop.php:29
698
- msgid "Installed Add-Ons"
699
- msgstr ""
700
-
701
- #: common/src/Tribe/Extension.php:368
702
- msgid "Unable to run Tribe Extensions. Your website host is running PHP 5.2 or older, and has likely disabled or misconfigured debug_backtrace(). You, or your website host, will need to upgrade PHP or properly configure debug_backtrace() for Tribe Extensions to work."
703
- msgstr ""
704
-
705
- #: common/src/Tribe/Extension.php:144
706
- msgid "Tutorial"
707
- msgstr ""
708
-
709
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:92
710
- msgctxt "the final separator in a list of two or more items"
711
- msgid " and "
712
- msgstr ""
713
-
714
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:91
715
- msgctxt "separator used in a list of items"
716
- msgid ", "
717
- msgstr ""
718
-
719
- #: src/views/tickets/rsvp.php:151
720
- msgctxt "order status label"
721
- msgid "RSVP"
722
- msgstr ""
723
-
724
- #: src/views/tickets/rsvp.php:32
725
- msgctxt "form heading"
726
- msgid "RSVP"
727
- msgstr ""
728
-
729
- #: src/views/tickets/orders-rsvp.php:68
730
- msgctxt "order status label"
731
- msgid "RSVP: "
732
- msgstr ""
733
-
734
- #: src/views/tickets/email-tickets-moved.php:103
735
- msgid "We wanted to let you know that a ticket you purchased for %2$s has been transferred to %3$s%4$s. Your ticket remains valid and no further action is needed on your part:"
736
- msgid_plural "We wanted to let you know that the following %1$s tickets for %2$s have been transferred to %3$s%4$s. Your existing tickets remain valid and no further action is needed on your part:"
737
- msgstr[0] ""
738
- msgstr[1] ""
739
- msgstr[2] ""
740
- msgstr[3] ""
741
- msgstr[4] ""
742
- msgstr[5] ""
743
-
744
- #: src/views/tickets/email-ticket-type-moved.php:115
745
- #: src/views/tickets/email-tickets-moved.php:117
746
- msgid " (taking place on %s)"
747
- msgstr ""
748
-
749
- #: src/views/tickets/email-ticket-type-moved.php:101
750
- msgid "We wanted to let you know that your ticket for %2$s has been transferred to %3$s%4$s. Your ticket remains valid and no further action is needed on your part."
751
- msgid_plural "We wanted to let you know that your %1$s tickets for %2$s have been transferred to %3$s%4$s. Your existing tickets remain valid and no further action is needed on your part."
752
- msgstr[0] ""
753
- msgstr[1] ""
754
- msgstr[2] ""
755
- msgstr[3] ""
756
- msgstr[4] ""
757
- msgstr[5] ""
758
-
759
- #: src/views/tickets/email-ticket-type-moved.php:97
760
- #: src/views/tickets/email-tickets-moved.php:99
761
- msgid "Important changes to your tickets"
762
- msgstr ""
763
-
764
- #: src/admin-views/ticket-type-history.php:15
765
- msgid "Click to hide history"
766
- msgstr ""
767
-
768
- #: src/admin-views/ticket-type-history.php:14
769
- msgid "Click to view the history"
770
- msgstr ""
771
-
772
- #: src/admin-views/ticket-type-history.php:10
773
- msgid "Ticket history:"
774
- msgstr ""
775
-
776
- #: src/admin-views/move-tickets.php:89
777
- msgctxt "move tickets dialog"
778
- msgid "Next &raquo;"
779
- msgstr ""
780
-
781
- #: src/admin-views/move-tickets.php:88
782
- msgid "Finish!"
783
- msgstr ""
784
-
785
- #: src/admin-views/move-tickets.php:87
786
- msgctxt "move tickets dialog"
787
- msgid "&laquo; Back"
788
- msgstr ""
789
-
790
- #: src/admin-views/move-tickets.php:80
791
- msgctxt "move tickets dialog"
792
- msgid "Please be patient while your request is processed&hellip;"
793
- msgstr ""
794
-
795
- #: src/admin-views/move-tickets.php:72
796
- msgid "Select the ticket type that the tickets should be transferred to:"
797
- msgstr ""
798
-
799
- #: src/admin-views/move-tickets.php:64
800
- msgid "Select the post you wish to move the ticket type to:"
801
- msgstr ""
802
-
803
- #: src/admin-views/move-tickets.php:59
804
- msgid "You can also enter keywords to help find the target event by title or description:"
805
- msgstr ""
806
-
807
- #: src/admin-views/move-tickets.php:54
808
- msgid "You can optionally focus on a specific post type:"
809
- msgstr ""
810
-
811
- #: src/admin-views/move-tickets.php:47
812
- msgid "Move tickets to a different event"
813
- msgstr ""
814
-
815
- #: src/admin-views/move-tickets.php:43
816
- msgid "Move to a different ticket type within the same event"
817
- msgstr ""
818
-
819
- #: src/admin-views/move-tickets.php:30
820
- msgid "You have selected %1$s ticket for %2$s. You can move it to a different ticket type within the same event, or to a different event."
821
- msgid_plural "You have selected %1$s tickets for %2$s. You can move them to a different ticket type within the same event, or to a different event."
822
- msgstr[0] ""
823
- msgstr[1] ""
824
- msgstr[2] ""
825
- msgstr[3] ""
826
- msgstr[4] ""
827
- msgstr[5] ""
828
-
829
- #: src/admin-views/move-tickets.php:25
830
- msgid "You have specified a range of attendees that are managed by different providers. It is not currently possible to move these together."
831
- msgstr ""
832
-
833
- #: src/admin-views/move-tickets.php:19
834
- msgid "No attendees specified! Please try again."
835
- msgstr ""
836
-
837
- #: src/admin-views/admin-welcome-message.php:38
838
- msgid "Product Releases, Tutorials and Community Activity"
839
- msgstr ""
840
-
841
- #: src/admin-views/admin-welcome-message.php:37
842
- msgid "News For Events Users"
843
- msgstr ""
844
-
845
- #: src/admin-views/admin-welcome-message.php:35
846
- msgid "Get the Skinny on the Latest Updates"
847
- msgstr ""
848
-
849
- #: src/admin-views/admin-welcome-message.php:34
850
- msgid "Release Notes"
851
- msgstr ""
852
-
853
- #: src/admin-views/admin-welcome-message.php:28
854
- msgid "FAQs, Documentation, Tutorials and Forums"
855
- msgstr ""
856
-
857
- #: src/admin-views/admin-welcome-message.php:27
858
- msgid "Support Resources"
859
- msgstr ""
860
-
861
- #: src/admin-views/admin-welcome-message.php:32
862
- msgid "Addons for creating tickets, custom registration, events and more."
863
- msgstr ""
864
-
865
- #: src/admin-views/admin-welcome-message.php:31
866
- msgid "Looking for More Features?"
867
- msgstr ""
868
-
869
- #: src/admin-views/admin-welcome-message.php:22
870
- msgid "Getting Started"
871
- msgstr ""
872
-
873
- #: src/admin-views/admin-welcome-message.php:64
874
- msgid "Sign Up"
875
- msgstr ""
876
-
877
- #: src/admin-views/admin-welcome-message.php:59
878
- msgid "News and Announcements"
879
- msgstr ""
880
-
881
- #: src/admin-views/admin-welcome-message.php:55
882
- msgid "Developer News"
883
- msgstr ""
884
-
885
- #: src/admin-views/admin-welcome-message.php:51
886
- msgid "Stay in touch with Event Tickets. We send out periodic updates, key developer notices, and even the occasional discount."
887
- msgstr ""
888
-
889
- #: src/admin-views/admin-welcome-message.php:50
890
- msgid "Newsletter Signup"
891
- msgstr ""
892
-
893
- #: src/admin-views/admin-welcome-message.php:47
894
- msgid "Rate It"
895
- msgstr ""
896
-
897
- #: src/admin-views/admin-welcome-message.php:46
898
- msgid "Rate us today!"
899
- msgstr ""
900
-
901
- #: src/admin-views/admin-welcome-message.php:45
902
- msgid "Your ratings help us bring Event Tickets to more users. More happy users mean more support, more features, and more of everything you know and love about Event Tickets. We couldn't do this without your support."
903
- msgstr ""
904
-
905
- #: src/admin-views/admin-welcome-message.php:44
906
- msgid "We Need Your Help"
907
- msgstr ""
908
-
909
- #: src/admin-views/admin-welcome-message.php:10
910
- msgid "You are running Version %s and deserve a hug :-)"
911
- msgstr ""
912
-
913
- #: src/Tribe/Attendees.php:490
914
- msgctxt "attendee export"
915
- msgid "Customer Email Address"
916
- msgstr ""
917
-
918
- #: src/Tribe/Attendees.php:489
919
- msgctxt "attendee export"
920
- msgid "Customer Name"
921
- msgstr ""
922
-
923
- #: src/Tribe/Attendees.php:488
924
- msgctxt "attendee export"
925
- msgid "Ticket #"
926
- msgstr ""
927
-
928
- #: src/Tribe/Attendees.php:487
929
- msgctxt "attendee export"
930
- msgid "Order Status"
931
- msgstr ""
932
-
933
- #: src/Tribe/Attendees.php:486
934
- msgctxt "attendee export"
935
- msgid "Order ID"
936
- msgstr ""
937
-
938
- #: src/Tribe/Attendees.php:274
939
- msgid "You must first select one or more tickets before you can move them!"
940
- msgstr ""
941
-
942
- #: src/Tribe/Attendees.php:79
943
- msgid "Post type"
944
- msgstr ""
945
-
946
- #: src/Tribe/Attendees.php:106
947
- msgctxt "attendee event actions"
948
- msgid "View"
949
- msgstr ""
950
-
951
- #: src/Tribe/Attendees.php:105
952
- msgctxt "attendee event actions"
953
- msgid "Edit"
954
- msgstr ""
955
-
956
- #: src/Tribe/RSVP.php:279
957
- msgid "RSVP Ticket"
958
- msgstr ""
959
-
960
- #: src/Tribe/RSVP.php:278
961
- msgid "RSVP Tickets"
962
- msgstr ""
963
-
964
- #: src/Tribe/RSVP.php:162
965
- msgctxt "ticket provider"
966
- msgid "RSVP"
967
- msgstr ""
968
-
969
- #: src/Tribe/RSVP/Attendance_Totals.php:39
970
- msgctxt "attendee summary"
971
- msgid "Not Going:"
972
- msgstr ""
973
-
974
- #: src/Tribe/RSVP/Attendance_Totals.php:38
975
- msgctxt "attendee summary"
976
- msgid "Going:"
977
- msgstr ""
978
-
979
- #: src/Tribe/RSVP/Attendance_Totals.php:37
980
- msgctxt "attendee summary"
981
- msgid "Total RSVPs:"
982
- msgstr ""
983
-
984
- #: src/Tribe/Assets.php:89
985
- msgid "Are you sure you want to delete this ticket? This cannot be undone."
986
- msgstr ""
987
-
988
- #: src/Tribe/Main.php:692
989
- msgctxt "button text"
990
- msgid "RSVP"
991
- msgstr ""
992
-
993
- #: src/Tribe/Main.php:557
994
- msgid "Welcome to Event Tickets"
995
- msgstr ""
996
-
997
- #: src/Tribe/CSV_Importer/Rows.php:49
998
- msgctxt "post type label"
999
- msgid "RSVPs"
1000
- msgstr ""
1001
-
1002
- #: src/Tribe/CSV_Importer/Rows.php:35
1003
- msgctxt "import type"
1004
- msgid "RSVPs"
1005
- msgstr ""
1006
-
1007
- #: src/Tribe/Attendees_Table.php:331
1008
- msgctxt "row action"
1009
- msgid "Delete"
1010
- msgstr ""
1011
-
1012
- #: src/Tribe/Attendees_Table.php:319
1013
- msgctxt "row action"
1014
- msgid "Move"
1015
- msgstr ""
1016
-
1017
- #: src/Tribe/Attendees_Table.php:309
1018
- msgctxt "row action"
1019
- msgid "Check In"
1020
- msgstr ""
1021
-
1022
- #: src/Tribe/Attendees_Table.php:310
1023
- msgctxt "row action"
1024
- msgid "Undo Check In"
1025
- msgstr ""
1026
-
1027
- #: src/Tribe/Attendees_Table.php:55
1028
- msgctxt "attendee table"
1029
- msgid "Status"
1030
- msgstr ""
1031
-
1032
- #: src/Tribe/Attendees_Table.php:52
1033
- msgctxt "attendee table"
1034
- msgid "Ticket"
1035
- msgstr ""
1036
-
1037
- #: src/Tribe/Attendance_Totals.php:30
1038
- msgctxt "attendee summary"
1039
- msgid "Deleted Attendees:"
1040
- msgstr ""
1041
-
1042
- #: src/Tribe/Attendees.php:133
1043
- msgctxt "attendee summary"
1044
- msgid "Checked in:"
1045
- msgstr ""
1046
-
1047
- #: src/Tribe/Admin/Ticket_History.php:65
1048
- msgid "No history available"
1049
- msgstr ""
1050
-
1051
- #: src/Tribe/Admin/Ticket_History.php:35
1052
- msgctxt "attendee table"
1053
- msgid "Hide history"
1054
- msgstr ""
1055
-
1056
- #: src/Tribe/Admin/Ticket_History.php:34
1057
- msgctxt "attendee table"
1058
- msgid "View history"
1059
- msgstr ""
1060
-
1061
- #: src/Tribe/Admin/Move_Tickets.php:760
1062
- msgid "This ticket was moved to %1$s from %2$s"
1063
- msgstr ""
1064
-
1065
- #: src/Tribe/Admin/Move_Tickets.php:580
1066
- msgid "This ticket was moved to %1$s %2$s from %3$s %4$s"
1067
- msgstr ""
1068
-
1069
- #: src/Tribe/Admin/Move_Tickets.php:462
1070
- msgid "%1$d attendee for %2$s was successfully %3$s. Please adjust capacity and stock manually as needed. This attendee will receive an email notifying them of the change."
1071
- msgid_plural "%1$d attendees for %2$s were successfully %3$s. Please adjust capacity and stock manually as needed. These attendees will receive an email notifying them of the change."
1072
- msgstr[0] ""
1073
- msgstr[1] ""
1074
- msgstr[2] ""
1075
- msgstr[3] ""
1076
- msgstr[4] ""
1077
- msgstr[5] ""
1078
-
1079
- #: src/Tribe/Admin/Move_Tickets.php:455
1080
- msgctxt "moved tickets success message fragment"
1081
- msgid "moved to %s and"
1082
- msgstr ""
1083
-
1084
- #: src/Tribe/Admin/Move_Tickets.php:448
1085
- msgctxt "moved tickets success message fragment"
1086
- msgid "assigned to %s"
1087
- msgstr ""
1088
-
1089
- #: src/Tribe/Admin/Move_Tickets.php:440
1090
- msgid "Tickets could not be moved: there was an unexpected failure during reassignment."
1091
- msgstr ""
1092
-
1093
- #: src/Tribe/Admin/Move_Tickets.php:432
1094
- msgid "Tickets could not be moved: valid ticket IDs or a destination ID were not provided."
1095
- msgstr ""
1096
-
1097
- #: src/Tribe/Admin/Move_Tickets.php:224
1098
- msgctxt "attendee screen bulk actions"
1099
- msgid "Move"
1100
- msgstr ""
1101
-
1102
- #: src/Tribe/Admin/Move_Tickets.php:116
1103
- msgid "Loading, please wait&hellip;"
1104
- msgstr ""
1105
-
1106
- #: src/Tribe/Admin/Move_Tickets.php:115
1107
- msgid "No ticket types were found for this post."
1108
- msgstr ""
1109
-
1110
- #: src/Tribe/Admin/Move_Tickets.php:114
1111
- msgid "No results found - you may need to widen your search criteria."
1112
- msgstr ""
1113
-
1114
- #: src/Tribe/Admin/Move_Tickets.php:113
1115
- msgid "Unable to update the post list. Please refresh the page and try again."
1116
- msgstr ""
1117
-
1118
- #: src/Tribe/Admin/Move_Tickets.php:112
1119
- msgid "Woops! We could not complete the requested operation due to an unforeseen problem."
1120
- msgstr ""
1121
-
1122
- #: src/Tribe/Admin/Move_Tickets.php:77
1123
- msgid "Move Attendees"
1124
- msgstr ""
1125
-
1126
- #: src/Tribe/Admin/Move_Ticket_Types.php:301
1127
- #: src/Tribe/Admin/Move_Tickets.php:701
1128
- msgid "Changes to your tickets from %s"
1129
- msgstr ""
1130
-
1131
- #: src/Tribe/Admin/Move_Ticket_Types.php:204
1132
- msgid "Ticket type was moved to <a href=\"%1$s\" target=\"_blank\">%2$s</a> from <a href=\"%3$s\" target=\"_blank\">%4$s</a>"
1133
- msgstr ""
1134
-
1135
- #: src/Tribe/Admin/Move_Ticket_Types.php:114
1136
- msgid "Ticket type %1$s for %2$s was successfully moved to %3$s. All previously sold tickets of this type have been transferred to %3$s. Please adjust capacity and stock manually as needed. %1$s ticket holders have received an email notifying them of the change. You may now close this window!"
1137
- msgstr ""
1138
-
1139
- #: src/Tribe/Admin/Move_Ticket_Types.php:108
1140
- msgid "Ticket type could not be moved: unexpected failure during reassignment."
1141
- msgstr ""
1142
-
1143
- #: src/Tribe/Admin/Move_Ticket_Types.php:102
1144
- msgid "Ticket type could not be moved: the ticket type or destination post was invalid."
1145
- msgstr ""
1146
-
1147
- #: src/Tribe/Admin/Move_Ticket_Types.php:72
1148
- #: src/Tribe/Admin/Move_Tickets.php:249
1149
- msgid "All supported types"
1150
- msgstr ""
1151
-
1152
- #: src/Tribe/Admin/Move_Ticket_Types.php:28
1153
- msgid "Move Ticket Types"
1154
- msgstr ""
1155
-
1156
- #: common/src/admin-views/tribe-options-licenses.php:30
1157
- msgid "Not seeing an update but expecting one? In WordPress, go to %1$sDashboard > Updates%2$s and click \"Check Again\"."
1158
- msgstr ""
1159
-
1160
- #: common/src/admin-views/tribe-options-licenses.php:25
1161
- msgid "If you're seeing a red message telling you that your key isn't valid or is out of installs, visit %1$s to manage your installs or renew / upgrade your license."
1162
- msgstr ""
1163
-
1164
- #: common/src/admin-views/tribe-options-licenses.php:22
1165
- msgid "Each paid add-on has its own unique license key. Simply paste the key into its appropriate field below, and give it a moment to validate. You know you're set when a green expiration date appears alongside a \"valid\" message."
1166
- msgstr ""
1167
-
1168
- #: common/src/admin-views/tribe-options-licenses.php:15
1169
- msgid "The license key you received when completing your purchase from %1$s will grant you access to support and updates until it expires. You do not need to enter the key below for the plugins to work, but you will need to enter it to get automatic updates. %3$sFind your license keys at %2$s%4$s."
1170
- msgstr ""
1171
-
1172
- #: common/src/admin-views/tribe-options-licenses.php:11
1173
- #: common/src/admin-views/tribe-options-licenses.php:16
1174
- msgid " (opens in new window)"
1175
- msgstr ""
1176
-
1177
- #: common/src/admin-views/tribe-options-help.php:55
1178
- msgid "Event Log"
1179
- msgstr ""
1180
-
1181
- #: common/src/admin-views/tribe-options-help.php:42
1182
- msgid "The details of your calendar plugin and settings is often needed for you or our staff to help troubleshoot an issue. Please opt-in below to automatically share your system information with our support team. This will allow us to assist you faster if you post in our forums."
1183
- msgstr ""
1184
-
1185
- #: common/src/admin-views/app-shop.php:26
1186
- msgid "Buy This Add-On"
1187
- msgstr ""
1188
-
1189
- #: common/src/admin-views/app-shop.php:5
1190
- msgid "Browse All Add-Ons"
1191
- msgstr ""
1192
-
1193
- #: common/src/admin-views/app-shop.php:4
1194
- msgid "Events Add-Ons"
1195
- msgstr ""
1196
-
1197
- #: common/src/Tribe/Languages/Locations.php:110
1198
- msgid "C&ocirc;te d'Ivoire"
1199
- msgstr ""
1200
-
1201
- #: common/src/Tribe/Support.php:370
1202
- msgid "Unique System Info Key Generated"
1203
- msgstr ""
1204
-
1205
- #: common/src/Tribe/Support.php:356 common/src/Tribe/Support.php:382
1206
- msgid "Permission Error"
1207
- msgstr ""
1208
-
1209
- #: common/src/Tribe/Support.php:323 common/src/Tribe/Support.php:328
1210
- msgid "Invalid Key"
1211
- msgstr ""
1212
-
1213
- #: common/src/Tribe/Support.php:304
1214
- msgid "Your system information will only be used by the Modern Tribe support team. All information is stored securely. We do not share this information with any third parties."
1215
- msgstr ""
1216
-
1217
- #: common/src/Tribe/Support.php:303
1218
- msgid "Yes, automatically share my system information with the Modern Tribe support team"
1219
- msgstr ""
1220
-
1221
- #: common/src/Tribe/PUE/Notices.php:383
1222
- msgctxt "formatted plugin list"
1223
- msgid "%1$s and %2$s"
1224
- msgstr ""
1225
-
1226
- #: common/src/Tribe/PUE/Notices.php:302
1227
- msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
1228
- msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
1229
- msgstr[0] ""
1230
- msgstr[1] ""
1231
- msgstr[2] ""
1232
- msgstr[3] ""
1233
- msgstr[4] ""
1234
- msgstr[5] ""
1235
-
1236
- #: common/src/Tribe/PUE/Notices.php:270
1237
- msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
1238
- msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
1239
- msgstr[0] ""
1240
- msgstr[1] ""
1241
- msgstr[2] ""
1242
- msgstr[3] ""
1243
- msgstr[4] ""
1244
- msgstr[5] ""
1245
-
1246
- #: common/src/Tribe/PUE/Checker.php:1054
1247
- msgid "There is an update for %s. %sRenew your license%s to get access to bug fixes, security updates, and new features."
1248
- msgstr ""
1249
-
1250
- #: common/src/Tribe/PUE/Checker.php:997
1251
- msgid "There is an update for %s. You'll need to %scheck your license%s to have access to updates, downloads, and support."
1252
- msgstr ""
1253
-
1254
- #: common/src/Tribe/PUE/Checker.php:961 common/src/Tribe/PUE/Notices.php:285
1255
- msgid " (opens in a new window)"
1256
- msgstr ""
1257
-
1258
- #: common/src/Tribe/PUE/Checker.php:959 common/src/Tribe/PUE/Notices.php:283
1259
- msgid "Renew Your License Now"
1260
- msgstr ""
1261
-
1262
- #: common/src/Tribe/Main.php:293
1263
- msgid ": Selected 1 row"
1264
- msgstr ""
1265
-
1266
- #: common/src/Tribe/Main.php:292
1267
- msgid ": Selected %d rows"
1268
- msgstr ""
1269
-
1270
- #: common/src/Tribe/Main.php:287
1271
- msgid "Previous"
1272
- msgstr ""
1273
-
1274
- #: common/src/Tribe/Main.php:286 common/src/Tribe/Main.php:302
1275
- msgid "Next"
1276
- msgstr ""
1277
-
1278
- #: common/src/Tribe/Main.php:285
1279
- msgid "All"
1280
- msgstr ""
1281
-
1282
- #: common/src/Tribe/Main.php:280
1283
- msgid "Search:"
1284
- msgstr ""
1285
-
1286
- #: common/src/Tribe/Main.php:279
1287
- msgid "No matching records found"
1288
- msgstr ""
1289
-
1290
- #: common/src/Tribe/Main.php:278
1291
- msgid "(filtered from _MAX_ total entries)"
1292
- msgstr ""
1293
-
1294
- #: common/src/Tribe/Main.php:277
1295
- msgid "Showing 0 to 0 of 0 entries"
1296
- msgstr ""
1297
-
1298
- #: common/src/Tribe/Main.php:276
1299
- msgid "Showing _START_ to _END_ of _TOTAL_ entries"
1300
- msgstr ""
1301
-
1302
- #: common/src/Tribe/Main.php:275
1303
- msgid "No data available in table"
1304
- msgstr ""
1305
-
1306
- #: common/src/Tribe/Main.php:274
1307
- msgid "Show _MENU_ entries"
1308
- msgstr ""
1309
-
1310
- #: common/src/Tribe/Main.php:272
1311
- msgid ": activate to sort column descending"
1312
- msgstr ""
1313
-
1314
- #: common/src/Tribe/Main.php:271
1315
- msgid ": activate to sort column ascending"
1316
- msgstr ""
1317
-
1318
- #: common/src/Tribe/Main.php:252
1319
- msgid "Press \"Cmd + C\" to copy"
1320
- msgstr ""
1321
-
1322
- #: common/src/Tribe/Main.php:251
1323
- msgid "System info copied"
1324
- msgstr ""
1325
-
1326
- #: common/src/Tribe/Main.php:250
1327
- #: common/src/admin-views/tribe-options-help.php:50
1328
- msgid "Copy to clipboard"
1329
- msgstr ""
1330
-
1331
- #: common/src/Tribe/Error.php:38
1332
- msgid "An Unknown error occurred"
1333
- msgstr ""
1334
-
1335
- #: common/src/Tribe/Admin/Help_Page.php:219 common/src/Tribe/Plugins_API.php:34
1336
- msgid "Event Aggregator"
1337
- msgstr ""
1338
-
1339
- #: common/src/Tribe/Admin/Activation_Page.php:85
1340
- msgid "Return to WordPress Updates"
1341
- msgstr ""
1342
-
1343
- #: common/src/Tribe/Admin/Activation_Page.php:85
1344
- msgid "Go to WordPress Updates page"
1345
- msgstr ""
1346
-
1347
- #: common/src/Tribe/Admin/Activation_Page.php:77
1348
- msgid "Return to Plugins page"
1349
- msgstr ""
1350
-
1351
- #: common/src/Tribe/Admin/Activation_Page.php:77
1352
- msgid "Go to plugins page"
1353
- msgstr ""
1354
-
1355
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:75
1356
- msgid "To begin using %1$s, please install and activate the latest version of %2$s."
1357
- msgstr ""
1358
-
1359
- #: src/Tribe/Tickets.php:1458
1360
- msgid "Tickets are not available as this %s has passed."
1361
- msgstr ""
1362
-
1363
- #: src/Tribe/Assets.php:102 src/Tribe/Metabox.php:548
1364
- msgid "Please enter in without thousand separators and currency symbols."
1365
- msgstr ""
1366
-
1367
- #: common/src/Tribe/Support.php:170
1368
- msgid "English"
1369
- msgstr ""
1370
-
1371
- #: common/src/Tribe/Plugins_API.php:116
1372
- msgid "The Eventbrite Tickets add-on allows you to create & sell tickets through The Events Calendar using the power of %1$sEventbrite%2$s. Whether you’re creating your ticket on the WordPress dashboard or importing the details of an already-existing event from %1$sEventbrite.com%2$s, this add-on brings the power of the Eventbrite API to your calendar."
1373
- msgstr ""
1374
-
1375
- #: common/src/Tribe/Plugins_API.php:71
1376
- msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Shopp, WP eCommerce, or Easy Digital Downloads. Use it on your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your events listings."
1377
- msgstr ""
1378
-
1379
- #: common/src/Tribe/Plugins_API.php:105
1380
- msgctxt "Names of required plugins for Community Tickets"
1381
- msgid "Event Tickets Plus and Community Events"
1382
- msgstr ""
1383
-
1384
- #: common/src/Tribe/Plugins_API.php:104
1385
- msgid "Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin"
1386
- msgstr ""
1387
-
1388
- #: common/src/Tribe/Plugins_API.php:48
1389
- msgid "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more."
1390
- msgstr ""
1391
-
1392
- #: common/src/Tribe/Plugins_API.php:84
1393
- msgid "It is awesome that your calendar is <em>THE PLACE</em> to get hooked up with prime choice ways to spend time. You have more events than Jabba the Hutt has rolls. Too bad visitors are hiring a personal assistant to go through all the choices. Ever wish you could just filter the calendar to only show events in walking distance, on a weekend, that are free? BOOM. Now you can. Introducing… the Filter Bar."
1394
- msgstr ""
1395
-
1396
- #: common/src/Tribe/Admin/Help_Page.php:227 common/src/Tribe/Plugins_API.php:80
1397
- msgid "Filter Bar"
1398
- msgstr ""
1399
-
1400
- #: common/src/Tribe/Credits.php:64
1401
- msgid "Rate %1$sEvent Tickets%2$s %3$s"
1402
- msgstr ""
1403
-
1404
- #: common/src/Tribe/Credits.php:55
1405
- msgid "Rate %1$sThe Events Calendar%2$s %3$s"
1406
- msgstr ""
1407
-
1408
- #: src/Tribe/RSVP.php:843
1409
- msgid "You confirmed you will not be attending %s"
1410
- msgstr ""
1411
-
1412
- #: src/views/tickets/email-non-attendance.php:248
1413
- msgid "Thank you for confirming that you will not be attending the above event."
1414
- msgstr ""
1415
-
1416
- #: src/views/tickets/orders-rsvp.php:87
1417
- msgid "Type: "
1418
- msgstr ""
1419
-
1420
- #. Description of the plugin/theme
1421
- msgid "Event Tickets allows your guests to RSVP from any post, page, or event."
1422
- msgstr ""
1423
-
1424
- #: src/views/tickets/rsvp.php:191
1425
- msgid "Login to RSVP"
1426
- msgstr ""
1427
-
1428
- #: src/views/tickets/orders.php:57
1429
- msgid "Update %s"
1430
- msgstr ""
1431
-
1432
- #: src/views/tickets/orders.php:26
1433
- msgid "View %s"
1434
- msgstr ""
1435
-
1436
- #: src/views/tickets/orders-rsvp.php:63
1437
- msgid "Attendee %d"
1438
- msgstr ""
1439
-
1440
- #: src/views/tickets/orders-rsvp.php:44
1441
- msgid " on %s"
1442
- msgstr ""
1443
-
1444
- #: src/views/tickets/orders-rsvp.php:38
1445
- msgid "Reserved by %1$s (%2$s)"
1446
- msgstr ""
1447
-
1448
- #: src/views/tickets/orders-rsvp.php:29
1449
- msgid "My RSVPs for This %s"
1450
- msgstr ""
1451
-
1452
- #: src/views/tickets/orders-link.php:54
1453
- msgid "View your %s"
1454
- msgstr ""
1455
-
1456
- #: src/views/tickets/orders-link.php:53
1457
- msgid "You have %s for this %s."
1458
- msgstr ""
1459
-
1460
- #: src/views/tickets/orders-link.php:34
1461
- msgid "%d Ticket"
1462
- msgid_plural "%d Tickets"
1463
- msgstr[0] ""
1464
- msgstr[1] ""
1465
- msgstr[2] ""
1466
- msgstr[3] ""
1467
- msgstr[4] ""
1468
- msgstr[5] ""
1469
-
1470
- #: src/views/tickets/orders-link.php:30
1471
- msgid "%d RSVP"
1472
- msgid_plural "%d RSVPs"
1473
- msgstr[0] ""
1474
- msgstr[1] ""
1475
- msgstr[2] ""
1476
- msgstr[3] ""
1477
- msgstr[4] ""
1478
- msgstr[5] ""
1479
-
1480
- #: src/views/shortcodes/my-attendance-list.php:32
1481
- msgid "You have not indicated your attendance for any upcoming events."
1482
- msgstr ""
1483
-
1484
- #: src/views/shortcodes/my-attendance-list-logged-out.php:12
1485
- msgid "To see a list of events you are attending you will need to login."
1486
- msgstr ""
1487
-
1488
- #: src/admin-views/tribe-options-tickets.php:101
1489
- msgid "You can require that users log into your site before they are able to RSVP (or buy tickets). Please review your WordPress Membership option (via the General Settings admin screen) before adjusting this setting."
1490
- msgstr ""
1491
-
1492
- #: src/admin-views/tribe-options-tickets.php:96
1493
- msgid "Login requirements"
1494
- msgstr ""
1495
-
1496
- #: src/admin-views/tribe-options-tickets.php:37
1497
- msgid "Require users to log in before they RSVP"
1498
- msgstr ""
1499
-
1500
- #: src/Tribe/Tickets_View.php:731
1501
- msgid "This RSVP is no longer active."
1502
- msgstr ""
1503
-
1504
- #: src/Tribe/Tickets_View.php:665
1505
- msgid "Ticket"
1506
- msgstr ""
1507
-
1508
- #: src/Tribe/Tickets_View.php:553
1509
- msgid "Not Going"
1510
- msgstr ""
1511
-
1512
- #: src/Tribe/Tickets_View.php:552
1513
- msgid "Going"
1514
- msgstr ""
1515
-
1516
- #: src/Tribe/Tickets.php:1464
1517
- msgid "There are no tickets available at this time."
1518
- msgstr ""
1519
-
1520
- #: src/Tribe/Tickets.php:1462
1521
- msgid "Tickets are no longer available."
1522
- msgstr ""
1523
-
1524
- #: src/Tribe/Tickets.php:1460
1525
- msgid "Tickets are not yet available."
1526
- msgstr ""
1527
-
1528
- #: src/Tribe/Main.php:692
1529
- msgid "Buy"
1530
- msgstr ""
1531
-
1532
- #: common/src/Tribe/Cost_Utils.php:114 src/Tribe/JSON_LD/Order.php:106
1533
- msgid "Free"
1534
- msgstr ""
1535
-
1536
- #: src/Tribe/Tickets_View.php:661
1537
- msgid "RSVPs"
1538
- msgstr ""
1539
-
1540
- #: src/Tribe/CSV_Importer/RSVP_Importer.php:237
1541
- msgid "Recurring event tickets are not supported, event %s."
1542
- msgstr ""
1543
-
1544
- #: src/Tribe/CSV_Importer/Column_Names.php:41
1545
- msgid "Ticket Stock"
1546
- msgstr ""
1547
-
1548
- #: src/Tribe/CSV_Importer/Column_Names.php:40
1549
- msgid "Ticket End Sale Time"
1550
- msgstr ""
1551
-
1552
- #: src/Tribe/CSV_Importer/Column_Names.php:39
1553
- msgid "Ticket End Sale Date"
1554
- msgstr ""
1555
-
1556
- #: src/Tribe/CSV_Importer/Column_Names.php:38
1557
- msgid "Ticket Start Sale Time"
1558
- msgstr ""
1559
-
1560
- #: src/Tribe/CSV_Importer/Column_Names.php:37
1561
- msgid "Ticket Start Sale Date"
1562
- msgstr ""
1563
-
1564
- #: src/Tribe/CSV_Importer/Column_Names.php:36
1565
- msgid "Ticket Description"
1566
- msgstr ""
1567
-
1568
- #: src/Tribe/CSV_Importer/Column_Names.php:35
1569
- msgid "Ticket Name"
1570
- msgstr ""
1571
-
1572
- #: src/Tribe/CSV_Importer/Column_Names.php:34
1573
- msgid "Event Name or ID or Slug"
1574
- msgstr ""
1575
-
1576
- #: common/src/admin-views/event-log.php:117
1577
- msgid "Download log"
1578
- msgstr ""
1579
-
1580
- #: common/src/admin-views/event-log.php:100
1581
- msgid "The selected log file is empty or has not been generated yet."
1582
- msgstr ""
1583
-
1584
- #: common/src/admin-views/event-log.php:43
1585
- msgid "Method"
1586
- msgstr ""
1587
-
1588
- #: common/src/admin-views/event-log.php:21
1589
- msgid "Logging level"
1590
- msgstr ""
1591
-
1592
- #: common/src/Tribe/Validate.php:176
1593
- msgid "%s must contain numbers, letters, dashes and undescores only"
1594
- msgstr ""
1595
-
1596
- #: common/src/Tribe/Log.php:376
1597
- msgid "Full debug (all events)"
1598
- msgstr ""
1599
-
1600
- #: common/src/Tribe/Log.php:375
1601
- msgid "Warnings and errors"
1602
- msgstr ""
1603
-
1604
- #: common/src/Tribe/Log.php:374
1605
- msgid "Only errors"
1606
- msgstr ""
1607
-
1608
- #: common/src/Tribe/Log.php:373
1609
- msgid "Disabled"
1610
- msgstr ""
1611
-
1612
- #: common/src/Tribe/Log.php:274
1613
- msgid "Cannot set %s as the current logging engine"
1614
- msgstr ""
1615
-
1616
- #: common/src/Tribe/Log/Null_Logger.php:26
1617
- msgid "Null logger (will log nothing)"
1618
- msgstr ""
1619
-
1620
- #: common/src/Tribe/Log/File_Logger.php:128
1621
- msgid "Default (uses temporary files)"
1622
- msgstr ""
1623
-
1624
- #: common/src/Tribe/Log/Admin.php:148
1625
- msgctxt "log engines"
1626
- msgid "None currently available"
1627
- msgstr ""
1628
-
1629
- #: common/src/Tribe/Log/Admin.php:133
1630
- msgctxt "log selector"
1631
- msgid "None currently available"
1632
- msgstr ""
1633
-
1634
- #: src/views/tickets/rsvp.php:179
1635
- msgid "Don't list me on the public attendee list"
1636
- msgstr ""
1637
-
1638
- #: src/views/tickets/rsvp.php:122
1639
- msgid "Send RSVP confirmation to:"
1640
- msgstr ""
1641
-
1642
- #: src/views/tickets/rsvp.php:50
1643
- msgid "Please fill in the RSVP confirmation name and email fields."
1644
- msgstr ""
1645
-
1646
- #: src/template-tags/tickets.php:421
1647
- msgctxt "ticket stock message (cancelled stock)"
1648
- msgid "%1$d Cancelled"
1649
- msgstr ""
1650
-
1651
- #: src/Tribe/Assets.php:95
1652
- msgid "It looks like you have modified your shared capacity setting but have not saved or updated the post."
1653
- msgstr ""
1654
-
1655
- #: src/Tribe/Attendees_Table.php:410
1656
- msgid "View order"
1657
- msgstr ""
1658
-
1659
- #: common/src/admin-views/tribe-options-help.php:52
1660
- msgid "Recent Template Changes"
1661
- msgstr ""
1662
-
1663
- #: common/src/Tribe/Support/Template_Checker_Report.php:115
1664
- msgid "Information about recent template changes and potentially impacted template overrides is provided below."
1665
- msgstr ""
1666
-
1667
- #: common/src/Tribe/Support/Template_Checker_Report.php:113
1668
- msgid "No notable template changes detected."
1669
- msgstr ""
1670
-
1671
- #: common/src/Tribe/Support/Template_Checker_Report.php:97
1672
- msgid "based on %s version"
1673
- msgstr ""
1674
-
1675
- #: common/src/Tribe/Support/Template_Checker_Report.php:96
1676
- msgid "version data missing from override"
1677
- msgstr ""
1678
-
1679
- #: common/src/Tribe/Support/Template_Checker_Report.php:92
1680
- msgid "Existing theme overrides that may need revision:"
1681
- msgstr ""
1682
-
1683
- #: common/src/Tribe/Support/Template_Checker_Report.php:82
1684
- msgid "Templates introduced or updated with this release (%s):"
1685
- msgstr ""
1686
-
1687
- #: common/src/Tribe/Support/Template_Checker_Report.php:78
1688
- msgid "No notable changes detected"
1689
- msgstr ""
1690
-
1691
- #. Author URI of the plugin/theme
1692
- msgid "http://m.tri.be/28"
1693
- msgstr ""
1694
-
1695
- #. Author of the plugin/theme
1696
- msgid "Modern Tribe, Inc."
1697
- msgstr ""
1698
-
1699
- #: src/views/tickets/rsvp.php:200
1700
- msgid "Confirm RSVP"
1701
- msgstr ""
1702
-
1703
- #: src/views/tickets/rsvp.php:134
1704
- msgid "Full Name"
1705
- msgstr ""
1706
-
1707
- #: src/views/tickets/rsvp.php:96
1708
- msgid "Out of stock!"
1709
- msgstr ""
1710
-
1711
- #: src/views/tickets/rsvp.php:92
1712
- msgid "%1$s out of %2$s available"
1713
- msgstr ""
1714
-
1715
- #: src/Tribe/Tickets_View.php:661
1716
- msgid "RSVP"
1717
- msgstr ""
1718
-
1719
- #: src/views/tickets/email.php:378
1720
- msgid "Purchaser"
1721
- msgstr ""
1722
-
1723
- #: src/views/tickets/email.php:374
1724
- msgid "Ticket Type"
1725
- msgstr ""
1726
-
1727
- #: src/views/tickets/email-non-attendance.php:24
1728
- #: src/views/tickets/email-ticket-type-moved.php:25
1729
- #: src/views/tickets/email-tickets-moved.php:26 src/views/tickets/email.php:26
1730
- msgid "Your tickets"
1731
- msgstr ""
1732
-
1733
- #: src/views/tickets/attendees-email.php:24
1734
- msgid "Attendee List"
1735
- msgstr ""
1736
-
1737
- #: src/admin-views/tribe-options-tickets.php:51
1738
- msgid "Post types that can have tickets"
1739
- msgstr ""
1740
-
1741
- #: src/admin-views/editor/panel/settings.php:14
1742
- #: src/admin-views/tribe-options-tickets.php:47
1743
- msgid "Ticket Settings"
1744
- msgstr ""
1745
-
1746
- #: src/admin-views/editor/panel/settings.php:70
1747
- #: src/admin-views/editor/panel/ticket.php:198
1748
- msgid "Cancel"
1749
- msgstr "إلغاء الأمر"
1750
-
1751
- #: src/admin-views/editor/fieldset/advanced.php:102
1752
- msgid "End sale:"
1753
- msgstr ""
1754
-
1755
- #: src/admin-views/editor/fieldset/advanced.php:70
1756
- msgid "Start sale:"
1757
- msgstr ""
1758
-
1759
- #: src/admin-views/editor/panel/ticket.php:101
1760
- msgid "Sell using:"
1761
- msgstr ""
1762
-
1763
- #: src/admin-views/editor/panel/ticket.php:60
1764
- msgid "Edit ticket"
1765
- msgstr ""
1766
-
1767
- #: src/admin-views/editor/panel/ticket.php:52
1768
- msgid "Add new ticket"
1769
- msgstr ""
1770
-
1771
- #: src/admin-views/editor/panel/settings.php:56
1772
- msgid "Remove"
1773
- msgstr "حذف"
1774
-
1775
- #: src/admin-views/editor/panel/settings.php:40
1776
- msgid "Select an Image"
1777
- msgstr "اختر الصورة"
1778
-
1779
- #: common/src/admin-views/event-log.php:65
1780
- msgid "View"
1781
- msgstr "مشاهدة"
1782
-
1783
- #: src/admin-views/legacy-ticket-fields.php:28
1784
- msgid "(Current sale price - this can be managed via the product editor)"
1785
- msgstr ""
1786
-
1787
- #: src/admin-views/legacy-ticket-fields.php:24
1788
- msgid "Sale Price:"
1789
- msgstr "سعر العرض:"
1790
-
1791
- #: src/admin-views/legacy-ticket-fields.php:19
1792
- msgid "(0 or empty for free tickets)"
1793
- msgstr ""
1794
-
1795
- #: src/admin-views/legacy-ticket-fields.php:15
1796
- msgid "Price:"
1797
- msgstr "السعر:"
1798
-
1799
- #: src/admin-views/attendees-email.php:59
1800
- msgid "Send Email"
1801
- msgstr "ارسال بريد الكتروني"
1802
-
1803
- #: src/admin-views/attendees-email.php:38
1804
- msgid "Email Address:"
1805
- msgstr "البريد الإلكتروني:"
1806
-
1807
- #: src/admin-views/attendees-email.php:36
1808
- msgid "or"
1809
- msgstr "او"
1810
-
1811
- #: src/admin-views/attendees-email.php:6
1812
- msgid "Select..."
1813
- msgstr "حدد .."
1814
-
1815
- #: src/admin-views/attendees-email.php:33
1816
- msgid "Select a User:"
1817
- msgstr ""
1818
-
1819
- #: src/admin-views/attendees-email.php:27
1820
- msgid "Send the attendee list by email"
1821
- msgstr ""
1822
-
1823
- #: src/Tribe/Attendees.php:685
1824
- msgid "Email sent successfully!"
1825
- msgstr ""
1826
-
1827
- #: src/Tribe/Attendees.php:678
1828
- msgid "Error when sending the email"
1829
- msgstr ""
1830
-
1831
- #: src/Tribe/Attendees.php:677
1832
- msgid "Attendee List for: %s"
1833
- msgstr ""
1834
-
1835
- #: src/Tribe/Attendees.php:640 src/Tribe/Attendees.php:656
1836
- msgid "Invalid User ID"
1837
- msgstr "معرف المستخدم (ID) غير صالح"
1838
-
1839
- #: src/Tribe/Attendees.php:634
1840
- msgid "Invalid Email"
1841
- msgstr ""
1842
-
1843
- #: src/Tribe/Attendees.php:622
1844
- msgid "Empty user and email"
1845
- msgstr ""
1846
-
1847
- #: src/Tribe/Attendees.php:599
1848
- msgid "Invalid Event ID"
1849
- msgstr ""
1850
-
1851
- #: src/Tribe/Attendees.php:616
1852
- msgid "Cheatin Huh?"
1853
- msgstr ""
1854
-
1855
- #: src/Tribe/Attendees.php:570
1856
- msgid "attendees"
1857
- msgstr ""
1858
-
1859
- #: src/Tribe/Attendees.php:519
1860
- msgid "Yes"
1861
- msgstr "نعم"
1862
-
1863
- #: src/Tribe/Attendees.php:305
1864
- msgid "You can use Screen Options to select which columns you want to see. The selection works in the table below, in the email, for print and for the CSV export."
1865
- msgstr ""
1866
-
1867
- #: src/Tribe/Attendees.php:305
1868
- msgid "Columns"
1869
- msgstr "الاعمدة"
1870
-
1871
- #: src/Tribe/Attendees.php:270
1872
- msgid "Sending..."
1873
- msgstr ""
1874
-
1875
- #: src/Tribe/Attendees.php:269
1876
- msgid "You need to select a user or type a valid email address"
1877
- msgstr ""
1878
-
1879
- #: src/Tribe/Admin/Columns/Tickets.php:57 src/Tribe/Attendees.php:195
1880
- #: src/Tribe/Tabbed_View/Attendee_Report_Tab.php:22
1881
- #: src/admin-views/attendees.php:21
1882
- msgid "Attendees"
1883
- msgstr ""
1884
-
1885
- #: src/Tribe/Attendees.php:193
1886
- msgid "See who purchased tickets to this event"
1887
- msgstr ""
1888
-
1889
- #: src/Tribe/RSVP.php:1811
1890
- msgid "Post draft updated."
1891
- msgstr "تم تحديث مسودة المقالة."
1892
-
1893
- #: src/Tribe/RSVP.php:1810
1894
- msgid "Post scheduled."
1895
- msgstr ""
1896
-
1897
- #: src/Tribe/RSVP.php:1809
1898
- msgid "Post submitted."
1899
- msgstr ""
1900
-
1901
- #: src/Tribe/RSVP.php:1806
1902
- msgid "Post published. %1$s"
1903
- msgstr ""
1904
-
1905
- #: src/Tribe/RSVP.php:1802
1906
- msgid "Post updated. %1$s"
1907
- msgstr ""
1908
-
1909
- #: src/Tribe/RSVP.php:1795
1910
- msgid "Return to the %1$sAttendees Report%2$s."
1911
- msgstr ""
1912
-
1913
- #: src/Tribe/RSVP.php:1491
1914
- msgid "(deleted)"
1915
- msgstr ""
1916
-
1917
- #: src/Tribe/RSVP.php:1186
1918
- msgid "In order to RSVP, you must enter your name and a valid email address."
1919
- msgstr ""
1920
-
1921
- #: src/Tribe/RSVP.php:1181
1922
- msgid "You can't RSVP more than the total remaining tickets."
1923
- msgstr ""
1924
-
1925
- #: src/Tribe/RSVP.php:1175
1926
- msgid "Your RSVP has been received! Check your email for your RSVP confirmation."
1927
- msgstr ""
1928
-
1929
- #: src/Tribe/RSVP.php:755
1930
- msgid "Your tickets from %s"
1931
- msgstr ""
1932
-
1933
- #: src/Tribe/RSVP.php:240
1934
- msgctxt "Attendee number"
1935
- msgid "Attendee %1$s"
1936
- msgstr ""
1937
-
1938
- #: src/Tribe/Assets.php:31
1939
- msgid "Set as ticket header"
1940
- msgstr ""
1941
-
1942
- #: src/Tribe/Assets.php:30
1943
- msgid "Ticket header image"
1944
- msgstr ""
1945
-
1946
- #: src/Tribe/Main.php:456
1947
- msgid "If you have a valid license for one of our paid plugins, you can %s in our premium support forums. Our support team monitors the forums and will respond to your thread within 24-48 hours (during the week)."
1948
- msgstr ""
1949
-
1950
- #: src/Tribe/Main.php:451
1951
- msgid "Already have Events Tickets Plus? You can %s in our premium support forums. Our support team monitors the forums and will respond to your thread within 24-48 hours (during the week)."
1952
- msgstr ""
1953
-
1954
- #: src/Tribe/Main.php:450 src/Tribe/Main.php:455
1955
- msgid "post a thread"
1956
- msgstr ""
1957
-
1958
- #: src/Tribe/Main.php:448
1959
- msgid "Looking for more immediate support? We offer %1$s with the purchase of any of our premium plugins (like %2$s). Pick up a license and you can post there directly and expect a response within 24-48 hours during weekdays."
1960
- msgstr ""
1961
-
1962
- #: src/Tribe/Main.php:447
1963
- msgid "Events Tickets Plus"
1964
- msgstr ""
1965
-
1966
- #: src/Tribe/Main.php:446
1967
- msgid "premium support on our website"
1968
- msgstr ""
1969
-
1970
- #: src/Tribe/Main.php:444
1971
- msgid "If you have tried the above steps and are still having trouble, you can post a new thread to our %s. Our support staff monitors these forums once a week and would be happy to assist you there."
1972
- msgstr ""
1973
-
1974
- #: src/Tribe/Main.php:443
1975
- msgid "open-source forum on WordPress.org"
1976
- msgstr ""
1977
-
1978
- #: src/Tribe/Main.php:426
1979
- msgid "We are committed to helping you sell tickets for your event. Check out our handy %s to get started."
1980
- msgstr ""
1981
-
1982
- #: src/Tribe/Main.php:424 src/admin-views/admin-welcome-message.php:23
1983
- msgid "New User Primer"
1984
- msgstr ""
1985
-
1986
- #: src/Tribe/Main.php:407
1987
- msgid "Customizing Event Tickets"
1988
- msgstr ""
1989
-
1990
- #: src/Tribe/Main.php:406
1991
- msgid "Troubleshooting common problems"
1992
- msgstr ""
1993
-
1994
- #: src/Tribe/Main.php:405
1995
- msgid "Features overview"
1996
- msgstr ""
1997
-
1998
- #: src/Tribe/Main.php:404
1999
- msgid "Settings overview"
2000
- msgstr ""
2001
-
2002
- #: src/Tribe/Main.php:402
2003
- msgid "Support for Event Tickets"
2004
- msgstr ""
2005
-
2006
- #: src/Tribe/Main.php:243
2007
- msgid "When The Events Calendar and Event Tickets are both activated, The Events Calendar must be running version %1$s or greater. Please %2$supdate now.%3$s"
2008
- msgstr ""
2009
-
2010
- #: src/Tribe/Attendees_Table.php:553
2011
- msgid "Delete"
2012
- msgstr "محو"
2013
-
2014
- #: src/Tribe/Attendees_Table.php:526
2015
- msgid "Filter by purchaser name, ticket #, order # or security code"
2016
- msgstr ""
2017
-
2018
- #: src/Tribe/Attendees_Table.php:520
2019
- msgid "Export"
2020
- msgstr "تصدير"
2021
-
2022
- #: src/Tribe/Attendees_Table.php:519
2023
- #: src/admin-views/admin-welcome-message.php:62 src/views/tickets/rsvp.php:142
2024
- msgid "Email"
2025
- msgstr "البريد الالكترونى"
2026
-
2027
- #: src/Tribe/Attendees_Table.php:518
2028
- msgid "Print"
2029
- msgstr "اطبع"
2030
-
2031
- #: src/Tribe/Attendees_Table.php:552
2032
- msgid "Undo Check in"
2033
- msgstr ""
2034
-
2035
- #: src/Tribe/Attendees_Table.php:551
2036
- msgid "Check in"
2037
- msgstr ""
2038
-
2039
- #: src/views/tickets/email.php:382
2040
- msgid "Security Code"
2041
- msgstr "رمز الأمان"
2042
-
2043
- #: src/views/tickets/email.php:370
2044
- msgid "Ticket #"
2045
- msgstr ""
2046
-
2047
- #: src/admin-views/editor/list-row.php:33
2048
- msgid "Ticket Type:"
2049
- msgstr ""
2050
-
2051
- #: src/Tribe/Admin/Ticket_Settings.php:22 src/Tribe/Metabox.php:53
2052
- #: src/Tribe/Tickets_View.php:665 src/admin-views/editor/list-table.php:30
2053
- msgid "Tickets"
2054
- msgstr ""
2055
-
2056
- #: common/src/admin-views/tribe-options-network.php:27
2057
- msgid "Hide the following settings tabs on every site:"
2058
- msgstr ""
2059
-
2060
- #: common/src/admin-views/tribe-options-network.php:19
2061
- msgid "This is where all of the global network settings for Modern Tribe's The Events Calendar can be modified."
2062
- msgstr ""
2063
-
2064
- #: common/src/admin-views/tribe-options-network.php:15
2065
- msgid "Network Settings"
2066
- msgstr "إعدادات الشبكة"
2067
-
2068
- #: common/src/admin-views/tribe-options-licenses.php:47
2069
- msgid "Only license fields for %1$snetwork activated%2$s plugins will be listed on this screen. "
2070
- msgstr ""
2071
-
2072
- #: common/src/admin-views/tribe-options-licenses.php:38
2073
- msgid "%1$s Using our plugins in a multisite network? %2$s Please note that your license key will be applied to the entire network, not just this site."
2074
- msgstr ""
2075
-
2076
- #: common/src/admin-views/tribe-options-help.php:80
2077
- msgid "More..."
2078
- msgstr "المزيد..."
2079
-
2080
- #: common/src/admin-views/tribe-options-help.php:74
2081
- msgid "News and Tutorials"
2082
- msgstr ""
2083
-
2084
- #: common/src/admin-views/tribe-options-help.php:41
2085
- msgid "System Information"
2086
- msgstr ""
2087
-
2088
- #: common/src/admin-views/tribe-options-help.php:38
2089
- msgid "Read more about our support policy"
2090
- msgstr ""
2091
-
2092
- #: common/src/admin-views/tribe-options-help.php:37
2093
- msgid "Please note that all hands-on support is provided via the forums. You can email or tweet at us… ​but we will probably point you back to the forums 😄"
2094
- msgstr ""
2095
-
2096
- #: common/src/admin-views/tribe-options-help.php:33
2097
- msgid "Search our support forum"
2098
- msgstr ""
2099
-
2100
- #: common/src/admin-views/tribe-options-help.php:33
2101
- msgid "%s. There are very few issues we haven’t seen and it’s likely another user has already asked your question and gotten an answer from our support staff. While posting to the forums is open only to paid customers, they are open for anyone to search and review."
2102
- msgstr ""
2103
-
2104
- #: common/src/admin-views/tribe-options-help.php:32
2105
- msgid "Test for a theme or plugin conflict"
2106
- msgstr ""
2107
-
2108
- #: common/src/admin-views/tribe-options-help.php:32
2109
- msgid "%s. Testing for an existing conflict is the best start for in-depth troubleshooting. We will often ask you to follow these steps when opening a new thread, so doing this ahead of time will be super helpful."
2110
- msgstr ""
2111
-
2112
- #: common/src/admin-views/tribe-options-help.php:31
2113
- msgid "Check our Knowledgebase"
2114
- msgstr ""
2115
-
2116
- #: common/src/admin-views/tribe-options-help.php:31
2117
- msgid "%s. All of the common (and not-so-common) answers to questions we see are here. It’s often the fastest path to finding an answer!"
2118
- msgstr ""
2119
-
2120
- #: common/src/admin-views/tribe-options-help.php:27
2121
- msgid "While the resources above help solve a majority of the issues we see, there are times you might be looking for extra support. If you need assistance using our plugins and would like us to take a look, please follow these steps:"
2122
- msgstr ""
2123
-
2124
- #: common/src/admin-views/tribe-options-help.php:26
2125
- msgid "Getting More Help"
2126
- msgstr ""
2127
-
2128
- #: common/src/admin-views/tribe-options-help.php:21
2129
- msgid "list of available functions"
2130
- msgstr ""
2131
-
2132
- #: common/src/admin-views/tribe-options-help.php:15
2133
- msgid "Knowledgebase"
2134
- msgstr ""
2135
-
2136
- #: common/src/admin-views/tribe-options-help.php:15
2137
- msgid "Our website’s %s is a great place to find tips and tricks for using and customizing our plugins."
2138
- msgstr ""
2139
-
2140
- #: common/src/admin-views/tribe-options-help.php:14
2141
- msgid "Getting Support"
2142
- msgstr ""
2143
-
2144
- #: common/src/admin-views/tribe-options-help.php:11
2145
- msgid "Thanks you for using %s! All of us at Modern Tribe sincerely appreciate your support and we’re excited to see you using our plugins."
2146
- msgstr ""
2147
-
2148
- #: common/src/admin-views/tribe-options-general.php:64
2149
- msgid "Debug Bar Plugin"
2150
- msgstr ""
2151
-
2152
- #: common/src/admin-views/tribe-options-general.php:64
2153
- msgid "Enable this option to log debug information. By default this will log to your server PHP error log. If you'd like to see the log messages in your browser, then we recommend that you install the %s and look for the \"Tribe\" tab in the debug output."
2154
- msgstr ""
2155
-
2156
- #: common/src/admin-views/tribe-options-general.php:58
2157
- msgid "Debug mode"
2158
- msgstr "وضع التصحيح"
2159
-
2160
- #: common/src/admin-views/tribe-options-general.php:40
2161
- msgid "Show The Events Calendar link"
2162
- msgstr ""
2163
-
2164
- #: common/src/admin-views/tribe-options-general.php:35
2165
- msgid "Are you thinking \"Wow, this plugin is amazing! I should say thanks to Modern Tribe for all their hard work.\" The greatest thanks we could ask for is recognition. Add a small text only link at the bottom of your calendar pointing to The Events Calendar project."
2166
- msgstr ""
2167
-
2168
- #: common/src/admin-views/tribe-options-general.php:30
2169
- #: common/src/admin-views/tribe-options-general.php:35
2170
- msgid "See an example of the link"
2171
- msgstr ""
2172
-
2173
- #: common/src/admin-views/tribe-options-general.php:30
2174
- msgid "Are you thinking \"Wow, this plugin is amazing! I should say thanks to Modern Tribe for all their hard work.\" The greatest thanks we could ask for is recognition. Add a small text-only link at the bottom of your calendar pointing to The Events Calendar project."
2175
- msgstr ""
2176
-
2177
- #: common/src/admin-views/tribe-options-general.php:25
2178
- msgid "We hope our plugin is helping you out."
2179
- msgstr ""
2180
-
2181
- #: common/src/admin-views/tribe-options-general.php:20
2182
- msgid "Check out the available add-ons"
2183
- msgstr ""
2184
-
2185
- #: common/src/admin-views/tribe-options-general.php:20
2186
- msgid "Looking for additional functionality including recurring events, custom meta, community events, ticket sales and more?"
2187
- msgstr ""
2188
-
2189
- #: common/src/admin-views/tribe-options-general.php:15
2190
- msgid "Optimize your site's event listings with %1$sThe Events Calendar%2$s, our free calendar plugin. Looking for additional functionality including recurring events, user-submission, advanced ticket sales and more? Check out our %3$spremium add-ons%4$s."
2191
- msgstr ""
2192
-
2193
- #: common/src/admin-views/tribe-options-general.php:10
2194
- msgid "Thank you for using Event Tickets! All of us at Modern Tribe sincerely appreciate your support and we're excited to see you using our plugins. Check out our handy %1$sNew User Primer%2$s to get started."
2195
- msgstr ""
2196
-
2197
- #: common/src/admin-views/tribe-options-display.php:37
2198
- msgid "Select the date format to use in datepickers"
2199
- msgstr ""
2200
-
2201
- #: common/src/admin-views/tribe-options-display.php:36
2202
- msgid "Datepicker Date Format"
2203
- msgstr ""
2204
-
2205
- #: common/src/admin-views/tribe-options-display.php:22
2206
- msgid "Date Format Settings"
2207
- msgstr ""
2208
-
2209
- #: common/src/Tribe/Languages/Locations.php:367
2210
- msgid "Wyoming"
2211
- msgstr "Wyoming"
2212
-
2213
- #: common/src/Tribe/Languages/Locations.php:366
2214
- msgid "Wisconsin"
2215
- msgstr "Wisconsin"
2216
-
2217
- #: common/src/Tribe/Languages/Locations.php:365
2218
- msgid "West Virginia"
2219
- msgstr "West Virginia"
2220
-
2221
- #: common/src/Tribe/Languages/Locations.php:364
2222
- msgid "Washington"
2223
- msgstr "Washington"
2224
-
2225
- #: common/src/Tribe/Languages/Locations.php:363
2226
- msgid "Virginia"
2227
- msgstr "Virginia"
2228
-
2229
- #: common/src/Tribe/Languages/Locations.php:362
2230
- msgid "Vermont"
2231
- msgstr "Vermont"
2232
-
2233
- #: common/src/Tribe/Languages/Locations.php:361
2234
- msgid "Utah"
2235
- msgstr "Utah"
2236
-
2237
- #: common/src/Tribe/Languages/Locations.php:360
2238
- msgid "Texas"
2239
- msgstr "Texas"
2240
-
2241
- #: common/src/Tribe/Languages/Locations.php:359
2242
- msgid "Tennessee"
2243
- msgstr "Tennessee"
2244
-
2245
- #: common/src/Tribe/Languages/Locations.php:358
2246
- msgid "South Dakota"
2247
- msgstr "South Dakota"
2248
-
2249
- #: common/src/Tribe/Languages/Locations.php:357
2250
- msgid "South Carolina"
2251
- msgstr "South Carolina"
2252
-
2253
- #: common/src/Tribe/Languages/Locations.php:356
2254
- msgid "Rhode Island"
2255
- msgstr "Rhode Island"
2256
-
2257
- #: common/src/Tribe/Languages/Locations.php:355
2258
- msgid "Pennsylvania"
2259
- msgstr "Pennsylvania"
2260
-
2261
- #: common/src/Tribe/Languages/Locations.php:354
2262
- msgid "Oregon"
2263
- msgstr "Oregon"
2264
-
2265
- #: common/src/Tribe/Languages/Locations.php:353
2266
- msgid "Oklahoma"
2267
- msgstr "Oklahoma"
2268
-
2269
- #: common/src/Tribe/Languages/Locations.php:352
2270
- msgid "Ohio"
2271
- msgstr "Ohio"
2272
-
2273
- #: common/src/Tribe/Languages/Locations.php:351
2274
- msgid "North Dakota"
2275
- msgstr "North Dakota"
2276
-
2277
- #: common/src/Tribe/Languages/Locations.php:350
2278
- msgid "North Carolina"
2279
- msgstr "North Carolina"
2280
-
2281
- #: common/src/Tribe/Languages/Locations.php:349
2282
- msgid "New York"
2283
- msgstr "New York"
2284
-
2285
- #: common/src/Tribe/Languages/Locations.php:348
2286
- msgid "New Mexico"
2287
- msgstr "New Mexico"
2288
-
2289
- #: common/src/Tribe/Languages/Locations.php:347
2290
- msgid "New Jersey"
2291
- msgstr "New Jersey"
2292
-
2293
- #: common/src/Tribe/Languages/Locations.php:346
2294
- msgid "New Hampshire"
2295
- msgstr "New Hampshire"
2296
-
2297
- #: common/src/Tribe/Languages/Locations.php:345
2298
- msgid "Nevada"
2299
- msgstr "Nevada"
2300
-
2301
- #: common/src/Tribe/Languages/Locations.php:344
2302
- msgid "Nebraska"
2303
- msgstr "Nebraska"
2304
-
2305
- #: common/src/Tribe/Languages/Locations.php:343
2306
- msgid "Montana"
2307
- msgstr "مونتانا"
2308
-
2309
- #: common/src/Tribe/Languages/Locations.php:342
2310
- msgid "Missouri"
2311
- msgstr "Missouri"
2312
-
2313
- #: common/src/Tribe/Languages/Locations.php:341
2314
- msgid "Mississippi"
2315
- msgstr "Mississippi"
2316
-
2317
- #: common/src/Tribe/Languages/Locations.php:340
2318
- msgid "Minnesota"
2319
- msgstr "Minnesota"
2320
-
2321
- #: common/src/Tribe/Languages/Locations.php:339
2322
- msgid "Michigan"
2323
- msgstr "Michigan"
2324
-
2325
- #: common/src/Tribe/Languages/Locations.php:338
2326
- msgid "Massachusetts"
2327
- msgstr "Massachusetts"
2328
-
2329
- #: common/src/Tribe/Languages/Locations.php:337
2330
- msgid "Maryland"
2331
- msgstr "Maryland"
2332
-
2333
- #: common/src/Tribe/Languages/Locations.php:336
2334
- msgid "Maine"
2335
- msgstr "Maine"
2336
-
2337
- #: common/src/Tribe/Languages/Locations.php:335
2338
- msgid "Louisiana"
2339
- msgstr "Louisiana"
2340
-
2341
- #: common/src/Tribe/Languages/Locations.php:334
2342
- msgid "Kentucky"
2343
- msgstr "Kentucky"
2344
-
2345
- #: common/src/Tribe/Languages/Locations.php:333
2346
- msgid "Kansas"
2347
- msgstr "Kansas"
2348
-
2349
- #: common/src/Tribe/Languages/Locations.php:332
2350
- msgid "Iowa"
2351
- msgstr "Iowa"
2352
-
2353
- #: common/src/Tribe/Languages/Locations.php:331
2354
- msgid "Indiana"
2355
- msgstr "Indiana"
2356
-
2357
- #: common/src/Tribe/Languages/Locations.php:330
2358
- msgid "Illinois"
2359
- msgstr "Illinois"
2360
-
2361
- #: common/src/Tribe/Languages/Locations.php:329
2362
- msgid "Idaho"
2363
- msgstr "Idaho"
2364
-
2365
- #: common/src/Tribe/Languages/Locations.php:328
2366
- msgid "Hawaii"
2367
- msgstr "Hawaii"
2368
-
2369
- #: common/src/Tribe/Languages/Locations.php:326
2370
- msgid "Florida"
2371
- msgstr "Florida"
2372
-
2373
- #: common/src/Tribe/Languages/Locations.php:325
2374
- msgid "District of Columbia"
2375
- msgstr ""
2376
-
2377
- #: common/src/Tribe/Languages/Locations.php:324
2378
- msgid "Delaware"
2379
- msgstr "Delaware"
2380
-
2381
- #: common/src/Tribe/Languages/Locations.php:323
2382
- msgid "Connecticut"
2383
- msgstr "Connecticut"
2384
-
2385
- #: common/src/Tribe/Languages/Locations.php:322
2386
- msgid "Colorado"
2387
- msgstr "Colorado"
2388
-
2389
- #: common/src/Tribe/Languages/Locations.php:321
2390
- msgid "California"
2391
- msgstr "كاليفورنيا"
2392
-
2393
- #: common/src/Tribe/Languages/Locations.php:320
2394
- msgid "Arkansas"
2395
- msgstr "Arkansas"
2396
-
2397
- #: common/src/Tribe/Languages/Locations.php:319
2398
- msgid "Arizona"
2399
- msgstr "Arizona"
2400
-
2401
- #: common/src/Tribe/Languages/Locations.php:318
2402
- msgid "Alaska"
2403
- msgstr "Alaska"
2404
-
2405
- #: common/src/Tribe/Languages/Locations.php:317
2406
- msgid "Alabama"
2407
- msgstr "Alabama"
2408
-
2409
- #: common/src/Tribe/Languages/Locations.php:297
2410
- msgid "Zimbabwe"
2411
- msgstr "زيمبابوي"
2412
-
2413
- #: common/src/Tribe/Languages/Locations.php:296
2414
- msgid "Zambia"
2415
- msgstr "زامبيا"
2416
-
2417
- #: common/src/Tribe/Languages/Locations.php:295
2418
- msgid "Yemen"
2419
- msgstr "اليمن"
2420
-
2421
- #: common/src/Tribe/Languages/Locations.php:294
2422
- msgid "Western Sahara"
2423
- msgstr "الصحراء الغربية"
2424
-
2425
- #: common/src/Tribe/Languages/Locations.php:293
2426
- msgid "Wallis and Futuna Islands"
2427
- msgstr ""
2428
-
2429
- #: common/src/Tribe/Languages/Locations.php:292
2430
- msgid "Virgin Islands (U.S.)"
2431
- msgstr ""
2432
-
2433
- #: common/src/Tribe/Languages/Locations.php:291
2434
- msgid "Virgin Islands (British)"
2435
- msgstr ""
2436
-
2437
- #: common/src/Tribe/Languages/Locations.php:290
2438
- msgid "Viet Nam"
2439
- msgstr ""
2440
-
2441
- #: common/src/Tribe/Languages/Locations.php:289
2442
- msgid "Venezuela"
2443
- msgstr "فنزويلا"
2444
-
2445
- #: common/src/Tribe/Languages/Locations.php:288
2446
- msgid "Vanuatu"
2447
- msgstr "فانواتو"
2448
-
2449
- #: common/src/Tribe/Languages/Locations.php:287
2450
- msgid "Uzbekistan"
2451
- msgstr "أوزبكستان"
2452
-
2453
- #: common/src/Tribe/Languages/Locations.php:286
2454
- msgid "Uruguay"
2455
- msgstr "أورجواي"
2456
-
2457
- #: common/src/Tribe/Languages/Locations.php:285
2458
- msgid "United States Minor Outlying Islands"
2459
- msgstr ""
2460
-
2461
- #: common/src/Tribe/Languages/Locations.php:284
2462
- msgid "United Kingdom"
2463
- msgstr "المملكة المتحدة"
2464
-
2465
- #: common/src/Tribe/Languages/Locations.php:283
2466
- msgid "United Arab Emirates"
2467
- msgstr "الامارات العربية المتحدة"
2468
-
2469
- #: common/src/Tribe/Languages/Locations.php:282
2470
- msgid "Ukraine"
2471
- msgstr "أوكرانيا"
2472
-
2473
- #: common/src/Tribe/Languages/Locations.php:281
2474
- msgid "Uganda"
2475
- msgstr "أوغندا"
2476
-
2477
- #: common/src/Tribe/Languages/Locations.php:280
2478
- msgid "Tuvalu"
2479
- msgstr "توفالو"
2480
-
2481
- #: common/src/Tribe/Languages/Locations.php:279
2482
- msgid "Turks and Caicos Islands"
2483
- msgstr ""
2484
-
2485
- #: common/src/Tribe/Languages/Locations.php:278
2486
- msgid "Turkmenistan"
2487
- msgstr "تركمانستان"
2488
-
2489
- #: common/src/Tribe/Languages/Locations.php:277
2490
- msgid "Turkey"
2491
- msgstr "تركيا"
2492
-
2493
- #: common/src/Tribe/Languages/Locations.php:276
2494
- msgid "Tunisia"
2495
- msgstr "تونس"
2496
-
2497
- #: common/src/Tribe/Languages/Locations.php:275
2498
- msgid "Trinidad and Tobago"
2499
- msgstr ""
2500
-
2501
- #: common/src/Tribe/Languages/Locations.php:274
2502
- msgid "Tonga"
2503
- msgstr "تونجا"
2504
-
2505
- #: common/src/Tribe/Languages/Locations.php:273
2506
- msgid "Tokelau"
2507
- msgstr "توكيلاو"
2508
-
2509
- #: common/src/Tribe/Languages/Locations.php:272
2510
- msgid "Togo"
2511
- msgstr "توجو"
2512
-
2513
- #: common/src/Tribe/Languages/Locations.php:271
2514
- msgid "Thailand"
2515
- msgstr "تايلند"
2516
-
2517
- #: common/src/Tribe/Languages/Locations.php:270
2518
- msgid "Tanzania, United Republic of"
2519
- msgstr ""
2520
-
2521
- #: common/src/Tribe/Languages/Locations.php:269
2522
- msgid "Tajikistan"
2523
- msgstr "طاجكستان"
2524
-
2525
- #: common/src/Tribe/Languages/Locations.php:268
2526
- msgid "Taiwan"
2527
- msgstr "تايوان"
2528
-
2529
- #: common/src/Tribe/Languages/Locations.php:267
2530
- msgid "Syrian Arab Republic"
2531
- msgstr ""
2532
-
2533
- #: common/src/Tribe/Languages/Locations.php:266
2534
- msgid "Switzerland"
2535
- msgstr "سويسرا"
2536
-
2537
- #: common/src/Tribe/Languages/Locations.php:265
2538
- msgid "Sweden"
2539
- msgstr "السويد"
2540
-
2541
- #: common/src/Tribe/Languages/Locations.php:264
2542
- msgid "Swaziland"
2543
- msgstr "سوازيلاند"
2544
-
2545
- #: common/src/Tribe/Languages/Locations.php:263
2546
- msgid "Svalbard and Jan Mayen Islands"
2547
- msgstr ""
2548
-
2549
- #: common/src/Tribe/Languages/Locations.php:262
2550
- msgid "Suriname"
2551
- msgstr "سورينام"
2552
-
2553
- #: common/src/Tribe/Languages/Locations.php:261
2554
- msgid "Sudan"
2555
- msgstr "السودان"
2556
-
2557
- #: common/src/Tribe/Languages/Locations.php:241
2558
- msgid "Saint Pierre and Miquelon"
2559
- msgstr ""
2560
-
2561
- #: common/src/Tribe/Languages/Locations.php:260
2562
- msgid "Sri Lanka"
2563
- msgstr "سريلانكا"
2564
-
2565
- #: common/src/Tribe/Languages/Locations.php:259
2566
- msgid "Spain"
2567
- msgstr "أسبانيا"
2568
-
2569
- #: common/src/Tribe/Languages/Locations.php:258
2570
- msgid "South Georgia, South Sandwich Islands"
2571
- msgstr ""
2572
-
2573
- #: common/src/Tribe/Languages/Locations.php:257
2574
- msgid "South Africa"
2575
- msgstr "جمهورية جنوب افريقيا"
2576
-
2577
- #: common/src/Tribe/Languages/Locations.php:256
2578
- msgid "Somalia"
2579
- msgstr "الصومال"
2580
-
2581
- #: common/src/Tribe/Languages/Locations.php:255
2582
- msgid "Solomon Islands"
2583
- msgstr "جزر سليمان"
2584
-
2585
- #: common/src/Tribe/Languages/Locations.php:254
2586
- msgid "Slovenia"
2587
- msgstr "سلوفينيا"
2588
-
2589
- #: common/src/Tribe/Languages/Locations.php:253
2590
- msgid "Slovakia (Slovak Republic)"
2591
- msgstr ""
2592
-
2593
- #: common/src/Tribe/Languages/Locations.php:251
2594
- msgid "Singapore"
2595
- msgstr "سنغافورة"
2596
-
2597
- #: common/src/Tribe/Languages/Locations.php:250
2598
- msgid "Sierra Leone"
2599
- msgstr "سيراليون"
2600
-
2601
- #: common/src/Tribe/Languages/Locations.php:249
2602
- msgid "Seychelles"
2603
- msgstr "سيشل"
2604
-
2605
- #: common/src/Tribe/Languages/Locations.php:248
2606
- msgid "Serbia"
2607
- msgstr "صربيا"
2608
-
2609
- #: common/src/Tribe/Languages/Locations.php:247
2610
- msgid "Senegal"
2611
- msgstr "السنغال"
2612
-
2613
- #: common/src/Tribe/Languages/Locations.php:246
2614
- msgid "Saudi Arabia"
2615
- msgstr "المملكة العربية السعودية"
2616
-
2617
- #: common/src/Tribe/Languages/Locations.php:244
2618
- msgid "San Marino"
2619
- msgstr "سان مارينو"
2620
-
2621
- #: common/src/Tribe/Languages/Locations.php:243
2622
- msgid "Samoa"
2623
- msgstr "ساموا"
2624
-
2625
- #: common/src/Tribe/Languages/Locations.php:242
2626
- msgid "Saint Vincent and The Grenadines"
2627
- msgstr ""
2628
-
2629
- #: common/src/Tribe/Languages/Locations.php:240
2630
- msgid "Saint Lucia"
2631
- msgstr "سانت لوسيا"
2632
-
2633
- #: common/src/Tribe/Languages/Locations.php:239
2634
- msgid "Saint Kitts and Nevis"
2635
- msgstr ""
2636
-
2637
- #: common/src/Tribe/Languages/Locations.php:236
2638
- msgid "Rwanda"
2639
- msgstr "رواندا"
2640
-
2641
- #: common/src/Tribe/Languages/Locations.php:235
2642
- msgid "Russian Federation"
2643
- msgstr ""
2644
-
2645
- #: common/src/Tribe/Languages/Locations.php:234
2646
- msgid "Romania"
2647
- msgstr "رومانيا"
2648
-
2649
- #: common/src/Tribe/Languages/Locations.php:233
2650
- msgid "Reunion"
2651
- msgstr "ريونيون"
2652
-
2653
- #: common/src/Tribe/Languages/Locations.php:232
2654
- msgid "Qatar"
2655
- msgstr "قطر"
2656
-
2657
- #: common/src/Tribe/Languages/Locations.php:231
2658
- msgid "Puerto Rico"
2659
- msgstr "Puerto Rico"
2660
-
2661
- #: common/src/Tribe/Languages/Locations.php:230
2662
- msgid "Portugal"
2663
- msgstr "البرتغال"
2664
-
2665
- #: common/src/Tribe/Languages/Locations.php:229
2666
- msgid "Poland"
2667
- msgstr "بولندا"
2668
-
2669
- #: common/src/Tribe/Languages/Locations.php:228
2670
- msgid "Pitcairn"
2671
- msgstr "بيتكيرن"
2672
-
2673
- #: common/src/Tribe/Languages/Locations.php:227
2674
- msgid "Philippines"
2675
- msgstr "الفيلبين"
2676
-
2677
- #: common/src/Tribe/Languages/Locations.php:226
2678
- msgid "Peru"
2679
- msgstr "بيرو"
2680
-
2681
- #: common/src/Tribe/Languages/Locations.php:225
2682
- msgid "Paraguay"
2683
- msgstr "باراجواي"
2684
-
2685
- #: common/src/Tribe/Languages/Locations.php:224
2686
- msgid "Papua New Guinea"
2687
- msgstr "بابوا غينيا الجديدة"
2688
-
2689
- #: common/src/Tribe/Languages/Locations.php:223
2690
- msgid "Panama"
2691
- msgstr "بنما"
2692
-
2693
- #: common/src/Tribe/Languages/Locations.php:222
2694
- msgid "Palau"
2695
- msgstr "بالاو"
2696
-
2697
- #: common/src/Tribe/Languages/Locations.php:221
2698
- msgid "Pakistan"
2699
- msgstr "باكستان"
2700
-
2701
- #: common/src/Tribe/Languages/Locations.php:220
2702
- msgid "Oman"
2703
- msgstr "عمان"
2704
-
2705
- #: common/src/Tribe/Languages/Locations.php:219
2706
- msgid "Norway"
2707
- msgstr "النرويج"
2708
-
2709
- #: common/src/Tribe/Languages/Locations.php:218
2710
- msgid "Northern Mariana Islands"
2711
- msgstr "Northern Mariana Islands"
2712
-
2713
- #: common/src/Tribe/Languages/Locations.php:217
2714
- msgid "Norfolk Island"
2715
- msgstr "جزيرة نورفولك"
2716
-
2717
- #: common/src/Tribe/Languages/Locations.php:216
2718
- msgid "Niue"
2719
- msgstr "نيوي"
2720
-
2721
- #: common/src/Tribe/Languages/Locations.php:215
2722
- msgid "Nigeria"
2723
- msgstr "نيجيريا"
2724
-
2725
- #: common/src/Tribe/Languages/Locations.php:214
2726
- msgid "Niger"
2727
- msgstr "النيجر"
2728
-
2729
- #: common/src/Tribe/Languages/Locations.php:213
2730
- msgid "Nicaragua"
2731
- msgstr "نيكاراجوا"
2732
-
2733
- #: common/src/Tribe/Languages/Locations.php:212
2734
- msgid "New Zealand"
2735
- msgstr "نيوزيلاندا"
2736
-
2737
- #: common/src/Tribe/Languages/Locations.php:211
2738
- msgid "New Caledonia"
2739
- msgstr "كاليدونيا الجديدة"
2740
-
2741
- #: common/src/Tribe/Languages/Locations.php:210
2742
- msgid "Netherlands"
2743
- msgstr "هولندا"
2744
-
2745
- #: common/src/Tribe/Languages/Locations.php:209
2746
- msgid "Nepal"
2747
- msgstr "نيبال"
2748
-
2749
- #: common/src/Tribe/Languages/Locations.php:208
2750
- msgid "Nauru"
2751
- msgstr "ناورو"
2752
-
2753
- #: common/src/Tribe/Languages/Locations.php:207
2754
- msgid "Namibia"
2755
- msgstr "ناميبيا"
2756
-
2757
- #: common/src/Tribe/Languages/Locations.php:206
2758
- msgid "Myanmar"
2759
- msgstr "ميانمار"
2760
-
2761
- #: common/src/Tribe/Languages/Locations.php:205
2762
- msgid "Mozambique"
2763
- msgstr "موزمبيق"
2764
-
2765
- #: common/src/Tribe/Languages/Locations.php:204
2766
- msgid "Morocco"
2767
- msgstr "المغرب"
2768
-
2769
- #: common/src/Tribe/Languages/Locations.php:203
2770
- msgid "Montserrat"
2771
- msgstr "مونتسيرات"
2772
-
2773
- #: common/src/Tribe/Languages/Locations.php:202
2774
- msgid "Montenegro"
2775
- msgstr "الجبل الأسود"
2776
-
2777
- #: common/src/Tribe/Languages/Locations.php:201
2778
- msgid "Mongolia"
2779
- msgstr "منغوليا"
2780
-
2781
- #: common/src/Tribe/Languages/Locations.php:200
2782
- msgid "Monaco"
2783
- msgstr "موناكو"
2784
-
2785
- #: common/src/Tribe/Languages/Locations.php:199
2786
- msgid "Moldova, Republic of"
2787
- msgstr ""
2788
-
2789
- #: common/src/Tribe/Languages/Locations.php:198
2790
- msgid "Micronesia, Federated States of"
2791
- msgstr ""
2792
-
2793
- #: common/src/Tribe/Languages/Locations.php:197
2794
- msgid "Mexico"
2795
- msgstr "المكسيك"
2796
-
2797
- #: common/src/Tribe/Languages/Locations.php:196
2798
- msgid "Mayotte"
2799
- msgstr "مايوت "
2800
-
2801
- #: common/src/Tribe/Languages/Locations.php:195
2802
- msgid "Mauritius"
2803
- msgstr "موريشيوس"
2804
-
2805
- #: common/src/Tribe/Languages/Locations.php:194
2806
- msgid "Mauritania"
2807
- msgstr "موريتانيا"
2808
-
2809
- #: common/src/Tribe/Languages/Locations.php:193
2810
- msgid "Martinique"
2811
- msgstr "مارتينيك"
2812
-
2813
- #: common/src/Tribe/Languages/Locations.php:192
2814
- msgid "Marshall Islands"
2815
- msgstr "جزر المارشال"
2816
-
2817
- #: common/src/Tribe/Languages/Locations.php:191
2818
- msgid "Malta"
2819
- msgstr "مالطا"
2820
-
2821
- #: common/src/Tribe/Languages/Locations.php:190
2822
- msgid "Mali"
2823
- msgstr "مالي"
2824
-
2825
- #: common/src/Tribe/Languages/Locations.php:189
2826
- msgid "Maldives"
2827
- msgstr "جزر الملديف"
2828
-
2829
- #: common/src/Tribe/Languages/Locations.php:188
2830
- msgid "Malaysia"
2831
- msgstr "ماليزيا"
2832
-
2833
- #: common/src/Tribe/Languages/Locations.php:187
2834
- msgid "Malawi"
2835
- msgstr "ملاوي"
2836
-
2837
- #: common/src/Tribe/Languages/Locations.php:186
2838
- msgid "Madagascar"
2839
- msgstr "مدغشقر"
2840
-
2841
- #: common/src/Tribe/Languages/Locations.php:185
2842
- msgid "Macedonia"
2843
- msgstr "مقدونيا"
2844
-
2845
- #: common/src/Tribe/Languages/Locations.php:184
2846
- msgid "Macau"
2847
- msgstr "ماكاو الصينية"
2848
-
2849
- #: common/src/Tribe/Languages/Locations.php:183
2850
- msgid "Luxembourg"
2851
- msgstr "لوكسمبورغ"
2852
-
2853
- #: common/src/Tribe/Languages/Locations.php:182
2854
- msgid "Lithuania"
2855
- msgstr "ليتوانيا"
2856
-
2857
- #: common/src/Tribe/Languages/Locations.php:181
2858
- msgid "Liechtenstein"
2859
- msgstr "ليختنشتاين"
2860
-
2861
- #: common/src/Tribe/Languages/Locations.php:180
2862
- msgid "Libya"
2863
- msgstr "ليبيا"
2864
-
2865
- #: common/src/Tribe/Languages/Locations.php:179
2866
- msgid "Liberia"
2867
- msgstr "ليبيريا"
2868
-
2869
- #: common/src/Tribe/Languages/Locations.php:178
2870
- msgid "Lesotho"
2871
- msgstr "ليسوتو"
2872
-
2873
- #: common/src/Tribe/Languages/Locations.php:177
2874
- msgid "Lebanon"
2875
- msgstr "لبنان"
2876
-
2877
- #: common/src/Tribe/Languages/Locations.php:176
2878
- msgid "Latvia"
2879
- msgstr "لاتفيا"
2880
-
2881
- #: common/src/Tribe/Languages/Locations.php:175
2882
- msgid "Lao People's Democratic Republic"
2883
- msgstr ""
2884
-
2885
- #: common/src/Tribe/Languages/Locations.php:174
2886
- msgid "Kyrgyzstan"
2887
- msgstr "قرغيزستان"
2888
-
2889
- #: common/src/Tribe/Languages/Locations.php:173
2890
- msgid "Kuwait"
2891
- msgstr "الكويت"
2892
-
2893
- #: common/src/Tribe/Languages/Locations.php:172
2894
- msgid "Korea, Republic of"
2895
- msgstr ""
2896
-
2897
- #: common/src/Tribe/Languages/Locations.php:171
2898
- msgid "Korea, Democratic People's Republic of"
2899
- msgstr ""
2900
-
2901
- #: common/src/Tribe/Languages/Locations.php:170
2902
- msgid "Kiribati"
2903
- msgstr "كيريباتي"
2904
-
2905
- #: common/src/Tribe/Languages/Locations.php:169
2906
- msgid "Kenya"
2907
- msgstr "كينيا"
2908
-
2909
- #: common/src/Tribe/Languages/Locations.php:168
2910
- msgid "Kazakhstan"
2911
- msgstr "كازاخستان"
2912
-
2913
- #: common/src/Tribe/Languages/Locations.php:167
2914
- msgid "Jordan"
2915
- msgstr "الأردن"
2916
-
2917
- #: common/src/Tribe/Languages/Locations.php:166
2918
- msgid "Japan"
2919
- msgstr "اليابان"
2920
-
2921
- #: common/src/Tribe/Languages/Locations.php:165
2922
- msgid "Jamaica"
2923
- msgstr "جامايكا"
2924
-
2925
- #: common/src/Tribe/Languages/Locations.php:164
2926
- msgid "Italy"
2927
- msgstr "ايطاليا"
2928
-
2929
- #: common/src/Tribe/Languages/Locations.php:163
2930
- msgid "Israel"
2931
- msgstr "اسرائيل"
2932
-
2933
- #: common/src/Tribe/Languages/Locations.php:162
2934
- msgid "Ireland"
2935
- msgstr "أيرلندا"
2936
-
2937
- #: common/src/Tribe/Languages/Locations.php:161
2938
- msgid "Iraq"
2939
- msgstr "العراق"
2940
-
2941
- #: common/src/Tribe/Languages/Locations.php:160
2942
- msgid "Iran, Islamic Republic of"
2943
- msgstr ""
2944
-
2945
- #: common/src/Tribe/Languages/Locations.php:159
2946
- msgid "Indonesia"
2947
- msgstr "اندونيسيا"
2948
-
2949
- #: common/src/Tribe/Languages/Locations.php:158
2950
- msgid "India"
2951
- msgstr "الهند"
2952
-
2953
- #: common/src/Tribe/Languages/Locations.php:157
2954
- msgid "Iceland"
2955
- msgstr "أيسلندا"
2956
-
2957
- #: common/src/Tribe/Languages/Locations.php:156
2958
- msgid "Hungary"
2959
- msgstr "المجر"
2960
-
2961
- #: common/src/Tribe/Languages/Locations.php:155
2962
- msgid "Hong Kong"
2963
- msgstr "هونج كونج الصينية"
2964
-
2965
- #: common/src/Tribe/Languages/Locations.php:154
2966
- msgid "Honduras"
2967
- msgstr "هندوراس"
2968
-
2969
- #: common/src/Tribe/Languages/Locations.php:153
2970
- msgid "Holy See (Vatican City State)"
2971
- msgstr ""
2972
-
2973
- #: common/src/Tribe/Languages/Locations.php:152
2974
- msgid "Heard and McDonald Islands"
2975
- msgstr ""
2976
-
2977
- #: common/src/Tribe/Languages/Locations.php:151
2978
- msgid "Haiti"
2979
- msgstr "هايتي"
2980
-
2981
- #: common/src/Tribe/Languages/Locations.php:150
2982
- msgid "Guyana"
2983
- msgstr "غيانا"
2984
-
2985
- #: common/src/Tribe/Languages/Locations.php:149
2986
- msgid "Guinea-Bissau"
2987
- msgstr "غينيا بيساو"
2988
-
2989
- #: common/src/Tribe/Languages/Locations.php:148
2990
- msgid "Guinea"
2991
- msgstr "غينيا"
2992
-
2993
- #: common/src/Tribe/Languages/Locations.php:147
2994
- msgid "Guatemala"
2995
- msgstr "جواتيمالا"
2996
-
2997
- #: common/src/Tribe/Languages/Locations.php:146
2998
- msgid "Guam"
2999
- msgstr "Guam"
3000
-
3001
- #: common/src/Tribe/Languages/Locations.php:145
3002
- msgid "Guadeloupe"
3003
- msgstr "غوادلوب"
3004
-
3005
- #: common/src/Tribe/Languages/Locations.php:144
3006
- msgid "Grenada"
3007
- msgstr "غرينادا"
3008
-
3009
- #: common/src/Tribe/Languages/Locations.php:143
3010
- msgid "Greenland"
3011
- msgstr "جرينلاند"
3012
-
3013
- #: common/src/Tribe/Languages/Locations.php:142
3014
- msgid "Greece"
3015
- msgstr "اليونان"
3016
-
3017
- #: common/src/Tribe/Languages/Locations.php:141
3018
- msgid "Gibraltar"
3019
- msgstr "جبل طارق"
3020
-
3021
- #: common/src/Tribe/Languages/Locations.php:140
3022
- msgid "Ghana"
3023
- msgstr "غانا"
3024
-
3025
- #: common/src/Tribe/Languages/Locations.php:139
3026
- msgid "Germany"
3027
- msgstr "ألمانيا"
3028
-
3029
- #: common/src/Tribe/Languages/Locations.php:138
3030
- #: common/src/Tribe/Languages/Locations.php:327
3031
- msgid "Georgia"
3032
- msgstr "Georgia"
3033
-
3034
- #: common/src/Tribe/Languages/Locations.php:137
3035
- msgid "Gambia"
3036
- msgstr "غامبيا"
3037
-
3038
- #: common/src/Tribe/Languages/Locations.php:136
3039
- msgid "Gabon"
3040
- msgstr "الجابون"
3041
-
3042
- #: common/src/Tribe/Languages/Locations.php:135
3043
- msgid "French Southern Territories"
3044
- msgstr "الأقاليم الجنوبية الفرنسية"
3045
-
3046
- #: common/src/Tribe/Languages/Locations.php:134
3047
- msgid "French Polynesia"
3048
- msgstr "بولينيزيا الفرنسية"
3049
-
3050
- #: common/src/Tribe/Languages/Locations.php:133
3051
- msgid "French Guiana"
3052
- msgstr "جويانا الفرنسية"
3053
-
3054
- #: common/src/Tribe/Languages/Locations.php:132
3055
- msgid "France"
3056
- msgstr "فرنسا"
3057
-
3058
- #: common/src/Tribe/Languages/Locations.php:131
3059
- msgid "Finland"
3060
- msgstr "فنلندا"
3061
-
3062
- #: common/src/Tribe/Languages/Locations.php:130
3063
- msgid "Fiji"
3064
- msgstr "فيجي"
3065
-
3066
- #: common/src/Tribe/Languages/Locations.php:129
3067
- msgid "Faroe Islands"
3068
- msgstr "جزر فارو"
3069
-
3070
- #: common/src/Tribe/Languages/Locations.php:128
3071
- msgid "Falkland Islands (Malvinas)"
3072
- msgstr ""
3073
-
3074
- #: common/src/Tribe/Languages/Locations.php:127
3075
- msgid "Ethiopia"
3076
- msgstr "اثيوبيا"
3077
-
3078
- #: common/src/Tribe/Languages/Locations.php:126
3079
- msgid "Estonia"
3080
- msgstr "استونيا"
3081
-
3082
- #: common/src/Tribe/Languages/Locations.php:125
3083
- msgid "Eritrea"
3084
- msgstr "اريتريا"
3085
-
3086
- #: common/src/Tribe/Languages/Locations.php:124
3087
- msgid "Equatorial Guinea"
3088
- msgstr "غينيا الاستوائية"
3089
-
3090
- #: common/src/Tribe/Languages/Locations.php:123
3091
- msgid "El Salvador"
3092
- msgstr "السلفادور"
3093
-
3094
- #: common/src/Tribe/Languages/Locations.php:122
3095
- msgid "Egypt"
3096
- msgstr "مصر"
3097
-
3098
- #: common/src/Tribe/Languages/Locations.php:121
3099
- msgid "Ecuador"
3100
- msgstr "الاكوادور"
3101
-
3102
- #: common/src/Tribe/Languages/Locations.php:120
3103
- msgid "East Timor"
3104
- msgstr "تيمور الشرقية"
3105
-
3106
- #: common/src/Tribe/Languages/Locations.php:119
3107
- msgid "Dominican Republic"
3108
- msgstr "جمهورية الدومينيك"
3109
-
3110
- #: common/src/Tribe/Languages/Locations.php:118
3111
- msgid "Dominica"
3112
- msgstr "دومينيكا"
3113
-
3114
- #: common/src/Tribe/Languages/Locations.php:117
3115
- msgid "Djibouti"
3116
- msgstr "جيبوتي"
3117
-
3118
- #: common/src/Tribe/Languages/Locations.php:116
3119
- msgid "Denmark"
3120
- msgstr "الدانمرك"
3121
-
3122
- #: common/src/Tribe/Languages/Locations.php:115
3123
- msgid "Czech Republic"
3124
- msgstr "جمهورية التشيك"
3125
-
3126
- #: common/src/Tribe/Languages/Locations.php:114
3127
- msgid "Cyprus"
3128
- msgstr "قبرص"
3129
-
3130
- #: common/src/Tribe/Languages/Locations.php:112
3131
- msgid "Cuba"
3132
- msgstr "كوبا"
3133
-
3134
- #: common/src/Tribe/Languages/Locations.php:111
3135
- msgid "Croatia (Local Name: Hrvatska)"
3136
- msgstr ""
3137
-
3138
- #: common/src/Tribe/Languages/Locations.php:109
3139
- msgid "Costa Rica"
3140
- msgstr "كوستاريكا"
3141
-
3142
- #: common/src/Tribe/Languages/Locations.php:108
3143
- msgid "Cook Islands"
3144
- msgstr "جزر كوك"
3145
-
3146
- #: common/src/Tribe/Languages/Locations.php:107
3147
- msgid "Congo, Democratic Republic of the"
3148
- msgstr ""
3149
-
3150
- #: common/src/Tribe/Languages/Locations.php:106
3151
- msgid "Congo"
3152
- msgstr ""
3153
-
3154
- #: common/src/Tribe/Languages/Locations.php:105
3155
- msgid "Comoros"
3156
- msgstr "جزر القمر"
3157
-
3158
- #: common/src/Tribe/Languages/Locations.php:104
3159
- msgid "Colombia"
3160
- msgstr "كولومبيا"
3161
-
3162
- #: common/src/Tribe/Languages/Locations.php:102
3163
- msgid "Cocos (Keeling) Islands"
3164
- msgstr "جزر كوكوس (كيلينغ)"
3165
-
3166
- #: common/src/Tribe/Languages/Locations.php:101
3167
- msgid "Christmas Island"
3168
- msgstr "جزيرة كريسماس"
3169
-
3170
- #: common/src/Tribe/Languages/Locations.php:100
3171
- msgid "China"
3172
- msgstr "الصين"
3173
-
3174
- #: common/src/Tribe/Languages/Locations.php:99
3175
- msgid "Chile"
3176
- msgstr "شيلي"
3177
-
3178
- #: common/src/Tribe/Languages/Locations.php:98
3179
- msgid "Chad"
3180
- msgstr "تشاد"
3181
-
3182
- #: common/src/Tribe/Languages/Locations.php:97
3183
- msgid "Central African Republic"
3184
- msgstr "جمهورية افريقيا الوسطى"
3185
-
3186
- #: common/src/Tribe/Languages/Locations.php:96
3187
- msgid "Cayman Islands"
3188
- msgstr "جزر كايمان"
3189
-
3190
- #: common/src/Tribe/Languages/Locations.php:95
3191
- msgid "Cape Verde"
3192
- msgstr "الرأس الأخضر"
3193
-
3194
- #: common/src/Tribe/Languages/Locations.php:94
3195
- msgid "Canada"
3196
- msgstr "كندا"
3197
-
3198
- #: common/src/Tribe/Languages/Locations.php:93
3199
- msgid "Cameroon"
3200
- msgstr "الكاميرون"
3201
-
3202
- #: common/src/Tribe/Languages/Locations.php:92
3203
- msgid "Cambodia"
3204
- msgstr "كمبوديا"
3205
-
3206
- #: common/src/Tribe/Languages/Locations.php:91
3207
- msgid "Burundi"
3208
- msgstr "بوروندي"
3209
-
3210
- #: common/src/Tribe/Languages/Locations.php:90
3211
- msgid "Burkina Faso"
3212
- msgstr "بوركينا فاسو"
3213
-
3214
- #: common/src/Tribe/Languages/Locations.php:89
3215
- msgid "Bulgaria"
3216
- msgstr "بلغاريا"
3217
-
3218
- #: common/src/Tribe/Languages/Locations.php:88
3219
- msgid "Brunei Darussalam"
3220
- msgstr ""
3221
-
3222
- #: common/src/Tribe/Languages/Locations.php:87
3223
- msgid "British Indian Ocean Territory"
3224
- msgstr "إقليم المحيط الهندي البريطاني"
3225
-
3226
- #: common/src/Tribe/Languages/Locations.php:86
3227
- msgid "Brazil"
3228
- msgstr "البرازيل"
3229
-
3230
- #: common/src/Tribe/Languages/Locations.php:85
3231
- msgid "Bouvet Island"
3232
- msgstr "جزيرة بوفيه"
3233
-
3234
- #: common/src/Tribe/Languages/Locations.php:84
3235
- msgid "Botswana"
3236
- msgstr "بتسوانا"
3237
-
3238
- #: common/src/Tribe/Languages/Locations.php:83
3239
- msgid "Bosnia and Herzegowina"
3240
- msgstr ""
3241
-
3242
- #: common/src/Tribe/Languages/Locations.php:82
3243
- msgid "Bolivia"
3244
- msgstr "بوليفيا"
3245
-
3246
- #: common/src/Tribe/Languages/Locations.php:81
3247
- msgid "Bhutan"
3248
- msgstr "بوتان"
3249
-
3250
- #: common/src/Tribe/Languages/Locations.php:80
3251
- msgid "Bermuda"
3252
- msgstr "برمودا"
3253
-
3254
- #: common/src/Tribe/Languages/Locations.php:79
3255
- msgid "Benin"
3256
- msgstr "بنين"
3257
-
3258
- #: common/src/Tribe/Languages/Locations.php:78
3259
- msgid "Belize"
3260
- msgstr "Belize"
3261
-
3262
- #: common/src/Tribe/Languages/Locations.php:77
3263
- msgid "Belgium"
3264
- msgstr "بلجيكا"
3265
-
3266
- #: common/src/Tribe/Languages/Locations.php:76
3267
- msgid "Belarus"
3268
- msgstr "روسيا البيضاء"
3269
-
3270
- #: common/src/Tribe/Languages/Locations.php:75
3271
- msgid "Barbados"
3272
- msgstr "باربادوس"
3273
-
3274
- #: common/src/Tribe/Languages/Locations.php:74
3275
- msgid "Bangladesh"
3276
- msgstr "بنجلاديش"
3277
-
3278
- #: common/src/Tribe/Languages/Locations.php:73
3279
- msgid "Bahrain"
3280
- msgstr "البحرين"
3281
-
3282
- #: common/src/Tribe/Languages/Locations.php:72
3283
- msgid "Bahamas"
3284
- msgstr "الباهاما"
3285
-
3286
- #: common/src/Tribe/Languages/Locations.php:71
3287
- msgid "Azerbaijan"
3288
- msgstr "أذربيجان"
3289
-
3290
- #: common/src/Tribe/Languages/Locations.php:70
3291
- msgid "Austria"
3292
- msgstr "النمسا"
3293
-
3294
- #: common/src/Tribe/Languages/Locations.php:69
3295
- msgid "Australia"
3296
- msgstr "أستراليا"
3297
-
3298
- #: common/src/Tribe/Languages/Locations.php:68
3299
- msgid "Aruba"
3300
- msgstr "Aruba"
3301
-
3302
- #: common/src/Tribe/Languages/Locations.php:67
3303
- msgid "Armenia"
3304
- msgstr "أرمينيا"
3305
-
3306
- #: common/src/Tribe/Languages/Locations.php:66
3307
- msgid "Argentina"
3308
- msgstr "Argentina"
3309
-
3310
- #: common/src/Tribe/Languages/Locations.php:65
3311
- msgid "Antigua and Barbuda"
3312
- msgstr ""
3313
-
3314
- #: common/src/Tribe/Languages/Locations.php:64
3315
- msgid "Antarctica"
3316
- msgstr "Antarctica"
3317
-
3318
- #: common/src/Tribe/Languages/Locations.php:63
3319
- msgid "Anguilla"
3320
- msgstr "Anguilla"
3321
-
3322
- #: common/src/Tribe/Languages/Locations.php:62
3323
- msgid "Angola"
3324
- msgstr "أنجولا"
3325
-
3326
- #: common/src/Tribe/Languages/Locations.php:61
3327
- msgid "Andorra"
3328
- msgstr "Andorra"
3329
-
3330
- #: common/src/Tribe/Languages/Locations.php:60
3331
- msgid "American Samoa"
3332
- msgstr "American Samoa"
3333
-
3334
- #: common/src/Tribe/Languages/Locations.php:59
3335
- msgid "Algeria"
3336
- msgstr "الجزائر"
3337
-
3338
- #: common/src/Tribe/Languages/Locations.php:58
3339
- msgid "Albania"
3340
- msgstr "ألبانيا"
3341
-
3342
- #: common/src/Tribe/Languages/Locations.php:56
3343
- msgid "Afghanistan"
3344
- msgstr "أفغانستان"
3345
-
3346
- #: common/src/Tribe/Languages/Locations.php:55
3347
- msgid "United States"
3348
- msgstr "الولايات المتحدة الأمريكية"
3349
-
3350
- #: common/src/Tribe/View_Helpers.php:50
3351
- msgid "Select a Country:"
3352
- msgstr ""
3353
-
3354
- #: common/src/Tribe/Validate.php:496
3355
- msgid "Country List must be formatted as one country per line in the following format: <br>US, United States <br> UK, United Kingdom."
3356
- msgstr ""
3357
-
3358
- #: common/src/Tribe/Validate.php:480
3359
- msgid "%s must be a phone number."
3360
- msgstr ""
3361
-
3362
- #: common/src/Tribe/Validate.php:466
3363
- msgid "%s must consist of 5 numbers."
3364
- msgstr ""
3365
-
3366
- #: common/src/Tribe/Validate.php:452
3367
- msgid "%s must consist of letters, spaces, apostrophes, and dashes."
3368
- msgstr ""
3369
-
3370
- #: common/src/Tribe/Validate.php:436
3371
- msgid "%s must consist of letters, numbers, dashes, apostrophes, and spaces only."
3372
- msgstr ""
3373
-
3374
- #: common/src/Tribe/Validate.php:420
3375
- msgid "%s must be a number between 0 and 21."
3376
- msgstr ""
3377
-
3378
- #: common/src/Tribe/Validate.php:366
3379
- msgid "%s must be a number or percentage."
3380
- msgstr ""
3381
-
3382
- #: common/src/Tribe/Validate.php:350
3383
- msgid "%s cannot be a duplicate"
3384
- msgstr ""
3385
-
3386
- #: common/src/Tribe/Validate.php:348
3387
- msgid "%s cannot be the same as %s."
3388
- msgstr ""
3389
-
3390
- #: common/src/Tribe/Validate.php:341
3391
- msgid "Comparison validation failed because no comparison value was provided, for field %s"
3392
- msgstr ""
3393
-
3394
- #: common/src/Tribe/Validate.php:288 common/src/Tribe/Validate.php:305
3395
- #: common/src/Tribe/Validate.php:327
3396
- msgid "%s must have a value that's part of its options."
3397
- msgstr ""
3398
-
3399
- #: common/src/Tribe/Validate.php:272
3400
- msgid "%s must be a valid absolute URL."
3401
- msgstr ""
3402
-
3403
- #: common/src/Tribe/Validate.php:257
3404
- msgid "%s must be a valid slug (numbers, letters, dashes, and underscores)."
3405
- msgstr ""
3406
-
3407
- #: common/src/Tribe/Validate.php:204
3408
- msgid "%s must be a positive number or percent."
3409
- msgstr ""
3410
-
3411
- #: common/src/Tribe/Validate.php:190 common/src/Tribe/Validate.php:218
3412
- msgid "%s must be a positive number."
3413
- msgstr ""
3414
-
3415
- #: common/src/Tribe/Validate.php:160
3416
- msgid "%s must contain numbers, letters and dots only"
3417
- msgstr ""
3418
-
3419
- #: common/src/Tribe/Validate.php:128 common/src/Tribe/Validate.php:144
3420
- msgid "%s must contain numbers and letters only"
3421
- msgstr ""
3422
-
3423
- #: common/src/Tribe/Validate.php:108
3424
- msgctxt "non-existant function name passed for field validation"
3425
- msgid "with function name:"
3426
- msgstr ""
3427
-
3428
- #: common/src/Tribe/Validate.php:107
3429
- msgid "Non-existant field validation function passed"
3430
- msgstr ""
3431
-
3432
- #: common/src/Tribe/Validate.php:75 common/src/Tribe/Validate.php:87
3433
- #: common/src/Tribe/Validate.php:108 common/src/Tribe/Validate.php:114
3434
- msgid "Field ID:"
3435
- msgstr ""
3436
-
3437
- #: common/src/Tribe/Validate.php:74 common/src/Tribe/Validate.php:86
3438
- #: common/src/Tribe/Validate.php:113
3439
- msgid "Invalid or incomplete field passed"
3440
- msgstr ""
3441
-
3442
- #: common/src/Tribe/Support.php:197
3443
- msgid "Rewrite rules were purged on load of this help page. Chances are there is a rewrite rule flush occurring in a plugin or theme!"
3444
- msgstr ""
3445
-
3446
- #: common/src/Tribe/Support.php:186 common/src/Tribe/Support.php:187
3447
- msgid "Unknown or not set"
3448
- msgstr ""
3449
-
3450
- #: common/src/Tribe/Settings_Tab.php:222
3451
- msgid "There are no fields setup for this tab yet."
3452
- msgstr ""
3453
-
3454
- #: common/src/Tribe/Settings_Manager.php:253
3455
- #: common/src/admin-views/tribe-options-licenses.php:66
3456
- msgid "Licenses"
3457
- msgstr "تراخيص الإستخدام"
3458
-
3459
- #: common/src/Tribe/Settings_Manager.php:219
3460
- msgid "Network"
3461
- msgstr "الشبكة"
3462
-
3463
- #: common/src/Tribe/Settings_Manager.php:279
3464
- msgid "Help"
3465
- msgstr "مساعدة"
3466
-
3467
- #: common/src/Tribe/Settings_Manager.php:55
3468
- msgid "Display"
3469
- msgstr "عرض"
3470
-
3471
- #: common/src/Tribe/Settings_Manager.php:54
3472
- msgid "General"
3473
- msgstr "العام"
3474
-
3475
- #: common/src/Tribe/Settings.php:619
3476
- msgid "Settings saved."
3477
- msgstr "تم حفظ الإعدادات"
3478
-
3479
- #: common/src/Tribe/Settings.php:597
3480
- msgid "The above setting was not saved. Other settings were successfully saved."
3481
- msgid_plural "The above settings were not saved. Other settings were successfully saved."
3482
- msgstr[0] ""
3483
- msgstr[1] ""
3484
- msgstr[2] ""
3485
- msgstr[3] ""
3486
- msgstr[4] ""
3487
- msgstr[5] ""
3488
-
3489
- #: common/src/Tribe/Settings.php:596
3490
- msgid "None of your settings were saved. Please try again."
3491
- msgstr ""
3492
-
3493
- #: common/src/Tribe/Settings.php:586
3494
- msgid "Your form had the following errors:"
3495
- msgstr ""
3496
-
3497
- #: common/src/Tribe/Settings.php:419
3498
- msgid "The request wasn't sent from this tab."
3499
- msgstr ""
3500
-
3501
- #: common/src/Tribe/Settings.php:413
3502
- msgid "The request was sent insecurely."
3503
- msgstr ""
3504
-
3505
- #: common/src/Tribe/Settings.php:407
3506
- msgid "You don't have permission to do that."
3507
- msgstr ""
3508
-
3509
- #: common/src/Tribe/Settings.php:359
3510
- msgid "Save Changes"
3511
- msgstr "حفظ الٌعدادات"
3512
-
3513
- #: common/src/Tribe/Settings.php:351
3514
- msgid "You've requested a non-existent tab."
3515
- msgstr ""
3516
-
3517
- #: common/src/Tribe/Settings.php:337
3518
- msgid "%s Settings"
3519
- msgstr "إعدادات %s"
3520
-
3521
- #: common/src/Tribe/Settings.php:242 src/admin-views/editor/panel/list.php:66
3522
- msgid "Settings"
3523
- msgstr "الاعدادات"
3524
-
3525
- #: common/src/Tribe/Settings.php:241 common/src/Tribe/Settings.php:261
3526
- msgid "Events Settings"
3527
- msgstr ""
3528
-
3529
- #: common/src/Tribe/Settings.php:165 common/src/Tribe/Settings.php:229
3530
- #: common/src/Tribe/Settings.php:230
3531
- msgid "Events"
3532
- msgstr "أحداث"
3533
-
3534
- #: common/src/Tribe/PUE/Checker.php:888
3535
- msgid "Hmmm... something's wrong with this validator. Please contact %ssupport%s."
3536
- msgstr ""
3537
-
3538
- #: common/src/Tribe/PUE/Checker.php:932
3539
- msgid "Thanks for setting up a valid key. It will expire on %s"
3540
- msgstr ""
3541
-
3542
- #: common/src/Tribe/PUE/Checker.php:927
3543
- msgid "Valid Key! Expires on %s"
3544
- msgstr ""
3545
-
3546
- #: common/src/Tribe/PUE/Checker.php:907
3547
- msgid "Sorry, key validation server is not available."
3548
- msgstr ""
3549
-
3550
- #: common/src/Tribe/PUE/Checker.php:901
3551
- msgid "unknown date"
3552
- msgstr ""
3553
-
3554
- #: common/src/Tribe/PUE/Checker.php:650
3555
- msgid "License key(s) updated."
3556
- msgstr ""
3557
-
3558
- #: common/src/Tribe/PUE/Checker.php:494
3559
- msgid "A valid license key is required for support and updates"
3560
- msgstr ""
3561
-
3562
- #: common/src/Tribe/PUE/Checker.php:509 common/src/Tribe/PUE/Checker.php:520
3563
- msgid "License Key"
3564
- msgstr ""
3565
-
3566
- #: common/src/Tribe/Field.php:617
3567
- msgid "No select options specified"
3568
- msgstr ""
3569
-
3570
- #: common/src/Tribe/Field.php:559
3571
- msgid "No checkbox options specified"
3572
- msgstr ""
3573
-
3574
- #: common/src/Tribe/Field.php:523
3575
- msgid "No radio options specified"
3576
- msgstr ""
3577
-
3578
- #: common/src/Tribe/Field.php:228
3579
- msgid "Invalid field type specified"
3580
- msgstr ""
3581
-
3582
- #: common/src/Tribe/Credits.php:31
3583
- msgid "This calendar is powered by The Events Calendar."
3584
- msgstr ""
3585
-
3586
- #: common/src/Tribe/App_Shop.php:50 common/src/Tribe/App_Shop.php:51
3587
- #: common/src/Tribe/App_Shop.php:72
3588
- msgid "Event Add-Ons"
3589
- msgstr ""
3590
-
3591
- #: common/src/Tribe/Admin/Help_Page.php:860
3592
- msgid "Visit the Add-on Page"
3593
- msgstr ""
3594
-
3595
- #: common/src/Tribe/Admin/Help_Page.php:855
3596
- msgid "Plugin Inactive"
3597
- msgstr ""
3598
-
3599
- #: common/src/Tribe/Admin/Help_Page.php:853
3600
- msgid "Plugin Active"
3601
- msgstr ""
3602
-
3603
- #: common/src/Tribe/Admin/Help_Page.php:847
3604
- msgid "Premium Add-Ons"
3605
- msgstr ""
3606
-
3607
- #: common/src/Tribe/Admin/Help_Page.php:828
3608
- msgid "Rating:"
3609
- msgstr ""
3610
-
3611
- #: common/src/Tribe/Admin/Help_Page.php:825
3612
- msgid "Active Users:"
3613
- msgstr ""
3614
-
3615
- #: common/src/Tribe/Admin/Help_Page.php:823
3616
- msgid "WordPress "
3617
- msgstr ""
3618
-
3619
- #: common/src/Tribe/Admin/Help_Page.php:822
3620
- #: common/src/admin-views/app-shop.php:78
3621
- msgid "Requires:"
3622
- msgstr ""
3623
-
3624
- #: common/src/Tribe/Admin/Help_Page.php:819
3625
- msgid "Latest Version:"
3626
- msgstr ""
3627
-
3628
- #: common/src/Tribe/Admin/Help_Page.php:802
3629
- msgid "Install Plugin"
3630
- msgstr ""
3631
-
3632
- #: common/src/Tribe/Admin/Help_Page.php:802
3633
- msgid "Install %s"
3634
- msgstr "تنصيب %s"
3635
-
3636
- #: common/src/Tribe/Admin/Help_Page.php:786
3637
- msgid "Upgrade Plugin"
3638
- msgstr "ترقية الإضافة"
3639
-
3640
- #: common/src/Tribe/Admin/Help_Page.php:778
3641
- msgid "Activate Plugin"
3642
- msgstr "تفعيل الإضافة"
3643
-
3644
- #: common/src/Tribe/Admin/Help_Page.php:778
3645
- msgid "Activate %s"
3646
- msgstr "تفعيل %s"
3647
-
3648
- #: common/src/Tribe/Admin/Help_Page.php:413
3649
- #: common/src/Tribe/Admin/Help_Page.php:788
3650
- msgid "You are up to date!"
3651
- msgstr ""
3652
-
3653
- #: common/src/Tribe/Admin/Help_Page.php:413
3654
- msgid "You need to upgrade!"
3655
- msgstr ""
3656
-
3657
- #: common/src/Tribe/Admin/Help_Page.php:405
3658
- msgctxt "not available"
3659
- msgid "n/a"
3660
- msgstr ""
3661
-
3662
- #: common/src/Tribe/Admin/Help_Page.php:244
3663
- #: common/src/Tribe/Plugins_API.php:100
3664
- msgid "Community Tickets"
3665
- msgstr ""
3666
-
3667
- #: common/src/Tribe/Admin/Help_Page.php:235 common/src/Tribe/Plugins_API.php:66
3668
- msgid "Event Tickets Plus"
3669
- msgstr ""
3670
-
3671
- #: common/src/Tribe/Admin/Help_Page.php:211 common/src/Tribe/Plugins_API.php:90
3672
- msgid "Community Events"
3673
- msgstr ""
3674
-
3675
- #: common/src/Tribe/Admin/Help_Page.php:203
3676
- #: common/src/Tribe/Plugins_API.php:111
3677
- msgid "Eventbrite Tickets"
3678
- msgstr ""
3679
-
3680
- #: common/src/Tribe/Admin/Help_Page.php:194 common/src/Tribe/Plugins_API.php:43
3681
- msgid "Events Calendar PRO"
3682
- msgstr ""
3683
-
3684
- #: common/src/Tribe/Admin/Help_Page.php:170 src/Tribe/Tickets_View.php:673
3685
- #: src/views/tickets/orders-link.php:53
3686
- msgid " and "
3687
- msgstr "و"
3688
-
3689
- #: common/src/Tribe/Admin/Help_Page.php:95
3690
- msgid "Turbo charge your posts admin for any custom post type with sortable filters and columns, and auto-registration of metaboxes."
3691
- msgstr ""
3692
-
3693
- #: common/src/Tribe/Admin/Help_Page.php:91
3694
- msgid "Advanced Post Manager"
3695
- msgstr ""
3696
-
3697
- #: common/src/Tribe/Admin/Help_Page.php:79
3698
- msgid "Events Tickets is a carefully crafted, extensible plugin that lets you easily sell tickets for your events."
3699
- msgstr ""
3700
-
3701
- #. #-#-#-#-# event-tickets-code.pot (Event Tickets 4.6.3.1) #-#-#-#-#
3702
- #. Plugin Name of the plugin/theme
3703
- #: common/src/Tribe/Admin/Help_Page.php:75 common/src/Tribe/Plugins_API.php:57
3704
- #: src/Tribe/Main.php:470
3705
- msgid "Event Tickets"
3706
- msgstr ""
3707
-
3708
- #: common/src/Tribe/Admin/Help_Page.php:63
3709
- msgid "The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events."
3710
- msgstr ""
3711
-
3712
- #: common/src/Tribe/Admin/Help_Page.php:59 common/src/Tribe/Customizer.php:568
3713
- #: common/src/Tribe/Plugins_API.php:25
3714
- msgid "The Events Calendar"
3715
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lang/event-tickets-ary.po DELETED
@@ -1,3715 +0,0 @@
1
- # Translation of Plugins - Event Tickets - Stable (latest release) in Moroccan Arabic
2
- # This file is distributed under the same license as the Plugins - Event Tickets - Stable (latest release) package.
3
- msgid ""
4
- msgstr ""
5
- "PO-Revision-Date: 2015-12-12 09:10:11+0000\n"
6
- "MIME-Version: 1.0\n"
7
- "Content-Type: text/plain; charset=UTF-8\n"
8
- "Content-Transfer-Encoding: 8bit\n"
9
- "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
10
- "X-Generator: GlotPress/2.4.0-alpha\n"
11
- "Language: ar_MA\n"
12
- "Project-Id-Version: Plugins - Event Tickets - Stable (latest release)\n"
13
-
14
- #: src/template-tags/tickets.php:410
15
- msgctxt "ticket shared capacity message (remaining stock)"
16
- msgid "%1$d Remaining of shared capacity"
17
- msgstr ""
18
-
19
- #: src/admin-views/rsvp-metabox-capacity.php:19
20
- msgid "Leave blank for unlimited"
21
- msgstr ""
22
-
23
- #: src/admin-views/editor/panel/ticket.php:189
24
- msgid "Save RSVP"
25
- msgstr ""
26
-
27
- #: src/admin-views/editor/panel/ticket.php:180
28
- msgid "Save ticket"
29
- msgstr ""
30
-
31
- #: src/admin-views/editor/panel/ticket.php:98
32
- msgid "Ticket type name shows on the front end and emailed tickets"
33
- msgstr ""
34
-
35
- #: src/admin-views/editor/panel/ticket.php:96
36
- msgid "Ticket Type is a required field."
37
- msgstr ""
38
-
39
- #: src/admin-views/editor/panel/ticket.php:87
40
- msgid "Type:"
41
- msgstr ""
42
-
43
- #: src/admin-views/editor/panel/ticket.php:82
44
- msgid "Edit RSVP"
45
- msgstr ""
46
-
47
- #: src/admin-views/editor/panel/ticket.php:74
48
- msgid "Add new RSVP"
49
- msgstr ""
50
-
51
- #: src/admin-views/editor/panel/settings.php:69
52
- msgid "Save settings"
53
- msgstr ""
54
-
55
- #: src/admin-views/editor/panel/settings.php:32
56
- msgid "Select an image from your Media Library to display on emailed tickets. For best results, use a .jpg, .png, or .gif at least 1160px wide."
57
- msgstr ""
58
-
59
- #: src/admin-views/editor/panel/settings.php:30
60
- msgid "Ticket header image:"
61
- msgstr ""
62
-
63
- #: src/admin-views/editor/panel/list.php:61
64
- msgid "New RSVP"
65
- msgstr ""
66
-
67
- #: src/admin-views/editor/panel/list.php:59
68
- msgid "Add a new RSVP"
69
- msgstr ""
70
-
71
- #: src/admin-views/editor/panel/list.php:39
72
- msgid "View Attendees"
73
- msgstr ""
74
-
75
- #: src/admin-views/editor/panel/list.php:11
76
- msgid "You have unsaved changes to your tickets. Discard those changes?"
77
- msgstr ""
78
-
79
- #: src/admin-views/editor/list-table.php:40
80
- msgid "Available"
81
- msgstr ""
82
-
83
- #: src/admin-views/editor/list-table.php:39
84
- msgid "Capacity"
85
- msgstr ""
86
-
87
- #: src/admin-views/editor/list-row.php:100
88
- msgid "( Ticket ID: %d )"
89
- msgstr ""
90
-
91
- #: src/admin-views/editor/list-row.php:88
92
- msgid "The number of Complete ticket sales does not match the number of attendees. Please check the Attendees list and adjust ticket stock in WooCommerce as needed."
93
- msgstr ""
94
-
95
- #: src/admin-views/editor/list-row.php:86
96
- msgid "Available:"
97
- msgstr ""
98
-
99
- #: src/admin-views/editor/list-row.php:81
100
- #: src/admin-views/rsvp-metabox-capacity.php:10
101
- msgid "Capacity:"
102
- msgstr ""
103
-
104
- #: src/admin-views/editor/fieldset/history.php:30
105
- msgid "Ti"
106
- msgstr ""
107
-
108
- #: src/admin-views/editor/fieldset/history.php:27
109
- msgid "History"
110
- msgstr ""
111
-
112
- #: src/admin-views/editor/fieldset/advanced.php:132
113
- msgid "If you do not set an end sale date, tickets sales will never end."
114
- msgstr ""
115
-
116
- #: src/admin-views/editor/fieldset/advanced.php:130
117
- msgid "If you do not set an end sale date, tickets will be available until the event begins."
118
- msgstr ""
119
-
120
- #: src/admin-views/editor/fieldset/advanced.php:124
121
- msgid "Ticket end date"
122
- msgstr ""
123
-
124
- #: src/admin-views/editor/fieldset/advanced.php:98
125
- msgid "If you do not set a start sale date, tickets will be available immediately."
126
- msgstr ""
127
-
128
- #: src/admin-views/editor/fieldset/advanced.php:97
129
- #: src/admin-views/editor/fieldset/advanced.php:126
130
- msgid "HH:MM"
131
- msgstr ""
132
-
133
- #: src/admin-views/editor/fieldset/advanced.php:95
134
- msgid "Ticket start date"
135
- msgstr ""
136
-
137
- #: src/admin-views/editor/fieldset/advanced.php:84
138
- #: src/admin-views/editor/fieldset/advanced.php:113
139
- msgid "at"
140
- msgstr ""
141
-
142
- #: src/admin-views/editor/fieldset/advanced.php:83
143
- #: src/admin-views/editor/fieldset/advanced.php:112
144
- msgid "YYYY-MM-DD"
145
- msgstr ""
146
-
147
- #: src/admin-views/editor/fieldset/advanced.php:65
148
- msgid "Show description on front end ticket form."
149
- msgstr ""
150
-
151
- #: src/admin-views/editor/fieldset/advanced.php:47
152
- msgid "Description:"
153
- msgstr ""
154
-
155
- #: src/admin-views/editor/fieldset/advanced.php:45
156
- msgid "Advanced Settings"
157
- msgstr ""
158
-
159
- #: src/admin-views/editor/fieldset/advanced.php:42
160
- msgid "Advanced"
161
- msgstr ""
162
-
163
- #: src/admin-views/editor/fieldset/advanced.php:38
164
- msgid "Start sale date cannot be greater than End Sale date"
165
- msgstr ""
166
-
167
- #: src/admin-views/editor/fieldset/advanced.php:37
168
- msgid "Start sale date cannot be empty."
169
- msgstr ""
170
-
171
- #: src/admin-views/admin-welcome-message.php:25
172
- msgid "Event Tickets Features"
173
- msgstr ""
174
-
175
- #: src/admin-views/admin-welcome-message.php:24
176
- msgid "Settings Overview"
177
- msgstr ""
178
-
179
- #: src/admin-views/admin-welcome-message.php:15
180
- msgid "If you need a little help, hit us up in %s."
181
- msgstr ""
182
-
183
- #: src/admin-views/admin-welcome-message.php:14
184
- msgid "Giving you the best experience with our plugin is our top goal. Check out the resources below for a step-by-step introduction to your new features or head straight to the Events section in your admin to create your first ticket."
185
- msgstr ""
186
-
187
- #: src/admin-views/admin-welcome-message.php:13
188
- msgid "Welcome to Event Tickets!"
189
- msgstr ""
190
-
191
- #: src/admin-views/admin-welcome-message.php:5
192
- msgid "our support forums"
193
- msgstr ""
194
-
195
- #: src/Tribe/Tickets_Handler.php:84
196
- msgid "Unlimited"
197
- msgstr ""
198
-
199
- #: src/Tribe/Tickets.php:904
200
- msgid "Set capacity for this ticket only"
201
- msgstr ""
202
-
203
- #: src/Tribe/Tickets.php:903
204
- msgid "Shared capacity with other tickets"
205
- msgstr ""
206
-
207
- #: src/Tribe/Tickets.php:385
208
- msgid "Move Ticket"
209
- msgstr ""
210
-
211
- #: src/Tribe/Tickets.php:385
212
- msgid "Move RSVP"
213
- msgstr ""
214
-
215
- #: src/Tribe/Tickets.php:310
216
- msgid "Delete Ticket"
217
- msgstr ""
218
-
219
- #: src/Tribe/Tickets.php:310
220
- msgid "Delete RSVP"
221
- msgstr ""
222
-
223
- #: src/Tribe/Metabox.php:308
224
- msgid "Failed to Delete the Ticket, Refresh the Page to try again."
225
- msgstr ""
226
-
227
- #: src/Tribe/Metabox.php:268 src/Tribe/Metabox.php:314
228
- #: src/Tribe/Metabox.php:352 src/Tribe/Metabox.php:388
229
- msgid "Commerce Module invalid"
230
- msgstr ""
231
-
232
- #: src/Tribe/Metabox.php:262
233
- msgid "Failed to Edit the Ticket, Refresh the Page to try again."
234
- msgstr ""
235
-
236
- #: src/Tribe/Metabox.php:252 src/Tribe/Metabox.php:304
237
- msgid "Invalid Ticket"
238
- msgstr ""
239
-
240
- #: src/Tribe/Metabox.php:217
241
- msgid "Failed to Add the Ticket"
242
- msgstr ""
243
-
244
- #: src/Tribe/Metabox.php:199
245
- msgid "Commerce Provider invalid"
246
- msgstr ""
247
-
248
- #: src/Tribe/Metabox.php:195
249
- msgid "Failed to Add the Ticket, Refresh the Page to try again."
250
- msgstr ""
251
-
252
- #: src/Tribe/Metabox.php:185 src/Tribe/Metabox.php:246
253
- #: src/Tribe/Metabox.php:298
254
- msgid "Invalid parent Post"
255
- msgstr ""
256
-
257
- #: src/Tribe/Metabox.php:106
258
- msgid "Invalid Post ID"
259
- msgstr ""
260
-
261
- #: src/Tribe/CSV_Importer/Column_Names.php:42
262
- msgid "Ticket Capacity"
263
- msgstr ""
264
-
265
- #: common/src/admin-views/tribe-options-help.php:20
266
- msgid "Check out our %s for developers."
267
- msgstr ""
268
-
269
- #: common/src/admin-views/tribe-options-help.php:18
270
- msgid "Want to dive deeper?"
271
- msgstr ""
272
-
273
- #: common/src/admin-views/tribe-options-display.php:28
274
- msgid "The following three fields accept the date format options available to the PHP %1$s function. <a href=\"%2$s\" target=\"_blank\">Learn how to make your own date format here</a>."
275
- msgstr ""
276
-
277
- #: common/src/Tribe/Validate.php:527
278
- msgid "%s must be an email address."
279
- msgstr ""
280
-
281
- #: common/src/Tribe/Main.php:283
282
- msgid "Clear Selection."
283
- msgstr ""
284
-
285
- #: common/src/Tribe/Main.php:282
286
- msgid "Select all pages"
287
- msgstr ""
288
-
289
- #: common/src/Tribe/Main.php:281
290
- msgid "All items on this page were selected. "
291
- msgstr ""
292
-
293
- #: common/src/Tribe/Languages/Locations.php:252
294
- msgid "Sint Maarten"
295
- msgstr ""
296
-
297
- #: common/src/Tribe/Languages/Locations.php:245
298
- msgid "S&atilde;o Tom&eacute; and Pr&iacute;ncipe"
299
- msgstr ""
300
-
301
- #: common/src/Tribe/Languages/Locations.php:238
302
- msgid "Saint Helena"
303
- msgstr ""
304
-
305
- #: common/src/Tribe/Languages/Locations.php:237
306
- msgid "Saint Barth&eacute;lemy"
307
- msgstr ""
308
-
309
- #: common/src/Tribe/Languages/Locations.php:113
310
- msgid "Cura&ccedil;ao"
311
- msgstr ""
312
-
313
- #: common/src/Tribe/Languages/Locations.php:103
314
- msgid "Collectivity of Saint Martin"
315
- msgstr ""
316
-
317
- #: common/src/Tribe/Languages/Locations.php:57
318
- msgid "&Aring;land Islands"
319
- msgstr ""
320
-
321
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:57
322
- msgid "A list of links to the term own, archive and parent REST URL"
323
- msgstr ""
324
-
325
- #: src/views/tickets/rsvp.php:209
326
- msgid "You must have JavaScript activated to purchase tickets. Please enable JavaScript in your browser."
327
- msgstr ""
328
-
329
- #: src/template-tags/tickets.php:237
330
- msgctxt "list view buy now ticket button"
331
- msgid "Buy Now!"
332
- msgstr ""
333
-
334
- #: src/template-tags/tickets.php:234
335
- msgctxt "list view rsvp now ticket button"
336
- msgid "RSVP Now!"
337
- msgstr ""
338
-
339
- #: src/template-tags/tickets.php:223
340
- msgid "%s ticket left"
341
- msgid_plural "%s tickets left"
342
- msgstr[0] ""
343
- msgstr[1] ""
344
- msgstr[2] ""
345
- msgstr[3] ""
346
- msgstr[4] ""
347
- msgstr[5] ""
348
-
349
- #: src/template-tags/tickets.php:221
350
- msgid "%s spot left"
351
- msgid_plural "%s spots left"
352
- msgstr[0] ""
353
- msgstr[1] ""
354
- msgstr[2] ""
355
- msgstr[3] ""
356
- msgstr[4] ""
357
- msgstr[5] ""
358
-
359
- #: src/template-tags/tickets.php:204
360
- msgctxt "list view stock sold out"
361
- msgid "Sold out"
362
- msgstr ""
363
-
364
- #: common/src/Tribe/Plugins_API.php:129
365
- msgid "Take your image widgets to the next level with Image Widget Plus! We've taken the simple functionality of our basic Image Widget and amped it up with several popular feature requests - multiple image support, slideshow, lightbox, and random image - all backed by a full year of premium support."
366
- msgstr ""
367
-
368
- #: common/src/Tribe/Plugins_API.php:125
369
- msgid "Image Widget Plus"
370
- msgstr ""
371
-
372
- #: common/src/Tribe/Plugins_API.php:94
373
- msgid "Accept user-submitted events on your site! With Community Events, you can accept public submissions or require account sign-on. Settings give you the options to save as a draft or publish automatically, enable categories and tags, and choose whether users can edit/manage their own events or simply submit. Best of all - setup is easy! Just activate, configure the options, and off you go."
374
- msgstr ""
375
-
376
- #: common/src/Tribe/Plugins_API.php:60
377
- msgid "Event Tickets provides a simple way for visitors to RSVP to your events. As a standalone plugin, it enables you to add RSVP functionality to posts or pages. When paired with The Events Calendar, you can add that same RSVP functionality directly to your event listings."
378
- msgstr ""
379
-
380
- #: common/src/Tribe/Plugins_API.php:37
381
- msgid "Import events from across the web! Event Aggregator makes it easy to run scheduled or manual imports from Facebook, Meetup, Google Calendar, and iCalendar, along with uploads from CSV and ICS files. You can also import directly from other sites running The Events Calendar thanks to our built-in REST API support."
382
- msgstr ""
383
-
384
- #: common/src/Tribe/Plugins_API.php:28
385
- msgid "Create an events calendar and manage it with ease. The Events Calendar plugin provides professional-level quality and features backed by a team you can trust."
386
- msgstr ""
387
-
388
- #: common/src/Tribe/PUE/Notices.php:340
389
- msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
390
- msgstr ""
391
-
392
- #: common/src/Tribe/PUE/Notices.php:225
393
- msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
394
- msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
395
- msgstr[0] ""
396
- msgstr[1] ""
397
- msgstr[2] ""
398
- msgstr[3] ""
399
- msgstr[4] ""
400
- msgstr[5] ""
401
-
402
- #: common/src/Tribe/PUE/Checker.php:976
403
- msgid "Please refresh the page and try your request again."
404
- msgstr ""
405
-
406
- #: common/src/Tribe/Ajax/Dropdown.php:243
407
- msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
408
- msgstr ""
409
-
410
- #: common/src/Tribe/Ajax/Dropdown.php:193
411
- msgid "Empty data set for this dropdown"
412
- msgstr ""
413
-
414
- #: common/src/Tribe/Ajax/Dropdown.php:180
415
- msgid "Missing data source for this dropdown"
416
- msgstr ""
417
-
418
- #: common/src/Tribe/Ajax/Dropdown.php:38
419
- msgid "Cannot look for Terms without a taxonomy"
420
- msgstr ""
421
-
422
- #: common/src/Tribe/PUE/Checker.php:1095
423
- msgid "There is a new version of %1$s available. %2$s"
424
- msgstr ""
425
-
426
- #: common/src/Tribe/PUE/Checker.php:1084
427
- msgid "Update now to version %s."
428
- msgstr ""
429
-
430
- #: common/src/Tribe/PUE/Checker.php:497
431
- msgid "%1$sBuy a license%2$s for the Event Aggregator service to access additional import features."
432
- msgstr ""
433
-
434
- #: common/src/Tribe/Validate.php:238
435
- msgid "%s must be a whole number."
436
- msgstr ""
437
-
438
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:52
439
- msgid "The URL to the term archive page"
440
- msgstr ""
441
-
442
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:48
443
- msgid "The number of posts associated with the term"
444
- msgstr ""
445
-
446
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:44
447
- msgid "The term parent term if any"
448
- msgstr ""
449
-
450
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:40
451
- msgid "The term description"
452
- msgstr ""
453
-
454
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:36
455
- msgid "The taxonomy the term belongs to"
456
- msgstr ""
457
-
458
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:32
459
- msgid "The term slug"
460
- msgstr ""
461
-
462
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:28
463
- msgid "The term name"
464
- msgstr ""
465
-
466
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:24
467
- msgid "The WordPress term ID"
468
- msgstr ""
469
-
470
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:36
471
- msgid "The link to the image in the specified size on the site"
472
- msgstr ""
473
-
474
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:32
475
- msgid "The image mime-type"
476
- msgstr ""
477
-
478
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:28
479
- msgid "The image height in pixels in the specified size"
480
- msgstr ""
481
-
482
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:24
483
- msgid "The image width in pixels in the specified size"
484
- msgstr ""
485
-
486
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:44
487
- msgid "The details about each size available for the image"
488
- msgstr ""
489
-
490
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:40
491
- msgid "The image natural height in pixels"
492
- msgstr ""
493
-
494
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:36
495
- msgid "The image natural width in pixels"
496
- msgstr ""
497
-
498
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:32
499
- msgid "The image file extension"
500
- msgstr ""
501
-
502
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:28
503
- msgid "The image WordPress post ID"
504
- msgstr ""
505
-
506
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:24
507
- msgid "The URL to the full size version of the image"
508
- msgstr ""
509
-
510
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:44
511
- msgid "The date seconds"
512
- msgstr ""
513
-
514
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:40
515
- msgid "The date minutes"
516
- msgstr ""
517
-
518
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:36
519
- msgid "The date hour"
520
- msgstr ""
521
-
522
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:32
523
- msgid "The date day"
524
- msgstr ""
525
-
526
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:28
527
- msgid "The date month"
528
- msgstr ""
529
-
530
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:24
531
- msgid "The date year"
532
- msgstr ""
533
-
534
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:34
535
- msgid "A sorted array of all the numeric values for the cost"
536
- msgstr ""
537
-
538
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:28
539
- msgid "The position of the currency symbol in the cost string"
540
- msgstr ""
541
-
542
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24
543
- msgid "The cost currency symbol"
544
- msgstr ""
545
-
546
- #: src/template-tags/tickets.php:417
547
- msgctxt "ticket stock message (pending stock)"
548
- msgid "%1$d Awaiting Review"
549
- msgstr ""
550
-
551
- #: src/template-tags/tickets.php:412
552
- msgctxt "ticket stock message (remaining stock)"
553
- msgid "%1$d Remaining"
554
- msgstr ""
555
-
556
- #: src/template-tags/tickets.php:408
557
- msgid "%s %d"
558
- msgstr ""
559
-
560
- #: src/template-tags/tickets.php:402
561
- msgctxt "separate going and remain RSVPs"
562
- msgid "RSVP'd Going"
563
- msgstr ""
564
-
565
- #: src/template-tags/tickets.php:400
566
- msgid "Sold"
567
- msgstr ""
568
-
569
- #: src/admin-views/tribe-options-tickets.php:83
570
- msgid "Location of Tickets form"
571
- msgstr ""
572
-
573
- #: src/admin-views/tribe-options-tickets.php:75
574
- msgid "Location of RSVP form"
575
- msgstr ""
576
-
577
- #: src/admin-views/tribe-options-tickets.php:69
578
- msgid "Above the event description"
579
- msgstr ""
580
-
581
- #: src/admin-views/tribe-options-tickets.php:68
582
- msgid "Below the event description"
583
- msgstr ""
584
-
585
- #: src/admin-views/tribe-options-tickets.php:67
586
- msgid "Above the event details"
587
- msgstr ""
588
-
589
- #: src/admin-views/tribe-options-tickets.php:66
590
- msgid "Below the event details [default]"
591
- msgstr ""
592
-
593
- #: src/admin-views/attendees.php:76
594
- msgctxt "attendee screen summary"
595
- msgid "Attendees By Ticket"
596
- msgstr ""
597
-
598
- #: src/admin-views/attendees.php:38
599
- msgctxt "attendee screen summary"
600
- msgid "Event Details"
601
- msgstr ""
602
-
603
- #: src/Tribe/Attendees.php:106
604
- msgctxt "attendee event actions"
605
- msgid "View Event"
606
- msgstr ""
607
-
608
- #: src/Tribe/Attendees.php:105
609
- msgctxt "attendee event actions"
610
- msgid "Edit Event"
611
- msgstr ""
612
-
613
- #: src/Tribe/Attendees_Table.php:430 src/Tribe/Attendees_Table.php:450
614
- msgid "Undo"
615
- msgstr ""
616
-
617
- #: src/Tribe/Attendees_Table.php:422 src/Tribe/Attendees_Table.php:431
618
- #: src/Tribe/Attendees_Table.php:442 src/Tribe/Attendees_Table.php:451
619
- msgid "Check In"
620
- msgstr ""
621
-
622
- #: src/Tribe/Attendees_Table.php:59
623
- msgctxt "attendee table"
624
- msgid "Check in"
625
- msgstr ""
626
-
627
- #: src/Tribe/Attendees_Table.php:54
628
- msgctxt "attendee table"
629
- msgid "Security Code"
630
- msgstr ""
631
-
632
- #: src/Tribe/Attendees_Table.php:53
633
- msgctxt "attendee table"
634
- msgid "Primary Information"
635
- msgstr ""
636
-
637
- #: src/Tribe/Admin/Views/Ticketed.php:59
638
- msgid "Unticketed"
639
- msgstr ""
640
-
641
- #: src/Tribe/Admin/Views/Ticketed.php:47
642
- msgid "Ticketed"
643
- msgstr ""
644
-
645
- #: common/src/Tribe/Settings.php:269 common/src/Tribe/Settings.php:270
646
- msgid "Events Help"
647
- msgstr ""
648
-
649
- #: common/src/Tribe/PUE/Checker.php:1670
650
- msgid "Expired license. Consult your network administrator."
651
- msgstr ""
652
-
653
- #: common/src/Tribe/PUE/Checker.php:1669
654
- msgid "No license entered. Consult your network administrator."
655
- msgstr ""
656
-
657
- #: common/src/Tribe/PUE/Checker.php:1668
658
- msgid "A valid license has been entered by your network administrator."
659
- msgstr ""
660
-
661
- #: common/src/Tribe/PUE/Checker.php:550
662
- msgid "Site License Key"
663
- msgstr ""
664
-
665
- #: common/src/Tribe/PUE/Checker.php:539
666
- msgid "Check this box if you wish to override the network license key with your own"
667
- msgstr ""
668
-
669
- #: common/src/Tribe/PUE/Checker.php:538
670
- msgid "Override network license key"
671
- msgstr ""
672
-
673
- #: common/src/Tribe/PUE/Checker.php:529 common/src/Tribe/PUE/Checker.php:563
674
- msgid "License Key Status:"
675
- msgstr ""
676
-
677
- #: common/src/Tribe/Main.php:305
678
- msgid "Done"
679
- msgstr ""
680
-
681
- #: common/src/Tribe/Main.php:304
682
- msgid "Today"
683
- msgstr ""
684
-
685
- #: common/src/Tribe/Main.php:303
686
- msgid "Prev"
687
- msgstr ""
688
-
689
- #: common/src/Tribe/Customizer.php:569
690
- msgid "Use the following panel of your customizer to change the styling of your Calendar and Event pages."
691
- msgstr ""
692
-
693
- #: common/src/admin-views/app-shop.php:31
694
- msgid "Installed"
695
- msgstr ""
696
-
697
- #: common/src/admin-views/app-shop.php:29
698
- msgid "Installed Add-Ons"
699
- msgstr ""
700
-
701
- #: common/src/Tribe/Extension.php:368
702
- msgid "Unable to run Tribe Extensions. Your website host is running PHP 5.2 or older, and has likely disabled or misconfigured debug_backtrace(). You, or your website host, will need to upgrade PHP or properly configure debug_backtrace() for Tribe Extensions to work."
703
- msgstr ""
704
-
705
- #: common/src/Tribe/Extension.php:144
706
- msgid "Tutorial"
707
- msgstr ""
708
-
709
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:92
710
- msgctxt "the final separator in a list of two or more items"
711
- msgid " and "
712
- msgstr ""
713
-
714
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:91
715
- msgctxt "separator used in a list of items"
716
- msgid ", "
717
- msgstr ""
718
-
719
- #: src/views/tickets/rsvp.php:151
720
- msgctxt "order status label"
721
- msgid "RSVP"
722
- msgstr ""
723
-
724
- #: src/views/tickets/rsvp.php:32
725
- msgctxt "form heading"
726
- msgid "RSVP"
727
- msgstr ""
728
-
729
- #: src/views/tickets/orders-rsvp.php:68
730
- msgctxt "order status label"
731
- msgid "RSVP: "
732
- msgstr ""
733
-
734
- #: src/views/tickets/email-tickets-moved.php:103
735
- msgid "We wanted to let you know that a ticket you purchased for %2$s has been transferred to %3$s%4$s. Your ticket remains valid and no further action is needed on your part:"
736
- msgid_plural "We wanted to let you know that the following %1$s tickets for %2$s have been transferred to %3$s%4$s. Your existing tickets remain valid and no further action is needed on your part:"
737
- msgstr[0] ""
738
- msgstr[1] ""
739
- msgstr[2] ""
740
- msgstr[3] ""
741
- msgstr[4] ""
742
- msgstr[5] ""
743
-
744
- #: src/views/tickets/email-ticket-type-moved.php:115
745
- #: src/views/tickets/email-tickets-moved.php:117
746
- msgid " (taking place on %s)"
747
- msgstr ""
748
-
749
- #: src/views/tickets/email-ticket-type-moved.php:101
750
- msgid "We wanted to let you know that your ticket for %2$s has been transferred to %3$s%4$s. Your ticket remains valid and no further action is needed on your part."
751
- msgid_plural "We wanted to let you know that your %1$s tickets for %2$s have been transferred to %3$s%4$s. Your existing tickets remain valid and no further action is needed on your part."
752
- msgstr[0] ""
753
- msgstr[1] ""
754
- msgstr[2] ""
755
- msgstr[3] ""
756
- msgstr[4] ""
757
- msgstr[5] ""
758
-
759
- #: src/views/tickets/email-ticket-type-moved.php:97
760
- #: src/views/tickets/email-tickets-moved.php:99
761
- msgid "Important changes to your tickets"
762
- msgstr ""
763
-
764
- #: src/admin-views/ticket-type-history.php:15
765
- msgid "Click to hide history"
766
- msgstr ""
767
-
768
- #: src/admin-views/ticket-type-history.php:14
769
- msgid "Click to view the history"
770
- msgstr ""
771
-
772
- #: src/admin-views/ticket-type-history.php:10
773
- msgid "Ticket history:"
774
- msgstr ""
775
-
776
- #: src/admin-views/move-tickets.php:89
777
- msgctxt "move tickets dialog"
778
- msgid "Next &raquo;"
779
- msgstr ""
780
-
781
- #: src/admin-views/move-tickets.php:88
782
- msgid "Finish!"
783
- msgstr ""
784
-
785
- #: src/admin-views/move-tickets.php:87
786
- msgctxt "move tickets dialog"
787
- msgid "&laquo; Back"
788
- msgstr ""
789
-
790
- #: src/admin-views/move-tickets.php:80
791
- msgctxt "move tickets dialog"
792
- msgid "Please be patient while your request is processed&hellip;"
793
- msgstr ""
794
-
795
- #: src/admin-views/move-tickets.php:72
796
- msgid "Select the ticket type that the tickets should be transferred to:"
797
- msgstr ""
798
-
799
- #: src/admin-views/move-tickets.php:64
800
- msgid "Select the post you wish to move the ticket type to:"
801
- msgstr ""
802
-
803
- #: src/admin-views/move-tickets.php:59
804
- msgid "You can also enter keywords to help find the target event by title or description:"
805
- msgstr ""
806
-
807
- #: src/admin-views/move-tickets.php:54
808
- msgid "You can optionally focus on a specific post type:"
809
- msgstr ""
810
-
811
- #: src/admin-views/move-tickets.php:47
812
- msgid "Move tickets to a different event"
813
- msgstr ""
814
-
815
- #: src/admin-views/move-tickets.php:43
816
- msgid "Move to a different ticket type within the same event"
817
- msgstr ""
818
-
819
- #: src/admin-views/move-tickets.php:30
820
- msgid "You have selected %1$s ticket for %2$s. You can move it to a different ticket type within the same event, or to a different event."
821
- msgid_plural "You have selected %1$s tickets for %2$s. You can move them to a different ticket type within the same event, or to a different event."
822
- msgstr[0] ""
823
- msgstr[1] ""
824
- msgstr[2] ""
825
- msgstr[3] ""
826
- msgstr[4] ""
827
- msgstr[5] ""
828
-
829
- #: src/admin-views/move-tickets.php:25
830
- msgid "You have specified a range of attendees that are managed by different providers. It is not currently possible to move these together."
831
- msgstr ""
832
-
833
- #: src/admin-views/move-tickets.php:19
834
- msgid "No attendees specified! Please try again."
835
- msgstr ""
836
-
837
- #: src/admin-views/admin-welcome-message.php:38
838
- msgid "Product Releases, Tutorials and Community Activity"
839
- msgstr ""
840
-
841
- #: src/admin-views/admin-welcome-message.php:37
842
- msgid "News For Events Users"
843
- msgstr ""
844
-
845
- #: src/admin-views/admin-welcome-message.php:35
846
- msgid "Get the Skinny on the Latest Updates"
847
- msgstr ""
848
-
849
- #: src/admin-views/admin-welcome-message.php:34
850
- msgid "Release Notes"
851
- msgstr ""
852
-
853
- #: src/admin-views/admin-welcome-message.php:28
854
- msgid "FAQs, Documentation, Tutorials and Forums"
855
- msgstr ""
856
-
857
- #: src/admin-views/admin-welcome-message.php:27
858
- msgid "Support Resources"
859
- msgstr ""
860
-
861
- #: src/admin-views/admin-welcome-message.php:32
862
- msgid "Addons for creating tickets, custom registration, events and more."
863
- msgstr ""
864
-
865
- #: src/admin-views/admin-welcome-message.php:31
866
- msgid "Looking for More Features?"
867
- msgstr ""
868
-
869
- #: src/admin-views/admin-welcome-message.php:22
870
- msgid "Getting Started"
871
- msgstr ""
872
-
873
- #: src/admin-views/admin-welcome-message.php:64
874
- msgid "Sign Up"
875
- msgstr ""
876
-
877
- #: src/admin-views/admin-welcome-message.php:59
878
- msgid "News and Announcements"
879
- msgstr ""
880
-
881
- #: src/admin-views/admin-welcome-message.php:55
882
- msgid "Developer News"
883
- msgstr ""
884
-
885
- #: src/admin-views/admin-welcome-message.php:51
886
- msgid "Stay in touch with Event Tickets. We send out periodic updates, key developer notices, and even the occasional discount."
887
- msgstr ""
888
-
889
- #: src/admin-views/admin-welcome-message.php:50
890
- msgid "Newsletter Signup"
891
- msgstr ""
892
-
893
- #: src/admin-views/admin-welcome-message.php:47
894
- msgid "Rate It"
895
- msgstr ""
896
-
897
- #: src/admin-views/admin-welcome-message.php:46
898
- msgid "Rate us today!"
899
- msgstr ""
900
-
901
- #: src/admin-views/admin-welcome-message.php:45
902
- msgid "Your ratings help us bring Event Tickets to more users. More happy users mean more support, more features, and more of everything you know and love about Event Tickets. We couldn't do this without your support."
903
- msgstr ""
904
-
905
- #: src/admin-views/admin-welcome-message.php:44
906
- msgid "We Need Your Help"
907
- msgstr ""
908
-
909
- #: src/admin-views/admin-welcome-message.php:10
910
- msgid "You are running Version %s and deserve a hug :-)"
911
- msgstr ""
912
-
913
- #: src/Tribe/Attendees.php:490
914
- msgctxt "attendee export"
915
- msgid "Customer Email Address"
916
- msgstr ""
917
-
918
- #: src/Tribe/Attendees.php:489
919
- msgctxt "attendee export"
920
- msgid "Customer Name"
921
- msgstr ""
922
-
923
- #: src/Tribe/Attendees.php:488
924
- msgctxt "attendee export"
925
- msgid "Ticket #"
926
- msgstr ""
927
-
928
- #: src/Tribe/Attendees.php:487
929
- msgctxt "attendee export"
930
- msgid "Order Status"
931
- msgstr ""
932
-
933
- #: src/Tribe/Attendees.php:486
934
- msgctxt "attendee export"
935
- msgid "Order ID"
936
- msgstr ""
937
-
938
- #: src/Tribe/Attendees.php:274
939
- msgid "You must first select one or more tickets before you can move them!"
940
- msgstr ""
941
-
942
- #: src/Tribe/Attendees.php:79
943
- msgid "Post type"
944
- msgstr ""
945
-
946
- #: src/Tribe/Attendees.php:106
947
- msgctxt "attendee event actions"
948
- msgid "View"
949
- msgstr ""
950
-
951
- #: src/Tribe/Attendees.php:105
952
- msgctxt "attendee event actions"
953
- msgid "Edit"
954
- msgstr ""
955
-
956
- #: src/Tribe/RSVP.php:279
957
- msgid "RSVP Ticket"
958
- msgstr ""
959
-
960
- #: src/Tribe/RSVP.php:278
961
- msgid "RSVP Tickets"
962
- msgstr ""
963
-
964
- #: src/Tribe/RSVP.php:162
965
- msgctxt "ticket provider"
966
- msgid "RSVP"
967
- msgstr ""
968
-
969
- #: src/Tribe/RSVP/Attendance_Totals.php:39
970
- msgctxt "attendee summary"
971
- msgid "Not Going:"
972
- msgstr ""
973
-
974
- #: src/Tribe/RSVP/Attendance_Totals.php:38
975
- msgctxt "attendee summary"
976
- msgid "Going:"
977
- msgstr ""
978
-
979
- #: src/Tribe/RSVP/Attendance_Totals.php:37
980
- msgctxt "attendee summary"
981
- msgid "Total RSVPs:"
982
- msgstr ""
983
-
984
- #: src/Tribe/Assets.php:89
985
- msgid "Are you sure you want to delete this ticket? This cannot be undone."
986
- msgstr ""
987
-
988
- #: src/Tribe/Main.php:692
989
- msgctxt "button text"
990
- msgid "RSVP"
991
- msgstr ""
992
-
993
- #: src/Tribe/Main.php:557
994
- msgid "Welcome to Event Tickets"
995
- msgstr ""
996
-
997
- #: src/Tribe/CSV_Importer/Rows.php:49
998
- msgctxt "post type label"
999
- msgid "RSVPs"
1000
- msgstr ""
1001
-
1002
- #: src/Tribe/CSV_Importer/Rows.php:35
1003
- msgctxt "import type"
1004
- msgid "RSVPs"
1005
- msgstr ""
1006
-
1007
- #: src/Tribe/Attendees_Table.php:331
1008
- msgctxt "row action"
1009
- msgid "Delete"
1010
- msgstr ""
1011
-
1012
- #: src/Tribe/Attendees_Table.php:319
1013
- msgctxt "row action"
1014
- msgid "Move"
1015
- msgstr ""
1016
-
1017
- #: src/Tribe/Attendees_Table.php:309
1018
- msgctxt "row action"
1019
- msgid "Check In"
1020
- msgstr ""
1021
-
1022
- #: src/Tribe/Attendees_Table.php:310
1023
- msgctxt "row action"
1024
- msgid "Undo Check In"
1025
- msgstr ""
1026
-
1027
- #: src/Tribe/Attendees_Table.php:55
1028
- msgctxt "attendee table"
1029
- msgid "Status"
1030
- msgstr ""
1031
-
1032
- #: src/Tribe/Attendees_Table.php:52
1033
- msgctxt "attendee table"
1034
- msgid "Ticket"
1035
- msgstr ""
1036
-
1037
- #: src/Tribe/Attendance_Totals.php:30
1038
- msgctxt "attendee summary"
1039
- msgid "Deleted Attendees:"
1040
- msgstr ""
1041
-
1042
- #: src/Tribe/Attendees.php:133
1043
- msgctxt "attendee summary"
1044
- msgid "Checked in:"
1045
- msgstr ""
1046
-
1047
- #: src/Tribe/Admin/Ticket_History.php:65
1048
- msgid "No history available"
1049
- msgstr ""
1050
-
1051
- #: src/Tribe/Admin/Ticket_History.php:35
1052
- msgctxt "attendee table"
1053
- msgid "Hide history"
1054
- msgstr ""
1055
-
1056
- #: src/Tribe/Admin/Ticket_History.php:34
1057
- msgctxt "attendee table"
1058
- msgid "View history"
1059
- msgstr ""
1060
-
1061
- #: src/Tribe/Admin/Move_Tickets.php:760
1062
- msgid "This ticket was moved to %1$s from %2$s"
1063
- msgstr ""
1064
-
1065
- #: src/Tribe/Admin/Move_Tickets.php:580
1066
- msgid "This ticket was moved to %1$s %2$s from %3$s %4$s"
1067
- msgstr ""
1068
-
1069
- #: src/Tribe/Admin/Move_Tickets.php:462
1070
- msgid "%1$d attendee for %2$s was successfully %3$s. Please adjust capacity and stock manually as needed. This attendee will receive an email notifying them of the change."
1071
- msgid_plural "%1$d attendees for %2$s were successfully %3$s. Please adjust capacity and stock manually as needed. These attendees will receive an email notifying them of the change."
1072
- msgstr[0] ""
1073
- msgstr[1] ""
1074
- msgstr[2] ""
1075
- msgstr[3] ""
1076
- msgstr[4] ""
1077
- msgstr[5] ""
1078
-
1079
- #: src/Tribe/Admin/Move_Tickets.php:455
1080
- msgctxt "moved tickets success message fragment"
1081
- msgid "moved to %s and"
1082
- msgstr ""
1083
-
1084
- #: src/Tribe/Admin/Move_Tickets.php:448
1085
- msgctxt "moved tickets success message fragment"
1086
- msgid "assigned to %s"
1087
- msgstr ""
1088
-
1089
- #: src/Tribe/Admin/Move_Tickets.php:440
1090
- msgid "Tickets could not be moved: there was an unexpected failure during reassignment."
1091
- msgstr ""
1092
-
1093
- #: src/Tribe/Admin/Move_Tickets.php:432
1094
- msgid "Tickets could not be moved: valid ticket IDs or a destination ID were not provided."
1095
- msgstr ""
1096
-
1097
- #: src/Tribe/Admin/Move_Tickets.php:224
1098
- msgctxt "attendee screen bulk actions"
1099
- msgid "Move"
1100
- msgstr ""
1101
-
1102
- #: src/Tribe/Admin/Move_Tickets.php:116
1103
- msgid "Loading, please wait&hellip;"
1104
- msgstr ""
1105
-
1106
- #: src/Tribe/Admin/Move_Tickets.php:115
1107
- msgid "No ticket types were found for this post."
1108
- msgstr ""
1109
-
1110
- #: src/Tribe/Admin/Move_Tickets.php:114
1111
- msgid "No results found - you may need to widen your search criteria."
1112
- msgstr ""
1113
-
1114
- #: src/Tribe/Admin/Move_Tickets.php:113
1115
- msgid "Unable to update the post list. Please refresh the page and try again."
1116
- msgstr ""
1117
-
1118
- #: src/Tribe/Admin/Move_Tickets.php:112
1119
- msgid "Woops! We could not complete the requested operation due to an unforeseen problem."
1120
- msgstr ""
1121
-
1122
- #: src/Tribe/Admin/Move_Tickets.php:77
1123
- msgid "Move Attendees"
1124
- msgstr ""
1125
-
1126
- #: src/Tribe/Admin/Move_Ticket_Types.php:301
1127
- #: src/Tribe/Admin/Move_Tickets.php:701
1128
- msgid "Changes to your tickets from %s"
1129
- msgstr ""
1130
-
1131
- #: src/Tribe/Admin/Move_Ticket_Types.php:204
1132
- msgid "Ticket type was moved to <a href=\"%1$s\" target=\"_blank\">%2$s</a> from <a href=\"%3$s\" target=\"_blank\">%4$s</a>"
1133
- msgstr ""
1134
-
1135
- #: src/Tribe/Admin/Move_Ticket_Types.php:114
1136
- msgid "Ticket type %1$s for %2$s was successfully moved to %3$s. All previously sold tickets of this type have been transferred to %3$s. Please adjust capacity and stock manually as needed. %1$s ticket holders have received an email notifying them of the change. You may now close this window!"
1137
- msgstr ""
1138
-
1139
- #: src/Tribe/Admin/Move_Ticket_Types.php:108
1140
- msgid "Ticket type could not be moved: unexpected failure during reassignment."
1141
- msgstr ""
1142
-
1143
- #: src/Tribe/Admin/Move_Ticket_Types.php:102
1144
- msgid "Ticket type could not be moved: the ticket type or destination post was invalid."
1145
- msgstr ""
1146
-
1147
- #: src/Tribe/Admin/Move_Ticket_Types.php:72
1148
- #: src/Tribe/Admin/Move_Tickets.php:249
1149
- msgid "All supported types"
1150
- msgstr ""
1151
-
1152
- #: src/Tribe/Admin/Move_Ticket_Types.php:28
1153
- msgid "Move Ticket Types"
1154
- msgstr ""
1155
-
1156
- #: common/src/admin-views/tribe-options-licenses.php:30
1157
- msgid "Not seeing an update but expecting one? In WordPress, go to %1$sDashboard > Updates%2$s and click \"Check Again\"."
1158
- msgstr ""
1159
-
1160
- #: common/src/admin-views/tribe-options-licenses.php:25
1161
- msgid "If you're seeing a red message telling you that your key isn't valid or is out of installs, visit %1$s to manage your installs or renew / upgrade your license."
1162
- msgstr ""
1163
-
1164
- #: common/src/admin-views/tribe-options-licenses.php:22
1165
- msgid "Each paid add-on has its own unique license key. Simply paste the key into its appropriate field below, and give it a moment to validate. You know you're set when a green expiration date appears alongside a \"valid\" message."
1166
- msgstr ""
1167
-
1168
- #: common/src/admin-views/tribe-options-licenses.php:15
1169
- msgid "The license key you received when completing your purchase from %1$s will grant you access to support and updates until it expires. You do not need to enter the key below for the plugins to work, but you will need to enter it to get automatic updates. %3$sFind your license keys at %2$s%4$s."
1170
- msgstr ""
1171
-
1172
- #: common/src/admin-views/tribe-options-licenses.php:11
1173
- #: common/src/admin-views/tribe-options-licenses.php:16
1174
- msgid " (opens in new window)"
1175
- msgstr ""
1176
-
1177
- #: common/src/admin-views/tribe-options-help.php:55
1178
- msgid "Event Log"
1179
- msgstr ""
1180
-
1181
- #: common/src/admin-views/tribe-options-help.php:42
1182
- msgid "The details of your calendar plugin and settings is often needed for you or our staff to help troubleshoot an issue. Please opt-in below to automatically share your system information with our support team. This will allow us to assist you faster if you post in our forums."
1183
- msgstr ""
1184
-
1185
- #: common/src/admin-views/app-shop.php:26
1186
- msgid "Buy This Add-On"
1187
- msgstr ""
1188
-
1189
- #: common/src/admin-views/app-shop.php:5
1190
- msgid "Browse All Add-Ons"
1191
- msgstr ""
1192
-
1193
- #: common/src/admin-views/app-shop.php:4
1194
- msgid "Events Add-Ons"
1195
- msgstr ""
1196
-
1197
- #: common/src/Tribe/Languages/Locations.php:110
1198
- msgid "C&ocirc;te d'Ivoire"
1199
- msgstr ""
1200
-
1201
- #: common/src/Tribe/Support.php:370
1202
- msgid "Unique System Info Key Generated"
1203
- msgstr ""
1204
-
1205
- #: common/src/Tribe/Support.php:356 common/src/Tribe/Support.php:382
1206
- msgid "Permission Error"
1207
- msgstr ""
1208
-
1209
- #: common/src/Tribe/Support.php:323 common/src/Tribe/Support.php:328
1210
- msgid "Invalid Key"
1211
- msgstr ""
1212
-
1213
- #: common/src/Tribe/Support.php:304
1214
- msgid "Your system information will only be used by the Modern Tribe support team. All information is stored securely. We do not share this information with any third parties."
1215
- msgstr ""
1216
-
1217
- #: common/src/Tribe/Support.php:303
1218
- msgid "Yes, automatically share my system information with the Modern Tribe support team"
1219
- msgstr ""
1220
-
1221
- #: common/src/Tribe/PUE/Notices.php:383
1222
- msgctxt "formatted plugin list"
1223
- msgid "%1$s and %2$s"
1224
- msgstr ""
1225
-
1226
- #: common/src/Tribe/PUE/Notices.php:302
1227
- msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
1228
- msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
1229
- msgstr[0] ""
1230
- msgstr[1] ""
1231
- msgstr[2] ""
1232
- msgstr[3] ""
1233
- msgstr[4] ""
1234
- msgstr[5] ""
1235
-
1236
- #: common/src/Tribe/PUE/Notices.php:270
1237
- msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
1238
- msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
1239
- msgstr[0] ""
1240
- msgstr[1] ""
1241
- msgstr[2] ""
1242
- msgstr[3] ""
1243
- msgstr[4] ""
1244
- msgstr[5] ""
1245
-
1246
- #: common/src/Tribe/PUE/Checker.php:1054
1247
- msgid "There is an update for %s. %sRenew your license%s to get access to bug fixes, security updates, and new features."
1248
- msgstr ""
1249
-
1250
- #: common/src/Tribe/PUE/Checker.php:997
1251
- msgid "There is an update for %s. You'll need to %scheck your license%s to have access to updates, downloads, and support."
1252
- msgstr ""
1253
-
1254
- #: common/src/Tribe/PUE/Checker.php:961 common/src/Tribe/PUE/Notices.php:285
1255
- msgid " (opens in a new window)"
1256
- msgstr ""
1257
-
1258
- #: common/src/Tribe/PUE/Checker.php:959 common/src/Tribe/PUE/Notices.php:283
1259
- msgid "Renew Your License Now"
1260
- msgstr ""
1261
-
1262
- #: common/src/Tribe/Main.php:293
1263
- msgid ": Selected 1 row"
1264
- msgstr ""
1265
-
1266
- #: common/src/Tribe/Main.php:292
1267
- msgid ": Selected %d rows"
1268
- msgstr ""
1269
-
1270
- #: common/src/Tribe/Main.php:287
1271
- msgid "Previous"
1272
- msgstr ""
1273
-
1274
- #: common/src/Tribe/Main.php:286 common/src/Tribe/Main.php:302
1275
- msgid "Next"
1276
- msgstr ""
1277
-
1278
- #: common/src/Tribe/Main.php:285
1279
- msgid "All"
1280
- msgstr ""
1281
-
1282
- #: common/src/Tribe/Main.php:280
1283
- msgid "Search:"
1284
- msgstr ""
1285
-
1286
- #: common/src/Tribe/Main.php:279
1287
- msgid "No matching records found"
1288
- msgstr ""
1289
-
1290
- #: common/src/Tribe/Main.php:278
1291
- msgid "(filtered from _MAX_ total entries)"
1292
- msgstr ""
1293
-
1294
- #: common/src/Tribe/Main.php:277
1295
- msgid "Showing 0 to 0 of 0 entries"
1296
- msgstr ""
1297
-
1298
- #: common/src/Tribe/Main.php:276
1299
- msgid "Showing _START_ to _END_ of _TOTAL_ entries"
1300
- msgstr ""
1301
-
1302
- #: common/src/Tribe/Main.php:275
1303
- msgid "No data available in table"
1304
- msgstr ""
1305
-
1306
- #: common/src/Tribe/Main.php:274
1307
- msgid "Show _MENU_ entries"
1308
- msgstr ""
1309
-
1310
- #: common/src/Tribe/Main.php:272
1311
- msgid ": activate to sort column descending"
1312
- msgstr ""
1313
-
1314
- #: common/src/Tribe/Main.php:271
1315
- msgid ": activate to sort column ascending"
1316
- msgstr ""
1317
-
1318
- #: common/src/Tribe/Main.php:252
1319
- msgid "Press \"Cmd + C\" to copy"
1320
- msgstr ""
1321
-
1322
- #: common/src/Tribe/Main.php:251
1323
- msgid "System info copied"
1324
- msgstr ""
1325
-
1326
- #: common/src/Tribe/Main.php:250
1327
- #: common/src/admin-views/tribe-options-help.php:50
1328
- msgid "Copy to clipboard"
1329
- msgstr ""
1330
-
1331
- #: common/src/Tribe/Error.php:38
1332
- msgid "An Unknown error occurred"
1333
- msgstr ""
1334
-
1335
- #: common/src/Tribe/Admin/Help_Page.php:219 common/src/Tribe/Plugins_API.php:34
1336
- msgid "Event Aggregator"
1337
- msgstr ""
1338
-
1339
- #: common/src/Tribe/Admin/Activation_Page.php:85
1340
- msgid "Return to WordPress Updates"
1341
- msgstr ""
1342
-
1343
- #: common/src/Tribe/Admin/Activation_Page.php:85
1344
- msgid "Go to WordPress Updates page"
1345
- msgstr ""
1346
-
1347
- #: common/src/Tribe/Admin/Activation_Page.php:77
1348
- msgid "Return to Plugins page"
1349
- msgstr ""
1350
-
1351
- #: common/src/Tribe/Admin/Activation_Page.php:77
1352
- msgid "Go to plugins page"
1353
- msgstr ""
1354
-
1355
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:75
1356
- msgid "To begin using %1$s, please install and activate the latest version of %2$s."
1357
- msgstr ""
1358
-
1359
- #: src/Tribe/Tickets.php:1458
1360
- msgid "Tickets are not available as this %s has passed."
1361
- msgstr ""
1362
-
1363
- #: src/Tribe/Assets.php:102 src/Tribe/Metabox.php:548
1364
- msgid "Please enter in without thousand separators and currency symbols."
1365
- msgstr ""
1366
-
1367
- #: common/src/Tribe/Support.php:170
1368
- msgid "English"
1369
- msgstr ""
1370
-
1371
- #: common/src/Tribe/Plugins_API.php:116
1372
- msgid "The Eventbrite Tickets add-on allows you to create & sell tickets through The Events Calendar using the power of %1$sEventbrite%2$s. Whether you’re creating your ticket on the WordPress dashboard or importing the details of an already-existing event from %1$sEventbrite.com%2$s, this add-on brings the power of the Eventbrite API to your calendar."
1373
- msgstr ""
1374
-
1375
- #: common/src/Tribe/Plugins_API.php:71
1376
- msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Shopp, WP eCommerce, or Easy Digital Downloads. Use it on your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your events listings."
1377
- msgstr ""
1378
-
1379
- #: common/src/Tribe/Plugins_API.php:105
1380
- msgctxt "Names of required plugins for Community Tickets"
1381
- msgid "Event Tickets Plus and Community Events"
1382
- msgstr ""
1383
-
1384
- #: common/src/Tribe/Plugins_API.php:104
1385
- msgid "Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin"
1386
- msgstr ""
1387
-
1388
- #: common/src/Tribe/Plugins_API.php:48
1389
- msgid "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more."
1390
- msgstr ""
1391
-
1392
- #: common/src/Tribe/Plugins_API.php:84
1393
- msgid "It is awesome that your calendar is <em>THE PLACE</em> to get hooked up with prime choice ways to spend time. You have more events than Jabba the Hutt has rolls. Too bad visitors are hiring a personal assistant to go through all the choices. Ever wish you could just filter the calendar to only show events in walking distance, on a weekend, that are free? BOOM. Now you can. Introducing… the Filter Bar."
1394
- msgstr ""
1395
-
1396
- #: common/src/Tribe/Admin/Help_Page.php:227 common/src/Tribe/Plugins_API.php:80
1397
- msgid "Filter Bar"
1398
- msgstr ""
1399
-
1400
- #: common/src/Tribe/Credits.php:64
1401
- msgid "Rate %1$sEvent Tickets%2$s %3$s"
1402
- msgstr ""
1403
-
1404
- #: common/src/Tribe/Credits.php:55
1405
- msgid "Rate %1$sThe Events Calendar%2$s %3$s"
1406
- msgstr ""
1407
-
1408
- #: src/Tribe/RSVP.php:843
1409
- msgid "You confirmed you will not be attending %s"
1410
- msgstr ""
1411
-
1412
- #: src/views/tickets/email-non-attendance.php:248
1413
- msgid "Thank you for confirming that you will not be attending the above event."
1414
- msgstr ""
1415
-
1416
- #: src/views/tickets/orders-rsvp.php:87
1417
- msgid "Type: "
1418
- msgstr ""
1419
-
1420
- #. Description of the plugin/theme
1421
- msgid "Event Tickets allows your guests to RSVP from any post, page, or event."
1422
- msgstr ""
1423
-
1424
- #: src/views/tickets/rsvp.php:191
1425
- msgid "Login to RSVP"
1426
- msgstr ""
1427
-
1428
- #: src/views/tickets/orders.php:57
1429
- msgid "Update %s"
1430
- msgstr ""
1431
-
1432
- #: src/views/tickets/orders.php:26
1433
- msgid "View %s"
1434
- msgstr ""
1435
-
1436
- #: src/views/tickets/orders-rsvp.php:63
1437
- msgid "Attendee %d"
1438
- msgstr ""
1439
-
1440
- #: src/views/tickets/orders-rsvp.php:44
1441
- msgid " on %s"
1442
- msgstr ""
1443
-
1444
- #: src/views/tickets/orders-rsvp.php:38
1445
- msgid "Reserved by %1$s (%2$s)"
1446
- msgstr ""
1447
-
1448
- #: src/views/tickets/orders-rsvp.php:29
1449
- msgid "My RSVPs for This %s"
1450
- msgstr ""
1451
-
1452
- #: src/views/tickets/orders-link.php:54
1453
- msgid "View your %s"
1454
- msgstr ""
1455
-
1456
- #: src/views/tickets/orders-link.php:53
1457
- msgid "You have %s for this %s."
1458
- msgstr ""
1459
-
1460
- #: src/views/tickets/orders-link.php:34
1461
- msgid "%d Ticket"
1462
- msgid_plural "%d Tickets"
1463
- msgstr[0] ""
1464
- msgstr[1] ""
1465
- msgstr[2] ""
1466
- msgstr[3] ""
1467
- msgstr[4] ""
1468
- msgstr[5] ""
1469
-
1470
- #: src/views/tickets/orders-link.php:30
1471
- msgid "%d RSVP"
1472
- msgid_plural "%d RSVPs"
1473
- msgstr[0] ""
1474
- msgstr[1] ""
1475
- msgstr[2] ""
1476
- msgstr[3] ""
1477
- msgstr[4] ""
1478
- msgstr[5] ""
1479
-
1480
- #: src/views/shortcodes/my-attendance-list.php:32
1481
- msgid "You have not indicated your attendance for any upcoming events."
1482
- msgstr ""
1483
-
1484
- #: src/views/shortcodes/my-attendance-list-logged-out.php:12
1485
- msgid "To see a list of events you are attending you will need to login."
1486
- msgstr ""
1487
-
1488
- #: src/admin-views/tribe-options-tickets.php:101
1489
- msgid "You can require that users log into your site before they are able to RSVP (or buy tickets). Please review your WordPress Membership option (via the General Settings admin screen) before adjusting this setting."
1490
- msgstr ""
1491
-
1492
- #: src/admin-views/tribe-options-tickets.php:96
1493
- msgid "Login requirements"
1494
- msgstr ""
1495
-
1496
- #: src/admin-views/tribe-options-tickets.php:37
1497
- msgid "Require users to log in before they RSVP"
1498
- msgstr ""
1499
-
1500
- #: src/Tribe/Tickets_View.php:731
1501
- msgid "This RSVP is no longer active."
1502
- msgstr ""
1503
-
1504
- #: src/Tribe/Tickets_View.php:665
1505
- msgid "Ticket"
1506
- msgstr ""
1507
-
1508
- #: src/Tribe/Tickets_View.php:553
1509
- msgid "Not Going"
1510
- msgstr ""
1511
-
1512
- #: src/Tribe/Tickets_View.php:552
1513
- msgid "Going"
1514
- msgstr ""
1515
-
1516
- #: src/Tribe/Tickets.php:1464
1517
- msgid "There are no tickets available at this time."
1518
- msgstr ""
1519
-
1520
- #: src/Tribe/Tickets.php:1462
1521
- msgid "Tickets are no longer available."
1522
- msgstr ""
1523
-
1524
- #: src/Tribe/Tickets.php:1460
1525
- msgid "Tickets are not yet available."
1526
- msgstr ""
1527
-
1528
- #: src/Tribe/Main.php:692
1529
- msgid "Buy"
1530
- msgstr ""
1531
-
1532
- #: common/src/Tribe/Cost_Utils.php:114 src/Tribe/JSON_LD/Order.php:106
1533
- msgid "Free"
1534
- msgstr ""
1535
-
1536
- #: src/Tribe/Tickets_View.php:661
1537
- msgid "RSVPs"
1538
- msgstr ""
1539
-
1540
- #: src/Tribe/CSV_Importer/RSVP_Importer.php:237
1541
- msgid "Recurring event tickets are not supported, event %s."
1542
- msgstr ""
1543
-
1544
- #: src/Tribe/CSV_Importer/Column_Names.php:41
1545
- msgid "Ticket Stock"
1546
- msgstr ""
1547
-
1548
- #: src/Tribe/CSV_Importer/Column_Names.php:40
1549
- msgid "Ticket End Sale Time"
1550
- msgstr ""
1551
-
1552
- #: src/Tribe/CSV_Importer/Column_Names.php:39
1553
- msgid "Ticket End Sale Date"
1554
- msgstr ""
1555
-
1556
- #: src/Tribe/CSV_Importer/Column_Names.php:38
1557
- msgid "Ticket Start Sale Time"
1558
- msgstr ""
1559
-
1560
- #: src/Tribe/CSV_Importer/Column_Names.php:37
1561
- msgid "Ticket Start Sale Date"
1562
- msgstr ""
1563
-
1564
- #: src/Tribe/CSV_Importer/Column_Names.php:36
1565
- msgid "Ticket Description"
1566
- msgstr ""
1567
-
1568
- #: src/Tribe/CSV_Importer/Column_Names.php:35
1569
- msgid "Ticket Name"
1570
- msgstr ""
1571
-
1572
- #: src/Tribe/CSV_Importer/Column_Names.php:34
1573
- msgid "Event Name or ID or Slug"
1574
- msgstr ""
1575
-
1576
- #: common/src/admin-views/event-log.php:117
1577
- msgid "Download log"
1578
- msgstr ""
1579
-
1580
- #: common/src/admin-views/event-log.php:100
1581
- msgid "The selected log file is empty or has not been generated yet."
1582
- msgstr ""
1583
-
1584
- #: common/src/admin-views/event-log.php:43
1585
- msgid "Method"
1586
- msgstr ""
1587
-
1588
- #: common/src/admin-views/event-log.php:21
1589
- msgid "Logging level"
1590
- msgstr ""
1591
-
1592
- #: common/src/Tribe/Validate.php:176
1593
- msgid "%s must contain numbers, letters, dashes and undescores only"
1594
- msgstr ""
1595
-
1596
- #: common/src/Tribe/Log.php:376
1597
- msgid "Full debug (all events)"
1598
- msgstr ""
1599
-
1600
- #: common/src/Tribe/Log.php:375
1601
- msgid "Warnings and errors"
1602
- msgstr ""
1603
-
1604
- #: common/src/Tribe/Log.php:374
1605
- msgid "Only errors"
1606
- msgstr ""
1607
-
1608
- #: common/src/Tribe/Log.php:373
1609
- msgid "Disabled"
1610
- msgstr ""
1611
-
1612
- #: common/src/Tribe/Log.php:274
1613
- msgid "Cannot set %s as the current logging engine"
1614
- msgstr ""
1615
-
1616
- #: common/src/Tribe/Log/Null_Logger.php:26
1617
- msgid "Null logger (will log nothing)"
1618
- msgstr ""
1619
-
1620
- #: common/src/Tribe/Log/File_Logger.php:128
1621
- msgid "Default (uses temporary files)"
1622
- msgstr ""
1623
-
1624
- #: common/src/Tribe/Log/Admin.php:148
1625
- msgctxt "log engines"
1626
- msgid "None currently available"
1627
- msgstr ""
1628
-
1629
- #: common/src/Tribe/Log/Admin.php:133
1630
- msgctxt "log selector"
1631
- msgid "None currently available"
1632
- msgstr ""
1633
-
1634
- #: src/views/tickets/rsvp.php:179
1635
- msgid "Don't list me on the public attendee list"
1636
- msgstr ""
1637
-
1638
- #: src/views/tickets/rsvp.php:122
1639
- msgid "Send RSVP confirmation to:"
1640
- msgstr ""
1641
-
1642
- #: src/views/tickets/rsvp.php:50
1643
- msgid "Please fill in the RSVP confirmation name and email fields."
1644
- msgstr ""
1645
-
1646
- #: src/template-tags/tickets.php:421
1647
- msgctxt "ticket stock message (cancelled stock)"
1648
- msgid "%1$d Cancelled"
1649
- msgstr ""
1650
-
1651
- #: src/Tribe/Assets.php:95
1652
- msgid "It looks like you have modified your shared capacity setting but have not saved or updated the post."
1653
- msgstr ""
1654
-
1655
- #: src/Tribe/Attendees_Table.php:410
1656
- msgid "View order"
1657
- msgstr ""
1658
-
1659
- #: common/src/admin-views/tribe-options-help.php:52
1660
- msgid "Recent Template Changes"
1661
- msgstr ""
1662
-
1663
- #: common/src/Tribe/Support/Template_Checker_Report.php:115
1664
- msgid "Information about recent template changes and potentially impacted template overrides is provided below."
1665
- msgstr ""
1666
-
1667
- #: common/src/Tribe/Support/Template_Checker_Report.php:113
1668
- msgid "No notable template changes detected."
1669
- msgstr ""
1670
-
1671
- #: common/src/Tribe/Support/Template_Checker_Report.php:97
1672
- msgid "based on %s version"
1673
- msgstr ""
1674
-
1675
- #: common/src/Tribe/Support/Template_Checker_Report.php:96
1676
- msgid "version data missing from override"
1677
- msgstr ""
1678
-
1679
- #: common/src/Tribe/Support/Template_Checker_Report.php:92
1680
- msgid "Existing theme overrides that may need revision:"
1681
- msgstr ""
1682
-
1683
- #: common/src/Tribe/Support/Template_Checker_Report.php:82
1684
- msgid "Templates introduced or updated with this release (%s):"
1685
- msgstr ""
1686
-
1687
- #: common/src/Tribe/Support/Template_Checker_Report.php:78
1688
- msgid "No notable changes detected"
1689
- msgstr ""
1690
-
1691
- #. Author URI of the plugin/theme
1692
- msgid "http://m.tri.be/28"
1693
- msgstr ""
1694
-
1695
- #. Author of the plugin/theme
1696
- msgid "Modern Tribe, Inc."
1697
- msgstr ""
1698
-
1699
- #: src/views/tickets/rsvp.php:200
1700
- msgid "Confirm RSVP"
1701
- msgstr ""
1702
-
1703
- #: src/views/tickets/rsvp.php:134
1704
- msgid "Full Name"
1705
- msgstr ""
1706
-
1707
- #: src/views/tickets/rsvp.php:96
1708
- msgid "Out of stock!"
1709
- msgstr ""
1710
-
1711
- #: src/views/tickets/rsvp.php:92
1712
- msgid "%1$s out of %2$s available"
1713
- msgstr ""
1714
-
1715
- #: src/Tribe/Tickets_View.php:661
1716
- msgid "RSVP"
1717
- msgstr ""
1718
-
1719
- #: src/views/tickets/email.php:378
1720
- msgid "Purchaser"
1721
- msgstr ""
1722
-
1723
- #: src/views/tickets/email.php:374
1724
- msgid "Ticket Type"
1725
- msgstr ""
1726
-
1727
- #: src/views/tickets/email-non-attendance.php:24
1728
- #: src/views/tickets/email-ticket-type-moved.php:25
1729
- #: src/views/tickets/email-tickets-moved.php:26 src/views/tickets/email.php:26
1730
- msgid "Your tickets"
1731
- msgstr ""
1732
-
1733
- #: src/views/tickets/attendees-email.php:24
1734
- msgid "Attendee List"
1735
- msgstr ""
1736
-
1737
- #: src/admin-views/tribe-options-tickets.php:51
1738
- msgid "Post types that can have tickets"
1739
- msgstr ""
1740
-
1741
- #: src/admin-views/editor/panel/settings.php:14
1742
- #: src/admin-views/tribe-options-tickets.php:47
1743
- msgid "Ticket Settings"
1744
- msgstr ""
1745
-
1746
- #: src/admin-views/editor/panel/settings.php:70
1747
- #: src/admin-views/editor/panel/ticket.php:198
1748
- msgid "Cancel"
1749
- msgstr "إلغاء "
1750
-
1751
- #: src/admin-views/editor/fieldset/advanced.php:102
1752
- msgid "End sale:"
1753
- msgstr ""
1754
-
1755
- #: src/admin-views/editor/fieldset/advanced.php:70
1756
- msgid "Start sale:"
1757
- msgstr ""
1758
-
1759
- #: src/admin-views/editor/panel/ticket.php:101
1760
- msgid "Sell using:"
1761
- msgstr ""
1762
-
1763
- #: src/admin-views/editor/panel/ticket.php:60
1764
- msgid "Edit ticket"
1765
- msgstr ""
1766
-
1767
- #: src/admin-views/editor/panel/ticket.php:52
1768
- msgid "Add new ticket"
1769
- msgstr ""
1770
-
1771
- #: src/admin-views/editor/panel/settings.php:56
1772
- msgid "Remove"
1773
- msgstr "حذف"
1774
-
1775
- #: src/admin-views/editor/panel/settings.php:40
1776
- msgid "Select an Image"
1777
- msgstr ""
1778
-
1779
- #: common/src/admin-views/event-log.php:65
1780
- msgid "View"
1781
- msgstr "مشاهدة"
1782
-
1783
- #: src/admin-views/legacy-ticket-fields.php:28
1784
- msgid "(Current sale price - this can be managed via the product editor)"
1785
- msgstr ""
1786
-
1787
- #: src/admin-views/legacy-ticket-fields.php:24
1788
- msgid "Sale Price:"
1789
- msgstr "سعر العرض:"
1790
-
1791
- #: src/admin-views/legacy-ticket-fields.php:19
1792
- msgid "(0 or empty for free tickets)"
1793
- msgstr ""
1794
-
1795
- #: src/admin-views/legacy-ticket-fields.php:15
1796
- msgid "Price:"
1797
- msgstr "السعر:"
1798
-
1799
- #: src/admin-views/attendees-email.php:59
1800
- msgid "Send Email"
1801
- msgstr ""
1802
-
1803
- #: src/admin-views/attendees-email.php:38
1804
- msgid "Email Address:"
1805
- msgstr ""
1806
-
1807
- #: src/admin-views/attendees-email.php:36
1808
- msgid "or"
1809
- msgstr ""
1810
-
1811
- #: src/admin-views/attendees-email.php:6
1812
- msgid "Select..."
1813
- msgstr "حدد .."
1814
-
1815
- #: src/admin-views/attendees-email.php:33
1816
- msgid "Select a User:"
1817
- msgstr ""
1818
-
1819
- #: src/admin-views/attendees-email.php:27
1820
- msgid "Send the attendee list by email"
1821
- msgstr ""
1822
-
1823
- #: src/Tribe/Attendees.php:685
1824
- msgid "Email sent successfully!"
1825
- msgstr ""
1826
-
1827
- #: src/Tribe/Attendees.php:678
1828
- msgid "Error when sending the email"
1829
- msgstr ""
1830
-
1831
- #: src/Tribe/Attendees.php:677
1832
- msgid "Attendee List for: %s"
1833
- msgstr ""
1834
-
1835
- #: src/Tribe/Attendees.php:640 src/Tribe/Attendees.php:656
1836
- msgid "Invalid User ID"
1837
- msgstr ""
1838
-
1839
- #: src/Tribe/Attendees.php:634
1840
- msgid "Invalid Email"
1841
- msgstr ""
1842
-
1843
- #: src/Tribe/Attendees.php:622
1844
- msgid "Empty user and email"
1845
- msgstr ""
1846
-
1847
- #: src/Tribe/Attendees.php:599
1848
- msgid "Invalid Event ID"
1849
- msgstr ""
1850
-
1851
- #: src/Tribe/Attendees.php:616
1852
- msgid "Cheatin Huh?"
1853
- msgstr ""
1854
-
1855
- #: src/Tribe/Attendees.php:570
1856
- msgid "attendees"
1857
- msgstr ""
1858
-
1859
- #: src/Tribe/Attendees.php:519
1860
- msgid "Yes"
1861
- msgstr "نعم"
1862
-
1863
- #: src/Tribe/Attendees.php:305
1864
- msgid "You can use Screen Options to select which columns you want to see. The selection works in the table below, in the email, for print and for the CSV export."
1865
- msgstr ""
1866
-
1867
- #: src/Tribe/Attendees.php:305
1868
- msgid "Columns"
1869
- msgstr "أعمدة"
1870
-
1871
- #: src/Tribe/Attendees.php:270
1872
- msgid "Sending..."
1873
- msgstr ""
1874
-
1875
- #: src/Tribe/Attendees.php:269
1876
- msgid "You need to select a user or type a valid email address"
1877
- msgstr ""
1878
-
1879
- #: src/Tribe/Admin/Columns/Tickets.php:57 src/Tribe/Attendees.php:195
1880
- #: src/Tribe/Tabbed_View/Attendee_Report_Tab.php:22
1881
- #: src/admin-views/attendees.php:21
1882
- msgid "Attendees"
1883
- msgstr ""
1884
-
1885
- #: src/Tribe/Attendees.php:193
1886
- msgid "See who purchased tickets to this event"
1887
- msgstr ""
1888
-
1889
- #: src/Tribe/RSVP.php:1811
1890
- msgid "Post draft updated."
1891
- msgstr "تم تحديث مسودة المقالة."
1892
-
1893
- #: src/Tribe/RSVP.php:1810
1894
- msgid "Post scheduled."
1895
- msgstr ""
1896
-
1897
- #: src/Tribe/RSVP.php:1809
1898
- msgid "Post submitted."
1899
- msgstr "تم إرسال المقالة."
1900
-
1901
- #: src/Tribe/RSVP.php:1806
1902
- msgid "Post published. %1$s"
1903
- msgstr ""
1904
-
1905
- #: src/Tribe/RSVP.php:1802
1906
- msgid "Post updated. %1$s"
1907
- msgstr ""
1908
-
1909
- #: src/Tribe/RSVP.php:1795
1910
- msgid "Return to the %1$sAttendees Report%2$s."
1911
- msgstr ""
1912
-
1913
- #: src/Tribe/RSVP.php:1491
1914
- msgid "(deleted)"
1915
- msgstr ""
1916
-
1917
- #: src/Tribe/RSVP.php:1186
1918
- msgid "In order to RSVP, you must enter your name and a valid email address."
1919
- msgstr ""
1920
-
1921
- #: src/Tribe/RSVP.php:1181
1922
- msgid "You can't RSVP more than the total remaining tickets."
1923
- msgstr ""
1924
-
1925
- #: src/Tribe/RSVP.php:1175
1926
- msgid "Your RSVP has been received! Check your email for your RSVP confirmation."
1927
- msgstr ""
1928
-
1929
- #: src/Tribe/RSVP.php:755
1930
- msgid "Your tickets from %s"
1931
- msgstr ""
1932
-
1933
- #: src/Tribe/RSVP.php:240
1934
- msgctxt "Attendee number"
1935
- msgid "Attendee %1$s"
1936
- msgstr ""
1937
-
1938
- #: src/Tribe/Assets.php:31
1939
- msgid "Set as ticket header"
1940
- msgstr ""
1941
-
1942
- #: src/Tribe/Assets.php:30
1943
- msgid "Ticket header image"
1944
- msgstr ""
1945
-
1946
- #: src/Tribe/Main.php:456
1947
- msgid "If you have a valid license for one of our paid plugins, you can %s in our premium support forums. Our support team monitors the forums and will respond to your thread within 24-48 hours (during the week)."
1948
- msgstr ""
1949
-
1950
- #: src/Tribe/Main.php:451
1951
- msgid "Already have Events Tickets Plus? You can %s in our premium support forums. Our support team monitors the forums and will respond to your thread within 24-48 hours (during the week)."
1952
- msgstr ""
1953
-
1954
- #: src/Tribe/Main.php:450 src/Tribe/Main.php:455
1955
- msgid "post a thread"
1956
- msgstr ""
1957
-
1958
- #: src/Tribe/Main.php:448
1959
- msgid "Looking for more immediate support? We offer %1$s with the purchase of any of our premium plugins (like %2$s). Pick up a license and you can post there directly and expect a response within 24-48 hours during weekdays."
1960
- msgstr ""
1961
-
1962
- #: src/Tribe/Main.php:447
1963
- msgid "Events Tickets Plus"
1964
- msgstr ""
1965
-
1966
- #: src/Tribe/Main.php:446
1967
- msgid "premium support on our website"
1968
- msgstr ""
1969
-
1970
- #: src/Tribe/Main.php:444
1971
- msgid "If you have tried the above steps and are still having trouble, you can post a new thread to our %s. Our support staff monitors these forums once a week and would be happy to assist you there."
1972
- msgstr ""
1973
-
1974
- #: src/Tribe/Main.php:443
1975
- msgid "open-source forum on WordPress.org"
1976
- msgstr ""
1977
-
1978
- #: src/Tribe/Main.php:426
1979
- msgid "We are committed to helping you sell tickets for your event. Check out our handy %s to get started."
1980
- msgstr ""
1981
-
1982
- #: src/Tribe/Main.php:424 src/admin-views/admin-welcome-message.php:23
1983
- msgid "New User Primer"
1984
- msgstr ""
1985
-
1986
- #: src/Tribe/Main.php:407
1987
- msgid "Customizing Event Tickets"
1988
- msgstr ""
1989
-
1990
- #: src/Tribe/Main.php:406
1991
- msgid "Troubleshooting common problems"
1992
- msgstr ""
1993
-
1994
- #: src/Tribe/Main.php:405
1995
- msgid "Features overview"
1996
- msgstr ""
1997
-
1998
- #: src/Tribe/Main.php:404
1999
- msgid "Settings overview"
2000
- msgstr ""
2001
-
2002
- #: src/Tribe/Main.php:402
2003
- msgid "Support for Event Tickets"
2004
- msgstr ""
2005
-
2006
- #: src/Tribe/Main.php:243
2007
- msgid "When The Events Calendar and Event Tickets are both activated, The Events Calendar must be running version %1$s or greater. Please %2$supdate now.%3$s"
2008
- msgstr ""
2009
-
2010
- #: src/Tribe/Attendees_Table.php:553
2011
- msgid "Delete"
2012
- msgstr "إلغاء"
2013
-
2014
- #: src/Tribe/Attendees_Table.php:526
2015
- msgid "Filter by purchaser name, ticket #, order # or security code"
2016
- msgstr ""
2017
-
2018
- #: src/Tribe/Attendees_Table.php:520
2019
- msgid "Export"
2020
- msgstr "تصدير"
2021
-
2022
- #: src/Tribe/Attendees_Table.php:519
2023
- #: src/admin-views/admin-welcome-message.php:62 src/views/tickets/rsvp.php:142
2024
- msgid "Email"
2025
- msgstr "البريد الالكتروني"
2026
-
2027
- #: src/Tribe/Attendees_Table.php:518
2028
- msgid "Print"
2029
- msgstr "طباعة"
2030
-
2031
- #: src/Tribe/Attendees_Table.php:552
2032
- msgid "Undo Check in"
2033
- msgstr ""
2034
-
2035
- #: src/Tribe/Attendees_Table.php:551
2036
- msgid "Check in"
2037
- msgstr ""
2038
-
2039
- #: src/views/tickets/email.php:382
2040
- msgid "Security Code"
2041
- msgstr ""
2042
-
2043
- #: src/views/tickets/email.php:370
2044
- msgid "Ticket #"
2045
- msgstr ""
2046
-
2047
- #: src/admin-views/editor/list-row.php:33
2048
- msgid "Ticket Type:"
2049
- msgstr ""
2050
-
2051
- #: src/Tribe/Admin/Ticket_Settings.php:22 src/Tribe/Metabox.php:53
2052
- #: src/Tribe/Tickets_View.php:665 src/admin-views/editor/list-table.php:30
2053
- msgid "Tickets"
2054
- msgstr ""
2055
-
2056
- #: common/src/admin-views/tribe-options-network.php:27
2057
- msgid "Hide the following settings tabs on every site:"
2058
- msgstr ""
2059
-
2060
- #: common/src/admin-views/tribe-options-network.php:19
2061
- msgid "This is where all of the global network settings for Modern Tribe's The Events Calendar can be modified."
2062
- msgstr ""
2063
-
2064
- #: common/src/admin-views/tribe-options-network.php:15
2065
- msgid "Network Settings"
2066
- msgstr "إعدادات الشبكة"
2067
-
2068
- #: common/src/admin-views/tribe-options-licenses.php:47
2069
- msgid "Only license fields for %1$snetwork activated%2$s plugins will be listed on this screen. "
2070
- msgstr ""
2071
-
2072
- #: common/src/admin-views/tribe-options-licenses.php:38
2073
- msgid "%1$s Using our plugins in a multisite network? %2$s Please note that your license key will be applied to the entire network, not just this site."
2074
- msgstr ""
2075
-
2076
- #: common/src/admin-views/tribe-options-help.php:80
2077
- msgid "More..."
2078
- msgstr ""
2079
-
2080
- #: common/src/admin-views/tribe-options-help.php:74
2081
- msgid "News and Tutorials"
2082
- msgstr ""
2083
-
2084
- #: common/src/admin-views/tribe-options-help.php:41
2085
- msgid "System Information"
2086
- msgstr ""
2087
-
2088
- #: common/src/admin-views/tribe-options-help.php:38
2089
- msgid "Read more about our support policy"
2090
- msgstr ""
2091
-
2092
- #: common/src/admin-views/tribe-options-help.php:37
2093
- msgid "Please note that all hands-on support is provided via the forums. You can email or tweet at us… ​but we will probably point you back to the forums 😄"
2094
- msgstr ""
2095
-
2096
- #: common/src/admin-views/tribe-options-help.php:33
2097
- msgid "Search our support forum"
2098
- msgstr ""
2099
-
2100
- #: common/src/admin-views/tribe-options-help.php:33
2101
- msgid "%s. There are very few issues we haven’t seen and it’s likely another user has already asked your question and gotten an answer from our support staff. While posting to the forums is open only to paid customers, they are open for anyone to search and review."
2102
- msgstr ""
2103
-
2104
- #: common/src/admin-views/tribe-options-help.php:32
2105
- msgid "Test for a theme or plugin conflict"
2106
- msgstr ""
2107
-
2108
- #: common/src/admin-views/tribe-options-help.php:32
2109
- msgid "%s. Testing for an existing conflict is the best start for in-depth troubleshooting. We will often ask you to follow these steps when opening a new thread, so doing this ahead of time will be super helpful."
2110
- msgstr ""
2111
-
2112
- #: common/src/admin-views/tribe-options-help.php:31
2113
- msgid "Check our Knowledgebase"
2114
- msgstr ""
2115
-
2116
- #: common/src/admin-views/tribe-options-help.php:31
2117
- msgid "%s. All of the common (and not-so-common) answers to questions we see are here. It’s often the fastest path to finding an answer!"
2118
- msgstr ""
2119
-
2120
- #: common/src/admin-views/tribe-options-help.php:27
2121
- msgid "While the resources above help solve a majority of the issues we see, there are times you might be looking for extra support. If you need assistance using our plugins and would like us to take a look, please follow these steps:"
2122
- msgstr ""
2123
-
2124
- #: common/src/admin-views/tribe-options-help.php:26
2125
- msgid "Getting More Help"
2126
- msgstr ""
2127
-
2128
- #: common/src/admin-views/tribe-options-help.php:21
2129
- msgid "list of available functions"
2130
- msgstr ""
2131
-
2132
- #: common/src/admin-views/tribe-options-help.php:15
2133
- msgid "Knowledgebase"
2134
- msgstr ""
2135
-
2136
- #: common/src/admin-views/tribe-options-help.php:15
2137
- msgid "Our website’s %s is a great place to find tips and tricks for using and customizing our plugins."
2138
- msgstr ""
2139
-
2140
- #: common/src/admin-views/tribe-options-help.php:14
2141
- msgid "Getting Support"
2142
- msgstr ""
2143
-
2144
- #: common/src/admin-views/tribe-options-help.php:11
2145
- msgid "Thanks you for using %s! All of us at Modern Tribe sincerely appreciate your support and we’re excited to see you using our plugins."
2146
- msgstr ""
2147
-
2148
- #: common/src/admin-views/tribe-options-general.php:64
2149
- msgid "Debug Bar Plugin"
2150
- msgstr ""
2151
-
2152
- #: common/src/admin-views/tribe-options-general.php:64
2153
- msgid "Enable this option to log debug information. By default this will log to your server PHP error log. If you'd like to see the log messages in your browser, then we recommend that you install the %s and look for the \"Tribe\" tab in the debug output."
2154
- msgstr ""
2155
-
2156
- #: common/src/admin-views/tribe-options-general.php:58
2157
- msgid "Debug mode"
2158
- msgstr "وضع التصحيح"
2159
-
2160
- #: common/src/admin-views/tribe-options-general.php:40
2161
- msgid "Show The Events Calendar link"
2162
- msgstr ""
2163
-
2164
- #: common/src/admin-views/tribe-options-general.php:35
2165
- msgid "Are you thinking \"Wow, this plugin is amazing! I should say thanks to Modern Tribe for all their hard work.\" The greatest thanks we could ask for is recognition. Add a small text only link at the bottom of your calendar pointing to The Events Calendar project."
2166
- msgstr ""
2167
-
2168
- #: common/src/admin-views/tribe-options-general.php:30
2169
- #: common/src/admin-views/tribe-options-general.php:35
2170
- msgid "See an example of the link"
2171
- msgstr ""
2172
-
2173
- #: common/src/admin-views/tribe-options-general.php:30
2174
- msgid "Are you thinking \"Wow, this plugin is amazing! I should say thanks to Modern Tribe for all their hard work.\" The greatest thanks we could ask for is recognition. Add a small text-only link at the bottom of your calendar pointing to The Events Calendar project."
2175
- msgstr ""
2176
-
2177
- #: common/src/admin-views/tribe-options-general.php:25
2178
- msgid "We hope our plugin is helping you out."
2179
- msgstr ""
2180
-
2181
- #: common/src/admin-views/tribe-options-general.php:20
2182
- msgid "Check out the available add-ons"
2183
- msgstr ""
2184
-
2185
- #: common/src/admin-views/tribe-options-general.php:20
2186
- msgid "Looking for additional functionality including recurring events, custom meta, community events, ticket sales and more?"
2187
- msgstr ""
2188
-
2189
- #: common/src/admin-views/tribe-options-general.php:15
2190
- msgid "Optimize your site's event listings with %1$sThe Events Calendar%2$s, our free calendar plugin. Looking for additional functionality including recurring events, user-submission, advanced ticket sales and more? Check out our %3$spremium add-ons%4$s."
2191
- msgstr ""
2192
-
2193
- #: common/src/admin-views/tribe-options-general.php:10
2194
- msgid "Thank you for using Event Tickets! All of us at Modern Tribe sincerely appreciate your support and we're excited to see you using our plugins. Check out our handy %1$sNew User Primer%2$s to get started."
2195
- msgstr ""
2196
-
2197
- #: common/src/admin-views/tribe-options-display.php:37
2198
- msgid "Select the date format to use in datepickers"
2199
- msgstr ""
2200
-
2201
- #: common/src/admin-views/tribe-options-display.php:36
2202
- msgid "Datepicker Date Format"
2203
- msgstr ""
2204
-
2205
- #: common/src/admin-views/tribe-options-display.php:22
2206
- msgid "Date Format Settings"
2207
- msgstr ""
2208
-
2209
- #: common/src/Tribe/Languages/Locations.php:367
2210
- msgid "Wyoming"
2211
- msgstr "وايومنغ"
2212
-
2213
- #: common/src/Tribe/Languages/Locations.php:366
2214
- msgid "Wisconsin"
2215
- msgstr "ويسكونسن"
2216
-
2217
- #: common/src/Tribe/Languages/Locations.php:365
2218
- msgid "West Virginia"
2219
- msgstr "فرجينيا الغربية"
2220
-
2221
- #: common/src/Tribe/Languages/Locations.php:364
2222
- msgid "Washington"
2223
- msgstr "واشنطن"
2224
-
2225
- #: common/src/Tribe/Languages/Locations.php:363
2226
- msgid "Virginia"
2227
- msgstr "فرجينيا"
2228
-
2229
- #: common/src/Tribe/Languages/Locations.php:362
2230
- msgid "Vermont"
2231
- msgstr "فيرمونت"
2232
-
2233
- #: common/src/Tribe/Languages/Locations.php:361
2234
- msgid "Utah"
2235
- msgstr "يوتا"
2236
-
2237
- #: common/src/Tribe/Languages/Locations.php:360
2238
- msgid "Texas"
2239
- msgstr "تكساس"
2240
-
2241
- #: common/src/Tribe/Languages/Locations.php:359
2242
- msgid "Tennessee"
2243
- msgstr "تينيسي"
2244
-
2245
- #: common/src/Tribe/Languages/Locations.php:358
2246
- msgid "South Dakota"
2247
- msgstr "داكوتا الجنوبية"
2248
-
2249
- #: common/src/Tribe/Languages/Locations.php:357
2250
- msgid "South Carolina"
2251
- msgstr "كارولينا الجنوبية"
2252
-
2253
- #: common/src/Tribe/Languages/Locations.php:356
2254
- msgid "Rhode Island"
2255
- msgstr "رود ايلاند"
2256
-
2257
- #: common/src/Tribe/Languages/Locations.php:355
2258
- msgid "Pennsylvania"
2259
- msgstr "بنسلفانيا"
2260
-
2261
- #: common/src/Tribe/Languages/Locations.php:354
2262
- msgid "Oregon"
2263
- msgstr "أوريغون"
2264
-
2265
- #: common/src/Tribe/Languages/Locations.php:353
2266
- msgid "Oklahoma"
2267
- msgstr "أوكلاهوما"
2268
-
2269
- #: common/src/Tribe/Languages/Locations.php:352
2270
- msgid "Ohio"
2271
- msgstr "أوهايو"
2272
-
2273
- #: common/src/Tribe/Languages/Locations.php:351
2274
- msgid "North Dakota"
2275
- msgstr "North Dakota"
2276
-
2277
- #: common/src/Tribe/Languages/Locations.php:350
2278
- msgid "North Carolina"
2279
- msgstr "كارولاينا الشمالية"
2280
-
2281
- #: common/src/Tribe/Languages/Locations.php:349
2282
- msgid "New York"
2283
- msgstr "New York"
2284
-
2285
- #: common/src/Tribe/Languages/Locations.php:348
2286
- msgid "New Mexico"
2287
- msgstr "نيو مكسيكو"
2288
-
2289
- #: common/src/Tribe/Languages/Locations.php:347
2290
- msgid "New Jersey"
2291
- msgstr "نيو جيرسي"
2292
-
2293
- #: common/src/Tribe/Languages/Locations.php:346
2294
- msgid "New Hampshire"
2295
- msgstr "نيو هامبشاير"
2296
-
2297
- #: common/src/Tribe/Languages/Locations.php:345
2298
- msgid "Nevada"
2299
- msgstr "نيفادا"
2300
-
2301
- #: common/src/Tribe/Languages/Locations.php:344
2302
- msgid "Nebraska"
2303
- msgstr "نبراسكا"
2304
-
2305
- #: common/src/Tribe/Languages/Locations.php:343
2306
- msgid "Montana"
2307
- msgstr "مونتانا"
2308
-
2309
- #: common/src/Tribe/Languages/Locations.php:342
2310
- msgid "Missouri"
2311
- msgstr "ميزوري"
2312
-
2313
- #: common/src/Tribe/Languages/Locations.php:341
2314
- msgid "Mississippi"
2315
- msgstr "ميسيسيبي"
2316
-
2317
- #: common/src/Tribe/Languages/Locations.php:340
2318
- msgid "Minnesota"
2319
- msgstr "مينيسوتا"
2320
-
2321
- #: common/src/Tribe/Languages/Locations.php:339
2322
- msgid "Michigan"
2323
- msgstr "ميشيغان"
2324
-
2325
- #: common/src/Tribe/Languages/Locations.php:338
2326
- msgid "Massachusetts"
2327
- msgstr "ماساتشوستس"
2328
-
2329
- #: common/src/Tribe/Languages/Locations.php:337
2330
- msgid "Maryland"
2331
- msgstr "ميريلاند"
2332
-
2333
- #: common/src/Tribe/Languages/Locations.php:336
2334
- msgid "Maine"
2335
- msgstr "مين"
2336
-
2337
- #: common/src/Tribe/Languages/Locations.php:335
2338
- msgid "Louisiana"
2339
- msgstr "لويزيانا"
2340
-
2341
- #: common/src/Tribe/Languages/Locations.php:334
2342
- msgid "Kentucky"
2343
- msgstr "Kentucky"
2344
-
2345
- #: common/src/Tribe/Languages/Locations.php:333
2346
- msgid "Kansas"
2347
- msgstr "كانساس"
2348
-
2349
- #: common/src/Tribe/Languages/Locations.php:332
2350
- msgid "Iowa"
2351
- msgstr "أيوا"
2352
-
2353
- #: common/src/Tribe/Languages/Locations.php:331
2354
- msgid "Indiana"
2355
- msgstr "Indiana"
2356
-
2357
- #: common/src/Tribe/Languages/Locations.php:330
2358
- msgid "Illinois"
2359
- msgstr "إلينوي"
2360
-
2361
- #: common/src/Tribe/Languages/Locations.php:329
2362
- msgid "Idaho"
2363
- msgstr "ايداهو"
2364
-
2365
- #: common/src/Tribe/Languages/Locations.php:328
2366
- msgid "Hawaii"
2367
- msgstr "هاواي"
2368
-
2369
- #: common/src/Tribe/Languages/Locations.php:326
2370
- msgid "Florida"
2371
- msgstr "فلوريدا"
2372
-
2373
- #: common/src/Tribe/Languages/Locations.php:325
2374
- msgid "District of Columbia"
2375
- msgstr ""
2376
-
2377
- #: common/src/Tribe/Languages/Locations.php:324
2378
- msgid "Delaware"
2379
- msgstr "ديلاوير"
2380
-
2381
- #: common/src/Tribe/Languages/Locations.php:323
2382
- msgid "Connecticut"
2383
- msgstr "كونيتيكت"
2384
-
2385
- #: common/src/Tribe/Languages/Locations.php:322
2386
- msgid "Colorado"
2387
- msgstr "كولورادو"
2388
-
2389
- #: common/src/Tribe/Languages/Locations.php:321
2390
- msgid "California"
2391
- msgstr "كاليفورنيا"
2392
-
2393
- #: common/src/Tribe/Languages/Locations.php:320
2394
- msgid "Arkansas"
2395
- msgstr "أركنسو"
2396
-
2397
- #: common/src/Tribe/Languages/Locations.php:319
2398
- msgid "Arizona"
2399
- msgstr "أريزونا"
2400
-
2401
- #: common/src/Tribe/Languages/Locations.php:318
2402
- msgid "Alaska"
2403
- msgstr "ألاسكا"
2404
-
2405
- #: common/src/Tribe/Languages/Locations.php:317
2406
- msgid "Alabama"
2407
- msgstr "ألاباما"
2408
-
2409
- #: common/src/Tribe/Languages/Locations.php:297
2410
- msgid "Zimbabwe"
2411
- msgstr "زيمبابوي"
2412
-
2413
- #: common/src/Tribe/Languages/Locations.php:296
2414
- msgid "Zambia"
2415
- msgstr "زامبيا"
2416
-
2417
- #: common/src/Tribe/Languages/Locations.php:295
2418
- msgid "Yemen"
2419
- msgstr "اليمن"
2420
-
2421
- #: common/src/Tribe/Languages/Locations.php:294
2422
- msgid "Western Sahara"
2423
- msgstr "الصحراء الغربية"
2424
-
2425
- #: common/src/Tribe/Languages/Locations.php:293
2426
- msgid "Wallis and Futuna Islands"
2427
- msgstr ""
2428
-
2429
- #: common/src/Tribe/Languages/Locations.php:292
2430
- msgid "Virgin Islands (U.S.)"
2431
- msgstr ""
2432
-
2433
- #: common/src/Tribe/Languages/Locations.php:291
2434
- msgid "Virgin Islands (British)"
2435
- msgstr ""
2436
-
2437
- #: common/src/Tribe/Languages/Locations.php:290
2438
- msgid "Viet Nam"
2439
- msgstr ""
2440
-
2441
- #: common/src/Tribe/Languages/Locations.php:289
2442
- msgid "Venezuela"
2443
- msgstr "فنزويلا"
2444
-
2445
- #: common/src/Tribe/Languages/Locations.php:288
2446
- msgid "Vanuatu"
2447
- msgstr "فانواتو"
2448
-
2449
- #: common/src/Tribe/Languages/Locations.php:287
2450
- msgid "Uzbekistan"
2451
- msgstr "أوزبكستان"
2452
-
2453
- #: common/src/Tribe/Languages/Locations.php:286
2454
- msgid "Uruguay"
2455
- msgstr "أورجواي"
2456
-
2457
- #: common/src/Tribe/Languages/Locations.php:285
2458
- msgid "United States Minor Outlying Islands"
2459
- msgstr ""
2460
-
2461
- #: common/src/Tribe/Languages/Locations.php:284
2462
- msgid "United Kingdom"
2463
- msgstr "المملكة المتحدة"
2464
-
2465
- #: common/src/Tribe/Languages/Locations.php:283
2466
- msgid "United Arab Emirates"
2467
- msgstr "الامارات العربية المتحدة"
2468
-
2469
- #: common/src/Tribe/Languages/Locations.php:282
2470
- msgid "Ukraine"
2471
- msgstr "أوكرانيا"
2472
-
2473
- #: common/src/Tribe/Languages/Locations.php:281
2474
- msgid "Uganda"
2475
- msgstr "أوغندا"
2476
-
2477
- #: common/src/Tribe/Languages/Locations.php:280
2478
- msgid "Tuvalu"
2479
- msgstr "توفالو"
2480
-
2481
- #: common/src/Tribe/Languages/Locations.php:279
2482
- msgid "Turks and Caicos Islands"
2483
- msgstr ""
2484
-
2485
- #: common/src/Tribe/Languages/Locations.php:278
2486
- msgid "Turkmenistan"
2487
- msgstr "تركمانستان"
2488
-
2489
- #: common/src/Tribe/Languages/Locations.php:277
2490
- msgid "Turkey"
2491
- msgstr "تركيا"
2492
-
2493
- #: common/src/Tribe/Languages/Locations.php:276
2494
- msgid "Tunisia"
2495
- msgstr "تونس"
2496
-
2497
- #: common/src/Tribe/Languages/Locations.php:275
2498
- msgid "Trinidad and Tobago"
2499
- msgstr ""
2500
-
2501
- #: common/src/Tribe/Languages/Locations.php:274
2502
- msgid "Tonga"
2503
- msgstr "تونجا"
2504
-
2505
- #: common/src/Tribe/Languages/Locations.php:273
2506
- msgid "Tokelau"
2507
- msgstr "توكيلاو"
2508
-
2509
- #: common/src/Tribe/Languages/Locations.php:272
2510
- msgid "Togo"
2511
- msgstr "توجو"
2512
-
2513
- #: common/src/Tribe/Languages/Locations.php:271
2514
- msgid "Thailand"
2515
- msgstr "تايلند"
2516
-
2517
- #: common/src/Tribe/Languages/Locations.php:270
2518
- msgid "Tanzania, United Republic of"
2519
- msgstr ""
2520
-
2521
- #: common/src/Tribe/Languages/Locations.php:269
2522
- msgid "Tajikistan"
2523
- msgstr "طاجكستان"
2524
-
2525
- #: common/src/Tribe/Languages/Locations.php:268
2526
- msgid "Taiwan"
2527
- msgstr "تايوان"
2528
-
2529
- #: common/src/Tribe/Languages/Locations.php:267
2530
- msgid "Syrian Arab Republic"
2531
- msgstr ""
2532
-
2533
- #: common/src/Tribe/Languages/Locations.php:266
2534
- msgid "Switzerland"
2535
- msgstr "سويسرا"
2536
-
2537
- #: common/src/Tribe/Languages/Locations.php:265
2538
- msgid "Sweden"
2539
- msgstr "السويد"
2540
-
2541
- #: common/src/Tribe/Languages/Locations.php:264
2542
- msgid "Swaziland"
2543
- msgstr "سوازيلاند"
2544
-
2545
- #: common/src/Tribe/Languages/Locations.php:263
2546
- msgid "Svalbard and Jan Mayen Islands"
2547
- msgstr ""
2548
-
2549
- #: common/src/Tribe/Languages/Locations.php:262
2550
- msgid "Suriname"
2551
- msgstr "سورينام"
2552
-
2553
- #: common/src/Tribe/Languages/Locations.php:261
2554
- msgid "Sudan"
2555
- msgstr "السودان"
2556
-
2557
- #: common/src/Tribe/Languages/Locations.php:241
2558
- msgid "Saint Pierre and Miquelon"
2559
- msgstr ""
2560
-
2561
- #: common/src/Tribe/Languages/Locations.php:260
2562
- msgid "Sri Lanka"
2563
- msgstr "سريلانكا"
2564
-
2565
- #: common/src/Tribe/Languages/Locations.php:259
2566
- msgid "Spain"
2567
- msgstr "أسبانيا"
2568
-
2569
- #: common/src/Tribe/Languages/Locations.php:258
2570
- msgid "South Georgia, South Sandwich Islands"
2571
- msgstr ""
2572
-
2573
- #: common/src/Tribe/Languages/Locations.php:257
2574
- msgid "South Africa"
2575
- msgstr "جمهورية جنوب افريقيا"
2576
-
2577
- #: common/src/Tribe/Languages/Locations.php:256
2578
- msgid "Somalia"
2579
- msgstr "الصومال"
2580
-
2581
- #: common/src/Tribe/Languages/Locations.php:255
2582
- msgid "Solomon Islands"
2583
- msgstr "جزر سليمان"
2584
-
2585
- #: common/src/Tribe/Languages/Locations.php:254
2586
- msgid "Slovenia"
2587
- msgstr "سلوفينيا"
2588
-
2589
- #: common/src/Tribe/Languages/Locations.php:253
2590
- msgid "Slovakia (Slovak Republic)"
2591
- msgstr ""
2592
-
2593
- #: common/src/Tribe/Languages/Locations.php:251
2594
- msgid "Singapore"
2595
- msgstr "سنغافورة"
2596
-
2597
- #: common/src/Tribe/Languages/Locations.php:250
2598
- msgid "Sierra Leone"
2599
- msgstr "سيراليون"
2600
-
2601
- #: common/src/Tribe/Languages/Locations.php:249
2602
- msgid "Seychelles"
2603
- msgstr "سيشل"
2604
-
2605
- #: common/src/Tribe/Languages/Locations.php:248
2606
- msgid "Serbia"
2607
- msgstr "صربيا"
2608
-
2609
- #: common/src/Tribe/Languages/Locations.php:247
2610
- msgid "Senegal"
2611
- msgstr "السنغال"
2612
-
2613
- #: common/src/Tribe/Languages/Locations.php:246
2614
- msgid "Saudi Arabia"
2615
- msgstr "المملكة العربية السعودية"
2616
-
2617
- #: common/src/Tribe/Languages/Locations.php:244
2618
- msgid "San Marino"
2619
- msgstr "سان مارينو"
2620
-
2621
- #: common/src/Tribe/Languages/Locations.php:243
2622
- msgid "Samoa"
2623
- msgstr "ساموا"
2624
-
2625
- #: common/src/Tribe/Languages/Locations.php:242
2626
- msgid "Saint Vincent and The Grenadines"
2627
- msgstr ""
2628
-
2629
- #: common/src/Tribe/Languages/Locations.php:240
2630
- msgid "Saint Lucia"
2631
- msgstr "سانت لوسيا"
2632
-
2633
- #: common/src/Tribe/Languages/Locations.php:239
2634
- msgid "Saint Kitts and Nevis"
2635
- msgstr ""
2636
-
2637
- #: common/src/Tribe/Languages/Locations.php:236
2638
- msgid "Rwanda"
2639
- msgstr "رواندا"
2640
-
2641
- #: common/src/Tribe/Languages/Locations.php:235
2642
- msgid "Russian Federation"
2643
- msgstr ""
2644
-
2645
- #: common/src/Tribe/Languages/Locations.php:234
2646
- msgid "Romania"
2647
- msgstr "رومانيا"
2648
-
2649
- #: common/src/Tribe/Languages/Locations.php:233
2650
- msgid "Reunion"
2651
- msgstr "ريونيون"
2652
-
2653
- #: common/src/Tribe/Languages/Locations.php:232
2654
- msgid "Qatar"
2655
- msgstr "قطر"
2656
-
2657
- #: common/src/Tribe/Languages/Locations.php:231
2658
- msgid "Puerto Rico"
2659
- msgstr "Puerto Rico"
2660
-
2661
- #: common/src/Tribe/Languages/Locations.php:230
2662
- msgid "Portugal"
2663
- msgstr "البرتغال"
2664
-
2665
- #: common/src/Tribe/Languages/Locations.php:229
2666
- msgid "Poland"
2667
- msgstr "بولندا"
2668
-
2669
- #: common/src/Tribe/Languages/Locations.php:228
2670
- msgid "Pitcairn"
2671
- msgstr "بيتكيرن"
2672
-
2673
- #: common/src/Tribe/Languages/Locations.php:227
2674
- msgid "Philippines"
2675
- msgstr "الفيلبين"
2676
-
2677
- #: common/src/Tribe/Languages/Locations.php:226
2678
- msgid "Peru"
2679
- msgstr "بيرو"
2680
-
2681
- #: common/src/Tribe/Languages/Locations.php:225
2682
- msgid "Paraguay"
2683
- msgstr "باراجواي"
2684
-
2685
- #: common/src/Tribe/Languages/Locations.php:224
2686
- msgid "Papua New Guinea"
2687
- msgstr "بابوا غينيا الجديدة"
2688
-
2689
- #: common/src/Tribe/Languages/Locations.php:223
2690
- msgid "Panama"
2691
- msgstr "بنما"
2692
-
2693
- #: common/src/Tribe/Languages/Locations.php:222
2694
- msgid "Palau"
2695
- msgstr "بالاو"
2696
-
2697
- #: common/src/Tribe/Languages/Locations.php:221
2698
- msgid "Pakistan"
2699
- msgstr "باكستان"
2700
-
2701
- #: common/src/Tribe/Languages/Locations.php:220
2702
- msgid "Oman"
2703
- msgstr "عمان"
2704
-
2705
- #: common/src/Tribe/Languages/Locations.php:219
2706
- msgid "Norway"
2707
- msgstr "النرويج"
2708
-
2709
- #: common/src/Tribe/Languages/Locations.php:218
2710
- msgid "Northern Mariana Islands"
2711
- msgstr "جزر ماريانا الشمالية"
2712
-
2713
- #: common/src/Tribe/Languages/Locations.php:217
2714
- msgid "Norfolk Island"
2715
- msgstr "جزيرة نورفولك"
2716
-
2717
- #: common/src/Tribe/Languages/Locations.php:216
2718
- msgid "Niue"
2719
- msgstr "نيوي"
2720
-
2721
- #: common/src/Tribe/Languages/Locations.php:215
2722
- msgid "Nigeria"
2723
- msgstr "نيجيريا"
2724
-
2725
- #: common/src/Tribe/Languages/Locations.php:214
2726
- msgid "Niger"
2727
- msgstr "النيجر"
2728
-
2729
- #: common/src/Tribe/Languages/Locations.php:213
2730
- msgid "Nicaragua"
2731
- msgstr "نيكاراجوا"
2732
-
2733
- #: common/src/Tribe/Languages/Locations.php:212
2734
- msgid "New Zealand"
2735
- msgstr "نيوزيلاندا"
2736
-
2737
- #: common/src/Tribe/Languages/Locations.php:211
2738
- msgid "New Caledonia"
2739
- msgstr "كاليدونيا الجديدة"
2740
-
2741
- #: common/src/Tribe/Languages/Locations.php:210
2742
- msgid "Netherlands"
2743
- msgstr "هولندا"
2744
-
2745
- #: common/src/Tribe/Languages/Locations.php:209
2746
- msgid "Nepal"
2747
- msgstr "نيبال"
2748
-
2749
- #: common/src/Tribe/Languages/Locations.php:208
2750
- msgid "Nauru"
2751
- msgstr "ناورو"
2752
-
2753
- #: common/src/Tribe/Languages/Locations.php:207
2754
- msgid "Namibia"
2755
- msgstr "ناميبيا"
2756
-
2757
- #: common/src/Tribe/Languages/Locations.php:206
2758
- msgid "Myanmar"
2759
- msgstr "ميانمار"
2760
-
2761
- #: common/src/Tribe/Languages/Locations.php:205
2762
- msgid "Mozambique"
2763
- msgstr "موزمبيق"
2764
-
2765
- #: common/src/Tribe/Languages/Locations.php:204
2766
- msgid "Morocco"
2767
- msgstr "المغرب"
2768
-
2769
- #: common/src/Tribe/Languages/Locations.php:203
2770
- msgid "Montserrat"
2771
- msgstr "مونتسيرات"
2772
-
2773
- #: common/src/Tribe/Languages/Locations.php:202
2774
- msgid "Montenegro"
2775
- msgstr "الجبل الأسود"
2776
-
2777
- #: common/src/Tribe/Languages/Locations.php:201
2778
- msgid "Mongolia"
2779
- msgstr "منغوليا"
2780
-
2781
- #: common/src/Tribe/Languages/Locations.php:200
2782
- msgid "Monaco"
2783
- msgstr "موناكو"
2784
-
2785
- #: common/src/Tribe/Languages/Locations.php:199
2786
- msgid "Moldova, Republic of"
2787
- msgstr ""
2788
-
2789
- #: common/src/Tribe/Languages/Locations.php:198
2790
- msgid "Micronesia, Federated States of"
2791
- msgstr ""
2792
-
2793
- #: common/src/Tribe/Languages/Locations.php:197
2794
- msgid "Mexico"
2795
- msgstr "المكسيك"
2796
-
2797
- #: common/src/Tribe/Languages/Locations.php:196
2798
- msgid "Mayotte"
2799
- msgstr "مايوت "
2800
-
2801
- #: common/src/Tribe/Languages/Locations.php:195
2802
- msgid "Mauritius"
2803
- msgstr "موريشيوس"
2804
-
2805
- #: common/src/Tribe/Languages/Locations.php:194
2806
- msgid "Mauritania"
2807
- msgstr "موريتانيا"
2808
-
2809
- #: common/src/Tribe/Languages/Locations.php:193
2810
- msgid "Martinique"
2811
- msgstr "مارتينيك"
2812
-
2813
- #: common/src/Tribe/Languages/Locations.php:192
2814
- msgid "Marshall Islands"
2815
- msgstr "جزر المارشال"
2816
-
2817
- #: common/src/Tribe/Languages/Locations.php:191
2818
- msgid "Malta"
2819
- msgstr "مالطا"
2820
-
2821
- #: common/src/Tribe/Languages/Locations.php:190
2822
- msgid "Mali"
2823
- msgstr "مالي"
2824
-
2825
- #: common/src/Tribe/Languages/Locations.php:189
2826
- msgid "Maldives"
2827
- msgstr "جزر الملديف"
2828
-
2829
- #: common/src/Tribe/Languages/Locations.php:188
2830
- msgid "Malaysia"
2831
- msgstr "ماليزيا"
2832
-
2833
- #: common/src/Tribe/Languages/Locations.php:187
2834
- msgid "Malawi"
2835
- msgstr "ملاوي"
2836
-
2837
- #: common/src/Tribe/Languages/Locations.php:186
2838
- msgid "Madagascar"
2839
- msgstr "مدغشقر"
2840
-
2841
- #: common/src/Tribe/Languages/Locations.php:185
2842
- msgid "Macedonia"
2843
- msgstr "مقدونيا"
2844
-
2845
- #: common/src/Tribe/Languages/Locations.php:184
2846
- msgid "Macau"
2847
- msgstr "ماكاو الصينية"
2848
-
2849
- #: common/src/Tribe/Languages/Locations.php:183
2850
- msgid "Luxembourg"
2851
- msgstr "لوكسمبورغ"
2852
-
2853
- #: common/src/Tribe/Languages/Locations.php:182
2854
- msgid "Lithuania"
2855
- msgstr "ليتوانيا"
2856
-
2857
- #: common/src/Tribe/Languages/Locations.php:181
2858
- msgid "Liechtenstein"
2859
- msgstr "ليختنشتاين"
2860
-
2861
- #: common/src/Tribe/Languages/Locations.php:180
2862
- msgid "Libya"
2863
- msgstr "ليبيا"
2864
-
2865
- #: common/src/Tribe/Languages/Locations.php:179
2866
- msgid "Liberia"
2867
- msgstr "ليبيريا"
2868
-
2869
- #: common/src/Tribe/Languages/Locations.php:178
2870
- msgid "Lesotho"
2871
- msgstr "ليسوتو"
2872
-
2873
- #: common/src/Tribe/Languages/Locations.php:177
2874
- msgid "Lebanon"
2875
- msgstr "لبنان"
2876
-
2877
- #: common/src/Tribe/Languages/Locations.php:176
2878
- msgid "Latvia"
2879
- msgstr "لاتفيا"
2880
-
2881
- #: common/src/Tribe/Languages/Locations.php:175
2882
- msgid "Lao People's Democratic Republic"
2883
- msgstr ""
2884
-
2885
- #: common/src/Tribe/Languages/Locations.php:174
2886
- msgid "Kyrgyzstan"
2887
- msgstr "قرغيزستان"
2888
-
2889
- #: common/src/Tribe/Languages/Locations.php:173
2890
- msgid "Kuwait"
2891
- msgstr "الكويت"
2892
-
2893
- #: common/src/Tribe/Languages/Locations.php:172
2894
- msgid "Korea, Republic of"
2895
- msgstr ""
2896
-
2897
- #: common/src/Tribe/Languages/Locations.php:171
2898
- msgid "Korea, Democratic People's Republic of"
2899
- msgstr ""
2900
-
2901
- #: common/src/Tribe/Languages/Locations.php:170
2902
- msgid "Kiribati"
2903
- msgstr "كيريباتي"
2904
-
2905
- #: common/src/Tribe/Languages/Locations.php:169
2906
- msgid "Kenya"
2907
- msgstr "كينيا"
2908
-
2909
- #: common/src/Tribe/Languages/Locations.php:168
2910
- msgid "Kazakhstan"
2911
- msgstr "كازاخستان"
2912
-
2913
- #: common/src/Tribe/Languages/Locations.php:167
2914
- msgid "Jordan"
2915
- msgstr "الأردن"
2916
-
2917
- #: common/src/Tribe/Languages/Locations.php:166
2918
- msgid "Japan"
2919
- msgstr "اليابان"
2920
-
2921
- #: common/src/Tribe/Languages/Locations.php:165
2922
- msgid "Jamaica"
2923
- msgstr "جامايكا"
2924
-
2925
- #: common/src/Tribe/Languages/Locations.php:164
2926
- msgid "Italy"
2927
- msgstr "ايطاليا"
2928
-
2929
- #: common/src/Tribe/Languages/Locations.php:163
2930
- msgid "Israel"
2931
- msgstr "اسرائيل"
2932
-
2933
- #: common/src/Tribe/Languages/Locations.php:162
2934
- msgid "Ireland"
2935
- msgstr "أيرلندا"
2936
-
2937
- #: common/src/Tribe/Languages/Locations.php:161
2938
- msgid "Iraq"
2939
- msgstr "العراق"
2940
-
2941
- #: common/src/Tribe/Languages/Locations.php:160
2942
- msgid "Iran, Islamic Republic of"
2943
- msgstr ""
2944
-
2945
- #: common/src/Tribe/Languages/Locations.php:159
2946
- msgid "Indonesia"
2947
- msgstr "اندونيسيا"
2948
-
2949
- #: common/src/Tribe/Languages/Locations.php:158
2950
- msgid "India"
2951
- msgstr "الهند"
2952
-
2953
- #: common/src/Tribe/Languages/Locations.php:157
2954
- msgid "Iceland"
2955
- msgstr "أيسلندا"
2956
-
2957
- #: common/src/Tribe/Languages/Locations.php:156
2958
- msgid "Hungary"
2959
- msgstr "المجر"
2960
-
2961
- #: common/src/Tribe/Languages/Locations.php:155
2962
- msgid "Hong Kong"
2963
- msgstr "هونج كونج الصينية"
2964
-
2965
- #: common/src/Tribe/Languages/Locations.php:154
2966
- msgid "Honduras"
2967
- msgstr "هندوراس"
2968
-
2969
- #: common/src/Tribe/Languages/Locations.php:153
2970
- msgid "Holy See (Vatican City State)"
2971
- msgstr ""
2972
-
2973
- #: common/src/Tribe/Languages/Locations.php:152
2974
- msgid "Heard and McDonald Islands"
2975
- msgstr ""
2976
-
2977
- #: common/src/Tribe/Languages/Locations.php:151
2978
- msgid "Haiti"
2979
- msgstr "هايتي"
2980
-
2981
- #: common/src/Tribe/Languages/Locations.php:150
2982
- msgid "Guyana"
2983
- msgstr "غيانا"
2984
-
2985
- #: common/src/Tribe/Languages/Locations.php:149
2986
- msgid "Guinea-Bissau"
2987
- msgstr "غينيا بيساو"
2988
-
2989
- #: common/src/Tribe/Languages/Locations.php:148
2990
- msgid "Guinea"
2991
- msgstr "غينيا"
2992
-
2993
- #: common/src/Tribe/Languages/Locations.php:147
2994
- msgid "Guatemala"
2995
- msgstr "جواتيمالا"
2996
-
2997
- #: common/src/Tribe/Languages/Locations.php:146
2998
- msgid "Guam"
2999
- msgstr "Guam"
3000
-
3001
- #: common/src/Tribe/Languages/Locations.php:145
3002
- msgid "Guadeloupe"
3003
- msgstr "غوادلوب"
3004
-
3005
- #: common/src/Tribe/Languages/Locations.php:144
3006
- msgid "Grenada"
3007
- msgstr "غرينادا"
3008
-
3009
- #: common/src/Tribe/Languages/Locations.php:143
3010
- msgid "Greenland"
3011
- msgstr "جرينلاند"
3012
-
3013
- #: common/src/Tribe/Languages/Locations.php:142
3014
- msgid "Greece"
3015
- msgstr "اليونان"
3016
-
3017
- #: common/src/Tribe/Languages/Locations.php:141
3018
- msgid "Gibraltar"
3019
- msgstr "جبل طارق"
3020
-
3021
- #: common/src/Tribe/Languages/Locations.php:140
3022
- msgid "Ghana"
3023
- msgstr "غانا"
3024
-
3025
- #: common/src/Tribe/Languages/Locations.php:139
3026
- msgid "Germany"
3027
- msgstr "ألمانيا"
3028
-
3029
- #: common/src/Tribe/Languages/Locations.php:138
3030
- #: common/src/Tribe/Languages/Locations.php:327
3031
- msgid "Georgia"
3032
- msgstr "جورجيا"
3033
-
3034
- #: common/src/Tribe/Languages/Locations.php:137
3035
- msgid "Gambia"
3036
- msgstr "غامبيا"
3037
-
3038
- #: common/src/Tribe/Languages/Locations.php:136
3039
- msgid "Gabon"
3040
- msgstr "الجابون"
3041
-
3042
- #: common/src/Tribe/Languages/Locations.php:135
3043
- msgid "French Southern Territories"
3044
- msgstr "الأقاليم الجنوبية الفرنسية"
3045
-
3046
- #: common/src/Tribe/Languages/Locations.php:134
3047
- msgid "French Polynesia"
3048
- msgstr "بولينيزيا الفرنسية"
3049
-
3050
- #: common/src/Tribe/Languages/Locations.php:133
3051
- msgid "French Guiana"
3052
- msgstr "جويانا الفرنسية"
3053
-
3054
- #: common/src/Tribe/Languages/Locations.php:132
3055
- msgid "France"
3056
- msgstr "فرنسا"
3057
-
3058
- #: common/src/Tribe/Languages/Locations.php:131
3059
- msgid "Finland"
3060
- msgstr "فنلندا"
3061
-
3062
- #: common/src/Tribe/Languages/Locations.php:130
3063
- msgid "Fiji"
3064
- msgstr "فيجي"
3065
-
3066
- #: common/src/Tribe/Languages/Locations.php:129
3067
- msgid "Faroe Islands"
3068
- msgstr "جزر فارو"
3069
-
3070
- #: common/src/Tribe/Languages/Locations.php:128
3071
- msgid "Falkland Islands (Malvinas)"
3072
- msgstr ""
3073
-
3074
- #: common/src/Tribe/Languages/Locations.php:127
3075
- msgid "Ethiopia"
3076
- msgstr "اثيوبيا"
3077
-
3078
- #: common/src/Tribe/Languages/Locations.php:126
3079
- msgid "Estonia"
3080
- msgstr "استونيا"
3081
-
3082
- #: common/src/Tribe/Languages/Locations.php:125
3083
- msgid "Eritrea"
3084
- msgstr "اريتريا"
3085
-
3086
- #: common/src/Tribe/Languages/Locations.php:124
3087
- msgid "Equatorial Guinea"
3088
- msgstr "غينيا الاستوائية"
3089
-
3090
- #: common/src/Tribe/Languages/Locations.php:123
3091
- msgid "El Salvador"
3092
- msgstr "السلفادور"
3093
-
3094
- #: common/src/Tribe/Languages/Locations.php:122
3095
- msgid "Egypt"
3096
- msgstr "مصر"
3097
-
3098
- #: common/src/Tribe/Languages/Locations.php:121
3099
- msgid "Ecuador"
3100
- msgstr "الاكوادور"
3101
-
3102
- #: common/src/Tribe/Languages/Locations.php:120
3103
- msgid "East Timor"
3104
- msgstr "تيمور الشرقية"
3105
-
3106
- #: common/src/Tribe/Languages/Locations.php:119
3107
- msgid "Dominican Republic"
3108
- msgstr "جمهورية الدومينيك"
3109
-
3110
- #: common/src/Tribe/Languages/Locations.php:118
3111
- msgid "Dominica"
3112
- msgstr "دومينيكا"
3113
-
3114
- #: common/src/Tribe/Languages/Locations.php:117
3115
- msgid "Djibouti"
3116
- msgstr "جيبوتي"
3117
-
3118
- #: common/src/Tribe/Languages/Locations.php:116
3119
- msgid "Denmark"
3120
- msgstr "الدانمرك"
3121
-
3122
- #: common/src/Tribe/Languages/Locations.php:115
3123
- msgid "Czech Republic"
3124
- msgstr "جمهورية التشيك"
3125
-
3126
- #: common/src/Tribe/Languages/Locations.php:114
3127
- msgid "Cyprus"
3128
- msgstr "قبرص"
3129
-
3130
- #: common/src/Tribe/Languages/Locations.php:112
3131
- msgid "Cuba"
3132
- msgstr "كوبا"
3133
-
3134
- #: common/src/Tribe/Languages/Locations.php:111
3135
- msgid "Croatia (Local Name: Hrvatska)"
3136
- msgstr ""
3137
-
3138
- #: common/src/Tribe/Languages/Locations.php:109
3139
- msgid "Costa Rica"
3140
- msgstr "كوستاريكا"
3141
-
3142
- #: common/src/Tribe/Languages/Locations.php:108
3143
- msgid "Cook Islands"
3144
- msgstr "جزر كوك"
3145
-
3146
- #: common/src/Tribe/Languages/Locations.php:107
3147
- msgid "Congo, Democratic Republic of the"
3148
- msgstr ""
3149
-
3150
- #: common/src/Tribe/Languages/Locations.php:106
3151
- msgid "Congo"
3152
- msgstr ""
3153
-
3154
- #: common/src/Tribe/Languages/Locations.php:105
3155
- msgid "Comoros"
3156
- msgstr "جزر القمر"
3157
-
3158
- #: common/src/Tribe/Languages/Locations.php:104
3159
- msgid "Colombia"
3160
- msgstr "كولومبيا"
3161
-
3162
- #: common/src/Tribe/Languages/Locations.php:102
3163
- msgid "Cocos (Keeling) Islands"
3164
- msgstr "جزر كوكوس (كيلينغ)"
3165
-
3166
- #: common/src/Tribe/Languages/Locations.php:101
3167
- msgid "Christmas Island"
3168
- msgstr "جزيرة كريسماس"
3169
-
3170
- #: common/src/Tribe/Languages/Locations.php:100
3171
- msgid "China"
3172
- msgstr "الصين"
3173
-
3174
- #: common/src/Tribe/Languages/Locations.php:99
3175
- msgid "Chile"
3176
- msgstr "شيلي"
3177
-
3178
- #: common/src/Tribe/Languages/Locations.php:98
3179
- msgid "Chad"
3180
- msgstr "تشاد"
3181
-
3182
- #: common/src/Tribe/Languages/Locations.php:97
3183
- msgid "Central African Republic"
3184
- msgstr "جمهورية افريقيا الوسطى"
3185
-
3186
- #: common/src/Tribe/Languages/Locations.php:96
3187
- msgid "Cayman Islands"
3188
- msgstr "جزر كايمان"
3189
-
3190
- #: common/src/Tribe/Languages/Locations.php:95
3191
- msgid "Cape Verde"
3192
- msgstr "الرأس الأخضر"
3193
-
3194
- #: common/src/Tribe/Languages/Locations.php:94
3195
- msgid "Canada"
3196
- msgstr "كندا"
3197
-
3198
- #: common/src/Tribe/Languages/Locations.php:93
3199
- msgid "Cameroon"
3200
- msgstr "الكاميرون"
3201
-
3202
- #: common/src/Tribe/Languages/Locations.php:92
3203
- msgid "Cambodia"
3204
- msgstr "كمبوديا"
3205
-
3206
- #: common/src/Tribe/Languages/Locations.php:91
3207
- msgid "Burundi"
3208
- msgstr "بوروندي"
3209
-
3210
- #: common/src/Tribe/Languages/Locations.php:90
3211
- msgid "Burkina Faso"
3212
- msgstr "بوركينا فاسو"
3213
-
3214
- #: common/src/Tribe/Languages/Locations.php:89
3215
- msgid "Bulgaria"
3216
- msgstr "بلغاريا"
3217
-
3218
- #: common/src/Tribe/Languages/Locations.php:88
3219
- msgid "Brunei Darussalam"
3220
- msgstr ""
3221
-
3222
- #: common/src/Tribe/Languages/Locations.php:87
3223
- msgid "British Indian Ocean Territory"
3224
- msgstr "إقليم المحيط الهندي البريطاني"
3225
-
3226
- #: common/src/Tribe/Languages/Locations.php:86
3227
- msgid "Brazil"
3228
- msgstr "البرازيل"
3229
-
3230
- #: common/src/Tribe/Languages/Locations.php:85
3231
- msgid "Bouvet Island"
3232
- msgstr "جزيرة بوفيه"
3233
-
3234
- #: common/src/Tribe/Languages/Locations.php:84
3235
- msgid "Botswana"
3236
- msgstr "بتسوانا"
3237
-
3238
- #: common/src/Tribe/Languages/Locations.php:83
3239
- msgid "Bosnia and Herzegowina"
3240
- msgstr ""
3241
-
3242
- #: common/src/Tribe/Languages/Locations.php:82
3243
- msgid "Bolivia"
3244
- msgstr "بوليفيا"
3245
-
3246
- #: common/src/Tribe/Languages/Locations.php:81
3247
- msgid "Bhutan"
3248
- msgstr "بوتان"
3249
-
3250
- #: common/src/Tribe/Languages/Locations.php:80
3251
- msgid "Bermuda"
3252
- msgstr "جزر برمودا"
3253
-
3254
- #: common/src/Tribe/Languages/Locations.php:79
3255
- msgid "Benin"
3256
- msgstr "بنين"
3257
-
3258
- #: common/src/Tribe/Languages/Locations.php:78
3259
- msgid "Belize"
3260
- msgstr "Belize"
3261
-
3262
- #: common/src/Tribe/Languages/Locations.php:77
3263
- msgid "Belgium"
3264
- msgstr "بلجيكا"
3265
-
3266
- #: common/src/Tribe/Languages/Locations.php:76
3267
- msgid "Belarus"
3268
- msgstr "روسيا البيضاء"
3269
-
3270
- #: common/src/Tribe/Languages/Locations.php:75
3271
- msgid "Barbados"
3272
- msgstr "باربادوس"
3273
-
3274
- #: common/src/Tribe/Languages/Locations.php:74
3275
- msgid "Bangladesh"
3276
- msgstr "بنجلاديش"
3277
-
3278
- #: common/src/Tribe/Languages/Locations.php:73
3279
- msgid "Bahrain"
3280
- msgstr "البحرين"
3281
-
3282
- #: common/src/Tribe/Languages/Locations.php:72
3283
- msgid "Bahamas"
3284
- msgstr "الباهاما"
3285
-
3286
- #: common/src/Tribe/Languages/Locations.php:71
3287
- msgid "Azerbaijan"
3288
- msgstr "أذربيجان"
3289
-
3290
- #: common/src/Tribe/Languages/Locations.php:70
3291
- msgid "Austria"
3292
- msgstr "النمسا"
3293
-
3294
- #: common/src/Tribe/Languages/Locations.php:69
3295
- msgid "Australia"
3296
- msgstr "أستراليا"
3297
-
3298
- #: common/src/Tribe/Languages/Locations.php:68
3299
- msgid "Aruba"
3300
- msgstr "Aruba"
3301
-
3302
- #: common/src/Tribe/Languages/Locations.php:67
3303
- msgid "Armenia"
3304
- msgstr "أرمينيا"
3305
-
3306
- #: common/src/Tribe/Languages/Locations.php:66
3307
- msgid "Argentina"
3308
- msgstr "Argentina"
3309
-
3310
- #: common/src/Tribe/Languages/Locations.php:65
3311
- msgid "Antigua and Barbuda"
3312
- msgstr ""
3313
-
3314
- #: common/src/Tribe/Languages/Locations.php:64
3315
- msgid "Antarctica"
3316
- msgstr "القارة الجنوبية المتجمدة"
3317
-
3318
- #: common/src/Tribe/Languages/Locations.php:63
3319
- msgid "Anguilla"
3320
- msgstr "أنجويلا"
3321
-
3322
- #: common/src/Tribe/Languages/Locations.php:62
3323
- msgid "Angola"
3324
- msgstr "أنجولا"
3325
-
3326
- #: common/src/Tribe/Languages/Locations.php:61
3327
- msgid "Andorra"
3328
- msgstr "Andorra"
3329
-
3330
- #: common/src/Tribe/Languages/Locations.php:60
3331
- msgid "American Samoa"
3332
- msgstr "ساموا الأمريكية"
3333
-
3334
- #: common/src/Tribe/Languages/Locations.php:59
3335
- msgid "Algeria"
3336
- msgstr "ألجيريا"
3337
-
3338
- #: common/src/Tribe/Languages/Locations.php:58
3339
- msgid "Albania"
3340
- msgstr "ألبانيا"
3341
-
3342
- #: common/src/Tribe/Languages/Locations.php:56
3343
- msgid "Afghanistan"
3344
- msgstr "أفغانستان"
3345
-
3346
- #: common/src/Tribe/Languages/Locations.php:55
3347
- msgid "United States"
3348
- msgstr "الولايات المتحدة الأمريكية"
3349
-
3350
- #: common/src/Tribe/View_Helpers.php:50
3351
- msgid "Select a Country:"
3352
- msgstr ""
3353
-
3354
- #: common/src/Tribe/Validate.php:496
3355
- msgid "Country List must be formatted as one country per line in the following format: <br>US, United States <br> UK, United Kingdom."
3356
- msgstr ""
3357
-
3358
- #: common/src/Tribe/Validate.php:480
3359
- msgid "%s must be a phone number."
3360
- msgstr ""
3361
-
3362
- #: common/src/Tribe/Validate.php:466
3363
- msgid "%s must consist of 5 numbers."
3364
- msgstr ""
3365
-
3366
- #: common/src/Tribe/Validate.php:452
3367
- msgid "%s must consist of letters, spaces, apostrophes, and dashes."
3368
- msgstr ""
3369
-
3370
- #: common/src/Tribe/Validate.php:436
3371
- msgid "%s must consist of letters, numbers, dashes, apostrophes, and spaces only."
3372
- msgstr ""
3373
-
3374
- #: common/src/Tribe/Validate.php:420
3375
- msgid "%s must be a number between 0 and 21."
3376
- msgstr ""
3377
-
3378
- #: common/src/Tribe/Validate.php:366
3379
- msgid "%s must be a number or percentage."
3380
- msgstr ""
3381
-
3382
- #: common/src/Tribe/Validate.php:350
3383
- msgid "%s cannot be a duplicate"
3384
- msgstr ""
3385
-
3386
- #: common/src/Tribe/Validate.php:348
3387
- msgid "%s cannot be the same as %s."
3388
- msgstr ""
3389
-
3390
- #: common/src/Tribe/Validate.php:341
3391
- msgid "Comparison validation failed because no comparison value was provided, for field %s"
3392
- msgstr ""
3393
-
3394
- #: common/src/Tribe/Validate.php:288 common/src/Tribe/Validate.php:305
3395
- #: common/src/Tribe/Validate.php:327
3396
- msgid "%s must have a value that's part of its options."
3397
- msgstr ""
3398
-
3399
- #: common/src/Tribe/Validate.php:272
3400
- msgid "%s must be a valid absolute URL."
3401
- msgstr ""
3402
-
3403
- #: common/src/Tribe/Validate.php:257
3404
- msgid "%s must be a valid slug (numbers, letters, dashes, and underscores)."
3405
- msgstr ""
3406
-
3407
- #: common/src/Tribe/Validate.php:204
3408
- msgid "%s must be a positive number or percent."
3409
- msgstr ""
3410
-
3411
- #: common/src/Tribe/Validate.php:190 common/src/Tribe/Validate.php:218
3412
- msgid "%s must be a positive number."
3413
- msgstr ""
3414
-
3415
- #: common/src/Tribe/Validate.php:160
3416
- msgid "%s must contain numbers, letters and dots only"
3417
- msgstr ""
3418
-
3419
- #: common/src/Tribe/Validate.php:128 common/src/Tribe/Validate.php:144
3420
- msgid "%s must contain numbers and letters only"
3421
- msgstr ""
3422
-
3423
- #: common/src/Tribe/Validate.php:108
3424
- msgctxt "non-existant function name passed for field validation"
3425
- msgid "with function name:"
3426
- msgstr ""
3427
-
3428
- #: common/src/Tribe/Validate.php:107
3429
- msgid "Non-existant field validation function passed"
3430
- msgstr ""
3431
-
3432
- #: common/src/Tribe/Validate.php:75 common/src/Tribe/Validate.php:87
3433
- #: common/src/Tribe/Validate.php:108 common/src/Tribe/Validate.php:114
3434
- msgid "Field ID:"
3435
- msgstr ""
3436
-
3437
- #: common/src/Tribe/Validate.php:74 common/src/Tribe/Validate.php:86
3438
- #: common/src/Tribe/Validate.php:113
3439
- msgid "Invalid or incomplete field passed"
3440
- msgstr ""
3441
-
3442
- #: common/src/Tribe/Support.php:197
3443
- msgid "Rewrite rules were purged on load of this help page. Chances are there is a rewrite rule flush occurring in a plugin or theme!"
3444
- msgstr ""
3445
-
3446
- #: common/src/Tribe/Support.php:186 common/src/Tribe/Support.php:187
3447
- msgid "Unknown or not set"
3448
- msgstr ""
3449
-
3450
- #: common/src/Tribe/Settings_Tab.php:222
3451
- msgid "There are no fields setup for this tab yet."
3452
- msgstr ""
3453
-
3454
- #: common/src/Tribe/Settings_Manager.php:253
3455
- #: common/src/admin-views/tribe-options-licenses.php:66
3456
- msgid "Licenses"
3457
- msgstr "ترخيص"
3458
-
3459
- #: common/src/Tribe/Settings_Manager.php:219
3460
- msgid "Network"
3461
- msgstr "الشبكة"
3462
-
3463
- #: common/src/Tribe/Settings_Manager.php:279
3464
- msgid "Help"
3465
- msgstr "مساعدة"
3466
-
3467
- #: common/src/Tribe/Settings_Manager.php:55
3468
- msgid "Display"
3469
- msgstr "عرض"
3470
-
3471
- #: common/src/Tribe/Settings_Manager.php:54
3472
- msgid "General"
3473
- msgstr "عام"
3474
-
3475
- #: common/src/Tribe/Settings.php:619
3476
- msgid "Settings saved."
3477
- msgstr "تم حفظ الإعدادت"
3478
-
3479
- #: common/src/Tribe/Settings.php:597
3480
- msgid "The above setting was not saved. Other settings were successfully saved."
3481
- msgid_plural "The above settings were not saved. Other settings were successfully saved."
3482
- msgstr[0] ""
3483
- msgstr[1] ""
3484
- msgstr[2] ""
3485
- msgstr[3] ""
3486
- msgstr[4] ""
3487
- msgstr[5] ""
3488
-
3489
- #: common/src/Tribe/Settings.php:596
3490
- msgid "None of your settings were saved. Please try again."
3491
- msgstr ""
3492
-
3493
- #: common/src/Tribe/Settings.php:586
3494
- msgid "Your form had the following errors:"
3495
- msgstr ""
3496
-
3497
- #: common/src/Tribe/Settings.php:419
3498
- msgid "The request wasn't sent from this tab."
3499
- msgstr ""
3500
-
3501
- #: common/src/Tribe/Settings.php:413
3502
- msgid "The request was sent insecurely."
3503
- msgstr ""
3504
-
3505
- #: common/src/Tribe/Settings.php:407
3506
- msgid "You don't have permission to do that."
3507
- msgstr ""
3508
-
3509
- #: common/src/Tribe/Settings.php:359
3510
- msgid "Save Changes"
3511
- msgstr "حفظ التعديلات"
3512
-
3513
- #: common/src/Tribe/Settings.php:351
3514
- msgid "You've requested a non-existent tab."
3515
- msgstr ""
3516
-
3517
- #: common/src/Tribe/Settings.php:337
3518
- msgid "%s Settings"
3519
- msgstr ""
3520
-
3521
- #: common/src/Tribe/Settings.php:242 src/admin-views/editor/panel/list.php:66
3522
- msgid "Settings"
3523
- msgstr "الإعدادت"
3524
-
3525
- #: common/src/Tribe/Settings.php:241 common/src/Tribe/Settings.php:261
3526
- msgid "Events Settings"
3527
- msgstr ""
3528
-
3529
- #: common/src/Tribe/Settings.php:165 common/src/Tribe/Settings.php:229
3530
- #: common/src/Tribe/Settings.php:230
3531
- msgid "Events"
3532
- msgstr "أحداث"
3533
-
3534
- #: common/src/Tribe/PUE/Checker.php:888
3535
- msgid "Hmmm... something's wrong with this validator. Please contact %ssupport%s."
3536
- msgstr ""
3537
-
3538
- #: common/src/Tribe/PUE/Checker.php:932
3539
- msgid "Thanks for setting up a valid key. It will expire on %s"
3540
- msgstr ""
3541
-
3542
- #: common/src/Tribe/PUE/Checker.php:927
3543
- msgid "Valid Key! Expires on %s"
3544
- msgstr ""
3545
-
3546
- #: common/src/Tribe/PUE/Checker.php:907
3547
- msgid "Sorry, key validation server is not available."
3548
- msgstr ""
3549
-
3550
- #: common/src/Tribe/PUE/Checker.php:901
3551
- msgid "unknown date"
3552
- msgstr ""
3553
-
3554
- #: common/src/Tribe/PUE/Checker.php:650
3555
- msgid "License key(s) updated."
3556
- msgstr ""
3557
-
3558
- #: common/src/Tribe/PUE/Checker.php:494
3559
- msgid "A valid license key is required for support and updates"
3560
- msgstr ""
3561
-
3562
- #: common/src/Tribe/PUE/Checker.php:509 common/src/Tribe/PUE/Checker.php:520
3563
- msgid "License Key"
3564
- msgstr ""
3565
-
3566
- #: common/src/Tribe/Field.php:617
3567
- msgid "No select options specified"
3568
- msgstr ""
3569
-
3570
- #: common/src/Tribe/Field.php:559
3571
- msgid "No checkbox options specified"
3572
- msgstr ""
3573
-
3574
- #: common/src/Tribe/Field.php:523
3575
- msgid "No radio options specified"
3576
- msgstr ""
3577
-
3578
- #: common/src/Tribe/Field.php:228
3579
- msgid "Invalid field type specified"
3580
- msgstr ""
3581
-
3582
- #: common/src/Tribe/Credits.php:31
3583
- msgid "This calendar is powered by The Events Calendar."
3584
- msgstr ""
3585
-
3586
- #: common/src/Tribe/App_Shop.php:50 common/src/Tribe/App_Shop.php:51
3587
- #: common/src/Tribe/App_Shop.php:72
3588
- msgid "Event Add-Ons"
3589
- msgstr ""
3590
-
3591
- #: common/src/Tribe/Admin/Help_Page.php:860
3592
- msgid "Visit the Add-on Page"
3593
- msgstr ""
3594
-
3595
- #: common/src/Tribe/Admin/Help_Page.php:855
3596
- msgid "Plugin Inactive"
3597
- msgstr ""
3598
-
3599
- #: common/src/Tribe/Admin/Help_Page.php:853
3600
- msgid "Plugin Active"
3601
- msgstr ""
3602
-
3603
- #: common/src/Tribe/Admin/Help_Page.php:847
3604
- msgid "Premium Add-Ons"
3605
- msgstr ""
3606
-
3607
- #: common/src/Tribe/Admin/Help_Page.php:828
3608
- msgid "Rating:"
3609
- msgstr ""
3610
-
3611
- #: common/src/Tribe/Admin/Help_Page.php:825
3612
- msgid "Active Users:"
3613
- msgstr ""
3614
-
3615
- #: common/src/Tribe/Admin/Help_Page.php:823
3616
- msgid "WordPress "
3617
- msgstr ""
3618
-
3619
- #: common/src/Tribe/Admin/Help_Page.php:822
3620
- #: common/src/admin-views/app-shop.php:78
3621
- msgid "Requires:"
3622
- msgstr ""
3623
-
3624
- #: common/src/Tribe/Admin/Help_Page.php:819
3625
- msgid "Latest Version:"
3626
- msgstr ""
3627
-
3628
- #: common/src/Tribe/Admin/Help_Page.php:802
3629
- msgid "Install Plugin"
3630
- msgstr ""
3631
-
3632
- #: common/src/Tribe/Admin/Help_Page.php:802
3633
- msgid "Install %s"
3634
- msgstr "تنصيب %s"
3635
-
3636
- #: common/src/Tribe/Admin/Help_Page.php:786
3637
- msgid "Upgrade Plugin"
3638
- msgstr ""
3639
-
3640
- #: common/src/Tribe/Admin/Help_Page.php:778
3641
- msgid "Activate Plugin"
3642
- msgstr "تفعيل الإضافة"
3643
-
3644
- #: common/src/Tribe/Admin/Help_Page.php:778
3645
- msgid "Activate %s"
3646
- msgstr "تفعيل %s"
3647
-
3648
- #: common/src/Tribe/Admin/Help_Page.php:413
3649
- #: common/src/Tribe/Admin/Help_Page.php:788
3650
- msgid "You are up to date!"
3651
- msgstr ""
3652
-
3653
- #: common/src/Tribe/Admin/Help_Page.php:413
3654
- msgid "You need to upgrade!"
3655
- msgstr ""
3656
-
3657
- #: common/src/Tribe/Admin/Help_Page.php:405
3658
- msgctxt "not available"
3659
- msgid "n/a"
3660
- msgstr ""
3661
-
3662
- #: common/src/Tribe/Admin/Help_Page.php:244
3663
- #: common/src/Tribe/Plugins_API.php:100
3664
- msgid "Community Tickets"
3665
- msgstr ""
3666
-
3667
- #: common/src/Tribe/Admin/Help_Page.php:235 common/src/Tribe/Plugins_API.php:66
3668
- msgid "Event Tickets Plus"
3669
- msgstr ""
3670
-
3671
- #: common/src/Tribe/Admin/Help_Page.php:211 common/src/Tribe/Plugins_API.php:90
3672
- msgid "Community Events"
3673
- msgstr ""
3674
-
3675
- #: common/src/Tribe/Admin/Help_Page.php:203
3676
- #: common/src/Tribe/Plugins_API.php:111
3677
- msgid "Eventbrite Tickets"
3678
- msgstr ""
3679
-
3680
- #: common/src/Tribe/Admin/Help_Page.php:194 common/src/Tribe/Plugins_API.php:43
3681
- msgid "Events Calendar PRO"
3682
- msgstr ""
3683
-
3684
- #: common/src/Tribe/Admin/Help_Page.php:170 src/Tribe/Tickets_View.php:673
3685
- #: src/views/tickets/orders-link.php:53
3686
- msgid " and "
3687
- msgstr ""
3688
-
3689
- #: common/src/Tribe/Admin/Help_Page.php:95
3690
- msgid "Turbo charge your posts admin for any custom post type with sortable filters and columns, and auto-registration of metaboxes."
3691
- msgstr ""
3692
-
3693
- #: common/src/Tribe/Admin/Help_Page.php:91
3694
- msgid "Advanced Post Manager"
3695
- msgstr ""
3696
-
3697
- #: common/src/Tribe/Admin/Help_Page.php:79
3698
- msgid "Events Tickets is a carefully crafted, extensible plugin that lets you easily sell tickets for your events."
3699
- msgstr ""
3700
-
3701
- #. #-#-#-#-# event-tickets-code.pot (Event Tickets 4.6.3.1) #-#-#-#-#
3702
- #. Plugin Name of the plugin/theme
3703
- #: common/src/Tribe/Admin/Help_Page.php:75 common/src/Tribe/Plugins_API.php:57
3704
- #: src/Tribe/Main.php:470
3705
- msgid "Event Tickets"
3706
- msgstr ""
3707
-
3708
- #: common/src/Tribe/Admin/Help_Page.php:63
3709
- msgid "The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events."
3710
- msgstr ""
3711
-
3712
- #: common/src/Tribe/Admin/Help_Page.php:59 common/src/Tribe/Customizer.php:568
3713
- #: common/src/Tribe/Plugins_API.php:25
3714
- msgid "The Events Calendar"
3715
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lang/event-tickets-az.po DELETED
@@ -1,3667 +0,0 @@
1
- # Translation of Plugins - Event Tickets - Stable (latest release) in Azerbaijani
2
- # This file is distributed under the same license as the Plugins - Event Tickets - Stable (latest release) package.
3
- msgid ""
4
- msgstr ""
5
- "PO-Revision-Date: 2017-01-29 05:43:25+0000\n"
6
- "MIME-Version: 1.0\n"
7
- "Content-Type: text/plain; charset=UTF-8\n"
8
- "Content-Transfer-Encoding: 8bit\n"
9
- "Plural-Forms: nplurals=2; plural=n != 1;\n"
10
- "X-Generator: GlotPress/2.4.0-alpha\n"
11
- "Language: az\n"
12
- "Project-Id-Version: Plugins - Event Tickets - Stable (latest release)\n"
13
-
14
- #: src/template-tags/tickets.php:410
15
- msgctxt "ticket shared capacity message (remaining stock)"
16
- msgid "%1$d Remaining of shared capacity"
17
- msgstr ""
18
-
19
- #: src/admin-views/rsvp-metabox-capacity.php:19
20
- msgid "Leave blank for unlimited"
21
- msgstr ""
22
-
23
- #: src/admin-views/editor/panel/ticket.php:189
24
- msgid "Save RSVP"
25
- msgstr ""
26
-
27
- #: src/admin-views/editor/panel/ticket.php:180
28
- msgid "Save ticket"
29
- msgstr ""
30
-
31
- #: src/admin-views/editor/panel/ticket.php:98
32
- msgid "Ticket type name shows on the front end and emailed tickets"
33
- msgstr ""
34
-
35
- #: src/admin-views/editor/panel/ticket.php:96
36
- msgid "Ticket Type is a required field."
37
- msgstr ""
38
-
39
- #: src/admin-views/editor/panel/ticket.php:87
40
- msgid "Type:"
41
- msgstr ""
42
-
43
- #: src/admin-views/editor/panel/ticket.php:82
44
- msgid "Edit RSVP"
45
- msgstr ""
46
-
47
- #: src/admin-views/editor/panel/ticket.php:74
48
- msgid "Add new RSVP"
49
- msgstr ""
50
-
51
- #: src/admin-views/editor/panel/settings.php:69
52
- msgid "Save settings"
53
- msgstr ""
54
-
55
- #: src/admin-views/editor/panel/settings.php:32
56
- msgid "Select an image from your Media Library to display on emailed tickets. For best results, use a .jpg, .png, or .gif at least 1160px wide."
57
- msgstr ""
58
-
59
- #: src/admin-views/editor/panel/settings.php:30
60
- msgid "Ticket header image:"
61
- msgstr ""
62
-
63
- #: src/admin-views/editor/panel/list.php:61
64
- msgid "New RSVP"
65
- msgstr ""
66
-
67
- #: src/admin-views/editor/panel/list.php:59
68
- msgid "Add a new RSVP"
69
- msgstr ""
70
-
71
- #: src/admin-views/editor/panel/list.php:39
72
- msgid "View Attendees"
73
- msgstr ""
74
-
75
- #: src/admin-views/editor/panel/list.php:11
76
- msgid "You have unsaved changes to your tickets. Discard those changes?"
77
- msgstr ""
78
-
79
- #: src/admin-views/editor/list-table.php:40
80
- msgid "Available"
81
- msgstr ""
82
-
83
- #: src/admin-views/editor/list-table.php:39
84
- msgid "Capacity"
85
- msgstr ""
86
-
87
- #: src/admin-views/editor/list-row.php:100
88
- msgid "( Ticket ID: %d )"
89
- msgstr ""
90
-
91
- #: src/admin-views/editor/list-row.php:88
92
- msgid "The number of Complete ticket sales does not match the number of attendees. Please check the Attendees list and adjust ticket stock in WooCommerce as needed."
93
- msgstr ""
94
-
95
- #: src/admin-views/editor/list-row.php:86
96
- msgid "Available:"
97
- msgstr ""
98
-
99
- #: src/admin-views/editor/list-row.php:81
100
- #: src/admin-views/rsvp-metabox-capacity.php:10
101
- msgid "Capacity:"
102
- msgstr ""
103
-
104
- #: src/admin-views/editor/fieldset/history.php:30
105
- msgid "Ti"
106
- msgstr ""
107
-
108
- #: src/admin-views/editor/fieldset/history.php:27
109
- msgid "History"
110
- msgstr ""
111
-
112
- #: src/admin-views/editor/fieldset/advanced.php:132
113
- msgid "If you do not set an end sale date, tickets sales will never end."
114
- msgstr ""
115
-
116
- #: src/admin-views/editor/fieldset/advanced.php:130
117
- msgid "If you do not set an end sale date, tickets will be available until the event begins."
118
- msgstr ""
119
-
120
- #: src/admin-views/editor/fieldset/advanced.php:124
121
- msgid "Ticket end date"
122
- msgstr ""
123
-
124
- #: src/admin-views/editor/fieldset/advanced.php:98
125
- msgid "If you do not set a start sale date, tickets will be available immediately."
126
- msgstr ""
127
-
128
- #: src/admin-views/editor/fieldset/advanced.php:97
129
- #: src/admin-views/editor/fieldset/advanced.php:126
130
- msgid "HH:MM"
131
- msgstr ""
132
-
133
- #: src/admin-views/editor/fieldset/advanced.php:95
134
- msgid "Ticket start date"
135
- msgstr ""
136
-
137
- #: src/admin-views/editor/fieldset/advanced.php:84
138
- #: src/admin-views/editor/fieldset/advanced.php:113
139
- msgid "at"
140
- msgstr ""
141
-
142
- #: src/admin-views/editor/fieldset/advanced.php:83
143
- #: src/admin-views/editor/fieldset/advanced.php:112
144
- msgid "YYYY-MM-DD"
145
- msgstr ""
146
-
147
- #: src/admin-views/editor/fieldset/advanced.php:65
148
- msgid "Show description on front end ticket form."
149
- msgstr ""
150
-
151
- #: src/admin-views/editor/fieldset/advanced.php:47
152
- msgid "Description:"
153
- msgstr ""
154
-
155
- #: src/admin-views/editor/fieldset/advanced.php:45
156
- msgid "Advanced Settings"
157
- msgstr ""
158
-
159
- #: src/admin-views/editor/fieldset/advanced.php:42
160
- msgid "Advanced"
161
- msgstr ""
162
-
163
- #: src/admin-views/editor/fieldset/advanced.php:38
164
- msgid "Start sale date cannot be greater than End Sale date"
165
- msgstr ""
166
-
167
- #: src/admin-views/editor/fieldset/advanced.php:37
168
- msgid "Start sale date cannot be empty."
169
- msgstr ""
170
-
171
- #: src/admin-views/admin-welcome-message.php:25
172
- msgid "Event Tickets Features"
173
- msgstr ""
174
-
175
- #: src/admin-views/admin-welcome-message.php:24
176
- msgid "Settings Overview"
177
- msgstr ""
178
-
179
- #: src/admin-views/admin-welcome-message.php:15
180
- msgid "If you need a little help, hit us up in %s."
181
- msgstr ""
182
-
183
- #: src/admin-views/admin-welcome-message.php:14
184
- msgid "Giving you the best experience with our plugin is our top goal. Check out the resources below for a step-by-step introduction to your new features or head straight to the Events section in your admin to create your first ticket."
185
- msgstr ""
186
-
187
- #: src/admin-views/admin-welcome-message.php:13
188
- msgid "Welcome to Event Tickets!"
189
- msgstr ""
190
-
191
- #: src/admin-views/admin-welcome-message.php:5
192
- msgid "our support forums"
193
- msgstr ""
194
-
195
- #: src/Tribe/Tickets_Handler.php:84
196
- msgid "Unlimited"
197
- msgstr ""
198
-
199
- #: src/Tribe/Tickets.php:904
200
- msgid "Set capacity for this ticket only"
201
- msgstr ""
202
-
203
- #: src/Tribe/Tickets.php:903
204
- msgid "Shared capacity with other tickets"
205
- msgstr ""
206
-
207
- #: src/Tribe/Tickets.php:385
208
- msgid "Move Ticket"
209
- msgstr ""
210
-
211
- #: src/Tribe/Tickets.php:385
212
- msgid "Move RSVP"
213
- msgstr ""
214
-
215
- #: src/Tribe/Tickets.php:310
216
- msgid "Delete Ticket"
217
- msgstr ""
218
-
219
- #: src/Tribe/Tickets.php:310
220
- msgid "Delete RSVP"
221
- msgstr ""
222
-
223
- #: src/Tribe/Metabox.php:308
224
- msgid "Failed to Delete the Ticket, Refresh the Page to try again."
225
- msgstr ""
226
-
227
- #: src/Tribe/Metabox.php:268 src/Tribe/Metabox.php:314
228
- #: src/Tribe/Metabox.php:352 src/Tribe/Metabox.php:388
229
- msgid "Commerce Module invalid"
230
- msgstr ""
231
-
232
- #: src/Tribe/Metabox.php:262
233
- msgid "Failed to Edit the Ticket, Refresh the Page to try again."
234
- msgstr ""
235
-
236
- #: src/Tribe/Metabox.php:252 src/Tribe/Metabox.php:304
237
- msgid "Invalid Ticket"
238
- msgstr ""
239
-
240
- #: src/Tribe/Metabox.php:217
241
- msgid "Failed to Add the Ticket"
242
- msgstr ""
243
-
244
- #: src/Tribe/Metabox.php:199
245
- msgid "Commerce Provider invalid"
246
- msgstr ""
247
-
248
- #: src/Tribe/Metabox.php:195
249
- msgid "Failed to Add the Ticket, Refresh the Page to try again."
250
- msgstr ""
251
-
252
- #: src/Tribe/Metabox.php:185 src/Tribe/Metabox.php:246
253
- #: src/Tribe/Metabox.php:298
254
- msgid "Invalid parent Post"
255
- msgstr ""
256
-
257
- #: src/Tribe/Metabox.php:106
258
- msgid "Invalid Post ID"
259
- msgstr ""
260
-
261
- #: src/Tribe/CSV_Importer/Column_Names.php:42
262
- msgid "Ticket Capacity"
263
- msgstr ""
264
-
265
- #: common/src/admin-views/tribe-options-help.php:20
266
- msgid "Check out our %s for developers."
267
- msgstr ""
268
-
269
- #: common/src/admin-views/tribe-options-help.php:18
270
- msgid "Want to dive deeper?"
271
- msgstr ""
272
-
273
- #: common/src/admin-views/tribe-options-display.php:28
274
- msgid "The following three fields accept the date format options available to the PHP %1$s function. <a href=\"%2$s\" target=\"_blank\">Learn how to make your own date format here</a>."
275
- msgstr ""
276
-
277
- #: common/src/Tribe/Validate.php:527
278
- msgid "%s must be an email address."
279
- msgstr ""
280
-
281
- #: common/src/Tribe/Main.php:283
282
- msgid "Clear Selection."
283
- msgstr ""
284
-
285
- #: common/src/Tribe/Main.php:282
286
- msgid "Select all pages"
287
- msgstr ""
288
-
289
- #: common/src/Tribe/Main.php:281
290
- msgid "All items on this page were selected. "
291
- msgstr ""
292
-
293
- #: common/src/Tribe/Languages/Locations.php:252
294
- msgid "Sint Maarten"
295
- msgstr ""
296
-
297
- #: common/src/Tribe/Languages/Locations.php:245
298
- msgid "S&atilde;o Tom&eacute; and Pr&iacute;ncipe"
299
- msgstr ""
300
-
301
- #: common/src/Tribe/Languages/Locations.php:238
302
- msgid "Saint Helena"
303
- msgstr ""
304
-
305
- #: common/src/Tribe/Languages/Locations.php:237
306
- msgid "Saint Barth&eacute;lemy"
307
- msgstr ""
308
-
309
- #: common/src/Tribe/Languages/Locations.php:113
310
- msgid "Cura&ccedil;ao"
311
- msgstr ""
312
-
313
- #: common/src/Tribe/Languages/Locations.php:103
314
- msgid "Collectivity of Saint Martin"
315
- msgstr ""
316
-
317
- #: common/src/Tribe/Languages/Locations.php:57
318
- msgid "&Aring;land Islands"
319
- msgstr ""
320
-
321
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:57
322
- msgid "A list of links to the term own, archive and parent REST URL"
323
- msgstr ""
324
-
325
- #: src/views/tickets/rsvp.php:209
326
- msgid "You must have JavaScript activated to purchase tickets. Please enable JavaScript in your browser."
327
- msgstr ""
328
-
329
- #: src/template-tags/tickets.php:237
330
- msgctxt "list view buy now ticket button"
331
- msgid "Buy Now!"
332
- msgstr ""
333
-
334
- #: src/template-tags/tickets.php:234
335
- msgctxt "list view rsvp now ticket button"
336
- msgid "RSVP Now!"
337
- msgstr ""
338
-
339
- #: src/template-tags/tickets.php:223
340
- msgid "%s ticket left"
341
- msgid_plural "%s tickets left"
342
- msgstr[0] ""
343
- msgstr[1] ""
344
-
345
- #: src/template-tags/tickets.php:221
346
- msgid "%s spot left"
347
- msgid_plural "%s spots left"
348
- msgstr[0] ""
349
- msgstr[1] ""
350
-
351
- #: src/template-tags/tickets.php:204
352
- msgctxt "list view stock sold out"
353
- msgid "Sold out"
354
- msgstr ""
355
-
356
- #: common/src/Tribe/Plugins_API.php:129
357
- msgid "Take your image widgets to the next level with Image Widget Plus! We've taken the simple functionality of our basic Image Widget and amped it up with several popular feature requests - multiple image support, slideshow, lightbox, and random image - all backed by a full year of premium support."
358
- msgstr ""
359
-
360
- #: common/src/Tribe/Plugins_API.php:125
361
- msgid "Image Widget Plus"
362
- msgstr ""
363
-
364
- #: common/src/Tribe/Plugins_API.php:94
365
- msgid "Accept user-submitted events on your site! With Community Events, you can accept public submissions or require account sign-on. Settings give you the options to save as a draft or publish automatically, enable categories and tags, and choose whether users can edit/manage their own events or simply submit. Best of all - setup is easy! Just activate, configure the options, and off you go."
366
- msgstr ""
367
-
368
- #: common/src/Tribe/Plugins_API.php:60
369
- msgid "Event Tickets provides a simple way for visitors to RSVP to your events. As a standalone plugin, it enables you to add RSVP functionality to posts or pages. When paired with The Events Calendar, you can add that same RSVP functionality directly to your event listings."
370
- msgstr ""
371
-
372
- #: common/src/Tribe/Plugins_API.php:37
373
- msgid "Import events from across the web! Event Aggregator makes it easy to run scheduled or manual imports from Facebook, Meetup, Google Calendar, and iCalendar, along with uploads from CSV and ICS files. You can also import directly from other sites running The Events Calendar thanks to our built-in REST API support."
374
- msgstr ""
375
-
376
- #: common/src/Tribe/Plugins_API.php:28
377
- msgid "Create an events calendar and manage it with ease. The Events Calendar plugin provides professional-level quality and features backed by a team you can trust."
378
- msgstr ""
379
-
380
- #: common/src/Tribe/PUE/Notices.php:340
381
- msgid "You can always check the status of your licenses by logging in to %1$syour account on theeventscalendar.com%2$s."
382
- msgstr ""
383
-
384
- #: common/src/Tribe/PUE/Notices.php:225
385
- msgid "It looks like you're using %1$s, but the license key is invalid. Please download the latest version %2$sfrom your account%3$s."
386
- msgid_plural "It looks like you're using %1$s, but the license keys are invalid. Please download the latest versions %2$sfrom your account%3$s."
387
- msgstr[0] ""
388
- msgstr[1] ""
389
-
390
- #: common/src/Tribe/PUE/Checker.php:976
391
- msgid "Please refresh the page and try your request again."
392
- msgstr ""
393
-
394
- #: common/src/Tribe/Ajax/Dropdown.php:243
395
- msgid "The \"%s\" source is invalid and cannot be reached on \"%s\" instance."
396
- msgstr ""
397
-
398
- #: common/src/Tribe/Ajax/Dropdown.php:193
399
- msgid "Empty data set for this dropdown"
400
- msgstr ""
401
-
402
- #: common/src/Tribe/Ajax/Dropdown.php:180
403
- msgid "Missing data source for this dropdown"
404
- msgstr ""
405
-
406
- #: common/src/Tribe/Ajax/Dropdown.php:38
407
- msgid "Cannot look for Terms without a taxonomy"
408
- msgstr ""
409
-
410
- #: common/src/Tribe/PUE/Checker.php:1095
411
- msgid "There is a new version of %1$s available. %2$s"
412
- msgstr ""
413
-
414
- #: common/src/Tribe/PUE/Checker.php:1084
415
- msgid "Update now to version %s."
416
- msgstr ""
417
-
418
- #: common/src/Tribe/PUE/Checker.php:497
419
- msgid "%1$sBuy a license%2$s for the Event Aggregator service to access additional import features."
420
- msgstr ""
421
-
422
- #: common/src/Tribe/Validate.php:238
423
- msgid "%s must be a whole number."
424
- msgstr ""
425
-
426
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:52
427
- msgid "The URL to the term archive page"
428
- msgstr ""
429
-
430
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:48
431
- msgid "The number of posts associated with the term"
432
- msgstr ""
433
-
434
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:44
435
- msgid "The term parent term if any"
436
- msgstr ""
437
-
438
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:40
439
- msgid "The term description"
440
- msgstr ""
441
-
442
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:36
443
- msgid "The taxonomy the term belongs to"
444
- msgstr ""
445
-
446
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:32
447
- msgid "The term slug"
448
- msgstr ""
449
-
450
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:28
451
- msgid "The term name"
452
- msgstr ""
453
-
454
- #: common/src/Tribe/Documentation/Swagger/Term_Definition_Provider.php:24
455
- msgid "The WordPress term ID"
456
- msgstr ""
457
-
458
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:36
459
- msgid "The link to the image in the specified size on the site"
460
- msgstr ""
461
-
462
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:32
463
- msgid "The image mime-type"
464
- msgstr ""
465
-
466
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:28
467
- msgid "The image height in pixels in the specified size"
468
- msgstr ""
469
-
470
- #: common/src/Tribe/Documentation/Swagger/Image_Size_Definition_Provider.php:24
471
- msgid "The image width in pixels in the specified size"
472
- msgstr ""
473
-
474
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:44
475
- msgid "The details about each size available for the image"
476
- msgstr ""
477
-
478
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:40
479
- msgid "The image natural height in pixels"
480
- msgstr ""
481
-
482
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:36
483
- msgid "The image natural width in pixels"
484
- msgstr ""
485
-
486
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:32
487
- msgid "The image file extension"
488
- msgstr ""
489
-
490
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:28
491
- msgid "The image WordPress post ID"
492
- msgstr ""
493
-
494
- #: common/src/Tribe/Documentation/Swagger/Image_Definition_Provider.php:24
495
- msgid "The URL to the full size version of the image"
496
- msgstr ""
497
-
498
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:44
499
- msgid "The date seconds"
500
- msgstr ""
501
-
502
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:40
503
- msgid "The date minutes"
504
- msgstr ""
505
-
506
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:36
507
- msgid "The date hour"
508
- msgstr ""
509
-
510
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:32
511
- msgid "The date day"
512
- msgstr ""
513
-
514
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:28
515
- msgid "The date month"
516
- msgstr ""
517
-
518
- #: common/src/Tribe/Documentation/Swagger/Date_Details_Definition_Provider.php:24
519
- msgid "The date year"
520
- msgstr ""
521
-
522
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:34
523
- msgid "A sorted array of all the numeric values for the cost"
524
- msgstr ""
525
-
526
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:28
527
- msgid "The position of the currency symbol in the cost string"
528
- msgstr ""
529
-
530
- #: common/src/Tribe/Documentation/Swagger/Cost_Details_Definition_Provider.php:24
531
- msgid "The cost currency symbol"
532
- msgstr ""
533
-
534
- #: src/template-tags/tickets.php:417
535
- msgctxt "ticket stock message (pending stock)"
536
- msgid "%1$d Awaiting Review"
537
- msgstr ""
538
-
539
- #: src/template-tags/tickets.php:412
540
- msgctxt "ticket stock message (remaining stock)"
541
- msgid "%1$d Remaining"
542
- msgstr ""
543
-
544
- #: src/template-tags/tickets.php:408
545
- msgid "%s %d"
546
- msgstr ""
547
-
548
- #: src/template-tags/tickets.php:402
549
- msgctxt "separate going and remain RSVPs"
550
- msgid "RSVP'd Going"
551
- msgstr ""
552
-
553
- #: src/template-tags/tickets.php:400
554
- msgid "Sold"
555
- msgstr ""
556
-
557
- #: src/admin-views/tribe-options-tickets.php:83
558
- msgid "Location of Tickets form"
559
- msgstr ""
560
-
561
- #: src/admin-views/tribe-options-tickets.php:75
562
- msgid "Location of RSVP form"
563
- msgstr ""
564
-
565
- #: src/admin-views/tribe-options-tickets.php:69
566
- msgid "Above the event description"
567
- msgstr ""
568
-
569
- #: src/admin-views/tribe-options-tickets.php:68
570
- msgid "Below the event description"
571
- msgstr ""
572
-
573
- #: src/admin-views/tribe-options-tickets.php:67
574
- msgid "Above the event details"
575
- msgstr ""
576
-
577
- #: src/admin-views/tribe-options-tickets.php:66
578
- msgid "Below the event details [default]"
579
- msgstr ""
580
-
581
- #: src/admin-views/attendees.php:76
582
- msgctxt "attendee screen summary"
583
- msgid "Attendees By Ticket"
584
- msgstr ""
585
-
586
- #: src/admin-views/attendees.php:38
587
- msgctxt "attendee screen summary"
588
- msgid "Event Details"
589
- msgstr ""
590
-
591
- #: src/Tribe/Attendees.php:106
592
- msgctxt "attendee event actions"
593
- msgid "View Event"
594
- msgstr ""
595
-
596
- #: src/Tribe/Attendees.php:105
597
- msgctxt "attendee event actions"
598
- msgid "Edit Event"
599
- msgstr ""
600
-
601
- #: src/Tribe/Attendees_Table.php:430 src/Tribe/Attendees_Table.php:450
602
- msgid "Undo"
603
- msgstr ""
604
-
605
- #: src/Tribe/Attendees_Table.php:422 src/Tribe/Attendees_Table.php:431
606
- #: src/Tribe/Attendees_Table.php:442 src/Tribe/Attendees_Table.php:451
607
- msgid "Check In"
608
- msgstr ""
609
-
610
- #: src/Tribe/Attendees_Table.php:59
611
- msgctxt "attendee table"
612
- msgid "Check in"
613
- msgstr ""
614
-
615
- #: src/Tribe/Attendees_Table.php:54
616
- msgctxt "attendee table"
617
- msgid "Security Code"
618
- msgstr ""
619
-
620
- #: src/Tribe/Attendees_Table.php:53
621
- msgctxt "attendee table"
622
- msgid "Primary Information"
623
- msgstr ""
624
-
625
- #: src/Tribe/Admin/Views/Ticketed.php:59
626
- msgid "Unticketed"
627
- msgstr ""
628
-
629
- #: src/Tribe/Admin/Views/Ticketed.php:47
630
- msgid "Ticketed"
631
- msgstr ""
632
-
633
- #: common/src/Tribe/Settings.php:269 common/src/Tribe/Settings.php:270
634
- msgid "Events Help"
635
- msgstr ""
636
-
637
- #: common/src/Tribe/PUE/Checker.php:1670
638
- msgid "Expired license. Consult your network administrator."
639
- msgstr ""
640
-
641
- #: common/src/Tribe/PUE/Checker.php:1669
642
- msgid "No license entered. Consult your network administrator."
643
- msgstr ""
644
-
645
- #: common/src/Tribe/PUE/Checker.php:1668
646
- msgid "A valid license has been entered by your network administrator."
647
- msgstr ""
648
-
649
- #: common/src/Tribe/PUE/Checker.php:550
650
- msgid "Site License Key"
651
- msgstr ""
652
-
653
- #: common/src/Tribe/PUE/Checker.php:539
654
- msgid "Check this box if you wish to override the network license key with your own"
655
- msgstr ""
656
-
657
- #: common/src/Tribe/PUE/Checker.php:538
658
- msgid "Override network license key"
659
- msgstr ""
660
-
661
- #: common/src/Tribe/PUE/Checker.php:529 common/src/Tribe/PUE/Checker.php:563
662
- msgid "License Key Status:"
663
- msgstr ""
664
-
665
- #: common/src/Tribe/Main.php:305
666
- msgid "Done"
667
- msgstr ""
668
-
669
- #: common/src/Tribe/Main.php:304
670
- msgid "Today"
671
- msgstr ""
672
-
673
- #: common/src/Tribe/Main.php:303
674
- msgid "Prev"
675
- msgstr ""
676
-
677
- #: common/src/Tribe/Customizer.php:569
678
- msgid "Use the following panel of your customizer to change the styling of your Calendar and Event pages."
679
- msgstr ""
680
-
681
- #: common/src/admin-views/app-shop.php:31
682
- msgid "Installed"
683
- msgstr ""
684
-
685
- #: common/src/admin-views/app-shop.php:29
686
- msgid "Installed Add-Ons"
687
- msgstr ""
688
-
689
- #: common/src/Tribe/Extension.php:368
690
- msgid "Unable to run Tribe Extensions. Your website host is running PHP 5.2 or older, and has likely disabled or misconfigured debug_backtrace(). You, or your website host, will need to upgrade PHP or properly configure debug_backtrace() for Tribe Extensions to work."
691
- msgstr ""
692
-
693
- #: common/src/Tribe/Extension.php:144
694
- msgid "Tutorial"
695
- msgstr ""
696
-
697
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:92
698
- msgctxt "the final separator in a list of two or more items"
699
- msgid " and "
700
- msgstr ""
701
-
702
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:91
703
- msgctxt "separator used in a list of items"
704
- msgid ", "
705
- msgstr ""
706
-
707
- #: src/views/tickets/rsvp.php:151
708
- msgctxt "order status label"
709
- msgid "RSVP"
710
- msgstr ""
711
-
712
- #: src/views/tickets/rsvp.php:32
713
- msgctxt "form heading"
714
- msgid "RSVP"
715
- msgstr ""
716
-
717
- #: src/views/tickets/orders-rsvp.php:68
718
- msgctxt "order status label"
719
- msgid "RSVP: "
720
- msgstr ""
721
-
722
- #: src/views/tickets/email-tickets-moved.php:103
723
- msgid "We wanted to let you know that a ticket you purchased for %2$s has been transferred to %3$s%4$s. Your ticket remains valid and no further action is needed on your part:"
724
- msgid_plural "We wanted to let you know that the following %1$s tickets for %2$s have been transferred to %3$s%4$s. Your existing tickets remain valid and no further action is needed on your part:"
725
- msgstr[0] ""
726
- msgstr[1] ""
727
-
728
- #: src/views/tickets/email-ticket-type-moved.php:115
729
- #: src/views/tickets/email-tickets-moved.php:117
730
- msgid " (taking place on %s)"
731
- msgstr ""
732
-
733
- #: src/views/tickets/email-ticket-type-moved.php:101
734
- msgid "We wanted to let you know that your ticket for %2$s has been transferred to %3$s%4$s. Your ticket remains valid and no further action is needed on your part."
735
- msgid_plural "We wanted to let you know that your %1$s tickets for %2$s have been transferred to %3$s%4$s. Your existing tickets remain valid and no further action is needed on your part."
736
- msgstr[0] ""
737
- msgstr[1] ""
738
-
739
- #: src/views/tickets/email-ticket-type-moved.php:97
740
- #: src/views/tickets/email-tickets-moved.php:99
741
- msgid "Important changes to your tickets"
742
- msgstr ""
743
-
744
- #: src/admin-views/ticket-type-history.php:15
745
- msgid "Click to hide history"
746
- msgstr ""
747
-
748
- #: src/admin-views/ticket-type-history.php:14
749
- msgid "Click to view the history"
750
- msgstr ""
751
-
752
- #: src/admin-views/ticket-type-history.php:10
753
- msgid "Ticket history:"
754
- msgstr ""
755
-
756
- #: src/admin-views/move-tickets.php:89
757
- msgctxt "move tickets dialog"
758
- msgid "Next &raquo;"
759
- msgstr ""
760
-
761
- #: src/admin-views/move-tickets.php:88
762
- msgid "Finish!"
763
- msgstr ""
764
-
765
- #: src/admin-views/move-tickets.php:87
766
- msgctxt "move tickets dialog"
767
- msgid "&laquo; Back"
768
- msgstr ""
769
-
770
- #: src/admin-views/move-tickets.php:80
771
- msgctxt "move tickets dialog"
772
- msgid "Please be patient while your request is processed&hellip;"
773
- msgstr ""
774
-
775
- #: src/admin-views/move-tickets.php:72
776
- msgid "Select the ticket type that the tickets should be transferred to:"
777
- msgstr ""
778
-
779
- #: src/admin-views/move-tickets.php:64
780
- msgid "Select the post you wish to move the ticket type to:"
781
- msgstr ""
782
-
783
- #: src/admin-views/move-tickets.php:59
784
- msgid "You can also enter keywords to help find the target event by title or description:"
785
- msgstr ""
786
-
787
- #: src/admin-views/move-tickets.php:54
788
- msgid "You can optionally focus on a specific post type:"
789
- msgstr ""
790
-
791
- #: src/admin-views/move-tickets.php:47
792
- msgid "Move tickets to a different event"
793
- msgstr ""
794
-
795
- #: src/admin-views/move-tickets.php:43
796
- msgid "Move to a different ticket type within the same event"
797
- msgstr ""
798
-
799
- #: src/admin-views/move-tickets.php:30
800
- msgid "You have selected %1$s ticket for %2$s. You can move it to a different ticket type within the same event, or to a different event."
801
- msgid_plural "You have selected %1$s tickets for %2$s. You can move them to a different ticket type within the same event, or to a different event."
802
- msgstr[0] ""
803
- msgstr[1] ""
804
-
805
- #: src/admin-views/move-tickets.php:25
806
- msgid "You have specified a range of attendees that are managed by different providers. It is not currently possible to move these together."
807
- msgstr ""
808
-
809
- #: src/admin-views/move-tickets.php:19
810
- msgid "No attendees specified! Please try again."
811
- msgstr ""
812
-
813
- #: src/admin-views/admin-welcome-message.php:38
814
- msgid "Product Releases, Tutorials and Community Activity"
815
- msgstr ""
816
-
817
- #: src/admin-views/admin-welcome-message.php:37
818
- msgid "News For Events Users"
819
- msgstr ""
820
-
821
- #: src/admin-views/admin-welcome-message.php:35
822
- msgid "Get the Skinny on the Latest Updates"
823
- msgstr ""
824
-
825
- #: src/admin-views/admin-welcome-message.php:34
826
- msgid "Release Notes"
827
- msgstr ""
828
-
829
- #: src/admin-views/admin-welcome-message.php:28
830
- msgid "FAQs, Documentation, Tutorials and Forums"
831
- msgstr ""
832
-
833
- #: src/admin-views/admin-welcome-message.php:27
834
- msgid "Support Resources"
835
- msgstr ""
836
-
837
- #: src/admin-views/admin-welcome-message.php:32
838
- msgid "Addons for creating tickets, custom registration, events and more."
839
- msgstr ""
840
-
841
- #: src/admin-views/admin-welcome-message.php:31
842
- msgid "Looking for More Features?"
843
- msgstr ""
844
-
845
- #: src/admin-views/admin-welcome-message.php:22
846
- msgid "Getting Started"
847
- msgstr ""
848
-
849
- #: src/admin-views/admin-welcome-message.php:64
850
- msgid "Sign Up"
851
- msgstr ""
852
-
853
- #: src/admin-views/admin-welcome-message.php:59
854
- msgid "News and Announcements"
855
- msgstr ""
856
-
857
- #: src/admin-views/admin-welcome-message.php:55
858
- msgid "Developer News"
859
- msgstr ""
860
-
861
- #: src/admin-views/admin-welcome-message.php:51
862
- msgid "Stay in touch with Event Tickets. We send out periodic updates, key developer notices, and even the occasional discount."
863
- msgstr ""
864
-
865
- #: src/admin-views/admin-welcome-message.php:50
866
- msgid "Newsletter Signup"
867
- msgstr ""
868
-
869
- #: src/admin-views/admin-welcome-message.php:47
870
- msgid "Rate It"
871
- msgstr ""
872
-
873
- #: src/admin-views/admin-welcome-message.php:46
874
- msgid "Rate us today!"
875
- msgstr ""
876
-
877
- #: src/admin-views/admin-welcome-message.php:45
878
- msgid "Your ratings help us bring Event Tickets to more users. More happy users mean more support, more features, and more of everything you know and love about Event Tickets. We couldn't do this without your support."
879
- msgstr ""
880
-
881
- #: src/admin-views/admin-welcome-message.php:44
882
- msgid "We Need Your Help"
883
- msgstr ""
884
-
885
- #: src/admin-views/admin-welcome-message.php:10
886
- msgid "You are running Version %s and deserve a hug :-)"
887
- msgstr ""
888
-
889
- #: src/Tribe/Attendees.php:490
890
- msgctxt "attendee export"
891
- msgid "Customer Email Address"
892
- msgstr ""
893
-
894
- #: src/Tribe/Attendees.php:489
895
- msgctxt "attendee export"
896
- msgid "Customer Name"
897
- msgstr ""
898
-
899
- #: src/Tribe/Attendees.php:488
900
- msgctxt "attendee export"
901
- msgid "Ticket #"
902
- msgstr ""
903
-
904
- #: src/Tribe/Attendees.php:487
905
- msgctxt "attendee export"
906
- msgid "Order Status"
907
- msgstr ""
908
-
909
- #: src/Tribe/Attendees.php:486
910
- msgctxt "attendee export"
911
- msgid "Order ID"
912
- msgstr ""
913
-
914
- #: src/Tribe/Attendees.php:274
915
- msgid "You must first select one or more tickets before you can move them!"
916
- msgstr ""
917
-
918
- #: src/Tribe/Attendees.php:79
919
- msgid "Post type"
920
- msgstr ""
921
-
922
- #: src/Tribe/Attendees.php:106
923
- msgctxt "attendee event actions"
924
- msgid "View"
925
- msgstr ""
926
-
927
- #: src/Tribe/Attendees.php:105
928
- msgctxt "attendee event actions"
929
- msgid "Edit"
930
- msgstr ""
931
-
932
- #: src/Tribe/RSVP.php:279
933
- msgid "RSVP Ticket"
934
- msgstr ""
935
-
936
- #: src/Tribe/RSVP.php:278
937
- msgid "RSVP Tickets"
938
- msgstr ""
939
-
940
- #: src/Tribe/RSVP.php:162
941
- msgctxt "ticket provider"
942
- msgid "RSVP"
943
- msgstr ""
944
-
945
- #: src/Tribe/RSVP/Attendance_Totals.php:39
946
- msgctxt "attendee summary"
947
- msgid "Not Going:"
948
- msgstr ""
949
-
950
- #: src/Tribe/RSVP/Attendance_Totals.php:38
951
- msgctxt "attendee summary"
952
- msgid "Going:"
953
- msgstr ""
954
-
955
- #: src/Tribe/RSVP/Attendance_Totals.php:37
956
- msgctxt "attendee summary"
957
- msgid "Total RSVPs:"
958
- msgstr ""
959
-
960
- #: src/Tribe/Assets.php:89
961
- msgid "Are you sure you want to delete this ticket? This cannot be undone."
962
- msgstr ""
963
-
964
- #: src/Tribe/Main.php:692
965
- msgctxt "button text"
966
- msgid "RSVP"
967
- msgstr ""
968
-
969
- #: src/Tribe/Main.php:557
970
- msgid "Welcome to Event Tickets"
971
- msgstr ""
972
-
973
- #: src/Tribe/CSV_Importer/Rows.php:49
974
- msgctxt "post type label"
975
- msgid "RSVPs"
976
- msgstr ""
977
-
978
- #: src/Tribe/CSV_Importer/Rows.php:35
979
- msgctxt "import type"
980
- msgid "RSVPs"
981
- msgstr ""
982
-
983
- #: src/Tribe/Attendees_Table.php:331
984
- msgctxt "row action"
985
- msgid "Delete"
986
- msgstr ""
987
-
988
- #: src/Tribe/Attendees_Table.php:319
989
- msgctxt "row action"
990
- msgid "Move"
991
- msgstr ""
992
-
993
- #: src/Tribe/Attendees_Table.php:309
994
- msgctxt "row action"
995
- msgid "Check In"
996
- msgstr ""
997
-
998
- #: src/Tribe/Attendees_Table.php:310
999
- msgctxt "row action"
1000
- msgid "Undo Check In"
1001
- msgstr ""
1002
-
1003
- #: src/Tribe/Attendees_Table.php:55
1004
- msgctxt "attendee table"
1005
- msgid "Status"
1006
- msgstr ""
1007
-
1008
- #: src/Tribe/Attendees_Table.php:52
1009
- msgctxt "attendee table"
1010
- msgid "Ticket"
1011
- msgstr ""
1012
-
1013
- #: src/Tribe/Attendance_Totals.php:30
1014
- msgctxt "attendee summary"
1015
- msgid "Deleted Attendees:"
1016
- msgstr ""
1017
-
1018
- #: src/Tribe/Attendees.php:133
1019
- msgctxt "attendee summary"
1020
- msgid "Checked in:"
1021
- msgstr ""
1022
-
1023
- #: src/Tribe/Admin/Ticket_History.php:65
1024
- msgid "No history available"
1025
- msgstr ""
1026
-
1027
- #: src/Tribe/Admin/Ticket_History.php:35
1028
- msgctxt "attendee table"
1029
- msgid "Hide history"
1030
- msgstr ""
1031
-
1032
- #: src/Tribe/Admin/Ticket_History.php:34
1033
- msgctxt "attendee table"
1034
- msgid "View history"
1035
- msgstr ""
1036
-
1037
- #: src/Tribe/Admin/Move_Tickets.php:760
1038
- msgid "This ticket was moved to %1$s from %2$s"
1039
- msgstr ""
1040
-
1041
- #: src/Tribe/Admin/Move_Tickets.php:580
1042
- msgid "This ticket was moved to %1$s %2$s from %3$s %4$s"
1043
- msgstr ""
1044
-
1045
- #: src/Tribe/Admin/Move_Tickets.php:462
1046
- msgid "%1$d attendee for %2$s was successfully %3$s. Please adjust capacity and stock manually as needed. This attendee will receive an email notifying them of the change."
1047
- msgid_plural "%1$d attendees for %2$s were successfully %3$s. Please adjust capacity and stock manually as needed. These attendees will receive an email notifying them of the change."
1048
- msgstr[0] ""
1049
- msgstr[1] ""
1050
-
1051
- #: src/Tribe/Admin/Move_Tickets.php:455
1052
- msgctxt "moved tickets success message fragment"
1053
- msgid "moved to %s and"
1054
- msgstr ""
1055
-
1056
- #: src/Tribe/Admin/Move_Tickets.php:448
1057
- msgctxt "moved tickets success message fragment"
1058
- msgid "assigned to %s"
1059
- msgstr ""
1060
-
1061
- #: src/Tribe/Admin/Move_Tickets.php:440
1062
- msgid "Tickets could not be moved: there was an unexpected failure during reassignment."
1063
- msgstr ""
1064
-
1065
- #: src/Tribe/Admin/Move_Tickets.php:432
1066
- msgid "Tickets could not be moved: valid ticket IDs or a destination ID were not provided."
1067
- msgstr ""
1068
-
1069
- #: src/Tribe/Admin/Move_Tickets.php:224
1070
- msgctxt "attendee screen bulk actions"
1071
- msgid "Move"
1072
- msgstr ""
1073
-
1074
- #: src/Tribe/Admin/Move_Tickets.php:116
1075
- msgid "Loading, please wait&hellip;"
1076
- msgstr ""
1077
-
1078
- #: src/Tribe/Admin/Move_Tickets.php:115
1079
- msgid "No ticket types were found for this post."
1080
- msgstr ""
1081
-
1082
- #: src/Tribe/Admin/Move_Tickets.php:114
1083
- msgid "No results found - you may need to widen your search criteria."
1084
- msgstr ""
1085
-
1086
- #: src/Tribe/Admin/Move_Tickets.php:113
1087
- msgid "Unable to update the post list. Please refresh the page and try again."
1088
- msgstr ""
1089
-
1090
- #: src/Tribe/Admin/Move_Tickets.php:112
1091
- msgid "Woops! We could not complete the requested operation due to an unforeseen problem."
1092
- msgstr ""
1093
-
1094
- #: src/Tribe/Admin/Move_Tickets.php:77
1095
- msgid "Move Attendees"
1096
- msgstr ""
1097
-
1098
- #: src/Tribe/Admin/Move_Ticket_Types.php:301
1099
- #: src/Tribe/Admin/Move_Tickets.php:701
1100
- msgid "Changes to your tickets from %s"
1101
- msgstr ""
1102
-
1103
- #: src/Tribe/Admin/Move_Ticket_Types.php:204
1104
- msgid "Ticket type was moved to <a href=\"%1$s\" target=\"_blank\">%2$s</a> from <a href=\"%3$s\" target=\"_blank\">%4$s</a>"
1105
- msgstr ""
1106
-
1107
- #: src/Tribe/Admin/Move_Ticket_Types.php:114
1108
- msgid "Ticket type %1$s for %2$s was successfully moved to %3$s. All previously sold tickets of this type have been transferred to %3$s. Please adjust capacity and stock manually as needed. %1$s ticket holders have received an email notifying them of the change. You may now close this window!"
1109
- msgstr ""
1110
-
1111
- #: src/Tribe/Admin/Move_Ticket_Types.php:108
1112
- msgid "Ticket type could not be moved: unexpected failure during reassignment."
1113
- msgstr ""
1114
-
1115
- #: src/Tribe/Admin/Move_Ticket_Types.php:102
1116
- msgid "Ticket type could not be moved: the ticket type or destination post was invalid."
1117
- msgstr ""
1118
-
1119
- #: src/Tribe/Admin/Move_Ticket_Types.php:72
1120
- #: src/Tribe/Admin/Move_Tickets.php:249
1121
- msgid "All supported types"
1122
- msgstr ""
1123
-
1124
- #: src/Tribe/Admin/Move_Ticket_Types.php:28
1125
- msgid "Move Ticket Types"
1126
- msgstr ""
1127
-
1128
- #: common/src/admin-views/tribe-options-licenses.php:30
1129
- msgid "Not seeing an update but expecting one? In WordPress, go to %1$sDashboard > Updates%2$s and click \"Check Again\"."
1130
- msgstr ""
1131
-
1132
- #: common/src/admin-views/tribe-options-licenses.php:25
1133
- msgid "If you're seeing a red message telling you that your key isn't valid or is out of installs, visit %1$s to manage your installs or renew / upgrade your license."
1134
- msgstr ""
1135
-
1136
- #: common/src/admin-views/tribe-options-licenses.php:22
1137
- msgid "Each paid add-on has its own unique license key. Simply paste the key into its appropriate field below, and give it a moment to validate. You know you're set when a green expiration date appears alongside a \"valid\" message."
1138
- msgstr ""
1139
-
1140
- #: common/src/admin-views/tribe-options-licenses.php:15
1141
- msgid "The license key you received when completing your purchase from %1$s will grant you access to support and updates until it expires. You do not need to enter the key below for the plugins to work, but you will need to enter it to get automatic updates. %3$sFind your license keys at %2$s%4$s."
1142
- msgstr ""
1143
-
1144
- #: common/src/admin-views/tribe-options-licenses.php:11
1145
- #: common/src/admin-views/tribe-options-licenses.php:16
1146
- msgid " (opens in new window)"
1147
- msgstr ""
1148
-
1149
- #: common/src/admin-views/tribe-options-help.php:55
1150
- msgid "Event Log"
1151
- msgstr ""
1152
-
1153
- #: common/src/admin-views/tribe-options-help.php:42
1154
- msgid "The details of your calendar plugin and settings is often needed for you or our staff to help troubleshoot an issue. Please opt-in below to automatically share your system information with our support team. This will allow us to assist you faster if you post in our forums."
1155
- msgstr ""
1156
-
1157
- #: common/src/admin-views/app-shop.php:26
1158
- msgid "Buy This Add-On"
1159
- msgstr ""
1160
-
1161
- #: common/src/admin-views/app-shop.php:5
1162
- msgid "Browse All Add-Ons"
1163
- msgstr ""
1164
-
1165
- #: common/src/admin-views/app-shop.php:4
1166
- msgid "Events Add-Ons"
1167
- msgstr ""
1168
-
1169
- #: common/src/Tribe/Languages/Locations.php:110
1170
- msgid "C&ocirc;te d'Ivoire"
1171
- msgstr ""
1172
-
1173
- #: common/src/Tribe/Support.php:370
1174
- msgid "Unique System Info Key Generated"
1175
- msgstr ""
1176
-
1177
- #: common/src/Tribe/Support.php:356 common/src/Tribe/Support.php:382
1178
- msgid "Permission Error"
1179
- msgstr ""
1180
-
1181
- #: common/src/Tribe/Support.php:323 common/src/Tribe/Support.php:328
1182
- msgid "Invalid Key"
1183
- msgstr ""
1184
-
1185
- #: common/src/Tribe/Support.php:304
1186
- msgid "Your system information will only be used by the Modern Tribe support team. All information is stored securely. We do not share this information with any third parties."
1187
- msgstr ""
1188
-
1189
- #: common/src/Tribe/Support.php:303
1190
- msgid "Yes, automatically share my system information with the Modern Tribe support team"
1191
- msgstr ""
1192
-
1193
- #: common/src/Tribe/PUE/Notices.php:383
1194
- msgctxt "formatted plugin list"
1195
- msgid "%1$s and %2$s"
1196
- msgstr ""
1197
-
1198
- #: common/src/Tribe/PUE/Notices.php:302
1199
- msgid "You have a license key for %1$s but the key is out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your license, or purchase a new one."
1200
- msgid_plural "You have license keys for %1$s but your keys are out of installs. %2$sVisit the Events Calendar website%3$s to manage your installs, upgrade your licenses, or purchase new ones."
1201
- msgstr[0] ""
1202
- msgstr[1] ""
1203
-
1204
- #: common/src/Tribe/PUE/Notices.php:270
1205
- msgid "There is an update available for %1$s but your license has expired. %2$sVisit the Events Calendar website to renew your license.%3$s"
1206
- msgid_plural "Updates are available for %1$s but your license keys have expired. %2$sVisit the Events Calendar website to renew your licenses.%3$s"
1207
- msgstr[0] ""
1208
- msgstr[1] ""
1209
-
1210
- #: common/src/Tribe/PUE/Checker.php:1054
1211
- msgid "There is an update for %s. %sRenew your license%s to get access to bug fixes, security updates, and new features."
1212
- msgstr ""
1213
-
1214
- #: common/src/Tribe/PUE/Checker.php:997
1215
- msgid "There is an update for %s. You'll need to %scheck your license%s to have access to updates, downloads, and support."
1216
- msgstr ""
1217
-
1218
- #: common/src/Tribe/PUE/Checker.php:961 common/src/Tribe/PUE/Notices.php:285
1219
- msgid " (opens in a new window)"
1220
- msgstr ""
1221
-
1222
- #: common/src/Tribe/PUE/Checker.php:959 common/src/Tribe/PUE/Notices.php:283
1223
- msgid "Renew Your License Now"
1224
- msgstr ""
1225
-
1226
- #: common/src/Tribe/Main.php:293
1227
- msgid ": Selected 1 row"
1228
- msgstr ""
1229
-
1230
- #: common/src/Tribe/Main.php:292
1231
- msgid ": Selected %d rows"
1232
- msgstr ""
1233
-
1234
- #: common/src/Tribe/Main.php:287
1235
- msgid "Previous"
1236
- msgstr ""
1237
-
1238
- #: common/src/Tribe/Main.php:286 common/src/Tribe/Main.php:302
1239
- msgid "Next"
1240
- msgstr ""
1241
-
1242
- #: common/src/Tribe/Main.php:285
1243
- msgid "All"
1244
- msgstr ""
1245
-
1246
- #: common/src/Tribe/Main.php:280
1247
- msgid "Search:"
1248
- msgstr ""
1249
-
1250
- #: common/src/Tribe/Main.php:279
1251
- msgid "No matching records found"
1252
- msgstr ""
1253
-
1254
- #: common/src/Tribe/Main.php:278
1255
- msgid "(filtered from _MAX_ total entries)"
1256
- msgstr ""
1257
-
1258
- #: common/src/Tribe/Main.php:277
1259
- msgid "Showing 0 to 0 of 0 entries"
1260
- msgstr ""
1261
-
1262
- #: common/src/Tribe/Main.php:276
1263
- msgid "Showing _START_ to _END_ of _TOTAL_ entries"
1264
- msgstr ""
1265
-
1266
- #: common/src/Tribe/Main.php:275
1267
- msgid "No data available in table"
1268
- msgstr ""
1269
-
1270
- #: common/src/Tribe/Main.php:274
1271
- msgid "Show _MENU_ entries"
1272
- msgstr ""
1273
-
1274
- #: common/src/Tribe/Main.php:272
1275
- msgid ": activate to sort column descending"
1276
- msgstr ""
1277
-
1278
- #: common/src/Tribe/Main.php:271
1279
- msgid ": activate to sort column ascending"
1280
- msgstr ""
1281
-
1282
- #: common/src/Tribe/Main.php:252
1283
- msgid "Press \"Cmd + C\" to copy"
1284
- msgstr ""
1285
-
1286
- #: common/src/Tribe/Main.php:251
1287
- msgid "System info copied"
1288
- msgstr ""
1289
-
1290
- #: common/src/Tribe/Main.php:250
1291
- #: common/src/admin-views/tribe-options-help.php:50
1292
- msgid "Copy to clipboard"
1293
- msgstr ""
1294
-
1295
- #: common/src/Tribe/Error.php:38
1296
- msgid "An Unknown error occurred"
1297
- msgstr ""
1298
-
1299
- #: common/src/Tribe/Admin/Help_Page.php:219 common/src/Tribe/Plugins_API.php:34
1300
- msgid "Event Aggregator"
1301
- msgstr ""
1302
-
1303
- #: common/src/Tribe/Admin/Activation_Page.php:85
1304
- msgid "Return to WordPress Updates"
1305
- msgstr ""
1306
-
1307
- #: common/src/Tribe/Admin/Activation_Page.php:85
1308
- msgid "Go to WordPress Updates page"
1309
- msgstr ""
1310
-
1311
- #: common/src/Tribe/Admin/Activation_Page.php:77
1312
- msgid "Return to Plugins page"
1313
- msgstr ""
1314
-
1315
- #: common/src/Tribe/Admin/Activation_Page.php:77
1316
- msgid "Go to plugins page"
1317
- msgstr ""
1318
-
1319
- #: common/src/Tribe/Admin/Notice/Plugin_Download.php:75
1320
- msgid "To begin using %1$s, please install and activate the latest version of %2$s."
1321
- msgstr ""
1322
-
1323
- #: src/Tribe/Tickets.php:1458
1324
- msgid "Tickets are not available as this %s has passed."
1325
- msgstr ""
1326
-
1327
- #: src/Tribe/Assets.php:102 src/Tribe/Metabox.php:548
1328
- msgid "Please enter in without thousand separators and currency symbols."
1329
- msgstr ""
1330
-
1331
- #: common/src/Tribe/Support.php:170
1332
- msgid "English"
1333
- msgstr ""
1334
-
1335
- #: common/src/Tribe/Plugins_API.php:116
1336
- msgid "The Eventbrite Tickets add-on allows you to create & sell tickets through The Events Calendar using the power of %1$sEventbrite%2$s. Whether you’re creating your ticket on the WordPress dashboard or importing the details of an already-existing event from %1$sEventbrite.com%2$s, this add-on brings the power of the Eventbrite API to your calendar."
1337
- msgstr ""
1338
-
1339
- #: common/src/Tribe/Plugins_API.php:71
1340
- msgid "Event Tickets Plus allows you to sell tickets to your events using WooCommerce, Shopp, WP eCommerce, or Easy Digital Downloads. Use it on your posts and pages, or add %1$sThe Events Calendar%2$s and sell tickets from your events listings."
1341
- msgstr ""
1342
-
1343
- #: common/src/Tribe/Plugins_API.php:105
1344
- msgctxt "Names of required plugins for Community Tickets"
1345
- msgid "Event Tickets Plus and Community Events"
1346
- msgstr ""
1347
-
1348
- #: common/src/Tribe/Plugins_API.php:104
1349
- msgid "Enable Community Events organizers to offer tickets to their events. You can set flexible payment and fee options. They can even check-in attendees to their events! All of this managed from the front-end of your site without ever needing to grant access to your admin"
1350
- msgstr ""
1351
-
1352
- #: common/src/Tribe/Plugins_API.php:48
1353
- msgid "The Events Calendar PRO is a paid Add-On to our open source WordPress plugin %1$sThe Events Calendar%2$s. PRO offers a whole host of calendar features including recurring events, custom event attributes, saved venues and organizers, venue pages, advanced event admin and lots more."
1354
- msgstr ""
1355
-
1356
- #: common/src/Tribe/Plugins_API.php:84
1357
- msgid "It is awesome that your calendar is <em>THE PLACE</em> to get hooked up with prime choice ways to spend time. You have more events than Jabba the Hutt has rolls. Too bad visitors are hiring a personal assistant to go through all the choices. Ever wish you could just filter the calendar to only show events in walking distance, on a weekend, that are free? BOOM. Now you can. Introducing… the Filter Bar."
1358
- msgstr ""
1359
-
1360
- #: common/src/Tribe/Admin/Help_Page.php:227 common/src/Tribe/Plugins_API.php:80
1361
- msgid "Filter Bar"
1362
- msgstr ""
1363
-
1364
- #: common/src/Tribe/Credits.php:64
1365
- msgid "Rate %1$sEvent Tickets%2$s %3$s"
1366
- msgstr ""
1367
-
1368
- #: common/src/Tribe/Credits.php:55
1369
- msgid "Rate %1$sThe Events Calendar%2$s %3$s"
1370
- msgstr ""
1371
-
1372
- #: src/Tribe/RSVP.php:843
1373
- msgid "You confirmed you will not be attending %s"
1374
- msgstr ""
1375
-
1376
- #: src/views/tickets/email-non-attendance.php:248
1377
- msgid "Thank you for confirming that you will not be attending the above event."
1378
- msgstr ""
1379
-
1380
- #: src/views/tickets/orders-rsvp.php:87
1381
- msgid "Type: "
1382
- msgstr ""
1383
-
1384
- #. Description of the plugin/theme
1385
- msgid "Event Tickets allows your guests to RSVP from any post, page, or event."
1386
- msgstr ""
1387
-
1388
- #: src/views/tickets/rsvp.php:191
1389
- msgid "Login to RSVP"
1390
- msgstr ""
1391
-
1392
- #: src/views/tickets/orders.php:57
1393
- msgid "Update %s"
1394
- msgstr ""
1395
-
1396
- #: src/views/tickets/orders.php:26
1397
- msgid "View %s"
1398
- msgstr ""
1399
-
1400
- #: src/views/tickets/orders-rsvp.php:63
1401
- msgid "Attendee %d"
1402
- msgstr ""
1403
-
1404
- #: src/views/tickets/orders-rsvp.php:44
1405
- msgid " on %s"
1406
- msgstr ""
1407
-
1408
- #: src/views/tickets/orders-rsvp.php:38
1409
- msgid "Reserved by %1$s (%2$s)"
1410
- msgstr ""
1411
-
1412
- #: src/views/tickets/orders-rsvp.php:29
1413
- msgid "My RSVPs for This %s"
1414
- msgstr ""
1415
-
1416
- #: src/views/tickets/orders-link.php:54
1417
- msgid "View your %s"
1418
- msgstr ""
1419
-
1420
- #: src/views/tickets/orders-link.php:53
1421
- msgid "You have %s for this %s."
1422
- msgstr ""
1423
-
1424
- #: src/views/tickets/orders-link.php:34
1425
- msgid "%d Ticket"
1426
- msgid_plural "%d Tickets"
1427
- msgstr[0] ""
1428
- msgstr[1] ""
1429
-
1430
- #: src/views/tickets/orders-link.php:30
1431
- msgid "%d RSVP"
1432
- msgid_plural "%d RSVPs"
1433
- msgstr[0] ""
1434
- msgstr[1] ""
1435
-
1436
- #: src/views/shortcodes/my-attendance-list.php:32
1437
- msgid "You have not indicated your attendance for any upcoming events."
1438
- msgstr ""
1439
-
1440
- #: src/views/shortcodes/my-attendance-list-logged-out.php:12
1441
- msgid "To see a list of events you are attending you will need to login."
1442
- msgstr ""
1443
-
1444
- #: src/admin-views/tribe-options-tickets.php:101
1445
- msgid "You can require that users log into your site before they are able to RSVP (or buy tickets). Please review your WordPress Membership option (via the General Settings admin screen) before adjusting this setting."
1446
- msgstr ""
1447
-
1448
- #: src/admin-views/tribe-options-tickets.php:96
1449
- msgid "Login requirements"
1450
- msgstr ""
1451
-
1452
- #: src/admin-views/tribe-options-tickets.php:37
1453
- msgid "Require users to log in before they RSVP"
1454
- msgstr ""
1455
-
1456
- #: src/Tribe/Tickets_View.php:731
1457
- msgid "This RSVP is no longer active."
1458
- msgstr ""
1459
-
1460
- #: src/Tribe/Tickets_View.php:665
1461
- msgid "Ticket"
1462
- msgstr ""
1463
-
1464
- #: src/Tribe/Tickets_View.php:553
1465
- msgid "Not Going"
1466
- msgstr ""
1467
-
1468
- #: src/Tribe/Tickets_View.php:552
1469
- msgid "Going"
1470
- msgstr ""
1471
-
1472
- #: src/Tribe/Tickets.php:1464
1473
- msgid "There are no tickets available at this time."
1474
- msgstr ""
1475
-
1476
- #: src/Tribe/Tickets.php:1462
1477
- msgid "Tickets are no longer available."
1478
- msgstr ""
1479
-
1480
- #: src/Tribe/Tickets.php:1460
1481
- msgid "Tickets are not yet available."
1482
- msgstr ""
1483
-
1484
- #: src/Tribe/Main.php:692
1485
- msgid "Buy"
1486
- msgstr ""
1487
-
1488
- #: common/src/Tribe/Cost_Utils.php:114 src/Tribe/JSON_LD/Order.php:106
1489
- msgid "Free"
1490
- msgstr ""
1491
-
1492
- #: src/Tribe/Tickets_View.php:661
1493
- msgid "RSVPs"
1494
- msgstr ""
1495
-
1496
- #: src/Tribe/CSV_Importer/RSVP_Importer.php:237
1497
- msgid "Recurring event tickets are not supported, event %s."
1498
- msgstr ""
1499
-
1500
- #: src/Tribe/CSV_Importer/Column_Names.php:41
1501
- msgid "Ticket Stock"
1502
- msgstr ""
1503
-
1504
- #: src/Tribe/CSV_Importer/Column_Names.php:40
1505
- msgid