Version Description
= [5.0] =
Please see the changelog for the complete list of changes in this release. Previous versions of The Events Calendar are not cross-compatible with 5.X add-ons. Remember to always make a backup of your database and files before updating!
Download this release
Release Info
Developer | bordoni |
Plugin | The Events Calendar |
Version | 5.1.4.1 |
Comparing to | |
See all releases |
Code changes from version 5.1.3.1 to 5.1.4.1
- common/lang/tribe-common.pot +24 -24
- common/src/Tribe/Assets.php +2 -2
- common/src/Tribe/DB_Lock.php +352 -0
- common/src/Tribe/Image/Uploader.php +8 -5
- common/src/Tribe/Main.php +6 -1
- common/src/Tribe/Promoter/Connector.php +38 -10
- common/src/Tribe/Repository.php +1 -1
- common/src/Tribe/Repository/Usage_Error.php +19 -3
- common/src/Tribe/Rewrite.php +5 -0
- common/src/Tribe/Service_Providers/Body_Classes.php +85 -0
- common/src/Tribe/Service_Providers/Crons.php +37 -0
- common/src/Tribe/Traits/With_DB_Lock.php +50 -0
- common/src/Tribe/Utils/Body_Classes.php +349 -0
- common/src/functions/template-tags/html.php +4 -0
- common/src/resources/js/dependency.js +9 -2
- common/src/resources/js/dependency.min.js +1 -1
- common/src/resources/js/dropdowns.js +1 -1
- common/vendor/autoload.php +1 -1
- common/vendor/autoload_52.php +1 -1
- common/vendor/composer/autoload_classmap.php +5 -0
- common/vendor/composer/autoload_real.php +4 -4
- common/vendor/composer/autoload_real_52.php +3 -3
- common/vendor/composer/autoload_static.php +10 -5
- common/vendor/composer/installed.json +7 -7
- common/vendor/faction23/a11y-dialog/a11y-dialog.min.js +1 -1
- common/vendor/psr/log/Psr/Log/AbstractLogger.php +16 -16
- common/vendor/psr/log/Psr/Log/LoggerAwareTrait.php +1 -1
- data_collection_disclosure.html +0 -32
- lang/the-events-calendar-de_DE.mo +0 -0
- lang/the-events-calendar.pot +280 -258
- readme.txt +13 -2
- site_owner_data_collection_statement.html +0 -48
- src/Tribe/Admin/Notice/Marketing.php +47 -0
- src/Tribe/Aggregator/API/Import.php +14 -2
- src/Tribe/Aggregator/Page.php +12 -7
- src/Tribe/Aggregator/Record/Abstract.php +10 -8
- src/Tribe/Aggregator/Record/Activity.php +6 -5
- src/Tribe/Aggregator/Record/CSV.php +15 -1
- src/Tribe/Aggregator/Service.php +44 -0
- src/Tribe/Aggregator/Tabs/New.php +14 -0
- src/Tribe/Main.php +9 -1
- src/Tribe/Service_Providers/First_Boot.php +75 -0
- src/Tribe/Template/Single_Event.php +21 -0
- src/Tribe/Views/V2/Hooks.php +71 -7
- src/Tribe/Views/V2/Template/Page.php +2 -2
- src/Tribe/Views/V2/Template_Bootstrap.php +51 -12
- src/Tribe/Views/V2/Theme_Compatibility.php +44 -3
- src/admin-views/privacy.php +3 -3
- src/functions/template-tags/orm.php +1 -1
- src/views/modules/bar.php +1 -1
- the-events-calendar.php +1 -1
- vendor/autoload.php +1 -1
- vendor/composer/autoload_classmap.php +1 -0
- vendor/composer/autoload_real.php +4 -4
- vendor/composer/autoload_static.php +5 -4
common/lang/tribe-common.pot
CHANGED
@@ -4,11 +4,11 @@ msgid ""
|
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: Tribe Common 4.12.4\n"
|
6 |
"Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
|
7 |
-
"POT-Creation-Date: 2020-06-19 04:
|
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: 2020-06-19 04:
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
@@ -1861,87 +1861,87 @@ msgstr ""
|
|
1861 |
msgid "Full debug (all events)"
|
1862 |
msgstr ""
|
1863 |
|
1864 |
-
#: src/Tribe/Main.php:
|
1865 |
msgid ": activate to sort column ascending"
|
1866 |
msgstr ""
|
1867 |
|
1868 |
-
#: src/Tribe/Main.php:
|
1869 |
msgid ": activate to sort column descending"
|
1870 |
msgstr ""
|
1871 |
|
1872 |
-
#: src/Tribe/Main.php:
|
1873 |
msgid "Show _MENU_ entries"
|
1874 |
msgstr ""
|
1875 |
|
1876 |
-
#: src/Tribe/Main.php:
|
1877 |
msgid "No data available in table"
|
1878 |
msgstr ""
|
1879 |
|
1880 |
-
#: src/Tribe/Main.php:
|
1881 |
msgid "Showing _START_ to _END_ of _TOTAL_ entries"
|
1882 |
msgstr ""
|
1883 |
|
1884 |
-
#: src/Tribe/Main.php:
|
1885 |
msgid "Showing 0 to 0 of 0 entries"
|
1886 |
msgstr ""
|
1887 |
|
1888 |
-
#: src/Tribe/Main.php:
|
1889 |
msgid "(filtered from _MAX_ total entries)"
|
1890 |
msgstr ""
|
1891 |
|
1892 |
-
#: src/Tribe/Main.php:
|
1893 |
msgid "No matching records found"
|
1894 |
msgstr ""
|
1895 |
|
1896 |
-
#: src/Tribe/Main.php:
|
1897 |
msgid "Search:"
|
1898 |
msgstr ""
|
1899 |
|
1900 |
-
#: src/Tribe/Main.php:
|
1901 |
msgid "All items on this page were selected. "
|
1902 |
msgstr ""
|
1903 |
|
1904 |
-
#: src/Tribe/Main.php:
|
1905 |
msgid "Select all pages"
|
1906 |
msgstr ""
|
1907 |
|
1908 |
-
#: src/Tribe/Main.php:
|
1909 |
msgid "Clear Selection."
|
1910 |
msgstr ""
|
1911 |
|
1912 |
-
#: src/Tribe/Main.php:
|
1913 |
msgid "All"
|
1914 |
msgstr ""
|
1915 |
|
1916 |
-
#: src/Tribe/Main.php:
|
1917 |
msgid "Next"
|
1918 |
msgstr ""
|
1919 |
|
1920 |
-
#: src/Tribe/Main.php:
|
1921 |
msgid "Previous"
|
1922 |
msgstr ""
|
1923 |
|
1924 |
-
#: src/Tribe/Main.php:
|
1925 |
msgid ": Selected %d rows"
|
1926 |
msgstr ""
|
1927 |
|
1928 |
-
#: src/Tribe/Main.php:
|
1929 |
msgid ": Selected 1 row"
|
1930 |
msgstr ""
|
1931 |
|
1932 |
-
#: src/Tribe/Main.php:
|
1933 |
msgid "Prev"
|
1934 |
msgstr ""
|
1935 |
|
1936 |
-
#: src/Tribe/Main.php:
|
1937 |
msgid "Today"
|
1938 |
msgstr ""
|
1939 |
|
1940 |
-
#: src/Tribe/Main.php:
|
1941 |
msgid "Done"
|
1942 |
msgstr ""
|
1943 |
|
1944 |
-
#: src/Tribe/Main.php:
|
1945 |
msgid "Clear"
|
1946 |
msgstr ""
|
1947 |
|
@@ -2988,7 +2988,7 @@ msgstr ""
|
|
2988 |
msgid "Hide the following settings tabs on every site:"
|
2989 |
msgstr ""
|
2990 |
|
2991 |
-
#: src/functions/template-tags/html.php:
|
2992 |
msgctxt "The associated field is required."
|
2993 |
msgid "(required)"
|
2994 |
msgstr ""
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: Tribe Common 4.12.4\n"
|
6 |
"Report-Msgid-Bugs-To: http://m.tri.be/191x\n"
|
7 |
+
"POT-Creation-Date: 2020-06-19 04:50:44+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: 2020-06-19 04:50\n"
|
12 |
"Last-Translator: \n"
|
13 |
"Language-Team: \n"
|
14 |
|
1861 |
msgid "Full debug (all events)"
|
1862 |
msgstr ""
|
1863 |
|
1864 |
+
#: src/Tribe/Main.php:315
|
1865 |
msgid ": activate to sort column ascending"
|
1866 |
msgstr ""
|
1867 |
|
1868 |
+
#: src/Tribe/Main.php:316
|
1869 |
msgid ": activate to sort column descending"
|
1870 |
msgstr ""
|
1871 |
|
1872 |
+
#: src/Tribe/Main.php:318
|
1873 |
msgid "Show _MENU_ entries"
|
1874 |
msgstr ""
|
1875 |
|
1876 |
+
#: src/Tribe/Main.php:319
|
1877 |
msgid "No data available in table"
|
1878 |
msgstr ""
|
1879 |
|
1880 |
+
#: src/Tribe/Main.php:320
|
1881 |
msgid "Showing _START_ to _END_ of _TOTAL_ entries"
|
1882 |
msgstr ""
|
1883 |
|
1884 |
+
#: src/Tribe/Main.php:321
|
1885 |
msgid "Showing 0 to 0 of 0 entries"
|
1886 |
msgstr ""
|
1887 |
|
1888 |
+
#: src/Tribe/Main.php:322
|
1889 |
msgid "(filtered from _MAX_ total entries)"
|
1890 |
msgstr ""
|
1891 |
|
1892 |
+
#: src/Tribe/Main.php:323
|
1893 |
msgid "No matching records found"
|
1894 |
msgstr ""
|
1895 |
|
1896 |
+
#: src/Tribe/Main.php:324
|
1897 |
msgid "Search:"
|
1898 |
msgstr ""
|
1899 |
|
1900 |
+
#: src/Tribe/Main.php:325
|
1901 |
msgid "All items on this page were selected. "
|
1902 |
msgstr ""
|
1903 |
|
1904 |
+
#: src/Tribe/Main.php:326
|
1905 |
msgid "Select all pages"
|
1906 |
msgstr ""
|
1907 |
|
1908 |
+
#: src/Tribe/Main.php:327
|
1909 |
msgid "Clear Selection."
|
1910 |
msgstr ""
|
1911 |
|
1912 |
+
#: src/Tribe/Main.php:329
|
1913 |
msgid "All"
|
1914 |
msgstr ""
|
1915 |
|
1916 |
+
#: src/Tribe/Main.php:330 src/Tribe/Main.php:347
|
1917 |
msgid "Next"
|
1918 |
msgstr ""
|
1919 |
|
1920 |
+
#: src/Tribe/Main.php:331
|
1921 |
msgid "Previous"
|
1922 |
msgstr ""
|
1923 |
|
1924 |
+
#: src/Tribe/Main.php:336
|
1925 |
msgid ": Selected %d rows"
|
1926 |
msgstr ""
|
1927 |
|
1928 |
+
#: src/Tribe/Main.php:337
|
1929 |
msgid ": Selected 1 row"
|
1930 |
msgstr ""
|
1931 |
|
1932 |
+
#: src/Tribe/Main.php:348
|
1933 |
msgid "Prev"
|
1934 |
msgstr ""
|
1935 |
|
1936 |
+
#: src/Tribe/Main.php:349 src/Tribe/Main.php:351
|
1937 |
msgid "Today"
|
1938 |
msgstr ""
|
1939 |
|
1940 |
+
#: src/Tribe/Main.php:350
|
1941 |
msgid "Done"
|
1942 |
msgstr ""
|
1943 |
|
1944 |
+
#: src/Tribe/Main.php:352
|
1945 |
msgid "Clear"
|
1946 |
msgstr ""
|
1947 |
|
2988 |
msgid "Hide the following settings tabs on every site:"
|
2989 |
msgstr ""
|
2990 |
|
2991 |
+
#: src/functions/template-tags/html.php:101
|
2992 |
msgctxt "The associated field is required."
|
2993 |
msgid "(required)"
|
2994 |
msgstr ""
|
common/src/Tribe/Assets.php
CHANGED
@@ -201,7 +201,7 @@ class Tribe__Assets {
|
|
201 |
}
|
202 |
|
203 |
/**
|
204 |
-
* Allows developers to hook-in and prevent an asset from
|
205 |
*
|
206 |
* @since 4.3
|
207 |
*
|
@@ -211,7 +211,7 @@ class Tribe__Assets {
|
|
211 |
$enqueue = apply_filters( 'tribe_asset_enqueue', $enqueue, $asset );
|
212 |
|
213 |
/**
|
214 |
-
* Allows developers to hook-in and prevent an asset from
|
215 |
*
|
216 |
* @since 4.3
|
217 |
*
|
201 |
}
|
202 |
|
203 |
/**
|
204 |
+
* Allows developers to hook-in and prevent an asset from being loaded.
|
205 |
*
|
206 |
* @since 4.3
|
207 |
*
|
211 |
$enqueue = apply_filters( 'tribe_asset_enqueue', $enqueue, $asset );
|
212 |
|
213 |
/**
|
214 |
+
* Allows developers to hook-in and prevent an asset from being loaded.
|
215 |
*
|
216 |
* @since 4.3
|
217 |
*
|
common/src/Tribe/DB_Lock.php
ADDED
@@ -0,0 +1,352 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Manages database locks using MySQL fucntions or queries.
|
4 |
+
*
|
5 |
+
* The MySQL functions used by this class are `GET_LOCK`, `IS_FREE_LOCK` and `RELEASE_LOCK`.
|
6 |
+
* The functions are part of MySQL 5.6 and in line with WordPress minimum requirement of MySQL version (5.6).
|
7 |
+
*
|
8 |
+
* @see https://dev.mysql.com/doc/refman/5.6/en/locking-functions.html#function_get-lock
|
9 |
+
*
|
10 |
+
* @since TBD
|
11 |
+
*
|
12 |
+
* @package Tribe
|
13 |
+
*/
|
14 |
+
|
15 |
+
namespace Tribe;
|
16 |
+
|
17 |
+
/**
|
18 |
+
* Class DB_Lock
|
19 |
+
*
|
20 |
+
* @since TBD
|
21 |
+
*
|
22 |
+
* @package Tribe
|
23 |
+
*/
|
24 |
+
class DB_Lock {
|
25 |
+
|
26 |
+
/**
|
27 |
+
* The prefix of the options used to manage the database lock without use of MySQL functions
|
28 |
+
* in the options table.
|
29 |
+
*
|
30 |
+
* @since TBD
|
31 |
+
*
|
32 |
+
* @var string
|
33 |
+
*/
|
34 |
+
public static $db_lock_option_prefix = 'tribe_db_lock_';
|
35 |
+
|
36 |
+
/**
|
37 |
+
* A map, shared among all instance of this trait in the session, of the currently held locks the
|
38 |
+
* time the locks where acquired, a UNIX timestamp w/ micro-seconds.
|
39 |
+
*
|
40 |
+
* @since TBD
|
41 |
+
*
|
42 |
+
* @var array<string,float>
|
43 |
+
*/
|
44 |
+
protected static $held_db_locks = [];
|
45 |
+
|
46 |
+
/**
|
47 |
+
* Prunes the stale locks stored in the options table.
|
48 |
+
*
|
49 |
+
* @since TBD
|
50 |
+
*
|
51 |
+
* @return int|false The number of pruned locks, or `false` to indicate the query to prune the locks generated
|
52 |
+
* an error (logged).
|
53 |
+
*/
|
54 |
+
public static function prune_stale_db_locks() {
|
55 |
+
global $wpdb;
|
56 |
+
$prefix = static::$db_lock_option_prefix;
|
57 |
+
$affected_rows = $wpdb->query(
|
58 |
+
"DELETE FROM {$wpdb->options}
|
59 |
+
WHERE option_name LIKE '{$prefix}%'
|
60 |
+
AND option_value < ( UNIX_TIMESTAMP() - 86400 )"
|
61 |
+
);
|
62 |
+
|
63 |
+
if ( false === $affected_rows ) {
|
64 |
+
$log_data = [
|
65 |
+
'message' => 'Error while trying to prune stale db locks.',
|
66 |
+
'error' => $wpdb->last_error
|
67 |
+
];
|
68 |
+
do_action( 'tribe_log', 'error', __CLASS__, $log_data );
|
69 |
+
|
70 |
+
return false;
|
71 |
+
}
|
72 |
+
|
73 |
+
return (int) $affected_rows;
|
74 |
+
}
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Acquires a db lock.
|
78 |
+
*
|
79 |
+
* To ensure back-compatibility with MySQL 5.6, the lock will hash the lock key using SHA1.
|
80 |
+
*
|
81 |
+
* @since TBD
|
82 |
+
*
|
83 |
+
* @param string $lock_key The name of the db lock key to acquire.
|
84 |
+
*
|
85 |
+
* @return bool Whether the lock acquisition was successful or not.
|
86 |
+
*/
|
87 |
+
public function acquire_db_lock( $lock_key ) {
|
88 |
+
/**
|
89 |
+
* Filters the timeout, in seconds, of the database lock acquisition attempts.
|
90 |
+
*
|
91 |
+
* The timeout will not be used when locks are managed using queries in place of
|
92 |
+
* MySQL functions.
|
93 |
+
*
|
94 |
+
* @since TBD
|
95 |
+
*
|
96 |
+
* @param int $timeout The timeout, in seconds, of the lock acquisition attempt.
|
97 |
+
* @param string $lock_key The lock key the target of the acquisition attempt.
|
98 |
+
* @param static $this The object that's trying to acquire the lock by means of the trait.
|
99 |
+
*/
|
100 |
+
$timeout = apply_filters( 'tribe_db_lock_timeout', 3, $lock_key, $this );
|
101 |
+
|
102 |
+
if ( $this->manage_db_lock_w_mysql_functions() ) {
|
103 |
+
return $this->acquire_db_lock_w_mysql_functions( $lock_key, $timeout );
|
104 |
+
}
|
105 |
+
|
106 |
+
return $this->acquire_db_lock_w_queries( $lock_key );
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Returns whether the traits should try to acquire and release locks using MySQL `GET_LOCK` and `RELEASE_LOCK`
|
111 |
+
* functions or not.
|
112 |
+
*
|
113 |
+
* If not, then the trait will manage the locks by means of direct SQL queries on the options table.
|
114 |
+
*
|
115 |
+
* @since TBD
|
116 |
+
*
|
117 |
+
* @return bool Whether the trait should use MySQL functions to manage the locks, or not.
|
118 |
+
*/
|
119 |
+
protected function manage_db_lock_w_mysql_functions() {
|
120 |
+
/**
|
121 |
+
* Filters whether the database lock should be acquired using the `GET_LOCK` and `RELEASE_LOCK`
|
122 |
+
* MySQL functions or not.
|
123 |
+
*
|
124 |
+
* If the filter returns a falsy value, then the trait will attempt to manage locks using `SELECT`
|
125 |
+
* and `UPDATE` queries on the options table.
|
126 |
+
*
|
127 |
+
* @since TBD
|
128 |
+
*/
|
129 |
+
return tribe_is_truthy( apply_filters( 'tribe_db_lock_use_msyql_functions', true ) );
|
130 |
+
}
|
131 |
+
|
132 |
+
/**
|
133 |
+
* Tries to acquire the database lock using MySQL functions (`GET_LOCK` and `IS_FREE_LOCK`).
|
134 |
+
*
|
135 |
+
* @since TBD
|
136 |
+
*
|
137 |
+
* @param string $lock_key The lock key to try and acquire the lock for.
|
138 |
+
* @param int $timeout The timeout, in seconds, to try and acquire the lock.
|
139 |
+
*
|
140 |
+
* @return bool Whether the lock was acquired or not.
|
141 |
+
*/
|
142 |
+
protected function acquire_db_lock_w_mysql_functions( $lock_key, $timeout ) {
|
143 |
+
/*
|
144 |
+
* On MySQL 5.6 if a session (a db connection) fires two requests of `GET_LOCK`, the lock is
|
145 |
+
* implicitly released and re-acquired.
|
146 |
+
* While this will not cause issues in the context of different db sessions (e.g. two diff. PHP
|
147 |
+
* processes competing for a lock), it would cause issues when the lock acquisition is attempted
|
148 |
+
* in the context of the same PHP process.
|
149 |
+
* To avoid a read-what-you-write issue in the context of the same request, we check if the lock is
|
150 |
+
* free, using `IS_FREE_LOCK` first.
|
151 |
+
*/
|
152 |
+
|
153 |
+
global $wpdb;
|
154 |
+
|
155 |
+
$free = $wpdb->get_var(
|
156 |
+
$wpdb->prepare( 'SELECT IS_FREE_LOCK( SHA1( %s ) )', $lock_key )
|
157 |
+
);
|
158 |
+
|
159 |
+
if ( ! $free ) {
|
160 |
+
return false;
|
161 |
+
}
|
162 |
+
|
163 |
+
$acquired = $wpdb->get_var(
|
164 |
+
$wpdb->prepare( 'SELECT GET_LOCK( SHA1( %s ),%d )', $lock_key, $timeout )
|
165 |
+
|
166 |
+
);
|
167 |
+
|
168 |
+
if ( false === $acquired ) {
|
169 |
+
// Only log errors, a failure to acquire lock is not an error.
|
170 |
+
$log_data = [
|
171 |
+
'message' => 'Error while trying to acquire lock.',
|
172 |
+
'key' => $lock_key,
|
173 |
+
'error' => $wpdb->last_error
|
174 |
+
];
|
175 |
+
do_action( 'tribe_log', 'error', __CLASS__, $log_data );
|
176 |
+
|
177 |
+
return false;
|
178 |
+
}
|
179 |
+
|
180 |
+
return true;
|
181 |
+
}
|
182 |
+
|
183 |
+
/**
|
184 |
+
* Tries to acquire the lock using SQL queries.
|
185 |
+
*
|
186 |
+
* This kind of lock does not support timeout to avoid sieging the MySQL server during processes
|
187 |
+
* that are most likely already stressing it. Either the lock is available the moment it's required or not.
|
188 |
+
* The method leverages `INSERT IGNORE` that it's available on MySQL 5.6 and is atomic provided one of the values
|
189 |
+
* we're trying to insert is UNIQUE or PRIMARY: `option_name` is UNIQUE in the `options` table.
|
190 |
+
*
|
191 |
+
* @since TBD
|
192 |
+
*
|
193 |
+
* @param string $lock_key The lock key to try and acquire the lock for.
|
194 |
+
*
|
195 |
+
* @return bool Whether the lock was acquired or not.
|
196 |
+
*/
|
197 |
+
protected function acquire_db_lock_w_queries( $lock_key ) {
|
198 |
+
global $wpdb;
|
199 |
+
$option_name = $this->get_db_lock_option_name( $lock_key );
|
200 |
+
$lock_time = microtime( true );
|
201 |
+
|
202 |
+
//phpcs:disable
|
203 |
+
$rows_affected = $wpdb->query(
|
204 |
+
$wpdb->prepare( "INSERT IGNORE INTO {$wpdb->options}
|
205 |
+
(option_name, option_value, autoload)
|
206 |
+
VALUES
|
207 |
+
(%s, %s, 'no')",
|
208 |
+
$option_name,
|
209 |
+
$lock_time
|
210 |
+
)
|
211 |
+
);
|
212 |
+
//phpcs:enable
|
213 |
+
|
214 |
+
if ( false === $rows_affected ) {
|
215 |
+
$log_data = [
|
216 |
+
'message' => 'Error while trying to acquire lock with database.',
|
217 |
+
'key' => $lock_key,
|
218 |
+
'option_name' => $option_name,
|
219 |
+
'error' => $wpdb->last_error,
|
220 |
+
];
|
221 |
+
do_action( 'tribe_log', 'error', __CLASS__, $log_data );
|
222 |
+
|
223 |
+
return false;
|
224 |
+
}
|
225 |
+
|
226 |
+
/*
|
227 |
+
* The `wpdb::query()` method will return the number of affected rows when using `INSERT`.
|
228 |
+
* 1 row affected means we could INSERT and have the lock, 0 rows affected means we could not INSERT
|
229 |
+
* and have not the lock.
|
230 |
+
*/
|
231 |
+
|
232 |
+
if ( $rows_affected ) {
|
233 |
+
self::$held_db_locks[ $lock_key ] = $lock_time;
|
234 |
+
}
|
235 |
+
|
236 |
+
return (bool) $rows_affected;
|
237 |
+
}
|
238 |
+
|
239 |
+
/**
|
240 |
+
* Returns the option name used to manage the lock for a key in the options table.
|
241 |
+
*
|
242 |
+
* @since TBD
|
243 |
+
*
|
244 |
+
* @param string $lock_key The lock key to build the option name for.
|
245 |
+
*
|
246 |
+
* @return string The name of the option that will be used to manage the lock for the specified key in the
|
247 |
+
* options table.
|
248 |
+
*/
|
249 |
+
public function get_db_lock_option_name( $lock_key ) {
|
250 |
+
return self::$db_lock_option_prefix . $lock_key;
|
251 |
+
}
|
252 |
+
|
253 |
+
/**
|
254 |
+
* Releases the database lock of the record.
|
255 |
+
*
|
256 |
+
* Release a not held db lock will return `null`, not `false`.
|
257 |
+
*
|
258 |
+
* @since TBD
|
259 |
+
*
|
260 |
+
* @param string $lock_key The name of the lock to release.
|
261 |
+
*
|
262 |
+
* @return bool Whether the lock was correctly released or not.
|
263 |
+
*/
|
264 |
+
public function release_db_lock( $lock_key ) {
|
265 |
+
if ( $this->manage_db_lock_w_mysql_functions() ) {
|
266 |
+
return $this->release_db_lock_w_mysql_functions( $lock_key );
|
267 |
+
}
|
268 |
+
|
269 |
+
return $this->release_db_lock_w_queries( $lock_key );
|
270 |
+
}
|
271 |
+
|
272 |
+
/**
|
273 |
+
* Releases a DB lock held by the current database session (`$wpdb` instance) by
|
274 |
+
* using the MySQL `RELEASE_LOCK` function.
|
275 |
+
*
|
276 |
+
* @since TBD
|
277 |
+
*
|
278 |
+
* @param string $lock_key The lock key to release the lock for.
|
279 |
+
*
|
280 |
+
* @return bool Whether the lock was correctly released or not.
|
281 |
+
*/
|
282 |
+
protected function release_db_lock_w_mysql_functions( $lock_key ) {
|
283 |
+
global $wpdb;
|
284 |
+
|
285 |
+
$released = $wpdb->query(
|
286 |
+
$wpdb->prepare( "SELECT RELEASE_LOCK( SHA1( %s ) )", $lock_key )
|
287 |
+
);
|
288 |
+
|
289 |
+
if ( false === $released ) {
|
290 |
+
$log_data = [
|
291 |
+
'message' => 'Error while trying to release lock.',
|
292 |
+
'key' => $lock_key,
|
293 |
+
'error' => $wpdb->last_error
|
294 |
+
];
|
295 |
+
do_action( 'tribe_log', 'error', __CLASS__, $log_data );
|
296 |
+
|
297 |
+
return false;
|
298 |
+
}
|
299 |
+
|
300 |
+
return true;
|
301 |
+
}
|
302 |
+
|
303 |
+
/**
|
304 |
+
* Releases a lock using SQL queries.
|
305 |
+
*
|
306 |
+
* Note: differently from the `release_db_lock_w_mysql_functions`, this method will release the lock
|
307 |
+
* even if the current session is not the one holding the lock.
|
308 |
+
* To protect from this the trait uses a map of registered locks and when the locks where registered.
|
309 |
+
*
|
310 |
+
* @since TBD
|
311 |
+
*
|
312 |
+
* @param string $lock_key The lock key to release the lock for.
|
313 |
+
*
|
314 |
+
* @return bool Whether the lock was released or not, errors will be logged, a `false` value is returned if
|
315 |
+
* the lock was not held to begin with.
|
316 |
+
*/
|
317 |
+
protected function release_db_lock_w_queries( $lock_key ) {
|
318 |
+
if ( ! isset( self::$held_db_locks[ $lock_key ] ) ) {
|
319 |
+
// Avoid sessions that do nothold the lock to release it.
|
320 |
+
return false;
|
321 |
+
}
|
322 |
+
|
323 |
+
global $wpdb;
|
324 |
+
$option_name = $this->get_db_lock_option_name( $lock_key );
|
325 |
+
//phpcs:disable
|
326 |
+
$rows_affected = $wpdb->delete(
|
327 |
+
$wpdb->options,
|
328 |
+
[ 'option_name' => $option_name ],
|
329 |
+
[ '%s' ]
|
330 |
+
);
|
331 |
+
//phpcs:enable
|
332 |
+
|
333 |
+
if ( false === $rows_affected ) {
|
334 |
+
$log_data = [
|
335 |
+
'message' => 'Error while trying to release lock with database.',
|
336 |
+
'key' => $lock_key,
|
337 |
+
'option_name' => $option_name,
|
338 |
+
'error' => $wpdb->last_error,
|
339 |
+
];
|
340 |
+
do_action( 'tribe_log', 'error', __CLASS__, $log_data );
|
341 |
+
|
342 |
+
return false;
|
343 |
+
}
|
344 |
+
|
345 |
+
if ( $rows_affected ) {
|
346 |
+
// Lock successfully released.
|
347 |
+
unset( self::$held_db_locks[ $lock_key ] );
|
348 |
+
}
|
349 |
+
|
350 |
+
return (bool) $rows_affected;
|
351 |
+
}
|
352 |
+
}
|
common/src/Tribe/Image/Uploader.php
CHANGED
@@ -153,11 +153,14 @@ class Tribe__Image__Uploader {
|
|
153 |
}
|
154 |
|
155 |
// Upload file into WP and leave WP handle the resize and such.
|
156 |
-
$attachment_id = media_handle_sideload(
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
|
|
|
|
|
|
|
161 |
|
162 |
// Remove the temporary file as is no longer required at this point.
|
163 |
if ( ! $is_local && file_exists( $file ) ) {
|
153 |
}
|
154 |
|
155 |
// Upload file into WP and leave WP handle the resize and such.
|
156 |
+
$attachment_id = media_handle_sideload(
|
157 |
+
[
|
158 |
+
'name' => $this->create_file_name( $file ),
|
159 |
+
'tmp_name' => $file,
|
160 |
+
'post_mime_type' => 'image',
|
161 |
+
],
|
162 |
+
0
|
163 |
+
);
|
164 |
|
165 |
// Remove the temporary file as is no longer required at this point.
|
166 |
if ( ! $is_local && file_exists( $file ) ) {
|
common/src/Tribe/Main.php
CHANGED
@@ -4,6 +4,8 @@
|
|
4 |
*/
|
5 |
|
6 |
// Don't load directly
|
|
|
|
|
7 |
if ( ! defined( 'ABSPATH' ) ) {
|
8 |
die( '-1' );
|
9 |
}
|
@@ -17,7 +19,7 @@ class Tribe__Main {
|
|
17 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
18 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
19 |
|
20 |
-
const VERSION = '4.12.
|
21 |
|
22 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
23 |
|
@@ -611,6 +613,7 @@ class Tribe__Main {
|
|
611 |
tribe_singleton( 'context', 'Tribe__Context' );
|
612 |
tribe_singleton( 'post-transient', 'Tribe__Post_Transient' );
|
613 |
tribe_singleton( 'db', 'Tribe__Db' );
|
|
|
614 |
tribe_singleton( 'freemius', 'Tribe__Freemius' );
|
615 |
|
616 |
tribe_singleton( Tribe__Dependency::class, Tribe__Dependency::class );
|
@@ -630,7 +633,9 @@ class Tribe__Main {
|
|
630 |
tribe_register_provider( Tribe\Service_Providers\Dialog::class );
|
631 |
tribe_register_provider( Tribe\Service_Providers\PUE::class );
|
632 |
tribe_register_provider( Tribe\Service_Providers\Shortcodes::class );
|
|
|
633 |
tribe_register_provider( Tribe\Log\Service_Provider::class );
|
|
|
634 |
}
|
635 |
|
636 |
/**
|
4 |
*/
|
5 |
|
6 |
// Don't load directly
|
7 |
+
use Tribe\DB_Lock;
|
8 |
+
|
9 |
if ( ! defined( 'ABSPATH' ) ) {
|
10 |
die( '-1' );
|
11 |
}
|
19 |
const OPTIONNAME = 'tribe_events_calendar_options';
|
20 |
const OPTIONNAMENETWORK = 'tribe_events_calendar_network_options';
|
21 |
|
22 |
+
const VERSION = '4.12.5';
|
23 |
|
24 |
const FEED_URL = 'https://theeventscalendar.com/feed/';
|
25 |
|
613 |
tribe_singleton( 'context', 'Tribe__Context' );
|
614 |
tribe_singleton( 'post-transient', 'Tribe__Post_Transient' );
|
615 |
tribe_singleton( 'db', 'Tribe__Db' );
|
616 |
+
tribe_singleton( 'db-lock', DB_Lock::class );
|
617 |
tribe_singleton( 'freemius', 'Tribe__Freemius' );
|
618 |
|
619 |
tribe_singleton( Tribe__Dependency::class, Tribe__Dependency::class );
|
633 |
tribe_register_provider( Tribe\Service_Providers\Dialog::class );
|
634 |
tribe_register_provider( Tribe\Service_Providers\PUE::class );
|
635 |
tribe_register_provider( Tribe\Service_Providers\Shortcodes::class );
|
636 |
+
tribe_register_provider( Tribe\Service_Providers\Body_Classes::class );
|
637 |
tribe_register_provider( Tribe\Log\Service_Provider::class );
|
638 |
+
tribe_register_provider( Tribe\Service_Providers\Crons::class );
|
639 |
}
|
640 |
|
641 |
/**
|
common/src/Tribe/Promoter/Connector.php
CHANGED
@@ -50,14 +50,14 @@ class Tribe__Promoter__Connector {
|
|
50 |
|
51 |
$payload = [
|
52 |
'clientSecret' => $secret_key,
|
53 |
-
'licenseKey'
|
54 |
-
'userId'
|
55 |
];
|
56 |
|
57 |
$token = \Firebase\JWT\JWT::encode( $payload, $promoter_key );
|
58 |
|
59 |
$response = $this->make_call( $url, [
|
60 |
-
'body'
|
61 |
'sslverify' => false,
|
62 |
] );
|
63 |
|
@@ -91,7 +91,7 @@ class Tribe__Promoter__Connector {
|
|
91 |
$url = $this->base_url() . 'connect/auth';
|
92 |
|
93 |
$response = $this->make_call( $url, [
|
94 |
-
'body'
|
95 |
'sslverify' => false,
|
96 |
] );
|
97 |
|
@@ -200,11 +200,25 @@ class Tribe__Promoter__Connector {
|
|
200 |
$url = $this->base_url() . 'connect/notify';
|
201 |
|
202 |
$args = [
|
203 |
-
'body'
|
204 |
'sslverify' => false,
|
|
|
205 |
];
|
206 |
|
207 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
208 |
}
|
209 |
|
210 |
/**
|
@@ -215,7 +229,7 @@ class Tribe__Promoter__Connector {
|
|
215 |
* @return mixed
|
216 |
*/
|
217 |
protected function get_secret_key() {
|
218 |
-
$secret_key
|
219 |
|
220 |
/**
|
221 |
* @since 4.9.12
|
@@ -228,19 +242,33 @@ class Tribe__Promoter__Connector {
|
|
228 |
/**
|
229 |
* Make the call to the remote endpoint.
|
230 |
*
|
231 |
-
* @
|
|
|
232 |
* @param array $args Data to send.
|
233 |
*
|
|
|
|
|
234 |
* @return string|false The response body or false if not successful.
|
235 |
*
|
236 |
-
* @since 4.9
|
237 |
*/
|
238 |
private function make_call( $url, $args ) {
|
239 |
$response = wp_remote_post( $url, $args );
|
240 |
$code = wp_remote_retrieve_response_code( $response );
|
241 |
$body = wp_remote_retrieve_body( $response );
|
242 |
|
243 |
-
if ( is_wp_error( $response )
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
244 |
return false;
|
245 |
}
|
246 |
|
50 |
|
51 |
$payload = [
|
52 |
'clientSecret' => $secret_key,
|
53 |
+
'licenseKey' => $license_key,
|
54 |
+
'userId' => $user_id,
|
55 |
];
|
56 |
|
57 |
$token = \Firebase\JWT\JWT::encode( $payload, $promoter_key );
|
58 |
|
59 |
$response = $this->make_call( $url, [
|
60 |
+
'body' => [ 'token' => $token ],
|
61 |
'sslverify' => false,
|
62 |
] );
|
63 |
|
91 |
$url = $this->base_url() . 'connect/auth';
|
92 |
|
93 |
$response = $this->make_call( $url, [
|
94 |
+
'body' => [ 'token' => $token ],
|
95 |
'sslverify' => false,
|
96 |
] );
|
97 |
|
200 |
$url = $this->base_url() . 'connect/notify';
|
201 |
|
202 |
$args = [
|
203 |
+
'body' => [ 'token' => $token ],
|
204 |
'sslverify' => false,
|
205 |
+
'timeout' => 15,
|
206 |
];
|
207 |
|
208 |
+
/**
|
209 |
+
* Allow to customize the number of maximum number of retries per call to notify promoter.
|
210 |
+
*
|
211 |
+
* @since TBD
|
212 |
+
*
|
213 |
+
* @param int $max_attempts The maximum number of retries if the response was a failure.
|
214 |
+
*/
|
215 |
+
$max_attempts = apply_filters( 'tribe_promoter_max_retries_on_failure', 3 );
|
216 |
+
|
217 |
+
$attempts = 0;
|
218 |
+
|
219 |
+
do {
|
220 |
+
$result = $this->make_call( $url, $args );
|
221 |
+
} while ( false === $result && ++$attempts < $max_attempts );
|
222 |
}
|
223 |
|
224 |
/**
|
229 |
* @return mixed
|
230 |
*/
|
231 |
protected function get_secret_key() {
|
232 |
+
$secret_key = get_option( 'tribe_promoter_auth_key' );
|
233 |
|
234 |
/**
|
235 |
* @since 4.9.12
|
242 |
/**
|
243 |
* Make the call to the remote endpoint.
|
244 |
*
|
245 |
+
* @since 4.9
|
246 |
+
*
|
247 |
* @param array $args Data to send.
|
248 |
*
|
249 |
+
* @param string $url URL to send data to.
|
250 |
+
*
|
251 |
* @return string|false The response body or false if not successful.
|
252 |
*
|
|
|
253 |
*/
|
254 |
private function make_call( $url, $args ) {
|
255 |
$response = wp_remote_post( $url, $args );
|
256 |
$code = wp_remote_retrieve_response_code( $response );
|
257 |
$body = wp_remote_retrieve_body( $response );
|
258 |
|
259 |
+
if ( $code > 299 || is_wp_error( $response ) ) {
|
260 |
+
do_action(
|
261 |
+
'tribe_log',
|
262 |
+
'warning',
|
263 |
+
__METHOD__,
|
264 |
+
[
|
265 |
+
'url' => $url,
|
266 |
+
'args' => $args,
|
267 |
+
'response' => $response,
|
268 |
+
'response_code' => $code,
|
269 |
+
]
|
270 |
+
);
|
271 |
+
|
272 |
return false;
|
273 |
}
|
274 |
|
common/src/Tribe/Repository.php
CHANGED
@@ -1512,7 +1512,7 @@ abstract class Tribe__Repository
|
|
1512 |
*/
|
1513 |
public function set( $key, $value ) {
|
1514 |
if ( ! is_string( $key ) ) {
|
1515 |
-
throw Tribe__Repository__Usage_Error::
|
1516 |
}
|
1517 |
|
1518 |
$this->updates[ $key ] = $value;
|
1512 |
*/
|
1513 |
public function set( $key, $value ) {
|
1514 |
if ( ! is_string( $key ) ) {
|
1515 |
+
throw Tribe__Repository__Usage_Error::because_update_key_should_be_a_string( $this );
|
1516 |
}
|
1517 |
|
1518 |
$this->updates[ $key ] = $value;
|
common/src/Tribe/Repository/Usage_Error.php
CHANGED
@@ -75,19 +75,35 @@ class Tribe__Repository__Usage_Error extends Exception {
|
|
75 |
public static function because_this_field_cannot_be_updated( $key, $object ) {
|
76 |
$class = get_class( $object );
|
77 |
|
78 |
-
return new self( "The {$class} class does not allow
|
79 |
}
|
80 |
|
81 |
/**
|
|
|
82 |
* Indicates that the `set` method of the Update repository is being used incorrectly.
|
83 |
*
|
84 |
-
* @since
|
|
|
|
|
85 |
*
|
86 |
* @param Tribe__Repository__Update_Interface $object
|
87 |
*
|
88 |
* @return Tribe__Repository__Usage_Error A ready to throw instance of the class.
|
89 |
*/
|
90 |
public static function because_udpate_key_should_be_a_string( $object ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
91 |
$class = get_class( $object );
|
92 |
|
93 |
return new self( 'The key used in the `set` method should be a string; if you want to set multiple fields at once use the `set_args` method.' );
|
@@ -205,7 +221,7 @@ class Tribe__Repository__Usage_Error extends Exception {
|
|
205 |
* @return Tribe__Repository__Usage_Error A ready to throw instance of the class.
|
206 |
*/
|
207 |
public static function because_this_comparison_operator_requires_an_value_of_type( $operator, $filter, $type ) {
|
208 |
-
return new self( "You are trying to use a comparison
|
209 |
}
|
210 |
|
211 |
/**
|
75 |
public static function because_this_field_cannot_be_updated( $key, $object ) {
|
76 |
$class = get_class( $object );
|
77 |
|
78 |
+
return new self( "The {$class} class does not allow updating the {$key} field; allow it by decorating or extending this class." );
|
79 |
}
|
80 |
|
81 |
/**
|
82 |
+
* "Sugar" method to correct a typo in a public method name.
|
83 |
* Indicates that the `set` method of the Update repository is being used incorrectly.
|
84 |
*
|
85 |
+
* @since TBD
|
86 |
+
*
|
87 |
+
* @TODO: perhaps we should deprecate this at some point?
|
88 |
*
|
89 |
* @param Tribe__Repository__Update_Interface $object
|
90 |
*
|
91 |
* @return Tribe__Repository__Usage_Error A ready to throw instance of the class.
|
92 |
*/
|
93 |
public static function because_udpate_key_should_be_a_string( $object ) {
|
94 |
+
return self::because_update_key_should_be_a_string( $object );
|
95 |
+
}
|
96 |
+
|
97 |
+
/**
|
98 |
+
* Indicates that the `set` method of the Update repository is being used incorrectly.
|
99 |
+
*
|
100 |
+
* @since 4.7.19
|
101 |
+
*
|
102 |
+
* @param Tribe__Repository__Update_Interface $object
|
103 |
+
*
|
104 |
+
* @return Tribe__Repository__Usage_Error A ready to throw instance of the class.
|
105 |
+
*/
|
106 |
+
public static function because_update_key_should_be_a_string( $object ) {
|
107 |
$class = get_class( $object );
|
108 |
|
109 |
return new self( 'The key used in the `set` method should be a string; if you want to set multiple fields at once use the `set_args` method.' );
|
221 |
* @return Tribe__Repository__Usage_Error A ready to throw instance of the class.
|
222 |
*/
|
223 |
public static function because_this_comparison_operator_requires_an_value_of_type( $operator, $filter, $type ) {
|
224 |
+
return new self( "You are trying to use a comparison operator ({$operator}) in the filter {$filter} that requires a value of type {$type}." );
|
225 |
}
|
226 |
|
227 |
/**
|
common/src/Tribe/Rewrite.php
CHANGED
@@ -872,6 +872,11 @@ class Tribe__Rewrite {
|
|
872 |
$perma_query_vars = [];
|
873 |
$url_components = parse_url($url);
|
874 |
$url_path = Arr::get( $url_components, 'path', '/' );
|
|
|
|
|
|
|
|
|
|
|
875 |
$url_query = Arr::get( $url_components, 'query', '' );
|
876 |
parse_str( $url_query, $url_query_vars );
|
877 |
// Look for matches, removing leading `/` char.
|
872 |
$perma_query_vars = [];
|
873 |
$url_components = parse_url($url);
|
874 |
$url_path = Arr::get( $url_components, 'path', '/' );
|
875 |
+
$site_path = parse_url( home_url(), PHP_URL_PATH );
|
876 |
+
if ( ! ( empty( $site_path ) && '/' !== $site_path ) ) {
|
877 |
+
// The current site is in a sub-directory: the site path should be dropped from the request path.
|
878 |
+
$url_path = str_replace( $site_path, '', $url_path );
|
879 |
+
}
|
880 |
$url_query = Arr::get( $url_components, 'query', '' );
|
881 |
parse_str( $url_query, $url_query_vars );
|
882 |
// Look for matches, removing leading `/` char.
|
common/src/Tribe/Service_Providers/Body_Classes.php
ADDED
@@ -0,0 +1,85 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
namespace Tribe\Service_Providers;
|
4 |
+
|
5 |
+
use Tribe\Utils\Body_Classes as Body_Class_Object;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Class Body_Classes
|
9 |
+
*
|
10 |
+
* @since TBD
|
11 |
+
*
|
12 |
+
* Handles the registration and creation of our async process handlers.
|
13 |
+
*/
|
14 |
+
class Body_Classes extends \tad_DI52_ServiceProvider {
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Binds and sets up implementations.
|
18 |
+
*
|
19 |
+
* @since TBD
|
20 |
+
*/
|
21 |
+
public function register() {
|
22 |
+
tribe_singleton( Body_Class_Object::class, Body_Class_Object::class );
|
23 |
+
|
24 |
+
/**
|
25 |
+
* Allows plugins to hook into the register action to register views, etc.
|
26 |
+
*
|
27 |
+
* @since TBD
|
28 |
+
*
|
29 |
+
* @param Tribe\Service_Providers\Dialog $dialog
|
30 |
+
*/
|
31 |
+
do_action( 'tribe_body_classes_register', $this );
|
32 |
+
|
33 |
+
$this->hooks();
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Set up hooks for classes.
|
38 |
+
*
|
39 |
+
* @since TBD
|
40 |
+
*/
|
41 |
+
private function hooks() {
|
42 |
+
add_filter( 'body_class', [ $this, 'add_body_classes' ] );
|
43 |
+
add_filter( 'admin_body_class', [ $this, 'add_admin_body_classes' ] );
|
44 |
+
|
45 |
+
/**
|
46 |
+
* Allows plugins to hook into the hooks action to register their own hooks.
|
47 |
+
*
|
48 |
+
* @since TBD
|
49 |
+
*
|
50 |
+
* @param Tribe\Service_Providers\Dialog $dialog
|
51 |
+
*/
|
52 |
+
do_action( 'tribe_body_classes_hooks', $this );
|
53 |
+
}
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Hook in and add FE body classes.
|
57 |
+
*
|
58 |
+
* @since TBD
|
59 |
+
*
|
60 |
+
* @param array $classes An array of body class names.
|
61 |
+
* @return array The modified array of body class names.
|
62 |
+
*/
|
63 |
+
public function add_body_classes( $classes = [] ) {
|
64 |
+
/** @var Body_Class_Object $body_classes */
|
65 |
+
$body_classes = tribe( Body_Class_Object::class );
|
66 |
+
|
67 |
+
return $body_classes->add_body_classes( $classes );
|
68 |
+
}
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Hook in and add admin body classes.
|
72 |
+
*
|
73 |
+
* @since TBD
|
74 |
+
*
|
75 |
+
* @param array $classes An array of body class names.
|
76 |
+
* @return array The modified array of body class names.
|
77 |
+
*/
|
78 |
+
public function add_admin_body_classes( $classes = [] ) {
|
79 |
+
/** @var Body_Class_Object $body_classes */
|
80 |
+
$body_classes = tribe( Body_Class_Object::class );
|
81 |
+
|
82 |
+
return $body_classes->add_admin_body_classes( $classes );
|
83 |
+
}
|
84 |
+
|
85 |
+
}
|
common/src/Tribe/Service_Providers/Crons.php
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Handles common cron functions.
|
4 |
+
*
|
5 |
+
* @since TBD
|
6 |
+
*
|
7 |
+
* @package Tribe\Service_Providers
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Tribe\Service_Providers;
|
11 |
+
|
12 |
+
use Tribe\DB_Lock;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Class Crons
|
16 |
+
*
|
17 |
+
* @since TBD
|
18 |
+
*
|
19 |
+
* @package Tribe\Service_Providers
|
20 |
+
*/
|
21 |
+
class Crons extends \tad_DI52_ServiceProvider {
|
22 |
+
|
23 |
+
/**
|
24 |
+
* Registers the filters required by the provider to manage cron processes.
|
25 |
+
*
|
26 |
+
* @since TBD
|
27 |
+
*/
|
28 |
+
public function register() {
|
29 |
+
// Schedule a cron event happening once a day.
|
30 |
+
if ( ! wp_get_schedule( 'tribe_daily_cron' ) ) {
|
31 |
+
wp_schedule_event( time(), 'daily', 'tribe_daily_cron' );
|
32 |
+
}
|
33 |
+
|
34 |
+
// Register actions that should happen on that hook.
|
35 |
+
add_action( 'tribe_daily_cron', [ DB_Lock::class, 'prune_stale_db_locks' ] );
|
36 |
+
}
|
37 |
+
}
|
common/src/Tribe/Traits/With_DB_Lock.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Provides methods to acquire and release a database (SQL) lock using the `Tribe\DB_Lock` class.
|
4 |
+
*
|
5 |
+
* @since TBD
|
6 |
+
*
|
7 |
+
* @package Tribe\Traits
|
8 |
+
*/
|
9 |
+
|
10 |
+
namespace Tribe\Traits;
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Trait With_Db_Lock
|
14 |
+
*
|
15 |
+
* @since TBD
|
16 |
+
*
|
17 |
+
* @package Tribe\Traits
|
18 |
+
*/
|
19 |
+
trait With_DB_Lock {
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Acquires a db lock.
|
23 |
+
*
|
24 |
+
* To ensure back-compatibility with MySQL 5.6, the lock will hash the lock key using SHA1.
|
25 |
+
*
|
26 |
+
* @since TBD
|
27 |
+
*
|
28 |
+
* @param string $lock_key The name of the db lock key to acquire.
|
29 |
+
*
|
30 |
+
* @return bool Whether the lock acquisition was successful or not.
|
31 |
+
*/
|
32 |
+
private function acquire_db_lock( $lock_key ) {
|
33 |
+
return tribe( 'db-lock' )->acquire_db_lock( $lock_key );
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Releases the database lock of the record.
|
38 |
+
*
|
39 |
+
* Release a not held db lock will return `null`, not `false`.
|
40 |
+
*
|
41 |
+
* @since TBD
|
42 |
+
*
|
43 |
+
* @param string $lock_key The name of the lock to release.
|
44 |
+
*
|
45 |
+
* @return bool Whether the lock was correctly released or not.
|
46 |
+
*/
|
47 |
+
private function release_db_lock( $lock_key ) {
|
48 |
+
return tribe( 'db-lock' )->release_db_lock( $lock_key );
|
49 |
+
}
|
50 |
+
}
|
common/src/Tribe/Utils/Body_Classes.php
ADDED
@@ -0,0 +1,349 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Class used to manage and add body classes via a queue across our plugins.
|
4 |
+
*
|
5 |
+
* @since TBD
|
6 |
+
*/
|
7 |
+
namespace Tribe\Utils;
|
8 |
+
|
9 |
+
use Tribe\Utils\Element_Classes;
|
10 |
+
|
11 |
+
/**
|
12 |
+
* Body_Classes class
|
13 |
+
*
|
14 |
+
* @since TBD
|
15 |
+
*/
|
16 |
+
class Body_Classes {
|
17 |
+
/**
|
18 |
+
* Stores all the classes.
|
19 |
+
* In the format: ['class' => true, 'class => false ]
|
20 |
+
*
|
21 |
+
* @var array<string,bool>
|
22 |
+
*/
|
23 |
+
protected $classes = [];
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Stores all the admin classes.
|
27 |
+
* In the format: ['class' => true, 'class => false ]
|
28 |
+
*
|
29 |
+
* @var array<string,bool>
|
30 |
+
*/
|
31 |
+
protected $admin_classes = [];
|
32 |
+
|
33 |
+
/**
|
34 |
+
* Queue-aware method to get the classes array.
|
35 |
+
* Returns the array of classes to add.
|
36 |
+
*
|
37 |
+
* @since TBD
|
38 |
+
*
|
39 |
+
* @param string $queue The queue we want to get 'admin', 'display', 'all'.
|
40 |
+
* @return array<string,bool> A map of the classes for the queue.
|
41 |
+
*/
|
42 |
+
public function get_classes( $queue = 'display' ) {
|
43 |
+
switch( $queue ) {
|
44 |
+
case 'admin':
|
45 |
+
return $this->admin_classes;
|
46 |
+
break;
|
47 |
+
case 'all':
|
48 |
+
return array_merge( $this->classes, $this->admin_classes );
|
49 |
+
break;
|
50 |
+
default:
|
51 |
+
return $this->classes;
|
52 |
+
break;
|
53 |
+
}
|
54 |
+
}
|
55 |
+
|
56 |
+
/**
|
57 |
+
* Returns the array of classnames to add
|
58 |
+
*
|
59 |
+
* @since TBD
|
60 |
+
*
|
61 |
+
* @param string $queue The queue we want to get 'admin', 'display', 'all'.
|
62 |
+
* @return array<string> The list of class names.
|
63 |
+
*/
|
64 |
+
public function get_class_names( $queue = 'display' ) {
|
65 |
+
$classes = $this->get_classes( $queue );
|
66 |
+
|
67 |
+
return array_keys(
|
68 |
+
array_filter(
|
69 |
+
$classes,
|
70 |
+
static function( $v ) {
|
71 |
+
return $v;
|
72 |
+
},
|
73 |
+
ARRAY_FILTER_USE_KEY
|
74 |
+
)
|
75 |
+
);
|
76 |
+
}
|
77 |
+
|
78 |
+
/**
|
79 |
+
* Checks if a class is in the queue,
|
80 |
+
* wether it's going to be added or not.
|
81 |
+
*
|
82 |
+
* @since TBD
|
83 |
+
*
|
84 |
+
* @param string $class The class we are checking for.
|
85 |
+
* @param string $queue The queue we want to check 'admin', 'display', 'all'
|
86 |
+
* @return boolean Whether a class exists or not in the queue.
|
87 |
+
*/
|
88 |
+
public function class_exists( $class, $queue = 'display' ) {
|
89 |
+
$classes = $this->get_classes( $queue );
|
90 |
+
|
91 |
+
return array_key_exists( $class, $classes );
|
92 |
+
}
|
93 |
+
|
94 |
+
/**
|
95 |
+
* Checks if a class is in the queue and going to be added.
|
96 |
+
*
|
97 |
+
* @since TBD
|
98 |
+
*
|
99 |
+
* @param string $class The class we are checking for.
|
100 |
+
* @param string $queue The queue we want to check 'admin', 'display', 'all'
|
101 |
+
* @return boolean Whether a class is currently queued or not.
|
102 |
+
*/
|
103 |
+
public function class_is_enqueued( $class, $queue = 'display' ) {
|
104 |
+
$classes = $this->get_classes( $queue );
|
105 |
+
if ( ! $this->class_exists( $class ) ) {
|
106 |
+
return false;
|
107 |
+
}
|
108 |
+
|
109 |
+
return $classes[ $class ];
|
110 |
+
}
|
111 |
+
|
112 |
+
/**
|
113 |
+
* Dequeues a class.
|
114 |
+
*
|
115 |
+
* @since TBD
|
116 |
+
*
|
117 |
+
* @param string $class
|
118 |
+
* @param string $queue The queue we want to alter 'admin', 'display', 'all'
|
119 |
+
* @return boolean
|
120 |
+
*/
|
121 |
+
public function dequeue_class( $class, $queue = 'display' ) {
|
122 |
+
if ( ! $this->class_exists( $class ) ) {
|
123 |
+
return false;
|
124 |
+
}
|
125 |
+
|
126 |
+
if ( 'admin' !== $queue ) {
|
127 |
+
$this->classes[ $class ] = false;
|
128 |
+
}
|
129 |
+
|
130 |
+
if ( 'display' !== $queue ) {
|
131 |
+
$this->admin_classes[ $class ] = false;
|
132 |
+
}
|
133 |
+
|
134 |
+
return true;
|
135 |
+
|
136 |
+
}
|
137 |
+
|
138 |
+
/**
|
139 |
+
* Enqueues a class.
|
140 |
+
*
|
141 |
+
* @since TBD
|
142 |
+
*
|
143 |
+
* @param string $class
|
144 |
+
* @param string $queue The queue we want to alter 'admin', 'display', 'all'
|
145 |
+
* @return false
|
146 |
+
*/
|
147 |
+
public function enqueue_class( $class, $queue = 'display' ) {
|
148 |
+
if ( ! $this->class_exists( $class ) ) {
|
149 |
+
return false;
|
150 |
+
}
|
151 |
+
|
152 |
+
if ( 'admin' !== $queue ) {
|
153 |
+
$this->classes[ $class ] = true;
|
154 |
+
}
|
155 |
+
|
156 |
+
if ( 'display' !== $queue ) {
|
157 |
+
$this->admin_classes[ $class ] = true;
|
158 |
+
}
|
159 |
+
|
160 |
+
return true;
|
161 |
+
}
|
162 |
+
|
163 |
+
/**
|
164 |
+
* Add a single class to the queue.
|
165 |
+
*
|
166 |
+
* @since TBD
|
167 |
+
*
|
168 |
+
* @param string $class The class to add.
|
169 |
+
* @param string $queue The queue we want to alter 'admin', 'display', 'all'
|
170 |
+
* @return void
|
171 |
+
*/
|
172 |
+
public function add_class( $class, $queue = 'display' ) {
|
173 |
+
if ( empty( $class ) ) {
|
174 |
+
return;
|
175 |
+
}
|
176 |
+
|
177 |
+
if ( is_array( $class ) ) {
|
178 |
+
$this->add_classes( $class, $queue );
|
179 |
+
} elseif ( $this->should_add_body_class_to_queue( $class, $queue ) ) {
|
180 |
+
|
181 |
+
$class = sanitize_html_class( $class );
|
182 |
+
|
183 |
+
if ( 'admin' !== $queue ) {
|
184 |
+
$this->classes[ $class ] = true ;
|
185 |
+
}
|
186 |
+
|
187 |
+
if ( 'display' !== $queue ) {
|
188 |
+
$this->admin_classes[ $class ] = true ;
|
189 |
+
}
|
190 |
+
|
191 |
+
}
|
192 |
+
}
|
193 |
+
|
194 |
+
/**
|
195 |
+
* Add an array of classes to the queue.
|
196 |
+
*
|
197 |
+
* @since TBD
|
198 |
+
*
|
199 |
+
* @param array<string> $class The classes to add.
|
200 |
+
* @return void
|
201 |
+
*/
|
202 |
+
public function add_classes( array $classes, $queue = 'display' ) {
|
203 |
+
foreach ( $classes as $key => $value ) {
|
204 |
+
// If the classes are passed as class => bool, only add ones set to true.
|
205 |
+
if ( is_bool( $value ) && false !== $value ) {
|
206 |
+
$this->add_class( $key, $queue );
|
207 |
+
} else {
|
208 |
+
$this->add_class( $value, $queue );
|
209 |
+
}
|
210 |
+
}
|
211 |
+
}
|
212 |
+
|
213 |
+
/**
|
214 |
+
* Remove a single class from the queue.
|
215 |
+
*
|
216 |
+
* @since TBD
|
217 |
+
*
|
218 |
+
* @param string $class The class to remove.
|
219 |
+
* @return void
|
220 |
+
*/
|
221 |
+
public function remove_class( $class, $queue = 'display' ) {
|
222 |
+
if ( 'admin' !== $queue ) {
|
223 |
+
$this->classes = array_filter(
|
224 |
+
$this->classes,
|
225 |
+
static function( $k ) use ( $class ) {
|
226 |
+
return $k !== $class;
|
227 |
+
},
|
228 |
+
ARRAY_FILTER_USE_KEY
|
229 |
+
);
|
230 |
+
}
|
231 |
+
|
232 |
+
if ( 'display' !== $queue ) {
|
233 |
+
$this->admin_classes = array_filter(
|
234 |
+
$this->admin_classes,
|
235 |
+
static function( $k ) use ( $class ) {
|
236 |
+
return $k !== $class;
|
237 |
+
},
|
238 |
+
ARRAY_FILTER_USE_KEY
|
239 |
+
);
|
240 |
+
}
|
241 |
+
}
|
242 |
+
|
243 |
+
/**
|
244 |
+
* Remove an array of classes from the queue.
|
245 |
+
*
|
246 |
+
* @since TBD
|
247 |
+
*
|
248 |
+
* @param array<string> $classes The classes to remove.
|
249 |
+
* @return void
|
250 |
+
*/
|
251 |
+
public function remove_classes( array $classes, $queue = 'display' ) {
|
252 |
+
if ( empty( $classes ) || ! is_array( $classes) ) {
|
253 |
+
return;
|
254 |
+
}
|
255 |
+
|
256 |
+
foreach ( $classes as $class ) {
|
257 |
+
$this->remove_class( $class, $queue );
|
258 |
+
}
|
259 |
+
}
|
260 |
+
|
261 |
+
/**
|
262 |
+
* Adds the enqueued classes to the body class array.
|
263 |
+
*
|
264 |
+
* @since TBD
|
265 |
+
*
|
266 |
+
* @param array<string> $classes An array of body class names.
|
267 |
+
* @return void
|
268 |
+
*/
|
269 |
+
public function add_body_classes( $classes = [] ) {
|
270 |
+
// Make sure they should be added.
|
271 |
+
if( ! $this->should_add_body_classes( $this->get_class_names(), (array) $classes, 'display' ) ) {
|
272 |
+
return $classes;
|
273 |
+
}
|
274 |
+
|
275 |
+
$element_classes = new Element_Classes( $this->get_class_names() );
|
276 |
+
|
277 |
+
return array_merge( $classes, $element_classes->get_classes() );
|
278 |
+
}
|
279 |
+
|
280 |
+
/**
|
281 |
+
* Adds the enqueued classes to the body class array.
|
282 |
+
*
|
283 |
+
* @since TBD
|
284 |
+
*
|
285 |
+
* @param array<string> $classes An array of body class names.
|
286 |
+
*
|
287 |
+
* @return array|false Current list of admin body classes if added, otherwise false.
|
288 |
+
*/
|
289 |
+
public function add_admin_body_classes( $classes ) {
|
290 |
+
$classes = explode( ' ', $classes );
|
291 |
+
// Make sure they should be added.
|
292 |
+
if ( ! $this->should_add_body_classes( $this->get_class_names( 'admin' ), (array) $classes, 'admin' ) ) {
|
293 |
+
return false;
|
294 |
+
}
|
295 |
+
|
296 |
+
$element_classes = new Element_Classes( $this->get_class_names( 'admin' ) );
|
297 |
+
|
298 |
+
return implode( ' ', array_merge( $classes, $element_classes->get_classes() ) );
|
299 |
+
|
300 |
+
}
|
301 |
+
|
302 |
+
/**
|
303 |
+
* Should a individual class be added to the queue.
|
304 |
+
*
|
305 |
+
* @since TBD
|
306 |
+
*
|
307 |
+
* @param string $class The body class we wish to add.
|
308 |
+
*
|
309 |
+
* @return boolean Whether to add tribe body classes to the queue.
|
310 |
+
*/
|
311 |
+
private function should_add_body_class_to_queue( $class, $queue = 'display' ) {
|
312 |
+
/**
|
313 |
+
* Filter whether to add the body class to the queue or not.
|
314 |
+
*
|
315 |
+
* @since TBD
|
316 |
+
*
|
317 |
+
* @param boolean $add Whether to add the class to the queue or not.
|
318 |
+
* @param array $class The array of body class names to add.
|
319 |
+
* @param string $queue The queue we want to get 'admin', 'display', 'all'.
|
320 |
+
*/
|
321 |
+
return (bool) apply_filters( 'tribe_body_class_should_add_to_queue', false, $class, $queue );
|
322 |
+
}
|
323 |
+
|
324 |
+
/**
|
325 |
+
* Logic for whether the body classes, as a whole, should be added.
|
326 |
+
*
|
327 |
+
* @since TBD
|
328 |
+
*
|
329 |
+
* @param array $add_classes An array of body class names to add.
|
330 |
+
* @param array $existing_classes An array of existing body class names from WP.
|
331 |
+
* @param string $queue The queue we want to get 'admin', 'display', 'all'.
|
332 |
+
*
|
333 |
+
* @return boolean Whether to add tribe body classes.
|
334 |
+
*/
|
335 |
+
private function should_add_body_classes( array $add_classes, array $existing_classes, $queue ) {
|
336 |
+
/**
|
337 |
+
* Filter whether to add tribe body classes or not.
|
338 |
+
*
|
339 |
+
* @since TBD
|
340 |
+
*
|
341 |
+
* @param boolean $add Whether to add classes or not.
|
342 |
+
* @param array $add_classes The array of body class names to add.
|
343 |
+
* @param array $existing_classes An array of existing body class names from WP.
|
344 |
+
* @param string $queue The queue we want to get 'admin', 'display', 'all'.
|
345 |
+
*
|
346 |
+
*/
|
347 |
+
return (bool)apply_filters( 'tribe_body_classes_should_add', false, $queue, $add_classes, $existing_classes );
|
348 |
+
}
|
349 |
+
}
|
common/src/functions/template-tags/html.php
CHANGED
@@ -64,6 +64,8 @@ function tribe_attributes() {
|
|
64 |
/**
|
65 |
* Get attributes for required fields.
|
66 |
*
|
|
|
|
|
67 |
* @since 4.10.0
|
68 |
*
|
69 |
* @param boolean $required If the field is required.
|
@@ -110,6 +112,8 @@ function tribe_required_label( $required, $echo = true ) {
|
|
110 |
/**
|
111 |
* Get attributes for disabled fields.
|
112 |
*
|
|
|
|
|
113 |
* @since 4.10.0
|
114 |
*
|
115 |
* @param boolean $disabled If the field is disabled.
|
64 |
/**
|
65 |
* Get attributes for required fields.
|
66 |
*
|
67 |
+
* @deprecated TBD
|
68 |
+
*
|
69 |
* @since 4.10.0
|
70 |
*
|
71 |
* @param boolean $required If the field is required.
|
112 |
/**
|
113 |
* Get attributes for disabled fields.
|
114 |
*
|
115 |
+
* @deprecated TBD
|
116 |
+
*
|
117 |
* @since 4.10.0
|
118 |
*
|
119 |
* @param boolean $disabled If the field is disabled.
|
common/src/resources/js/dependency.js
CHANGED
@@ -28,6 +28,7 @@
|
|
28 |
active: '.tribe-active',
|
29 |
dependency: '.tribe-dependency',
|
30 |
dependencyVerified: '.tribe-dependency-verified',
|
|
|
31 |
fields: 'input, select, textarea',
|
32 |
advanced_fields: '.select2-container',
|
33 |
linked: '.tribe-dependent-linked'
|
@@ -180,7 +181,10 @@
|
|
180 |
$dependent.filter( obj.selectors.fields ).prop( 'disabled', false );
|
181 |
}
|
182 |
|
183 |
-
$dependent
|
|
|
|
|
|
|
184 |
|
185 |
if ( 'undefined' !== typeof $().select2 ) {
|
186 |
$dependent.find( '.tribe-dropdown, .tribe-ea-dropdown' ).select2().prop( 'disabled', false );
|
@@ -194,7 +198,10 @@
|
|
194 |
}
|
195 |
|
196 |
if ( ! $dependent.data( 'dependency-dont-disable' ) ) {
|
197 |
-
$dependent
|
|
|
|
|
|
|
198 |
}
|
199 |
|
200 |
if ( 'undefined' !== typeof $().select2 ) {
|
28 |
active: '.tribe-active',
|
29 |
dependency: '.tribe-dependency',
|
30 |
dependencyVerified: '.tribe-dependency-verified',
|
31 |
+
dependencyManualControl: '[data-dependency-manual-control]',
|
32 |
fields: 'input, select, textarea',
|
33 |
advanced_fields: '.select2-container',
|
34 |
linked: '.tribe-dependent-linked'
|
181 |
$dependent.filter( obj.selectors.fields ).prop( 'disabled', false );
|
182 |
}
|
183 |
|
184 |
+
$dependent
|
185 |
+
.find( obj.selectors.fields )
|
186 |
+
.not( obj.selectors.dependencyManualControl )
|
187 |
+
.prop( 'disabled', false );
|
188 |
|
189 |
if ( 'undefined' !== typeof $().select2 ) {
|
190 |
$dependent.find( '.tribe-dropdown, .tribe-ea-dropdown' ).select2().prop( 'disabled', false );
|
198 |
}
|
199 |
|
200 |
if ( ! $dependent.data( 'dependency-dont-disable' ) ) {
|
201 |
+
$dependent
|
202 |
+
.find( obj.selectors.fields )
|
203 |
+
.not( obj.selectors.dependencyManualControl )
|
204 |
+
.prop( 'disabled', true );
|
205 |
}
|
206 |
|
207 |
if ( 'undefined' !== typeof $().select2 ) {
|
common/src/resources/js/dependency.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(e,n,d){"use strict";var
|
1 |
+
!function(e,n,d){"use strict";var t=e(document),i=e(window);d.selectors={dependent:".tribe-dependent",active:".tribe-active",dependency:".tribe-dependency",dependencyVerified:".tribe-dependency-verified",dependencyManualControl:"[data-dependency-manual-control]",fields:"input, select, textarea",advanced_fields:".select2-container",linked:".tribe-dependent-linked"},d.constraintConditions={condition:function(e,d){return n.isArray(d)?-1!==d.indexOf(e):e==d},not_condition:function(e,d){return n.isArray(d)?-1===d.indexOf(e):e!=d},is_not_empty:function(e){return""!=e},is_empty:function(e){return""===e},is_numeric:function(n){return e.isNumeric(n)},is_not_numeric:function(n){return!e.isNumeric(n)},is_checked:function(e,n,d){return!(!d.is(":checkbox")&&!d.is(":radio"))&&d.is(":checked")},is_not_checked:function(e,n,d){return!(!d.is(":checkbox")&&!d.is(":radio"))&&!d.is(":checked")}},d.verify=function(i){var o=e(this),c="#"+o.attr("id"),a=o.val();if(c){if(o.is(":radio")){var s=e("[name='"+o.attr("name")+"']");s.not(d.selectors.linked).on("change",function(){s.trigger("verify.dependency")}).addClass(d.selectors.linked.replace(".",""))}var r=t.find('[data-depends="'+c+'"]').not(".select2-container");0!==r.length&&(r.each(function(t,i){var c=e(i);if(c.is("[data-dependent-parent]")){var s=c.data("dependentParent"),r=c.closest(s);if(0===r.length)return void console.warn("Dependency: `data-dependent-parent` has bad selector",c);c=r.find(i)}var l={condition:!!c.is("[data-condition]")&&c.data("condition"),not_condition:!!c.is("[data-condition-not]")&&c.data("conditionNot"),is_not_empty:c.data("conditionIsNotEmpty")||c.is("[data-condition-is-not-empty]")||c.data("conditionNotEmpty")||c.is("[data-condition-not-empty]"),is_empty:c.data("conditionIsEmpty")||c.is("[data-condition-is-empty]")||c.data("conditionEmpty")||c.is("[data-condition-empty]"),is_numeric:c.data("conditionIsNumeric")||c.is("[data-condition-is-numeric]")||c.data("conditionNumeric")||c.is("[data-condition-numeric]"),is_not_numeric:c.data("conditionIsNotNumeric")||c.is("[data-condition-is-not-numeric]"),is_checked:c.data("conditionIsChecked")||c.is("[data-condition-is-checked]")||c.data("conditionChecked")||c.is("[data-condition-checked]"),is_not_checked:c.data("conditionIsNotChecked")||c.is("[data-condition-is-not-checked]")||c.data("conditionNotChecked")||c.is("[data-condition-not-checked]")},p=d.selectors.active.replace(".",""),u=c.is("[data-dependency-check-disabled]"),f=c.is("[data-dependency-always-visible]"),y=!u&&o.is(":disabled"),h=c.data("condition-relation")||"or";l=n.pick(l,function(e){return!1!==e}),("or"===h?n.reduce(l,function(e,n,t){return e||d.constraintConditions[t](a,n,o)},!1):n.reduce(l,function(e,n,t){return e&&d.constraintConditions[t](a,n,o)},!0))&&!y?(c.is(".tribe-dropdown, .tribe-ea-dropdown")?(c.select2().data("select2").$container.addClass(p),c.select2().data("select2").$container.is(":hidden")&&c.select2().data("select2").$container.show()):(c.addClass(p),c.is(":hidden")&&c.show()),f&&c.filter(d.selectors.fields).prop("disabled",!1),c.find(d.selectors.fields).not(d.selectors.dependencyManualControl).prop("disabled",!1),void 0!==e().select2&&c.find(".tribe-dropdown, .tribe-ea-dropdown").select2().prop("disabled",!1)):(c.removeClass(p),c.is(":visible")&&c.hide(),c.data("dependency-dont-disable")||c.find(d.selectors.fields).not(d.selectors.dependencyManualControl).prop("disabled",!0),void 0!==e().select2&&c.find(".tribe-dropdown, .tribe-ea-dropdown").select2().prop("disabled",!0),c.is(".tribe-dropdown, .tribe-ea-dropdown")&&c.select2().data("select2").$container.removeClass(p),f&&(c.addClass(p).show(),c.filter(d.selectors.fields).prop("disabled",!0),c.is(".tribe-dropdown, .tribe-ea-dropdown")&&c.select2().data("select2").$container.addClass(p).show()));var m=c.find(d.selectors.dependency);m.length>0&&m.trigger("change")}),o.addClass(d.selectors.dependencyVerified.className()))}},d.setup=function(n){var t=e(d.selectors.dependent);t.length&&t.dependency();var i=e(d.selectors.dependency);i.not(d.selectors.dependencyVerified).length&&i.trigger("verify.dependency")},e.fn.dependency=function(){return this.each(function(){var n=e(this),t=n.data("depends"),i=e(t);i.length&&(i.get(0).created||(i.addClass(d.selectors.dependency.replace(".","")).data("dependent",n),i.get(0).created=!0))})},t.on("setup.dependency",d.setup),t.off("change.dependency verify.dependency",d.selectors.dependency),t.on({"verify.dependency":d.verify,"change.dependency":d.verify},d.selectors.dependency),t.ready(d.setup),i.on("load",d.setup)}(jQuery,window.underscore||window._,{});
|
common/src/resources/js/dropdowns.js
CHANGED
@@ -346,7 +346,7 @@ var tribe_dropdowns = window.tribe_dropdowns || {};
|
|
346 |
|
347 |
// For AJAX we reset the data
|
348 |
args.data = { results: [] };
|
349 |
-
|
350 |
// Format for Parents breadcrumbs
|
351 |
args.formatResult = function ( item, container, query ) {
|
352 |
if ( 'undefined' !== typeof item.breadcrumbs ) {
|
346 |
|
347 |
// For AJAX we reset the data
|
348 |
args.data = { results: [] };
|
349 |
+
|
350 |
// Format for Parents breadcrumbs
|
351 |
args.formatResult = function ( item, container, query ) {
|
352 |
if ( 'undefined' !== typeof item.breadcrumbs ) {
|
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 ComposerAutoloaderInit13396481f97d0fb162f44190f7a33ee1::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 ComposerAutoloaderInit5090d2a2f6015371489c12b72860f8ca::getLoader();
|
common/vendor/composer/autoload_classmap.php
CHANGED
@@ -114,6 +114,7 @@ return array(
|
|
114 |
'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.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\\Dialog\\View' => $baseDir . '/src/Tribe/Dialog/View.php',
|
118 |
'Tribe\\Log\\Action_Logger' => $baseDir . '/src/Tribe/Log/Action_Logger.php',
|
119 |
'Tribe\\Log\\Canonical_Formatter' => $baseDir . '/src/Tribe/Log/Canonical_Formatter.php',
|
@@ -124,6 +125,8 @@ return array(
|
|
124 |
'Tribe\\PUE\\Update_Prevention' => $baseDir . '/src/Tribe/PUE/Update_Prevention.php',
|
125 |
'Tribe\\Repository\\Core_Read_Interface' => $baseDir . '/src/Tribe/Repository/Core_Read_Interface.php',
|
126 |
'Tribe\\Repository\\Filter_Validation' => $baseDir . '/src/Tribe/Repository/Filter_Validation.php',
|
|
|
|
|
127 |
'Tribe\\Service_Providers\\Dialog' => $baseDir . '/src/Tribe/Service_Providers/Dialog.php',
|
128 |
'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
|
129 |
'Tribe\\Service_Providers\\Shortcodes' => $baseDir . '/src/Tribe/Service_Providers/Shortcodes.php',
|
@@ -133,7 +136,9 @@ return array(
|
|
133 |
'Tribe\\Shortcode\\Shortcode_Interface' => $baseDir . '/src/Tribe/Shortcode/Shortcode_Interface.php',
|
134 |
'Tribe\\Tooltip\\View' => $baseDir . '/src/Tribe/Tooltip/View.php',
|
135 |
'Tribe\\Traits\\Cache_User' => $baseDir . '/src/Tribe/Traits/Cache_User.php',
|
|
|
136 |
'Tribe\\Traits\\With_Meta_Updates_Handling' => $baseDir . '/src/Tribe/Traits/With_Meta_Updates_Handling.php',
|
|
|
137 |
'Tribe\\Utils\\Collection_Interface' => $baseDir . '/src/Tribe/Utils/Collection_Interface.php',
|
138 |
'Tribe\\Utils\\Collection_Trait' => $baseDir . '/src/Tribe/Utils/Collection_Trait.php',
|
139 |
'Tribe\\Utils\\Date_I18n' => $baseDir . '/src/Tribe/Utils/Date_I18n.php',
|
114 |
'Psr\\Log\\Test\\DummyTest' => $vendorDir . '/psr/log/Psr/Log/Test/DummyTest.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\\DB_Lock' => $baseDir . '/src/Tribe/DB_Lock.php',
|
118 |
'Tribe\\Dialog\\View' => $baseDir . '/src/Tribe/Dialog/View.php',
|
119 |
'Tribe\\Log\\Action_Logger' => $baseDir . '/src/Tribe/Log/Action_Logger.php',
|
120 |
'Tribe\\Log\\Canonical_Formatter' => $baseDir . '/src/Tribe/Log/Canonical_Formatter.php',
|
125 |
'Tribe\\PUE\\Update_Prevention' => $baseDir . '/src/Tribe/PUE/Update_Prevention.php',
|
126 |
'Tribe\\Repository\\Core_Read_Interface' => $baseDir . '/src/Tribe/Repository/Core_Read_Interface.php',
|
127 |
'Tribe\\Repository\\Filter_Validation' => $baseDir . '/src/Tribe/Repository/Filter_Validation.php',
|
128 |
+
'Tribe\\Service_Providers\\Body_Classes' => $baseDir . '/src/Tribe/Service_Providers/Body_Classes.php',
|
129 |
+
'Tribe\\Service_Providers\\Crons' => $baseDir . '/src/Tribe/Service_Providers/Crons.php',
|
130 |
'Tribe\\Service_Providers\\Dialog' => $baseDir . '/src/Tribe/Service_Providers/Dialog.php',
|
131 |
'Tribe\\Service_Providers\\PUE' => $baseDir . '/src/Tribe/Service_Providers/PUE.php',
|
132 |
'Tribe\\Service_Providers\\Shortcodes' => $baseDir . '/src/Tribe/Service_Providers/Shortcodes.php',
|
136 |
'Tribe\\Shortcode\\Shortcode_Interface' => $baseDir . '/src/Tribe/Shortcode/Shortcode_Interface.php',
|
137 |
'Tribe\\Tooltip\\View' => $baseDir . '/src/Tribe/Tooltip/View.php',
|
138 |
'Tribe\\Traits\\Cache_User' => $baseDir . '/src/Tribe/Traits/Cache_User.php',
|
139 |
+
'Tribe\\Traits\\With_DB_Lock' => $baseDir . '/src/Tribe/Traits/With_DB_Lock.php',
|
140 |
'Tribe\\Traits\\With_Meta_Updates_Handling' => $baseDir . '/src/Tribe/Traits/With_Meta_Updates_Handling.php',
|
141 |
+
'Tribe\\Utils\\Body_Classes' => $baseDir . '/src/Tribe/Utils/Body_Classes.php',
|
142 |
'Tribe\\Utils\\Collection_Interface' => $baseDir . '/src/Tribe/Utils/Collection_Interface.php',
|
143 |
'Tribe\\Utils\\Collection_Trait' => $baseDir . '/src/Tribe/Utils/Collection_Trait.php',
|
144 |
'Tribe\\Utils\\Date_I18n' => $baseDir . '/src/Tribe/Utils/Date_I18n.php',
|
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 ComposerAutoloaderInitb7a03a552e906f6215dc4a8307d1a5c9
|
|
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 ComposerAutoloaderInit13396481f97d0fb162f44190f7a33ee1
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit13396481f97d0fb162f44190f7a33ee1', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit13396481f97d0fb162f44190f7a33ee1', '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\ComposerStaticInit13396481f97d0fb162f44190f7a33ee1::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 ComposerAutoloaderInit5cbffd146fef652170a5e2e911478771 {
|
|
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 ComposerAutoloaderInit5090d2a2f6015371489c12b72860f8ca {
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit5090d2a2f6015371489c12b72860f8ca', 'loadClassLoader'), true /*, true */);
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit5090d2a2f6015371489c12b72860f8ca', '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' =>
|
@@ -170,6 +170,7 @@ class ComposerStaticInitb7a03a552e906f6215dc4a8307d1a5c9
|
|
170 |
'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.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\\Dialog\\View' => __DIR__ . '/../..' . '/src/Tribe/Dialog/View.php',
|
174 |
'Tribe\\Log\\Action_Logger' => __DIR__ . '/../..' . '/src/Tribe/Log/Action_Logger.php',
|
175 |
'Tribe\\Log\\Canonical_Formatter' => __DIR__ . '/../..' . '/src/Tribe/Log/Canonical_Formatter.php',
|
@@ -180,6 +181,8 @@ class ComposerStaticInitb7a03a552e906f6215dc4a8307d1a5c9
|
|
180 |
'Tribe\\PUE\\Update_Prevention' => __DIR__ . '/../..' . '/src/Tribe/PUE/Update_Prevention.php',
|
181 |
'Tribe\\Repository\\Core_Read_Interface' => __DIR__ . '/../..' . '/src/Tribe/Repository/Core_Read_Interface.php',
|
182 |
'Tribe\\Repository\\Filter_Validation' => __DIR__ . '/../..' . '/src/Tribe/Repository/Filter_Validation.php',
|
|
|
|
|
183 |
'Tribe\\Service_Providers\\Dialog' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Dialog.php',
|
184 |
'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
|
185 |
'Tribe\\Service_Providers\\Shortcodes' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Shortcodes.php',
|
@@ -189,7 +192,9 @@ class ComposerStaticInitb7a03a552e906f6215dc4a8307d1a5c9
|
|
189 |
'Tribe\\Shortcode\\Shortcode_Interface' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Shortcode_Interface.php',
|
190 |
'Tribe\\Tooltip\\View' => __DIR__ . '/../..' . '/src/Tribe/Tooltip/View.php',
|
191 |
'Tribe\\Traits\\Cache_User' => __DIR__ . '/../..' . '/src/Tribe/Traits/Cache_User.php',
|
|
|
192 |
'Tribe\\Traits\\With_Meta_Updates_Handling' => __DIR__ . '/../..' . '/src/Tribe/Traits/With_Meta_Updates_Handling.php',
|
|
|
193 |
'Tribe\\Utils\\Collection_Interface' => __DIR__ . '/../..' . '/src/Tribe/Utils/Collection_Interface.php',
|
194 |
'Tribe\\Utils\\Collection_Trait' => __DIR__ . '/../..' . '/src/Tribe/Utils/Collection_Trait.php',
|
195 |
'Tribe\\Utils\\Date_I18n' => __DIR__ . '/../..' . '/src/Tribe/Utils/Date_I18n.php',
|
@@ -214,10 +219,10 @@ class ComposerStaticInitb7a03a552e906f6215dc4a8307d1a5c9
|
|
214 |
public static function getInitializer(ClassLoader $loader)
|
215 |
{
|
216 |
return \Closure::bind(function () use ($loader) {
|
217 |
-
$loader->prefixLengthsPsr4 =
|
218 |
-
$loader->prefixDirsPsr4 =
|
219 |
-
$loader->prefixesPsr0 =
|
220 |
-
$loader->classMap =
|
221 |
|
222 |
}, null, ClassLoader::class);
|
223 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit13396481f97d0fb162f44190f7a33ee1
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
170 |
'Psr\\Log\\Test\\DummyTest' => __DIR__ . '/..' . '/psr/log/Psr/Log/Test/DummyTest.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\\DB_Lock' => __DIR__ . '/../..' . '/src/Tribe/DB_Lock.php',
|
174 |
'Tribe\\Dialog\\View' => __DIR__ . '/../..' . '/src/Tribe/Dialog/View.php',
|
175 |
'Tribe\\Log\\Action_Logger' => __DIR__ . '/../..' . '/src/Tribe/Log/Action_Logger.php',
|
176 |
'Tribe\\Log\\Canonical_Formatter' => __DIR__ . '/../..' . '/src/Tribe/Log/Canonical_Formatter.php',
|
181 |
'Tribe\\PUE\\Update_Prevention' => __DIR__ . '/../..' . '/src/Tribe/PUE/Update_Prevention.php',
|
182 |
'Tribe\\Repository\\Core_Read_Interface' => __DIR__ . '/../..' . '/src/Tribe/Repository/Core_Read_Interface.php',
|
183 |
'Tribe\\Repository\\Filter_Validation' => __DIR__ . '/../..' . '/src/Tribe/Repository/Filter_Validation.php',
|
184 |
+
'Tribe\\Service_Providers\\Body_Classes' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Body_Classes.php',
|
185 |
+
'Tribe\\Service_Providers\\Crons' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Crons.php',
|
186 |
'Tribe\\Service_Providers\\Dialog' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Dialog.php',
|
187 |
'Tribe\\Service_Providers\\PUE' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/PUE.php',
|
188 |
'Tribe\\Service_Providers\\Shortcodes' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Shortcodes.php',
|
192 |
'Tribe\\Shortcode\\Shortcode_Interface' => __DIR__ . '/../..' . '/src/Tribe/Shortcode/Shortcode_Interface.php',
|
193 |
'Tribe\\Tooltip\\View' => __DIR__ . '/../..' . '/src/Tribe/Tooltip/View.php',
|
194 |
'Tribe\\Traits\\Cache_User' => __DIR__ . '/../..' . '/src/Tribe/Traits/Cache_User.php',
|
195 |
+
'Tribe\\Traits\\With_DB_Lock' => __DIR__ . '/../..' . '/src/Tribe/Traits/With_DB_Lock.php',
|
196 |
'Tribe\\Traits\\With_Meta_Updates_Handling' => __DIR__ . '/../..' . '/src/Tribe/Traits/With_Meta_Updates_Handling.php',
|
197 |
+
'Tribe\\Utils\\Body_Classes' => __DIR__ . '/../..' . '/src/Tribe/Utils/Body_Classes.php',
|
198 |
'Tribe\\Utils\\Collection_Interface' => __DIR__ . '/../..' . '/src/Tribe/Utils/Collection_Interface.php',
|
199 |
'Tribe\\Utils\\Collection_Trait' => __DIR__ . '/../..' . '/src/Tribe/Utils/Collection_Trait.php',
|
200 |
'Tribe\\Utils\\Date_I18n' => __DIR__ . '/../..' . '/src/Tribe/Utils/Date_I18n.php',
|
219 |
public static function getInitializer(ClassLoader $loader)
|
220 |
{
|
221 |
return \Closure::bind(function () use ($loader) {
|
222 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit13396481f97d0fb162f44190f7a33ee1::$prefixLengthsPsr4;
|
223 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit13396481f97d0fb162f44190f7a33ee1::$prefixDirsPsr4;
|
224 |
+
$loader->prefixesPsr0 = ComposerStaticInit13396481f97d0fb162f44190f7a33ee1::$prefixesPsr0;
|
225 |
+
$loader->classMap = ComposerStaticInit13396481f97d0fb162f44190f7a33ee1::$classMap;
|
226 |
|
227 |
}, null, ClassLoader::class);
|
228 |
}
|
common/vendor/composer/installed.json
CHANGED
@@ -186,23 +186,23 @@
|
|
186 |
},
|
187 |
{
|
188 |
"name": "psr/log",
|
189 |
-
"version": "1.1.
|
190 |
-
"version_normalized": "1.1.
|
191 |
"source": {
|
192 |
"type": "git",
|
193 |
"url": "https://github.com/php-fig/log.git",
|
194 |
-
"reference": "
|
195 |
},
|
196 |
"dist": {
|
197 |
"type": "zip",
|
198 |
-
"url": "https://api.github.com/repos/php-fig/log/zipball/
|
199 |
-
"reference": "
|
200 |
"shasum": ""
|
201 |
},
|
202 |
"require": {
|
203 |
"php": ">=5.3.0"
|
204 |
},
|
205 |
-
"time": "
|
206 |
"type": "library",
|
207 |
"extra": {
|
208 |
"branch-alias": {
|
@@ -222,7 +222,7 @@
|
|
222 |
"authors": [
|
223 |
{
|
224 |
"name": "PHP-FIG",
|
225 |
-
"homepage": "
|
226 |
}
|
227 |
],
|
228 |
"description": "Common interface for logging libraries",
|
186 |
},
|
187 |
{
|
188 |
"name": "psr/log",
|
189 |
+
"version": "1.1.4",
|
190 |
+
"version_normalized": "1.1.4.0",
|
191 |
"source": {
|
192 |
"type": "git",
|
193 |
"url": "https://github.com/php-fig/log.git",
|
194 |
+
"reference": "d49695b909c3b7628b6289db5479a1c204601f11"
|
195 |
},
|
196 |
"dist": {
|
197 |
"type": "zip",
|
198 |
+
"url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
|
199 |
+
"reference": "d49695b909c3b7628b6289db5479a1c204601f11",
|
200 |
"shasum": ""
|
201 |
},
|
202 |
"require": {
|
203 |
"php": ">=5.3.0"
|
204 |
},
|
205 |
+
"time": "2021-05-03T11:20:27+00:00",
|
206 |
"type": "library",
|
207 |
"extra": {
|
208 |
"branch-alias": {
|
222 |
"authors": [
|
223 |
{
|
224 |
"name": "PHP-FIG",
|
225 |
+
"homepage": "https://www.php-fig.org/"
|
226 |
}
|
227 |
],
|
228 |
"description": "Common interface for logging libraries",
|
common/vendor/faction23/a11y-dialog/a11y-dialog.min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
!function(t){"use strict";function e(t){if(this.options=h({appendTarget:"",bodyLock:!0,closeButtonAriaLabel:"Close this dialog window",closeButtonClasses:"a11y-dialog__close-button",contentClasses:"a11y-dialog__content",effect:"none",effectSpeed:300,effectEasing:"ease-in-out",overlayClasses:"a11y-dialog__overlay",overlayClickCloses:!0,trigger:null,wrapperClasses:"a11y-dialog"},t),this._rendered=!1,this._show=this.show.bind(this),this._hide=this.hide.bind(this),this._maintainFocus=this._maintainFocus.bind(this),this._bindKeypress=this._bindKeypress.bind(this),this.trigger=a(this.options.trigger)?o(this.options.trigger,!
|
1 |
+
!function(t){"use strict";function e(t){if(this.options=h({appendTarget:"",bodyLock:!0,closeButtonAriaLabel:"Close this dialog window",closeButtonClasses:"a11y-dialog__close-button",contentClasses:"a11y-dialog__content",effect:"none",effectSpeed:300,effectEasing:"ease-in-out",overlayClasses:"a11y-dialog__overlay",overlayClickCloses:!0,trigger:null,wrapperClasses:"a11y-dialog"},t),this._rendered=!1,this._show=this.show.bind(this),this._hide=this.hide.bind(this),this._maintainFocus=this._maintainFocus.bind(this),this._bindKeypress=this._bindKeypress.bind(this),this.trigger=a(this.options.trigger)?o(this.options.trigger,!0,document,!0):this.options.trigger,this.node=null,!this.trigger)return void console.warn("Lookup for a11y target node failed.");this._listeners={},this.create()}function i(t){var e=[],i=t.length;for(i;i--;e.unshift(t[i]));return e}function o(t,e,o,n){o||(o=document);var s=n?t:'[data-js="'+t+'"]',r=o.querySelectorAll(s);return e&&(r=i(r)),r}function n(t,e){return i((e||document).querySelectorAll(t))}function s(t){var e=d(t);e.length&&e[0].focus()}function r(t,e){e.parentNode.insertBefore(t,e.nextElementSibling)}function d(t){return n(p.join(","),t).filter(function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)})}function a(t){return"[object String]"===Object.prototype.toString.call(t)}function h(t,e){return Object.keys(e).forEach(function(i){t[i]=e[i]}),t}function c(t,e){var i=d(t),o=i.indexOf(document.activeElement);e.shiftKey&&0===o?(i[i.length-1].focus(),e.preventDefault()):e.shiftKey||o!==i.length-1||(i[0].focus(),e.preventDefault())}function l(){g=b.scrollTop,document.body.classList.add("a11y-dialog__body-locked"),document.body.style.position="fixed",document.body.style.width="100%",document.body.style.marginTop="-"+g+"px"}function u(){document.body.style.marginTop="",document.body.style.position="",document.body.style.width="",b.scrollTop=g,document.body.classList.remove("a11y-dialog__body-locked")}var f,p=["a[href]","area[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'],y=function(){var t=/(android)/i.test(navigator.userAgent),e=!!window.chrome,i="undefined"!=typeof InstallTrigger,o=document.documentMode,n=!o&&!!window.StyleMedia,s=!!navigator.userAgent.match(/(iPod|iPhone|iPad)/i),r=!!navigator.userAgent.match(/(iPod|iPhone)/i),d=!!window.opera||navigator.userAgent.indexOf(" OPR/")>=0;return{android:t,chrome:e,edge:n,firefox:i,ie:o,ios:s,iosMobile:r,opera:d,safari:Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0||!e&&!d&&"undefined"!==window.webkitAudioContext,os:navigator.platform}}(),g=0,b=y.ie||y.firefox||y.chrome&&!y.edge?document.documentElement:document.body;e.prototype.create=function(){return this.shown=!1,this.trigger.forEach(function(t){t.addEventListener("click",this._show)}.bind(this)),this._fire("create"),this},e.prototype.render=function(t){var e=o(this.trigger[0].dataset.content)[0];if(!e)return this;var i=document.createElement("div");i.setAttribute("aria-hidden","true"),i.classList.add(this.options.wrapperClasses),i.innerHTML='<div data-js="a11y-overlay" tabindex="-1" class="'+this.options.overlayClasses+'"></div>\n <div class="'+this.options.contentClasses+'" role="dialog">\n <div role="document">\n <button data-js="a11y-close-button" class="'+this.options.closeButtonClasses+'" type="button" aria-label="'+this.options.closeButtonAriaLabel+'" ></button>\n '+e.innerHTML+" </div>\n </div>";var n=this.trigger;return this.options.appendTarget.length&&(n=document.querySelectorAll(this.options.appendTarget)[0]||this.trigger),r(i,n),this.node=i,this.overlay=o("a11y-overlay",!1,this.node)[0],this.closeButton=o("a11y-close-button",!1,this.node)[0],this.options.overlayClickCloses&&this.overlay.addEventListener("click",this._hide),this.closeButton.addEventListener("click",this._hide),this._rendered=!0,this._fire("render",t),this},e.prototype.show=function(t){return this.shown?this:(this._rendered||this.render(t),this._rendered?(this.shown=!0,this._applyOpenEffect(),this.node.setAttribute("aria-hidden","false"),this.options.bodyLock&&l(),f=document.activeElement,s(this.node),document.body.addEventListener("focus",this._maintainFocus,!0),document.addEventListener("keydown",this._bindKeypress),this._fire("show",t),this):this)},e.prototype.hide=function(t){return this.shown?(this.shown=!1,"none"===this.options.effect&&this.node.setAttribute("aria-hidden","true"),this._applyCloseEffect(),this.options.bodyLock&&u(),f&&f.focus(),document.body.removeEventListener("focus",this._maintainFocus,!0),document.removeEventListener("keydown",this._bindKeypress),this._fire("hide",t),this):this},e.prototype.destroy=function(){return this.hide(),this.trigger.forEach(function(t){t.removeEventListener("click",this._show)}.bind(this)),this._rendered&&(this.options.overlayClickCloses&&this.overlay.removeEventListener("click",this._hide),this.closeButton.removeEventListener("click",this._hide)),this._fire("destroy"),this._listeners={},this},e.prototype.on=function(t,e){return void 0===this._listeners[t]&&(this._listeners[t]=[]),this._listeners[t].push(e),this},e.prototype.off=function(t,e){var i=this._listeners[t].indexOf(e);return i>-1&&this._listeners[t].splice(i,1),this},e.prototype._fire=function(t,e){(this._listeners[t]||[]).forEach(function(t){t(this.node,e)}.bind(this))},e.prototype._bindKeypress=function(t){this.shown&&27===t.which&&(t.preventDefault(),this.hide()),this.shown&&9===t.which&&c(this.node,t)},e.prototype._maintainFocus=function(t){this.shown&&!this.node.contains(t.target)&&s(this.node)},e.prototype._applyOpenEffect=function(){var t=this;setTimeout(function(){t.node.classList.add("a11y-dialog--open")},50),"fade"===this.options.effect&&(this.node.style.opacity="0",this.node.style.transition="opacity "+this.options.effectSpeed+"ms "+this.options.effectEasing,setTimeout(function(){t.node.style.opacity="1"},50))},e.prototype._applyCloseEffect=function(){var t=this;this.node.classList.remove("a11y-dialog--open"),"fade"===this.options.effect?(this.node.style.opacity="0",setTimeout(function(){t.node.style.transition="",t.node.setAttribute("aria-hidden","true")},this.options.effectSpeed)):"css"===this.options.effect&&setTimeout(function(){t.node.setAttribute("aria-hidden","true")},this.options.effectSpeed)},"undefined"!=typeof module&&void 0!==module.exports?module.exports=e:"function"==typeof define&&define.amd?define("A11yDialog",[],function(){return e}):"object"==typeof t&&(t.A11yDialog=e)}("undefined"!=typeof global?global:window);
|
common/vendor/psr/log/Psr/Log/AbstractLogger.php
CHANGED
@@ -14,8 +14,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
14 |
/**
|
15 |
* System is unusable.
|
16 |
*
|
17 |
-
* @param string
|
18 |
-
* @param
|
19 |
*
|
20 |
* @return void
|
21 |
*/
|
@@ -30,8 +30,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
30 |
* Example: Entire website down, database unavailable, etc. This should
|
31 |
* trigger the SMS alerts and wake you up.
|
32 |
*
|
33 |
-
* @param string
|
34 |
-
* @param
|
35 |
*
|
36 |
* @return void
|
37 |
*/
|
@@ -45,8 +45,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
45 |
*
|
46 |
* Example: Application component unavailable, unexpected exception.
|
47 |
*
|
48 |
-
* @param string
|
49 |
-
* @param
|
50 |
*
|
51 |
* @return void
|
52 |
*/
|
@@ -59,8 +59,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
59 |
* Runtime errors that do not require immediate action but should typically
|
60 |
* be logged and monitored.
|
61 |
*
|
62 |
-
* @param string
|
63 |
-
* @param
|
64 |
*
|
65 |
* @return void
|
66 |
*/
|
@@ -75,8 +75,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
75 |
* Example: Use of deprecated APIs, poor use of an API, undesirable things
|
76 |
* that are not necessarily wrong.
|
77 |
*
|
78 |
-
* @param string
|
79 |
-
* @param
|
80 |
*
|
81 |
* @return void
|
82 |
*/
|
@@ -88,8 +88,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
88 |
/**
|
89 |
* Normal but significant events.
|
90 |
*
|
91 |
-
* @param string
|
92 |
-
* @param
|
93 |
*
|
94 |
* @return void
|
95 |
*/
|
@@ -103,8 +103,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
103 |
*
|
104 |
* Example: User logs in, SQL logs.
|
105 |
*
|
106 |
-
* @param string
|
107 |
-
* @param
|
108 |
*
|
109 |
* @return void
|
110 |
*/
|
@@ -116,8 +116,8 @@ abstract class AbstractLogger implements LoggerInterface
|
|
116 |
/**
|
117 |
* Detailed debug information.
|
118 |
*
|
119 |
-
* @param string
|
120 |
-
* @param
|
121 |
*
|
122 |
* @return void
|
123 |
*/
|
14 |
/**
|
15 |
* System is unusable.
|
16 |
*
|
17 |
+
* @param string $message
|
18 |
+
* @param mixed[] $context
|
19 |
*
|
20 |
* @return void
|
21 |
*/
|
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 mixed[] $context
|
35 |
*
|
36 |
* @return void
|
37 |
*/
|
45 |
*
|
46 |
* Example: Application component unavailable, unexpected exception.
|
47 |
*
|
48 |
+
* @param string $message
|
49 |
+
* @param mixed[] $context
|
50 |
*
|
51 |
* @return void
|
52 |
*/
|
59 |
* Runtime errors that do not require immediate action but should typically
|
60 |
* be logged and monitored.
|
61 |
*
|
62 |
+
* @param string $message
|
63 |
+
* @param mixed[] $context
|
64 |
*
|
65 |
* @return void
|
66 |
*/
|
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 mixed[] $context
|
80 |
*
|
81 |
* @return void
|
82 |
*/
|
88 |
/**
|
89 |
* Normal but significant events.
|
90 |
*
|
91 |
+
* @param string $message
|
92 |
+
* @param mixed[] $context
|
93 |
*
|
94 |
* @return void
|
95 |
*/
|
103 |
*
|
104 |
* Example: User logs in, SQL logs.
|
105 |
*
|
106 |
+
* @param string $message
|
107 |
+
* @param mixed[] $context
|
108 |
*
|
109 |
* @return void
|
110 |
*/
|
116 |
/**
|
117 |
* Detailed debug information.
|
118 |
*
|
119 |
+
* @param string $message
|
120 |
+
* @param mixed[] $context
|
121 |
*
|
122 |
* @return void
|
123 |
*/
|
common/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
CHANGED
@@ -10,7 +10,7 @@ trait LoggerAwareTrait
|
|
10 |
/**
|
11 |
* The logger instance.
|
12 |
*
|
13 |
-
* @var LoggerInterface
|
14 |
*/
|
15 |
protected $logger;
|
16 |
|
10 |
/**
|
11 |
* The logger instance.
|
12 |
*
|
13 |
+
* @var LoggerInterface|null
|
14 |
*/
|
15 |
protected $logger;
|
16 |
|
data_collection_disclosure.html
DELETED
@@ -1,32 +0,0 @@
|
|
1 |
-
<!DOCTYPE html>
|
2 |
-
<html>
|
3 |
-
<head>
|
4 |
-
<meta charset="utf-8">
|
5 |
-
<title>Modern Tribe's Data Collection Disclosure Statement | The Events Calendar + Event Aggregator</title>
|
6 |
-
<meta name="description" content="Modern Tribe's Data Collection Statement for The Events Calendar Plugin with Event Aggregator Import Service">
|
7 |
-
<meta name="author" content="Modern Tribe, Inc.">
|
8 |
-
<meta name="copyright" content="Modern Tribe, Inc.">
|
9 |
-
<style>
|
10 |
-
html{background-color:#FFFFFF;color:#383838;}
|
11 |
-
::-moz-selection{background:#444444;color:#DDDDDD;}
|
12 |
-
::selection{background:#444444;color:#DDDDDD;}
|
13 |
-
body{margin: 0 auto;padding: 0;max-width: 650px;font-family:Helvetica,Arial,sans-serif}
|
14 |
-
body>*{padding-left: 20px;padding-right: 20px;}
|
15 |
-
a{color:#0e9fd6;}
|
16 |
-
h2,h3,footer {color: #fff;background-color: #0e9fd6;margin: 0;padding: 20px;}
|
17 |
-
ul,ol{margin-left: 20px;}
|
18 |
-
footer a{color:#fff;}
|
19 |
-
</style>
|
20 |
-
</head>
|
21 |
-
<body>
|
22 |
-
<h2>The Events Calendar (and Event Aggregator) | Data Collection Disclosure Statement</h2>
|
23 |
-
<p>Modern Tribe, Inc (<a href="https://m.tri.be/1a3x">theeventscalendar.com</a>) goes to great length to protect the data we collect and store from your customer account as well as through your usage of our plugin(s) and services. You may review our <a href="https://m.tri.be/1a3y">Privacy Policy</a> at any time.</p>
|
24 |
-
<p>Upon activating a paid license for Event Aggregator (contained within The Events Calendar plugin), the following information may be collected: Install domain, License key, WP Version, PHP Version, MySQL Version, Theme info, Site language, User language, Site public status, WP_DEBUG status, Site Timezone, Multisite status, Network activated status, Number of all active sites in multisite</p>
|
25 |
-
<p>While importing events through our Event Aggregator server, we store the data fetched from origin sources, which may include organizer and venue details accessible to you through API keys only, via caching. After a short period of time (est. 12 hours - 7 days), data is automatically deleted on our servers as we've completed processing data to your website.</p>
|
26 |
-
<p>If you reach out to our Support Team, in certain situations, we may request that you to send us your "System Info" in order to assist. Upon doing so, your System Info, your name, and email address is collected during this process.</p>
|
27 |
-
<p>In addition, we use third party services within certain plugins, such as The Events Calendar, Events Calendar PRO, and Event Tickets. These services include Google Maps as well as PayPal (when you setup and connect these within our plugins). It’s important to note that your use of these third party services fall under their own privacy and data collection policies, which are separate from our own.</p>
|
28 |
-
<p><b>Please note, we do not collect nor do we store any data on your own visitors and end-users.</b> The data collected through your own use of our plugin is entirely contained within your own WordPress installation and database.</p>
|
29 |
-
<p>For your benefit—and to save you some time—we’ve crafted a <a href="site_owner_data_collection_statement.html">short and simple disclosure</a> you can use within your own Privacy Policy. This disclosure addresses the data collection you are conducting on your end-users through the use of our plugin. Please review this separate data collection statement at your convenience and if you (and/or your Attorney) feels it’s worth adding a provision to your own policy statement, you are welcome to use it as an addition to your disclosure statement(s). We cannot however, provide any support or guidance with regards to your own policy statements and data collection methods.</p>
|
30 |
-
<footer>©2018 <a href="https://m.tri.be/1a3x">Modern Tribe Inc.</a></footer>
|
31 |
-
</body>
|
32 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lang/the-events-calendar-de_DE.mo
CHANGED
Binary file
|
lang/the-events-calendar.pot
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the same license as the The Events Calendar package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: The Events Calendar 5.1.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
|
7 |
"calendar\n"
|
8 |
-
"POT-Creation-Date: 2020-06-
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"PO-Revision-Date: 2020-06-
|
13 |
"Last-Translator: \n"
|
14 |
"Language-Team: \n"
|
15 |
|
@@ -47,7 +47,7 @@ msgstr ""
|
|
47 |
msgid "%s"
|
48 |
msgstr ""
|
49 |
|
50 |
-
#: src/Tribe/Admin/Bar/Default_Configurator.php:45 src/Tribe/Main.php:
|
51 |
#: src/admin-views/tribe-options-upgrade.php:20
|
52 |
msgid "View Calendar"
|
53 |
msgstr ""
|
@@ -57,8 +57,8 @@ msgid "Add %s"
|
|
57 |
msgstr ""
|
58 |
|
59 |
#: src/Tribe/Admin/Bar/Default_Configurator.php:62
|
60 |
-
#: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:211 src/Tribe/Main.php:
|
61 |
-
#: src/Tribe/Main.php:
|
62 |
#: src/Tribe/Venue.php:112
|
63 |
msgid "Edit %s"
|
64 |
msgstr ""
|
@@ -69,7 +69,7 @@ msgstr ""
|
|
69 |
msgid "Import"
|
70 |
msgstr ""
|
71 |
|
72 |
-
#: src/Tribe/Admin/Bar/Default_Configurator.php:89 src/Tribe/Main.php:
|
73 |
msgid "Settings"
|
74 |
msgstr ""
|
75 |
|
@@ -77,43 +77,56 @@ msgstr ""
|
|
77 |
msgid "Help"
|
78 |
msgstr ""
|
79 |
|
80 |
-
#: src/Tribe/Admin/Notice/Marketing.php:
|
81 |
msgctxt "2018 user survey"
|
82 |
msgid "take the survey now"
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: src/Tribe/Admin/Notice/Marketing.php:
|
86 |
msgctxt "2018 user survey"
|
87 |
msgid ""
|
88 |
"<strong>The Events Calendar Annual Survey:</strong> share your feedback with "
|
89 |
"our team—%1$s!"
|
90 |
msgstr ""
|
91 |
|
92 |
-
#: src/Tribe/Admin/Notice/Marketing.php:
|
93 |
msgid "<strong>The Events Calendar & Gutenberg</strong>"
|
94 |
msgstr ""
|
95 |
|
96 |
-
#: src/Tribe/Admin/Notice/Marketing.php:
|
97 |
msgid ""
|
98 |
"WordPress 5.0 is coming soon, and with it, the arrival of the new block "
|
99 |
"editor interface."
|
100 |
msgstr ""
|
101 |
|
102 |
-
#: src/Tribe/Admin/Notice/Marketing.php:
|
103 |
msgid ""
|
104 |
"Get up to speed with our comprehensive Guide to Gutenberg ebook, then see "
|
105 |
"how events and tickets will behave in the block editor by installing our "
|
106 |
"free Events Gutenberg extension."
|
107 |
msgstr ""
|
108 |
|
109 |
-
#: src/Tribe/Admin/Notice/Marketing.php:
|
110 |
msgid "Download the eBook"
|
111 |
msgstr ""
|
112 |
|
113 |
-
#: src/Tribe/Admin/Notice/Marketing.php:
|
114 |
msgid "Try Events Gutenberg"
|
115 |
msgstr ""
|
116 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
117 |
#: src/Tribe/Admin/Notice/Timezones.php:149
|
118 |
#: src/Tribe/Editor/Compatibility.php:131 src/Tribe/Google/Maps_API_Key.php:77
|
119 |
msgid "Read more"
|
@@ -154,7 +167,7 @@ msgid ""
|
|
154 |
"refresh and try again."
|
155 |
msgstr ""
|
156 |
|
157 |
-
#: src/Tribe/Admin_List.php:246 src/Tribe/Main.php:
|
158 |
msgid "%s Categories"
|
159 |
msgstr ""
|
160 |
|
@@ -176,7 +189,7 @@ msgid "All %s"
|
|
176 |
msgstr ""
|
177 |
|
178 |
#: src/Tribe/Aggregator/API/Origins.php:36
|
179 |
-
#: src/Tribe/Aggregator/Admin_Bar.php:97 src/Tribe/Aggregator/Service.php:
|
180 |
msgid "CSV File"
|
181 |
msgstr ""
|
182 |
|
@@ -273,7 +286,7 @@ msgid ""
|
|
273 |
"The image associated with your event could not be attached to the event."
|
274 |
msgstr ""
|
275 |
|
276 |
-
#: src/Tribe/Aggregator/Errors.php:46 src/Tribe/Aggregator/Service.php:
|
277 |
msgid ""
|
278 |
"The daily limit of %d import requests to the Event Aggregator service has "
|
279 |
"been reached. Please try again later."
|
@@ -545,15 +558,15 @@ msgstr ""
|
|
545 |
msgid "Events Import"
|
546 |
msgstr ""
|
547 |
|
548 |
-
#: src/Tribe/Aggregator/Page.php:
|
549 |
msgid "Facebook Events"
|
550 |
msgstr ""
|
551 |
|
552 |
-
#: src/Tribe/Aggregator/Page.php:
|
553 |
msgid "iCal Importer"
|
554 |
msgstr ""
|
555 |
|
556 |
-
#: src/Tribe/Aggregator/Page.php:
|
557 |
msgid ""
|
558 |
"It looks like you are using our legacy plugin, %1$s, along with our new "
|
559 |
"Event Aggregator service. Event Aggregator includes all the features of the "
|
@@ -567,7 +580,7 @@ msgid_plural ""
|
|
567 |
msgstr[0] ""
|
568 |
msgstr[1] ""
|
569 |
|
570 |
-
#: src/Tribe/Aggregator/Page.php:
|
571 |
msgid "Manage Active Plugins"
|
572 |
msgstr ""
|
573 |
|
@@ -649,17 +662,17 @@ msgid ""
|
|
649 |
"the import halting."
|
650 |
msgstr ""
|
651 |
|
652 |
-
#: src/Tribe/Aggregator/Record/CSV.php:
|
653 |
#: src/admin-views/aggregator/settings.php:606
|
654 |
#: src/deprecated/Tribe__Events__Importer__Admin_Page.php:239
|
655 |
msgid "CSV"
|
656 |
msgstr ""
|
657 |
|
658 |
-
#: src/Tribe/Aggregator/Record/CSV.php:
|
659 |
msgid "Unknown Column "
|
660 |
msgstr ""
|
661 |
|
662 |
-
#: src/Tribe/Aggregator/Record/CSV.php:
|
663 |
#: src/deprecated/Tribe__Events__Importer__Admin_Page.php:358
|
664 |
msgid "The following fields are required for a successful import:"
|
665 |
msgstr ""
|
@@ -1029,27 +1042,27 @@ msgid ""
|
|
1029 |
"be understood. Please try again."
|
1030 |
msgstr ""
|
1031 |
|
1032 |
-
#: src/Tribe/Aggregator/Service.php:
|
1033 |
msgid "the UID part of the iCalendar Specification"
|
1034 |
msgstr ""
|
1035 |
|
1036 |
-
#: src/Tribe/Aggregator/Service.php:
|
1037 |
msgid "read more about Facebook restrictions in our knowledgebase"
|
1038 |
msgstr ""
|
1039 |
|
1040 |
-
#: src/Tribe/Aggregator/Service.php:
|
1041 |
msgid "https://m.tri.be/1afb"
|
1042 |
msgstr ""
|
1043 |
|
1044 |
-
#: src/Tribe/Aggregator/Service.php:
|
1045 |
msgid "Sorry, but something went wrong. Please try again."
|
1046 |
msgstr ""
|
1047 |
|
1048 |
-
#: src/Tribe/Aggregator/Service.php:
|
1049 |
msgid "Events could not be imported. The import parameters were invalid."
|
1050 |
msgstr ""
|
1051 |
|
1052 |
-
#: src/Tribe/Aggregator/Service.php:
|
1053 |
msgid ""
|
1054 |
"Events cannot be imported because Eventbrite has returned an error. This "
|
1055 |
"could mean that the event ID does not exist, the event or source is marked "
|
@@ -1059,98 +1072,98 @@ msgid ""
|
|
1059 |
"in our knowledgebase</a>."
|
1060 |
msgstr ""
|
1061 |
|
1062 |
-
#: src/Tribe/Aggregator/Service.php:
|
1063 |
msgid "No upcoming Eventbrite events found."
|
1064 |
msgstr ""
|
1065 |
|
1066 |
-
#: src/Tribe/Aggregator/Service.php:
|
1067 |
msgid "The URL provided could not be reached."
|
1068 |
msgstr ""
|
1069 |
|
1070 |
-
#: src/Tribe/Aggregator/Service.php:
|
1071 |
msgid "The URL provided failed to load."
|
1072 |
msgstr ""
|
1073 |
|
1074 |
-
#: src/Tribe/Aggregator/Service.php:
|
1075 |
msgid "The image associated with your event could not be imported."
|
1076 |
msgstr ""
|
1077 |
|
1078 |
-
#: src/Tribe/Aggregator/Service.php:
|
1079 |
msgid ""
|
1080 |
"The image associated with your event is not accessible with your API key."
|
1081 |
msgstr ""
|
1082 |
|
1083 |
-
#: src/Tribe/Aggregator/Service.php:
|
1084 |
msgid ""
|
1085 |
"The import failed for an unknown reason. Please try again. If the problem "
|
1086 |
"persists, please contact support."
|
1087 |
msgstr ""
|
1088 |
|
1089 |
-
#: src/Tribe/Aggregator/Service.php:
|
1090 |
msgid ""
|
1091 |
"Events could not be imported. The URL provided did not have events in the "
|
1092 |
"proper format."
|
1093 |
msgstr ""
|
1094 |
|
1095 |
-
#: src/Tribe/Aggregator/Service.php:
|
1096 |
msgid ""
|
1097 |
"The file provided could not be opened. Please confirm that it is a properly "
|
1098 |
"formatted .ics file."
|
1099 |
msgstr ""
|
1100 |
|
1101 |
-
#: src/Tribe/Aggregator/Service.php:
|
1102 |
msgid "Your Meetup API key is invalid."
|
1103 |
msgstr ""
|
1104 |
|
1105 |
-
#: src/Tribe/Aggregator/Service.php:
|
1106 |
msgid ""
|
1107 |
"Event Aggregator cannot reach Meetup.com because you exceeded the request "
|
1108 |
"limit for your Meetup API key."
|
1109 |
msgstr ""
|
1110 |
|
1111 |
-
#: src/Tribe/Aggregator/Service.php:
|
1112 |
msgid "The import is in progress."
|
1113 |
msgstr ""
|
1114 |
|
1115 |
-
#: src/Tribe/Aggregator/Service.php:
|
1116 |
msgid "The import will be starting soon."
|
1117 |
msgstr ""
|
1118 |
|
1119 |
-
#: src/Tribe/Aggregator/Service.php:
|
1120 |
msgid "Success"
|
1121 |
msgstr ""
|
1122 |
|
1123 |
-
#: src/Tribe/Aggregator/Service.php:
|
1124 |
msgid "Import created"
|
1125 |
msgstr ""
|
1126 |
|
1127 |
-
#: src/Tribe/Aggregator/Service.php:
|
1128 |
msgid "Successfully fetched Eventbrite Token"
|
1129 |
msgstr ""
|
1130 |
|
1131 |
-
#: src/Tribe/Aggregator/Service.php:
|
1132 |
msgid "Successfully loaded import origins"
|
1133 |
msgstr ""
|
1134 |
|
1135 |
-
#: src/Tribe/Aggregator/Service.php:
|
1136 |
msgid "Import is complete"
|
1137 |
msgstr ""
|
1138 |
|
1139 |
-
#: src/Tribe/Aggregator/Service.php:
|
1140 |
msgid "Import queued"
|
1141 |
msgstr ""
|
1142 |
|
1143 |
-
#: src/Tribe/Aggregator/Service.php:
|
1144 |
msgid "Events could not be imported. The URL provided could not be reached."
|
1145 |
msgstr ""
|
1146 |
|
1147 |
-
#: src/Tribe/Aggregator/Service.php:
|
1148 |
msgid ""
|
1149 |
"The requested source does not have any upcoming and published events "
|
1150 |
"matching the search criteria."
|
1151 |
msgstr ""
|
1152 |
|
1153 |
-
#: src/Tribe/Aggregator/Service.php:
|
1154 |
msgctxt ""
|
1155 |
"The placeholder is for the localized version of the iCal UID specification "
|
1156 |
"link"
|
@@ -1162,7 +1175,7 @@ msgid ""
|
|
1162 |
"help them more quickly resolve their feed's UID issue."
|
1163 |
msgstr ""
|
1164 |
|
1165 |
-
#: src/Tribe/Aggregator/Service.php:
|
1166 |
msgctxt ""
|
1167 |
"The placeholder is for the localized version of the iCal UID specification "
|
1168 |
"link"
|
@@ -1174,33 +1187,33 @@ msgid ""
|
|
1174 |
"help them more quickly resolve their feed's UID issue."
|
1175 |
msgstr ""
|
1176 |
|
1177 |
-
#: src/Tribe/Aggregator/Service.php:
|
1178 |
msgid "Successfully fetched Facebook Token"
|
1179 |
msgstr ""
|
1180 |
|
1181 |
-
#: src/Tribe/Aggregator/Service.php:
|
1182 |
msgid "Successfully connected to Eventbrite"
|
1183 |
msgstr ""
|
1184 |
|
1185 |
-
#: src/Tribe/Aggregator/Service.php:
|
1186 |
msgid "Successfully disconnected Eventbrite"
|
1187 |
msgstr ""
|
1188 |
|
1189 |
-
#: src/Tribe/Aggregator/Service.php:
|
1190 |
msgid "Successfully marked event for import from Eventbrite"
|
1191 |
msgstr ""
|
1192 |
|
1193 |
-
#: src/Tribe/Aggregator/Service.php:
|
1194 |
msgid "Successfully synced event to Eventbrite"
|
1195 |
msgstr ""
|
1196 |
|
1197 |
-
#: src/Tribe/Aggregator/Service.php:
|
1198 |
msgid ""
|
1199 |
"The import being fetched is not queued up for importing. Please try the "
|
1200 |
"import again."
|
1201 |
msgstr ""
|
1202 |
|
1203 |
-
#: src/Tribe/Aggregator/Service.php:
|
1204 |
msgctxt "Placeholder used for the facebook restriction link"
|
1205 |
msgid ""
|
1206 |
"Events cannot be imported because Facebook has returned an error. This could "
|
@@ -1209,76 +1222,76 @@ msgid ""
|
|
1209 |
"You can %1$s."
|
1210 |
msgstr ""
|
1211 |
|
1212 |
-
#: src/Tribe/Aggregator/Service.php:
|
1213 |
msgid "Events cannot be imported because we received an error from Facebook: "
|
1214 |
msgstr ""
|
1215 |
|
1216 |
-
#: src/Tribe/Aggregator/Service.php:
|
1217 |
msgid ""
|
1218 |
"Events cannot be imported because we received an error from Eventbrite: "
|
1219 |
msgstr ""
|
1220 |
|
1221 |
-
#: src/Tribe/Aggregator/Service.php:
|
1222 |
msgid ""
|
1223 |
"Event cannot be synced to Eventbrite because we received an error from "
|
1224 |
"Eventbrite."
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: src/Tribe/Aggregator/Service.php:
|
1228 |
msgid "Eventbrite token is not valid."
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: src/Tribe/Aggregator/Service.php:
|
1232 |
msgid "Eventbrite parsed object is empty."
|
1233 |
msgstr ""
|
1234 |
|
1235 |
-
#: src/Tribe/Aggregator/Service.php:
|
1236 |
msgid "Eventbrite parsed object type is empty."
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: src/Tribe/Aggregator/Service.php:
|
1240 |
msgid "Eventbrite parsed object ID is empty."
|
1241 |
msgstr ""
|
1242 |
|
1243 |
-
#: src/Tribe/Aggregator/Service.php:
|
1244 |
msgid "Eventbrite event not found."
|
1245 |
msgstr ""
|
1246 |
|
1247 |
-
#: src/Tribe/Aggregator/Service.php:
|
1248 |
msgid "Eventbrite organizer not found."
|
1249 |
msgstr ""
|
1250 |
|
1251 |
-
#: src/Tribe/Aggregator/Service.php:
|
1252 |
msgid "Eventbrite venue not found."
|
1253 |
msgstr ""
|
1254 |
|
1255 |
-
#: src/Tribe/Aggregator/Service.php:
|
1256 |
msgid "Eventbrite user not found."
|
1257 |
msgstr ""
|
1258 |
|
1259 |
-
#: src/Tribe/Aggregator/Service.php:
|
1260 |
msgid "Eventbrite sync data invalid."
|
1261 |
msgstr ""
|
1262 |
|
1263 |
-
#: src/Tribe/Aggregator/Service.php:
|
1264 |
msgid ""
|
1265 |
"You do not have an active connection to Eventbrite through your account and "
|
1266 |
"Event Aggregator."
|
1267 |
msgstr ""
|
1268 |
|
1269 |
-
#: src/Tribe/Aggregator/Service.php:
|
1270 |
msgid "Webhook not registered properly."
|
1271 |
msgstr ""
|
1272 |
|
1273 |
-
#: src/Tribe/Aggregator/Service.php:
|
1274 |
msgid "This webhook action is not currently supported."
|
1275 |
msgstr ""
|
1276 |
|
1277 |
-
#: src/Tribe/Aggregator/Service.php:
|
1278 |
msgid "Event not owned, you cannot edit it."
|
1279 |
msgstr ""
|
1280 |
|
1281 |
-
#: src/Tribe/Aggregator/Service.php:
|
1282 |
msgctxt "Placeholder used for the meetup API changes"
|
1283 |
msgid ""
|
1284 |
"Meetup is no longer supporting API keys, and will restrict access using your "
|
@@ -1287,7 +1300,7 @@ msgid ""
|
|
1287 |
"%1$s"
|
1288 |
msgstr ""
|
1289 |
|
1290 |
-
#: src/Tribe/Aggregator/Service.php:
|
1291 |
msgctxt ""
|
1292 |
"Placeholder used for the meetup API changes link when the KEY is plain"
|
1293 |
msgid ""
|
@@ -1297,13 +1310,13 @@ msgid ""
|
|
1297 |
"%1$s."
|
1298 |
msgstr ""
|
1299 |
|
1300 |
-
#: src/Tribe/Aggregator/Service.php:
|
1301 |
msgid ""
|
1302 |
"You do not have an active connection to Meetup through your account and "
|
1303 |
"Event Aggregator."
|
1304 |
msgstr ""
|
1305 |
|
1306 |
-
#: src/Tribe/Aggregator/Service.php:
|
1307 |
msgid "Unknown service message"
|
1308 |
msgstr ""
|
1309 |
|
@@ -1472,129 +1485,136 @@ msgid_plural "%1$d new images were imported."
|
|
1472 |
msgstr[0] ""
|
1473 |
msgstr[1] ""
|
1474 |
|
1475 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1476 |
msgid "No %1$s were imported or updated."
|
1477 |
msgstr ""
|
1478 |
|
1479 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1480 |
msgid "View all %s"
|
1481 |
msgstr ""
|
1482 |
|
1483 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1484 |
msgid "%1$d new venue was imported."
|
1485 |
msgid_plural "%1$d new venues were imported."
|
1486 |
msgstr[0] ""
|
1487 |
msgstr[1] ""
|
1488 |
|
1489 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1490 |
msgid "View your event venues"
|
1491 |
msgstr ""
|
1492 |
|
1493 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1494 |
msgid "%1$d new organizer was imported."
|
1495 |
msgid_plural "%1$d new organizers were imported."
|
1496 |
msgstr[0] ""
|
1497 |
msgstr[1] ""
|
1498 |
|
1499 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1500 |
msgid "View your event organizers"
|
1501 |
msgstr ""
|
1502 |
|
1503 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1504 |
msgid "%1$d new event category was created."
|
1505 |
msgid_plural "%1$d new event categories were created."
|
1506 |
msgstr[0] ""
|
1507 |
msgstr[1] ""
|
1508 |
|
1509 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1510 |
msgid "View your event categories"
|
1511 |
msgstr ""
|
1512 |
|
1513 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1514 |
msgid "%1$d new event tag was created."
|
1515 |
msgid_plural "%1$d new event tags were created."
|
1516 |
msgstr[0] ""
|
1517 |
msgstr[1] ""
|
1518 |
|
1519 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1520 |
msgid "View your event tags"
|
1521 |
msgstr ""
|
1522 |
|
1523 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1524 |
msgid "Import complete!"
|
1525 |
msgstr ""
|
1526 |
|
1527 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1528 |
msgid "Your scheduled import was saved and the first import is complete!"
|
1529 |
msgstr ""
|
1530 |
|
1531 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1532 |
msgctxt "separator between date and time"
|
1533 |
msgid " at "
|
1534 |
msgstr ""
|
1535 |
|
1536 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1537 |
msgid "The next import is scheduled for %1$s."
|
1538 |
msgstr ""
|
1539 |
|
1540 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1541 |
msgid "View your scheduled imports."
|
1542 |
msgstr ""
|
1543 |
|
1544 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1545 |
msgid "Invalid credential save request"
|
1546 |
msgstr ""
|
1547 |
|
1548 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1549 |
msgid "Invalid credential save nonce"
|
1550 |
msgstr ""
|
1551 |
|
1552 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1553 |
msgid "The Meetup API key is required."
|
1554 |
msgstr ""
|
1555 |
|
1556 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1557 |
msgid "Credentials have been saved"
|
1558 |
msgstr ""
|
1559 |
|
1560 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1561 |
msgid "Unable to save credentials"
|
1562 |
msgstr ""
|
1563 |
|
1564 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1565 |
msgid "Import Using Event Aggregator"
|
1566 |
msgstr ""
|
1567 |
|
1568 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1569 |
msgid ""
|
1570 |
"With Event Aggregator, you can import events from iCalendar, Google, and "
|
1571 |
"Meetup.com in a jiffy."
|
1572 |
msgstr ""
|
1573 |
|
1574 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1575 |
msgid "Buy It Now"
|
1576 |
msgstr ""
|
1577 |
|
1578 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1579 |
#: src/admin-views/aggregator/banners/eventbrite-upsell.php:19
|
1580 |
msgid "opens in a new window"
|
1581 |
msgstr ""
|
1582 |
|
1583 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1584 |
msgid "Learn More"
|
1585 |
msgstr ""
|
1586 |
|
1587 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1588 |
msgid "Your Event Aggregator license is expired."
|
1589 |
msgstr ""
|
1590 |
|
1591 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1592 |
msgid ""
|
1593 |
"Renew your license in order to import events from iCalendar, Google, or "
|
1594 |
"Meetup."
|
1595 |
msgstr ""
|
1596 |
|
1597 |
-
#: src/Tribe/Aggregator/Tabs/New.php:
|
1598 |
msgid "Renew your Event Aggregator license"
|
1599 |
msgstr ""
|
1600 |
|
@@ -2042,10 +2062,10 @@ msgid "Event Organizers"
|
|
2042 |
msgstr ""
|
2043 |
|
2044 |
#: src/Tribe/Editor/Template.php:70 src/Tribe/Template/Embed.php:59
|
2045 |
-
#: src/Tribe/Template/Single_Event.php:
|
2046 |
-
#: src/Tribe/Views/V2/Template_Bootstrap.php:
|
2047 |
-
#: src/Tribe/Views/V2/Template_Bootstrap.php:
|
2048 |
-
#: src/Tribe/Views/V2/Template_Bootstrap.php:
|
2049 |
msgid "This %s has passed."
|
2050 |
msgstr ""
|
2051 |
|
@@ -2644,202 +2664,202 @@ msgstr ""
|
|
2644 |
msgid "Upcoming Events"
|
2645 |
msgstr ""
|
2646 |
|
2647 |
-
#. #-#-#-#-# the-events-calendar.pot (The Events Calendar 5.1.
|
2648 |
#. Plugin Name of the plugin/theme
|
2649 |
-
#: src/Tribe/Main.php:
|
2650 |
#: src/functions/template-tags/general.php:1373 the-events-calendar.php:57
|
2651 |
msgid "The Events Calendar"
|
2652 |
msgstr ""
|
2653 |
|
2654 |
-
#: src/Tribe/Main.php:
|
2655 |
msgid "month"
|
2656 |
msgstr ""
|
2657 |
|
2658 |
-
#: src/Tribe/Main.php:
|
2659 |
msgid "list"
|
2660 |
msgstr ""
|
2661 |
|
2662 |
-
#: src/Tribe/Main.php:
|
2663 |
msgid "upcoming"
|
2664 |
msgstr ""
|
2665 |
|
2666 |
-
#: src/Tribe/Main.php:
|
2667 |
msgid "past"
|
2668 |
msgstr ""
|
2669 |
|
2670 |
-
#: src/Tribe/Main.php:
|
2671 |
msgid "day"
|
2672 |
msgstr ""
|
2673 |
|
2674 |
-
#: src/Tribe/Main.php:
|
2675 |
msgid "today"
|
2676 |
msgstr ""
|
2677 |
|
2678 |
-
#: src/Tribe/Main.php:
|
2679 |
msgctxt "featured events slug"
|
2680 |
msgid "featured"
|
2681 |
msgstr ""
|
2682 |
|
2683 |
-
#: src/Tribe/Main.php:
|
2684 |
msgctxt "all events slug"
|
2685 |
msgid "all"
|
2686 |
msgstr ""
|
2687 |
|
2688 |
-
#: src/Tribe/Main.php:
|
2689 |
msgid "Initializing Tribe Events on %s"
|
2690 |
msgstr ""
|
2691 |
|
2692 |
-
#: src/Tribe/Main.php:
|
2693 |
msgid "Welcome to The Events Calendar!"
|
2694 |
msgstr ""
|
2695 |
|
2696 |
-
#: src/Tribe/Main.php:
|
2697 |
msgid ""
|
2698 |
"The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
|
2699 |
"show its calendar in place of the page."
|
2700 |
msgstr ""
|
2701 |
|
2702 |
-
#: src/Tribe/Main.php:
|
2703 |
msgid "Ask the site administrator to edit the %s slug"
|
2704 |
msgstr ""
|
2705 |
|
2706 |
-
#: src/Tribe/Main.php:
|
2707 |
msgid "Edit the %s slug"
|
2708 |
msgstr ""
|
2709 |
|
2710 |
-
#: src/Tribe/Main.php:
|
2711 |
msgid " ask the site administrator to set a different Events URL slug."
|
2712 |
msgstr ""
|
2713 |
|
2714 |
-
#: src/Tribe/Main.php:
|
2715 |
msgid "edit Events settings."
|
2716 |
msgstr ""
|
2717 |
|
2718 |
-
#: src/Tribe/Main.php:
|
2719 |
msgid "%1$s or %2$s"
|
2720 |
msgstr ""
|
2721 |
|
2722 |
-
#: src/Tribe/Main.php:
|
2723 |
msgid "Upgrade your calendar views"
|
2724 |
msgstr ""
|
2725 |
|
2726 |
-
#: src/Tribe/Main.php:
|
2727 |
msgid "Upgrade"
|
2728 |
msgstr ""
|
2729 |
|
2730 |
-
#: src/Tribe/Main.php:
|
2731 |
msgid "New User Primer"
|
2732 |
msgstr ""
|
2733 |
|
2734 |
-
#: src/Tribe/Main.php:
|
2735 |
msgid ""
|
2736 |
"We are committed to helping make your calendar spectacular and have a wealth "
|
2737 |
"of resources available, including a handy %s to get your calendar up and "
|
2738 |
"running."
|
2739 |
msgstr ""
|
2740 |
|
2741 |
-
#: src/Tribe/Main.php:
|
2742 |
msgid "Support for The Events Calendar"
|
2743 |
msgstr ""
|
2744 |
|
2745 |
-
#: src/Tribe/Main.php:
|
2746 |
msgid ""
|
2747 |
"%s: A thorough walkthrough of The Events Calendar and the settings that are "
|
2748 |
"available to you."
|
2749 |
msgstr ""
|
2750 |
|
2751 |
-
#: src/Tribe/Main.php:
|
2752 |
msgid "Settings overview"
|
2753 |
msgstr ""
|
2754 |
|
2755 |
-
#: src/Tribe/Main.php:
|
2756 |
msgid ""
|
2757 |
"%s: A complete look at the features you can expect to see right out of the "
|
2758 |
"box as well as how to use them."
|
2759 |
msgstr ""
|
2760 |
|
2761 |
-
#: src/Tribe/Main.php:
|
2762 |
msgid "Features overview"
|
2763 |
msgstr ""
|
2764 |
|
2765 |
-
#: src/Tribe/Main.php:
|
2766 |
msgid ""
|
2767 |
"%s: Our most comprehensive outline for customizing the calendar to suit your "
|
2768 |
"needs, including custom layouts and styles."
|
2769 |
msgstr ""
|
2770 |
|
2771 |
-
#: src/Tribe/Main.php:
|
2772 |
msgid "Themer's Guide"
|
2773 |
msgstr ""
|
2774 |
|
2775 |
-
#: src/Tribe/Main.php:
|
2776 |
msgid ""
|
2777 |
"%s: An overview of the default templates and styles that are included in the "
|
2778 |
"plugin, as well as how to change them."
|
2779 |
msgstr ""
|
2780 |
|
2781 |
-
#: src/Tribe/Main.php:
|
2782 |
msgid "Using stylesheets and page templates"
|
2783 |
msgstr ""
|
2784 |
|
2785 |
-
#: src/Tribe/Main.php:
|
2786 |
msgid ""
|
2787 |
"%s: Do you see an issue with your calendar? Go here first to find where it’s "
|
2788 |
"coming from and how to fix it."
|
2789 |
msgstr ""
|
2790 |
|
2791 |
-
#: src/Tribe/Main.php:
|
2792 |
msgid "Troubleshooting common problems"
|
2793 |
msgstr ""
|
2794 |
|
2795 |
-
#: src/Tribe/Main.php:
|
2796 |
msgid ""
|
2797 |
"%s: Code and guides for customizing your calendar in useful and interesting "
|
2798 |
"ways."
|
2799 |
msgstr ""
|
2800 |
|
2801 |
-
#: src/Tribe/Main.php:
|
2802 |
msgid "Customizing the Events plugins"
|
2803 |
msgstr ""
|
2804 |
|
2805 |
-
#: src/Tribe/Main.php:
|
2806 |
msgid "Events Tickets"
|
2807 |
msgstr ""
|
2808 |
|
2809 |
-
#: src/Tribe/Main.php:
|
2810 |
msgid ""
|
2811 |
"If you have tried the above steps and are still having trouble, you can post "
|
2812 |
"a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
|
2813 |
"monitors these forums once a week and would be happy to assist you there. "
|
2814 |
msgstr ""
|
2815 |
|
2816 |
-
#: src/Tribe/Main.php:
|
2817 |
msgid "premium support on our website"
|
2818 |
msgstr ""
|
2819 |
|
2820 |
-
#: src/Tribe/Main.php:
|
2821 |
msgid ""
|
2822 |
"<strong>Looking for more immediate support?</strong> We offer %s with the "
|
2823 |
"purchase of any of our premium plugins. Pick up a license and you can post "
|
2824 |
"there directly and expect a response within 24-48 hours during weekdays"
|
2825 |
msgstr ""
|
2826 |
|
2827 |
-
#: src/Tribe/Main.php:
|
2828 |
msgid "open-source forum on WordPress.org"
|
2829 |
msgstr ""
|
2830 |
|
2831 |
-
#: src/Tribe/Main.php:
|
2832 |
msgid ""
|
2833 |
"If you have tried the above steps and are still having trouble, you can post "
|
2834 |
"a new thread to our %s. Our support staff monitors these forums once a week "
|
2835 |
"and would be happy to assist you there."
|
2836 |
msgstr ""
|
2837 |
|
2838 |
-
#: src/Tribe/Main.php:
|
2839 |
msgid "Events Calendar PRO"
|
2840 |
msgstr ""
|
2841 |
|
2842 |
-
#: src/Tribe/Main.php:
|
2843 |
msgid ""
|
2844 |
"<strong>Looking for more immediate support?</strong> We offer %1$s with the "
|
2845 |
"purchase of any of our premium plugins (like %2$s). Pick up a license and "
|
@@ -2847,427 +2867,427 @@ msgid ""
|
|
2847 |
"weekdays."
|
2848 |
msgstr ""
|
2849 |
|
2850 |
-
#: src/Tribe/Main.php:
|
2851 |
msgid "post a thread"
|
2852 |
msgstr ""
|
2853 |
|
2854 |
-
#: src/Tribe/Main.php:
|
2855 |
msgid ""
|
2856 |
"If you have a valid license for one of our paid plugins, you can %s in our "
|
2857 |
"premium support forums. Our support team monitors the forums and will "
|
2858 |
"respond to your thread within 24-48 hours (during the week)."
|
2859 |
msgstr ""
|
2860 |
|
2861 |
-
#: src/Tribe/Main.php:
|
2862 |
#: src/deprecated/Tribe__Events__Importer__Admin_Page.php:207
|
2863 |
#: src/functions/template-tags/general.php:95
|
2864 |
msgid "Events"
|
2865 |
msgstr ""
|
2866 |
|
2867 |
-
#: src/Tribe/Main.php:
|
2868 |
#: src/admin-views/aggregator/tabs/import-form.php:239
|
2869 |
#: src/functions/template-tags/general.php:63
|
2870 |
msgid "Event"
|
2871 |
msgstr ""
|
2872 |
|
2873 |
-
#: src/Tribe/Main.php:
|
2874 |
msgid ""
|
2875 |
"Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
|
2876 |
"your WordPress install."
|
2877 |
msgstr ""
|
2878 |
|
2879 |
-
#: src/Tribe/Main.php:
|
2880 |
msgid ""
|
2881 |
"Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
|
2882 |
"about moving you to a newer version of PHP."
|
2883 |
msgstr ""
|
2884 |
|
2885 |
-
#: src/Tribe/Main.php:
|
2886 |
msgid ""
|
2887 |
"To continue using The Events Calendar, please install the latest version of"
|
2888 |
msgstr ""
|
2889 |
|
2890 |
-
#: src/Tribe/Main.php:
|
2891 |
msgid "Event Tickets"
|
2892 |
msgstr ""
|
2893 |
|
2894 |
-
#: src/Tribe/Main.php:
|
2895 |
msgid ""
|
2896 |
"It appears as if the tribe-common libraries cannot be found! The directory "
|
2897 |
"should be in the \"common/\" directory in the events calendar plugin."
|
2898 |
msgstr ""
|
2899 |
|
2900 |
-
#: src/Tribe/Main.php:
|
2901 |
msgid "category"
|
2902 |
msgstr ""
|
2903 |
|
2904 |
-
#: src/Tribe/Main.php:
|
2905 |
msgid "tag"
|
2906 |
msgstr ""
|
2907 |
|
2908 |
-
#: src/Tribe/Main.php:
|
2909 |
msgid "Add New"
|
2910 |
msgstr ""
|
2911 |
|
2912 |
-
#: src/Tribe/Main.php:
|
2913 |
#: src/Tribe/Organizer.php:92 src/Tribe/Venue.php:111
|
2914 |
msgid "Add New %s"
|
2915 |
msgstr ""
|
2916 |
|
2917 |
-
#: src/Tribe/Main.php:
|
2918 |
msgid "New %s"
|
2919 |
msgstr ""
|
2920 |
|
2921 |
-
#: src/Tribe/Main.php:
|
2922 |
#: src/views/month/single-day.php:26
|
2923 |
msgid "View %s"
|
2924 |
msgstr ""
|
2925 |
|
2926 |
-
#: src/Tribe/Main.php:
|
2927 |
msgid "Search %s"
|
2928 |
msgstr ""
|
2929 |
|
2930 |
-
#: src/Tribe/Main.php:
|
2931 |
msgid "No %s found"
|
2932 |
msgstr ""
|
2933 |
|
2934 |
-
#: src/Tribe/Main.php:
|
2935 |
msgid "No %s found in Trash"
|
2936 |
msgstr ""
|
2937 |
|
2938 |
-
#: src/Tribe/Main.php:
|
2939 |
#: src/Tribe/Organizer.php:99 src/Tribe/Venue.php:118
|
2940 |
msgid "%s published."
|
2941 |
msgstr ""
|
2942 |
|
2943 |
-
#: src/Tribe/Main.php:
|
2944 |
msgid "%s published privately."
|
2945 |
msgstr ""
|
2946 |
|
2947 |
-
#: src/Tribe/Main.php:
|
2948 |
msgid "%s reverted to draft."
|
2949 |
msgstr ""
|
2950 |
|
2951 |
-
#: src/Tribe/Main.php:
|
2952 |
msgid "%s scheduled."
|
2953 |
msgstr ""
|
2954 |
|
2955 |
-
#: src/Tribe/Main.php:
|
2956 |
-
#: src/Tribe/Main.php:
|
2957 |
#: src/Tribe/Organizer.php:103 src/Tribe/Venue.php:122
|
2958 |
msgid "%s updated."
|
2959 |
msgstr ""
|
2960 |
|
2961 |
-
#: src/Tribe/Main.php:
|
2962 |
msgid "%s Category"
|
2963 |
msgstr ""
|
2964 |
|
2965 |
-
#: src/Tribe/Main.php:
|
2966 |
msgid "Search %s Categories"
|
2967 |
msgstr ""
|
2968 |
|
2969 |
-
#: src/Tribe/Main.php:
|
2970 |
msgid "All %s Categories"
|
2971 |
msgstr ""
|
2972 |
|
2973 |
-
#: src/Tribe/Main.php:
|
2974 |
msgid "Parent %s Category"
|
2975 |
msgstr ""
|
2976 |
|
2977 |
-
#: src/Tribe/Main.php:
|
2978 |
msgid "Parent %s Category:"
|
2979 |
msgstr ""
|
2980 |
|
2981 |
-
#: src/Tribe/Main.php:
|
2982 |
msgid "Edit %s Category"
|
2983 |
msgstr ""
|
2984 |
|
2985 |
-
#: src/Tribe/Main.php:
|
2986 |
msgid "Update %s Category"
|
2987 |
msgstr ""
|
2988 |
|
2989 |
-
#: src/Tribe/Main.php:
|
2990 |
msgid "Add New %s Category"
|
2991 |
msgstr ""
|
2992 |
|
2993 |
-
#: src/Tribe/Main.php:
|
2994 |
msgid "New %s Category Name"
|
2995 |
msgstr ""
|
2996 |
|
2997 |
-
#: src/Tribe/Main.php:
|
2998 |
msgid "%1$s updated. %2$sView %1$s%3$s"
|
2999 |
msgstr ""
|
3000 |
|
3001 |
-
#: src/Tribe/Main.php:
|
3002 |
msgid "Custom field updated."
|
3003 |
msgstr ""
|
3004 |
|
3005 |
-
#: src/Tribe/Main.php:
|
3006 |
msgid "Custom field deleted."
|
3007 |
msgstr ""
|
3008 |
|
3009 |
#. translators: %s: date and time of the revision
|
3010 |
-
#: src/Tribe/Main.php:
|
3011 |
msgid "%1$s restored to revision from %2$s"
|
3012 |
msgstr ""
|
3013 |
|
3014 |
-
#: src/Tribe/Main.php:
|
3015 |
msgid "%1$s published. %2$sView %3$s"
|
3016 |
msgstr ""
|
3017 |
|
3018 |
-
#: src/Tribe/Main.php:
|
3019 |
msgid "%s saved."
|
3020 |
msgstr ""
|
3021 |
|
3022 |
-
#: src/Tribe/Main.php:
|
3023 |
msgid "%1$s submitted. %2$sPreview %3$s"
|
3024 |
msgstr ""
|
3025 |
|
3026 |
-
#: src/Tribe/Main.php:
|
3027 |
msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
|
3028 |
msgstr ""
|
3029 |
|
3030 |
#. translators: Publish box date format, see http://php.net/date
|
3031 |
-
#: src/Tribe/Main.php:
|
3032 |
msgid "M j, Y @ G:i"
|
3033 |
msgstr ""
|
3034 |
|
3035 |
-
#: src/Tribe/Main.php:
|
3036 |
msgid "%1$s draft updated. %2$sPreview %3$s"
|
3037 |
msgstr ""
|
3038 |
|
3039 |
-
#: src/Tribe/Main.php:
|
3040 |
msgid "%s submitted."
|
3041 |
msgstr ""
|
3042 |
|
3043 |
-
#: src/Tribe/Main.php:
|
3044 |
msgid "%1$s scheduled for: %2$s."
|
3045 |
msgstr ""
|
3046 |
|
3047 |
-
#: src/Tribe/Main.php:
|
3048 |
msgid "%s draft updated."
|
3049 |
msgstr ""
|
3050 |
|
3051 |
#. translators: %s: date and time of the revision
|
3052 |
-
#: src/Tribe/Main.php:
|
3053 |
msgid "%s restored to revision from %s"
|
3054 |
msgstr ""
|
3055 |
|
3056 |
-
#: src/Tribe/Main.php:
|
3057 |
msgid ""
|
3058 |
"Without a defined location your event will not display a %sGoogle Rich "
|
3059 |
"Snippet%s on the search results."
|
3060 |
msgstr ""
|
3061 |
|
3062 |
-
#: src/Tribe/Main.php:
|
3063 |
msgid "page"
|
3064 |
msgstr ""
|
3065 |
|
3066 |
-
#: src/Tribe/Main.php:
|
3067 |
msgid "event"
|
3068 |
msgstr ""
|
3069 |
|
3070 |
-
#: src/Tribe/Main.php:
|
3071 |
msgid "events"
|
3072 |
msgstr ""
|
3073 |
|
3074 |
-
#: src/Tribe/Main.php:
|
3075 |
msgid "all"
|
3076 |
msgstr ""
|
3077 |
|
3078 |
-
#: src/Tribe/Main.php:
|
3079 |
msgid " (View Full %1$s Description Here: %2$s)"
|
3080 |
msgstr ""
|
3081 |
|
3082 |
-
#: src/Tribe/Main.php:
|
3083 |
#: src/functions/template-tags/day.php:157
|
3084 |
#: src/functions/template-tags/day.php:178
|
3085 |
msgid "Date out of range."
|
3086 |
msgstr ""
|
3087 |
|
3088 |
-
#: src/Tribe/Main.php:
|
3089 |
msgid "%s Options"
|
3090 |
msgstr ""
|
3091 |
|
3092 |
-
#: src/Tribe/Main.php:
|
3093 |
msgid "%s Information"
|
3094 |
msgstr ""
|
3095 |
|
3096 |
-
#: src/Tribe/Main.php:
|
3097 |
msgid "Support"
|
3098 |
msgstr ""
|
3099 |
|
3100 |
-
#: src/Tribe/Main.php:
|
3101 |
msgid "View All Add-Ons"
|
3102 |
msgstr ""
|
3103 |
|
3104 |
-
#: src/Tribe/Main.php:
|
3105 |
msgid "News from Modern Tribe"
|
3106 |
msgstr ""
|
3107 |
|
3108 |
-
#: src/Tribe/Main.php:
|
3109 |
msgid "Additional Functionality"
|
3110 |
msgstr ""
|
3111 |
|
3112 |
-
#: src/Tribe/Main.php:
|
3113 |
msgid ""
|
3114 |
"Looking for additional functionality including recurring events, ticket "
|
3115 |
"sales, publicly submitted events, new views and more?"
|
3116 |
msgstr ""
|
3117 |
|
3118 |
-
#: src/Tribe/Main.php:
|
3119 |
msgid "Check out the %savailable add-ons%s."
|
3120 |
msgstr ""
|
3121 |
|
3122 |
-
#: src/Tribe/Main.php:
|
3123 |
msgid "Calendar"
|
3124 |
msgstr ""
|
3125 |
|
3126 |
-
#: src/Tribe/Main.php:
|
3127 |
msgid "List"
|
3128 |
msgstr ""
|
3129 |
|
3130 |
-
#: src/Tribe/Main.php:
|
3131 |
msgid "Month"
|
3132 |
msgstr ""
|
3133 |
|
3134 |
-
#: src/Tribe/Main.php:
|
3135 |
#: src/admin-views/aggregator/fields/schedule.php:61
|
3136 |
msgid "Day"
|
3137 |
msgstr ""
|
3138 |
|
3139 |
-
#: src/Tribe/Main.php:
|
3140 |
msgid "Search for %s by Keyword."
|
3141 |
msgstr ""
|
3142 |
|
3143 |
-
#: src/Tribe/Main.php:
|
3144 |
#: src/views/v2/components/events-bar/search-button.php:25
|
3145 |
msgid "Search"
|
3146 |
msgstr ""
|
3147 |
|
3148 |
-
#: src/Tribe/Main.php:
|
3149 |
msgid "Keyword"
|
3150 |
msgstr ""
|
3151 |
|
3152 |
-
#: src/Tribe/Main.php:
|
3153 |
msgid "4 digit year hyphen 2 digit month hyphen 2 digit day"
|
3154 |
msgstr ""
|
3155 |
|
3156 |
-
#: src/Tribe/Main.php:
|
3157 |
msgid "1 digit month slash 1 digit day slash 4 digit year"
|
3158 |
msgstr ""
|
3159 |
|
3160 |
-
#: src/Tribe/Main.php:
|
3161 |
msgid "2 digit month slash 2 digit day slash 4 digit year"
|
3162 |
msgstr ""
|
3163 |
|
3164 |
-
#: src/Tribe/Main.php:
|
3165 |
msgid "1 digit day slash 1 digit month slash 4 digit year"
|
3166 |
msgstr ""
|
3167 |
|
3168 |
-
#: src/Tribe/Main.php:
|
3169 |
msgid "2 digit day slash 2 digit month slash 4 digit year"
|
3170 |
msgstr ""
|
3171 |
|
3172 |
-
#: src/Tribe/Main.php:
|
3173 |
msgid "1 digit month hyphen 1 digit day hyphen 4 digit year"
|
3174 |
msgstr ""
|
3175 |
|
3176 |
-
#: src/Tribe/Main.php:
|
3177 |
msgid "1 digit month hyphen 2 digit day hyphen 4 digit year"
|
3178 |
msgstr ""
|
3179 |
|
3180 |
-
#: src/Tribe/Main.php:
|
3181 |
msgid "1 digit day hyphen 1 digit month hyphen 4 digit year"
|
3182 |
msgstr ""
|
3183 |
|
3184 |
-
#: src/Tribe/Main.php:
|
3185 |
msgid "2 digit day hyphen 2 digit month hyphen 4 digit year"
|
3186 |
msgstr ""
|
3187 |
|
3188 |
-
#: src/Tribe/Main.php:
|
3189 |
msgid "4 digit year dot 2 digit month dot 2 digit day"
|
3190 |
msgstr ""
|
3191 |
|
3192 |
-
#: src/Tribe/Main.php:
|
3193 |
msgid "2 digit month dot 2 digit day dot 4 digit year"
|
3194 |
msgstr ""
|
3195 |
|
3196 |
-
#: src/Tribe/Main.php:
|
3197 |
msgid "2 digit day dot 2 digit month dot 4 digit year"
|
3198 |
msgstr ""
|
3199 |
|
3200 |
-
#: src/Tribe/Main.php:
|
3201 |
msgid "4 digit year hyphen 2 digit month"
|
3202 |
msgstr ""
|
3203 |
|
3204 |
-
#: src/Tribe/Main.php:
|
3205 |
msgid "1 digit month slash 4 digit year"
|
3206 |
msgstr ""
|
3207 |
|
3208 |
-
#: src/Tribe/Main.php:
|
3209 |
msgid "2 digit month slash 4 digit year"
|
3210 |
msgstr ""
|
3211 |
|
3212 |
-
#: src/Tribe/Main.php:
|
3213 |
msgid "1 digit month hyphen 4 digit year"
|
3214 |
msgstr ""
|
3215 |
|
3216 |
-
#: src/Tribe/Main.php:
|
3217 |
msgid "2 digit month hyphen 4 digit year"
|
3218 |
msgstr ""
|
3219 |
|
3220 |
-
#: src/Tribe/Main.php:
|
3221 |
msgid "4 digit year dot 2 digit month"
|
3222 |
msgstr ""
|
3223 |
|
3224 |
-
#: src/Tribe/Main.php:
|
3225 |
msgid "2 digit month dot 4 digit year"
|
3226 |
msgstr ""
|
3227 |
|
3228 |
-
#: src/Tribe/Main.php:
|
3229 |
#: src/admin-views/aggregator/origins/refine.php:7
|
3230 |
msgid "Date"
|
3231 |
msgstr ""
|
3232 |
|
3233 |
-
#: src/Tribe/Main.php:
|
3234 |
msgid "Search for %s by Date. Please use the format %s."
|
3235 |
msgstr ""
|
3236 |
|
3237 |
-
#: src/Tribe/Main.php:
|
3238 |
msgid "%s In"
|
3239 |
msgstr ""
|
3240 |
|
3241 |
-
#: src/Tribe/Main.php:
|
3242 |
msgid "Search for %s by month. Please use the format %s."
|
3243 |
msgstr ""
|
3244 |
|
3245 |
-
#: src/Tribe/Main.php:
|
3246 |
msgid "%s From"
|
3247 |
msgstr ""
|
3248 |
|
3249 |
-
#: src/Tribe/Main.php:
|
3250 |
msgid "Day Of"
|
3251 |
msgstr ""
|
3252 |
|
3253 |
-
#: src/Tribe/Main.php:
|
3254 |
msgid "Once Every 30 Mins"
|
3255 |
msgstr ""
|
3256 |
|
3257 |
-
#: src/Tribe/Main.php:
|
3258 |
msgid ""
|
3259 |
"Your version of The Events Calendar is not up-to-date with one of your The "
|
3260 |
"Events Calendar add-ons. Please %supdate now.%s"
|
3261 |
msgstr ""
|
3262 |
|
3263 |
-
#: src/Tribe/Main.php:
|
3264 |
msgid ""
|
3265 |
"The following plugins are out of date: %1$s. All add-ons contain "
|
3266 |
"dependencies on The Events Calendar and will not function properly unless "
|
3267 |
"paired with the right version. %2$sLearn More%3$s."
|
3268 |
msgstr ""
|
3269 |
|
3270 |
-
#: src/Tribe/Main.php:
|
3271 |
msgid "Use Saved %s:"
|
3272 |
msgstr ""
|
3273 |
|
@@ -4682,15 +4702,15 @@ msgstr ""
|
|
4682 |
msgid "Unnamed Venue"
|
4683 |
msgstr ""
|
4684 |
|
4685 |
-
#: src/Tribe/Views/V2/Hooks.php:
|
4686 |
msgid "We recommend a 16:9 aspect ratio for featured images."
|
4687 |
msgstr ""
|
4688 |
|
4689 |
-
#: src/Tribe/Views/V2/Hooks.php:
|
4690 |
msgid "Recommended for all sites using the updated calendar views."
|
4691 |
msgstr ""
|
4692 |
|
4693 |
-
#: src/Tribe/Views/V2/Hooks.php:
|
4694 |
msgid "The Events Calendar - View V2"
|
4695 |
msgstr ""
|
4696 |
|
@@ -6336,13 +6356,15 @@ msgid ""
|
|
6336 |
msgstr ""
|
6337 |
|
6338 |
#: src/admin-views/privacy.php:49
|
6339 |
-
msgid "We make use of certain
|
6340 |
msgstr ""
|
6341 |
|
6342 |
#: src/admin-views/privacy.php:51
|
6343 |
msgid ""
|
6344 |
-
"These
|
6345 |
-
"Meetup, PayPal
|
|
|
|
|
6346 |
msgstr ""
|
6347 |
|
6348 |
#: src/admin-views/privacy.php:53
|
2 |
# This file is distributed under the same license as the The Events Calendar package.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: The Events Calendar 5.1.4\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
|
7 |
"calendar\n"
|
8 |
+
"POT-Creation-Date: 2020-06-23 04:02:13+00:00\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"PO-Revision-Date: 2020-06-23 04:02\n"
|
13 |
"Last-Translator: \n"
|
14 |
"Language-Team: \n"
|
15 |
|
47 |
msgid "%s"
|
48 |
msgstr ""
|
49 |
|
50 |
+
#: src/Tribe/Admin/Bar/Default_Configurator.php:45 src/Tribe/Main.php:4174
|
51 |
#: src/admin-views/tribe-options-upgrade.php:20
|
52 |
msgid "View Calendar"
|
53 |
msgstr ""
|
57 |
msgstr ""
|
58 |
|
59 |
#: src/Tribe/Admin/Bar/Default_Configurator.php:62
|
60 |
+
#: src/Tribe/Linked_Posts/Chooser_Meta_Box.php:211 src/Tribe/Main.php:2045
|
61 |
+
#: src/Tribe/Main.php:5270 src/Tribe/Main.php:5317 src/Tribe/Organizer.php:93
|
62 |
#: src/Tribe/Venue.php:112
|
63 |
msgid "Edit %s"
|
64 |
msgstr ""
|
69 |
msgid "Import"
|
70 |
msgstr ""
|
71 |
|
72 |
+
#: src/Tribe/Admin/Bar/Default_Configurator.php:89 src/Tribe/Main.php:4222
|
73 |
msgid "Settings"
|
74 |
msgstr ""
|
75 |
|
77 |
msgid "Help"
|
78 |
msgstr ""
|
79 |
|
80 |
+
#: src/Tribe/Admin/Notice/Marketing.php:101
|
81 |
msgctxt "2018 user survey"
|
82 |
msgid "take the survey now"
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: src/Tribe/Admin/Notice/Marketing.php:105
|
86 |
msgctxt "2018 user survey"
|
87 |
msgid ""
|
88 |
"<strong>The Events Calendar Annual Survey:</strong> share your feedback with "
|
89 |
"our team—%1$s!"
|
90 |
msgstr ""
|
91 |
|
92 |
+
#: src/Tribe/Admin/Notice/Marketing.php:118
|
93 |
msgid "<strong>The Events Calendar & Gutenberg</strong>"
|
94 |
msgstr ""
|
95 |
|
96 |
+
#: src/Tribe/Admin/Notice/Marketing.php:122
|
97 |
msgid ""
|
98 |
"WordPress 5.0 is coming soon, and with it, the arrival of the new block "
|
99 |
"editor interface."
|
100 |
msgstr ""
|
101 |
|
102 |
+
#: src/Tribe/Admin/Notice/Marketing.php:127
|
103 |
msgid ""
|
104 |
"Get up to speed with our comprehensive Guide to Gutenberg ebook, then see "
|
105 |
"how events and tickets will behave in the block editor by installing our "
|
106 |
"free Events Gutenberg extension."
|
107 |
msgstr ""
|
108 |
|
109 |
+
#: src/Tribe/Admin/Notice/Marketing.php:133
|
110 |
msgid "Download the eBook"
|
111 |
msgstr ""
|
112 |
|
113 |
+
#: src/Tribe/Admin/Notice/Marketing.php:141
|
114 |
msgid "Try Events Gutenberg"
|
115 |
msgstr ""
|
116 |
|
117 |
+
#: src/Tribe/Admin/Notice/Marketing.php:158
|
118 |
+
msgid "Virtual Events for The Events Calendar"
|
119 |
+
msgstr ""
|
120 |
+
|
121 |
+
#. translators: the placeholder is for the link to the Virtual Events for The
|
122 |
+
#. Events Calendar information and download page.
|
123 |
+
#: src/Tribe/Admin/Notice/Marketing.php:163
|
124 |
+
msgctxt "Virtual Events Announcement Banner"
|
125 |
+
msgid ""
|
126 |
+
"🎉 Just launched: %s! Identify events as virtual events, Zoom integration, "
|
127 |
+
"hidden livestream links and more."
|
128 |
+
msgstr ""
|
129 |
+
|
130 |
#: src/Tribe/Admin/Notice/Timezones.php:149
|
131 |
#: src/Tribe/Editor/Compatibility.php:131 src/Tribe/Google/Maps_API_Key.php:77
|
132 |
msgid "Read more"
|
167 |
"refresh and try again."
|
168 |
msgstr ""
|
169 |
|
170 |
+
#: src/Tribe/Admin_List.php:246 src/Tribe/Main.php:2064
|
171 |
msgid "%s Categories"
|
172 |
msgstr ""
|
173 |
|
189 |
msgstr ""
|
190 |
|
191 |
#: src/Tribe/Aggregator/API/Origins.php:36
|
192 |
+
#: src/Tribe/Aggregator/Admin_Bar.php:97 src/Tribe/Aggregator/Service.php:893
|
193 |
msgid "CSV File"
|
194 |
msgstr ""
|
195 |
|
286 |
"The image associated with your event could not be attached to the event."
|
287 |
msgstr ""
|
288 |
|
289 |
+
#: src/Tribe/Aggregator/Errors.php:46 src/Tribe/Aggregator/Service.php:757
|
290 |
msgid ""
|
291 |
"The daily limit of %d import requests to the Event Aggregator service has "
|
292 |
"been reached. Please try again later."
|
558 |
msgid "Events Import"
|
559 |
msgstr ""
|
560 |
|
561 |
+
#: src/Tribe/Aggregator/Page.php:417
|
562 |
msgid "Facebook Events"
|
563 |
msgstr ""
|
564 |
|
565 |
+
#: src/Tribe/Aggregator/Page.php:421
|
566 |
msgid "iCal Importer"
|
567 |
msgstr ""
|
568 |
|
569 |
+
#: src/Tribe/Aggregator/Page.php:430
|
570 |
msgid ""
|
571 |
"It looks like you are using our legacy plugin, %1$s, along with our new "
|
572 |
"Event Aggregator service. Event Aggregator includes all the features of the "
|
580 |
msgstr[0] ""
|
581 |
msgstr[1] ""
|
582 |
|
583 |
+
#: src/Tribe/Aggregator/Page.php:443
|
584 |
msgid "Manage Active Plugins"
|
585 |
msgstr ""
|
586 |
|
662 |
"the import halting."
|
663 |
msgstr ""
|
664 |
|
665 |
+
#: src/Tribe/Aggregator/Record/CSV.php:79
|
666 |
#: src/admin-views/aggregator/settings.php:606
|
667 |
#: src/deprecated/Tribe__Events__Importer__Admin_Page.php:239
|
668 |
msgid "CSV"
|
669 |
msgstr ""
|
670 |
|
671 |
+
#: src/Tribe/Aggregator/Record/CSV.php:120
|
672 |
msgid "Unknown Column "
|
673 |
msgstr ""
|
674 |
|
675 |
+
#: src/Tribe/Aggregator/Record/CSV.php:229
|
676 |
#: src/deprecated/Tribe__Events__Importer__Admin_Page.php:358
|
677 |
msgid "The following fields are required for a successful import:"
|
678 |
msgstr ""
|
1042 |
"be understood. Please try again."
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: src/Tribe/Aggregator/Service.php:729
|
1046 |
msgid "the UID part of the iCalendar Specification"
|
1047 |
msgstr ""
|
1048 |
|
1049 |
+
#: src/Tribe/Aggregator/Service.php:734
|
1050 |
msgid "read more about Facebook restrictions in our knowledgebase"
|
1051 |
msgstr ""
|
1052 |
|
1053 |
+
#: src/Tribe/Aggregator/Service.php:739
|
1054 |
msgid "https://m.tri.be/1afb"
|
1055 |
msgstr ""
|
1056 |
|
1057 |
+
#: src/Tribe/Aggregator/Service.php:744
|
1058 |
msgid "Sorry, but something went wrong. Please try again."
|
1059 |
msgstr ""
|
1060 |
|
1061 |
+
#: src/Tribe/Aggregator/Service.php:745
|
1062 |
msgid "Events could not be imported. The import parameters were invalid."
|
1063 |
msgstr ""
|
1064 |
|
1065 |
+
#: src/Tribe/Aggregator/Service.php:746
|
1066 |
msgid ""
|
1067 |
"Events cannot be imported because Eventbrite has returned an error. This "
|
1068 |
"could mean that the event ID does not exist, the event or source is marked "
|
1072 |
"in our knowledgebase</a>."
|
1073 |
msgstr ""
|
1074 |
|
1075 |
+
#: src/Tribe/Aggregator/Service.php:747
|
1076 |
msgid "No upcoming Eventbrite events found."
|
1077 |
msgstr ""
|
1078 |
|
1079 |
+
#: src/Tribe/Aggregator/Service.php:748
|
1080 |
msgid "The URL provided could not be reached."
|
1081 |
msgstr ""
|
1082 |
|
1083 |
+
#: src/Tribe/Aggregator/Service.php:749
|
1084 |
msgid "The URL provided failed to load."
|
1085 |
msgstr ""
|
1086 |
|
1087 |
+
#: src/Tribe/Aggregator/Service.php:750
|
1088 |
msgid "The image associated with your event could not be imported."
|
1089 |
msgstr ""
|
1090 |
|
1091 |
+
#: src/Tribe/Aggregator/Service.php:751
|
1092 |
msgid ""
|
1093 |
"The image associated with your event is not accessible with your API key."
|
1094 |
msgstr ""
|
1095 |
|
1096 |
+
#: src/Tribe/Aggregator/Service.php:752
|
1097 |
msgid ""
|
1098 |
"The import failed for an unknown reason. Please try again. If the problem "
|
1099 |
"persists, please contact support."
|
1100 |
msgstr ""
|
1101 |
|
1102 |
+
#: src/Tribe/Aggregator/Service.php:753
|
1103 |
msgid ""
|
1104 |
"Events could not be imported. The URL provided did not have events in the "
|
1105 |
"proper format."
|
1106 |
msgstr ""
|
1107 |
|
1108 |
+
#: src/Tribe/Aggregator/Service.php:754
|
1109 |
msgid ""
|
1110 |
"The file provided could not be opened. Please confirm that it is a properly "
|
1111 |
"formatted .ics file."
|
1112 |
msgstr ""
|
1113 |
|
1114 |
+
#: src/Tribe/Aggregator/Service.php:755
|
1115 |
msgid "Your Meetup API key is invalid."
|
1116 |
msgstr ""
|
1117 |
|
1118 |
+
#: src/Tribe/Aggregator/Service.php:756
|
1119 |
msgid ""
|
1120 |
"Event Aggregator cannot reach Meetup.com because you exceeded the request "
|
1121 |
"limit for your Meetup API key."
|
1122 |
msgstr ""
|
1123 |
|
1124 |
+
#: src/Tribe/Aggregator/Service.php:759
|
1125 |
msgid "The import is in progress."
|
1126 |
msgstr ""
|
1127 |
|
1128 |
+
#: src/Tribe/Aggregator/Service.php:761
|
1129 |
msgid "The import will be starting soon."
|
1130 |
msgstr ""
|
1131 |
|
1132 |
+
#: src/Tribe/Aggregator/Service.php:763
|
1133 |
msgid "Success"
|
1134 |
msgstr ""
|
1135 |
|
1136 |
+
#: src/Tribe/Aggregator/Service.php:764
|
1137 |
msgid "Import created"
|
1138 |
msgstr ""
|
1139 |
|
1140 |
+
#: src/Tribe/Aggregator/Service.php:765
|
1141 |
msgid "Successfully fetched Eventbrite Token"
|
1142 |
msgstr ""
|
1143 |
|
1144 |
+
#: src/Tribe/Aggregator/Service.php:766
|
1145 |
msgid "Successfully loaded import origins"
|
1146 |
msgstr ""
|
1147 |
|
1148 |
+
#: src/Tribe/Aggregator/Service.php:767
|
1149 |
msgid "Import is complete"
|
1150 |
msgstr ""
|
1151 |
|
1152 |
+
#: src/Tribe/Aggregator/Service.php:768
|
1153 |
msgid "Import queued"
|
1154 |
msgstr ""
|
1155 |
|
1156 |
+
#: src/Tribe/Aggregator/Service.php:769
|
1157 |
msgid "Events could not be imported. The URL provided could not be reached."
|
1158 |
msgstr ""
|
1159 |
|
1160 |
+
#: src/Tribe/Aggregator/Service.php:770
|
1161 |
msgid ""
|
1162 |
"The requested source does not have any upcoming and published events "
|
1163 |
"matching the search criteria."
|
1164 |
msgstr ""
|
1165 |
|
1166 |
+
#: src/Tribe/Aggregator/Service.php:772
|
1167 |
msgctxt ""
|
1168 |
"The placeholder is for the localized version of the iCal UID specification "
|
1169 |
"link"
|
1175 |
"help them more quickly resolve their feed's UID issue."
|
1176 |
msgstr ""
|
1177 |
|
1178 |
+
#: src/Tribe/Aggregator/Service.php:781
|
1179 |
msgctxt ""
|
1180 |
"The placeholder is for the localized version of the iCal UID specification "
|
1181 |
"link"
|
1187 |
"help them more quickly resolve their feed's UID issue."
|
1188 |
msgstr ""
|
1189 |
|
1190 |
+
#: src/Tribe/Aggregator/Service.php:787
|
1191 |
msgid "Successfully fetched Facebook Token"
|
1192 |
msgstr ""
|
1193 |
|
1194 |
+
#: src/Tribe/Aggregator/Service.php:788
|
1195 |
msgid "Successfully connected to Eventbrite"
|
1196 |
msgstr ""
|
1197 |
|
1198 |
+
#: src/Tribe/Aggregator/Service.php:789
|
1199 |
msgid "Successfully disconnected Eventbrite"
|
1200 |
msgstr ""
|
1201 |
|
1202 |
+
#: src/Tribe/Aggregator/Service.php:790
|
1203 |
msgid "Successfully marked event for import from Eventbrite"
|
1204 |
msgstr ""
|
1205 |
|
1206 |
+
#: src/Tribe/Aggregator/Service.php:791
|
1207 |
msgid "Successfully synced event to Eventbrite"
|
1208 |
msgstr ""
|
1209 |
|
1210 |
+
#: src/Tribe/Aggregator/Service.php:792
|
1211 |
msgid ""
|
1212 |
"The import being fetched is not queued up for importing. Please try the "
|
1213 |
"import again."
|
1214 |
msgstr ""
|
1215 |
|
1216 |
+
#: src/Tribe/Aggregator/Service.php:794
|
1217 |
msgctxt "Placeholder used for the facebook restriction link"
|
1218 |
msgid ""
|
1219 |
"Events cannot be imported because Facebook has returned an error. This could "
|
1222 |
"You can %1$s."
|
1223 |
msgstr ""
|
1224 |
|
1225 |
+
#: src/Tribe/Aggregator/Service.php:801
|
1226 |
msgid "Events cannot be imported because we received an error from Facebook: "
|
1227 |
msgstr ""
|
1228 |
|
1229 |
+
#: src/Tribe/Aggregator/Service.php:802
|
1230 |
msgid ""
|
1231 |
"Events cannot be imported because we received an error from Eventbrite: "
|
1232 |
msgstr ""
|
1233 |
|
1234 |
+
#: src/Tribe/Aggregator/Service.php:803
|
1235 |
msgid ""
|
1236 |
"Event cannot be synced to Eventbrite because we received an error from "
|
1237 |
"Eventbrite."
|
1238 |
msgstr ""
|
1239 |
|
1240 |
+
#: src/Tribe/Aggregator/Service.php:804
|
1241 |
msgid "Eventbrite token is not valid."
|
1242 |
msgstr ""
|
1243 |
|
1244 |
+
#: src/Tribe/Aggregator/Service.php:805 src/Tribe/Aggregator/Service.php:808
|
1245 |
msgid "Eventbrite parsed object is empty."
|
1246 |
msgstr ""
|
1247 |
|
1248 |
+
#: src/Tribe/Aggregator/Service.php:806
|
1249 |
msgid "Eventbrite parsed object type is empty."
|
1250 |
msgstr ""
|
1251 |
|
1252 |
+
#: src/Tribe/Aggregator/Service.php:807
|
1253 |
msgid "Eventbrite parsed object ID is empty."
|
1254 |
msgstr ""
|
1255 |
|
1256 |
+
#: src/Tribe/Aggregator/Service.php:809
|
1257 |
msgid "Eventbrite event not found."
|
1258 |
msgstr ""
|
1259 |
|
1260 |
+
#: src/Tribe/Aggregator/Service.php:810
|
1261 |
msgid "Eventbrite organizer not found."
|
1262 |
msgstr ""
|
1263 |
|
1264 |
+
#: src/Tribe/Aggregator/Service.php:811
|
1265 |
msgid "Eventbrite venue not found."
|
1266 |
msgstr ""
|
1267 |
|
1268 |
+
#: src/Tribe/Aggregator/Service.php:812
|
1269 |
msgid "Eventbrite user not found."
|
1270 |
msgstr ""
|
1271 |
|
1272 |
+
#: src/Tribe/Aggregator/Service.php:813
|
1273 |
msgid "Eventbrite sync data invalid."
|
1274 |
msgstr ""
|
1275 |
|
1276 |
+
#: src/Tribe/Aggregator/Service.php:814
|
1277 |
msgid ""
|
1278 |
"You do not have an active connection to Eventbrite through your account and "
|
1279 |
"Event Aggregator."
|
1280 |
msgstr ""
|
1281 |
|
1282 |
+
#: src/Tribe/Aggregator/Service.php:815
|
1283 |
msgid "Webhook not registered properly."
|
1284 |
msgstr ""
|
1285 |
|
1286 |
+
#: src/Tribe/Aggregator/Service.php:816
|
1287 |
msgid "This webhook action is not currently supported."
|
1288 |
msgstr ""
|
1289 |
|
1290 |
+
#: src/Tribe/Aggregator/Service.php:817
|
1291 |
msgid "Event not owned, you cannot edit it."
|
1292 |
msgstr ""
|
1293 |
|
1294 |
+
#: src/Tribe/Aggregator/Service.php:819
|
1295 |
msgctxt "Placeholder used for the meetup API changes"
|
1296 |
msgid ""
|
1297 |
"Meetup is no longer supporting API keys, and will restrict access using your "
|
1300 |
"%1$s"
|
1301 |
msgstr ""
|
1302 |
|
1303 |
+
#: src/Tribe/Aggregator/Service.php:827
|
1304 |
msgctxt ""
|
1305 |
"Placeholder used for the meetup API changes link when the KEY is plain"
|
1306 |
msgid ""
|
1310 |
"%1$s."
|
1311 |
msgstr ""
|
1312 |
|
1313 |
+
#: src/Tribe/Aggregator/Service.php:834
|
1314 |
msgid ""
|
1315 |
"You do not have an active connection to Meetup through your account and "
|
1316 |
"Event Aggregator."
|
1317 |
msgstr ""
|
1318 |
|
1319 |
+
#: src/Tribe/Aggregator/Service.php:851
|
1320 |
msgid "Unknown service message"
|
1321 |
msgstr ""
|
1322 |
|
1485 |
msgstr[0] ""
|
1486 |
msgstr[1] ""
|
1487 |
|
1488 |
+
#. translators: %1$d is replaced with a number of scheduled images.
|
1489 |
+
#: src/Tribe/Aggregator/Tabs/New.php:291
|
1490 |
+
msgid "%1$d new image was scheduled for import."
|
1491 |
+
msgid_plural "%1$d new images were scheduled for import."
|
1492 |
+
msgstr[0] ""
|
1493 |
+
msgstr[1] ""
|
1494 |
+
|
1495 |
+
#: src/Tribe/Aggregator/Tabs/New.php:303
|
1496 |
msgid "No %1$s were imported or updated."
|
1497 |
msgstr ""
|
1498 |
|
1499 |
+
#: src/Tribe/Aggregator/Tabs/New.php:311
|
1500 |
msgid "View all %s"
|
1501 |
msgstr ""
|
1502 |
|
1503 |
+
#: src/Tribe/Aggregator/Tabs/New.php:321
|
1504 |
msgid "%1$d new venue was imported."
|
1505 |
msgid_plural "%1$d new venues were imported."
|
1506 |
msgstr[0] ""
|
1507 |
msgstr[1] ""
|
1508 |
|
1509 |
+
#: src/Tribe/Aggregator/Tabs/New.php:325
|
1510 |
msgid "View your event venues"
|
1511 |
msgstr ""
|
1512 |
|
1513 |
+
#: src/Tribe/Aggregator/Tabs/New.php:333
|
1514 |
msgid "%1$d new organizer was imported."
|
1515 |
msgid_plural "%1$d new organizers were imported."
|
1516 |
msgstr[0] ""
|
1517 |
msgstr[1] ""
|
1518 |
|
1519 |
+
#: src/Tribe/Aggregator/Tabs/New.php:337
|
1520 |
msgid "View your event organizers"
|
1521 |
msgstr ""
|
1522 |
|
1523 |
+
#: src/Tribe/Aggregator/Tabs/New.php:346
|
1524 |
msgid "%1$d new event category was created."
|
1525 |
msgid_plural "%1$d new event categories were created."
|
1526 |
msgstr[0] ""
|
1527 |
msgstr[1] ""
|
1528 |
|
1529 |
+
#: src/Tribe/Aggregator/Tabs/New.php:350
|
1530 |
msgid "View your event categories"
|
1531 |
msgstr ""
|
1532 |
|
1533 |
+
#: src/Tribe/Aggregator/Tabs/New.php:358
|
1534 |
msgid "%1$d new event tag was created."
|
1535 |
msgid_plural "%1$d new event tags were created."
|
1536 |
msgstr[0] ""
|
1537 |
msgstr[1] ""
|
1538 |
|
1539 |
+
#: src/Tribe/Aggregator/Tabs/New.php:362
|
1540 |
msgid "View your event tags"
|
1541 |
msgstr ""
|
1542 |
|
1543 |
+
#: src/Tribe/Aggregator/Tabs/New.php:373
|
1544 |
msgid "Import complete!"
|
1545 |
msgstr ""
|
1546 |
|
1547 |
+
#: src/Tribe/Aggregator/Tabs/New.php:375
|
1548 |
msgid "Your scheduled import was saved and the first import is complete!"
|
1549 |
msgstr ""
|
1550 |
|
1551 |
+
#: src/Tribe/Aggregator/Tabs/New.php:379
|
1552 |
msgctxt "separator between date and time"
|
1553 |
msgid " at "
|
1554 |
msgstr ""
|
1555 |
|
1556 |
+
#: src/Tribe/Aggregator/Tabs/New.php:386
|
1557 |
msgid "The next import is scheduled for %1$s."
|
1558 |
msgstr ""
|
1559 |
|
1560 |
+
#: src/Tribe/Aggregator/Tabs/New.php:390
|
1561 |
msgid "View your scheduled imports."
|
1562 |
msgstr ""
|
1563 |
|
1564 |
+
#: src/Tribe/Aggregator/Tabs/New.php:402
|
1565 |
msgid "Invalid credential save request"
|
1566 |
msgstr ""
|
1567 |
|
1568 |
+
#: src/Tribe/Aggregator/Tabs/New.php:412
|
1569 |
msgid "Invalid credential save nonce"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
+
#: src/Tribe/Aggregator/Tabs/New.php:421
|
1573 |
msgid "The Meetup API key is required."
|
1574 |
msgstr ""
|
1575 |
|
1576 |
+
#: src/Tribe/Aggregator/Tabs/New.php:430
|
1577 |
msgid "Credentials have been saved"
|
1578 |
msgstr ""
|
1579 |
|
1580 |
+
#: src/Tribe/Aggregator/Tabs/New.php:437
|
1581 |
msgid "Unable to save credentials"
|
1582 |
msgstr ""
|
1583 |
|
1584 |
+
#: src/Tribe/Aggregator/Tabs/New.php:524
|
1585 |
msgid "Import Using Event Aggregator"
|
1586 |
msgstr ""
|
1587 |
|
1588 |
+
#: src/Tribe/Aggregator/Tabs/New.php:526
|
1589 |
msgid ""
|
1590 |
"With Event Aggregator, you can import events from iCalendar, Google, and "
|
1591 |
"Meetup.com in a jiffy."
|
1592 |
msgstr ""
|
1593 |
|
1594 |
+
#: src/Tribe/Aggregator/Tabs/New.php:529
|
1595 |
msgid "Buy It Now"
|
1596 |
msgstr ""
|
1597 |
|
1598 |
+
#: src/Tribe/Aggregator/Tabs/New.php:531 src/Tribe/Aggregator/Tabs/New.php:538
|
1599 |
#: src/admin-views/aggregator/banners/eventbrite-upsell.php:19
|
1600 |
msgid "opens in a new window"
|
1601 |
msgstr ""
|
1602 |
|
1603 |
+
#: src/Tribe/Aggregator/Tabs/New.php:536
|
1604 |
msgid "Learn More"
|
1605 |
msgstr ""
|
1606 |
|
1607 |
+
#: src/Tribe/Aggregator/Tabs/New.php:584
|
1608 |
msgid "Your Event Aggregator license is expired."
|
1609 |
msgstr ""
|
1610 |
|
1611 |
+
#: src/Tribe/Aggregator/Tabs/New.php:585
|
1612 |
msgid ""
|
1613 |
"Renew your license in order to import events from iCalendar, Google, or "
|
1614 |
"Meetup."
|
1615 |
msgstr ""
|
1616 |
|
1617 |
+
#: src/Tribe/Aggregator/Tabs/New.php:588
|
1618 |
msgid "Renew your Event Aggregator license"
|
1619 |
msgstr ""
|
1620 |
|
2062 |
msgstr ""
|
2063 |
|
2064 |
#: src/Tribe/Editor/Template.php:70 src/Tribe/Template/Embed.php:59
|
2065 |
+
#: src/Tribe/Template/Single_Event.php:121
|
2066 |
+
#: src/Tribe/Views/V2/Template_Bootstrap.php:136
|
2067 |
+
#: src/Tribe/Views/V2/Template_Bootstrap.php:176
|
2068 |
+
#: src/Tribe/Views/V2/Template_Bootstrap.php:468
|
2069 |
msgid "This %s has passed."
|
2070 |
msgstr ""
|
2071 |
|
2664 |
msgid "Upcoming Events"
|
2665 |
msgstr ""
|
2666 |
|
2667 |
+
#. #-#-#-#-# the-events-calendar.pot (The Events Calendar 5.1.4) #-#-#-#-#
|
2668 |
#. Plugin Name of the plugin/theme
|
2669 |
+
#: src/Tribe/Main.php:945 src/Tribe/Main.php:1400 src/Tribe/Privacy.php:29
|
2670 |
#: src/functions/template-tags/general.php:1373 the-events-calendar.php:57
|
2671 |
msgid "The Events Calendar"
|
2672 |
msgstr ""
|
2673 |
|
2674 |
+
#: src/Tribe/Main.php:952
|
2675 |
msgid "month"
|
2676 |
msgstr ""
|
2677 |
|
2678 |
+
#: src/Tribe/Main.php:953
|
2679 |
msgid "list"
|
2680 |
msgstr ""
|
2681 |
|
2682 |
+
#: src/Tribe/Main.php:954
|
2683 |
msgid "upcoming"
|
2684 |
msgstr ""
|
2685 |
|
2686 |
+
#: src/Tribe/Main.php:955
|
2687 |
msgid "past"
|
2688 |
msgstr ""
|
2689 |
|
2690 |
+
#: src/Tribe/Main.php:956
|
2691 |
msgid "day"
|
2692 |
msgstr ""
|
2693 |
|
2694 |
+
#: src/Tribe/Main.php:957
|
2695 |
msgid "today"
|
2696 |
msgstr ""
|
2697 |
|
2698 |
+
#: src/Tribe/Main.php:958
|
2699 |
msgctxt "featured events slug"
|
2700 |
msgid "featured"
|
2701 |
msgstr ""
|
2702 |
|
2703 |
+
#: src/Tribe/Main.php:959
|
2704 |
msgctxt "all events slug"
|
2705 |
msgid "all"
|
2706 |
msgstr ""
|
2707 |
|
2708 |
+
#: src/Tribe/Main.php:983
|
2709 |
msgid "Initializing Tribe Events on %s"
|
2710 |
msgstr ""
|
2711 |
|
2712 |
+
#: src/Tribe/Main.php:1041 src/Tribe/Main.php:1043
|
2713 |
msgid "Welcome to The Events Calendar!"
|
2714 |
msgstr ""
|
2715 |
|
2716 |
+
#: src/Tribe/Main.php:1189
|
2717 |
msgid ""
|
2718 |
"The %3$s \"%1$s\" uses the \"/%2$s\" slug: the Events Calendar plugin will "
|
2719 |
"show its calendar in place of the page."
|
2720 |
msgstr ""
|
2721 |
|
2722 |
+
#: src/Tribe/Main.php:1192
|
2723 |
msgid "Ask the site administrator to edit the %s slug"
|
2724 |
msgstr ""
|
2725 |
|
2726 |
+
#: src/Tribe/Main.php:1194
|
2727 |
msgid "Edit the %s slug"
|
2728 |
msgstr ""
|
2729 |
|
2730 |
+
#: src/Tribe/Main.php:1198
|
2731 |
msgid " ask the site administrator to set a different Events URL slug."
|
2732 |
msgstr ""
|
2733 |
|
2734 |
+
#: src/Tribe/Main.php:1203
|
2735 |
msgid "edit Events settings."
|
2736 |
msgstr ""
|
2737 |
|
2738 |
+
#: src/Tribe/Main.php:1206
|
2739 |
msgid "%1$s or %2$s"
|
2740 |
msgstr ""
|
2741 |
|
2742 |
+
#: src/Tribe/Main.php:1275
|
2743 |
msgid "Upgrade your calendar views"
|
2744 |
msgstr ""
|
2745 |
|
2746 |
+
#: src/Tribe/Main.php:1311
|
2747 |
msgid "Upgrade"
|
2748 |
msgstr ""
|
2749 |
|
2750 |
+
#: src/Tribe/Main.php:1360 src/admin-views/admin-welcome-message.php:19
|
2751 |
msgid "New User Primer"
|
2752 |
msgstr ""
|
2753 |
|
2754 |
+
#: src/Tribe/Main.php:1362
|
2755 |
msgid ""
|
2756 |
"We are committed to helping make your calendar spectacular and have a wealth "
|
2757 |
"of resources available, including a handy %s to get your calendar up and "
|
2758 |
"running."
|
2759 |
msgstr ""
|
2760 |
|
2761 |
+
#: src/Tribe/Main.php:1373
|
2762 |
msgid "Support for The Events Calendar"
|
2763 |
msgstr ""
|
2764 |
|
2765 |
+
#: src/Tribe/Main.php:1376
|
2766 |
msgid ""
|
2767 |
"%s: A thorough walkthrough of The Events Calendar and the settings that are "
|
2768 |
"available to you."
|
2769 |
msgstr ""
|
2770 |
|
2771 |
+
#: src/Tribe/Main.php:1376
|
2772 |
msgid "Settings overview"
|
2773 |
msgstr ""
|
2774 |
|
2775 |
+
#: src/Tribe/Main.php:1378
|
2776 |
msgid ""
|
2777 |
"%s: A complete look at the features you can expect to see right out of the "
|
2778 |
"box as well as how to use them."
|
2779 |
msgstr ""
|
2780 |
|
2781 |
+
#: src/Tribe/Main.php:1378
|
2782 |
msgid "Features overview"
|
2783 |
msgstr ""
|
2784 |
|
2785 |
+
#: src/Tribe/Main.php:1380
|
2786 |
msgid ""
|
2787 |
"%s: Our most comprehensive outline for customizing the calendar to suit your "
|
2788 |
"needs, including custom layouts and styles."
|
2789 |
msgstr ""
|
2790 |
|
2791 |
+
#: src/Tribe/Main.php:1380 src/admin-views/admin-welcome-message.php:21
|
2792 |
msgid "Themer's Guide"
|
2793 |
msgstr ""
|
2794 |
|
2795 |
+
#: src/Tribe/Main.php:1382
|
2796 |
msgid ""
|
2797 |
"%s: An overview of the default templates and styles that are included in the "
|
2798 |
"plugin, as well as how to change them."
|
2799 |
msgstr ""
|
2800 |
|
2801 |
+
#: src/Tribe/Main.php:1382
|
2802 |
msgid "Using stylesheets and page templates"
|
2803 |
msgstr ""
|
2804 |
|
2805 |
+
#: src/Tribe/Main.php:1384
|
2806 |
msgid ""
|
2807 |
"%s: Do you see an issue with your calendar? Go here first to find where it’s "
|
2808 |
"coming from and how to fix it."
|
2809 |
msgstr ""
|
2810 |
|
2811 |
+
#: src/Tribe/Main.php:1384
|
2812 |
msgid "Troubleshooting common problems"
|
2813 |
msgstr ""
|
2814 |
|
2815 |
+
#: src/Tribe/Main.php:1386
|
2816 |
msgid ""
|
2817 |
"%s: Code and guides for customizing your calendar in useful and interesting "
|
2818 |
"ways."
|
2819 |
msgstr ""
|
2820 |
|
2821 |
+
#: src/Tribe/Main.php:1386
|
2822 |
msgid "Customizing the Events plugins"
|
2823 |
msgstr ""
|
2824 |
|
2825 |
+
#: src/Tribe/Main.php:1401
|
2826 |
msgid "Events Tickets"
|
2827 |
msgstr ""
|
2828 |
|
2829 |
+
#: src/Tribe/Main.php:1402
|
2830 |
msgid ""
|
2831 |
"If you have tried the above steps and are still having trouble, you can post "
|
2832 |
"a new thread to our WordPress.org forums for %1$s or %2$s. Our support staff "
|
2833 |
"monitors these forums once a week and would be happy to assist you there. "
|
2834 |
msgstr ""
|
2835 |
|
2836 |
+
#: src/Tribe/Main.php:1404 src/Tribe/Main.php:1412
|
2837 |
msgid "premium support on our website"
|
2838 |
msgstr ""
|
2839 |
|
2840 |
+
#: src/Tribe/Main.php:1405
|
2841 |
msgid ""
|
2842 |
"<strong>Looking for more immediate support?</strong> We offer %s with the "
|
2843 |
"purchase of any of our premium plugins. Pick up a license and you can post "
|
2844 |
"there directly and expect a response within 24-48 hours during weekdays"
|
2845 |
msgstr ""
|
2846 |
|
2847 |
+
#: src/Tribe/Main.php:1409
|
2848 |
msgid "open-source forum on WordPress.org"
|
2849 |
msgstr ""
|
2850 |
|
2851 |
+
#: src/Tribe/Main.php:1410
|
2852 |
msgid ""
|
2853 |
"If you have tried the above steps and are still having trouble, you can post "
|
2854 |
"a new thread to our %s. Our support staff monitors these forums once a week "
|
2855 |
"and would be happy to assist you there."
|
2856 |
msgstr ""
|
2857 |
|
2858 |
+
#: src/Tribe/Main.php:1413
|
2859 |
msgid "Events Calendar PRO"
|
2860 |
msgstr ""
|
2861 |
|
2862 |
+
#: src/Tribe/Main.php:1414
|
2863 |
msgid ""
|
2864 |
"<strong>Looking for more immediate support?</strong> We offer %1$s with the "
|
2865 |
"purchase of any of our premium plugins (like %2$s). Pick up a license and "
|
2867 |
"weekdays."
|
2868 |
msgstr ""
|
2869 |
|
2870 |
+
#: src/Tribe/Main.php:1418
|
2871 |
msgid "post a thread"
|
2872 |
msgstr ""
|
2873 |
|
2874 |
+
#: src/Tribe/Main.php:1419
|
2875 |
msgid ""
|
2876 |
"If you have a valid license for one of our paid plugins, you can %s in our "
|
2877 |
"premium support forums. Our support team monitors the forums and will "
|
2878 |
"respond to your thread within 24-48 hours (during the week)."
|
2879 |
msgstr ""
|
2880 |
|
2881 |
+
#: src/Tribe/Main.php:1462
|
2882 |
#: src/deprecated/Tribe__Events__Importer__Admin_Page.php:207
|
2883 |
#: src/functions/template-tags/general.php:95
|
2884 |
msgid "Events"
|
2885 |
msgstr ""
|
2886 |
|
2887 |
+
#: src/Tribe/Main.php:1470 src/admin-views/aggregator/tabs/import-form.php:227
|
2888 |
#: src/admin-views/aggregator/tabs/import-form.php:239
|
2889 |
#: src/functions/template-tags/general.php:63
|
2890 |
msgid "Event"
|
2891 |
msgstr ""
|
2892 |
|
2893 |
+
#: src/Tribe/Main.php:1687
|
2894 |
msgid ""
|
2895 |
"Sorry, The Events Calendar requires WordPress %s or higher. Please upgrade "
|
2896 |
"your WordPress install."
|
2897 |
msgstr ""
|
2898 |
|
2899 |
+
#: src/Tribe/Main.php:1690
|
2900 |
msgid ""
|
2901 |
"Sorry, The Events Calendar requires PHP %s or higher. Talk to your Web host "
|
2902 |
"about moving you to a newer version of PHP."
|
2903 |
msgstr ""
|
2904 |
|
2905 |
+
#: src/Tribe/Main.php:1722
|
2906 |
msgid ""
|
2907 |
"To continue using The Events Calendar, please install the latest version of"
|
2908 |
msgstr ""
|
2909 |
|
2910 |
+
#: src/Tribe/Main.php:1724 src/Tribe/Main.php:1725
|
2911 |
msgid "Event Tickets"
|
2912 |
msgstr ""
|
2913 |
|
2914 |
+
#: src/Tribe/Main.php:1760
|
2915 |
msgid ""
|
2916 |
"It appears as if the tribe-common libraries cannot be found! The directory "
|
2917 |
"should be in the \"common/\" directory in the events calendar plugin."
|
2918 |
msgstr ""
|
2919 |
|
2920 |
+
#: src/Tribe/Main.php:1996 src/Tribe/Main.php:2455
|
2921 |
msgid "category"
|
2922 |
msgstr ""
|
2923 |
|
2924 |
+
#: src/Tribe/Main.php:2010 src/Tribe/Main.php:2454
|
2925 |
msgid "tag"
|
2926 |
msgstr ""
|
2927 |
|
2928 |
+
#: src/Tribe/Main.php:2043 src/Tribe/Organizer.php:91 src/Tribe/Venue.php:110
|
2929 |
msgid "Add New"
|
2930 |
msgstr ""
|
2931 |
|
2932 |
+
#: src/Tribe/Main.php:2044 src/Tribe/Main.php:2181 src/Tribe/Main.php:2182
|
2933 |
#: src/Tribe/Organizer.php:92 src/Tribe/Venue.php:111
|
2934 |
msgid "Add New %s"
|
2935 |
msgstr ""
|
2936 |
|
2937 |
+
#: src/Tribe/Main.php:2046 src/Tribe/Organizer.php:94 src/Tribe/Venue.php:113
|
2938 |
msgid "New %s"
|
2939 |
msgstr ""
|
2940 |
|
2941 |
+
#: src/Tribe/Main.php:2047 src/Tribe/Organizer.php:95 src/Tribe/Venue.php:114
|
2942 |
#: src/views/month/single-day.php:26
|
2943 |
msgid "View %s"
|
2944 |
msgstr ""
|
2945 |
|
2946 |
+
#: src/Tribe/Main.php:2048 src/Tribe/Organizer.php:96 src/Tribe/Venue.php:115
|
2947 |
msgid "Search %s"
|
2948 |
msgstr ""
|
2949 |
|
2950 |
+
#: src/Tribe/Main.php:2049 src/Tribe/Organizer.php:97 src/Tribe/Venue.php:116
|
2951 |
msgid "No %s found"
|
2952 |
msgstr ""
|
2953 |
|
2954 |
+
#: src/Tribe/Main.php:2050 src/Tribe/Organizer.php:98 src/Tribe/Venue.php:117
|
2955 |
msgid "No %s found in Trash"
|
2956 |
msgstr ""
|
2957 |
|
2958 |
+
#: src/Tribe/Main.php:2051 src/Tribe/Main.php:2138 src/Tribe/Main.php:2158
|
2959 |
#: src/Tribe/Organizer.php:99 src/Tribe/Venue.php:118
|
2960 |
msgid "%s published."
|
2961 |
msgstr ""
|
2962 |
|
2963 |
+
#: src/Tribe/Main.php:2052 src/Tribe/Organizer.php:100 src/Tribe/Venue.php:119
|
2964 |
msgid "%s published privately."
|
2965 |
msgstr ""
|
2966 |
|
2967 |
+
#: src/Tribe/Main.php:2053 src/Tribe/Organizer.php:101 src/Tribe/Venue.php:120
|
2968 |
msgid "%s reverted to draft."
|
2969 |
msgstr ""
|
2970 |
|
2971 |
+
#: src/Tribe/Main.php:2054 src/Tribe/Organizer.php:102 src/Tribe/Venue.php:121
|
2972 |
msgid "%s scheduled."
|
2973 |
msgstr ""
|
2974 |
|
2975 |
+
#: src/Tribe/Main.php:2055 src/Tribe/Main.php:2097 src/Tribe/Main.php:2132
|
2976 |
+
#: src/Tribe/Main.php:2135 src/Tribe/Main.php:2152 src/Tribe/Main.php:2155
|
2977 |
#: src/Tribe/Organizer.php:103 src/Tribe/Venue.php:122
|
2978 |
msgid "%s updated."
|
2979 |
msgstr ""
|
2980 |
|
2981 |
+
#: src/Tribe/Main.php:2065
|
2982 |
msgid "%s Category"
|
2983 |
msgstr ""
|
2984 |
|
2985 |
+
#: src/Tribe/Main.php:2066
|
2986 |
msgid "Search %s Categories"
|
2987 |
msgstr ""
|
2988 |
|
2989 |
+
#: src/Tribe/Main.php:2067
|
2990 |
msgid "All %s Categories"
|
2991 |
msgstr ""
|
2992 |
|
2993 |
+
#: src/Tribe/Main.php:2068
|
2994 |
msgid "Parent %s Category"
|
2995 |
msgstr ""
|
2996 |
|
2997 |
+
#: src/Tribe/Main.php:2069
|
2998 |
msgid "Parent %s Category:"
|
2999 |
msgstr ""
|
3000 |
|
3001 |
+
#: src/Tribe/Main.php:2070
|
3002 |
msgid "Edit %s Category"
|
3003 |
msgstr ""
|
3004 |
|
3005 |
+
#: src/Tribe/Main.php:2071
|
3006 |
msgid "Update %s Category"
|
3007 |
msgstr ""
|
3008 |
|
3009 |
+
#: src/Tribe/Main.php:2072
|
3010 |
msgid "Add New %s Category"
|
3011 |
msgstr ""
|
3012 |
|
3013 |
+
#: src/Tribe/Main.php:2073
|
3014 |
msgid "New %s Category Name"
|
3015 |
msgstr ""
|
3016 |
|
3017 |
+
#: src/Tribe/Main.php:2090
|
3018 |
msgid "%1$s updated. %2$sView %1$s%3$s"
|
3019 |
msgstr ""
|
3020 |
|
3021 |
+
#: src/Tribe/Main.php:2095 src/Tribe/Main.php:2133 src/Tribe/Main.php:2153
|
3022 |
msgid "Custom field updated."
|
3023 |
msgstr ""
|
3024 |
|
3025 |
+
#: src/Tribe/Main.php:2096 src/Tribe/Main.php:2134 src/Tribe/Main.php:2154
|
3026 |
msgid "Custom field deleted."
|
3027 |
msgstr ""
|
3028 |
|
3029 |
#. translators: %s: date and time of the revision
|
3030 |
+
#: src/Tribe/Main.php:2099 src/Tribe/Main.php:2137
|
3031 |
msgid "%1$s restored to revision from %2$s"
|
3032 |
msgstr ""
|
3033 |
|
3034 |
+
#: src/Tribe/Main.php:2101
|
3035 |
msgid "%1$s published. %2$sView %3$s"
|
3036 |
msgstr ""
|
3037 |
|
3038 |
+
#: src/Tribe/Main.php:2106 src/Tribe/Main.php:2139 src/Tribe/Main.php:2159
|
3039 |
msgid "%s saved."
|
3040 |
msgstr ""
|
3041 |
|
3042 |
+
#: src/Tribe/Main.php:2108
|
3043 |
msgid "%1$s submitted. %2$sPreview %3$s"
|
3044 |
msgstr ""
|
3045 |
|
3046 |
+
#: src/Tribe/Main.php:2114
|
3047 |
msgid "%1$s scheduled for: %2$s. %3$sPreview %4$s"
|
3048 |
msgstr ""
|
3049 |
|
3050 |
#. translators: Publish box date format, see http://php.net/date
|
3051 |
+
#: src/Tribe/Main.php:2117 src/Tribe/Main.php:2145 src/Tribe/Main.php:2165
|
3052 |
msgid "M j, Y @ G:i"
|
3053 |
msgstr ""
|
3054 |
|
3055 |
+
#: src/Tribe/Main.php:2123
|
3056 |
msgid "%1$s draft updated. %2$sPreview %3$s"
|
3057 |
msgstr ""
|
3058 |
|
3059 |
+
#: src/Tribe/Main.php:2140 src/Tribe/Main.php:2160
|
3060 |
msgid "%s submitted."
|
3061 |
msgstr ""
|
3062 |
|
3063 |
+
#: src/Tribe/Main.php:2142 src/Tribe/Main.php:2162
|
3064 |
msgid "%1$s scheduled for: %2$s."
|
3065 |
msgstr ""
|
3066 |
|
3067 |
+
#: src/Tribe/Main.php:2147 src/Tribe/Main.php:2167
|
3068 |
msgid "%s draft updated."
|
3069 |
msgstr ""
|
3070 |
|
3071 |
#. translators: %s: date and time of the revision
|
3072 |
+
#: src/Tribe/Main.php:2157
|
3073 |
msgid "%s restored to revision from %s"
|
3074 |
msgstr ""
|
3075 |
|
3076 |
+
#: src/Tribe/Main.php:2211
|
3077 |
msgid ""
|
3078 |
"Without a defined location your event will not display a %sGoogle Rich "
|
3079 |
"Snippet%s on the search results."
|
3080 |
msgstr ""
|
3081 |
|
3082 |
+
#: src/Tribe/Main.php:2456
|
3083 |
msgid "page"
|
3084 |
msgstr ""
|
3085 |
|
3086 |
+
#: src/Tribe/Main.php:2457 src/functions/template-tags/general.php:79
|
3087 |
msgid "event"
|
3088 |
msgstr ""
|
3089 |
|
3090 |
+
#: src/Tribe/Main.php:2458 src/functions/template-tags/general.php:111
|
3091 |
msgid "events"
|
3092 |
msgstr ""
|
3093 |
|
3094 |
+
#: src/Tribe/Main.php:2459
|
3095 |
msgid "all"
|
3096 |
msgstr ""
|
3097 |
|
3098 |
+
#: src/Tribe/Main.php:2841
|
3099 |
msgid " (View Full %1$s Description Here: %2$s)"
|
3100 |
msgstr ""
|
3101 |
|
3102 |
+
#: src/Tribe/Main.php:3620 src/Tribe/Main.php:3655
|
3103 |
#: src/functions/template-tags/day.php:157
|
3104 |
#: src/functions/template-tags/day.php:178
|
3105 |
msgid "Date out of range."
|
3106 |
msgstr ""
|
3107 |
|
3108 |
+
#: src/Tribe/Main.php:3697
|
3109 |
msgid "%s Options"
|
3110 |
msgstr ""
|
3111 |
|
3112 |
+
#: src/Tribe/Main.php:3706 src/Tribe/Main.php:3719
|
3113 |
msgid "%s Information"
|
3114 |
msgstr ""
|
3115 |
|
3116 |
+
#: src/Tribe/Main.php:4048
|
3117 |
msgid "Support"
|
3118 |
msgstr ""
|
3119 |
|
3120 |
+
#: src/Tribe/Main.php:4051
|
3121 |
msgid "View All Add-Ons"
|
3122 |
msgstr ""
|
3123 |
|
3124 |
+
#: src/Tribe/Main.php:4071
|
3125 |
msgid "News from Modern Tribe"
|
3126 |
msgstr ""
|
3127 |
|
3128 |
+
#: src/Tribe/Main.php:4116
|
3129 |
msgid "Additional Functionality"
|
3130 |
msgstr ""
|
3131 |
|
3132 |
+
#: src/Tribe/Main.php:4121
|
3133 |
msgid ""
|
3134 |
"Looking for additional functionality including recurring events, ticket "
|
3135 |
"sales, publicly submitted events, new views and more?"
|
3136 |
msgstr ""
|
3137 |
|
3138 |
+
#: src/Tribe/Main.php:4122
|
3139 |
msgid "Check out the %savailable add-ons%s."
|
3140 |
msgstr ""
|
3141 |
|
3142 |
+
#: src/Tribe/Main.php:4223
|
3143 |
msgid "Calendar"
|
3144 |
msgstr ""
|
3145 |
|
3146 |
+
#: src/Tribe/Main.php:4239
|
3147 |
msgid "List"
|
3148 |
msgstr ""
|
3149 |
|
3150 |
+
#: src/Tribe/Main.php:4257
|
3151 |
msgid "Month"
|
3152 |
msgstr ""
|
3153 |
|
3154 |
+
#: src/Tribe/Main.php:4274 src/admin-views/aggregator/fields/schedule.php:43
|
3155 |
#: src/admin-views/aggregator/fields/schedule.php:61
|
3156 |
msgid "Day"
|
3157 |
msgstr ""
|
3158 |
|
3159 |
+
#: src/Tribe/Main.php:4297
|
3160 |
msgid "Search for %s by Keyword."
|
3161 |
msgstr ""
|
3162 |
|
3163 |
+
#: src/Tribe/Main.php:4300
|
3164 |
#: src/views/v2/components/events-bar/search-button.php:25
|
3165 |
msgid "Search"
|
3166 |
msgstr ""
|
3167 |
|
3168 |
+
#: src/Tribe/Main.php:4301
|
3169 |
msgid "Keyword"
|
3170 |
msgstr ""
|
3171 |
|
3172 |
+
#: src/Tribe/Main.php:4318
|
3173 |
msgid "4 digit year hyphen 2 digit month hyphen 2 digit day"
|
3174 |
msgstr ""
|
3175 |
|
3176 |
+
#: src/Tribe/Main.php:4319
|
3177 |
msgid "1 digit month slash 1 digit day slash 4 digit year"
|
3178 |
msgstr ""
|
3179 |
|
3180 |
+
#: src/Tribe/Main.php:4320
|
3181 |
msgid "2 digit month slash 2 digit day slash 4 digit year"
|
3182 |
msgstr ""
|
3183 |
|
3184 |
+
#: src/Tribe/Main.php:4321
|
3185 |
msgid "1 digit day slash 1 digit month slash 4 digit year"
|
3186 |
msgstr ""
|
3187 |
|
3188 |
+
#: src/Tribe/Main.php:4322
|
3189 |
msgid "2 digit day slash 2 digit month slash 4 digit year"
|
3190 |
msgstr ""
|
3191 |
|
3192 |
+
#: src/Tribe/Main.php:4323
|
3193 |
msgid "1 digit month hyphen 1 digit day hyphen 4 digit year"
|
3194 |
msgstr ""
|
3195 |
|
3196 |
+
#: src/Tribe/Main.php:4324
|
3197 |
msgid "1 digit month hyphen 2 digit day hyphen 4 digit year"
|
3198 |
msgstr ""
|
3199 |
|
3200 |
+
#: src/Tribe/Main.php:4325
|
3201 |
msgid "1 digit day hyphen 1 digit month hyphen 4 digit year"
|
3202 |
msgstr ""
|
3203 |
|
3204 |
+
#: src/Tribe/Main.php:4326
|
3205 |
msgid "2 digit day hyphen 2 digit month hyphen 4 digit year"
|
3206 |
msgstr ""
|
3207 |
|
3208 |
+
#: src/Tribe/Main.php:4327
|
3209 |
msgid "4 digit year dot 2 digit month dot 2 digit day"
|
3210 |
msgstr ""
|
3211 |
|
3212 |
+
#: src/Tribe/Main.php:4328
|
3213 |
msgid "2 digit month dot 2 digit day dot 4 digit year"
|
3214 |
msgstr ""
|
3215 |
|
3216 |
+
#: src/Tribe/Main.php:4329
|
3217 |
msgid "2 digit day dot 2 digit month dot 4 digit year"
|
3218 |
msgstr ""
|
3219 |
|
3220 |
+
#: src/Tribe/Main.php:4333
|
3221 |
msgid "4 digit year hyphen 2 digit month"
|
3222 |
msgstr ""
|
3223 |
|
3224 |
+
#: src/Tribe/Main.php:4334 src/Tribe/Main.php:4336
|
3225 |
msgid "1 digit month slash 4 digit year"
|
3226 |
msgstr ""
|
3227 |
|
3228 |
+
#: src/Tribe/Main.php:4335 src/Tribe/Main.php:4337
|
3229 |
msgid "2 digit month slash 4 digit year"
|
3230 |
msgstr ""
|
3231 |
|
3232 |
+
#: src/Tribe/Main.php:4338 src/Tribe/Main.php:4339 src/Tribe/Main.php:4340
|
3233 |
msgid "1 digit month hyphen 4 digit year"
|
3234 |
msgstr ""
|
3235 |
|
3236 |
+
#: src/Tribe/Main.php:4341
|
3237 |
msgid "2 digit month hyphen 4 digit year"
|
3238 |
msgstr ""
|
3239 |
|
3240 |
+
#: src/Tribe/Main.php:4342
|
3241 |
msgid "4 digit year dot 2 digit month"
|
3242 |
msgstr ""
|
3243 |
|
3244 |
+
#: src/Tribe/Main.php:4343 src/Tribe/Main.php:4344
|
3245 |
msgid "2 digit month dot 4 digit year"
|
3246 |
msgstr ""
|
3247 |
|
3248 |
+
#: src/Tribe/Main.php:4373 src/Tribe/Main.php:4410
|
3249 |
#: src/admin-views/aggregator/origins/refine.php:7
|
3250 |
msgid "Date"
|
3251 |
msgstr ""
|
3252 |
|
3253 |
+
#: src/Tribe/Main.php:4375
|
3254 |
msgid "Search for %s by Date. Please use the format %s."
|
3255 |
msgstr ""
|
3256 |
|
3257 |
+
#: src/Tribe/Main.php:4388
|
3258 |
msgid "%s In"
|
3259 |
msgstr ""
|
3260 |
|
3261 |
+
#: src/Tribe/Main.php:4390
|
3262 |
msgid "Search for %s by month. Please use the format %s."
|
3263 |
msgstr ""
|
3264 |
|
3265 |
+
#: src/Tribe/Main.php:4393
|
3266 |
msgid "%s From"
|
3267 |
msgstr ""
|
3268 |
|
3269 |
+
#: src/Tribe/Main.php:4396
|
3270 |
msgid "Day Of"
|
3271 |
msgstr ""
|
3272 |
|
3273 |
+
#: src/Tribe/Main.php:4476
|
3274 |
msgid "Once Every 30 Mins"
|
3275 |
msgstr ""
|
3276 |
|
3277 |
+
#: src/Tribe/Main.php:5203
|
3278 |
msgid ""
|
3279 |
"Your version of The Events Calendar is not up-to-date with one of your The "
|
3280 |
"Events Calendar add-ons. Please %supdate now.%s"
|
3281 |
msgstr ""
|
3282 |
|
3283 |
+
#: src/Tribe/Main.php:5215
|
3284 |
msgid ""
|
3285 |
"The following plugins are out of date: %1$s. All add-ons contain "
|
3286 |
"dependencies on The Events Calendar and will not function properly unless "
|
3287 |
"paired with the right version. %2$sLearn More%3$s."
|
3288 |
msgstr ""
|
3289 |
|
3290 |
+
#: src/Tribe/Main.php:5254 src/Tribe/Main.php:5311
|
3291 |
msgid "Use Saved %s:"
|
3292 |
msgstr ""
|
3293 |
|
4702 |
msgid "Unnamed Venue"
|
4703 |
msgstr ""
|
4704 |
|
4705 |
+
#: src/Tribe/Views/V2/Hooks.php:484
|
4706 |
msgid "We recommend a 16:9 aspect ratio for featured images."
|
4707 |
msgstr ""
|
4708 |
|
4709 |
+
#: src/Tribe/Views/V2/Hooks.php:561
|
4710 |
msgid "Recommended for all sites using the updated calendar views."
|
4711 |
msgstr ""
|
4712 |
|
4713 |
+
#: src/Tribe/Views/V2/Hooks.php:576
|
4714 |
msgid "The Events Calendar - View V2"
|
4715 |
msgstr ""
|
4716 |
|
6356 |
msgstr ""
|
6357 |
|
6358 |
#: src/admin-views/privacy.php:49
|
6359 |
+
msgid "We make use of certain APIs, in order to provide specific features."
|
6360 |
msgstr ""
|
6361 |
|
6362 |
#: src/admin-views/privacy.php:51
|
6363 |
msgid ""
|
6364 |
+
"These APIs may include the following third party services: Google Maps (API "
|
6365 |
+
"key), Meetup (OAuth token), PayPal (email, Client ID, Client Secret), "
|
6366 |
+
"Eventbrite (API key, auth URL, Client Secret), and Zoom (email, Client ID, "
|
6367 |
+
"Client Secret)."
|
6368 |
msgstr ""
|
6369 |
|
6370 |
#: src/admin-views/privacy.php:53
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Contributors: ModernTribe, borkweb, barry.hughes, bordoni, brianjessee, aguseo,
|
|
4 |
Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
|
5 |
Donate link: https://m.tri.be/29
|
6 |
Requires at least: 4.9.14
|
7 |
-
Stable tag: 5.1.
|
8 |
Tested up to: 5.4.2
|
9 |
Requires PHP: 5.6
|
10 |
License: GPLv2 or later
|
@@ -222,10 +222,21 @@ Remember to always make a backup of your database and files before updating!
|
|
222 |
|
223 |
== Changelog ==
|
224 |
|
225 |
-
= [5.1.
|
226 |
|
227 |
* Fix - Improve escaping for messages when no results were found using search (Thanks Steve Pollak)
|
228 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
229 |
= [5.1.3] 2020-06-22 =
|
230 |
|
231 |
* Tweak - Add new filter `tribe_events_filter_views_v2_plural_events_label` to customize the label in V2 views. [VE-9]
|
4 |
Tags: events, calendar, event, venue, organizer, dates, date, google maps, conference, workshop, concert, meeting, seminar, summit, class, modern tribe, tribe, widget
|
5 |
Donate link: https://m.tri.be/29
|
6 |
Requires at least: 4.9.14
|
7 |
+
Stable tag: 5.1.4.1
|
8 |
Tested up to: 5.4.2
|
9 |
Requires PHP: 5.6
|
10 |
License: GPLv2 or later
|
222 |
|
223 |
== Changelog ==
|
224 |
|
225 |
+
= [5.1.4.1] 2021-05-05 =
|
226 |
|
227 |
* Fix - Improve escaping for messages when no results were found using search (Thanks Steve Pollak)
|
228 |
|
229 |
+
= [5.1.4] 2020-06-24 =
|
230 |
+
|
231 |
+
* Tweak - Improve fresh install experience by setting the default template to the Events one [TEC-3453]
|
232 |
+
* Tweak - Create a new method to request an update back to EA imports to mark imports as completed on EA server [TEC-3476]
|
233 |
+
* Tweak - Add a new filter `tribe_aggregator_service_put_pue_licenses` to enable external sources the option to add additional PUE attached to the request. [TEC-3476]
|
234 |
+
* Tweak - Prevent lastest-past from showing in the front end view selector in new installs [TEC-3450]
|
235 |
+
* Tweak - On a fresh install set the enabled views to list, month, and day and set the default view to list to stop erroneous error entries [TEC-3451]
|
236 |
+
* Tweak - Add a new "scheduled" status for the activity reporter of imports from EA [TEC-3475]
|
237 |
+
* Tweak - Add admin notice for Virtual Events. [TEC-3620]
|
238 |
+
* Language - 3 new strings added, 246 updated, 1 fuzzied, and 1 obsoleted
|
239 |
+
|
240 |
= [5.1.3] 2020-06-22 =
|
241 |
|
242 |
* Tweak - Add new filter `tribe_events_filter_views_v2_plural_events_label` to customize the label in V2 views. [VE-9]
|
site_owner_data_collection_statement.html
DELETED
@@ -1,48 +0,0 @@
|
|
1 |
-
<!DOCTYPE html>
|
2 |
-
<html>
|
3 |
-
<head>
|
4 |
-
<meta charset="utf-8">
|
5 |
-
<title>The Events Calendar (and Event Aggregator) | Modern Tribe's Site Owner Data Collection Statement</title>
|
6 |
-
<meta name="description" content="Modern Tribe's Site Owner Data Collection Statement for The Events Calendar Plugin">
|
7 |
-
<meta name="author" content="Modern Tribe, Inc.">
|
8 |
-
<meta name="copyright" content="Modern Tribe, Inc.">
|
9 |
-
<style>
|
10 |
-
html{background-color:#FFFFFF;color:#383838;}
|
11 |
-
::-moz-selection{background:#444444;color:#DDDDDD;}
|
12 |
-
::selection{background:#444444;color:#DDDDDD;}
|
13 |
-
body{margin: 0 auto;padding: 0;max-width: 650px;font-family:Helvetica,Arial,sans-serif}
|
14 |
-
body>*{padding-left: 20px;padding-right: 20px;}
|
15 |
-
a{color:#0e9fd6;}
|
16 |
-
h2,h3,footer {color: #fff;background-color: #0e9fd6;margin: 0;padding: 20px;}
|
17 |
-
ul,ol{margin-left: 20px;}
|
18 |
-
footer a{color:#fff;}
|
19 |
-
</style>
|
20 |
-
</head>
|
21 |
-
<body>
|
22 |
-
<h2>The Events Calendar (and Event Aggregator) | Site Owner Data Collection Statement</h2>
|
23 |
-
<p><a href="https://m.tri.be/1a3x">Modern Tribe, Inc</a> goes to great lengths to protect your data. To that end, you may review our <a href="https://m.tri.be/1a3y">Privacy Policy</a> at any time.</p>
|
24 |
-
<p>We understand that you may have similar commitments to your own users, so we're providing the following data policy statement for your use.</p>
|
25 |
-
<p>You can use this statement to help your users better understand what types of data may be collected through the direct usage of our plugins, including The Events Calendar plugin and Event Aggregator (a service we provide that you can optionally configure The Events Calendar to connect with).</p>
|
26 |
-
<p>We hope that the statement will be useful to you when you form your own policy statements and you are permitted to copy and amend it as you see fit. However, it’s important to note that:</p>
|
27 |
-
<ul>
|
28 |
-
<li>We strongly recommend you consult with your Attorney before using it</li>
|
29 |
-
<li>We cannot provide any support or guidance with regards to your own policy statements and data collection methods</li>
|
30 |
-
</ul>
|
31 |
-
<h3>Policy Statement</h3>
|
32 |
-
<p>Through the usage of The Events Calendar plugin, the following information may be collected and stored within your website’s database:</p>
|
33 |
-
<ul>
|
34 |
-
<li>Venue information: name, address, city, country, state, postal code, phone, website</li>
|
35 |
-
<li>Organizer information: name, phone, website, email</li>
|
36 |
-
<li>Event information: website, cost, description, date, time, image</li>
|
37 |
-
<li>Other: API keys if supplied (including for Google Maps)</li>
|
38 |
-
</ul>
|
39 |
-
<p>If you also use Event Aggregator via The Events Calendar, the following information may be collected and stored within your website’s database:</p>
|
40 |
-
<ul>
|
41 |
-
<li>All data present within a CSV or ICS file and external URLs (for events, venues, organizers, and tickets)</li>
|
42 |
-
<li>The data that Event Aggregator can import is the same independent of import origin</li>
|
43 |
-
<li>Import origin data (URL from where events are being imported - such as Eventbrite, MeetUp, other compatible URL sources, and more, which can include similar or same data as listed above)</li>
|
44 |
-
<li>Facebook and Meetup API keys</li>
|
45 |
-
</ul>
|
46 |
-
<footer>©2018 <a href="https://m.tri.be/1a3x">Modern Tribe Inc.</a></footer>
|
47 |
-
</body>
|
48 |
-
</html>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/Tribe/Admin/Notice/Marketing.php
CHANGED
@@ -7,6 +7,7 @@ class Tribe__Events__Admin__Notice__Marketing {
|
|
7 |
* Register marketing notices.
|
8 |
*
|
9 |
* @since 4.6.17
|
|
|
10 |
*/
|
11 |
public function hook() {
|
12 |
tribe_notice(
|
@@ -31,6 +32,17 @@ class Tribe__Events__Admin__Notice__Marketing {
|
|
31 |
array( $this, 'should_display_gutenberg' )
|
32 |
);
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
}
|
35 |
|
36 |
/**
|
@@ -60,6 +72,21 @@ class Tribe__Events__Admin__Notice__Marketing {
|
|
60 |
return $today >= $start && $today <= $end;
|
61 |
}
|
62 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
63 |
/**
|
64 |
* HTML for the notice for sites using UTC Timezones.
|
65 |
*
|
@@ -117,4 +144,24 @@ class Tribe__Events__Admin__Notice__Marketing {
|
|
117 |
return $notice;
|
118 |
}
|
119 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
}
|
7 |
* Register marketing notices.
|
8 |
*
|
9 |
* @since 4.6.17
|
10 |
+
* @since TBD - add Virtual Events Notice.
|
11 |
*/
|
12 |
public function hook() {
|
13 |
tribe_notice(
|
32 |
array( $this, 'should_display_gutenberg' )
|
33 |
);
|
34 |
|
35 |
+
tribe_notice(
|
36 |
+
'tribe-virtual-events',
|
37 |
+
array( $this, 'virtual_events_notice' ),
|
38 |
+
array(
|
39 |
+
'dismiss' => 1,
|
40 |
+
'type' => 'warning',
|
41 |
+
'wrap' => 'p',
|
42 |
+
),
|
43 |
+
array( $this, 'should_display_virtual_events' )
|
44 |
+
);
|
45 |
+
|
46 |
}
|
47 |
|
48 |
/**
|
72 |
return $today >= $start && $today <= $end;
|
73 |
}
|
74 |
|
75 |
+
/**
|
76 |
+
* Check if we should display the Virtual Events Notice.
|
77 |
+
*
|
78 |
+
* @since TBD
|
79 |
+
*
|
80 |
+
* @return bool Whether to display the notice.
|
81 |
+
*/
|
82 |
+
public function should_display_virtual_events() {
|
83 |
+
$today = date_create()->format( 'Y-m-d' );
|
84 |
+
$start = '2020-06-21';
|
85 |
+
$end = '2020-07-08';
|
86 |
+
|
87 |
+
return $today >= $start && $today <= $end;
|
88 |
+
}
|
89 |
+
|
90 |
/**
|
91 |
* HTML for the notice for sites using UTC Timezones.
|
92 |
*
|
144 |
return $notice;
|
145 |
}
|
146 |
|
147 |
+
/**
|
148 |
+
* Announcement Notice for Virtual Events.
|
149 |
+
*
|
150 |
+
* @since TBD
|
151 |
+
*
|
152 |
+
* @return string The notice html.
|
153 |
+
*/
|
154 |
+
public function virtual_events_notice() {
|
155 |
+
$link = sprintf(
|
156 |
+
'<a href="%1$s" target="_blank">%2$s</a>',
|
157 |
+
esc_url( 'http://m.tri.be/1aky' ),
|
158 |
+
esc_html__( 'Virtual Events for The Events Calendar', 'the-events-calendar' )
|
159 |
+
);
|
160 |
+
|
161 |
+
return sprintf(
|
162 |
+
/* translators: the placeholder is for the link to the Virtual Events for The Events Calendar information and download page. */
|
163 |
+
_x( '🎉 Just launched: %s! Identify events as virtual events, Zoom integration, hidden livestream links and more.', 'Virtual Events Announcement Banner', 'the-events-calendar' ),
|
164 |
+
$link
|
165 |
+
);
|
166 |
+
}
|
167 |
}
|
src/Tribe/Aggregator/API/Import.php
CHANGED
@@ -107,9 +107,21 @@ class Tribe__Events__Aggregator__API__Import extends Tribe__Events__Aggregator__
|
|
107 |
* @return stdClass|WP_Error
|
108 |
*/
|
109 |
public function create( $args ) {
|
110 |
-
|
|
|
111 |
|
112 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
}
|
114 |
|
115 |
/**
|
107 |
* @return stdClass|WP_Error
|
108 |
*/
|
109 |
public function create( $args ) {
|
110 |
+
return $this->service->post_import( $args );
|
111 |
+
}
|
112 |
|
113 |
+
/**
|
114 |
+
* Update the details of an existing import into EA server.
|
115 |
+
*
|
116 |
+
* @since TBD
|
117 |
+
*
|
118 |
+
* @param $import_id string The ID of the import to be updated.
|
119 |
+
* @param $args array An key, value array representing the values to update on the EA server.
|
120 |
+
*
|
121 |
+
* @return object|stdClass|string|WP_Error Response from EA server.
|
122 |
+
*/
|
123 |
+
public function update( $import_id, $args ) {
|
124 |
+
return $this->service->update_import( $import_id, $args );
|
125 |
}
|
126 |
|
127 |
/**
|
src/Tribe/Aggregator/Page.php
CHANGED
@@ -310,12 +310,13 @@ class Tribe__Events__Aggregator__Page {
|
|
310 |
/**
|
311 |
* A very simple method to include a Aggregator Template, allowing filtering and additions using hooks.
|
312 |
*
|
313 |
-
* @param
|
314 |
-
* @param
|
315 |
-
* @param
|
|
|
316 |
* @return string Final Content HTML
|
317 |
*/
|
318 |
-
public function template( $name, $data =
|
319 |
// Clean this Variable
|
320 |
$name = array_map( 'sanitize_title_with_dashes', (array) explode( '/', $name ) );
|
321 |
|
@@ -325,9 +326,13 @@ class Tribe__Events__Aggregator__Page {
|
|
325 |
/**
|
326 |
* A more Specific Filter that will include the template name
|
327 |
*
|
328 |
-
* @
|
329 |
-
*
|
330 |
-
* @param
|
|
|
|
|
|
|
|
|
331 |
*/
|
332 |
$file = apply_filters( 'tribe_aggregator_template_file', $file, $name, $data );
|
333 |
|
310 |
/**
|
311 |
* A very simple method to include a Aggregator Template, allowing filtering and additions using hooks.
|
312 |
*
|
313 |
+
* @param string $name Which file we are talking about including-
|
314 |
+
* @param array $data Any context data you need to expose to this file.
|
315 |
+
* @param boolean $echo If we should also print the Template.
|
316 |
+
*
|
317 |
* @return string Final Content HTML
|
318 |
*/
|
319 |
+
public function template( $name, $data = [], $echo = true ) {
|
320 |
// Clean this Variable
|
321 |
$name = array_map( 'sanitize_title_with_dashes', (array) explode( '/', $name ) );
|
322 |
|
326 |
/**
|
327 |
* A more Specific Filter that will include the template name
|
328 |
*
|
329 |
+
* @since 4.3
|
330 |
+
*
|
331 |
+
* @param string $file Complete path to include the PHP File.
|
332 |
+
* @param array $name Template name.
|
333 |
+
* @param array $data The Data that will be used on this template.
|
334 |
+
*
|
335 |
+
* @return string $file Complete path to include the PHP File
|
336 |
*/
|
337 |
$file = apply_filters( 'tribe_aggregator_template_file', $file, $name, $data );
|
338 |
|
src/Tribe/Aggregator/Record/Abstract.php
CHANGED
@@ -2539,15 +2539,21 @@ abstract class Tribe__Events__Aggregator__Record__Abstract {
|
|
2539 |
* @return bool Whether the image was attached to the event or not.
|
2540 |
*/
|
2541 |
public function import_event_image( $event, $activity ) {
|
|
|
|
|
|
|
|
|
|
|
2542 |
/**
|
2543 |
* Whether the event image should be imported and attached or not.
|
2544 |
*
|
2545 |
* @since 4.6.9
|
2546 |
*
|
2547 |
-
* @param bool $import_event_image Defaults to `true
|
2548 |
-
* @param array $event The event post ID
|
2549 |
-
* @param
|
2550 |
-
*
|
|
|
2551 |
*/
|
2552 |
$import_event_image = apply_filters( 'tribe_aggregator_import_event_image', true, $event, $activity );
|
2553 |
|
@@ -2555,10 +2561,6 @@ abstract class Tribe__Events__Aggregator__Record__Abstract {
|
|
2555 |
return false;
|
2556 |
}
|
2557 |
|
2558 |
-
if ( empty( $event['ID'] ) || ! tribe_is_event( $event['ID'] ) ) {
|
2559 |
-
return false;
|
2560 |
-
}
|
2561 |
-
|
2562 |
if ( is_object( $event['image'] ) ) {
|
2563 |
$image = $this->import_aggregator_image( $event );
|
2564 |
} else {
|
2539 |
* @return bool Whether the image was attached to the event or not.
|
2540 |
*/
|
2541 |
public function import_event_image( $event, $activity ) {
|
2542 |
+
// If this is not a valid event no need for additional work.
|
2543 |
+
if ( empty( $event['ID'] ) || ! tribe_is_event( $event['ID'] ) ) {
|
2544 |
+
return false;
|
2545 |
+
}
|
2546 |
+
|
2547 |
/**
|
2548 |
* Whether the event image should be imported and attached or not.
|
2549 |
*
|
2550 |
* @since 4.6.9
|
2551 |
*
|
2552 |
+
* @param bool $import_event_image Defaults to `true`.
|
2553 |
+
* @param array $event The event post ID.
|
2554 |
+
* @param Tribe__Events__Aggregator__Record__Activity $activity The importer activity so far.
|
2555 |
+
*
|
2556 |
+
* @return bool Either to import or not the image of the event.
|
2557 |
*/
|
2558 |
$import_event_image = apply_filters( 'tribe_aggregator_import_event_image', true, $event, $activity );
|
2559 |
|
2561 |
return false;
|
2562 |
}
|
2563 |
|
|
|
|
|
|
|
|
|
2564 |
if ( is_object( $event['image'] ) ) {
|
2565 |
$image = $this->import_aggregator_image( $event );
|
2566 |
} else {
|
src/Tribe/Aggregator/Record/Activity.php
CHANGED
@@ -42,11 +42,12 @@ class Tribe__Events__Aggregator__Record__Activity {
|
|
42 |
* Creates an easy way to test valid Actions
|
43 |
* @var array
|
44 |
*/
|
45 |
-
private static $actions =
|
46 |
-
'created'
|
47 |
-
'updated'
|
48 |
-
'skipped'
|
49 |
-
|
|
|
50 |
|
51 |
public function __construct() {
|
52 |
// The items are registered on the wakeup to avoid saving unnecessary data
|
42 |
* Creates an easy way to test valid Actions
|
43 |
* @var array
|
44 |
*/
|
45 |
+
private static $actions = [
|
46 |
+
'created' => [],
|
47 |
+
'updated' => [],
|
48 |
+
'skipped' => [],
|
49 |
+
'scheduled' => [],
|
50 |
+
];
|
51 |
|
52 |
public function __construct() {
|
53 |
// The items are registered on the wakeup to avoid saving unnecessary data
|
src/Tribe/Aggregator/Record/CSV.php
CHANGED
@@ -1,6 +1,10 @@
|
|
1 |
<?php
|
2 |
|
|
|
|
|
3 |
class Tribe__Events__Aggregator__Record__CSV extends Tribe__Events__Aggregator__Record__Abstract {
|
|
|
|
|
4 |
private $state = '';
|
5 |
private $output = '';
|
6 |
private $messages = array();
|
@@ -341,6 +345,13 @@ class Tribe__Events__Aggregator__Record__CSV extends Tribe__Events__Aggregator__
|
|
341 |
}
|
342 |
|
343 |
public function continue_import() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
344 |
$importer = $this->get_importer();
|
345 |
$importer->is_aggregator = true;
|
346 |
$importer->aggregator_record = $this;
|
@@ -399,6 +410,9 @@ class Tribe__Events__Aggregator__Record__CSV extends Tribe__Events__Aggregator__
|
|
399 |
$new_offset = $importer->import_complete() ? -1 : $importer->get_last_completed_row();
|
400 |
update_option( 'tribe_events_importer_offset', $new_offset );
|
401 |
|
|
|
|
|
|
|
402 |
if ( -1 === $new_offset ) {
|
403 |
do_action( 'tribe_events_csv_import_complete' );
|
404 |
}
|
@@ -458,4 +472,4 @@ class Tribe__Events__Aggregator__Record__CSV extends Tribe__Events__Aggregator__
|
|
458 |
private function clean_up_after_import() {
|
459 |
Tribe__Events__Importer__File_Uploader::clear_old_files();
|
460 |
}
|
461 |
-
}
|
1 |
<?php
|
2 |
|
3 |
+
use Tribe\Traits\With_DB_Lock;
|
4 |
+
|
5 |
class Tribe__Events__Aggregator__Record__CSV extends Tribe__Events__Aggregator__Record__Abstract {
|
6 |
+
use With_DB_Lock;
|
7 |
+
|
8 |
private $state = '';
|
9 |
private $output = '';
|
10 |
private $messages = array();
|
345 |
}
|
346 |
|
347 |
public function continue_import() {
|
348 |
+
|
349 |
+
$lock_key = 'tribe_ea_csv_import_' . $this->id;
|
350 |
+
|
351 |
+
if ( ! $this->acquire_db_lock( $lock_key ) ) {
|
352 |
+
return $this->meta['activity'];
|
353 |
+
}
|
354 |
+
|
355 |
$importer = $this->get_importer();
|
356 |
$importer->is_aggregator = true;
|
357 |
$importer->aggregator_record = $this;
|
410 |
$new_offset = $importer->import_complete() ? -1 : $importer->get_last_completed_row();
|
411 |
update_option( 'tribe_events_importer_offset', $new_offset );
|
412 |
|
413 |
+
$lock_key = 'tribe_ea_csv_import_' . $this->id;
|
414 |
+
$this->release_db_lock( $lock_key );
|
415 |
+
|
416 |
if ( -1 === $new_offset ) {
|
417 |
do_action( 'tribe_events_csv_import_complete' );
|
418 |
}
|
472 |
private function clean_up_after_import() {
|
473 |
Tribe__Events__Importer__File_Uploader::clear_old_files();
|
474 |
}
|
475 |
+
}
|
src/Tribe/Aggregator/Service.php
CHANGED
@@ -526,6 +526,50 @@ class Tribe__Events__Aggregator__Service {
|
|
526 |
return $this->post( 'import', $args );
|
527 |
}
|
528 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
529 |
/**
|
530 |
* Fetches an image from the Event Aggregator service
|
531 |
*
|
526 |
return $this->post( 'import', $args );
|
527 |
}
|
528 |
|
529 |
+
/**
|
530 |
+
* Update the details of an existing import into EA server.
|
531 |
+
*
|
532 |
+
* @since TBD
|
533 |
+
*
|
534 |
+
* @param $import_id string The ID of the import to be updated.
|
535 |
+
* @param $args array An key, value array representing the values to update on the EA server.
|
536 |
+
*
|
537 |
+
* @return object|stdClass|string|WP_Error Response from EA server.
|
538 |
+
*/
|
539 |
+
public function update_import( $import_id, $args ) {
|
540 |
+
$api = $this->api();
|
541 |
+
|
542 |
+
// if the user doesn't have a license key, don't bother hitting the service.
|
543 |
+
if ( is_wp_error( $api ) ) {
|
544 |
+
return $api;
|
545 |
+
}
|
546 |
+
|
547 |
+
/**
|
548 |
+
* Allow any external sources (plugins) to add licenses attached to the call to the EA server as part
|
549 |
+
* of an array on licenses, useful when you have different products accessing EA server.
|
550 |
+
*
|
551 |
+
* @since TBD
|
552 |
+
*
|
553 |
+
* @param bool|string $pue_key PUE key
|
554 |
+
* @param array $args Arguments to queue the import
|
555 |
+
* @param self $record Which record we are dealing with
|
556 |
+
*/
|
557 |
+
$licenses = apply_filters( 'tribe_aggregator_service_put_pue_licenses', [], $args, $this );
|
558 |
+
|
559 |
+
// If we have a key we add that to the Arguments.
|
560 |
+
if ( ! empty( $licenses ) ) {
|
561 |
+
$args['licenses'] = $licenses;
|
562 |
+
}
|
563 |
+
|
564 |
+
return $this->post(
|
565 |
+
"import/{$import_id}",
|
566 |
+
[
|
567 |
+
'body' => $args,
|
568 |
+
'method' => 'PUT',
|
569 |
+
]
|
570 |
+
);
|
571 |
+
}
|
572 |
+
|
573 |
/**
|
574 |
* Fetches an image from the Event Aggregator service
|
575 |
*
|
src/Tribe/Aggregator/Tabs/New.php
CHANGED
@@ -284,6 +284,20 @@ class Tribe__Events__Aggregator__Tabs__New extends Tribe__Events__Aggregator__Ta
|
|
284 |
);
|
285 |
}
|
286 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
287 |
if ( $queue && ! $messages ) {
|
288 |
$messages['success'][] = sprintf(
|
289 |
__( 'No %1$s were imported or updated.', 'the-events-calendar' ),
|
284 |
);
|
285 |
}
|
286 |
|
287 |
+
$images_scheduled = $queue->activity->get( 'images', 'scheduled' );
|
288 |
+
if ( ! empty( $images_scheduled ) ) {
|
289 |
+
$messages['success'][] = sprintf(
|
290 |
+
// translators: %1$d is replaced with a number of scheduled images.
|
291 |
+
_n(
|
292 |
+
'%1$d new image was scheduled for import.',
|
293 |
+
'%1$d new images were scheduled for import.',
|
294 |
+
$queue->activity->count( 'images', 'scheduled' ),
|
295 |
+
'the-events-calendar'
|
296 |
+
),
|
297 |
+
$queue->activity->count( 'images', 'scheduled' )
|
298 |
+
);
|
299 |
+
}
|
300 |
+
|
301 |
if ( $queue && ! $messages ) {
|
302 |
$messages['success'][] = sprintf(
|
303 |
__( 'No %1$s were imported or updated.', 'the-events-calendar' ),
|
src/Tribe/Main.php
CHANGED
@@ -5,6 +5,8 @@
|
|
5 |
|
6 |
// Don't load directly
|
7 |
|
|
|
|
|
8 |
if ( ! defined( 'ABSPATH' ) ) {
|
9 |
die( '-1' );
|
10 |
}
|
@@ -33,7 +35,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
33 |
const VENUE_POST_TYPE = 'tribe_venue';
|
34 |
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
35 |
|
36 |
-
const VERSION = '5.1.
|
37 |
|
38 |
/**
|
39 |
* Min Pro Addon
|
@@ -632,10 +634,16 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
632 |
tribe_singleton( 'tec.customizer.widget', new Tribe__Events__Customizer__Widget() );
|
633 |
}
|
634 |
|
|
|
|
|
|
|
635 |
/**
|
636 |
* Allows other plugins and services to override/change the bound implementations.
|
637 |
*/
|
638 |
do_action( 'tribe_events_bound_implementations' );
|
|
|
|
|
|
|
639 |
}
|
640 |
|
641 |
/**
|
5 |
|
6 |
// Don't load directly
|
7 |
|
8 |
+
use Tribe\DB_Lock;
|
9 |
+
|
10 |
if ( ! defined( 'ABSPATH' ) ) {
|
11 |
die( '-1' );
|
12 |
}
|
35 |
const VENUE_POST_TYPE = 'tribe_venue';
|
36 |
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
37 |
|
38 |
+
const VERSION = '5.1.4.1';
|
39 |
|
40 |
/**
|
41 |
* Min Pro Addon
|
634 |
tribe_singleton( 'tec.customizer.widget', new Tribe__Events__Customizer__Widget() );
|
635 |
}
|
636 |
|
637 |
+
// First boot.
|
638 |
+
tribe_register_provider( Tribe\Events\Service_Providers\First_Boot::class );
|
639 |
+
|
640 |
/**
|
641 |
* Allows other plugins and services to override/change the bound implementations.
|
642 |
*/
|
643 |
do_action( 'tribe_events_bound_implementations' );
|
644 |
+
|
645 |
+
// Database locks.
|
646 |
+
tribe_singleton( 'db-lock', DB_Lock::class );
|
647 |
}
|
648 |
|
649 |
/**
|
src/Tribe/Service_Providers/First_Boot.php
ADDED
@@ -0,0 +1,75 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Handles the set up of The Events Calendar plugin on first boot (fresh install) only.
|
4 |
+
*
|
5 |
+
* In place of scattering defaults in redundant checks in the code, this provider should group anything
|
6 |
+
* that fits into a "fresh install".
|
7 |
+
* The provider will not hook any filter if The Events Calendar did init already.
|
8 |
+
*
|
9 |
+
* @since TBD
|
10 |
+
*
|
11 |
+
* @package Tribe\Events\Service_Providers
|
12 |
+
*/
|
13 |
+
|
14 |
+
namespace Tribe\Events\Service_Providers;
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Class First_Boot
|
18 |
+
*
|
19 |
+
* @since TBD
|
20 |
+
*
|
21 |
+
* @package Tribe\Events\Service_Providers
|
22 |
+
*/
|
23 |
+
class First_Boot extends \tad_DI52_ServiceProvider {
|
24 |
+
|
25 |
+
/**
|
26 |
+
* Hooks the filters required to set up The Events Calendar after a fresh install.
|
27 |
+
*
|
28 |
+
* @since TBD
|
29 |
+
*/
|
30 |
+
public function register() {
|
31 |
+
$options = \Tribe__Settings_Manager::get_options();
|
32 |
+
|
33 |
+
if ( ! empty( $options['did_init'] ) ) {
|
34 |
+
// If we did init already, bail.
|
35 |
+
return;
|
36 |
+
}
|
37 |
+
|
38 |
+
add_action( 'tribe_events_bound_implementations', [ $this, 'set_default_options' ] );
|
39 |
+
|
40 |
+
/**
|
41 |
+
* Fires on The Events Calendar first boot.
|
42 |
+
*
|
43 |
+
* @since TBD
|
44 |
+
*/
|
45 |
+
do_action( 'tribe_events_first_boot' );
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Sets up The Events Calendar default options on first boot.
|
50 |
+
*
|
51 |
+
* @since TBD
|
52 |
+
*/
|
53 |
+
public function set_default_options() {
|
54 |
+
$options = \Tribe__Settings_Manager::get_options();
|
55 |
+
|
56 |
+
$options['did_init'] = true;
|
57 |
+
|
58 |
+
if ( ! isset( $options['tribeEventsTemplate'] ) ) {
|
59 |
+
// Set the Events Template default to "Default Events Template".
|
60 |
+
$options['tribeEventsTemplate'] = '';
|
61 |
+
}
|
62 |
+
|
63 |
+
if ( ! isset( $options['tribeEnableViews'] ) ) {
|
64 |
+
// Set the Enabled Views to List, Month, and Day.
|
65 |
+
$options['tribeEnableViews'] = [ 'list', 'month', 'day' ];
|
66 |
+
}
|
67 |
+
|
68 |
+
if ( ! isset( $options['viewOption'] ) ) {
|
69 |
+
// Set the Default View to List.
|
70 |
+
$options['viewOption'] = 'list';
|
71 |
+
}
|
72 |
+
|
73 |
+
\Tribe__Settings_Manager::set_options( $options );
|
74 |
+
}
|
75 |
+
}
|
src/Tribe/Template/Single_Event.php
CHANGED
@@ -35,6 +35,8 @@ if ( ! class_exists( 'Tribe__Events__Template__Single_Event' ) ) {
|
|
35 |
// Print JSON-LD markup on the `wp_head`
|
36 |
add_action( 'wp_head', array( Tribe__Events__JSON_LD__Event::instance(), 'markup' ) );
|
37 |
|
|
|
|
|
38 |
}
|
39 |
|
40 |
/**
|
@@ -119,5 +121,24 @@ if ( ! class_exists( 'Tribe__Events__Template__Single_Event' ) ) {
|
|
119 |
Tribe__Notices::set_notice( 'event-past', sprintf( esc_html__( 'This %s has passed.', 'the-events-calendar' ), $events_label_singular_lowercase ) );
|
120 |
}
|
121 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
}
|
123 |
}
|
35 |
// Print JSON-LD markup on the `wp_head`
|
36 |
add_action( 'wp_head', array( Tribe__Events__JSON_LD__Event::instance(), 'markup' ) );
|
37 |
|
38 |
+
// Add hook for body classes.
|
39 |
+
add_filter( 'tribe_body_classes_should_add', [ $this, 'body_classes_should_add' ], 10, 2 );
|
40 |
}
|
41 |
|
42 |
/**
|
121 |
Tribe__Notices::set_notice( 'event-past', sprintf( esc_html__( 'This %s has passed.', 'the-events-calendar' ), $events_label_singular_lowercase ) );
|
122 |
}
|
123 |
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* Hook into filter and add our logic for adding body classes.
|
127 |
+
*
|
128 |
+
* @since TBD
|
129 |
+
*
|
130 |
+
* @param boolean $add Whether to add classes or not.
|
131 |
+
* @param string $queue The queue we want to get 'admin', 'display', 'all'.
|
132 |
+
*
|
133 |
+
* @return boolean Whether body classes should be added or not.
|
134 |
+
*/
|
135 |
+
public function body_classes_should_add( $add, $queue ) {
|
136 |
+
// If we're on the front end and doing an event query, add classes.
|
137 |
+
if ( 'admin' !== $queue && tribe_is_event_query() ) {
|
138 |
+
return true;
|
139 |
+
}
|
140 |
+
|
141 |
+
return $add;
|
142 |
+
}
|
143 |
}
|
144 |
}
|
src/Tribe/Views/V2/Hooks.php
CHANGED
@@ -55,6 +55,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
|
|
55 |
protected function add_actions() {
|
56 |
add_action( 'rest_api_init', [ $this, 'register_rest_endpoints' ] );
|
57 |
add_action( 'tribe_common_loaded', [ $this, 'on_tribe_common_loaded' ], 1 );
|
|
|
58 |
add_action( 'wp_head', [ $this, 'on_wp_head' ], 1000 );
|
59 |
add_action( 'tribe_events_pre_rewrite', [ $this, 'on_tribe_events_pre_rewrite' ] );
|
60 |
add_action( 'wp_enqueue_scripts', [ $this, 'action_disable_assets_v1' ], 0 );
|
@@ -76,7 +77,9 @@ class Hooks extends \tad_DI52_ServiceProvider {
|
|
76 |
add_filter( 'template_include', [ $this, 'filter_template_include' ], 50 );
|
77 |
add_filter( 'embed_template', [ $this, 'filter_template_include' ], 50 );
|
78 |
add_filter( 'posts_pre_query', [ $this, 'filter_posts_pre_query' ], 20, 2 );
|
79 |
-
add_filter( 'body_class', [ $this, '
|
|
|
|
|
80 |
add_filter( 'query_vars', [ $this, 'filter_query_vars' ], 15 );
|
81 |
add_filter( 'tribe_rewrite_canonical_query_args', [ $this, 'filter_map_canonical_query_args' ], 15, 3 );
|
82 |
add_filter( 'admin_post_thumbnail_html', [ $this, 'filter_admin_post_thumbnail_html' ] );
|
@@ -113,7 +116,7 @@ class Hooks extends \tad_DI52_ServiceProvider {
|
|
113 |
|
114 |
/**
|
115 |
* Includes includes edge cases for filtering when we need to manually overwrite theme's read
|
116 |
-
* more link when excerpt is cut
|
117 |
*
|
118 |
* @see tribe_events_get_the_excerpt
|
119 |
*
|
@@ -299,13 +302,64 @@ class Hooks extends \tad_DI52_ServiceProvider {
|
|
299 |
*
|
300 |
* @return array $classes
|
301 |
*/
|
302 |
-
public function
|
303 |
-
$classes = $this->container->make( Theme_Compatibility::class )->filter_add_body_classes( $classes );
|
304 |
$classes = $this->container->make( Template_Bootstrap::class )->filter_add_body_classes( $classes );
|
305 |
|
306 |
return $classes;
|
307 |
}
|
308 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
309 |
/**
|
310 |
* Filter the plural events label for Featured V2 Views.
|
311 |
*
|
@@ -435,13 +489,23 @@ class Hooks extends \tad_DI52_ServiceProvider {
|
|
435 |
*
|
436 |
* @since 4.9.13
|
437 |
*
|
438 |
-
* @param mixed
|
|
|
|
|
|
|
439 |
*
|
440 |
* @return string A redirection URL, or `false` to prevent redirection.
|
441 |
*/
|
442 |
public function filter_redirect_canonical( $redirect_url = null, $original_url = null ) {
|
443 |
-
if (
|
444 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
445 |
}
|
446 |
|
447 |
$context = tribe_context();
|
55 |
protected function add_actions() {
|
56 |
add_action( 'rest_api_init', [ $this, 'register_rest_endpoints' ] );
|
57 |
add_action( 'tribe_common_loaded', [ $this, 'on_tribe_common_loaded' ], 1 );
|
58 |
+
add_action( 'parse_query', [ $this, 'add_body_classes' ], 55 );
|
59 |
add_action( 'wp_head', [ $this, 'on_wp_head' ], 1000 );
|
60 |
add_action( 'tribe_events_pre_rewrite', [ $this, 'on_tribe_events_pre_rewrite' ] );
|
61 |
add_action( 'wp_enqueue_scripts', [ $this, 'action_disable_assets_v1' ], 0 );
|
77 |
add_filter( 'template_include', [ $this, 'filter_template_include' ], 50 );
|
78 |
add_filter( 'embed_template', [ $this, 'filter_template_include' ], 50 );
|
79 |
add_filter( 'posts_pre_query', [ $this, 'filter_posts_pre_query' ], 20, 2 );
|
80 |
+
add_filter( 'body_class', [ $this, 'filter_body_classes' ] );
|
81 |
+
add_filter( 'tribe_body_class_should_add_to_queue', [ $this, 'body_class_should_add_to_queue' ], 10, 3 );
|
82 |
+
add_filter( 'tribe_body_classes_should_add', [ $this, 'body_classes_should_add' ], 10, 3 );
|
83 |
add_filter( 'query_vars', [ $this, 'filter_query_vars' ], 15 );
|
84 |
add_filter( 'tribe_rewrite_canonical_query_args', [ $this, 'filter_map_canonical_query_args' ], 15, 3 );
|
85 |
add_filter( 'admin_post_thumbnail_html', [ $this, 'filter_admin_post_thumbnail_html' ] );
|
116 |
|
117 |
/**
|
118 |
* Includes includes edge cases for filtering when we need to manually overwrite theme's read
|
119 |
+
* more link when excerpt is cut programmatically.
|
120 |
*
|
121 |
* @see tribe_events_get_the_excerpt
|
122 |
*
|
302 |
*
|
303 |
* @return array $classes
|
304 |
*/
|
305 |
+
public function filter_body_classes( $classes ) {
|
|
|
306 |
$classes = $this->container->make( Template_Bootstrap::class )->filter_add_body_classes( $classes );
|
307 |
|
308 |
return $classes;
|
309 |
}
|
310 |
|
311 |
+
/**
|
312 |
+
* Add body classes.
|
313 |
+
*
|
314 |
+
* @since TBD
|
315 |
+
*
|
316 |
+
* @return void
|
317 |
+
*/
|
318 |
+
public function add_body_classes() {
|
319 |
+
$this->container->make( Theme_Compatibility::class )->add_body_classes();
|
320 |
+
$this->container->make( Template_Bootstrap::class )->add_body_classes();
|
321 |
+
}
|
322 |
+
|
323 |
+
/**
|
324 |
+
* Contains hooks to the logic for if this object's classes should be added to the queue.
|
325 |
+
*
|
326 |
+
* @since TBD
|
327 |
+
*
|
328 |
+
* @param boolean $add Whether to add the class to the queue or not.
|
329 |
+
* @param array $class The array of body class names to add.
|
330 |
+
* @param string $queue The queue we want to get 'admin', 'display', 'all'.
|
331 |
+
* @return boolean
|
332 |
+
*/
|
333 |
+
public function body_class_should_add_to_queue( $add, $class, $queue ) {
|
334 |
+
$add = $this->container->make( Template_Bootstrap::class )->should_add_body_class_to_queue( $add, $class, $queue );
|
335 |
+
$add = $this->container->make( Theme_Compatibility::class )->should_add_body_class_to_queue( $add, $class, $queue );
|
336 |
+
|
337 |
+
return $add;
|
338 |
+
}
|
339 |
+
|
340 |
+
/**
|
341 |
+
* Logic for if body classes should be added.
|
342 |
+
*
|
343 |
+
* @since TBD
|
344 |
+
*
|
345 |
+
* @param boolean $add Whether to add classes or not.
|
346 |
+
* @param string $queue The queue we want to get 'admin', 'display', 'all'.
|
347 |
+
*
|
348 |
+
* @return boolean Whether to add classes or not.
|
349 |
+
*/
|
350 |
+
public function body_classes_should_add( $add, $queue ) {
|
351 |
+
$context = tribe_context();
|
352 |
+
|
353 |
+
if (
|
354 |
+
$context->get( 'event_post_type', false )
|
355 |
+
|| $context->get( 'shortcode', false )
|
356 |
+
) {
|
357 |
+
return true;
|
358 |
+
}
|
359 |
+
|
360 |
+
return $add;
|
361 |
+
}
|
362 |
+
|
363 |
/**
|
364 |
* Filter the plural events label for Featured V2 Views.
|
365 |
*
|
489 |
*
|
490 |
* @since 4.9.13
|
491 |
*
|
492 |
+
* @param mixed $redirect_url URL which we will redirect to.
|
493 |
+
* @param string|int $original_url The original URL if this method runs on the `redirect_canonical` filter, else
|
494 |
+
* the redirect status (e.g. `301`) if this method runs in the context of the
|
495 |
+
* `wp_redirect` filter.
|
496 |
*
|
497 |
* @return string A redirection URL, or `false` to prevent redirection.
|
498 |
*/
|
499 |
public function filter_redirect_canonical( $redirect_url = null, $original_url = null ) {
|
500 |
+
if ( doing_filter( 'redirect_canonical' ) ) {
|
501 |
+
/*
|
502 |
+
* If we're not running in the context of the `redirect_canonical` filter, skip this check
|
503 |
+
* as it would happen between a string (`$redirect_url`) and an integer (the redirect HTTP
|
504 |
+
* status code).
|
505 |
+
*/
|
506 |
+
if ( trailingslashit( $original_url ) === trailingslashit( $redirect_url ) ) {
|
507 |
+
return $redirect_url;
|
508 |
+
}
|
509 |
}
|
510 |
|
511 |
$context = tribe_context();
|
src/Tribe/Views/V2/Template/Page.php
CHANGED
@@ -360,12 +360,12 @@ class Page {
|
|
360 |
$should_hijack = false;
|
361 |
}
|
362 |
|
363 |
-
//
|
364 |
if ( 'event' === tribe( Template_Bootstrap::class )->get_template_setting() ) {
|
365 |
$should_hijack = false;
|
366 |
}
|
367 |
|
368 |
-
// We
|
369 |
if ( ! $query->is_main_query() ) {
|
370 |
$should_hijack = false;
|
371 |
}
|
360 |
$should_hijack = false;
|
361 |
}
|
362 |
|
363 |
+
// Don't hijack event based.
|
364 |
if ( 'event' === tribe( Template_Bootstrap::class )->get_template_setting() ) {
|
365 |
$should_hijack = false;
|
366 |
}
|
367 |
|
368 |
+
// We don't want the main Query.
|
369 |
if ( ! $query->is_main_query() ) {
|
370 |
$should_hijack = false;
|
371 |
}
|
src/Tribe/Views/V2/Template_Bootstrap.php
CHANGED
@@ -10,6 +10,7 @@
|
|
10 |
*/
|
11 |
namespace Tribe\Events\Views\V2;
|
12 |
|
|
|
13 |
use Tribe__Events__Main as TEC;
|
14 |
use Tribe__Events__Templates as V1_Event_Templates;
|
15 |
use Tribe__Notices;
|
@@ -198,7 +199,7 @@ class Template_Bootstrap {
|
|
198 |
*
|
199 |
* @since 5.0.0
|
200 |
*
|
201 |
-
* @param string $pre_html Allow pre-filtering the HTML that we will
|
202 |
* @param string $view_slug The slug of the View that will be built, based on the context.
|
203 |
* @param \Tribe__Context $context Tribe context used to setup the view.
|
204 |
* @param \WP_Query $query The current WP Query object.
|
@@ -334,7 +335,7 @@ class Template_Bootstrap {
|
|
334 |
*
|
335 |
* @param string $template The template located by WordPress.
|
336 |
*
|
337 |
-
* @return string Path to the File that
|
338 |
*/
|
339 |
public function filter_template_include( $template ) {
|
340 |
$query = tribe_get_global_query_object();
|
@@ -371,23 +372,61 @@ class Template_Bootstrap {
|
|
371 |
$setting = $this->get_template_setting();
|
372 |
$template = $this->get_template_object()->get_path();
|
373 |
|
374 |
-
if ( 'page'
|
375 |
-
$classes
|
|
|
|
|
|
|
376 |
|
377 |
-
|
378 |
-
|
379 |
|
380 |
-
|
381 |
-
|
382 |
-
}
|
383 |
}
|
384 |
-
} else {
|
385 |
-
$classes[] = 'tribe-events-page-template';
|
386 |
}
|
387 |
|
388 |
return $classes;
|
389 |
}
|
390 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
391 |
/**
|
392 |
* Filter the template file in case we're in single event
|
393 |
* and we need to use the theme overrides.
|
@@ -407,7 +446,7 @@ class Template_Bootstrap {
|
|
407 |
|
408 |
$template_name = end( $name );
|
409 |
|
410 |
-
// Bail when we
|
411 |
if ( 'default-template' !== $template_name ) {
|
412 |
return $file;
|
413 |
}
|
10 |
*/
|
11 |
namespace Tribe\Events\Views\V2;
|
12 |
|
13 |
+
use Tribe\Utils\Body_Classes;
|
14 |
use Tribe__Events__Main as TEC;
|
15 |
use Tribe__Events__Templates as V1_Event_Templates;
|
16 |
use Tribe__Notices;
|
199 |
*
|
200 |
* @since 5.0.0
|
201 |
*
|
202 |
+
* @param string $pre_html Allow pre-filtering the HTML that we will bootstrap.
|
203 |
* @param string $view_slug The slug of the View that will be built, based on the context.
|
204 |
* @param \Tribe__Context $context Tribe context used to setup the view.
|
205 |
* @param \WP_Query $query The current WP Query object.
|
335 |
*
|
336 |
* @param string $template The template located by WordPress.
|
337 |
*
|
338 |
+
* @return string Path to the File that initializes the template
|
339 |
*/
|
340 |
public function filter_template_include( $template ) {
|
341 |
$query = tribe_get_global_query_object();
|
372 |
$setting = $this->get_template_setting();
|
373 |
$template = $this->get_template_object()->get_path();
|
374 |
|
375 |
+
if ( 'page' !== $setting ) {
|
376 |
+
return $classes;
|
377 |
+
}
|
378 |
+
|
379 |
+
$classes[] = 'page-template-' . sanitize_title( $template );
|
380 |
|
381 |
+
if ( ! is_tax() ) {
|
382 |
+
$key = array_search( 'archive', $classes );
|
383 |
|
384 |
+
if ( false !== $key ) {
|
385 |
+
unset( $classes[ $key ] );
|
|
|
386 |
}
|
|
|
|
|
387 |
}
|
388 |
|
389 |
return $classes;
|
390 |
}
|
391 |
|
392 |
+
/**
|
393 |
+
* Contains the logic for if this object's classes should be added to the queue.
|
394 |
+
*
|
395 |
+
* @since TBD
|
396 |
+
*
|
397 |
+
* @param boolean $add Whether to add the class to the queue or not.
|
398 |
+
* @param array $class The array of body class names to add.
|
399 |
+
* @param string $queue The queue we want to get 'admin', 'display', 'all'.
|
400 |
+
|
401 |
+
* @return boolean Whether body classes should be added or not.
|
402 |
+
*/
|
403 |
+
public function should_add_body_class_to_queue( $add, $class, $queue ) {
|
404 |
+
if ( 'admin' === $queue ) {
|
405 |
+
return $add;
|
406 |
+
}
|
407 |
+
|
408 |
+
if ( 'tribe-events-page-template' === $class ) {
|
409 |
+
$setting = $this->get_template_setting();
|
410 |
+
|
411 |
+
if ( 'page' !== $setting ) {
|
412 |
+
return true;
|
413 |
+
}
|
414 |
+
}
|
415 |
+
|
416 |
+
return $add;
|
417 |
+
}
|
418 |
+
|
419 |
+
/**
|
420 |
+
* Add body classes.
|
421 |
+
*
|
422 |
+
* @since TBD
|
423 |
+
*
|
424 |
+
* @return void
|
425 |
+
*/
|
426 |
+
public function add_body_classes() {
|
427 |
+
tribe( Body_Classes::class )->add_class( 'tribe-events-page-template' );
|
428 |
+
}
|
429 |
+
|
430 |
/**
|
431 |
* Filter the template file in case we're in single event
|
432 |
* and we need to use the theme overrides.
|
446 |
|
447 |
$template_name = end( $name );
|
448 |
|
449 |
+
// Bail when we don't are not loading 'default-template'.
|
450 |
if ( 'default-template' !== $template_name ) {
|
451 |
return $file;
|
452 |
}
|
src/Tribe/Views/V2/Theme_Compatibility.php
CHANGED
@@ -12,6 +12,7 @@ namespace Tribe\Events\Views\V2;
|
|
12 |
|
13 |
use Tribe\Events\Views\V2\Template_Bootstrap;
|
14 |
use Tribe__Container as Container;
|
|
|
15 |
|
16 |
class Theme_Compatibility {
|
17 |
/**
|
@@ -64,6 +65,8 @@ class Theme_Compatibility {
|
|
64 |
* @return array $classes
|
65 |
*/
|
66 |
public function filter_add_body_classes( array $classes ) {
|
|
|
|
|
67 |
if ( ! tribe( Template_Bootstrap::class )->should_load() ) {
|
68 |
return $classes;
|
69 |
}
|
@@ -75,6 +78,44 @@ class Theme_Compatibility {
|
|
75 |
return array_merge( $classes, $this->get_body_classes() );
|
76 |
}
|
77 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
78 |
/**
|
79 |
* Fetches the correct class strings for theme and child theme if available.
|
80 |
*
|
@@ -103,15 +144,15 @@ class Theme_Compatibility {
|
|
103 |
}
|
104 |
|
105 |
/**
|
106 |
-
* Returns a list of themes
|
107 |
*
|
108 |
* @since 4.9.4
|
109 |
*
|
110 |
-
* @return array An array of the themes
|
111 |
*/
|
112 |
public function get_registered_themes() {
|
113 |
/**
|
114 |
-
* Filters the list of themes that are
|
115 |
*
|
116 |
* @since 4.9.4
|
117 |
*
|
12 |
|
13 |
use Tribe\Events\Views\V2\Template_Bootstrap;
|
14 |
use Tribe__Container as Container;
|
15 |
+
use Tribe\Utils\Body_Classes;
|
16 |
|
17 |
class Theme_Compatibility {
|
18 |
/**
|
65 |
* @return array $classes
|
66 |
*/
|
67 |
public function filter_add_body_classes( array $classes ) {
|
68 |
+
_deprecated_function( __FUNCTION__, 'TBD', 'Theme_Compatibility::add_body_classes()' );
|
69 |
+
|
70 |
if ( ! tribe( Template_Bootstrap::class )->should_load() ) {
|
71 |
return $classes;
|
72 |
}
|
78 |
return array_merge( $classes, $this->get_body_classes() );
|
79 |
}
|
80 |
|
81 |
+
/**
|
82 |
+
* Contains the logic for if this object's classes should be added to the queue.
|
83 |
+
*
|
84 |
+
* @since TBD
|
85 |
+
*
|
86 |
+
* @param boolean $add Whether to add the class to the queue or not.
|
87 |
+
* @param array $class The array of body class names to add.
|
88 |
+
* @param string $queue The queue we want to get 'admin', 'display', 'all'.
|
89 |
+
|
90 |
+
* @return boolean Whether body classes should be added or not.
|
91 |
+
*/
|
92 |
+
public function should_add_body_class_to_queue( $add, $class, $queue ) {
|
93 |
+
if (
|
94 |
+
'admin' === $queue
|
95 |
+
|| ! tribe( Template_Bootstrap::class )->should_load()
|
96 |
+
|| ! $this->is_compatibility_required()
|
97 |
+
) {
|
98 |
+
return $add;
|
99 |
+
}
|
100 |
+
|
101 |
+
if ( in_array( $class, $this->get_body_classes() ) ) {
|
102 |
+
return true;
|
103 |
+
}
|
104 |
+
|
105 |
+
return $add;
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Add body classes.
|
110 |
+
*
|
111 |
+
* @since TBD
|
112 |
+
*
|
113 |
+
* @return void
|
114 |
+
*/
|
115 |
+
public function add_body_classes() {
|
116 |
+
tribe( Body_Classes::class )->add_classes( $this->get_body_classes() );
|
117 |
+
}
|
118 |
+
|
119 |
/**
|
120 |
* Fetches the correct class strings for theme and child theme if available.
|
121 |
*
|
144 |
}
|
145 |
|
146 |
/**
|
147 |
+
* Returns a list of themes registered for compatibility with our Views.
|
148 |
*
|
149 |
* @since 4.9.4
|
150 |
*
|
151 |
+
* @return array An array of the themes registered.
|
152 |
*/
|
153 |
public function get_registered_themes() {
|
154 |
/**
|
155 |
+
* Filters the list of themes that are registered for compatibility.
|
156 |
*
|
157 |
* @since 4.9.4
|
158 |
*
|
src/admin-views/privacy.php
CHANGED
@@ -46,9 +46,9 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
46 |
|
47 |
<p class="privacy-policy-tutorial"><strong><?php esc_html_e( 'Suggested text:', 'event-tickets' ); ?></strong></p>
|
48 |
|
49 |
-
<p><?php esc_html_e( 'We make use of certain
|
50 |
|
51 |
-
<p><?php esc_html_e( 'These
|
52 |
|
53 |
<h3 class="privacy-policy-tutorial"><?php esc_html_e( 'How Long You Retain this Data', 'the-events-calendar' ); ?></h3>
|
54 |
|
@@ -62,4 +62,4 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
62 |
|
63 |
<p class="privacy-policy-tutorial"><?php esc_html_e( '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.', 'the-events-calendar' ); ?></p>
|
64 |
|
65 |
-
</div>
|
46 |
|
47 |
<p class="privacy-policy-tutorial"><strong><?php esc_html_e( 'Suggested text:', 'event-tickets' ); ?></strong></p>
|
48 |
|
49 |
+
<p><?php esc_html_e( 'We make use of certain APIs, in order to provide specific features.', 'the-events-calendar' ); ?></p>
|
50 |
|
51 |
+
<p><?php esc_html_e( 'These APIs may include the following third party services: Google Maps (API key), Meetup (OAuth token), PayPal (email, Client ID, Client Secret), Eventbrite (API key, auth URL, Client Secret), and Zoom (email, Client ID, Client Secret).', 'the-events-calendar' ); ?></p>
|
52 |
|
53 |
<h3 class="privacy-policy-tutorial"><?php esc_html_e( 'How Long You Retain this Data', 'the-events-calendar' ); ?></h3>
|
54 |
|
62 |
|
63 |
<p class="privacy-policy-tutorial"><?php esc_html_e( '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.', 'the-events-calendar' ); ?></p>
|
64 |
|
65 |
+
</div>
|
src/functions/template-tags/orm.php
CHANGED
@@ -29,7 +29,7 @@ if ( ! function_exists( 'tribe_events' ) ) {
|
|
29 |
* Filters the map relating event repository slugs to service container bindings.
|
30 |
*
|
31 |
* @since 4.9
|
32 |
-
* @since 4.9.13 Added additional call
|
33 |
*
|
34 |
* @param array $map A map in the shape [ <repository_slug> => <service_name> ]
|
35 |
* @param string $repository The currently requested implementation.
|
29 |
* Filters the map relating event repository slugs to service container bindings.
|
30 |
*
|
31 |
* @since 4.9
|
32 |
+
* @since 4.9.13 Added additional call arguments support.
|
33 |
*
|
34 |
* @param array $map A map in the shape [ <repository_slug> => <service_name> ]
|
35 |
* @param string $repository The currently requested implementation.
|
src/views/modules/bar.php
CHANGED
@@ -4,7 +4,7 @@
|
|
4 |
* Renders our events navigation bar used across our views
|
5 |
*
|
6 |
* $filters and $views variables are loaded in and coming from
|
7 |
-
* the show
|
8 |
*
|
9 |
* Override this template in your own theme by creating a file at:
|
10 |
*
|
4 |
* Renders our events navigation bar used across our views
|
5 |
*
|
6 |
* $filters and $views variables are loaded in and coming from
|
7 |
+
* the show function in: lib/Bar.php
|
8 |
*
|
9 |
* Override this template in your own theme by creating a file at:
|
10 |
*
|
the-events-calendar.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Plugin Name: The Events Calendar
|
4 |
* Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
|
5 |
-
* Version: 5.1.
|
6 |
* Author: Modern Tribe, Inc.
|
7 |
* Author URI: http://m.tri.be/1x
|
8 |
* Text Domain: the-events-calendar
|
2 |
/**
|
3 |
* Plugin Name: The Events Calendar
|
4 |
* Description: The Events Calendar is a carefully crafted, extensible plugin that lets you easily share your events. Beautiful. Solid. Awesome.
|
5 |
+
* Version: 5.1.4.1
|
6 |
* Author: Modern Tribe, Inc.
|
7 |
* Author URI: http://m.tri.be/1x
|
8 |
* Text Domain: the-events-calendar
|
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 ComposerAutoloaderInit6608f50b58f2daeaf1b8b5ae76df9c40::getLoader();
|
vendor/composer/autoload_classmap.php
CHANGED
@@ -15,6 +15,7 @@ return array(
|
|
15 |
'Tribe\\Events\\Models\\Post_Types\\Event' => $baseDir . '/src/Tribe/Models/Post_Types/Event.php',
|
16 |
'Tribe\\Events\\Models\\Post_Types\\Venue' => $baseDir . '/src/Tribe/Models/Post_Types/Venue.php',
|
17 |
'Tribe\\Events\\Service_Providers\\Context' => $baseDir . '/src/Tribe/Service_Providers/Context.php',
|
|
|
18 |
'Tribe\\Events\\Views\\V2\\Assets' => $baseDir . '/src/Tribe/Views/V2/Assets.php',
|
19 |
'Tribe\\Events\\Views\\V2\\Hooks' => $baseDir . '/src/Tribe/Views/V2/Hooks.php',
|
20 |
'Tribe\\Events\\Views\\V2\\Implementation_Error' => $baseDir . '/src/Tribe/Views/V2/Implementation_Error.php',
|
15 |
'Tribe\\Events\\Models\\Post_Types\\Event' => $baseDir . '/src/Tribe/Models/Post_Types/Event.php',
|
16 |
'Tribe\\Events\\Models\\Post_Types\\Venue' => $baseDir . '/src/Tribe/Models/Post_Types/Venue.php',
|
17 |
'Tribe\\Events\\Service_Providers\\Context' => $baseDir . '/src/Tribe/Service_Providers/Context.php',
|
18 |
+
'Tribe\\Events\\Service_Providers\\First_Boot' => $baseDir . '/src/Tribe/Service_Providers/First_Boot.php',
|
19 |
'Tribe\\Events\\Views\\V2\\Assets' => $baseDir . '/src/Tribe/Views/V2/Assets.php',
|
20 |
'Tribe\\Events\\Views\\V2\\Hooks' => $baseDir . '/src/Tribe/Views/V2/Hooks.php',
|
21 |
'Tribe\\Events\\Views\\V2\\Implementation_Error' => $baseDir . '/src/Tribe/Views/V2/Implementation_Error.php',
|
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 ComposerAutoloaderInit23076ebc2cf146f0ef909dd3f78ac31a
|
|
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 ComposerAutoloaderInit6608f50b58f2daeaf1b8b5ae76df9c40
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit6608f50b58f2daeaf1b8b5ae76df9c40', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit6608f50b58f2daeaf1b8b5ae76df9c40', '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\ComposerStaticInit6608f50b58f2daeaf1b8b5ae76df9c40::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' =>
|
@@ -30,6 +30,7 @@ class ComposerStaticInit23076ebc2cf146f0ef909dd3f78ac31a
|
|
30 |
'Tribe\\Events\\Models\\Post_Types\\Event' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Event.php',
|
31 |
'Tribe\\Events\\Models\\Post_Types\\Venue' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Venue.php',
|
32 |
'Tribe\\Events\\Service_Providers\\Context' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Context.php',
|
|
|
33 |
'Tribe\\Events\\Views\\V2\\Assets' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Assets.php',
|
34 |
'Tribe\\Events\\Views\\V2\\Hooks' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Hooks.php',
|
35 |
'Tribe\\Events\\Views\\V2\\Implementation_Error' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Implementation_Error.php',
|
@@ -82,9 +83,9 @@ class ComposerStaticInit23076ebc2cf146f0ef909dd3f78ac31a
|
|
82 |
public static function getInitializer(ClassLoader $loader)
|
83 |
{
|
84 |
return \Closure::bind(function () use ($loader) {
|
85 |
-
$loader->prefixLengthsPsr4 =
|
86 |
-
$loader->prefixDirsPsr4 =
|
87 |
-
$loader->classMap =
|
88 |
|
89 |
}, null, ClassLoader::class);
|
90 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit6608f50b58f2daeaf1b8b5ae76df9c40
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
30 |
'Tribe\\Events\\Models\\Post_Types\\Event' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Event.php',
|
31 |
'Tribe\\Events\\Models\\Post_Types\\Venue' => __DIR__ . '/../..' . '/src/Tribe/Models/Post_Types/Venue.php',
|
32 |
'Tribe\\Events\\Service_Providers\\Context' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/Context.php',
|
33 |
+
'Tribe\\Events\\Service_Providers\\First_Boot' => __DIR__ . '/../..' . '/src/Tribe/Service_Providers/First_Boot.php',
|
34 |
'Tribe\\Events\\Views\\V2\\Assets' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Assets.php',
|
35 |
'Tribe\\Events\\Views\\V2\\Hooks' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Hooks.php',
|
36 |
'Tribe\\Events\\Views\\V2\\Implementation_Error' => __DIR__ . '/../..' . '/src/Tribe/Views/V2/Implementation_Error.php',
|
83 |
public static function getInitializer(ClassLoader $loader)
|
84 |
{
|
85 |
return \Closure::bind(function () use ($loader) {
|
86 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit6608f50b58f2daeaf1b8b5ae76df9c40::$prefixLengthsPsr4;
|
87 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit6608f50b58f2daeaf1b8b5ae76df9c40::$prefixDirsPsr4;
|
88 |
+
$loader->classMap = ComposerStaticInit6608f50b58f2daeaf1b8b5ae76df9c40::$classMap;
|
89 |
|
90 |
}, null, ClassLoader::class);
|
91 |
}
|