Version Description
Download this release
Release Info
Developer | ModernTribe |
Plugin | Event Tickets |
Version | 4.10.10 |
Comparing to | |
See all releases |
Code changes from version 4.10.9 to 4.10.10
- common/lang/tribe-common-af.mo +0 -0
- common/lang/tribe-common-ar.mo +0 -0
- common/lang/tribe-common-bg_BG.mo +0 -0
- common/lang/tribe-common-ca.mo +0 -0
- common/lang/tribe-common-cs_CZ.mo +0 -0
- common/lang/tribe-common-da_DK.mo +0 -0
- common/lang/tribe-common-de_DE.mo +0 -0
- common/lang/tribe-common-el.mo +0 -0
- common/lang/tribe-common-en_GB.mo +0 -0
- common/lang/tribe-common-es_ES.mo +0 -0
- common/lang/tribe-common-et.mo +0 -0
- common/lang/tribe-common-fi.mo +0 -0
- common/lang/tribe-common-fr_CA.mo +0 -0
- common/lang/tribe-common-fr_FR.mo +0 -0
- common/lang/tribe-common-hu_HU.mo +0 -0
- common/lang/tribe-common-id_ID.mo +0 -0
- common/lang/tribe-common-is_IS.mo +0 -0
- common/lang/tribe-common-it_IT.mo +0 -0
- common/lang/tribe-common-ja.mo +0 -0
- common/lang/tribe-common-lt_LT.mo +0 -0
- common/lang/tribe-common-lv.mo +0 -0
- common/lang/tribe-common-nb_NO.mo +0 -0
- common/lang/tribe-common-nl_NL.mo +0 -0
- common/lang/tribe-common-pl_PL.mo +0 -0
- common/lang/tribe-common-pt_BR.mo +0 -0
- common/lang/tribe-common-pt_PT.mo +0 -0
- common/lang/tribe-common-ro_RO.mo +0 -0
- common/lang/tribe-common-ru_RU.mo +0 -0
- common/lang/tribe-common-sk_SK.mo +0 -0
- common/lang/tribe-common-sl_SI.mo +0 -0
- common/lang/tribe-common-sr_RS.mo +0 -0
- common/lang/tribe-common-sv_SE.mo +0 -0
- common/lang/tribe-common-tr_TR.mo +0 -0
- common/lang/tribe-common-zh_CN.mo +0 -0
- common/lang/tribe-common-zh_TW.mo +0 -0
- common/lang/tribe-common.pot +36 -36
- common/src/Tribe/Main.php +1 -1
- common/src/functions/multibyte.php +31 -0
- common/vendor/autoload.php +1 -1
- common/vendor/autoload_52.php +1 -1
- common/vendor/composer/autoload_real.php +4 -4
- common/vendor/composer/autoload_real_52.php +3 -3
- common/vendor/composer/autoload_static.php +5 -5
- event-tickets.php +1 -1
- lang/event-tickets.pot +22 -22
- readme.txt +10 -1
- src/Tribe/Attendees.php +4 -4
- src/Tribe/Commerce/PayPal/Main.php +19 -4
- src/Tribe/Editor/Blocks/Rsvp.php +1 -2
- src/Tribe/Editor/Blocks/Tickets.php +1 -2
- src/Tribe/Main.php +2 -2
- src/Tribe/REST/V1/Post_Repository.php +1 -1
- src/Tribe/RSVP.php +6 -7
- src/Tribe/Status/Abstract_Commerce.php +38 -26
- src/Tribe/Ticket_Object.php +56 -52
- src/Tribe/Ticket_Repository.php +2 -2
- src/Tribe/Tickets.php +5 -11
- src/Tribe/Views/V2/Models/Tickets.php +2 -2
- src/Tribe/Views/V2/Service_Provider.php +1 -1
- src/admin-views/tribe-options-tickets.php +1 -1
- src/views/blocks/tickets.php +3 -2
- src/views/tickets/tpp.php +2 -2
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +4 -4
- vendor/composer/autoload_static.php +4 -4
common/lang/tribe-common-af.mo
CHANGED
Binary file
|
common/lang/tribe-common-ar.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.
|
6 |
"Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
|
7 |
-
"POT-Creation-Date: 2019-09
|
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
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
@@ -989,135 +989,135 @@ msgid "Macau"
|
|
989 |
msgstr ""
|
990 |
|
991 |
#: src/Tribe/Languages/Locations.php:185
|
992 |
-
msgid "
|
993 |
msgstr ""
|
994 |
|
995 |
#: src/Tribe/Languages/Locations.php:186
|
996 |
-
msgid "
|
997 |
msgstr ""
|
998 |
|
999 |
#: src/Tribe/Languages/Locations.php:187
|
1000 |
-
msgid "
|
1001 |
msgstr ""
|
1002 |
|
1003 |
#: src/Tribe/Languages/Locations.php:188
|
1004 |
-
msgid "
|
1005 |
msgstr ""
|
1006 |
|
1007 |
#: src/Tribe/Languages/Locations.php:189
|
1008 |
-
msgid "
|
1009 |
msgstr ""
|
1010 |
|
1011 |
#: src/Tribe/Languages/Locations.php:190
|
1012 |
-
msgid "
|
1013 |
msgstr ""
|
1014 |
|
1015 |
#: src/Tribe/Languages/Locations.php:191
|
1016 |
-
msgid "
|
1017 |
msgstr ""
|
1018 |
|
1019 |
#: src/Tribe/Languages/Locations.php:192
|
1020 |
-
msgid "
|
1021 |
msgstr ""
|
1022 |
|
1023 |
#: src/Tribe/Languages/Locations.php:193
|
1024 |
-
msgid "
|
1025 |
msgstr ""
|
1026 |
|
1027 |
#: src/Tribe/Languages/Locations.php:194
|
1028 |
-
msgid "
|
1029 |
msgstr ""
|
1030 |
|
1031 |
#: src/Tribe/Languages/Locations.php:195
|
1032 |
-
msgid "
|
1033 |
msgstr ""
|
1034 |
|
1035 |
#: src/Tribe/Languages/Locations.php:196
|
1036 |
-
msgid "
|
1037 |
msgstr ""
|
1038 |
|
1039 |
#: src/Tribe/Languages/Locations.php:197
|
1040 |
-
msgid "
|
1041 |
msgstr ""
|
1042 |
|
1043 |
#: src/Tribe/Languages/Locations.php:198
|
1044 |
-
msgid "
|
1045 |
msgstr ""
|
1046 |
|
1047 |
#: src/Tribe/Languages/Locations.php:199
|
1048 |
-
msgid "
|
1049 |
msgstr ""
|
1050 |
|
1051 |
#: src/Tribe/Languages/Locations.php:200
|
1052 |
-
msgid "
|
1053 |
msgstr ""
|
1054 |
|
1055 |
#: src/Tribe/Languages/Locations.php:201
|
1056 |
-
msgid "
|
1057 |
msgstr ""
|
1058 |
|
1059 |
#: src/Tribe/Languages/Locations.php:202
|
1060 |
-
msgid "
|
1061 |
msgstr ""
|
1062 |
|
1063 |
#: src/Tribe/Languages/Locations.php:203
|
1064 |
-
msgid "
|
1065 |
msgstr ""
|
1066 |
|
1067 |
#: src/Tribe/Languages/Locations.php:204
|
1068 |
-
msgid "
|
1069 |
msgstr ""
|
1070 |
|
1071 |
#: src/Tribe/Languages/Locations.php:205
|
1072 |
-
msgid "
|
1073 |
msgstr ""
|
1074 |
|
1075 |
#: src/Tribe/Languages/Locations.php:206
|
1076 |
-
msgid "
|
1077 |
msgstr ""
|
1078 |
|
1079 |
#: src/Tribe/Languages/Locations.php:207
|
1080 |
-
msgid "
|
1081 |
msgstr ""
|
1082 |
|
1083 |
#: src/Tribe/Languages/Locations.php:208
|
1084 |
-
msgid "
|
1085 |
msgstr ""
|
1086 |
|
1087 |
#: src/Tribe/Languages/Locations.php:209
|
1088 |
-
msgid "
|
1089 |
msgstr ""
|
1090 |
|
1091 |
#: src/Tribe/Languages/Locations.php:210
|
1092 |
-
msgid "
|
1093 |
msgstr ""
|
1094 |
|
1095 |
#: src/Tribe/Languages/Locations.php:211
|
1096 |
-
msgid "New
|
1097 |
msgstr ""
|
1098 |
|
1099 |
#: src/Tribe/Languages/Locations.php:212
|
1100 |
-
msgid "
|
1101 |
msgstr ""
|
1102 |
|
1103 |
#: src/Tribe/Languages/Locations.php:213
|
1104 |
-
msgid "
|
1105 |
msgstr ""
|
1106 |
|
1107 |
#: src/Tribe/Languages/Locations.php:214
|
1108 |
-
msgid "
|
1109 |
msgstr ""
|
1110 |
|
1111 |
#: src/Tribe/Languages/Locations.php:215
|
1112 |
-
msgid "
|
1113 |
msgstr ""
|
1114 |
|
1115 |
#: src/Tribe/Languages/Locations.php:216
|
1116 |
-
msgid "
|
1117 |
msgstr ""
|
1118 |
|
1119 |
#: src/Tribe/Languages/Locations.php:217
|
1120 |
-
msgid "
|
1121 |
msgstr ""
|
1122 |
|
1123 |
#: src/Tribe/Languages/Locations.php:218
|
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.19\n"
|
6 |
"Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
|
7 |
+
"POT-Creation-Date: 2019-10-09 02:57:19+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-10-09 02:57\n"
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
989 |
msgstr ""
|
990 |
|
991 |
#: src/Tribe/Languages/Locations.php:185
|
992 |
+
msgid "Madagascar"
|
993 |
msgstr ""
|
994 |
|
995 |
#: src/Tribe/Languages/Locations.php:186
|
996 |
+
msgid "Malawi"
|
997 |
msgstr ""
|
998 |
|
999 |
#: src/Tribe/Languages/Locations.php:187
|
1000 |
+
msgid "Malaysia"
|
1001 |
msgstr ""
|
1002 |
|
1003 |
#: src/Tribe/Languages/Locations.php:188
|
1004 |
+
msgid "Maldives"
|
1005 |
msgstr ""
|
1006 |
|
1007 |
#: src/Tribe/Languages/Locations.php:189
|
1008 |
+
msgid "Mali"
|
1009 |
msgstr ""
|
1010 |
|
1011 |
#: src/Tribe/Languages/Locations.php:190
|
1012 |
+
msgid "Malta"
|
1013 |
msgstr ""
|
1014 |
|
1015 |
#: src/Tribe/Languages/Locations.php:191
|
1016 |
+
msgid "Marshall Islands"
|
1017 |
msgstr ""
|
1018 |
|
1019 |
#: src/Tribe/Languages/Locations.php:192
|
1020 |
+
msgid "Martinique"
|
1021 |
msgstr ""
|
1022 |
|
1023 |
#: src/Tribe/Languages/Locations.php:193
|
1024 |
+
msgid "Mauritania"
|
1025 |
msgstr ""
|
1026 |
|
1027 |
#: src/Tribe/Languages/Locations.php:194
|
1028 |
+
msgid "Mauritius"
|
1029 |
msgstr ""
|
1030 |
|
1031 |
#: src/Tribe/Languages/Locations.php:195
|
1032 |
+
msgid "Mayotte"
|
1033 |
msgstr ""
|
1034 |
|
1035 |
#: src/Tribe/Languages/Locations.php:196
|
1036 |
+
msgid "Mexico"
|
1037 |
msgstr ""
|
1038 |
|
1039 |
#: src/Tribe/Languages/Locations.php:197
|
1040 |
+
msgid "Micronesia, Federated States of"
|
1041 |
msgstr ""
|
1042 |
|
1043 |
#: src/Tribe/Languages/Locations.php:198
|
1044 |
+
msgid "Moldova, Republic of"
|
1045 |
msgstr ""
|
1046 |
|
1047 |
#: src/Tribe/Languages/Locations.php:199
|
1048 |
+
msgid "Monaco"
|
1049 |
msgstr ""
|
1050 |
|
1051 |
#: src/Tribe/Languages/Locations.php:200
|
1052 |
+
msgid "Mongolia"
|
1053 |
msgstr ""
|
1054 |
|
1055 |
#: src/Tribe/Languages/Locations.php:201
|
1056 |
+
msgid "Montenegro"
|
1057 |
msgstr ""
|
1058 |
|
1059 |
#: src/Tribe/Languages/Locations.php:202
|
1060 |
+
msgid "Montserrat"
|
1061 |
msgstr ""
|
1062 |
|
1063 |
#: src/Tribe/Languages/Locations.php:203
|
1064 |
+
msgid "Morocco"
|
1065 |
msgstr ""
|
1066 |
|
1067 |
#: src/Tribe/Languages/Locations.php:204
|
1068 |
+
msgid "Mozambique"
|
1069 |
msgstr ""
|
1070 |
|
1071 |
#: src/Tribe/Languages/Locations.php:205
|
1072 |
+
msgid "Myanmar"
|
1073 |
msgstr ""
|
1074 |
|
1075 |
#: src/Tribe/Languages/Locations.php:206
|
1076 |
+
msgid "Namibia"
|
1077 |
msgstr ""
|
1078 |
|
1079 |
#: src/Tribe/Languages/Locations.php:207
|
1080 |
+
msgid "Nauru"
|
1081 |
msgstr ""
|
1082 |
|
1083 |
#: src/Tribe/Languages/Locations.php:208
|
1084 |
+
msgid "Nepal"
|
1085 |
msgstr ""
|
1086 |
|
1087 |
#: src/Tribe/Languages/Locations.php:209
|
1088 |
+
msgid "Netherlands"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
#: src/Tribe/Languages/Locations.php:210
|
1092 |
+
msgid "New Caledonia"
|
1093 |
msgstr ""
|
1094 |
|
1095 |
#: src/Tribe/Languages/Locations.php:211
|
1096 |
+
msgid "New Zealand"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
#: src/Tribe/Languages/Locations.php:212
|
1100 |
+
msgid "Nicaragua"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
#: src/Tribe/Languages/Locations.php:213
|
1104 |
+
msgid "Niger"
|
1105 |
msgstr ""
|
1106 |
|
1107 |
#: src/Tribe/Languages/Locations.php:214
|
1108 |
+
msgid "Nigeria"
|
1109 |
msgstr ""
|
1110 |
|
1111 |
#: src/Tribe/Languages/Locations.php:215
|
1112 |
+
msgid "Niue"
|
1113 |
msgstr ""
|
1114 |
|
1115 |
#: src/Tribe/Languages/Locations.php:216
|
1116 |
+
msgid "Norfolk Island"
|
1117 |
msgstr ""
|
1118 |
|
1119 |
#: src/Tribe/Languages/Locations.php:217
|
1120 |
+
msgid "North Macedonia"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
#: src/Tribe/Languages/Locations.php:218
|
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.
|
21 |
|
22 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
23 |
|
17 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
18 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
19 |
|
20 |
+
const VERSION = '4.9.19';
|
21 |
|
22 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
23 |
|
common/src/functions/multibyte.php
CHANGED
@@ -160,3 +160,34 @@ if ( ! function_exists( 'tribe_uc_first_letter' ) ) {
|
|
160 |
return $letter;
|
161 |
}
|
162 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
160 |
return $letter;
|
161 |
}
|
162 |
}
|
163 |
+
|
164 |
+
if ( ! function_exists( 'tribe_strpos' ) ) {
|
165 |
+
/**
|
166 |
+
* Find the numeric position of the first occurrence of needle in the haystack string using multibyte function if available.
|
167 |
+
*
|
168 |
+
* @since 4.9.19
|
169 |
+
*
|
170 |
+
* @param string $haystack The string to search in.
|
171 |
+
* @param string $needle The string to find in haystack.
|
172 |
+
* @param int $offset The search offset. If it is not specified, 0 is used. A negative offset counts from the end of the string.
|
173 |
+
*
|
174 |
+
* @return int|false The numeric position of the first occurrence of needle in the haystack string. If needle is not found, it returns false.
|
175 |
+
*
|
176 |
+
* @see strpos The fallback function used if mb_strpos does not exist.
|
177 |
+
* @see mb_strpos The multibyte compatible version of strpos.
|
178 |
+
*/
|
179 |
+
function tribe_strpos( $haystack, $needle, $offset = 0 ) {
|
180 |
+
if ( function_exists( 'mb_strpos' ) ) {
|
181 |
+
$encoding = tribe_detect_encoding( $haystack );
|
182 |
+
|
183 |
+
// Use encoding if it was detected.
|
184 |
+
if ( $encoding ) {
|
185 |
+
return mb_strpos( $haystack, $needle, $offset, $encoding );
|
186 |
+
}
|
187 |
+
|
188 |
+
return mb_strpos( $haystack, $needle, $offset );
|
189 |
+
}
|
190 |
+
|
191 |
+
return strpos( $haystack, $needle, $offset );
|
192 |
+
}
|
193 |
+
}
|
common/vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit91707e76dc8305658ee5dc895405093d::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
|
4 |
|
5 |
require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInitf164a9e81bb0c87b5ef9fec1d05caeec::getLoader();
|
common/vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInitf211722f7d1cce246a2f7c04a769c000
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
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\
|
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 ComposerAutoloaderInit91707e76dc8305658ee5dc895405093d
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit91707e76dc8305658ee5dc895405093d', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit91707e76dc8305658ee5dc895405093d', '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\ComposerStaticInit91707e76dc8305658ee5dc895405093d::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
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInitbf75faf0b506d9c5f1fa174f3392425c {
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
25 |
|
26 |
$vendorDir = dirname(dirname(__FILE__));
|
27 |
$baseDir = dirname($vendorDir);
|
2 |
|
3 |
// autoload_real_52.php generated by xrstf/composer-php52
|
4 |
|
5 |
+
class ComposerAutoloaderInitf164a9e81bb0c87b5ef9fec1d05caeec {
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInitf164a9e81bb0c87b5ef9fec1d05caeec', 'loadClassLoader'), true /*, true */);
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInitf164a9e81bb0c87b5ef9fec1d05caeec', 'loadClassLoader'));
|
25 |
|
26 |
$vendorDir = dirname(dirname(__FILE__));
|
27 |
$baseDir = dirname($vendorDir);
|
common/vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
@@ -198,10 +198,10 @@ class ComposerStaticInitf211722f7d1cce246a2f7c04a769c000
|
|
198 |
public static function getInitializer(ClassLoader $loader)
|
199 |
{
|
200 |
return \Closure::bind(function () use ($loader) {
|
201 |
-
$loader->prefixLengthsPsr4 =
|
202 |
-
$loader->prefixDirsPsr4 =
|
203 |
-
$loader->prefixesPsr0 =
|
204 |
-
$loader->classMap =
|
205 |
|
206 |
}, null, ClassLoader::class);
|
207 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit91707e76dc8305658ee5dc895405093d
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
198 |
public static function getInitializer(ClassLoader $loader)
|
199 |
{
|
200 |
return \Closure::bind(function () use ($loader) {
|
201 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit91707e76dc8305658ee5dc895405093d::$prefixLengthsPsr4;
|
202 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit91707e76dc8305658ee5dc895405093d::$prefixDirsPsr4;
|
203 |
+
$loader->prefixesPsr0 = ComposerStaticInit91707e76dc8305658ee5dc895405093d::$prefixesPsr0;
|
204 |
+
$loader->classMap = ComposerStaticInit91707e76dc8305658ee5dc895405093d::$classMap;
|
205 |
|
206 |
}, null, ClassLoader::class);
|
207 |
}
|
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 |
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.10
|
7 |
Author: Modern Tribe, Inc.
|
8 |
Author URI: http://m.tri.be/28
|
9 |
License: GPLv2 or later
|
lang/event-tickets.pot
CHANGED
@@ -2,17 +2,17 @@
|
|
2 |
# This file is distributed under the same license as the Event Tickets package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Event Tickets 4.10.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/event-tickets\n"
|
7 |
-
"POT-Creation-Date: 2019-09
|
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
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
15 |
-
#. #-#-#-#-# event-tickets.pot (Event Tickets 4.10.
|
16 |
#. Plugin Name of the plugin/theme
|
17 |
#: event-tickets.php:62 src/Tribe/Main.php:649 src/Tribe/Privacy.php:32
|
18 |
msgid "Event Tickets"
|
@@ -758,7 +758,7 @@ msgstr ""
|
|
758 |
msgid "Post draft updated."
|
759 |
msgstr ""
|
760 |
|
761 |
-
#: src/Tribe/Commerce/PayPal/Main.php:
|
762 |
msgid "(deleted)"
|
763 |
msgstr ""
|
764 |
|
@@ -1863,42 +1863,42 @@ msgstr ""
|
|
1863 |
msgid "Sold"
|
1864 |
msgstr ""
|
1865 |
|
1866 |
-
#: src/Tribe/Status/Abstract_Commerce.php:
|
1867 |
msgid "SKU"
|
1868 |
msgstr ""
|
1869 |
|
1870 |
-
#: src/Tribe/Status/Abstract_Commerce.php:
|
1871 |
#: src/views/blocks/tickets/extra-available-quantity.php:22
|
1872 |
msgid "available"
|
1873 |
msgstr ""
|
1874 |
|
1875 |
-
#: src/Tribe/Status/Abstract_Commerce.php:
|
1876 |
msgid "pending order completion"
|
1877 |
msgstr ""
|
1878 |
|
1879 |
-
#: src/Tribe/Status/Abstract_Commerce.php:
|
1880 |
msgid "Sold counts tickets from completed orders only."
|
1881 |
msgstr ""
|
1882 |
|
1883 |
-
#: src/Tribe/Status/Abstract_Commerce.php:
|
1884 |
msgid "Total Sales counts tickets from all completed orders."
|
1885 |
msgstr ""
|
1886 |
|
1887 |
-
#: src/Tribe/Status/Abstract_Commerce.php:
|
1888 |
msgid ""
|
1889 |
"Total Ordered counts tickets from orders of any status, including pending "
|
1890 |
"and refunded."
|
1891 |
msgstr ""
|
1892 |
|
1893 |
-
#: src/Tribe/Status/Abstract_Commerce.php:
|
1894 |
msgid "Inventory"
|
1895 |
msgstr ""
|
1896 |
|
1897 |
-
#: src/Tribe/Status/Abstract_Commerce.php:
|
1898 |
msgid "Stock"
|
1899 |
msgstr ""
|
1900 |
|
1901 |
-
#: src/Tribe/Status/Abstract_Commerce.php:
|
1902 |
#: src/admin-views/editor/list-table.php:39
|
1903 |
msgid "Capacity"
|
1904 |
msgstr ""
|
@@ -1922,27 +1922,27 @@ msgctxt "global stock mode option (individual)"
|
|
1922 |
msgid "Set capacity for this %s only"
|
1923 |
msgstr ""
|
1924 |
|
1925 |
-
#: src/Tribe/Tickets.php:
|
1926 |
msgid "%s are not available as this %s has passed."
|
1927 |
msgstr ""
|
1928 |
|
1929 |
-
#: src/Tribe/Tickets.php:
|
1930 |
msgid "%s will be available on "
|
1931 |
msgstr ""
|
1932 |
|
1933 |
-
#: src/Tribe/Tickets.php:
|
1934 |
msgid " at "
|
1935 |
msgstr ""
|
1936 |
|
1937 |
-
#: src/Tribe/Tickets.php:
|
1938 |
msgid "%s are not yet available"
|
1939 |
msgstr ""
|
1940 |
|
1941 |
-
#: src/Tribe/Tickets.php:
|
1942 |
msgid "%s are no longer available."
|
1943 |
msgstr ""
|
1944 |
|
1945 |
-
#: src/Tribe/Tickets.php:
|
1946 |
msgid "There are no %s available at this time."
|
1947 |
msgstr ""
|
1948 |
|
@@ -3337,11 +3337,11 @@ msgstr ""
|
|
3337 |
msgid "Find events to attend on %1$s"
|
3338 |
msgstr ""
|
3339 |
|
3340 |
-
#: src/views/registration/content.php:
|
3341 |
msgid "Save and Checkout"
|
3342 |
msgstr ""
|
3343 |
|
3344 |
-
#: src/views/registration/content.php:
|
3345 |
msgid "Save Attendee Info"
|
3346 |
msgstr ""
|
3347 |
|
2 |
# This file is distributed under the same license as the Event Tickets package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Event Tickets 4.10.10\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/event-tickets\n"
|
7 |
+
"POT-Creation-Date: 2019-10-09 02:56:51+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-10-09 02:56\n"
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
15 |
+
#. #-#-#-#-# event-tickets.pot (Event Tickets 4.10.10) #-#-#-#-#
|
16 |
#. Plugin Name of the plugin/theme
|
17 |
#: event-tickets.php:62 src/Tribe/Main.php:649 src/Tribe/Privacy.php:32
|
18 |
msgid "Event Tickets"
|
758 |
msgid "Post draft updated."
|
759 |
msgstr ""
|
760 |
|
761 |
+
#: src/Tribe/Commerce/PayPal/Main.php:2604 src/Tribe/RSVP.php:1379
|
762 |
msgid "(deleted)"
|
763 |
msgstr ""
|
764 |
|
1863 |
msgid "Sold"
|
1864 |
msgstr ""
|
1865 |
|
1866 |
+
#: src/Tribe/Status/Abstract_Commerce.php:175
|
1867 |
msgid "SKU"
|
1868 |
msgstr ""
|
1869 |
|
1870 |
+
#: src/Tribe/Status/Abstract_Commerce.php:216
|
1871 |
#: src/views/blocks/tickets/extra-available-quantity.php:22
|
1872 |
msgid "available"
|
1873 |
msgstr ""
|
1874 |
|
1875 |
+
#: src/Tribe/Status/Abstract_Commerce.php:223
|
1876 |
msgid "pending order completion"
|
1877 |
msgstr ""
|
1878 |
|
1879 |
+
#: src/Tribe/Status/Abstract_Commerce.php:245
|
1880 |
msgid "Sold counts tickets from completed orders only."
|
1881 |
msgstr ""
|
1882 |
|
1883 |
+
#: src/Tribe/Status/Abstract_Commerce.php:259
|
1884 |
msgid "Total Sales counts tickets from all completed orders."
|
1885 |
msgstr ""
|
1886 |
|
1887 |
+
#: src/Tribe/Status/Abstract_Commerce.php:273
|
1888 |
msgid ""
|
1889 |
"Total Ordered counts tickets from orders of any status, including pending "
|
1890 |
"and refunded."
|
1891 |
msgstr ""
|
1892 |
|
1893 |
+
#: src/Tribe/Status/Abstract_Commerce.php:309
|
1894 |
msgid "Inventory"
|
1895 |
msgstr ""
|
1896 |
|
1897 |
+
#: src/Tribe/Status/Abstract_Commerce.php:310
|
1898 |
msgid "Stock"
|
1899 |
msgstr ""
|
1900 |
|
1901 |
+
#: src/Tribe/Status/Abstract_Commerce.php:311
|
1902 |
#: src/admin-views/editor/list-table.php:39
|
1903 |
msgid "Capacity"
|
1904 |
msgstr ""
|
1922 |
msgid "Set capacity for this %s only"
|
1923 |
msgstr ""
|
1924 |
|
1925 |
+
#: src/Tribe/Tickets.php:2191
|
1926 |
msgid "%s are not available as this %s has passed."
|
1927 |
msgstr ""
|
1928 |
|
1929 |
+
#: src/Tribe/Tickets.php:2227
|
1930 |
msgid "%s will be available on "
|
1931 |
msgstr ""
|
1932 |
|
1933 |
+
#: src/Tribe/Tickets.php:2233
|
1934 |
msgid " at "
|
1935 |
msgstr ""
|
1936 |
|
1937 |
+
#: src/Tribe/Tickets.php:2236
|
1938 |
msgid "%s are not yet available"
|
1939 |
msgstr ""
|
1940 |
|
1941 |
+
#: src/Tribe/Tickets.php:2239
|
1942 |
msgid "%s are no longer available."
|
1943 |
msgstr ""
|
1944 |
|
1945 |
+
#: src/Tribe/Tickets.php:2241
|
1946 |
msgid "There are no %s available at this time."
|
1947 |
msgstr ""
|
1948 |
|
3337 |
msgid "Find events to attend on %1$s"
|
3338 |
msgstr ""
|
3339 |
|
3340 |
+
#: src/views/registration/content.php:79
|
3341 |
msgid "Save and Checkout"
|
3342 |
msgstr ""
|
3343 |
|
3344 |
+
#: src/views/registration/content.php:81
|
3345 |
msgid "Save Attendee Info"
|
3346 |
msgstr ""
|
3347 |
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Contributors: ModernTribe, brianjessee, camwynsp, paulkim, sc0ttkclark, aguseo,
|
|
4 |
Tags: RSVP, events, tickets, event management, calendar, ticket sales, community, registration, api, dates, date, posts, workshop, conference, meeting, seminar, concert, summit, ticket integration, event ticketing
|
5 |
Requires at least: 4.7
|
6 |
Tested up to: 5.2
|
7 |
-
Stable tag: 4.10.
|
8 |
Requires PHP: 5.6
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
@@ -117,6 +117,15 @@ Currently, the following add-ons are available for Event Tickets:
|
|
117 |
|
118 |
== Changelog ==
|
119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
= [4.10.9] 2019-10-01 =
|
121 |
|
122 |
* Feature - New functions to easily rename ticket types and ensure consistent wording: `tribe_get_rsvp_label_singular()`, `tribe_get_rsvp_label_singular_lowercase()`, `tribe_get_rsvp_label_plural()`, `tribe_get_rsvp_label_plural_lowercase()`, `tribe_get_ticket_label_singular()`, `tribe_get_ticket_label_singular_lowercase()`, `tribe_get_ticket_label_plural()`, and `tribe_get_ticket_label_plural_lowercase()` [130897]
|
4 |
Tags: RSVP, events, tickets, event management, calendar, ticket sales, community, registration, api, dates, date, posts, workshop, conference, meeting, seminar, concert, summit, ticket integration, event ticketing
|
5 |
Requires at least: 4.7
|
6 |
Tested up to: 5.2
|
7 |
+
Stable tag: 4.10.10
|
8 |
Requires PHP: 5.6
|
9 |
License: GPLv2 or later
|
10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
117 |
|
118 |
== Changelog ==
|
119 |
|
120 |
+
= [4.10.10] 2019-10-14 =
|
121 |
+
|
122 |
+
* Tweak - Changed views: `blocks/tickets`, `tickets/tpp`
|
123 |
+
* Fix - Attendees Report's "Orders" tab now displays amount sold and available regardless of amount, including for unlimited and zero remaining for Tribe Commerce attendees [134108]
|
124 |
+
* Fix - Prevent fatal errors when hosting environment does not support multibyte functionality by using new `tribe_strpos()` function [135202]
|
125 |
+
* Fix - Prevent Attendee Registration saving from storing only the last attendee's information for all RSVP attendees [134408]
|
126 |
+
* Fix - Remove check for tickets in beginning of `/src/views/blocks/tickets.php` as it prevents showing the "tickets unavailable" message [134821]
|
127 |
+
* Language - 2 new strings added, 19 updated, 0 fuzzied, and 0 obsoleted
|
128 |
+
|
129 |
= [4.10.9] 2019-10-01 =
|
130 |
|
131 |
* Feature - New functions to easily rename ticket types and ensure consistent wording: `tribe_get_rsvp_label_singular()`, `tribe_get_rsvp_label_singular_lowercase()`, `tribe_get_rsvp_label_plural()`, `tribe_get_rsvp_label_plural_lowercase()`, `tribe_get_ticket_label_singular()`, `tribe_get_ticket_label_singular_lowercase()`, `tribe_get_ticket_label_plural()`, and `tribe_get_ticket_label_plural_lowercase()` [130897]
|
src/Tribe/Attendees.php
CHANGED
@@ -581,10 +581,10 @@ class Tribe__Tickets__Attendees {
|
|
581 |
*/
|
582 |
public function sanitize_csv_value( $value ) {
|
583 |
if (
|
584 |
-
0 ===
|
585 |
-
|| 0 ===
|
586 |
-
|| 0 ===
|
587 |
-
|| 0 ===
|
588 |
) {
|
589 |
// Prefix the value with a single quote to prevent formula from being processed.
|
590 |
$value = '\'' . $value;
|
581 |
*/
|
582 |
public function sanitize_csv_value( $value ) {
|
583 |
if (
|
584 |
+
0 === tribe_strpos( $value, '=' )
|
585 |
+
|| 0 === tribe_strpos( $value, '+' )
|
586 |
+
|| 0 === tribe_strpos( $value, '-' )
|
587 |
+
|| 0 === tribe_strpos( $value, '@' )
|
588 |
) {
|
589 |
// Prefix the value with a single quote to prevent formula from being processed.
|
590 |
$value = '\'' . $value;
|
src/Tribe/Commerce/PayPal/Main.php
CHANGED
@@ -2425,6 +2425,7 @@ class Tribe__Tickets__Commerce__PayPal__Main extends Tribe__Tickets__Tickets {
|
|
2425 |
public function attendee_decreases_inventory( array $attendee ) {
|
2426 |
$order_status = Tribe__Utils__Array::get( $attendee, 'order_status', 'undefined' );
|
2427 |
$order_id = Tribe__Utils__Array::get( $attendee, 'order_id', false );
|
|
|
2428 |
|
2429 |
/**
|
2430 |
* Whether the pending Order stock reserve logic should be ignored completely or not.
|
@@ -2439,15 +2440,29 @@ class Tribe__Tickets__Commerce__PayPal__Main extends Tribe__Tickets__Tickets {
|
|
2439 |
*/
|
2440 |
$ignore_pending = apply_filters( 'tribe_tickets_tpp_pending_stock_ignore', $this->ignore_pending_stock_logic );
|
2441 |
|
|
|
|
|
|
|
2442 |
if (
|
2443 |
'on-pending' === tribe_get_option( 'ticket-paypal-stock-handling', 'on-complete' )
|
2444 |
&& ! $ignore_pending
|
2445 |
&& Tribe__Tickets__Commerce__PayPal__Stati::$pending === $order_status
|
2446 |
&& false !== $order_id
|
2447 |
-
&& false !== $order = Tribe__Tickets__Commerce__PayPal__Order::from_attendee_id( $order_id )
|
2448 |
) {
|
2449 |
-
|
2450 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2451 |
|
2452 |
/**
|
2453 |
* Filters the amount of time a part of the stock will be reserved by a pending Order.
|
@@ -2467,7 +2482,7 @@ class Tribe__Tickets__Commerce__PayPal__Main extends Tribe__Tickets__Tickets {
|
|
2467 |
*/
|
2468 |
$pending_stock_reservation_time = (int) apply_filters( 'tribe_tickets_tpp_pending_stock_reserve_time', 30 * 60, $attendee, $order );
|
2469 |
|
2470 |
-
return
|
2471 |
}
|
2472 |
|
2473 |
return Tribe__Tickets__Commerce__PayPal__Stati::$completed === $order_status;
|
2425 |
public function attendee_decreases_inventory( array $attendee ) {
|
2426 |
$order_status = Tribe__Utils__Array::get( $attendee, 'order_status', 'undefined' );
|
2427 |
$order_id = Tribe__Utils__Array::get( $attendee, 'order_id', false );
|
2428 |
+
$attendee_id = Tribe__Utils__Array::get( $attendee, 'attendee_id', false );
|
2429 |
|
2430 |
/**
|
2431 |
* Whether the pending Order stock reserve logic should be ignored completely or not.
|
2440 |
*/
|
2441 |
$ignore_pending = apply_filters( 'tribe_tickets_tpp_pending_stock_ignore', $this->ignore_pending_stock_logic );
|
2442 |
|
2443 |
+
$purchase_time = false;
|
2444 |
+
$order = false;
|
2445 |
+
|
2446 |
if (
|
2447 |
'on-pending' === tribe_get_option( 'ticket-paypal-stock-handling', 'on-complete' )
|
2448 |
&& ! $ignore_pending
|
2449 |
&& Tribe__Tickets__Commerce__PayPal__Stati::$pending === $order_status
|
2450 |
&& false !== $order_id
|
|
|
2451 |
) {
|
2452 |
+
$purchase_time = Tribe__Utils__Array::get( $attendee, 'purchase_time', false );
|
2453 |
+
|
2454 |
+
if ( false !== $order = Tribe__Tickets__Commerce__PayPal__Order::from_attendee_id( $attendee_id ) ) {
|
2455 |
+
/** @var \Tribe__Tickets__Commerce__PayPal__Order $order */
|
2456 |
+
$purchase_time = $order->get_creation_date();
|
2457 |
+
}
|
2458 |
+
}
|
2459 |
+
|
2460 |
+
if ( $purchase_time ) {
|
2461 |
+
$date = Tribe__Date_Utils::build_date_object( $purchase_time );
|
2462 |
+
|
2463 |
+
$date->setTimezone( new DateTimeZone( 'UTC' ) );
|
2464 |
+
|
2465 |
+
$order_creation_timestamp = $date->getTimestamp();
|
2466 |
|
2467 |
/**
|
2468 |
* Filters the amount of time a part of the stock will be reserved by a pending Order.
|
2482 |
*/
|
2483 |
$pending_stock_reservation_time = (int) apply_filters( 'tribe_tickets_tpp_pending_stock_reserve_time', 30 * 60, $attendee, $order );
|
2484 |
|
2485 |
+
return time() <= ( $order_creation_timestamp + $pending_stock_reservation_time );
|
2486 |
}
|
2487 |
|
2488 |
return Tribe__Tickets__Commerce__PayPal__Stati::$completed === $order_status;
|
src/Tribe/Editor/Blocks/Rsvp.php
CHANGED
@@ -148,10 +148,9 @@ extends Tribe__Editor__Blocks__Abstract {
|
|
148 |
}
|
149 |
|
150 |
$all_past = true;
|
151 |
-
$current = current_time( 'timestamp' );
|
152 |
|
153 |
foreach ( $tickets as $ticket ) {
|
154 |
-
$all_past = $all_past && $ticket->date_is_later(
|
155 |
}
|
156 |
|
157 |
return $all_past;
|
148 |
}
|
149 |
|
150 |
$all_past = true;
|
|
|
151 |
|
152 |
foreach ( $tickets as $ticket ) {
|
153 |
+
$all_past = $all_past && $ticket->date_is_later();
|
154 |
}
|
155 |
|
156 |
return $all_past;
|
src/Tribe/Editor/Blocks/Tickets.php
CHANGED
@@ -233,10 +233,9 @@ extends Tribe__Editor__Blocks__Abstract {
|
|
233 |
*/
|
234 |
public function get_is_sale_past( $tickets ) {
|
235 |
$is_sale_past = ! empty( $tickets );
|
236 |
-
$timestamp = current_time( 'timestamp' );
|
237 |
|
238 |
foreach ( $tickets as $ticket ) {
|
239 |
-
$is_sale_past = ( $is_sale_past && $ticket->date_is_later(
|
240 |
}
|
241 |
|
242 |
return $is_sale_past;
|
233 |
*/
|
234 |
public function get_is_sale_past( $tickets ) {
|
235 |
$is_sale_past = ! empty( $tickets );
|
|
|
236 |
|
237 |
foreach ( $tickets as $ticket ) {
|
238 |
+
$is_sale_past = ( $is_sale_past && $ticket->date_is_later() );
|
239 |
}
|
240 |
|
241 |
return $is_sale_past;
|
src/Tribe/Main.php
CHANGED
@@ -4,7 +4,7 @@ class Tribe__Tickets__Main {
|
|
4 |
/**
|
5 |
* Current version of this plugin
|
6 |
*/
|
7 |
-
const VERSION = '4.10.
|
8 |
|
9 |
/**
|
10 |
* Min required The Events Calendar version
|
@@ -851,7 +851,7 @@ class Tribe__Tickets__Main {
|
|
851 |
$tickets = Tribe__Tickets__Tickets::get_all_event_tickets( $event_id );
|
852 |
$has_non_rsvp = false;
|
853 |
$available = false;
|
854 |
-
$now =
|
855 |
|
856 |
foreach ( $tickets as $ticket ) {
|
857 |
if ( 'Tribe__Tickets__RSVP' !== $ticket->provider_class ) {
|
4 |
/**
|
5 |
* Current version of this plugin
|
6 |
*/
|
7 |
+
const VERSION = '4.10.10';
|
8 |
|
9 |
/**
|
10 |
* Min required The Events Calendar version
|
851 |
$tickets = Tribe__Tickets__Tickets::get_all_event_tickets( $event_id );
|
852 |
$has_non_rsvp = false;
|
853 |
$available = false;
|
854 |
+
$now = time();
|
855 |
|
856 |
foreach ( $tickets as $ticket ) {
|
857 |
if ( 'Tribe__Tickets__RSVP' !== $ticket->provider_class ) {
|
src/Tribe/REST/V1/Post_Repository.php
CHANGED
@@ -967,7 +967,7 @@ class Tribe__Tickets__REST__V1__Post_Repository
|
|
967 |
/** @var Tribe__Tickets__Commerce__Currency $currency */
|
968 |
$currency = tribe( 'tickets.commerce.currency' );
|
969 |
$ticket_object = $this->get_ticket_object( $attendee['product_id'] );
|
970 |
-
$purchase_time = Tribe__Utils__Array::get( $order_data, 'purchase_time', get_post_time(
|
971 |
$attendee_data['payment'] = array(
|
972 |
'provider' => Tribe__Utils__Array::get( $order_data, 'provider_slug', $this->get_provider_slug( $provider ) ),
|
973 |
'price' => $ticket_object->price,
|
967 |
/** @var Tribe__Tickets__Commerce__Currency $currency */
|
968 |
$currency = tribe( 'tickets.commerce.currency' );
|
969 |
$ticket_object = $this->get_ticket_object( $attendee['product_id'] );
|
970 |
+
$purchase_time = Tribe__Utils__Array::get( $order_data, 'purchase_time', get_post_time( Tribe__Date_Utils::DBDATETIMEFORMAT, false, $attendee_id ) );
|
971 |
$attendee_data['payment'] = array(
|
972 |
'provider' => Tribe__Utils__Array::get( $order_data, 'provider_slug', $this->get_provider_slug( $provider ) ),
|
973 |
'price' => $ticket_object->price,
|
src/Tribe/RSVP.php
CHANGED
@@ -1900,8 +1900,6 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
1900 |
$attendee_optout = $attendee_details['optout'];
|
1901 |
$order_id = $attendee_details['order_id'];
|
1902 |
|
1903 |
-
$order_attendee_id = 0;
|
1904 |
-
|
1905 |
// Get the event this tickets is for
|
1906 |
$post_id = get_post_meta( $product_id, $this->event_key, true );
|
1907 |
|
@@ -1939,7 +1937,7 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
1939 |
do_action( 'tribe_tickets_rsvp_before_attendee_ticket_creation', $post_id, $ticket_type, $_POST );
|
1940 |
|
1941 |
// Iterate over all the amount of tickets purchased (for this product)
|
1942 |
-
for ( $i = 0; $i < $qty; $i
|
1943 |
|
1944 |
$attendee = array(
|
1945 |
'post_status' => 'publish',
|
@@ -1972,7 +1970,8 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
1972 |
update_post_meta( $attendee_id, '_paid_price', 0 );
|
1973 |
|
1974 |
/**
|
1975 |
-
* RSVP specific action fired when a RSVP-driven attendee ticket for an event is generated
|
|
|
1976 |
*
|
1977 |
* @param int $attendee_id ID of attendee ticket
|
1978 |
* @param int $post_id ID of event
|
@@ -1982,17 +1981,17 @@ class Tribe__Tickets__RSVP extends Tribe__Tickets__Tickets {
|
|
1982 |
do_action( 'event_tickets_rsvp_attendee_created', $attendee_id, $post_id, $order_id );
|
1983 |
|
1984 |
/**
|
1985 |
-
* Action fired when an RSVP attendee ticket is created
|
|
|
1986 |
*
|
1987 |
* @param int $attendee_id ID of the attendee post
|
1988 |
* @param int $post_id Event post ID
|
1989 |
* @param int $product_id RSVP ticket post ID
|
1990 |
* @param int $order_attendee_id Attendee # for order
|
1991 |
*/
|
1992 |
-
do_action( 'event_tickets_rsvp_ticket_created', $attendee_id, $post_id, $product_id, $
|
1993 |
|
1994 |
$this->record_attendee_user_id( $attendee_id );
|
1995 |
-
$order_attendee_id++;
|
1996 |
}
|
1997 |
|
1998 |
/**
|
1900 |
$attendee_optout = $attendee_details['optout'];
|
1901 |
$order_id = $attendee_details['order_id'];
|
1902 |
|
|
|
|
|
1903 |
// Get the event this tickets is for
|
1904 |
$post_id = get_post_meta( $product_id, $this->event_key, true );
|
1905 |
|
1937 |
do_action( 'tribe_tickets_rsvp_before_attendee_ticket_creation', $post_id, $ticket_type, $_POST );
|
1938 |
|
1939 |
// Iterate over all the amount of tickets purchased (for this product)
|
1940 |
+
for ( $i = 0; $i < $qty; $i++ ) {
|
1941 |
|
1942 |
$attendee = array(
|
1943 |
'post_status' => 'publish',
|
1970 |
update_post_meta( $attendee_id, '_paid_price', 0 );
|
1971 |
|
1972 |
/**
|
1973 |
+
* RSVP specific action fired when a RSVP-driven attendee ticket for an event is generated.
|
1974 |
+
* Used to assign a unique ID to the attendee.
|
1975 |
*
|
1976 |
* @param int $attendee_id ID of attendee ticket
|
1977 |
* @param int $post_id ID of event
|
1981 |
do_action( 'event_tickets_rsvp_attendee_created', $attendee_id, $post_id, $order_id );
|
1982 |
|
1983 |
/**
|
1984 |
+
* Action fired when an RSVP attendee ticket is created.
|
1985 |
+
* Used to store attendee meta.
|
1986 |
*
|
1987 |
* @param int $attendee_id ID of the attendee post
|
1988 |
* @param int $post_id Event post ID
|
1989 |
* @param int $product_id RSVP ticket post ID
|
1990 |
* @param int $order_attendee_id Attendee # for order
|
1991 |
*/
|
1992 |
+
do_action( 'event_tickets_rsvp_ticket_created', $attendee_id, $post_id, $product_id, $i );
|
1993 |
|
1994 |
$this->record_attendee_user_id( $attendee_id );
|
|
|
1995 |
}
|
1996 |
|
1997 |
/**
|
src/Tribe/Status/Abstract_Commerce.php
CHANGED
@@ -47,7 +47,7 @@ class Tribe__Tickets__Status__Abstract_Commerce {
|
|
47 |
*
|
48 |
* @since 4.10
|
49 |
*
|
50 |
-
* @return
|
51 |
*/
|
52 |
public function get_completed_status_class() {
|
53 |
|
@@ -129,25 +129,23 @@ class Tribe__Tickets__Status__Abstract_Commerce {
|
|
129 |
*
|
130 |
* @since 4.10
|
131 |
*
|
132 |
-
* @param $ticket_sold
|
133 |
-
* @param $post_id
|
134 |
*
|
135 |
* @return string a string Ticket name, sold, and availability
|
136 |
*/
|
137 |
-
public function get_ticket_sale_infomation( $ticket_sold, $
|
138 |
-
|
139 |
ob_start();
|
140 |
?>
|
141 |
<div class="tribe-event-meta tribe-event-meta-tickets-sold-itemized">
|
142 |
<?php
|
143 |
-
echo $this->get_name_and_sold_for_ticket( $ticket_sold, $
|
144 |
echo $this->get_available_incomplete_counts_for_ticket( $ticket_sold );
|
145 |
?>
|
146 |
</div>
|
147 |
<?php
|
148 |
|
149 |
return ob_get_clean();
|
150 |
-
|
151 |
}
|
152 |
|
153 |
/**
|
@@ -155,18 +153,19 @@ class Tribe__Tickets__Status__Abstract_Commerce {
|
|
155 |
*
|
156 |
* @since 4.10
|
157 |
*
|
158 |
-
* @param $ticket_sold
|
159 |
-
* @param $post_id int
|
160 |
*
|
161 |
* @return string a string of the ticket name and sold
|
162 |
*/
|
163 |
public function get_name_and_sold_for_ticket( $ticket_sold, $post_id ) {
|
|
|
|
|
|
|
164 |
|
165 |
$sold = $ticket_sold['completed'] ? $ticket_sold['completed'] : $ticket_sold['sold'];
|
166 |
|
167 |
-
$sold_message =
|
168 |
-
$sold_message = sprintf( '%s %d', esc_attr__( 'Sold', 'event-tickets' ), esc_html( $sold ) ) :
|
169 |
-
'';
|
170 |
|
171 |
$price = $ticket_sold['ticket']->price ?
|
172 |
' (' . tribe_format_currency( number_format( $ticket_sold['ticket']->price, 2 ), $post_id ) . ')' :
|
@@ -183,29 +182,42 @@ class Tribe__Tickets__Status__Abstract_Commerce {
|
|
183 |
echo esc_html( $sold_message );
|
184 |
|
185 |
return ob_get_clean();
|
186 |
-
|
187 |
}
|
188 |
|
189 |
/**
|
190 |
-
* Get the
|
191 |
*
|
192 |
* @since 4.10
|
193 |
*
|
194 |
-
* @param $ticket_sold
|
195 |
*
|
196 |
-
* @return
|
197 |
*/
|
198 |
public function get_available_incomplete_counts_for_ticket( $ticket_sold ) {
|
199 |
-
|
200 |
-
$
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
|
|
|
|
|
|
|
|
|
|
207 |
}
|
208 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
209 |
$availability['incomplete'] = sprintf( '%s %s%s',
|
210 |
$ticket_sold['incomplete'],
|
211 |
esc_html__( 'pending order completion', 'event-tickets' ),
|
@@ -214,7 +226,7 @@ class Tribe__Tickets__Status__Abstract_Commerce {
|
|
214 |
}
|
215 |
|
216 |
if ( empty( $availability ) ) {
|
217 |
-
return
|
218 |
}
|
219 |
|
220 |
return '<div>' . implode( '- ', $availability ) . '</div>';
|
47 |
*
|
48 |
* @since 4.10
|
49 |
*
|
50 |
+
* @return Tribe__Tickets__Status__Abstract|false
|
51 |
*/
|
52 |
public function get_completed_status_class() {
|
53 |
|
129 |
*
|
130 |
* @since 4.10
|
131 |
*
|
132 |
+
* @param array $ticket_sold An object of the ticket to get counts.
|
133 |
+
* @param int $post_id An ID of the post the ticket is attached to.
|
134 |
*
|
135 |
* @return string a string Ticket name, sold, and availability
|
136 |
*/
|
137 |
+
public function get_ticket_sale_infomation( $ticket_sold, $post_id ) {
|
|
|
138 |
ob_start();
|
139 |
?>
|
140 |
<div class="tribe-event-meta tribe-event-meta-tickets-sold-itemized">
|
141 |
<?php
|
142 |
+
echo $this->get_name_and_sold_for_ticket( $ticket_sold, $post_id );
|
143 |
echo $this->get_available_incomplete_counts_for_ticket( $ticket_sold );
|
144 |
?>
|
145 |
</div>
|
146 |
<?php
|
147 |
|
148 |
return ob_get_clean();
|
|
|
149 |
}
|
150 |
|
151 |
/**
|
153 |
*
|
154 |
* @since 4.10
|
155 |
*
|
156 |
+
* @param array $ticket_sold The ticket to get counts.
|
157 |
+
* @param int $post_id int An ID of the post the ticket is attached to.
|
158 |
*
|
159 |
* @return string a string of the ticket name and sold
|
160 |
*/
|
161 |
public function get_name_and_sold_for_ticket( $ticket_sold, $post_id ) {
|
162 |
+
if ( ! $ticket_sold['ticket'] instanceof Tribe__Tickets__Ticket_Object ) {
|
163 |
+
return '';
|
164 |
+
}
|
165 |
|
166 |
$sold = $ticket_sold['completed'] ? $ticket_sold['completed'] : $ticket_sold['sold'];
|
167 |
|
168 |
+
$sold_message = sprintf( '%s %d', esc_attr__( 'Sold', 'event-tickets' ), esc_html( $sold ) );
|
|
|
|
|
169 |
|
170 |
$price = $ticket_sold['ticket']->price ?
|
171 |
' (' . tribe_format_currency( number_format( $ticket_sold['ticket']->price, 2 ), $post_id ) . ')' :
|
182 |
echo esc_html( $sold_message );
|
183 |
|
184 |
return ob_get_clean();
|
|
|
185 |
}
|
186 |
|
187 |
/**
|
188 |
+
* Get the available and incomplete counts for a Ticket.
|
189 |
*
|
190 |
* @since 4.10
|
191 |
*
|
192 |
+
* @param array $ticket_sold Ticket array to get counts.
|
193 |
*
|
194 |
+
* @return string The available and/or incomplete counts for a ticket.
|
195 |
*/
|
196 |
public function get_available_incomplete_counts_for_ticket( $ticket_sold ) {
|
197 |
+
/** @var Tribe__Tickets__Ticket_Object $ticket_object */
|
198 |
+
$ticket_object = $ticket_sold['ticket'];
|
199 |
+
|
200 |
+
if (
|
201 |
+
-1 === (int) $ticket_object->available()
|
202 |
+
|| $ticket_object::UNLIMITED_STOCK === $ticket_object->available()
|
203 |
+
) {
|
204 |
+
/** @var Tribe__Tickets__Tickets_Handler $handler */
|
205 |
+
$handler = tribe( 'tickets.handler' );
|
206 |
+
|
207 |
+
$available_text = $handler->unlimited_term;
|
208 |
+
} else {
|
209 |
+
$available_text = $ticket_object->available();
|
210 |
}
|
211 |
+
|
212 |
+
$availability = [];
|
213 |
+
|
214 |
+
$availability['available'] = sprintf( '%s %s%s',
|
215 |
+
esc_html( $available_text ),
|
216 |
+
esc_html__( 'available', 'event-tickets' ),
|
217 |
+
$this->get_availability_by_ticket_tooltip( $ticket_sold )
|
218 |
+
);
|
219 |
+
|
220 |
+
if ( $ticket_sold['incomplete'] > 0 ) {
|
221 |
$availability['incomplete'] = sprintf( '%s %s%s',
|
222 |
$ticket_sold['incomplete'],
|
223 |
esc_html__( 'pending order completion', 'event-tickets' ),
|
226 |
}
|
227 |
|
228 |
if ( empty( $availability ) ) {
|
229 |
+
return '';
|
230 |
}
|
231 |
|
232 |
return '<div>' . implode( '- ', $availability ) . '</div>';
|
src/Tribe/Ticket_Object.php
CHANGED
@@ -291,34 +291,22 @@ if ( ! class_exists( 'Tribe__Tickets__Ticket_Object' ) ) {
|
|
291 |
/**
|
292 |
* Determines if the given date is within the ticket's start/end date range
|
293 |
*
|
294 |
-
* @param string $datetime The date/time that we want to determine if it falls within the start/end date range
|
295 |
*
|
296 |
* @return boolean Whether or not the provided date/time falls within the start/end date range
|
297 |
*/
|
298 |
-
public function date_in_range( $datetime =
|
299 |
-
$
|
300 |
-
// Attempt to convert the timestamp to a Date object.
|
301 |
-
try {
|
302 |
-
$timezone = $this->get_event_timezone();
|
303 |
-
if ( 'now' === $datetime ) {
|
304 |
-
$now = new DateTime( 'now', $timezone );
|
305 |
-
} else {
|
306 |
-
$now = new DateTime( '@' . $timestamp );
|
307 |
-
if ( $timezone instanceof DateTimeZone ) {
|
308 |
-
$now->setTimezone( $timezone );
|
309 |
-
}
|
310 |
-
}
|
311 |
-
} catch ( Exception $exception ) {
|
312 |
-
return false;
|
313 |
-
}
|
314 |
|
315 |
$start = $this->start_date( false );
|
316 |
$end = $this->end_date( false );
|
317 |
|
318 |
-
if ( ! $start instanceof DateTime
|
319 |
-
$now = $timestamp;
|
320 |
$start = $this->start_date();
|
321 |
-
|
|
|
|
|
|
|
322 |
}
|
323 |
|
324 |
// Bail if we don't have an end date and the event has passed
|
@@ -331,7 +319,16 @@ if ( ! class_exists( 'Tribe__Tickets__Ticket_Object' ) ) {
|
|
331 |
return false;
|
332 |
}
|
333 |
|
334 |
-
return (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
335 |
}
|
336 |
|
337 |
|
@@ -348,16 +345,31 @@ if ( ! class_exists( 'Tribe__Tickets__Ticket_Object' ) ) {
|
|
348 |
* @return DateTime|false|int
|
349 |
*/
|
350 |
public function get_date( $date = '', $as_timestamp = true ) {
|
351 |
-
if ( $
|
352 |
-
return
|
|
|
|
|
|
|
|
|
353 |
}
|
354 |
|
355 |
try {
|
356 |
$timezone = $this->get_event_timezone();
|
357 |
-
|
|
|
|
|
|
|
|
|
|
|
358 |
} catch ( Exception $exception ) {
|
359 |
return strtotime( $date );
|
360 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
361 |
}
|
362 |
|
363 |
|
@@ -395,39 +407,39 @@ if ( ! class_exists( 'Tribe__Tickets__Ticket_Object' ) ) {
|
|
395 |
/**
|
396 |
* Determines if the given date is smaller than the ticket's start date
|
397 |
*
|
398 |
-
* @param string $datetime The date/time that we want to determine if it is smaller than the ticket's start date
|
399 |
*
|
400 |
* @return boolean Whether or not the provided date/time is smaller than the ticket's start date
|
401 |
*/
|
402 |
-
public function date_is_earlier( $datetime ) {
|
403 |
-
|
404 |
-
$timestamp = $datetime;
|
405 |
-
} else {
|
406 |
-
$timestamp = strtotime( $datetime );
|
407 |
-
}
|
408 |
|
409 |
-
$
|
410 |
|
411 |
-
|
|
|
|
|
|
|
|
|
412 |
}
|
413 |
|
414 |
/**
|
415 |
* Determines if the given date is greater than the ticket's end date
|
416 |
*
|
417 |
-
* @param string $datetime The date/time that we want to determine if it is smaller than the ticket's start date
|
418 |
*
|
419 |
* @return boolean Whether or not the provided date/time is greater than the ticket's end date
|
420 |
*/
|
421 |
-
public function date_is_later( $datetime ) {
|
422 |
-
|
423 |
-
$timestamp = $datetime;
|
424 |
-
} else {
|
425 |
-
$timestamp = strtotime( $datetime );
|
426 |
-
}
|
427 |
|
428 |
-
$
|
429 |
|
430 |
-
|
|
|
|
|
|
|
|
|
431 |
}
|
432 |
|
433 |
/**
|
@@ -441,19 +453,11 @@ if ( ! class_exists( 'Tribe__Tickets__Ticket_Object' ) ) {
|
|
441 |
* @return string
|
442 |
*/
|
443 |
public function availability_slug( $datetime = null ) {
|
444 |
-
if ( is_numeric( $datetime ) ) {
|
445 |
-
$timestamp = $datetime;
|
446 |
-
} elseif ( $datetime ) {
|
447 |
-
$timestamp = strtotime( $datetime );
|
448 |
-
} else {
|
449 |
-
$timestamp = current_time( 'timestamp' );
|
450 |
-
}
|
451 |
-
|
452 |
$slug = 'available';
|
453 |
|
454 |
-
if ( $this->date_is_earlier( $
|
455 |
$slug = 'availability-future';
|
456 |
-
} elseif ( $this->date_is_later( $
|
457 |
$slug = 'availability-past';
|
458 |
}
|
459 |
|
291 |
/**
|
292 |
* Determines if the given date is within the ticket's start/end date range
|
293 |
*
|
294 |
+
* @param string|int|null $datetime The date/time that we want to determine if it falls within the start/end date range.
|
295 |
*
|
296 |
* @return boolean Whether or not the provided date/time falls within the start/end date range
|
297 |
*/
|
298 |
+
public function date_in_range( $datetime = null ) {
|
299 |
+
$date = $this->get_date( $datetime, false );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
300 |
|
301 |
$start = $this->start_date( false );
|
302 |
$end = $this->end_date( false );
|
303 |
|
304 |
+
if ( ! $start instanceof DateTime ) {
|
|
|
305 |
$start = $this->start_date();
|
306 |
+
}
|
307 |
+
|
308 |
+
if ( ! $end instanceof DateTime ) {
|
309 |
+
$end = $this->end_date();
|
310 |
}
|
311 |
|
312 |
// Bail if we don't have an end date and the event has passed
|
319 |
return false;
|
320 |
}
|
321 |
|
322 |
+
return (
|
323 |
+
(
|
324 |
+
empty( $start )
|
325 |
+
|| $start <= $date
|
326 |
+
)
|
327 |
+
&& (
|
328 |
+
empty( $end )
|
329 |
+
|| $date <= $end
|
330 |
+
)
|
331 |
+
);
|
332 |
}
|
333 |
|
334 |
|
345 |
* @return DateTime|false|int
|
346 |
*/
|
347 |
public function get_date( $date = '', $as_timestamp = true ) {
|
348 |
+
if ( '' === $date ) {
|
349 |
+
return false;
|
350 |
+
}
|
351 |
+
|
352 |
+
if ( null === $date ) {
|
353 |
+
$date = time();
|
354 |
}
|
355 |
|
356 |
try {
|
357 |
$timezone = $this->get_event_timezone();
|
358 |
+
|
359 |
+
$datetime = Tribe__Date_Utils::build_date_object( $date, $timezone );
|
360 |
+
|
361 |
+
if ( Tribe__Date_Utils::is_timestamp( $datetime ) ) {
|
362 |
+
$datetime = Tribe__Date_Utils::build_date_object( $datetime->format( Tribe__Date_Utils::DBDATETIMEFORMAT ), $timezone );
|
363 |
+
}
|
364 |
} catch ( Exception $exception ) {
|
365 |
return strtotime( $date );
|
366 |
}
|
367 |
+
|
368 |
+
if ( $as_timestamp ) {
|
369 |
+
return $datetime->getTimestamp();
|
370 |
+
}
|
371 |
+
|
372 |
+
return $datetime;
|
373 |
}
|
374 |
|
375 |
|
407 |
/**
|
408 |
* Determines if the given date is smaller than the ticket's start date
|
409 |
*
|
410 |
+
* @param null|string $datetime The date/time that we want to determine if it is smaller than the ticket's start date
|
411 |
*
|
412 |
* @return boolean Whether or not the provided date/time is smaller than the ticket's start date
|
413 |
*/
|
414 |
+
public function date_is_earlier( $datetime = null ) {
|
415 |
+
$date = $this->get_date( $datetime, false );
|
|
|
|
|
|
|
|
|
416 |
|
417 |
+
$start = $this->start_date( false );
|
418 |
|
419 |
+
if ( ! $start instanceof DateTime ) {
|
420 |
+
$start = $this->start_date();
|
421 |
+
}
|
422 |
+
|
423 |
+
return empty( $start ) || $date < $start;
|
424 |
}
|
425 |
|
426 |
/**
|
427 |
* Determines if the given date is greater than the ticket's end date
|
428 |
*
|
429 |
+
* @param null|string $datetime The date/time that we want to determine if it is smaller than the ticket's start date
|
430 |
*
|
431 |
* @return boolean Whether or not the provided date/time is greater than the ticket's end date
|
432 |
*/
|
433 |
+
public function date_is_later( $datetime = null ) {
|
434 |
+
$date = $this->get_date( $datetime, false );
|
|
|
|
|
|
|
|
|
435 |
|
436 |
+
$end = $this->end_date( false );
|
437 |
|
438 |
+
if ( ! $end instanceof DateTime ) {
|
439 |
+
$end = $this->end_date();
|
440 |
+
}
|
441 |
+
|
442 |
+
return empty( $end ) || $date > $end;
|
443 |
}
|
444 |
|
445 |
/**
|
453 |
* @return string
|
454 |
*/
|
455 |
public function availability_slug( $datetime = null ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
456 |
$slug = 'available';
|
457 |
|
458 |
+
if ( $this->date_is_earlier( $datetime ) ) {
|
459 |
$slug = 'availability-future';
|
460 |
+
} elseif ( $this->date_is_later( $datetime ) ) {
|
461 |
$slug = 'availability-past';
|
462 |
}
|
463 |
|
src/Tribe/Ticket_Repository.php
CHANGED
@@ -301,7 +301,7 @@ class Tribe__Tickets__Ticket_Repository extends Tribe__Repository {
|
|
301 |
// the input is a UTC date or timestamp
|
302 |
$utc_date_string = is_numeric( $date ) ? "@{$date}" : $date;
|
303 |
$utc_date = new DateTime( $utc_date_string, new DateTimeZone( 'UTC' ) );
|
304 |
-
$from = Tribe__Timezones::to_tz( $utc_date->format(
|
305 |
|
306 |
return [
|
307 |
'meta_query' => [
|
@@ -334,7 +334,7 @@ class Tribe__Tickets__Ticket_Repository extends Tribe__Repository {
|
|
334 |
// the input is a UTC date or timestamp
|
335 |
$utc_date_string = is_numeric( $date ) ? "@{$date}" : $date;
|
336 |
$utc_date = new DateTime( $utc_date_string, new DateTimeZone( 'UTC' ) );
|
337 |
-
$until = Tribe__Timezones::to_tz( $utc_date->format(
|
338 |
|
339 |
return [
|
340 |
'meta_query' => [
|
301 |
// the input is a UTC date or timestamp
|
302 |
$utc_date_string = is_numeric( $date ) ? "@{$date}" : $date;
|
303 |
$utc_date = new DateTime( $utc_date_string, new DateTimeZone( 'UTC' ) );
|
304 |
+
$from = Tribe__Timezones::to_tz( $utc_date->format( Tribe__Date_Utils::DBDATETIMEFORMAT ), Tribe__Timezones::wp_timezone_string() );
|
305 |
|
306 |
return [
|
307 |
'meta_query' => [
|
334 |
// the input is a UTC date or timestamp
|
335 |
$utc_date_string = is_numeric( $date ) ? "@{$date}" : $date;
|
336 |
$utc_date = new DateTime( $utc_date_string, new DateTimeZone( 'UTC' ) );
|
337 |
+
$until = Tribe__Timezones::to_tz( $utc_date->format( Tribe__Date_Utils::DBDATETIMEFORMAT ), Tribe__Timezones::wp_timezone_string() );
|
338 |
|
339 |
return [
|
340 |
'meta_query' => [
|
src/Tribe/Tickets.php
CHANGED
@@ -2130,20 +2130,14 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
2130 |
return;
|
2131 |
}
|
2132 |
|
2133 |
-
if ( is_numeric( $datetime ) ) {
|
2134 |
-
$timestamp = $datetime;
|
2135 |
-
} elseif ( $datetime ) {
|
2136 |
-
$timestamp = strtotime( $datetime );
|
2137 |
-
} else {
|
2138 |
-
$timestamp = current_time( 'timestamp' );
|
2139 |
-
}
|
2140 |
-
|
2141 |
$collection_availability_slug = 'available';
|
2142 |
$tickets_available = false;
|
2143 |
$slugs = [];
|
2144 |
|
|
|
|
|
2145 |
foreach ( $tickets as $ticket ) {
|
2146 |
-
$availability_slug = $ticket->availability_slug( $
|
2147 |
|
2148 |
// if any ticket is available for this event, consider the availability slug as 'available'
|
2149 |
if ( 'available' === $availability_slug ) {
|
@@ -2153,7 +2147,7 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
2153 |
}
|
2154 |
|
2155 |
// track unique availability slugs
|
2156 |
-
if ( ! in_array( $availability_slug, $slugs ) ) {
|
2157 |
$slugs[] = $availability_slug;
|
2158 |
}
|
2159 |
}
|
@@ -2304,7 +2298,7 @@ if ( ! class_exists( 'Tribe__Tickets__Tickets' ) ) {
|
|
2304 |
$post_id = (int) get_the_ID();
|
2305 |
|
2306 |
// So long as at least one ticket provider has tickets available, do not show an unavailability message
|
2307 |
-
if ( in_array( $post_id, self::$posts_with_available_tickets ) ) {
|
2308 |
return;
|
2309 |
}
|
2310 |
|
2130 |
return;
|
2131 |
}
|
2132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2133 |
$collection_availability_slug = 'available';
|
2134 |
$tickets_available = false;
|
2135 |
$slugs = [];
|
2136 |
|
2137 |
+
/** @var Tribe__Tickets__Ticket_Object $ticket */
|
2138 |
+
|
2139 |
foreach ( $tickets as $ticket ) {
|
2140 |
+
$availability_slug = $ticket->availability_slug( $datetime );
|
2141 |
|
2142 |
// if any ticket is available for this event, consider the availability slug as 'available'
|
2143 |
if ( 'available' === $availability_slug ) {
|
2147 |
}
|
2148 |
|
2149 |
// track unique availability slugs
|
2150 |
+
if ( ! in_array( $availability_slug, $slugs, true ) ) {
|
2151 |
$slugs[] = $availability_slug;
|
2152 |
}
|
2153 |
}
|
2298 |
$post_id = (int) get_the_ID();
|
2299 |
|
2300 |
// So long as at least one ticket provider has tickets available, do not show an unavailability message
|
2301 |
+
if ( in_array( $post_id, self::$posts_with_available_tickets, true ) ) {
|
2302 |
return;
|
2303 |
}
|
2304 |
|
src/Tribe/Views/V2/Models/Tickets.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* The Tickets abstraction objece, used to add tickets-related properties to the event object crated by the
|
4 |
* `trib_get_event` function.
|
5 |
*
|
6 |
-
* @since
|
7 |
*
|
8 |
* @package Tribe\Events\Tickets\Views\V2\Models
|
9 |
*/
|
@@ -16,7 +16,7 @@ use Tribe\Utils\Lazy_Events;
|
|
16 |
/**
|
17 |
* Class Tickets
|
18 |
*
|
19 |
-
* @since
|
20 |
*
|
21 |
* @package Tribe\Events\Tickets\Views\V2\Models
|
22 |
*/
|
3 |
* The Tickets abstraction objece, used to add tickets-related properties to the event object crated by the
|
4 |
* `trib_get_event` function.
|
5 |
*
|
6 |
+
* @since 4.10.9
|
7 |
*
|
8 |
* @package Tribe\Events\Tickets\Views\V2\Models
|
9 |
*/
|
16 |
/**
|
17 |
* Class Tickets
|
18 |
*
|
19 |
+
* @since 4.10.9
|
20 |
*
|
21 |
* @package Tribe\Events\Tickets\Views\V2\Models
|
22 |
*/
|
src/Tribe/Views/V2/Service_Provider.php
CHANGED
@@ -4,7 +4,7 @@ namespace Tribe\Events\Tickets\Views\V2;
|
|
4 |
/**
|
5 |
* The main service provider for Event Tickets support and additions to the Views V2 functions.
|
6 |
*
|
7 |
-
* @since
|
8 |
* @package Tribe\Events\Tickets\Views\V2
|
9 |
*/
|
10 |
class Service_Provider extends \tad_DI52_ServiceProvider {
|
4 |
/**
|
5 |
* The main service provider for Event Tickets support and additions to the Views V2 functions.
|
6 |
*
|
7 |
+
* @since 4.10.9
|
8 |
* @package Tribe\Events\Tickets\Views\V2
|
9 |
*/
|
10 |
class Service_Provider extends \tad_DI52_ServiceProvider {
|
src/admin-views/tribe-options-tickets.php
CHANGED
@@ -7,7 +7,7 @@
|
|
7 |
* @since 4.10.2 Update tooltip text for Confirmation email sender address and allow it to be saved as empty
|
8 |
* @since 4.10.9 Use function for text.
|
9 |
*
|
10 |
-
* @version
|
11 |
*/
|
12 |
$post_types_to_ignore = apply_filters( 'tribe_tickets_settings_post_type_ignore_list', [
|
13 |
'attachment',
|
7 |
* @since 4.10.2 Update tooltip text for Confirmation email sender address and allow it to be saved as empty
|
8 |
* @since 4.10.9 Use function for text.
|
9 |
*
|
10 |
+
* @version 4.10.10
|
11 |
*/
|
12 |
$post_types_to_ignore = apply_filters( 'tribe_tickets_settings_post_type_ignore_list', [
|
13 |
'attachment',
|
src/views/blocks/tickets.php
CHANGED
@@ -11,8 +11,9 @@
|
|
11 |
*
|
12 |
* @since 4.9
|
13 |
* @since 4.10.8 Updated loading logic for including a renamed template.
|
|
|
14 |
*
|
15 |
-
* @version 4.10.
|
16 |
*
|
17 |
* @var Tribe__Tickets__Editor__Template $this
|
18 |
*/
|
@@ -28,7 +29,7 @@ $is_sale_past = $this->get( 'is_sale_past' );
|
|
28 |
$cart_classes = array( 'tribe-block', 'tribe-block__tickets' );
|
29 |
|
30 |
// We don't display anything if there is no provider or tickets
|
31 |
-
if ( ! $provider
|
32 |
return false;
|
33 |
}
|
34 |
|
11 |
*
|
12 |
* @since 4.9
|
13 |
* @since 4.10.8 Updated loading logic for including a renamed template.
|
14 |
+
* @since 4.10.10 - Removed initial check for tickets.
|
15 |
*
|
16 |
+
* @version 4.10.10
|
17 |
*
|
18 |
* @var Tribe__Tickets__Editor__Template $this
|
19 |
*/
|
29 |
$cart_classes = array( 'tribe-block', 'tribe-block__tickets' );
|
30 |
|
31 |
// We don't display anything if there is no provider or tickets
|
32 |
+
if ( ! $provider ) {
|
33 |
return false;
|
34 |
}
|
35 |
|
src/views/tickets/tpp.php
CHANGED
@@ -12,7 +12,7 @@
|
|
12 |
* @since 4.8.2 Add date_in_range() logic so past tickets do not show.
|
13 |
* @since 4.9.3 Display login link if visitor is logged out and logging in is required to purchase.
|
14 |
* @since 4.10.8 Removed the date_in_range() check per ticket, since it now happens upstream. Better checking of max quantity available.
|
15 |
-
* @since
|
16 |
*
|
17 |
* @version 4.10.9
|
18 |
*
|
@@ -27,7 +27,7 @@ $commerce = tribe( 'tickets.commerce.paypal' );
|
|
27 |
|
28 |
$messages = $commerce->get_messages();
|
29 |
$messages_class = $messages ? 'tribe-tpp-message-display' : '';
|
30 |
-
$now =
|
31 |
$cart_url = '';
|
32 |
?>
|
33 |
<form
|
12 |
* @since 4.8.2 Add date_in_range() logic so past tickets do not show.
|
13 |
* @since 4.9.3 Display login link if visitor is logged out and logging in is required to purchase.
|
14 |
* @since 4.10.8 Removed the date_in_range() check per ticket, since it now happens upstream. Better checking of max quantity available.
|
15 |
+
* @since 4.10.10 Use customizable ticket name functions.
|
16 |
*
|
17 |
* @version 4.10.9
|
18 |
*
|
27 |
|
28 |
$messages = $commerce->get_messages();
|
29 |
$messages_class = $messages ? 'tribe-tpp-message-display' : '';
|
30 |
+
$now = time();
|
31 |
$cart_url = '';
|
32 |
?>
|
33 |
<form
|
vendor/autoload.php
CHANGED
@@ -4,4 +4,4 @@
|
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
-
return
|
4 |
|
5 |
require_once __DIR__ . '/composer/autoload_real.php';
|
6 |
|
7 |
+
return ComposerAutoloaderInit8051fb82e12fd13a3521bf9c6b58cd9e::getLoader();
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit6a81194869c912b62599b3b953ab6b73
|
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
-
spl_autoload_register(array('
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
-
spl_autoload_unregister(array('
|
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\
|
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 ComposerAutoloaderInit8051fb82e12fd13a3521bf9c6b58cd9e
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit8051fb82e12fd13a3521bf9c6b58cd9e', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit8051fb82e12fd13a3521bf9c6b58cd9e', '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\ComposerStaticInit8051fb82e12fd13a3521bf9c6b58cd9e::getInitializer($loader));
|
31 |
} else {
|
32 |
$map = require __DIR__ . '/autoload_namespaces.php';
|
33 |
foreach ($map as $namespace => $path) {
|
vendor/composer/autoload_static.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
-
class
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
@@ -45,9 +45,9 @@ class ComposerStaticInit6a81194869c912b62599b3b953ab6b73
|
|
45 |
public static function getInitializer(ClassLoader $loader)
|
46 |
{
|
47 |
return \Closure::bind(function () use ($loader) {
|
48 |
-
$loader->prefixLengthsPsr4 =
|
49 |
-
$loader->prefixDirsPsr4 =
|
50 |
-
$loader->classMap =
|
51 |
|
52 |
}, null, ClassLoader::class);
|
53 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit8051fb82e12fd13a3521bf9c6b58cd9e
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
45 |
public static function getInitializer(ClassLoader $loader)
|
46 |
{
|
47 |
return \Closure::bind(function () use ($loader) {
|
48 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit8051fb82e12fd13a3521bf9c6b58cd9e::$prefixLengthsPsr4;
|
49 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit8051fb82e12fd13a3521bf9c6b58cd9e::$prefixDirsPsr4;
|
50 |
+
$loader->classMap = ComposerStaticInit8051fb82e12fd13a3521bf9c6b58cd9e::$classMap;
|
51 |
|
52 |
}, null, ClassLoader::class);
|
53 |
}
|