Version Description
Download this release
Release Info
Developer | bordoni |
Plugin | The Events Calendar |
Version | 4.9.6 |
Comparing to | |
See all releases |
Code changes from version 4.9.5 to 4.9.6
- common/lang/tribe-common-de_DE.mo +0 -0
- common/vendor/autoload.php +1 -1
- common/vendor/autoload_52.php +1 -1
- common/vendor/composer/autoload_commands_real.php +3 -3
- common/vendor/composer/autoload_framework_classmap.php +4 -0
- common/vendor/composer/autoload_framework_real.php +3 -3
- common/vendor/composer/autoload_real.php +4 -4
- common/vendor/composer/autoload_real_52.php +3 -3
- common/vendor/composer/autoload_static.php +5 -5
- lang/the-events-calendar-el.mo +0 -0
- lang/the-events-calendar-it_IT.mo +0 -0
- lang/the-events-calendar.pot +184 -184
- readme.txt +6 -1
- src/Tribe/Aggregator/API/Origins.php +65 -46
- src/Tribe/Aggregator/Event.php +6 -6
- src/Tribe/Aggregator/Processes/Queue_Control.php +3 -0
- src/Tribe/Aggregator/Record/Meetup.php +51 -0
- src/Tribe/Aggregator/Service.php +146 -44
- src/Tribe/Aggregator/Settings.php +183 -33
- src/Tribe/Main.php +1 -1
- src/admin-views/aggregator/origins/eventbrite.php +1 -1
- src/admin-views/aggregator/origins/meetup.php +29 -52
- src/admin-views/aggregator/settings.php +408 -406
- src/admin-views/aggregator/status.php +62 -57
- src/admin-views/aggregator/tabs/import-form.php +5 -5
- src/admin-views/tribe-options-addons-api.php +71 -44
- src/resources/css/aggregator-page.css +1 -1
- src/resources/css/aggregator-page.min.css +1 -1
- src/resources/css/events-admin.css +41 -0
- src/resources/css/events-admin.min.css +1 -1
- src/resources/postcss/aggregator-page.pcss +1 -1
- src/resources/postcss/events-admin.pcss +39 -0
- the-events-calendar.php +1 -1
- vendor/autoload.php +1 -1
- vendor/composer/autoload_real.php +4 -4
- vendor/composer/autoload_static.php +4 -4
common/lang/tribe-common-de_DE.mo
CHANGED
Binary file
|
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 ComposerAutoloaderInite58475742c7836da432d03f1c8e41b6c::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 ComposerAutoloaderInit4aaa34538b97318bfd1cb8ada46cad01::getLoader();
|
common/vendor/composer/autoload_commands_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_commands_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit4fca3e0e8299167cff806d0f02b8b16c
|
|
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 |
$classMap = require __DIR__ . '/autoload_commands_classmap.php';
|
27 |
if ($classMap) {
|
2 |
|
3 |
// autoload_commands_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInita71ece968808d28e9fb8d555ca7d303c
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInita71ece968808d28e9fb8d555ca7d303c', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInita71ece968808d28e9fb8d555ca7d303c', 'loadClassLoader'));
|
25 |
|
26 |
$classMap = require __DIR__ . '/autoload_commands_classmap.php';
|
27 |
if ($classMap) {
|
common/vendor/composer/autoload_framework_classmap.php
CHANGED
@@ -71,6 +71,7 @@ return array(
|
|
71 |
'Carbon\\CarbonTimeZone' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonTimeZone.php',
|
72 |
'Carbon\\Cli\\Invoker' => $vendorDir . '/nesbot/carbon/src/Carbon/Cli/Invoker.php',
|
73 |
'Carbon\\Exceptions\\InvalidDateException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php',
|
|
|
74 |
'Carbon\\Factory' => $vendorDir . '/nesbot/carbon/src/Carbon/Factory.php',
|
75 |
'Carbon\\FactoryImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/FactoryImmutable.php',
|
76 |
'Carbon\\Language' => $vendorDir . '/nesbot/carbon/src/Carbon/Language.php',
|
@@ -666,6 +667,7 @@ return array(
|
|
666 |
'Composer\\Util\\Hg' => $vendorDir . '/composer/composer/src/Composer/Util/Hg.php',
|
667 |
'Composer\\Util\\IniHelper' => $vendorDir . '/composer/composer/src/Composer/Util/IniHelper.php',
|
668 |
'Composer\\Util\\NoProxyPattern' => $vendorDir . '/composer/composer/src/Composer/Util/NoProxyPattern.php',
|
|
|
669 |
'Composer\\Util\\Perforce' => $vendorDir . '/composer/composer/src/Composer/Util/Perforce.php',
|
670 |
'Composer\\Util\\Platform' => $vendorDir . '/composer/composer/src/Composer/Util/Platform.php',
|
671 |
'Composer\\Util\\ProcessExecutor' => $vendorDir . '/composer/composer/src/Composer/Util/ProcessExecutor.php',
|
@@ -676,6 +678,7 @@ return array(
|
|
676 |
'Composer\\Util\\Svn' => $vendorDir . '/composer/composer/src/Composer/Util/Svn.php',
|
677 |
'Composer\\Util\\TlsHelper' => $vendorDir . '/composer/composer/src/Composer/Util/TlsHelper.php',
|
678 |
'Composer\\Util\\Url' => $vendorDir . '/composer/composer/src/Composer/Util/Url.php',
|
|
|
679 |
'Composer\\XdebugHandler' => $vendorDir . '/composer/composer/src/Composer/XdebugHandler.php',
|
680 |
'Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php',
|
681 |
'Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php',
|
@@ -1039,6 +1042,7 @@ return array(
|
|
1039 |
'Illuminate\\Contracts\\Queue\\QueueableEntity' => $vendorDir . '/illuminate/contracts/Queue/QueueableEntity.php',
|
1040 |
'Illuminate\\Contracts\\Queue\\ShouldQueue' => $vendorDir . '/illuminate/contracts/Queue/ShouldQueue.php',
|
1041 |
'Illuminate\\Contracts\\Redis\\Connection' => $vendorDir . '/illuminate/contracts/Redis/Connection.php',
|
|
|
1042 |
'Illuminate\\Contracts\\Redis\\Factory' => $vendorDir . '/illuminate/contracts/Redis/Factory.php',
|
1043 |
'Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => $vendorDir . '/illuminate/contracts/Redis/LimiterTimeoutException.php',
|
1044 |
'Illuminate\\Contracts\\Routing\\BindingRegistrar' => $vendorDir . '/illuminate/contracts/Routing/BindingRegistrar.php',
|
71 |
'Carbon\\CarbonTimeZone' => $vendorDir . '/nesbot/carbon/src/Carbon/CarbonTimeZone.php',
|
72 |
'Carbon\\Cli\\Invoker' => $vendorDir . '/nesbot/carbon/src/Carbon/Cli/Invoker.php',
|
73 |
'Carbon\\Exceptions\\InvalidDateException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/InvalidDateException.php',
|
74 |
+
'Carbon\\Exceptions\\NotAPeriodException' => $vendorDir . '/nesbot/carbon/src/Carbon/Exceptions/NotAPeriodException.php',
|
75 |
'Carbon\\Factory' => $vendorDir . '/nesbot/carbon/src/Carbon/Factory.php',
|
76 |
'Carbon\\FactoryImmutable' => $vendorDir . '/nesbot/carbon/src/Carbon/FactoryImmutable.php',
|
77 |
'Carbon\\Language' => $vendorDir . '/nesbot/carbon/src/Carbon/Language.php',
|
667 |
'Composer\\Util\\Hg' => $vendorDir . '/composer/composer/src/Composer/Util/Hg.php',
|
668 |
'Composer\\Util\\IniHelper' => $vendorDir . '/composer/composer/src/Composer/Util/IniHelper.php',
|
669 |
'Composer\\Util\\NoProxyPattern' => $vendorDir . '/composer/composer/src/Composer/Util/NoProxyPattern.php',
|
670 |
+
'Composer\\Util\\PackageSorter' => $vendorDir . '/composer/composer/src/Composer/Util/PackageSorter.php',
|
671 |
'Composer\\Util\\Perforce' => $vendorDir . '/composer/composer/src/Composer/Util/Perforce.php',
|
672 |
'Composer\\Util\\Platform' => $vendorDir . '/composer/composer/src/Composer/Util/Platform.php',
|
673 |
'Composer\\Util\\ProcessExecutor' => $vendorDir . '/composer/composer/src/Composer/Util/ProcessExecutor.php',
|
678 |
'Composer\\Util\\Svn' => $vendorDir . '/composer/composer/src/Composer/Util/Svn.php',
|
679 |
'Composer\\Util\\TlsHelper' => $vendorDir . '/composer/composer/src/Composer/Util/TlsHelper.php',
|
680 |
'Composer\\Util\\Url' => $vendorDir . '/composer/composer/src/Composer/Util/Url.php',
|
681 |
+
'Composer\\Util\\Zip' => $vendorDir . '/composer/composer/src/Composer/Util/Zip.php',
|
682 |
'Composer\\XdebugHandler' => $vendorDir . '/composer/composer/src/Composer/XdebugHandler.php',
|
683 |
'Composer\\XdebugHandler\\PhpConfig' => $vendorDir . '/composer/xdebug-handler/src/PhpConfig.php',
|
684 |
'Composer\\XdebugHandler\\Process' => $vendorDir . '/composer/xdebug-handler/src/Process.php',
|
1042 |
'Illuminate\\Contracts\\Queue\\QueueableEntity' => $vendorDir . '/illuminate/contracts/Queue/QueueableEntity.php',
|
1043 |
'Illuminate\\Contracts\\Queue\\ShouldQueue' => $vendorDir . '/illuminate/contracts/Queue/ShouldQueue.php',
|
1044 |
'Illuminate\\Contracts\\Redis\\Connection' => $vendorDir . '/illuminate/contracts/Redis/Connection.php',
|
1045 |
+
'Illuminate\\Contracts\\Redis\\Connector' => $vendorDir . '/illuminate/contracts/Redis/Connector.php',
|
1046 |
'Illuminate\\Contracts\\Redis\\Factory' => $vendorDir . '/illuminate/contracts/Redis/Factory.php',
|
1047 |
'Illuminate\\Contracts\\Redis\\LimiterTimeoutException' => $vendorDir . '/illuminate/contracts/Redis/LimiterTimeoutException.php',
|
1048 |
'Illuminate\\Contracts\\Routing\\BindingRegistrar' => $vendorDir . '/illuminate/contracts/Routing/BindingRegistrar.php',
|
common/vendor/composer/autoload_framework_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_framework_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,9 +19,9 @@ class ComposerAutoloaderInit3f9295fed24f82a64f823d62040363aa
|
|
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 |
$classMap = require __DIR__ . '/autoload_framework_classmap.php';
|
27 |
if ($classMap) {
|
2 |
|
3 |
// autoload_framework_real.php @generated by Composer
|
4 |
|
5 |
+
class ComposerAutoloaderInit1f26aac0a5c1887bcdab775a0f87f83f
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit1f26aac0a5c1887bcdab775a0f87f83f', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit1f26aac0a5c1887bcdab775a0f87f83f', 'loadClassLoader'));
|
25 |
|
26 |
$classMap = require __DIR__ . '/autoload_framework_classmap.php';
|
27 |
if ($classMap) {
|
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 ComposerAutoloaderInitbcbc363bc013de3b66adfafccda907b0
|
|
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 ComposerAutoloaderInite58475742c7836da432d03f1c8e41b6c
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInite58475742c7836da432d03f1c8e41b6c', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInite58475742c7836da432d03f1c8e41b6c', '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\ComposerStaticInite58475742c7836da432d03f1c8e41b6c::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 ComposerAutoloaderInita1cb95a067a388b281296448d37e9293 {
|
|
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 ComposerAutoloaderInit4aaa34538b97318bfd1cb8ada46cad01 {
|
6 |
private static $loader;
|
7 |
|
8 |
public static function loadClassLoader($class) {
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit4aaa34538b97318bfd1cb8ada46cad01', 'loadClassLoader'), true /*, true */);
|
23 |
self::$loader = $loader = new xrstf_Composer52_ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit4aaa34538b97318bfd1cb8ada46cad01', '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' =>
|
@@ -66,10 +66,10 @@ class ComposerStaticInitbcbc363bc013de3b66adfafccda907b0
|
|
66 |
public static function getInitializer(ClassLoader $loader)
|
67 |
{
|
68 |
return \Closure::bind(function () use ($loader) {
|
69 |
-
$loader->prefixLengthsPsr4 =
|
70 |
-
$loader->prefixDirsPsr4 =
|
71 |
-
$loader->prefixesPsr0 =
|
72 |
-
$loader->classMap =
|
73 |
|
74 |
}, null, ClassLoader::class);
|
75 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInite58475742c7836da432d03f1c8e41b6c
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
66 |
public static function getInitializer(ClassLoader $loader)
|
67 |
{
|
68 |
return \Closure::bind(function () use ($loader) {
|
69 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInite58475742c7836da432d03f1c8e41b6c::$prefixLengthsPsr4;
|
70 |
+
$loader->prefixDirsPsr4 = ComposerStaticInite58475742c7836da432d03f1c8e41b6c::$prefixDirsPsr4;
|
71 |
+
$loader->prefixesPsr0 = ComposerStaticInite58475742c7836da432d03f1c8e41b6c::$prefixesPsr0;
|
72 |
+
$loader->classMap = ComposerStaticInite58475742c7836da432d03f1c8e41b6c::$classMap;
|
73 |
|
74 |
}, null, ClassLoader::class);
|
75 |
}
|
lang/the-events-calendar-el.mo
CHANGED
Binary file
|
lang/the-events-calendar-it_IT.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 4.9.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
|
7 |
"calendar\n"
|
8 |
-
"POT-Creation-Date: 2019-07
|
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: 2019-07
|
13 |
"Last-Translator: \n"
|
14 |
"Language-Team: \n"
|
15 |
|
@@ -174,50 +174,50 @@ msgctxt "%s Event count in admin list"
|
|
174 |
msgid "All %s"
|
175 |
msgstr ""
|
176 |
|
177 |
-
#: src/Tribe/Aggregator/API/Origins.php:
|
178 |
-
#: src/Tribe/Aggregator/Admin_Bar.php:97 src/Tribe/Aggregator/Service.php:
|
179 |
msgid "CSV File"
|
180 |
msgstr ""
|
181 |
|
182 |
-
#: src/Tribe/Aggregator/API/Origins.php:
|
183 |
#: src/Tribe/Aggregator/Record/Eventbrite.php:88
|
184 |
-
#: src/admin-views/aggregator/settings.php:
|
185 |
#: src/admin-views/aggregator/status.php:181
|
186 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
187 |
msgid "Eventbrite"
|
188 |
msgstr ""
|
189 |
|
190 |
-
#: src/Tribe/Aggregator/API/Origins.php:
|
191 |
#: src/Tribe/Aggregator/Record/gCal.php:14
|
192 |
#: src/Tribe/Editor/Blocks/Event_Links.php:26 src/Tribe/iCal.php:109
|
193 |
-
#: src/admin-views/aggregator/settings.php:
|
194 |
msgid "Google Calendar"
|
195 |
msgstr ""
|
196 |
|
197 |
-
#: src/Tribe/Aggregator/API/Origins.php:
|
198 |
#: src/Tribe/Aggregator/Record/iCal.php:14
|
199 |
-
#: src/admin-views/aggregator/settings.php:
|
200 |
msgid "iCalendar"
|
201 |
msgstr ""
|
202 |
|
203 |
-
#: src/Tribe/Aggregator/API/Origins.php:
|
204 |
-
#: src/admin-views/aggregator/settings.php:
|
205 |
msgid "ICS File"
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: src/Tribe/Aggregator/API/Origins.php:
|
209 |
#: src/Tribe/Aggregator/Record/Meetup.php:40
|
210 |
-
#: src/admin-views/aggregator/settings.php:
|
211 |
-
#: src/admin-views/aggregator/status.php:
|
212 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
213 |
msgid "Meetup"
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: src/Tribe/Aggregator/API/Origins.php:
|
217 |
msgid "Other URL (beta)"
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: src/Tribe/Aggregator/API/Origins.php:
|
221 |
msgid "Event Aggregator"
|
222 |
msgstr ""
|
223 |
|
@@ -271,7 +271,7 @@ msgid ""
|
|
271 |
"The image associated with your event could not be attached to the event."
|
272 |
msgstr ""
|
273 |
|
274 |
-
#: src/Tribe/Aggregator/Errors.php:46 src/Tribe/Aggregator/Service.php:
|
275 |
msgid ""
|
276 |
"The daily limit of %d import requests to the Event Aggregator service has "
|
277 |
"been reached. Please try again later."
|
@@ -349,8 +349,8 @@ msgid ""
|
|
349 |
"Licenses before using this service."
|
350 |
msgstr ""
|
351 |
|
352 |
-
#: src/Tribe/Aggregator/Errors.php:64 src/Tribe/Aggregator/Service.php:
|
353 |
-
#: src/Tribe/Aggregator/Service.php:
|
354 |
msgid ""
|
355 |
"There may be an issue with the Event Aggregator server. Please try your "
|
356 |
"import again later."
|
@@ -648,7 +648,7 @@ msgid ""
|
|
648 |
msgstr ""
|
649 |
|
650 |
#: src/Tribe/Aggregator/Record/CSV.php:75
|
651 |
-
#: src/admin-views/aggregator/settings.php:
|
652 |
#: src/deprecated/Tribe__Events__Importer__Admin_Page.php:239
|
653 |
msgid "CSV"
|
654 |
msgstr ""
|
@@ -1012,38 +1012,38 @@ msgid_plural "Draft <span class=\"count\">(%s)</span>"
|
|
1012 |
msgstr[0] ""
|
1013 |
msgstr[1] ""
|
1014 |
|
1015 |
-
#: src/Tribe/Aggregator/Service.php:
|
1016 |
msgid ""
|
1017 |
"Connection timed out while transferring the feed. If you are dealing with "
|
1018 |
"large feeds you may need to customize the "
|
1019 |
"tribe_aggregator_connection_timeout filter."
|
1020 |
msgstr ""
|
1021 |
|
1022 |
-
#: src/Tribe/Aggregator/Service.php:
|
1023 |
msgid ""
|
1024 |
"Event Aggregator server has blocked your request. Please try your import "
|
1025 |
"again later or contact support to know why."
|
1026 |
msgstr ""
|
1027 |
|
1028 |
-
#: src/Tribe/Aggregator/Service.php:
|
1029 |
msgid ""
|
1030 |
"The response from the Event Aggregator server was badly formed and could not "
|
1031 |
"be understood. Please try again."
|
1032 |
msgstr ""
|
1033 |
|
1034 |
-
#: src/Tribe/Aggregator/Service.php:
|
1035 |
msgid "the UID part of the iCalendar Specification"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
-
#: src/Tribe/Aggregator/Service.php:
|
1039 |
msgid "Sorry, but something went wrong. Please try again."
|
1040 |
msgstr ""
|
1041 |
|
1042 |
-
#: src/Tribe/Aggregator/Service.php:
|
1043 |
msgid "Events could not be imported. The import parameters were invalid."
|
1044 |
msgstr ""
|
1045 |
|
1046 |
-
#: src/Tribe/Aggregator/Service.php:
|
1047 |
msgid ""
|
1048 |
"Events cannot be imported because Eventbrite has returned an error. This "
|
1049 |
"could mean that the event ID does not exist, the event or source is marked "
|
@@ -1053,98 +1053,98 @@ msgid ""
|
|
1053 |
"in our knowledgebase</a>."
|
1054 |
msgstr ""
|
1055 |
|
1056 |
-
#: src/Tribe/Aggregator/Service.php:
|
1057 |
msgid "No upcoming Eventbrite events found."
|
1058 |
msgstr ""
|
1059 |
|
1060 |
-
#: src/Tribe/Aggregator/Service.php:
|
1061 |
msgid "The URL provided could not be reached."
|
1062 |
msgstr ""
|
1063 |
|
1064 |
-
#: src/Tribe/Aggregator/Service.php:
|
1065 |
msgid "The URL provided failed to load."
|
1066 |
msgstr ""
|
1067 |
|
1068 |
-
#: src/Tribe/Aggregator/Service.php:
|
1069 |
msgid "The image associated with your event could not be imported."
|
1070 |
msgstr ""
|
1071 |
|
1072 |
-
#: src/Tribe/Aggregator/Service.php:
|
1073 |
msgid ""
|
1074 |
"The image associated with your event is not accessible with your API key."
|
1075 |
msgstr ""
|
1076 |
|
1077 |
-
#: src/Tribe/Aggregator/Service.php:
|
1078 |
msgid ""
|
1079 |
"The import failed for an unknown reason. Please try again. If the problem "
|
1080 |
"persists, please contact support."
|
1081 |
msgstr ""
|
1082 |
|
1083 |
-
#: src/Tribe/Aggregator/Service.php:
|
1084 |
msgid ""
|
1085 |
"Events could not be imported. The URL provided did not have events in the "
|
1086 |
"proper format."
|
1087 |
msgstr ""
|
1088 |
|
1089 |
-
#: src/Tribe/Aggregator/Service.php:
|
1090 |
msgid ""
|
1091 |
"The file provided could not be opened. Please confirm that it is a properly "
|
1092 |
"formatted .ics file."
|
1093 |
msgstr ""
|
1094 |
|
1095 |
-
#: src/Tribe/Aggregator/Service.php:
|
1096 |
msgid "Your Meetup API key is invalid."
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: src/Tribe/Aggregator/Service.php:
|
1100 |
msgid ""
|
1101 |
"Event Aggregator cannot reach Meetup.com because you exceeded the request "
|
1102 |
"limit for your Meetup API key."
|
1103 |
msgstr ""
|
1104 |
|
1105 |
-
#: src/Tribe/Aggregator/Service.php:
|
1106 |
msgid "The import is in progress."
|
1107 |
msgstr ""
|
1108 |
|
1109 |
-
#: src/Tribe/Aggregator/Service.php:
|
1110 |
msgid "The import will be starting soon."
|
1111 |
msgstr ""
|
1112 |
|
1113 |
-
#: src/Tribe/Aggregator/Service.php:
|
1114 |
msgid "Success"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: src/Tribe/Aggregator/Service.php:
|
1118 |
msgid "Import created"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
-
#: src/Tribe/Aggregator/Service.php:
|
1122 |
msgid "Successfully fetched Eventbrite Token"
|
1123 |
msgstr ""
|
1124 |
|
1125 |
-
#: src/Tribe/Aggregator/Service.php:
|
1126 |
msgid "Successfully loaded import origins"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
-
#: src/Tribe/Aggregator/Service.php:
|
1130 |
msgid "Import is complete"
|
1131 |
msgstr ""
|
1132 |
|
1133 |
-
#: src/Tribe/Aggregator/Service.php:
|
1134 |
msgid "Import queued"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
-
#: src/Tribe/Aggregator/Service.php:
|
1138 |
msgid "Events could not be imported. The URL provided could not be reached."
|
1139 |
msgstr ""
|
1140 |
|
1141 |
-
#: src/Tribe/Aggregator/Service.php:
|
1142 |
msgid ""
|
1143 |
"The requested source does not have any upcoming and published events "
|
1144 |
"matching the search criteria."
|
1145 |
msgstr ""
|
1146 |
|
1147 |
-
#: src/Tribe/Aggregator/Service.php:
|
1148 |
msgctxt ""
|
1149 |
"The placeholder is for the localized version of the iCal UID specification "
|
1150 |
"link"
|
@@ -1156,7 +1156,7 @@ msgid ""
|
|
1156 |
"help them more quickly resolve their feed's UID issue."
|
1157 |
msgstr ""
|
1158 |
|
1159 |
-
#: src/Tribe/Aggregator/Service.php:
|
1160 |
msgctxt ""
|
1161 |
"The placeholder is for the localized version of the iCal UID specification "
|
1162 |
"link"
|
@@ -1168,83 +1168,83 @@ msgid ""
|
|
1168 |
"help them more quickly resolve their feed's UID issue."
|
1169 |
msgstr ""
|
1170 |
|
1171 |
-
#: src/Tribe/Aggregator/Service.php:
|
1172 |
msgid "Unknown service message"
|
1173 |
msgstr ""
|
1174 |
|
1175 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1176 |
msgid "By date range"
|
1177 |
msgstr ""
|
1178 |
|
1179 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1180 |
msgid "By number of events"
|
1181 |
msgstr ""
|
1182 |
|
1183 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1184 |
msgid "Do not limit (not recommended)"
|
1185 |
msgstr ""
|
1186 |
|
1187 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1188 |
msgid "24 hours"
|
1189 |
msgstr ""
|
1190 |
|
1191 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1192 |
msgid "72 hours"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1196 |
msgid "One week"
|
1197 |
msgstr ""
|
1198 |
|
1199 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1200 |
msgid "one week"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1204 |
msgid "Two weeks"
|
1205 |
msgstr ""
|
1206 |
|
1207 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1208 |
msgid "two weeks"
|
1209 |
msgstr ""
|
1210 |
|
1211 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1212 |
msgid "Three weeks"
|
1213 |
msgstr ""
|
1214 |
|
1215 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1216 |
msgid "three weeks"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1220 |
msgid "One month"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1224 |
msgid "one month"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1228 |
msgid "Two months"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1232 |
msgid "two months"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1236 |
msgid "Three months"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1240 |
msgid "three months"
|
1241 |
msgstr ""
|
1242 |
|
1243 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1244 |
msgid "Asynchronous"
|
1245 |
msgstr ""
|
1246 |
|
1247 |
-
#: src/Tribe/Aggregator/Settings.php:
|
1248 |
msgid "Cron-based"
|
1249 |
msgstr ""
|
1250 |
|
@@ -1929,7 +1929,6 @@ msgid "You are using a custom Google Maps API key."
|
|
1929 |
msgstr ""
|
1930 |
|
1931 |
#: src/Tribe/Google/Maps_API_Key.php:55 src/Tribe/Google/Maps_API_Key.php:108
|
1932 |
-
#: src/admin-views/tribe-options-addons-api.php:25
|
1933 |
msgid "Click here"
|
1934 |
msgstr ""
|
1935 |
|
@@ -2503,7 +2502,7 @@ msgstr ""
|
|
2503 |
msgid "Upcoming Events"
|
2504 |
msgstr ""
|
2505 |
|
2506 |
-
#. #-#-#-#-# the-events-calendar.pot (The Events Calendar 4.9.
|
2507 |
#. Plugin Name of the plugin/theme
|
2508 |
#: src/Tribe/Main.php:904 src/Tribe/Main.php:1258 src/Tribe/Privacy.php:29
|
2509 |
#: src/functions/template-tags/general.php:1357 the-events-calendar.php:56
|
@@ -4665,8 +4664,8 @@ msgid "Filters"
|
|
4665 |
msgstr ""
|
4666 |
|
4667 |
#: src/admin-views/admin-update-message.php:61
|
4668 |
-
#: src/admin-views/aggregator/settings.php:
|
4669 |
-
#: src/admin-views/aggregator/settings.php:
|
4670 |
msgid "Imports"
|
4671 |
msgstr ""
|
4672 |
|
@@ -4893,7 +4892,7 @@ msgstr ""
|
|
4893 |
#: src/admin-views/aggregator/origins/gcal.php:114
|
4894 |
#: src/admin-views/aggregator/origins/ical.php:108
|
4895 |
#: src/admin-views/aggregator/origins/ics.php:51
|
4896 |
-
#: src/admin-views/aggregator/origins/meetup.php:
|
4897 |
#: src/admin-views/aggregator/origins/url.php:119
|
4898 |
#: src/deprecated/facebook.php:140
|
4899 |
msgid "Preview"
|
@@ -4953,8 +4952,8 @@ msgstr ""
|
|
4953 |
#: src/admin-views/aggregator/origins/gcal.php:37
|
4954 |
#: src/admin-views/aggregator/origins/ical.php:25
|
4955 |
#: src/admin-views/aggregator/origins/ical.php:37
|
4956 |
-
#: src/admin-views/aggregator/origins/meetup.php:
|
4957 |
-
#: src/admin-views/aggregator/origins/meetup.php:
|
4958 |
#: src/admin-views/aggregator/origins/url.php:25
|
4959 |
#: src/admin-views/aggregator/origins/url.php:37 src/deprecated/facebook.php:55
|
4960 |
#: src/deprecated/facebook.php:67
|
@@ -4964,7 +4963,7 @@ msgstr ""
|
|
4964 |
#: src/admin-views/aggregator/origins/eventbrite.php:68
|
4965 |
#: src/admin-views/aggregator/origins/gcal.php:36
|
4966 |
#: src/admin-views/aggregator/origins/ical.php:36
|
4967 |
-
#: src/admin-views/aggregator/origins/meetup.php:
|
4968 |
#: src/admin-views/aggregator/origins/url.php:36 src/deprecated/facebook.php:66
|
4969 |
msgid "One-Time Import"
|
4970 |
msgstr ""
|
@@ -4996,7 +4995,7 @@ msgstr ""
|
|
4996 |
#: src/admin-views/aggregator/origins/eventbrite.php:158
|
4997 |
#: src/admin-views/aggregator/origins/gcal.php:81
|
4998 |
#: src/admin-views/aggregator/origins/ical.php:82
|
4999 |
-
#: src/admin-views/aggregator/origins/meetup.php:
|
5000 |
#: src/admin-views/aggregator/origins/url.php:82
|
5001 |
#: src/admin-views/events-meta-box.php:189 src/deprecated/facebook.php:112
|
5002 |
msgid "URL:"
|
@@ -5118,37 +5117,25 @@ msgid ""
|
|
5118 |
"schedule. Single events can be added via a one-time import."
|
5119 |
msgstr ""
|
5120 |
|
5121 |
-
#: src/admin-views/aggregator/origins/meetup.php:
|
5122 |
-
msgid ""
|
5123 |
-
"Enter your Meetup API key to import Meetup events. %1$sClick here to get "
|
5124 |
-
"your Meetup API key%2$s. You only need to do this once, it will be saved "
|
5125 |
-
"under %3$sEvents > Settings > APIs%4$s"
|
5126 |
msgstr ""
|
5127 |
|
5128 |
-
#: src/admin-views/aggregator/origins/meetup.php:
|
5129 |
-
msgid ""
|
5130 |
-
"Your Meetup API key has been saved to %1$sEvents > Settings > APIs%2$s"
|
5131 |
msgstr ""
|
5132 |
|
5133 |
-
#: src/admin-views/aggregator/origins/meetup.php:
|
5134 |
-
msgid "Meetup API Key:"
|
5135 |
-
msgstr ""
|
5136 |
-
|
5137 |
-
#: src/admin-views/aggregator/origins/meetup.php:61
|
5138 |
-
msgid "Save"
|
5139 |
-
msgstr ""
|
5140 |
-
|
5141 |
-
#: src/admin-views/aggregator/origins/meetup.php:138
|
5142 |
msgid "meetup.com/example"
|
5143 |
msgstr ""
|
5144 |
|
5145 |
-
#: src/admin-views/aggregator/origins/meetup.php:
|
5146 |
msgid ""
|
5147 |
"Enter the url for a Meetup group, page, or individual. You can also enter "
|
5148 |
"the url of a single Meetup event."
|
5149 |
msgstr ""
|
5150 |
|
5151 |
-
#: src/admin-views/aggregator/origins/meetup.php:
|
5152 |
msgid "Invalid Meetup URL"
|
5153 |
msgstr ""
|
5154 |
|
@@ -5274,12 +5261,12 @@ msgstr ""
|
|
5274 |
|
5275 |
#: src/admin-views/aggregator/settings.php:75
|
5276 |
#: src/admin-views/aggregator/settings.php:135
|
5277 |
-
#: src/admin-views/aggregator/settings.php:
|
5278 |
-
#: src/admin-views/aggregator/settings.php:
|
5279 |
-
#: src/admin-views/aggregator/settings.php:
|
5280 |
-
#: src/admin-views/aggregator/settings.php:
|
5281 |
-
#: src/admin-views/aggregator/settings.php:
|
5282 |
-
#: src/admin-views/aggregator/settings.php:
|
5283 |
msgid "Default Status"
|
5284 |
msgstr ""
|
5285 |
|
@@ -5289,12 +5276,12 @@ msgstr ""
|
|
5289 |
|
5290 |
#: src/admin-views/aggregator/settings.php:87
|
5291 |
#: src/admin-views/aggregator/settings.php:147
|
5292 |
-
#: src/admin-views/aggregator/settings.php:
|
5293 |
-
#: src/admin-views/aggregator/settings.php:
|
5294 |
-
#: src/admin-views/aggregator/settings.php:
|
5295 |
-
#: src/admin-views/aggregator/settings.php:
|
5296 |
-
#: src/admin-views/aggregator/settings.php:
|
5297 |
-
#: src/admin-views/aggregator/settings.php:
|
5298 |
msgid "Default Event Category"
|
5299 |
msgstr ""
|
5300 |
|
@@ -5338,22 +5325,22 @@ msgid "The default event category for events"
|
|
5338 |
msgstr ""
|
5339 |
|
5340 |
#: src/admin-views/aggregator/settings.php:159
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5341 |
#: src/admin-views/aggregator/settings.php:268
|
5342 |
#: src/admin-views/aggregator/settings.php:312
|
5343 |
#: src/admin-views/aggregator/settings.php:356
|
5344 |
#: src/admin-views/aggregator/settings.php:412
|
5345 |
#: src/admin-views/aggregator/settings.php:456
|
5346 |
#: src/admin-views/aggregator/settings.php:535
|
5347 |
-
msgid "Show Map"
|
5348 |
-
msgstr ""
|
5349 |
-
|
5350 |
-
#: src/admin-views/aggregator/settings.php:160
|
5351 |
-
#: src/admin-views/aggregator/settings.php:269
|
5352 |
-
#: src/admin-views/aggregator/settings.php:313
|
5353 |
-
#: src/admin-views/aggregator/settings.php:357
|
5354 |
-
#: src/admin-views/aggregator/settings.php:413
|
5355 |
-
#: src/admin-views/aggregator/settings.php:457
|
5356 |
-
#: src/admin-views/aggregator/settings.php:536
|
5357 |
msgid "Show map by default on imported event and venues"
|
5358 |
msgstr ""
|
5359 |
|
@@ -5368,111 +5355,111 @@ msgid ""
|
|
5368 |
"time period or a smaller number of events may improve results."
|
5369 |
msgstr ""
|
5370 |
|
5371 |
-
#: src/admin-views/aggregator/settings.php:
|
5372 |
-
#: src/admin-views/aggregator/settings.php:
|
5373 |
msgid "Import Date Range Limit"
|
5374 |
msgstr ""
|
5375 |
|
5376 |
-
#: src/admin-views/aggregator/settings.php:
|
5377 |
msgid ""
|
5378 |
"When importing from an event source, this is how far into the future the "
|
5379 |
"events will be fetched; on slower websites a larger date range may impact "
|
5380 |
"the success of imports. Selecting a shorter time period may improve results."
|
5381 |
msgstr ""
|
5382 |
|
5383 |
-
#: src/admin-views/aggregator/settings.php:
|
5384 |
msgid "Import Quantity Limit"
|
5385 |
msgstr ""
|
5386 |
|
5387 |
-
#: src/admin-views/aggregator/settings.php:
|
5388 |
msgid ""
|
5389 |
"When importing from an event source, this is the maximum number of events "
|
5390 |
"that will be imported; on slower websites this may impact the success of "
|
5391 |
"imports. Setting this to a smaller number may improve results."
|
5392 |
msgstr ""
|
5393 |
|
5394 |
-
#: src/admin-views/aggregator/settings.php:
|
5395 |
msgid "Import Process System"
|
5396 |
msgstr ""
|
5397 |
|
5398 |
-
#: src/admin-views/aggregator/settings.php:
|
5399 |
msgid ""
|
5400 |
"The Asynchronous import process is faster and does not rely on WordPress "
|
5401 |
"Cron but might not work correctly in all WordPress installations, try "
|
5402 |
"switching to the Cron-based process for maximum compatibility."
|
5403 |
msgstr ""
|
5404 |
|
5405 |
-
#: src/admin-views/aggregator/settings.php:
|
5406 |
msgid "Stop current processes"
|
5407 |
msgstr ""
|
5408 |
|
5409 |
-
#: src/admin-views/aggregator/settings.php:
|
5410 |
msgid "iCalendar Import Settings"
|
5411 |
msgstr ""
|
5412 |
|
5413 |
-
#: src/admin-views/aggregator/settings.php:
|
5414 |
msgid "The default post status for events imported via iCalendar"
|
5415 |
msgstr ""
|
5416 |
|
5417 |
-
#: src/admin-views/aggregator/settings.php:
|
5418 |
msgid "The default event category for events imported via iCalendar"
|
5419 |
msgstr ""
|
5420 |
|
5421 |
-
#: src/admin-views/aggregator/settings.php:
|
5422 |
msgid "ICS File Import Settings"
|
5423 |
msgstr ""
|
5424 |
|
5425 |
-
#: src/admin-views/aggregator/settings.php:
|
5426 |
msgid "The default post status for events imported via .ics files"
|
5427 |
msgstr ""
|
5428 |
|
5429 |
-
#: src/admin-views/aggregator/settings.php:
|
5430 |
msgid "The default event category for events imported via .ics files"
|
5431 |
msgstr ""
|
5432 |
|
5433 |
-
#: src/admin-views/aggregator/settings.php:
|
5434 |
msgid "Google Calendar Import Settings"
|
5435 |
msgstr ""
|
5436 |
|
5437 |
-
#: src/admin-views/aggregator/settings.php:
|
5438 |
msgid "The default post status for events imported via Google Calendar"
|
5439 |
msgstr ""
|
5440 |
|
5441 |
-
#: src/admin-views/aggregator/settings.php:
|
5442 |
msgid "The default event category for events imported via Google Calendar"
|
5443 |
msgstr ""
|
5444 |
|
5445 |
-
#: src/admin-views/aggregator/settings.php:
|
5446 |
msgid "Meetup Import Settings"
|
5447 |
msgstr ""
|
5448 |
|
5449 |
-
#: src/admin-views/aggregator/settings.php:
|
5450 |
msgid ""
|
5451 |
"To import Meetup events, please be sure to add your Meetup API key on "
|
5452 |
"%1$sEvents > Settings > APIs%2$s"
|
5453 |
msgstr ""
|
5454 |
|
5455 |
-
#: src/admin-views/aggregator/settings.php:
|
5456 |
msgid "The default post status for events imported via Meetup"
|
5457 |
msgstr ""
|
5458 |
|
5459 |
-
#: src/admin-views/aggregator/settings.php:
|
5460 |
msgid "The default event category for events imported via Meetup"
|
5461 |
msgstr ""
|
5462 |
|
5463 |
-
#: src/admin-views/aggregator/settings.php:
|
5464 |
msgid "Other URL Import Settings"
|
5465 |
msgstr ""
|
5466 |
|
5467 |
-
#: src/admin-views/aggregator/settings.php:
|
5468 |
msgid "The default post status for events imported via other URLs"
|
5469 |
msgstr ""
|
5470 |
|
5471 |
-
#: src/admin-views/aggregator/settings.php:
|
5472 |
msgid "The default event category for events imported via other URLs"
|
5473 |
msgstr ""
|
5474 |
|
5475 |
-
#: src/admin-views/aggregator/settings.php:
|
5476 |
msgid ""
|
5477 |
"When importing from a website that uses The Events Calendar, the REST API "
|
5478 |
"will attempt to fetch events this far in the future. That website's hosting "
|
@@ -5480,46 +5467,46 @@ msgid ""
|
|
5480 |
"may improve results."
|
5481 |
msgstr ""
|
5482 |
|
5483 |
-
#: src/admin-views/aggregator/settings.php:
|
5484 |
msgid "Import Event Settings"
|
5485 |
msgstr ""
|
5486 |
|
5487 |
-
#: src/admin-views/aggregator/settings.php:
|
5488 |
msgid ""
|
5489 |
"Fetch source event's settings (e.g. Show Maps Link or Sticky in Month View) "
|
5490 |
"when importing from another site using The Events Calendar."
|
5491 |
msgstr ""
|
5492 |
|
5493 |
-
#: src/admin-views/aggregator/settings.php:
|
5494 |
#: src/admin-views/aggregator/tabs/import-form.php:16
|
5495 |
msgid "(do not override)"
|
5496 |
msgstr ""
|
5497 |
|
5498 |
-
#: src/admin-views/aggregator/settings.php:
|
5499 |
msgid "Eventbrite Import Settings"
|
5500 |
msgstr ""
|
5501 |
|
5502 |
-
#: src/admin-views/aggregator/settings.php:
|
5503 |
msgid "The default post status for events imported via Eventbrite"
|
5504 |
msgstr ""
|
5505 |
|
5506 |
-
#: src/admin-views/aggregator/settings.php:
|
5507 |
msgid "The default event category for events imported via Eventbrite"
|
5508 |
msgstr ""
|
5509 |
|
5510 |
-
#: src/admin-views/aggregator/settings.php:
|
5511 |
msgid "Update Authority"
|
5512 |
msgstr ""
|
5513 |
|
5514 |
-
#: src/admin-views/aggregator/settings.php:
|
5515 |
msgid "Global"
|
5516 |
msgstr ""
|
5517 |
|
5518 |
-
#: src/admin-views/aggregator/settings.php:
|
5519 |
msgid "Other URLs"
|
5520 |
msgstr ""
|
5521 |
|
5522 |
-
#: src/admin-views/aggregator/settings.php:
|
5523 |
msgid ""
|
5524 |
"Use the options below to configure your imports. Global Import Settings "
|
5525 |
"apply to all imports, but you can also override the global settings by "
|
@@ -5527,17 +5514,17 @@ msgid ""
|
|
5527 |
"Status on the %1$s."
|
5528 |
msgstr ""
|
5529 |
|
5530 |
-
#: src/admin-views/aggregator/settings.php:
|
5531 |
msgid "Help page"
|
5532 |
msgstr ""
|
5533 |
|
5534 |
-
#: src/admin-views/aggregator/settings.php:
|
5535 |
msgid ""
|
5536 |
"Use the options below to configure your imports. Looking for more ways to "
|
5537 |
"import events from other websites?"
|
5538 |
msgstr ""
|
5539 |
|
5540 |
-
#: src/admin-views/aggregator/settings.php:
|
5541 |
msgid "Check out Event Aggregator."
|
5542 |
msgstr ""
|
5543 |
|
@@ -5653,19 +5640,21 @@ msgid "Limited connectivity with Eventbrite"
|
|
5653 |
msgstr ""
|
5654 |
|
5655 |
#: src/admin-views/aggregator/status.php:176
|
|
|
5656 |
msgid "The service has disabled oAuth. Some types of events may not import."
|
5657 |
msgstr ""
|
5658 |
|
5659 |
-
#: src/admin-views/aggregator/status.php:
|
5660 |
-
msgid "
|
5661 |
msgstr ""
|
5662 |
|
5663 |
-
#: src/admin-views/aggregator/status.php:
|
5664 |
-
|
|
|
5665 |
msgstr ""
|
5666 |
|
5667 |
-
#: src/admin-views/aggregator/status.php:
|
5668 |
-
msgid "
|
5669 |
msgstr ""
|
5670 |
|
5671 |
#: src/admin-views/aggregator/tabs/import-form.php:31
|
@@ -6143,50 +6132,61 @@ msgid ""
|
|
6143 |
"to these external services. These services may be located abroad."
|
6144 |
msgstr ""
|
6145 |
|
6146 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
6147 |
-
msgid "
|
|
|
|
|
|
|
|
|
6148 |
msgstr ""
|
6149 |
|
6150 |
#: src/admin-views/tribe-options-addons-api.php:24
|
6151 |
-
msgid "
|
6152 |
msgstr ""
|
6153 |
|
6154 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
6155 |
-
msgid "
|
6156 |
msgstr ""
|
6157 |
|
6158 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
6159 |
-
|
|
|
6160 |
msgstr ""
|
6161 |
|
6162 |
#: src/admin-views/tribe-options-addons-api.php:49
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6163 |
msgid "You need to connect to Eventbrite for Event Aggregator to work properly"
|
6164 |
msgstr ""
|
6165 |
|
6166 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
6167 |
msgid "Connect to Eventbrite"
|
6168 |
msgstr ""
|
6169 |
|
6170 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
6171 |
msgid "Refresh your connection to Eventbrite"
|
6172 |
msgstr ""
|
6173 |
|
6174 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
6175 |
-
msgid "Disconnect"
|
6176 |
-
msgstr ""
|
6177 |
-
|
6178 |
-
#: src/admin-views/tribe-options-addons-api.php:74
|
6179 |
msgid ""
|
6180 |
"You need to connect Event Aggregator to Eventbrite to import your events "
|
6181 |
"from Eventbrite."
|
6182 |
msgstr ""
|
6183 |
|
6184 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
6185 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
6186 |
msgid "APIs"
|
6187 |
msgstr ""
|
6188 |
|
6189 |
-
#: src/admin-views/tribe-options-addons-api.php:
|
6190 |
msgid ""
|
6191 |
"Some features and add-ons require you to enter an API key or log into a "
|
6192 |
"third-party website so that The Events Calendar can communicate with an "
|
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 4.9.6\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/the-events-"
|
7 |
"calendar\n"
|
8 |
+
"POT-Creation-Date: 2019-08-07 19:15:21+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: 2019-08-07 19:15\n"
|
13 |
"Last-Translator: \n"
|
14 |
"Language-Team: \n"
|
15 |
|
174 |
msgid "All %s"
|
175 |
msgstr ""
|
176 |
|
177 |
+
#: src/Tribe/Aggregator/API/Origins.php:36
|
178 |
+
#: src/Tribe/Aggregator/Admin_Bar.php:97 src/Tribe/Aggregator/Service.php:796
|
179 |
msgid "CSV File"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: src/Tribe/Aggregator/API/Origins.php:41
|
183 |
#: src/Tribe/Aggregator/Record/Eventbrite.php:88
|
184 |
+
#: src/admin-views/aggregator/settings.php:628
|
185 |
#: src/admin-views/aggregator/status.php:181
|
186 |
+
#: src/admin-views/tribe-options-addons-api.php:97
|
187 |
msgid "Eventbrite"
|
188 |
msgstr ""
|
189 |
|
190 |
+
#: src/Tribe/Aggregator/API/Origins.php:47
|
191 |
#: src/Tribe/Aggregator/Record/gCal.php:14
|
192 |
#: src/Tribe/Editor/Blocks/Event_Links.php:26 src/Tribe/iCal.php:109
|
193 |
+
#: src/admin-views/aggregator/settings.php:616
|
194 |
msgid "Google Calendar"
|
195 |
msgstr ""
|
196 |
|
197 |
+
#: src/Tribe/Aggregator/API/Origins.php:53
|
198 |
#: src/Tribe/Aggregator/Record/iCal.php:14
|
199 |
+
#: src/admin-views/aggregator/settings.php:608
|
200 |
msgid "iCalendar"
|
201 |
msgstr ""
|
202 |
|
203 |
+
#: src/Tribe/Aggregator/API/Origins.php:59
|
204 |
+
#: src/admin-views/aggregator/settings.php:612
|
205 |
msgid "ICS File"
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: src/Tribe/Aggregator/API/Origins.php:65
|
209 |
#: src/Tribe/Aggregator/Record/Meetup.php:40
|
210 |
+
#: src/admin-views/aggregator/settings.php:620
|
211 |
+
#: src/admin-views/aggregator/status.php:208
|
212 |
+
#: src/admin-views/tribe-options-addons-api.php:45
|
213 |
msgid "Meetup"
|
214 |
msgstr ""
|
215 |
|
216 |
+
#: src/Tribe/Aggregator/API/Origins.php:71
|
217 |
msgid "Other URL (beta)"
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: src/Tribe/Aggregator/API/Origins.php:227 src/Tribe/Aggregator.php:227
|
221 |
msgid "Event Aggregator"
|
222 |
msgstr ""
|
223 |
|
271 |
"The image associated with your event could not be attached to the event."
|
272 |
msgstr ""
|
273 |
|
274 |
+
#: src/Tribe/Aggregator/Errors.php:46 src/Tribe/Aggregator/Service.php:706
|
275 |
msgid ""
|
276 |
"The daily limit of %d import requests to the Event Aggregator service has "
|
277 |
"been reached. Please try again later."
|
349 |
"Licenses before using this service."
|
350 |
msgstr ""
|
351 |
|
352 |
+
#: src/Tribe/Aggregator/Errors.php:64 src/Tribe/Aggregator/Service.php:224
|
353 |
+
#: src/Tribe/Aggregator/Service.php:231
|
354 |
msgid ""
|
355 |
"There may be an issue with the Event Aggregator server. Please try your "
|
356 |
"import again later."
|
648 |
msgstr ""
|
649 |
|
650 |
#: src/Tribe/Aggregator/Record/CSV.php:75
|
651 |
+
#: src/admin-views/aggregator/settings.php:604
|
652 |
#: src/deprecated/Tribe__Events__Importer__Admin_Page.php:239
|
653 |
msgid "CSV"
|
654 |
msgstr ""
|
1012 |
msgstr[0] ""
|
1013 |
msgstr[1] ""
|
1014 |
|
1015 |
+
#: src/Tribe/Aggregator/Service.php:207
|
1016 |
msgid ""
|
1017 |
"Connection timed out while transferring the feed. If you are dealing with "
|
1018 |
"large feeds you may need to customize the "
|
1019 |
"tribe_aggregator_connection_timeout filter."
|
1020 |
msgstr ""
|
1021 |
|
1022 |
+
#: src/Tribe/Aggregator/Service.php:216
|
1023 |
msgid ""
|
1024 |
"Event Aggregator server has blocked your request. Please try your import "
|
1025 |
"again later or contact support to know why."
|
1026 |
msgstr ""
|
1027 |
|
1028 |
+
#: src/Tribe/Aggregator/Service.php:244
|
1029 |
msgid ""
|
1030 |
"The response from the Event Aggregator server was badly formed and could not "
|
1031 |
"be understood. Please try again."
|
1032 |
msgstr ""
|
1033 |
|
1034 |
+
#: src/Tribe/Aggregator/Service.php:688
|
1035 |
msgid "the UID part of the iCalendar Specification"
|
1036 |
msgstr ""
|
1037 |
|
1038 |
+
#: src/Tribe/Aggregator/Service.php:693
|
1039 |
msgid "Sorry, but something went wrong. Please try again."
|
1040 |
msgstr ""
|
1041 |
|
1042 |
+
#: src/Tribe/Aggregator/Service.php:694
|
1043 |
msgid "Events could not be imported. The import parameters were invalid."
|
1044 |
msgstr ""
|
1045 |
|
1046 |
+
#: src/Tribe/Aggregator/Service.php:695
|
1047 |
msgid ""
|
1048 |
"Events cannot be imported because Eventbrite has returned an error. This "
|
1049 |
"could mean that the event ID does not exist, the event or source is marked "
|
1053 |
"in our knowledgebase</a>."
|
1054 |
msgstr ""
|
1055 |
|
1056 |
+
#: src/Tribe/Aggregator/Service.php:696
|
1057 |
msgid "No upcoming Eventbrite events found."
|
1058 |
msgstr ""
|
1059 |
|
1060 |
+
#: src/Tribe/Aggregator/Service.php:697
|
1061 |
msgid "The URL provided could not be reached."
|
1062 |
msgstr ""
|
1063 |
|
1064 |
+
#: src/Tribe/Aggregator/Service.php:698
|
1065 |
msgid "The URL provided failed to load."
|
1066 |
msgstr ""
|
1067 |
|
1068 |
+
#: src/Tribe/Aggregator/Service.php:699
|
1069 |
msgid "The image associated with your event could not be imported."
|
1070 |
msgstr ""
|
1071 |
|
1072 |
+
#: src/Tribe/Aggregator/Service.php:700
|
1073 |
msgid ""
|
1074 |
"The image associated with your event is not accessible with your API key."
|
1075 |
msgstr ""
|
1076 |
|
1077 |
+
#: src/Tribe/Aggregator/Service.php:701
|
1078 |
msgid ""
|
1079 |
"The import failed for an unknown reason. Please try again. If the problem "
|
1080 |
"persists, please contact support."
|
1081 |
msgstr ""
|
1082 |
|
1083 |
+
#: src/Tribe/Aggregator/Service.php:702
|
1084 |
msgid ""
|
1085 |
"Events could not be imported. The URL provided did not have events in the "
|
1086 |
"proper format."
|
1087 |
msgstr ""
|
1088 |
|
1089 |
+
#: src/Tribe/Aggregator/Service.php:703
|
1090 |
msgid ""
|
1091 |
"The file provided could not be opened. Please confirm that it is a properly "
|
1092 |
"formatted .ics file."
|
1093 |
msgstr ""
|
1094 |
|
1095 |
+
#: src/Tribe/Aggregator/Service.php:704
|
1096 |
msgid "Your Meetup API key is invalid."
|
1097 |
msgstr ""
|
1098 |
|
1099 |
+
#: src/Tribe/Aggregator/Service.php:705
|
1100 |
msgid ""
|
1101 |
"Event Aggregator cannot reach Meetup.com because you exceeded the request "
|
1102 |
"limit for your Meetup API key."
|
1103 |
msgstr ""
|
1104 |
|
1105 |
+
#: src/Tribe/Aggregator/Service.php:708
|
1106 |
msgid "The import is in progress."
|
1107 |
msgstr ""
|
1108 |
|
1109 |
+
#: src/Tribe/Aggregator/Service.php:710
|
1110 |
msgid "The import will be starting soon."
|
1111 |
msgstr ""
|
1112 |
|
1113 |
+
#: src/Tribe/Aggregator/Service.php:712
|
1114 |
msgid "Success"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
+
#: src/Tribe/Aggregator/Service.php:713
|
1118 |
msgid "Import created"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
+
#: src/Tribe/Aggregator/Service.php:714
|
1122 |
msgid "Successfully fetched Eventbrite Token"
|
1123 |
msgstr ""
|
1124 |
|
1125 |
+
#: src/Tribe/Aggregator/Service.php:715
|
1126 |
msgid "Successfully loaded import origins"
|
1127 |
msgstr ""
|
1128 |
|
1129 |
+
#: src/Tribe/Aggregator/Service.php:716
|
1130 |
msgid "Import is complete"
|
1131 |
msgstr ""
|
1132 |
|
1133 |
+
#: src/Tribe/Aggregator/Service.php:717
|
1134 |
msgid "Import queued"
|
1135 |
msgstr ""
|
1136 |
|
1137 |
+
#: src/Tribe/Aggregator/Service.php:718
|
1138 |
msgid "Events could not be imported. The URL provided could not be reached."
|
1139 |
msgstr ""
|
1140 |
|
1141 |
+
#: src/Tribe/Aggregator/Service.php:719
|
1142 |
msgid ""
|
1143 |
"The requested source does not have any upcoming and published events "
|
1144 |
"matching the search criteria."
|
1145 |
msgstr ""
|
1146 |
|
1147 |
+
#: src/Tribe/Aggregator/Service.php:721
|
1148 |
msgctxt ""
|
1149 |
"The placeholder is for the localized version of the iCal UID specification "
|
1150 |
"link"
|
1156 |
"help them more quickly resolve their feed's UID issue."
|
1157 |
msgstr ""
|
1158 |
|
1159 |
+
#: src/Tribe/Aggregator/Service.php:730
|
1160 |
msgctxt ""
|
1161 |
"The placeholder is for the localized version of the iCal UID specification "
|
1162 |
"link"
|
1168 |
"help them more quickly resolve their feed's UID issue."
|
1169 |
msgstr ""
|
1170 |
|
1171 |
+
#: src/Tribe/Aggregator/Service.php:752
|
1172 |
msgid "Unknown service message"
|
1173 |
msgstr ""
|
1174 |
|
1175 |
+
#: src/Tribe/Aggregator/Settings.php:507
|
1176 |
msgid "By date range"
|
1177 |
msgstr ""
|
1178 |
|
1179 |
+
#: src/Tribe/Aggregator/Settings.php:508
|
1180 |
msgid "By number of events"
|
1181 |
msgstr ""
|
1182 |
|
1183 |
+
#: src/Tribe/Aggregator/Settings.php:509
|
1184 |
msgid "Do not limit (not recommended)"
|
1185 |
msgstr ""
|
1186 |
|
1187 |
+
#: src/Tribe/Aggregator/Settings.php:536 src/Tribe/Aggregator/Settings.php:537
|
1188 |
msgid "24 hours"
|
1189 |
msgstr ""
|
1190 |
|
1191 |
+
#: src/Tribe/Aggregator/Settings.php:540 src/Tribe/Aggregator/Settings.php:541
|
1192 |
msgid "72 hours"
|
1193 |
msgstr ""
|
1194 |
|
1195 |
+
#: src/Tribe/Aggregator/Settings.php:544
|
1196 |
msgid "One week"
|
1197 |
msgstr ""
|
1198 |
|
1199 |
+
#: src/Tribe/Aggregator/Settings.php:545
|
1200 |
msgid "one week"
|
1201 |
msgstr ""
|
1202 |
|
1203 |
+
#: src/Tribe/Aggregator/Settings.php:548
|
1204 |
msgid "Two weeks"
|
1205 |
msgstr ""
|
1206 |
|
1207 |
+
#: src/Tribe/Aggregator/Settings.php:549
|
1208 |
msgid "two weeks"
|
1209 |
msgstr ""
|
1210 |
|
1211 |
+
#: src/Tribe/Aggregator/Settings.php:552
|
1212 |
msgid "Three weeks"
|
1213 |
msgstr ""
|
1214 |
|
1215 |
+
#: src/Tribe/Aggregator/Settings.php:553
|
1216 |
msgid "three weeks"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
+
#: src/Tribe/Aggregator/Settings.php:556
|
1220 |
msgid "One month"
|
1221 |
msgstr ""
|
1222 |
|
1223 |
+
#: src/Tribe/Aggregator/Settings.php:557
|
1224 |
msgid "one month"
|
1225 |
msgstr ""
|
1226 |
|
1227 |
+
#: src/Tribe/Aggregator/Settings.php:560
|
1228 |
msgid "Two months"
|
1229 |
msgstr ""
|
1230 |
|
1231 |
+
#: src/Tribe/Aggregator/Settings.php:561
|
1232 |
msgid "two months"
|
1233 |
msgstr ""
|
1234 |
|
1235 |
+
#: src/Tribe/Aggregator/Settings.php:564
|
1236 |
msgid "Three months"
|
1237 |
msgstr ""
|
1238 |
|
1239 |
+
#: src/Tribe/Aggregator/Settings.php:565
|
1240 |
msgid "three months"
|
1241 |
msgstr ""
|
1242 |
|
1243 |
+
#: src/Tribe/Aggregator/Settings.php:849
|
1244 |
msgid "Asynchronous"
|
1245 |
msgstr ""
|
1246 |
|
1247 |
+
#: src/Tribe/Aggregator/Settings.php:853
|
1248 |
msgid "Cron-based"
|
1249 |
msgstr ""
|
1250 |
|
1929 |
msgstr ""
|
1930 |
|
1931 |
#: src/Tribe/Google/Maps_API_Key.php:55 src/Tribe/Google/Maps_API_Key.php:108
|
|
|
1932 |
msgid "Click here"
|
1933 |
msgstr ""
|
1934 |
|
2502 |
msgid "Upcoming Events"
|
2503 |
msgstr ""
|
2504 |
|
2505 |
+
#. #-#-#-#-# the-events-calendar.pot (The Events Calendar 4.9.6) #-#-#-#-#
|
2506 |
#. Plugin Name of the plugin/theme
|
2507 |
#: src/Tribe/Main.php:904 src/Tribe/Main.php:1258 src/Tribe/Privacy.php:29
|
2508 |
#: src/functions/template-tags/general.php:1357 the-events-calendar.php:56
|
4664 |
msgstr ""
|
4665 |
|
4666 |
#: src/admin-views/admin-update-message.php:61
|
4667 |
+
#: src/admin-views/aggregator/settings.php:712
|
4668 |
+
#: src/admin-views/aggregator/settings.php:752
|
4669 |
msgid "Imports"
|
4670 |
msgstr ""
|
4671 |
|
4892 |
#: src/admin-views/aggregator/origins/gcal.php:114
|
4893 |
#: src/admin-views/aggregator/origins/ical.php:108
|
4894 |
#: src/admin-views/aggregator/origins/ics.php:51
|
4895 |
+
#: src/admin-views/aggregator/origins/meetup.php:139
|
4896 |
#: src/admin-views/aggregator/origins/url.php:119
|
4897 |
#: src/deprecated/facebook.php:140
|
4898 |
msgid "Preview"
|
4952 |
#: src/admin-views/aggregator/origins/gcal.php:37
|
4953 |
#: src/admin-views/aggregator/origins/ical.php:25
|
4954 |
#: src/admin-views/aggregator/origins/ical.php:37
|
4955 |
+
#: src/admin-views/aggregator/origins/meetup.php:57
|
4956 |
+
#: src/admin-views/aggregator/origins/meetup.php:69
|
4957 |
#: src/admin-views/aggregator/origins/url.php:25
|
4958 |
#: src/admin-views/aggregator/origins/url.php:37 src/deprecated/facebook.php:55
|
4959 |
#: src/deprecated/facebook.php:67
|
4963 |
#: src/admin-views/aggregator/origins/eventbrite.php:68
|
4964 |
#: src/admin-views/aggregator/origins/gcal.php:36
|
4965 |
#: src/admin-views/aggregator/origins/ical.php:36
|
4966 |
+
#: src/admin-views/aggregator/origins/meetup.php:68
|
4967 |
#: src/admin-views/aggregator/origins/url.php:36 src/deprecated/facebook.php:66
|
4968 |
msgid "One-Time Import"
|
4969 |
msgstr ""
|
4995 |
#: src/admin-views/aggregator/origins/eventbrite.php:158
|
4996 |
#: src/admin-views/aggregator/origins/gcal.php:81
|
4997 |
#: src/admin-views/aggregator/origins/ical.php:82
|
4998 |
+
#: src/admin-views/aggregator/origins/meetup.php:114
|
4999 |
#: src/admin-views/aggregator/origins/url.php:82
|
5000 |
#: src/admin-views/events-meta-box.php:189 src/deprecated/facebook.php:112
|
5001 |
msgid "URL:"
|
5117 |
"schedule. Single events can be added via a one-time import."
|
5118 |
msgstr ""
|
5119 |
|
5120 |
+
#: src/admin-views/aggregator/origins/meetup.php:34
|
5121 |
+
msgid "Please log in to enable event imports from Meetup."
|
|
|
|
|
|
|
5122 |
msgstr ""
|
5123 |
|
5124 |
+
#: src/admin-views/aggregator/origins/meetup.php:41
|
5125 |
+
msgid "Log into Meetup"
|
|
|
5126 |
msgstr ""
|
5127 |
|
5128 |
+
#: src/admin-views/aggregator/origins/meetup.php:115
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5129 |
msgid "meetup.com/example"
|
5130 |
msgstr ""
|
5131 |
|
5132 |
+
#: src/admin-views/aggregator/origins/meetup.php:116
|
5133 |
msgid ""
|
5134 |
"Enter the url for a Meetup group, page, or individual. You can also enter "
|
5135 |
"the url of a single Meetup event."
|
5136 |
msgstr ""
|
5137 |
|
5138 |
+
#: src/admin-views/aggregator/origins/meetup.php:131
|
5139 |
msgid "Invalid Meetup URL"
|
5140 |
msgstr ""
|
5141 |
|
5261 |
|
5262 |
#: src/admin-views/aggregator/settings.php:75
|
5263 |
#: src/admin-views/aggregator/settings.php:135
|
5264 |
+
#: src/admin-views/aggregator/settings.php:243
|
5265 |
+
#: src/admin-views/aggregator/settings.php:287
|
5266 |
+
#: src/admin-views/aggregator/settings.php:331
|
5267 |
+
#: src/admin-views/aggregator/settings.php:387
|
5268 |
+
#: src/admin-views/aggregator/settings.php:431
|
5269 |
+
#: src/admin-views/aggregator/settings.php:510
|
5270 |
msgid "Default Status"
|
5271 |
msgstr ""
|
5272 |
|
5276 |
|
5277 |
#: src/admin-views/aggregator/settings.php:87
|
5278 |
#: src/admin-views/aggregator/settings.php:147
|
5279 |
+
#: src/admin-views/aggregator/settings.php:255
|
5280 |
+
#: src/admin-views/aggregator/settings.php:299
|
5281 |
+
#: src/admin-views/aggregator/settings.php:343
|
5282 |
+
#: src/admin-views/aggregator/settings.php:399
|
5283 |
+
#: src/admin-views/aggregator/settings.php:443
|
5284 |
+
#: src/admin-views/aggregator/settings.php:522
|
5285 |
msgid "Default Event Category"
|
5286 |
msgstr ""
|
5287 |
|
5325 |
msgstr ""
|
5326 |
|
5327 |
#: src/admin-views/aggregator/settings.php:159
|
5328 |
+
#: src/admin-views/aggregator/settings.php:267
|
5329 |
+
#: src/admin-views/aggregator/settings.php:311
|
5330 |
+
#: src/admin-views/aggregator/settings.php:355
|
5331 |
+
#: src/admin-views/aggregator/settings.php:411
|
5332 |
+
#: src/admin-views/aggregator/settings.php:455
|
5333 |
+
#: src/admin-views/aggregator/settings.php:534
|
5334 |
+
msgid "Show Map"
|
5335 |
+
msgstr ""
|
5336 |
+
|
5337 |
+
#: src/admin-views/aggregator/settings.php:160
|
5338 |
#: src/admin-views/aggregator/settings.php:268
|
5339 |
#: src/admin-views/aggregator/settings.php:312
|
5340 |
#: src/admin-views/aggregator/settings.php:356
|
5341 |
#: src/admin-views/aggregator/settings.php:412
|
5342 |
#: src/admin-views/aggregator/settings.php:456
|
5343 |
#: src/admin-views/aggregator/settings.php:535
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5344 |
msgid "Show map by default on imported event and venues"
|
5345 |
msgstr ""
|
5346 |
|
5355 |
"time period or a smaller number of events may improve results."
|
5356 |
msgstr ""
|
5357 |
|
5358 |
+
#: src/admin-views/aggregator/settings.php:183
|
5359 |
+
#: src/admin-views/aggregator/settings.php:467
|
5360 |
msgid "Import Date Range Limit"
|
5361 |
msgstr ""
|
5362 |
|
5363 |
+
#: src/admin-views/aggregator/settings.php:184
|
5364 |
msgid ""
|
5365 |
"When importing from an event source, this is how far into the future the "
|
5366 |
"events will be fetched; on slower websites a larger date range may impact "
|
5367 |
"the success of imports. Selecting a shorter time period may improve results."
|
5368 |
msgstr ""
|
5369 |
|
5370 |
+
#: src/admin-views/aggregator/settings.php:200
|
5371 |
msgid "Import Quantity Limit"
|
5372 |
msgstr ""
|
5373 |
|
5374 |
+
#: src/admin-views/aggregator/settings.php:201
|
5375 |
msgid ""
|
5376 |
"When importing from an event source, this is the maximum number of events "
|
5377 |
"that will be imported; on slower websites this may impact the success of "
|
5378 |
"imports. Setting this to a smaller number may improve results."
|
5379 |
msgstr ""
|
5380 |
|
5381 |
+
#: src/admin-views/aggregator/settings.php:217
|
5382 |
msgid "Import Process System"
|
5383 |
msgstr ""
|
5384 |
|
5385 |
+
#: src/admin-views/aggregator/settings.php:218
|
5386 |
msgid ""
|
5387 |
"The Asynchronous import process is faster and does not rely on WordPress "
|
5388 |
"Cron but might not work correctly in all WordPress installations, try "
|
5389 |
"switching to the Cron-based process for maximum compatibility."
|
5390 |
msgstr ""
|
5391 |
|
5392 |
+
#: src/admin-views/aggregator/settings.php:229
|
5393 |
msgid "Stop current processes"
|
5394 |
msgstr ""
|
5395 |
|
5396 |
+
#: src/admin-views/aggregator/settings.php:238
|
5397 |
msgid "iCalendar Import Settings"
|
5398 |
msgstr ""
|
5399 |
|
5400 |
+
#: src/admin-views/aggregator/settings.php:244
|
5401 |
msgid "The default post status for events imported via iCalendar"
|
5402 |
msgstr ""
|
5403 |
|
5404 |
+
#: src/admin-views/aggregator/settings.php:256
|
5405 |
msgid "The default event category for events imported via iCalendar"
|
5406 |
msgstr ""
|
5407 |
|
5408 |
+
#: src/admin-views/aggregator/settings.php:282
|
5409 |
msgid "ICS File Import Settings"
|
5410 |
msgstr ""
|
5411 |
|
5412 |
+
#: src/admin-views/aggregator/settings.php:288
|
5413 |
msgid "The default post status for events imported via .ics files"
|
5414 |
msgstr ""
|
5415 |
|
5416 |
+
#: src/admin-views/aggregator/settings.php:300
|
5417 |
msgid "The default event category for events imported via .ics files"
|
5418 |
msgstr ""
|
5419 |
|
5420 |
+
#: src/admin-views/aggregator/settings.php:326
|
5421 |
msgid "Google Calendar Import Settings"
|
5422 |
msgstr ""
|
5423 |
|
5424 |
+
#: src/admin-views/aggregator/settings.php:332
|
5425 |
msgid "The default post status for events imported via Google Calendar"
|
5426 |
msgstr ""
|
5427 |
|
5428 |
+
#: src/admin-views/aggregator/settings.php:344
|
5429 |
msgid "The default event category for events imported via Google Calendar"
|
5430 |
msgstr ""
|
5431 |
|
5432 |
+
#: src/admin-views/aggregator/settings.php:370
|
5433 |
msgid "Meetup Import Settings"
|
5434 |
msgstr ""
|
5435 |
|
5436 |
+
#: src/admin-views/aggregator/settings.php:376
|
5437 |
msgid ""
|
5438 |
"To import Meetup events, please be sure to add your Meetup API key on "
|
5439 |
"%1$sEvents > Settings > APIs%2$s"
|
5440 |
msgstr ""
|
5441 |
|
5442 |
+
#: src/admin-views/aggregator/settings.php:388
|
5443 |
msgid "The default post status for events imported via Meetup"
|
5444 |
msgstr ""
|
5445 |
|
5446 |
+
#: src/admin-views/aggregator/settings.php:400
|
5447 |
msgid "The default event category for events imported via Meetup"
|
5448 |
msgstr ""
|
5449 |
|
5450 |
+
#: src/admin-views/aggregator/settings.php:426
|
5451 |
msgid "Other URL Import Settings"
|
5452 |
msgstr ""
|
5453 |
|
5454 |
+
#: src/admin-views/aggregator/settings.php:432
|
5455 |
msgid "The default post status for events imported via other URLs"
|
5456 |
msgstr ""
|
5457 |
|
5458 |
+
#: src/admin-views/aggregator/settings.php:444
|
5459 |
msgid "The default event category for events imported via other URLs"
|
5460 |
msgstr ""
|
5461 |
|
5462 |
+
#: src/admin-views/aggregator/settings.php:468
|
5463 |
msgid ""
|
5464 |
"When importing from a website that uses The Events Calendar, the REST API "
|
5465 |
"will attempt to fetch events this far in the future. That website's hosting "
|
5467 |
"may improve results."
|
5468 |
msgstr ""
|
5469 |
|
5470 |
+
#: src/admin-views/aggregator/settings.php:479
|
5471 |
msgid "Import Event Settings"
|
5472 |
msgstr ""
|
5473 |
|
5474 |
+
#: src/admin-views/aggregator/settings.php:480
|
5475 |
msgid ""
|
5476 |
"Fetch source event's settings (e.g. Show Maps Link or Sticky in Month View) "
|
5477 |
"when importing from another site using The Events Calendar."
|
5478 |
msgstr ""
|
5479 |
|
5480 |
+
#: src/admin-views/aggregator/settings.php:492
|
5481 |
#: src/admin-views/aggregator/tabs/import-form.php:16
|
5482 |
msgid "(do not override)"
|
5483 |
msgstr ""
|
5484 |
|
5485 |
+
#: src/admin-views/aggregator/settings.php:505
|
5486 |
msgid "Eventbrite Import Settings"
|
5487 |
msgstr ""
|
5488 |
|
5489 |
+
#: src/admin-views/aggregator/settings.php:511
|
5490 |
msgid "The default post status for events imported via Eventbrite"
|
5491 |
msgstr ""
|
5492 |
|
5493 |
+
#: src/admin-views/aggregator/settings.php:523
|
5494 |
msgid "The default event category for events imported via Eventbrite"
|
5495 |
msgstr ""
|
5496 |
|
5497 |
+
#: src/admin-views/aggregator/settings.php:596
|
5498 |
msgid "Update Authority"
|
5499 |
msgstr ""
|
5500 |
|
5501 |
+
#: src/admin-views/aggregator/settings.php:600
|
5502 |
msgid "Global"
|
5503 |
msgstr ""
|
5504 |
|
5505 |
+
#: src/admin-views/aggregator/settings.php:624
|
5506 |
msgid "Other URLs"
|
5507 |
msgstr ""
|
5508 |
|
5509 |
+
#: src/admin-views/aggregator/settings.php:674
|
5510 |
msgid ""
|
5511 |
"Use the options below to configure your imports. Global Import Settings "
|
5512 |
"apply to all imports, but you can also override the global settings by "
|
5514 |
"Status on the %1$s."
|
5515 |
msgstr ""
|
5516 |
|
5517 |
+
#: src/admin-views/aggregator/settings.php:678
|
5518 |
msgid "Help page"
|
5519 |
msgstr ""
|
5520 |
|
5521 |
+
#: src/admin-views/aggregator/settings.php:698
|
5522 |
msgid ""
|
5523 |
"Use the options below to configure your imports. Looking for more ways to "
|
5524 |
"import events from other websites?"
|
5525 |
msgstr ""
|
5526 |
|
5527 |
+
#: src/admin-views/aggregator/settings.php:699
|
5528 |
msgid "Check out Event Aggregator."
|
5529 |
msgstr ""
|
5530 |
|
5640 |
msgstr ""
|
5641 |
|
5642 |
#: src/admin-views/aggregator/status.php:176
|
5643 |
+
#: src/admin-views/aggregator/status.php:203
|
5644 |
msgid "The service has disabled oAuth. Some types of events may not import."
|
5645 |
msgstr ""
|
5646 |
|
5647 |
+
#: src/admin-views/aggregator/status.php:196
|
5648 |
+
msgid "You have not connected Event Aggregator to Meetup"
|
5649 |
msgstr ""
|
5650 |
|
5651 |
+
#: src/admin-views/aggregator/status.php:198
|
5652 |
+
msgctxt "link for connecting meetup"
|
5653 |
+
msgid "Connect to Meetup"
|
5654 |
msgstr ""
|
5655 |
|
5656 |
+
#: src/admin-views/aggregator/status.php:202
|
5657 |
+
msgid "Limited connectivity with Meetup"
|
5658 |
msgstr ""
|
5659 |
|
5660 |
#: src/admin-views/aggregator/tabs/import-form.php:31
|
6132 |
"to these external services. These services may be located abroad."
|
6133 |
msgstr ""
|
6134 |
|
6135 |
+
#: src/admin-views/tribe-options-addons-api.php:19
|
6136 |
+
msgid "Meetup Token"
|
6137 |
+
msgstr ""
|
6138 |
+
|
6139 |
+
#: src/admin-views/tribe-options-addons-api.php:23
|
6140 |
+
msgid "You need to connect to Meetup for Event Aggregator to work properly"
|
6141 |
msgstr ""
|
6142 |
|
6143 |
#: src/admin-views/tribe-options-addons-api.php:24
|
6144 |
+
msgid "Connect to Meetup"
|
6145 |
msgstr ""
|
6146 |
|
6147 |
+
#: src/admin-views/tribe-options-addons-api.php:26
|
6148 |
+
msgid "Refresh your connection to Meetup"
|
6149 |
msgstr ""
|
6150 |
|
6151 |
+
#: src/admin-views/tribe-options-addons-api.php:27
|
6152 |
+
#: src/admin-views/tribe-options-addons-api.php:80
|
6153 |
+
msgid "Disconnect"
|
6154 |
msgstr ""
|
6155 |
|
6156 |
#: src/admin-views/tribe-options-addons-api.php:49
|
6157 |
+
msgid ""
|
6158 |
+
"You need to connect Event Aggregator to Meetup to import your events from "
|
6159 |
+
"Meetup."
|
6160 |
+
msgstr ""
|
6161 |
+
|
6162 |
+
#: src/admin-views/tribe-options-addons-api.php:72
|
6163 |
+
msgid "Eventbrite Token"
|
6164 |
+
msgstr ""
|
6165 |
+
|
6166 |
+
#: src/admin-views/tribe-options-addons-api.php:76
|
6167 |
msgid "You need to connect to Eventbrite for Event Aggregator to work properly"
|
6168 |
msgstr ""
|
6169 |
|
6170 |
+
#: src/admin-views/tribe-options-addons-api.php:77
|
6171 |
msgid "Connect to Eventbrite"
|
6172 |
msgstr ""
|
6173 |
|
6174 |
+
#: src/admin-views/tribe-options-addons-api.php:79
|
6175 |
msgid "Refresh your connection to Eventbrite"
|
6176 |
msgstr ""
|
6177 |
|
6178 |
+
#: src/admin-views/tribe-options-addons-api.php:101
|
|
|
|
|
|
|
|
|
6179 |
msgid ""
|
6180 |
"You need to connect Event Aggregator to Eventbrite to import your events "
|
6181 |
"from Eventbrite."
|
6182 |
msgstr ""
|
6183 |
|
6184 |
+
#: src/admin-views/tribe-options-addons-api.php:122
|
6185 |
+
#: src/admin-views/tribe-options-addons-api.php:162
|
6186 |
msgid "APIs"
|
6187 |
msgstr ""
|
6188 |
|
6189 |
+
#: src/admin-views/tribe-options-addons-api.php:126
|
6190 |
msgid ""
|
6191 |
"Some features and add-ons require you to enter an API key or log into a "
|
6192 |
"third-party website so that The Events Calendar can communicate with an "
|
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: http://m.tri.be/29
|
6 |
Requires at least: 4.7
|
7 |
-
Stable tag: 4.9.
|
8 |
Tested up to: 5.2.2
|
9 |
Requires PHP: 5.6
|
10 |
License: GPLv2 or later
|
@@ -215,6 +215,11 @@ Still not happy? Shoot us an email to support@theeventscalendar.com or tweet to
|
|
215 |
|
216 |
== Changelog ==
|
217 |
|
|
|
|
|
|
|
|
|
|
|
218 |
= [4.9.5] 2019-07-25 =
|
219 |
|
220 |
* Tweak - Update redirection URLs for Freemius actions [130281]
|
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: http://m.tri.be/29
|
6 |
Requires at least: 4.7
|
7 |
+
Stable tag: 4.9.6
|
8 |
Tested up to: 5.2.2
|
9 |
Requires PHP: 5.6
|
10 |
License: GPLv2 or later
|
215 |
|
216 |
== Changelog ==
|
217 |
|
218 |
+
= [4.9.6] 2019-08-07 =
|
219 |
+
|
220 |
+
* Tweak - Update Event Aggregator to include compatibility with new Meetup API requirements - [See more](http://m.tri.be/1afb) [125635]
|
221 |
+
* Language - 5 new strings added, 120 updated, 5 fuzzied, and 10 obsoleted
|
222 |
+
|
223 |
= [4.9.5] 2019-07-25 =
|
224 |
|
225 |
* Tweak - Update redirection URLs for Freemius actions [130281]
|
src/Tribe/Aggregator/API/Origins.php
CHANGED
@@ -4,6 +4,11 @@ defined( 'WPINC' ) or die;
|
|
4 |
|
5 |
class Tribe__Events__Aggregator__API__Origins extends Tribe__Events__Aggregator__API__Abstract {
|
6 |
|
|
|
|
|
|
|
|
|
|
|
7 |
/**
|
8 |
* @var array
|
9 |
*/
|
@@ -102,7 +107,10 @@ class Tribe__Events__Aggregator__API__Origins extends Tribe__Events__Aggregator_
|
|
102 |
*/
|
103 |
private function enable_service_origins() {
|
104 |
$cached_origins = get_transient( "{$this->cache_group}_origins" );
|
105 |
-
|
|
|
|
|
|
|
106 |
$this->origins = $cached_origins;
|
107 |
return $this->origins;
|
108 |
}
|
@@ -141,31 +149,31 @@ class Tribe__Events__Aggregator__API__Origins extends Tribe__Events__Aggregator_
|
|
141 |
* Fetches origin data from the service and sets necessary transients
|
142 |
*/
|
143 |
private function fetch_origin_data() {
|
144 |
-
$
|
145 |
-
if ( empty( $
|
146 |
-
//
|
147 |
-
$
|
148 |
}
|
149 |
|
150 |
-
if ( ! empty( $
|
151 |
-
return $
|
152 |
}
|
153 |
|
154 |
list( $origin_data, $error ) = $this->service->get_origins( true );
|
155 |
$origin_data = (object) $origin_data;
|
|
|
156 |
|
157 |
if ( empty( $error ) ) {
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
-
|
162 |
-
|
163 |
-
|
164 |
-
}
|
165 |
} elseif ( 403 == wp_remote_retrieve_response_code( $error ) ) {
|
166 |
-
//
|
167 |
$origin_data->expiration = 300;
|
168 |
-
//
|
169 |
set_transient( "{$this->cache_group}_fetch_lock", $origin_data, 300 );
|
170 |
}
|
171 |
|
@@ -176,56 +184,40 @@ class Tribe__Events__Aggregator__API__Origins extends Tribe__Events__Aggregator_
|
|
176 |
}
|
177 |
|
178 |
/**
|
179 |
-
* Returns whether oauth for a given origin is enabled
|
180 |
*
|
181 |
-
*
|
182 |
*
|
183 |
-
* @
|
|
|
|
|
184 |
*/
|
185 |
public function is_oauth_enabled( $origin ) {
|
186 |
|
187 |
-
if (
|
188 |
return false;
|
189 |
}
|
190 |
|
191 |
-
if (
|
192 |
return true;
|
193 |
}
|
194 |
|
195 |
-
$
|
196 |
-
if ( $cached_oauth_settings && isset( $cached_oauth_settings->$origin ) ) {
|
197 |
-
return (bool) $cached_oauth_settings->$origin;
|
198 |
-
}
|
199 |
-
|
200 |
-
$service_origins = $this->fetch_origin_data();
|
201 |
-
|
202 |
-
if ( ! isset( $service_origins->oauth->$origin ) ) {
|
203 |
-
return false;
|
204 |
-
}
|
205 |
|
206 |
-
return (bool) $
|
207 |
}
|
208 |
|
209 |
/**
|
210 |
-
* Get origin limit values
|
211 |
*
|
212 |
-
* @param string $type Type of limit to retrieve
|
213 |
*
|
214 |
-
* @return int
|
215 |
*/
|
216 |
public function get_limit( $type = 'import' ) {
|
217 |
-
$
|
218 |
-
if ( $cached_limit_settings && isset( $cached_limit_settings->$type ) ) {
|
219 |
-
return (int) $cached_limit_settings->$type;
|
220 |
-
}
|
221 |
-
|
222 |
-
$service_origins = $this->fetch_origin_data();
|
223 |
|
224 |
-
|
225 |
-
return false;
|
226 |
-
}
|
227 |
-
|
228 |
-
return (int) $service_origins->limit->$type;
|
229 |
}
|
230 |
|
231 |
public function get_name( $id ) {
|
@@ -253,4 +245,31 @@ class Tribe__Events__Aggregator__API__Origins extends Tribe__Events__Aggregator_
|
|
253 |
|
254 |
return $this->is_ea_disabled ? in_array( $origin, $this->available_when_disabled ) : true;
|
255 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
256 |
}
|
4 |
|
5 |
class Tribe__Events__Aggregator__API__Origins extends Tribe__Events__Aggregator__API__Abstract {
|
6 |
|
7 |
+
/**
|
8 |
+
* @since 4.9.6
|
9 |
+
*/
|
10 |
+
const VERSION = '1.1.0';
|
11 |
+
|
12 |
/**
|
13 |
* @var array
|
14 |
*/
|
107 |
*/
|
108 |
private function enable_service_origins() {
|
109 |
$cached_origins = get_transient( "{$this->cache_group}_origins" );
|
110 |
+
$cached_version = ! empty( $cached_origins->version )
|
111 |
+
? $cached_origins->version
|
112 |
+
: '1.0.0';
|
113 |
+
if ( $cached_origins && version_compare( $cached_version, static::VERSION, '=' ) ) {
|
114 |
$this->origins = $cached_origins;
|
115 |
return $this->origins;
|
116 |
}
|
149 |
* Fetches origin data from the service and sets necessary transients
|
150 |
*/
|
151 |
private function fetch_origin_data() {
|
152 |
+
$request_cached = tribe_get_var( 'events-aggregator.origins-data' );
|
153 |
+
if ( empty( $request_cached ) ) {
|
154 |
+
// Try to see if we have a lock in place.
|
155 |
+
$lock = get_transient( "{$this->cache_group}_fetch_lock" );
|
156 |
}
|
157 |
|
158 |
+
if ( ! empty( $lock ) ) {
|
159 |
+
return $request_cached;
|
160 |
}
|
161 |
|
162 |
list( $origin_data, $error ) = $this->service->get_origins( true );
|
163 |
$origin_data = (object) $origin_data;
|
164 |
+
$version = ! empty( $origin_data->version ) ? $origin_data->version : '1.0.0';
|
165 |
|
166 |
if ( empty( $error ) ) {
|
167 |
+
// Refresh some accessory transients and embed the version in them.
|
168 |
+
$oauth_data = $origin_data->oauth;
|
169 |
+
$limit_data = $origin_data->limit;
|
170 |
+
$oauth_data->version = $limit_data->version = $version;
|
171 |
+
set_transient( "{$this->cache_group}_origin_oauth", $oauth_data, 6 * HOUR_IN_SECONDS );
|
172 |
+
set_transient( "{$this->cache_group}_origin_limit", $limit_data, 6 * HOUR_IN_SECONDS );
|
|
|
173 |
} elseif ( 403 == wp_remote_retrieve_response_code( $error ) ) {
|
174 |
+
// Store the origins data for 5' only.
|
175 |
$origin_data->expiration = 300;
|
176 |
+
// And avoid bugging the service for 5'.
|
177 |
set_transient( "{$this->cache_group}_fetch_lock", $origin_data, 300 );
|
178 |
}
|
179 |
|
184 |
}
|
185 |
|
186 |
/**
|
187 |
+
* Returns whether oauth for a given origin is enabled.
|
188 |
*
|
189 |
+
* The OAuth status for the origin is enabled on EA Service side.
|
190 |
*
|
191 |
+
* @param string $origin The origin to check the OAuth status for.
|
192 |
+
*
|
193 |
+
* @return boolean Whether OAuth is enabled for the origin or not.
|
194 |
*/
|
195 |
public function is_oauth_enabled( $origin ) {
|
196 |
|
197 |
+
if ( 'eventbrite' !== $origin && ! tribe( 'events-aggregator.main' )->is_service_active() ) {
|
198 |
return false;
|
199 |
}
|
200 |
|
201 |
+
if ( 'eventbrite' === $origin && class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ) ) {
|
202 |
return true;
|
203 |
}
|
204 |
|
205 |
+
$oauth = $this->get_data( 'oauth' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
|
207 |
+
return ! empty( $oauth->{$origin} ) && (bool) $oauth->{$origin};
|
208 |
}
|
209 |
|
210 |
/**
|
211 |
+
* Get origin limit values for an operation.
|
212 |
*
|
213 |
+
* @param string $type Type of operation limit to retrieve; defaults to `import`.
|
214 |
*
|
215 |
+
* @return int The numeric limit (how many times) applied to the operation.
|
216 |
*/
|
217 |
public function get_limit( $type = 'import' ) {
|
218 |
+
$limits = $this->get_data( 'limit' );
|
|
|
|
|
|
|
|
|
|
|
219 |
|
220 |
+
return ! empty( $limits->{$type} ) ? (int) $limits->{$type} : false;
|
|
|
|
|
|
|
|
|
221 |
}
|
222 |
|
223 |
public function get_name( $id ) {
|
245 |
|
246 |
return $this->is_ea_disabled ? in_array( $origin, $this->available_when_disabled ) : true;
|
247 |
}
|
248 |
+
|
249 |
+
/**
|
250 |
+
* Gets the data for an internal Origins data key.
|
251 |
+
*
|
252 |
+
* The result might be cached from a previous request.
|
253 |
+
*
|
254 |
+
* @since 4.9.6
|
255 |
+
*
|
256 |
+
* @param string|null $key The key to fetch the data for.
|
257 |
+
*
|
258 |
+
* @return mixed|object|bool The data associated with the key if any and available, `false` otherwise.
|
259 |
+
*/
|
260 |
+
public function get_data( $key ) {
|
261 |
+
if ( null === $key ) {
|
262 |
+
return $this->fetch_origin_data();
|
263 |
+
}
|
264 |
+
|
265 |
+
$data = get_transient( "{$this->cache_group}_origin_{$key}" );
|
266 |
+
$cached_version = isset( $data->version ) ? $data->version : '1.0.0';
|
267 |
+
|
268 |
+
if ( ! version_compare( $cached_version, static::VERSION, '=' ) ) {
|
269 |
+
$origin_data = $this->fetch_origin_data();
|
270 |
+
$data = ! empty( $origin_data->{$key} ) ? $origin_data->{$key} : false;
|
271 |
+
}
|
272 |
+
|
273 |
+
return $data;
|
274 |
+
}
|
275 |
}
|
src/Tribe/Aggregator/Event.php
CHANGED
@@ -68,7 +68,7 @@ class Tribe__Events__Aggregator__Event {
|
|
68 |
$event = array();
|
69 |
$item = (object) $item;
|
70 |
|
71 |
-
$field_map =
|
72 |
'title' => 'post_title',
|
73 |
'description' => 'post_content',
|
74 |
'excerpt' => 'post_excerpt',
|
@@ -101,9 +101,9 @@ class Tribe__Events__Aggregator__Event {
|
|
101 |
'hide_from_listings' => 'hide_from_listings',
|
102 |
'sticky' => 'sticky',
|
103 |
'featured' => 'feature_event',
|
104 |
-
|
105 |
|
106 |
-
$venue_field_map =
|
107 |
'_venue_id' => 'VenueID',
|
108 |
'meetup_id' => 'VenueMeetupID',
|
109 |
'eventbrite_id' => 'VenueEventBriteID',
|
@@ -119,9 +119,9 @@ class Tribe__Events__Aggregator__Event {
|
|
119 |
'overwrite_coordinates' => 'OverwriteCoords',
|
120 |
'latitude' => 'Lat',
|
121 |
'longitude' => 'Lng',
|
122 |
-
|
123 |
|
124 |
-
$organizer_field_map =
|
125 |
'_organizer_id' => 'OrganizerID',
|
126 |
'meetup_id' => 'OrganizerMeetupID',
|
127 |
'eventbrite_id' => 'OrganizerEventBriteID',
|
@@ -129,7 +129,7 @@ class Tribe__Events__Aggregator__Event {
|
|
129 |
'phone' => 'Phone',
|
130 |
'email' => 'Email',
|
131 |
'website' => 'Website',
|
132 |
-
|
133 |
|
134 |
/**
|
135 |
* Allows filtering to add other field mapping values.
|
68 |
$event = array();
|
69 |
$item = (object) $item;
|
70 |
|
71 |
+
$field_map = [
|
72 |
'title' => 'post_title',
|
73 |
'description' => 'post_content',
|
74 |
'excerpt' => 'post_excerpt',
|
101 |
'hide_from_listings' => 'hide_from_listings',
|
102 |
'sticky' => 'sticky',
|
103 |
'featured' => 'feature_event',
|
104 |
+
];
|
105 |
|
106 |
+
$venue_field_map = [
|
107 |
'_venue_id' => 'VenueID',
|
108 |
'meetup_id' => 'VenueMeetupID',
|
109 |
'eventbrite_id' => 'VenueEventBriteID',
|
119 |
'overwrite_coordinates' => 'OverwriteCoords',
|
120 |
'latitude' => 'Lat',
|
121 |
'longitude' => 'Lng',
|
122 |
+
];
|
123 |
|
124 |
+
$organizer_field_map = [
|
125 |
'_organizer_id' => 'OrganizerID',
|
126 |
'meetup_id' => 'OrganizerMeetupID',
|
127 |
'eventbrite_id' => 'OrganizerEventBriteID',
|
129 |
'phone' => 'Phone',
|
130 |
'email' => 'Email',
|
131 |
'website' => 'Website',
|
132 |
+
];
|
133 |
|
134 |
/**
|
135 |
* Allows filtering to add other field mapping values.
|
src/Tribe/Aggregator/Processes/Queue_Control.php
CHANGED
@@ -28,6 +28,9 @@ class Tribe__Events__Aggregator__Processes__Queue_Control {
|
|
28 |
|
29 |
$cleared = $this->clear_queues();
|
30 |
|
|
|
|
|
|
|
31 |
$location = null !== $location
|
32 |
? $location
|
33 |
: remove_query_arg( self::CLEAR_PROCESSES );
|
28 |
|
29 |
$cleared = $this->clear_queues();
|
30 |
|
31 |
+
// Let's also re-run, forcing it, the feature support check to make sure we still support Async processing.
|
32 |
+
tribe( 'feature-detection' )->supports_async_process( true );
|
33 |
+
|
34 |
$location = null !== $location
|
35 |
? $location
|
36 |
: remove_query_arg( self::CLEAR_PROCESSES );
|
src/Tribe/Aggregator/Record/Meetup.php
CHANGED
@@ -77,4 +77,55 @@ class Tribe__Events__Aggregator__Record__Meetup extends Tribe__Events__Aggregato
|
|
77 |
|
78 |
return self::preserve_event_option_fields( $event );
|
79 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
}
|
77 |
|
78 |
return self::preserve_event_option_fields( $event );
|
79 |
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Returns the Meetup authorization token generation URL.
|
83 |
+
*
|
84 |
+
* @since 4.9.6
|
85 |
+
*
|
86 |
+
* @param array $args
|
87 |
+
*
|
88 |
+
* @return string Either the URL to obtain Eventbrite authorization token or an empty string.
|
89 |
+
*/
|
90 |
+
public static function get_auth_url( $args = array() ) {
|
91 |
+
$service = tribe( 'events-aggregator.service' );
|
92 |
+
|
93 |
+
$api = $service->api();
|
94 |
+
if ( $api instanceof WP_Error ) {
|
95 |
+
return '';
|
96 |
+
}
|
97 |
+
|
98 |
+
$key = $api->key;
|
99 |
+
$key2 = null;
|
100 |
+
|
101 |
+
if ( ! empty( $api->licenses['tribe-meetup'] ) ) {
|
102 |
+
$meetup_license = $api->licenses['tribe-meetup'];
|
103 |
+
|
104 |
+
if ( empty( $key ) ) {
|
105 |
+
$key = $meetup_license;
|
106 |
+
} else {
|
107 |
+
$key2 = $meetup_license;
|
108 |
+
}
|
109 |
+
}
|
110 |
+
|
111 |
+
$url = $api->domain . 'meetup/' . $key;
|
112 |
+
$defaults = array(
|
113 |
+
'referral' => urlencode( home_url() ),
|
114 |
+
'admin_url' => urlencode( get_admin_url() ),
|
115 |
+
'type' => 'new',
|
116 |
+
'lang' => get_bloginfo( 'language' ),
|
117 |
+
);
|
118 |
+
|
119 |
+
if ( $key2 ) {
|
120 |
+
$defaults['licenses'] = array(
|
121 |
+
'tribe-meetup' => $key2,
|
122 |
+
);
|
123 |
+
}
|
124 |
+
|
125 |
+
$args = wp_parse_args( $args, $defaults );
|
126 |
+
|
127 |
+
$url = add_query_arg( $args, $url );
|
128 |
+
|
129 |
+
return $url;
|
130 |
+
}
|
131 |
}
|
src/Tribe/Aggregator/Service.php
CHANGED
@@ -29,6 +29,15 @@ class Tribe__Events__Aggregator__Service {
|
|
29 |
*/
|
30 |
public static $auth_transient = 'tribe_aggregator_has_eventbrite_authorized_response';
|
31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
32 |
/**
|
33 |
* API varibles stored in a single Object
|
34 |
*
|
@@ -40,13 +49,13 @@ class Tribe__Events__Aggregator__Service {
|
|
40 |
* @type array $licenses Array with plugins and licenses that we will pass to EA
|
41 |
* }
|
42 |
*/
|
43 |
-
public $api =
|
44 |
-
'key'
|
45 |
-
'version'
|
46 |
-
'domain'
|
47 |
-
'path'
|
48 |
'licenses' => array(),
|
49 |
-
|
50 |
|
51 |
/**
|
52 |
* @var Tribe__Events__Aggregator__API__Requests
|
@@ -257,7 +266,7 @@ class Tribe__Events__Aggregator__Service {
|
|
257 |
}
|
258 |
|
259 |
if ( empty( $data['body'] ) ) {
|
260 |
-
$args =
|
261 |
} else {
|
262 |
$args = $data;
|
263 |
}
|
@@ -276,7 +285,7 @@ class Tribe__Events__Aggregator__Service {
|
|
276 |
$json = json_decode( wp_remote_retrieve_body( $response ) );
|
277 |
|
278 |
if ( empty( $json ) ) {
|
279 |
-
return tribe_error( 'core:aggregator:invalid-json-response',
|
280 |
}
|
281 |
|
282 |
return $json;
|
@@ -299,7 +308,7 @@ class Tribe__Events__Aggregator__Service {
|
|
299 |
if ( is_wp_error( $response ) || empty( $response->status ) ) {
|
300 |
$error = $response;
|
301 |
|
302 |
-
return $return_error ?
|
303 |
}
|
304 |
|
305 |
if ( $response && 'success' === $response->status ) {
|
@@ -307,7 +316,7 @@ class Tribe__Events__Aggregator__Service {
|
|
307 |
}
|
308 |
|
309 |
return $return_error
|
310 |
-
?
|
311 |
: $origins;
|
312 |
}
|
313 |
|
@@ -319,11 +328,11 @@ class Tribe__Events__Aggregator__Service {
|
|
319 |
* @return mixed|void
|
320 |
*/
|
321 |
public function get_eventbrite_args( ) {
|
322 |
-
$args =
|
323 |
'referral' => urlencode( home_url() ),
|
324 |
'url' => urlencode( site_url() ),
|
325 |
'secret_key' => tribe( 'events-aggregator.settings' )->get_eb_security_key()->security_key,
|
326 |
-
|
327 |
|
328 |
/**
|
329 |
* Allow filtering for which params we are sending to EA for Token callback
|
@@ -384,7 +393,7 @@ class Tribe__Events__Aggregator__Service {
|
|
384 |
|
385 |
// If we have an WP_Error we return only CSV
|
386 |
if ( is_wp_error( $response ) ) {
|
387 |
-
return tribe_error( 'core:aggregator:invalid-eventbrite-token', array(),
|
388 |
} else {
|
389 |
delete_transient( self::$auth_transient );
|
390 |
}
|
@@ -455,15 +464,15 @@ class Tribe__Events__Aggregator__Service {
|
|
455 |
*/
|
456 |
$args = apply_filters( 'tribe_aggregator_service_post_import_args', $args, $this );
|
457 |
|
458 |
-
$request_args =
|
459 |
'body' => $args,
|
460 |
-
|
461 |
|
462 |
if ( isset( $args['file'] ) ) {
|
463 |
$boundary = wp_generate_password( 24 );
|
464 |
-
$headers =
|
465 |
'content-type' => 'multipart/form-data; boundary=' . $boundary,
|
466 |
-
|
467 |
|
468 |
$payload = array();
|
469 |
foreach ( $args as $name => $value ) {
|
@@ -679,31 +688,35 @@ class Tribe__Events__Aggregator__Service {
|
|
679 |
esc_html__( 'the UID part of the iCalendar Specification', 'the-events-calendar' )
|
680 |
);
|
681 |
|
682 |
-
$this->service_messages =
|
683 |
-
|
|
|
684 |
'error:create-import-invalid-params' => __( 'Events could not be imported. The import parameters were invalid.', 'the-events-calendar' ),
|
685 |
'error:eb-permissions' => __( 'Events cannot be imported because Eventbrite has returned an error. This could mean that the event ID does not exist, the event or source is marked as Private, or the event or source has been otherwise restricted by Eventbrite. You can <a href="https://theeventscalendar.com/knowledgebase/import-errors/" target="_blank">read more about Eventbrite restrictions in our knowledgebase</a>.', 'the-events-calendar' ),
|
686 |
-
'error:eb-no-results'
|
687 |
-
'error:fetch-404'
|
688 |
-
'error:fetch-failed'
|
689 |
-
'error:get-image'
|
690 |
-
'error:get-image-bad-association'
|
691 |
-
'error:import-failed'
|
692 |
-
'error:invalid-ical-url'
|
693 |
-
'error:invalid-ics-file'
|
694 |
-
'error:meetup-api-key'
|
695 |
-
'error:meetup-api-quota'
|
696 |
-
'error:usage-limit-exceeded'
|
697 |
-
|
698 |
-
'
|
699 |
-
|
700 |
-
'
|
701 |
-
|
702 |
-
'success
|
703 |
-
'success:import
|
704 |
-
'success:
|
705 |
-
'
|
706 |
-
'
|
|
|
|
|
|
|
707 |
'error:ical-missing-uids-schedule' => sprintf(
|
708 |
_x(
|
709 |
'Some events at the requested source are missing the UID attribute required by the iCalendar Specification. Creating a scheduled import would generate duplicate events on each import. Instead, please use a One-Time import or contact the source provider to fix the UID issue; linking them to %s may help them more quickly resolve their feed\'s UID issue.',
|
@@ -712,6 +725,7 @@ class Tribe__Events__Aggregator__Service {
|
|
712 |
),
|
713 |
$ical_uid_specification_link
|
714 |
),
|
|
|
715 |
'warning:ical-missing-uids-manual' => sprintf(
|
716 |
_x(
|
717 |
'Some events at the requested source are missing the UID attribute required by the iCalendar Specification. One-Time and ICS File imports are allowed but successive imports will create duplicated events on your site. Please contact the source provider to fix the UID issue; linking them to %s may help them more quickly resolve their feed\'s UID issue.',
|
@@ -719,7 +733,7 @@ class Tribe__Events__Aggregator__Service {
|
|
719 |
'the-events-calendar' ),
|
720 |
$ical_uid_specification_link
|
721 |
),
|
722 |
-
|
723 |
|
724 |
/**
|
725 |
* Filters the service messages map to allow addition and removal of messages.
|
@@ -746,13 +760,14 @@ class Tribe__Events__Aggregator__Service {
|
|
746 |
* @return bool Whether the import was confirmed or not.
|
747 |
*/
|
748 |
public function confirm_import( $args ) {
|
749 |
-
$keys =
|
750 |
$keys = array_combine( $keys, $keys );
|
751 |
$confirmation_args = array_intersect_key( $args, $keys );
|
752 |
-
$confirmation_args = array_merge( $confirmation_args,
|
753 |
'eventbrite_token' => '1',
|
754 |
'meetup_api_key' => '1',
|
755 |
-
|
|
|
756 |
|
757 |
// Set site for origin(s) that need it for new token handling.
|
758 |
if ( 'eventbrite' === $confirmation_args['origin'] ) {
|
@@ -847,6 +862,93 @@ class Tribe__Events__Aggregator__Service {
|
|
847 |
return $args;
|
848 |
}
|
849 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
850 |
/**
|
851 |
* Fetch Facebook Extended Token from the Service
|
852 |
*
|
29 |
*/
|
30 |
public static $auth_transient = 'tribe_aggregator_has_eventbrite_authorized_response';
|
31 |
|
32 |
+
/**
|
33 |
+
* The name of the transient containing the Meetup authorization response.
|
34 |
+
*
|
35 |
+
* @since 4.9.6
|
36 |
+
*
|
37 |
+
* @var string
|
38 |
+
*/
|
39 |
+
public static $auth_transient_meetup = 'tribe_aggregator_has_meetup_authorized_response';
|
40 |
+
|
41 |
/**
|
42 |
* API varibles stored in a single Object
|
43 |
*
|
49 |
* @type array $licenses Array with plugins and licenses that we will pass to EA
|
50 |
* }
|
51 |
*/
|
52 |
+
public $api = [
|
53 |
+
'key' => null,
|
54 |
+
'version' => 'v1',
|
55 |
+
'domain' => 'https://ea.theeventscalendar.com/',
|
56 |
+
'path' => 'api/aggregator/',
|
57 |
'licenses' => array(),
|
58 |
+
];
|
59 |
|
60 |
/**
|
61 |
* @var Tribe__Events__Aggregator__API__Requests
|
266 |
}
|
267 |
|
268 |
if ( empty( $data['body'] ) ) {
|
269 |
+
$args = [ 'body' => $data ];
|
270 |
} else {
|
271 |
$args = $data;
|
272 |
}
|
285 |
$json = json_decode( wp_remote_retrieve_body( $response ) );
|
286 |
|
287 |
if ( empty( $json ) ) {
|
288 |
+
return tribe_error( 'core:aggregator:invalid-json-response', [ 'response' => $response ], [ 'response' => $response ] );
|
289 |
}
|
290 |
|
291 |
return $json;
|
308 |
if ( is_wp_error( $response ) || empty( $response->status ) ) {
|
309 |
$error = $response;
|
310 |
|
311 |
+
return $return_error ? [ $origins, $error ] : $origins;
|
312 |
}
|
313 |
|
314 |
if ( $response && 'success' === $response->status ) {
|
316 |
}
|
317 |
|
318 |
return $return_error
|
319 |
+
? [ $origins, $error ]
|
320 |
: $origins;
|
321 |
}
|
322 |
|
328 |
* @return mixed|void
|
329 |
*/
|
330 |
public function get_eventbrite_args( ) {
|
331 |
+
$args = [
|
332 |
'referral' => urlencode( home_url() ),
|
333 |
'url' => urlencode( site_url() ),
|
334 |
'secret_key' => tribe( 'events-aggregator.settings' )->get_eb_security_key()->security_key,
|
335 |
+
];
|
336 |
|
337 |
/**
|
338 |
* Allow filtering for which params we are sending to EA for Token callback
|
393 |
|
394 |
// If we have an WP_Error we return only CSV
|
395 |
if ( is_wp_error( $response ) ) {
|
396 |
+
return tribe_error( 'core:aggregator:invalid-eventbrite-token', array(), [ 'response' => $response ] );
|
397 |
} else {
|
398 |
delete_transient( self::$auth_transient );
|
399 |
}
|
464 |
*/
|
465 |
$args = apply_filters( 'tribe_aggregator_service_post_import_args', $args, $this );
|
466 |
|
467 |
+
$request_args = [
|
468 |
'body' => $args,
|
469 |
+
];
|
470 |
|
471 |
if ( isset( $args['file'] ) ) {
|
472 |
$boundary = wp_generate_password( 24 );
|
473 |
+
$headers = [
|
474 |
'content-type' => 'multipart/form-data; boundary=' . $boundary,
|
475 |
+
];
|
476 |
|
477 |
$payload = array();
|
478 |
foreach ( $args as $name => $value ) {
|
688 |
esc_html__( 'the UID part of the iCalendar Specification', 'the-events-calendar' )
|
689 |
);
|
690 |
|
691 |
+
$this->service_messages = [
|
692 |
+
/* Error */
|
693 |
+
'error:create-import-failed' => __( 'Sorry, but something went wrong. Please try again.', 'the-events-calendar' ),
|
694 |
'error:create-import-invalid-params' => __( 'Events could not be imported. The import parameters were invalid.', 'the-events-calendar' ),
|
695 |
'error:eb-permissions' => __( 'Events cannot be imported because Eventbrite has returned an error. This could mean that the event ID does not exist, the event or source is marked as Private, or the event or source has been otherwise restricted by Eventbrite. You can <a href="https://theeventscalendar.com/knowledgebase/import-errors/" target="_blank">read more about Eventbrite restrictions in our knowledgebase</a>.', 'the-events-calendar' ),
|
696 |
+
'error:eb-no-results' => __( 'No upcoming Eventbrite events found.', 'the-events-calendar' ),
|
697 |
+
'error:fetch-404' => __( 'The URL provided could not be reached.', 'the-events-calendar' ),
|
698 |
+
'error:fetch-failed' => __( 'The URL provided failed to load.', 'the-events-calendar' ),
|
699 |
+
'error:get-image' => __( 'The image associated with your event could not be imported.', 'the-events-calendar' ),
|
700 |
+
'error:get-image-bad-association' => __( 'The image associated with your event is not accessible with your API key.', 'the-events-calendar' ),
|
701 |
+
'error:import-failed' => __( 'The import failed for an unknown reason. Please try again. If the problem persists, please contact support.', 'the-events-calendar' ),
|
702 |
+
'error:invalid-ical-url' => __( 'Events could not be imported. The URL provided did not have events in the proper format.', 'the-events-calendar' ),
|
703 |
+
'error:invalid-ics-file' => __( 'The file provided could not be opened. Please confirm that it is a properly formatted .ics file.', 'the-events-calendar' ),
|
704 |
+
'error:meetup-api-key' => __( 'Your Meetup API key is invalid.', 'the-events-calendar' ),
|
705 |
+
'error:meetup-api-quota' => __( 'Event Aggregator cannot reach Meetup.com because you exceeded the request limit for your Meetup API key.', 'the-events-calendar' ),
|
706 |
+
'error:usage-limit-exceeded' => __( 'The daily limit of %d import requests to the Event Aggregator service has been reached. Please try again later.', 'the-events-calendar' ),
|
707 |
+
/* Fetching */
|
708 |
+
'fetching' => __( 'The import is in progress.', 'the-events-calendar' ),
|
709 |
+
/* Queued */
|
710 |
+
'queued' => __( 'The import will be starting soon.', 'the-events-calendar' ),
|
711 |
+
/* Success */
|
712 |
+
'success' => __( 'Success', 'the-events-calendar' ),
|
713 |
+
'success:create-import' => __( 'Import created', 'the-events-calendar' ),
|
714 |
+
'success:eventbrite-get-token' => __( 'Successfully fetched Eventbrite Token', 'the-events-calendar' ),
|
715 |
+
'success:get-origin' => __( 'Successfully loaded import origins', 'the-events-calendar' ),
|
716 |
+
'success:import-complete' => __( 'Import is complete', 'the-events-calendar' ),
|
717 |
+
'success:queued' => __( 'Import queued', 'the-events-calendar' ),
|
718 |
+
'error:invalid-other-url' => __( 'Events could not be imported. The URL provided could not be reached.', 'the-events-calendar' ),
|
719 |
+
'error:no-results' => __( 'The requested source does not have any upcoming and published events matching the search criteria.', 'the-events-calendar' ),
|
720 |
'error:ical-missing-uids-schedule' => sprintf(
|
721 |
_x(
|
722 |
'Some events at the requested source are missing the UID attribute required by the iCalendar Specification. Creating a scheduled import would generate duplicate events on each import. Instead, please use a One-Time import or contact the source provider to fix the UID issue; linking them to %s may help them more quickly resolve their feed\'s UID issue.',
|
725 |
),
|
726 |
$ical_uid_specification_link
|
727 |
),
|
728 |
+
/* Warning */
|
729 |
'warning:ical-missing-uids-manual' => sprintf(
|
730 |
_x(
|
731 |
'Some events at the requested source are missing the UID attribute required by the iCalendar Specification. One-Time and ICS File imports are allowed but successive imports will create duplicated events on your site. Please contact the source provider to fix the UID issue; linking them to %s may help them more quickly resolve their feed\'s UID issue.',
|
733 |
'the-events-calendar' ),
|
734 |
$ical_uid_specification_link
|
735 |
),
|
736 |
+
];
|
737 |
|
738 |
/**
|
739 |
* Filters the service messages map to allow addition and removal of messages.
|
760 |
* @return bool Whether the import was confirmed or not.
|
761 |
*/
|
762 |
public function confirm_import( $args ) {
|
763 |
+
$keys = [ 'origin', 'source', 'type' ];
|
764 |
$keys = array_combine( $keys, $keys );
|
765 |
$confirmation_args = array_intersect_key( $args, $keys );
|
766 |
+
$confirmation_args = array_merge( $confirmation_args, [
|
767 |
'eventbrite_token' => '1',
|
768 |
'meetup_api_key' => '1',
|
769 |
+
]
|
770 |
+
);
|
771 |
|
772 |
// Set site for origin(s) that need it for new token handling.
|
773 |
if ( 'eventbrite' === $confirmation_args['origin'] ) {
|
862 |
return $args;
|
863 |
}
|
864 |
|
865 |
+
/**
|
866 |
+
* Get Meetup Arguments for EA
|
867 |
+
*
|
868 |
+
* @since 4.9.6
|
869 |
+
*
|
870 |
+
* @return mixed|void
|
871 |
+
*/
|
872 |
+
public function get_meetup_args() {
|
873 |
+
$args = [
|
874 |
+
'referral' => urlencode( home_url() ),
|
875 |
+
'url' => urlencode( site_url() ),
|
876 |
+
'secret_key' => tribe( 'events-aggregator.settings' )->get_meetup_security_key()->security_key,
|
877 |
+
];
|
878 |
+
|
879 |
+
/**
|
880 |
+
* Allow filtering for which params we are sending to EA for Token callback
|
881 |
+
*
|
882 |
+
* @since 4.9.6
|
883 |
+
*
|
884 |
+
* @param array $args Which arguments are sent to Token Callback
|
885 |
+
*/
|
886 |
+
return apply_filters( 'tribe_aggregator_meetup_token_callback_args', $args );
|
887 |
+
}
|
888 |
+
|
889 |
+
/**
|
890 |
+
* Fetch Meetup Extended Token from the Service.
|
891 |
+
*
|
892 |
+
* @since 4.9.6
|
893 |
+
*
|
894 |
+
* @param bool $request_security_key Whether to explicitly request the Meetup security key in the response or not.
|
895 |
+
*
|
896 |
+
* @return stdClass|WP_Error Either the Event Aggregator Service response or a `WP_Error` on failure.
|
897 |
+
*/
|
898 |
+
public function has_meetup_authorized( $request_security_key = false ) {
|
899 |
+
|
900 |
+
$args = $this->get_meetup_args();
|
901 |
+
|
902 |
+
if ( $request_security_key ) {
|
903 |
+
$args['secret_key'] = 'request';
|
904 |
+
}
|
905 |
+
|
906 |
+
$cached_response = get_transient( self::$auth_transient_meetup );
|
907 |
+
|
908 |
+
if ( false !== $cached_response ) {
|
909 |
+
return $cached_response;
|
910 |
+
}
|
911 |
+
|
912 |
+
$response = $this->get( 'meetup/validate', $args );
|
913 |
+
|
914 |
+
// If we have an WP_Error we return only CSV.
|
915 |
+
if ( $response instanceof WP_Error ) {
|
916 |
+
$response = tribe_error( 'core:aggregator:invalid-meetup-token', array(), [ 'response' => $response ] );
|
917 |
+
} elseif (
|
918 |
+
false === $cached_response
|
919 |
+
&& isset( $response->status )
|
920 |
+
&& 'error' !== $response->status
|
921 |
+
) {
|
922 |
+
// Check this each 15 minutes.
|
923 |
+
set_transient( self::$auth_transient_meetup, $response, 900 );
|
924 |
+
}
|
925 |
+
|
926 |
+
return $response;
|
927 |
+
}
|
928 |
+
|
929 |
+
/**
|
930 |
+
* Disconnect Meetup Token on EA
|
931 |
+
*
|
932 |
+
* @since 4.9.6
|
933 |
+
*
|
934 |
+
* @return stdClass|WP_Error
|
935 |
+
*/
|
936 |
+
public function disconnect_meetup_token() {
|
937 |
+
|
938 |
+
$args = $this->get_meetup_args();
|
939 |
+
|
940 |
+
$response = $this->get( 'meetup/disconnect', $args );
|
941 |
+
|
942 |
+
// If we have an WP_Error we return only CSV
|
943 |
+
if ( is_wp_error( $response ) ) {
|
944 |
+
return tribe_error( 'core:aggregator:invalid-meetup-token', array(), [ 'response' => $response ] );
|
945 |
+
} else {
|
946 |
+
delete_transient( self::$auth_transient_meetup );
|
947 |
+
}
|
948 |
+
|
949 |
+
return $response;
|
950 |
+
}
|
951 |
+
|
952 |
/**
|
953 |
* Fetch Facebook Extended Token from the Service
|
954 |
*
|
src/Tribe/Aggregator/Settings.php
CHANGED
@@ -30,8 +30,9 @@ class Tribe__Events__Aggregator__Settings {
|
|
30 |
* Note: This should load on `plugins_loaded@P10`
|
31 |
*/
|
32 |
public function __construct() {
|
33 |
-
add_action( 'tribe_settings_do_tabs',
|
34 |
-
add_action( 'current_screen',
|
|
|
35 |
}
|
36 |
|
37 |
/**
|
@@ -62,7 +63,7 @@ class Tribe__Events__Aggregator__Settings {
|
|
62 |
$this->clear_eb_credentials();
|
63 |
|
64 |
wp_redirect(
|
65 |
-
Tribe__Settings::instance()->get_url(
|
66 |
);
|
67 |
die;
|
68 |
}
|
@@ -74,9 +75,9 @@ class Tribe__Events__Aggregator__Settings {
|
|
74 |
*
|
75 |
*/
|
76 |
public function get_eb_security_key() {
|
77 |
-
$args =
|
78 |
'security_key' => tribe_get_option( 'eb_security_key' ),
|
79 |
-
|
80 |
|
81 |
return (object) $args;
|
82 |
}
|
@@ -175,12 +176,161 @@ class Tribe__Events__Aggregator__Settings {
|
|
175 |
return true;
|
176 |
}
|
177 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
178 |
public function do_import_settings_tab() {
|
179 |
include_once Tribe__Events__Main::instance()->plugin_path . 'src/admin-views/aggregator/settings.php';
|
180 |
}
|
181 |
|
182 |
public function get_all_default_settings() {
|
183 |
-
$origins =
|
184 |
'csv',
|
185 |
'gcal',
|
186 |
'ical',
|
@@ -188,7 +338,7 @@ class Tribe__Events__Aggregator__Settings {
|
|
188 |
'eventbrite',
|
189 |
'meetup',
|
190 |
'url',
|
191 |
-
|
192 |
|
193 |
/**
|
194 |
* Filters the origins available for the default import settings handling.
|
@@ -202,11 +352,11 @@ class Tribe__Events__Aggregator__Settings {
|
|
202 |
$settings = array();
|
203 |
|
204 |
foreach ( $origins as $origin ) {
|
205 |
-
$settings[ $origin ] =
|
206 |
'post_status' => $this->default_post_status( $origin ),
|
207 |
'category' => $this->default_category( $origin ),
|
208 |
'map' => $this->default_map( $origin ),
|
209 |
-
|
210 |
}
|
211 |
|
212 |
return $settings;
|
@@ -353,11 +503,11 @@ class Tribe__Events__Aggregator__Settings {
|
|
353 |
* format.
|
354 |
*/
|
355 |
public function get_import_limit_type_options( ) {
|
356 |
-
$options =
|
357 |
'range' => __( 'By date range', 'the-events-calendar' ),
|
358 |
'count' => __( 'By number of events', 'the-events-calendar' ),
|
359 |
'no_limit' => __( 'Do not limit (not recommended)', 'the-events-calendar' ),
|
360 |
-
|
361 |
|
362 |
/**
|
363 |
* Filters the options available for the default import limit options.
|
@@ -382,38 +532,38 @@ class Tribe__Events__Aggregator__Settings {
|
|
382 |
*/
|
383 |
protected function get_range_options() {
|
384 |
return array(
|
385 |
-
DAY_IN_SECONDS =>
|
386 |
'title' => __( '24 hours', 'the-events-calendar' ),
|
387 |
'range' => __( '24 hours', 'the-events-calendar' ),
|
388 |
-
|
389 |
-
3 * DAY_IN_SECONDS =>
|
390 |
'title' => __( '72 hours', 'the-events-calendar' ),
|
391 |
'range' => __( '72 hours', 'the-events-calendar' ),
|
392 |
-
|
393 |
-
WEEK_IN_SECONDS =>
|
394 |
'title' => __( 'One week', 'the-events-calendar' ),
|
395 |
'range' => __( 'one week', 'the-events-calendar' ),
|
396 |
-
|
397 |
-
2 * WEEK_IN_SECONDS =>
|
398 |
'title' => __( 'Two weeks', 'the-events-calendar' ),
|
399 |
'range' => __( 'two weeks', 'the-events-calendar' ),
|
400 |
-
|
401 |
-
3 * WEEK_IN_SECONDS =>
|
402 |
'title' => __( 'Three weeks', 'the-events-calendar' ),
|
403 |
'range' => __( 'three weeks', 'the-events-calendar' ),
|
404 |
-
|
405 |
-
30 * DAY_IN_SECONDS =>
|
406 |
'title' => __( 'One month', 'the-events-calendar' ),
|
407 |
'range' => __( 'one month', 'the-events-calendar' ),
|
408 |
-
|
409 |
-
2 * 30 * DAY_IN_SECONDS =>
|
410 |
'title' => __( 'Two months', 'the-events-calendar' ),
|
411 |
'range' => __( 'two months', 'the-events-calendar' ),
|
412 |
-
|
413 |
-
3 * 30 * DAY_IN_SECONDS =>
|
414 |
'title' => __( 'Three months', 'the-events-calendar' ),
|
415 |
'range' => __( 'three months', 'the-events-calendar' ),
|
416 |
-
|
417 |
);
|
418 |
}
|
419 |
|
@@ -457,7 +607,7 @@ class Tribe__Events__Aggregator__Settings {
|
|
457 |
* @return array $options An array of arrays in the format [ <number> => <number> ].
|
458 |
*/
|
459 |
public function get_import_limit_count_options() {
|
460 |
-
$numbers =
|
461 |
|
462 |
$options = array_combine( $numbers, $numbers );
|
463 |
|
@@ -518,10 +668,10 @@ class Tribe__Events__Aggregator__Settings {
|
|
518 |
* @return array
|
519 |
*/
|
520 |
public function get_source_origin_regexp() {
|
521 |
-
$origins =
|
522 |
'eventbrite' => Tribe__Events__Aggregator__Record__Eventbrite::get_source_regexp(),
|
523 |
'meetup' => Tribe__Events__Aggregator__Record__Meetup::get_source_regexp(),
|
524 |
-
|
525 |
|
526 |
/**
|
527 |
* Allows external plugins to filter which are the source Regular EXP
|
@@ -593,7 +743,7 @@ class Tribe__Events__Aggregator__Settings {
|
|
593 |
$this->clear_fb_credentials();
|
594 |
|
595 |
wp_redirect(
|
596 |
-
Tribe__Settings::instance()->get_url(
|
597 |
);
|
598 |
die;
|
599 |
}
|
@@ -604,11 +754,11 @@ class Tribe__Events__Aggregator__Settings {
|
|
604 |
public function get_fb_credentials() {
|
605 |
_deprecated_function( __FUNCTION__, '4.6.23', 'Importing from Facebook is no longer supported in Event Aggregator.' );
|
606 |
|
607 |
-
$args =
|
608 |
'token' => tribe_get_option( 'fb_token' ),
|
609 |
'expires' => tribe_get_option( 'fb_token_expires' ),
|
610 |
'scopes' => tribe_get_option( 'fb_token_scopes' ),
|
611 |
-
|
612 |
|
613 |
return (object) $args;
|
614 |
}
|
30 |
* Note: This should load on `plugins_loaded@P10`
|
31 |
*/
|
32 |
public function __construct() {
|
33 |
+
add_action( 'tribe_settings_do_tabs', [ $this, 'do_import_settings_tab' ] );
|
34 |
+
add_action( 'current_screen', [ $this, 'maybe_clear_eb_credentials' ] );
|
35 |
+
add_action( 'current_screen', [ $this, 'maybe_clear_meetup_credentials' ] );
|
36 |
}
|
37 |
|
38 |
/**
|
63 |
$this->clear_eb_credentials();
|
64 |
|
65 |
wp_redirect(
|
66 |
+
Tribe__Settings::instance()->get_url( [ 'tab' => 'addons' ] )
|
67 |
);
|
68 |
die;
|
69 |
}
|
75 |
*
|
76 |
*/
|
77 |
public function get_eb_security_key() {
|
78 |
+
$args = [
|
79 |
'security_key' => tribe_get_option( 'eb_security_key' ),
|
80 |
+
];
|
81 |
|
82 |
return (object) $args;
|
83 |
}
|
176 |
return true;
|
177 |
}
|
178 |
|
179 |
+
/**
|
180 |
+
* Hooked to current_screen, this method identifies whether or not eb credentials should be cleared
|
181 |
+
*
|
182 |
+
* @since 4.9.6
|
183 |
+
*
|
184 |
+
* @param WP_Screen $screen The current screen instance.
|
185 |
+
*/
|
186 |
+
public function maybe_clear_meetup_credentials( $screen ) {
|
187 |
+
if ( 'tribe_events_page_tribe-common' !== $screen->base ) {
|
188 |
+
return;
|
189 |
+
}
|
190 |
+
|
191 |
+
if ( tribe_get_request_var( 'tab', false ) !== 'addons' ) {
|
192 |
+
return;
|
193 |
+
}
|
194 |
+
|
195 |
+
$action = tribe_get_request_var( 'action' ) === 'disconnect-meetup';
|
196 |
+
$nonce = tribe_get_request_var( '_wpnonce' );
|
197 |
+
|
198 |
+
if ( ! ( $action && $nonce && wp_verify_nonce( $nonce, 'disconnect-meetup' ) ) ) {
|
199 |
+
return;
|
200 |
+
}
|
201 |
+
|
202 |
+
$this->clear_meetup_credentials();
|
203 |
+
|
204 |
+
wp_redirect(
|
205 |
+
Tribe__Settings::instance()->get_url( [ 'tab' => 'addons' ] )
|
206 |
+
);
|
207 |
+
die;
|
208 |
+
}
|
209 |
+
|
210 |
+
/**
|
211 |
+
* Get EB Security Key
|
212 |
+
*
|
213 |
+
* @since 4.9.6
|
214 |
+
*
|
215 |
+
*/
|
216 |
+
public function get_meetup_security_key() {
|
217 |
+
$args = [
|
218 |
+
'security_key' => tribe_get_option( 'meetup_security_key' ),
|
219 |
+
];
|
220 |
+
|
221 |
+
return (object) $args;
|
222 |
+
}
|
223 |
+
|
224 |
+
/**
|
225 |
+
* Check if Security Key
|
226 |
+
*
|
227 |
+
* @since 4.9.6
|
228 |
+
*
|
229 |
+
* @return bool
|
230 |
+
*
|
231 |
+
*/
|
232 |
+
public function has_meetup_security_key() {
|
233 |
+
$credentials = $this->get_meetup_security_key();
|
234 |
+
|
235 |
+
return ! empty( $credentials->security_key );
|
236 |
+
}
|
237 |
+
|
238 |
+
/**
|
239 |
+
* Handle Checking if there is a Security Key and Saving It
|
240 |
+
*
|
241 |
+
* @since 4.9.6
|
242 |
+
*
|
243 |
+
* @param object $eb_authorized object from EA service for Meetup Validation
|
244 |
+
*
|
245 |
+
* @return bool
|
246 |
+
*/
|
247 |
+
public function handle_meetup_security_key( $meetup_authorized ) {
|
248 |
+
|
249 |
+
// key is sent on initial authorization and save it if we have it
|
250 |
+
if ( ! empty( $meetup_authorized->data->secret_key ) ) {
|
251 |
+
tribe_update_option( 'meetup_security_key', esc_attr( $meetup_authorized->data->secret_key ) );
|
252 |
+
|
253 |
+
// If we have a Meetup OAuth flow security key, then we can remove the old Meetup API key, if any.
|
254 |
+
tribe_update_option( 'meetup_api_key', '' );
|
255 |
+
|
256 |
+
return true;
|
257 |
+
}
|
258 |
+
|
259 |
+
|
260 |
+
if ( $this->has_meetup_security_key() ) {
|
261 |
+
return true;
|
262 |
+
}
|
263 |
+
|
264 |
+
return false;
|
265 |
+
}
|
266 |
+
|
267 |
+
/**
|
268 |
+
* Disconnect Meetup from EA
|
269 |
+
*
|
270 |
+
* @since 4.9.6
|
271 |
+
*/
|
272 |
+
public function clear_meetup_credentials() {
|
273 |
+
|
274 |
+
tribe( 'events-aggregator.service' )->disconnect_meetup_token();
|
275 |
+
|
276 |
+
tribe_update_option( 'meetup_security_key', null );
|
277 |
+
delete_transient( Tribe__Events__Aggregator__Service::$auth_transient_meetup );
|
278 |
+
|
279 |
+
}
|
280 |
+
|
281 |
+
/**
|
282 |
+
* Given a URL, tack on the parts of the URL that gets used to disconnect Meetup
|
283 |
+
*
|
284 |
+
* @param string $url
|
285 |
+
*
|
286 |
+
* @since 4.9.6
|
287 |
+
*
|
288 |
+
* @return string The URL to issue a Meeetup disconnect request to EA Service.
|
289 |
+
*/
|
290 |
+
public function build_disconnect_meetup_url( $url ) {
|
291 |
+
return wp_nonce_url(
|
292 |
+
add_query_arg(
|
293 |
+
'action',
|
294 |
+
'disconnect-meetup',
|
295 |
+
$url
|
296 |
+
),
|
297 |
+
'disconnect-meetup'
|
298 |
+
);
|
299 |
+
}
|
300 |
+
|
301 |
+
/**
|
302 |
+
* Check if the Meetup API credentials are connected in EA and correctly set.
|
303 |
+
*
|
304 |
+
* @since 4.9.6
|
305 |
+
*
|
306 |
+
* @return bool Whether the Meetup credentials are valid or not.
|
307 |
+
*/
|
308 |
+
public function is_ea_authorized_for_meetup() {
|
309 |
+
// If the service hasn't enabled oauth for Meetup, always assume it is valid.
|
310 |
+
if ( ! tribe( 'events-aggregator.main' )->api( 'origins' )->is_oauth_enabled( 'meetup' ) ) {
|
311 |
+
return true;
|
312 |
+
}
|
313 |
+
|
314 |
+
$request_secret_key = ! $this->has_meetup_security_key();
|
315 |
+
$meetup_authorized = tribe( 'events-aggregator.service' )->has_meetup_authorized( $request_secret_key );
|
316 |
+
|
317 |
+
if ( empty( $meetup_authorized->status ) || 'success' !== $meetup_authorized->status ) {
|
318 |
+
return false;
|
319 |
+
}
|
320 |
+
|
321 |
+
if ( ! $this->handle_meetup_security_key( $meetup_authorized ) ) {
|
322 |
+
return false;
|
323 |
+
}
|
324 |
+
|
325 |
+
return true;
|
326 |
+
}
|
327 |
+
|
328 |
public function do_import_settings_tab() {
|
329 |
include_once Tribe__Events__Main::instance()->plugin_path . 'src/admin-views/aggregator/settings.php';
|
330 |
}
|
331 |
|
332 |
public function get_all_default_settings() {
|
333 |
+
$origins = [
|
334 |
'csv',
|
335 |
'gcal',
|
336 |
'ical',
|
338 |
'eventbrite',
|
339 |
'meetup',
|
340 |
'url',
|
341 |
+
];
|
342 |
|
343 |
/**
|
344 |
* Filters the origins available for the default import settings handling.
|
352 |
$settings = array();
|
353 |
|
354 |
foreach ( $origins as $origin ) {
|
355 |
+
$settings[ $origin ] = [
|
356 |
'post_status' => $this->default_post_status( $origin ),
|
357 |
'category' => $this->default_category( $origin ),
|
358 |
'map' => $this->default_map( $origin ),
|
359 |
+
];
|
360 |
}
|
361 |
|
362 |
return $settings;
|
503 |
* format.
|
504 |
*/
|
505 |
public function get_import_limit_type_options( ) {
|
506 |
+
$options = [
|
507 |
'range' => __( 'By date range', 'the-events-calendar' ),
|
508 |
'count' => __( 'By number of events', 'the-events-calendar' ),
|
509 |
'no_limit' => __( 'Do not limit (not recommended)', 'the-events-calendar' ),
|
510 |
+
];
|
511 |
|
512 |
/**
|
513 |
* Filters the options available for the default import limit options.
|
532 |
*/
|
533 |
protected function get_range_options() {
|
534 |
return array(
|
535 |
+
DAY_IN_SECONDS => [
|
536 |
'title' => __( '24 hours', 'the-events-calendar' ),
|
537 |
'range' => __( '24 hours', 'the-events-calendar' ),
|
538 |
+
],
|
539 |
+
3 * DAY_IN_SECONDS => [
|
540 |
'title' => __( '72 hours', 'the-events-calendar' ),
|
541 |
'range' => __( '72 hours', 'the-events-calendar' ),
|
542 |
+
],
|
543 |
+
WEEK_IN_SECONDS => [
|
544 |
'title' => __( 'One week', 'the-events-calendar' ),
|
545 |
'range' => __( 'one week', 'the-events-calendar' ),
|
546 |
+
],
|
547 |
+
2 * WEEK_IN_SECONDS => [
|
548 |
'title' => __( 'Two weeks', 'the-events-calendar' ),
|
549 |
'range' => __( 'two weeks', 'the-events-calendar' ),
|
550 |
+
],
|
551 |
+
3 * WEEK_IN_SECONDS => [
|
552 |
'title' => __( 'Three weeks', 'the-events-calendar' ),
|
553 |
'range' => __( 'three weeks', 'the-events-calendar' ),
|
554 |
+
],
|
555 |
+
30 * DAY_IN_SECONDS => [
|
556 |
'title' => __( 'One month', 'the-events-calendar' ),
|
557 |
'range' => __( 'one month', 'the-events-calendar' ),
|
558 |
+
],
|
559 |
+
2 * 30 * DAY_IN_SECONDS => [
|
560 |
'title' => __( 'Two months', 'the-events-calendar' ),
|
561 |
'range' => __( 'two months', 'the-events-calendar' ),
|
562 |
+
],
|
563 |
+
3 * 30 * DAY_IN_SECONDS => [
|
564 |
'title' => __( 'Three months', 'the-events-calendar' ),
|
565 |
'range' => __( 'three months', 'the-events-calendar' ),
|
566 |
+
],
|
567 |
);
|
568 |
}
|
569 |
|
607 |
* @return array $options An array of arrays in the format [ <number> => <number> ].
|
608 |
*/
|
609 |
public function get_import_limit_count_options() {
|
610 |
+
$numbers = [ 50, 100, 200, 300, 500, 750, 1000, 1500, 2000, 2500, 3000, 3500, 4000 ];
|
611 |
|
612 |
$options = array_combine( $numbers, $numbers );
|
613 |
|
668 |
* @return array
|
669 |
*/
|
670 |
public function get_source_origin_regexp() {
|
671 |
+
$origins = [
|
672 |
'eventbrite' => Tribe__Events__Aggregator__Record__Eventbrite::get_source_regexp(),
|
673 |
'meetup' => Tribe__Events__Aggregator__Record__Meetup::get_source_regexp(),
|
674 |
+
];
|
675 |
|
676 |
/**
|
677 |
* Allows external plugins to filter which are the source Regular EXP
|
743 |
$this->clear_fb_credentials();
|
744 |
|
745 |
wp_redirect(
|
746 |
+
Tribe__Settings::instance()->get_url( [ 'tab' => 'addons' ] )
|
747 |
);
|
748 |
die;
|
749 |
}
|
754 |
public function get_fb_credentials() {
|
755 |
_deprecated_function( __FUNCTION__, '4.6.23', 'Importing from Facebook is no longer supported in Event Aggregator.' );
|
756 |
|
757 |
+
$args = [
|
758 |
'token' => tribe_get_option( 'fb_token' ),
|
759 |
'expires' => tribe_get_option( 'fb_token_expires' ),
|
760 |
'scopes' => tribe_get_option( 'fb_token_scopes' ),
|
761 |
+
];
|
762 |
|
763 |
return (object) $args;
|
764 |
}
|
src/Tribe/Main.php
CHANGED
@@ -32,7 +32,7 @@ if ( ! class_exists( 'Tribe__Events__Main' ) ) {
|
|
32 |
const VENUE_POST_TYPE = 'tribe_venue';
|
33 |
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
34 |
|
35 |
-
const VERSION = '4.9.
|
36 |
|
37 |
/**
|
38 |
* Min Pro Addon
|
32 |
const VENUE_POST_TYPE = 'tribe_venue';
|
33 |
const ORGANIZER_POST_TYPE = 'tribe_organizer';
|
34 |
|
35 |
+
const VERSION = '4.9.6';
|
36 |
|
37 |
/**
|
38 |
* Min Pro Addon
|
src/admin-views/aggregator/origins/eventbrite.php
CHANGED
@@ -41,7 +41,7 @@ if ( $missing_eventbrite_credentials ) :
|
|
41 |
);
|
42 |
?>
|
43 |
</p>
|
44 |
-
<a class="tribe-ea-eventbrite-button" href="<?php echo esc_url( Tribe__Events__Aggregator__Record__Eventbrite::get_auth_url() ); ?>"><?php esc_html_e( 'Log into Eventbrite', 'the-events-calendar' ); ?></a>
|
45 |
</div>
|
46 |
</td>
|
47 |
</tr>
|
41 |
);
|
42 |
?>
|
43 |
</p>
|
44 |
+
<a class="tribe-ea-eventbrite-button tribe-ea-login-button" href="<?php echo esc_url( Tribe__Events__Aggregator__Record__Eventbrite::get_auth_url() ); ?>"><?php esc_html_e( 'Log into Eventbrite', 'the-events-calendar' ); ?></a>
|
45 |
</div>
|
46 |
</td>
|
47 |
</tr>
|
src/admin-views/aggregator/origins/meetup.php
CHANGED
@@ -15,65 +15,42 @@ $frequency->source = 'meetup_import_frequency';
|
|
15 |
$cron = Tribe__Events__Aggregator__Cron::instance();
|
16 |
$frequencies = $cron->get_frequency();
|
17 |
|
18 |
-
$
|
19 |
-
$
|
|
|
20 |
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
|
|
27 |
<input type="hidden" name="has-credentials" id="tribe-has-meetup-credentials" value="0">
|
28 |
<div class="tribe-message tribe-credentials-prompt">
|
29 |
-
<
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
'
|
34 |
-
'the-events-calendar'
|
35 |
-
),
|
36 |
-
'<a href="https://secure.meetup.com/meetup_api/key/">',
|
37 |
-
'</a>',
|
38 |
-
'<a href="' . esc_url( Tribe__Settings::instance()->get_url( array( 'tab' => 'addons' ) ) ) . '">',
|
39 |
-
'</a>'
|
40 |
-
);
|
41 |
-
?>
|
42 |
-
</div>
|
43 |
-
<div class="tribe-message tribe-credentials-success">
|
44 |
-
<span class="dashicons dashicons-yes"></span>
|
45 |
-
<?php
|
46 |
-
printf(
|
47 |
-
esc_html__(
|
48 |
-
'Your Meetup API key has been saved to %1$sEvents > Settings > APIs%2$s',
|
49 |
'the-events-calendar'
|
50 |
-
)
|
51 |
-
|
52 |
-
|
53 |
-
);
|
54 |
-
|
|
|
55 |
</div>
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
<?php
|
64 |
-
else:
|
65 |
-
?>
|
66 |
-
<input type="hidden" name="has-credentials" id="tribe-has-meetup-credentials" value="1">
|
67 |
-
<?php
|
68 |
-
endif;
|
69 |
-
?>
|
70 |
-
</td>
|
71 |
-
</tr>
|
72 |
-
<tr class="tribe-dependent" data-depends="#tribe-ea-field-origin" data-condition="meetup">
|
73 |
-
<th scope="row" class="tribe-dependent" data-depends="#tribe-has-meetup-credentials" data-condition="1">
|
74 |
<label for="tribe-ea-field-import_type"><?php echo esc_html( $field->label ); ?></label>
|
75 |
</th>
|
76 |
-
<td
|
77 |
|
78 |
<?php if ( 'edit' === $aggregator_action ) : ?>
|
79 |
<input type="hidden" name="aggregator[meetup][import_type]" id="tribe-ea-field-meetup_import_type" value="schedule" />
|
15 |
$cron = Tribe__Events__Aggregator__Cron::instance();
|
16 |
$frequencies = $cron->get_frequency();
|
17 |
|
18 |
+
$missing_meetup_credentials = ! tribe( 'events-aggregator.settings' )->is_ea_authorized_for_meetup();
|
19 |
+
$data_depends = '#tribe-ea-field-origin';
|
20 |
+
$data_condition = 'meetup';
|
21 |
|
22 |
+
if ( $missing_meetup_credentials ) :
|
23 |
+
$data_depends = '#tribe-has-meetup-credentials';
|
24 |
+
$data_condition = '1';
|
25 |
+
$meetup_auth_url = Tribe__Events__Aggregator__Record__Meetup::get_auth_url();
|
26 |
+
?>
|
27 |
+
<tr class="tribe-dependent tribe-credential-row" data-depends="#tribe-ea-field-origin" data-condition="meetup">
|
28 |
+
<td colspan="2" class="<?php echo esc_attr( $missing_meetup_credentials ? 'enter-credentials' : 'has-credentials' ); ?>">
|
29 |
<input type="hidden" name="has-credentials" id="tribe-has-meetup-credentials" value="0">
|
30 |
<div class="tribe-message tribe-credentials-prompt">
|
31 |
+
<p>
|
32 |
+
<span class="dashicons dashicons-warning"></span>
|
33 |
+
<?php
|
34 |
+
esc_html_e(
|
35 |
+
'Please log in to enable event imports from Meetup.',
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
'the-events-calendar'
|
37 |
+
);
|
38 |
+
?>
|
39 |
+
</p>
|
40 |
+
<a class="tribe-ea-meetup-button tribe-ea-login-button" href="<?php echo esc_url( $meetup_auth_url ); ?>">
|
41 |
+
<?php esc_html_e( 'Log into Meetup', 'the-events-calendar' ); ?>
|
42 |
+
</a>
|
43 |
</div>
|
44 |
+
</td>
|
45 |
+
</tr>
|
46 |
+
<?php endif; ?>
|
47 |
+
|
48 |
+
<tr class="tribe-dependent" data-depends="<?php echo esc_attr( $data_depends ); ?>"
|
49 |
+
data-condition="<?php echo esc_attr( $data_condition ); ?>">
|
50 |
+
<th scope="row">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
<label for="tribe-ea-field-import_type"><?php echo esc_html( $field->label ); ?></label>
|
52 |
</th>
|
53 |
+
<td>
|
54 |
|
55 |
<?php if ( 'edit' === $aggregator_action ) : ?>
|
56 |
<input type="hidden" name="aggregator[meetup][import_type]" id="tribe-ea-field-meetup_import_type" value="schedule" />
|
src/admin-views/aggregator/settings.php
CHANGED
@@ -6,16 +6,16 @@
|
|
6 |
$internal = array();
|
7 |
$use_global_settings_phrase = esc_html__( 'Use global import settings', 'the-events-calendar' );
|
8 |
$post_statuses = get_post_statuses( array() );
|
9 |
-
$category_dropdown = wp_dropdown_categories(
|
10 |
'echo' => false,
|
11 |
'hide_empty' => false,
|
12 |
'orderby' => 'post_title',
|
13 |
'taxonomy' => Tribe__Events__Main::TAXONOMY,
|
14 |
-
|
15 |
preg_match_all( '!\<option.*value="([^"]+)"[^\>]*\>(.*)\</option\>!m', $category_dropdown, $matches );
|
16 |
-
$categories =
|
17 |
'' => __( 'No default category', 'the-events-calendar' ),
|
18 |
-
|
19 |
$events_aggregator_is_active = tribe( 'events-aggregator.main' )->is_service_active();
|
20 |
|
21 |
$origin_post_statuses = $events_aggregator_is_active
|
@@ -31,46 +31,46 @@ foreach ( $matches[1] as $key => $match ) {
|
|
31 |
$origin_categories[ $match ] = $matches[2][ $key ];
|
32 |
}
|
33 |
|
34 |
-
$yes_no_options =
|
35 |
'no' => __( 'No', 'the-events-calendar' ),
|
36 |
'yes' => __( 'Yes', 'the-events-calendar' ),
|
37 |
-
|
38 |
|
39 |
$origin_show_map_options = array( '' => $use_global_settings_phrase ) + $yes_no_options;
|
40 |
|
41 |
-
$change_authority =
|
42 |
-
'import-defaults-update_authority' =>
|
43 |
'type' => 'html',
|
44 |
'html' => '<h3 id="tribe-import-update-authority">' . esc_html__( 'Event Update Authority', 'the-events-calendar' ) . '</h3>',
|
45 |
'priority' => 1.1,
|
46 |
-
|
47 |
-
'info-update_authority' =>
|
48 |
'type' => 'html',
|
49 |
'html' => '<p>' . esc_html__( 'You can make changes to imported events via The Events Calendar and see those changes reflected on your site’s calendar. The owner of the original event source (e.g. the iCalendar feed or Meetup group) might also make changes to their event. If you choose to re-import an altered event (manually or via a scheduled import), any changes made at the source or on your calendar will need to be addressed.', 'the-events-calendar' ) . '</p>',
|
50 |
'priority' => 1.2,
|
51 |
-
|
52 |
-
'tribe_aggregator_default_update_authority' =>
|
53 |
'type' => 'radio',
|
54 |
'label' => esc_html__( 'Event Update Authority', 'the-events-calendar' ),
|
55 |
'validation_type' => 'options',
|
56 |
'default' => Tribe__Events__Aggregator__Settings::$default_update_authority,
|
57 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
58 |
-
'options' =>
|
59 |
'overwrite' => __( 'Overwrite my event with any changes from the original source.', 'the-events-calendar' ),
|
60 |
'retain' => __( 'Do not re-import events. Changes made locally will be preserved.', 'the-events-calendar' ),
|
61 |
'preserve_changes' => __( 'Import events but preserve local changes to event fields.', 'the-events-calendar' ),
|
62 |
-
|
63 |
'priority' => 1.3,
|
64 |
-
|
65 |
-
|
66 |
|
67 |
-
$csv =
|
68 |
-
'csv-defaults' =>
|
69 |
-
'type'
|
70 |
-
'html'
|
71 |
'priority' => 10.1,
|
72 |
-
|
73 |
-
'tribe_aggregator_default_csv_post_status' =>
|
74 |
'type' => 'dropdown',
|
75 |
'label' => esc_html__( 'Default Status', 'the-events-calendar' ),
|
76 |
'tooltip' => esc_html__( 'The default post status for events imported via CSV', 'the-events-calendar' ),
|
@@ -80,9 +80,9 @@ $csv = array(
|
|
80 |
'can_be_empty' => true,
|
81 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
82 |
'options' => $origin_post_statuses,
|
83 |
-
'priority'
|
84 |
-
|
85 |
-
'tribe_aggregator_default_csv_category' =>
|
86 |
'type' => 'dropdown',
|
87 |
'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ),
|
88 |
'tooltip' => esc_html__( 'The default event category for events imported via CSV', 'the-events-calendar' ),
|
@@ -92,26 +92,26 @@ $csv = array(
|
|
92 |
'can_be_empty' => true,
|
93 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
94 |
'options' => $origin_categories,
|
95 |
-
'priority'
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
$ea_disable =
|
100 |
-
'tribe_aggregator_disable_header' =>
|
101 |
-
'type'
|
102 |
-
'html'
|
103 |
'priority' => 50.1,
|
104 |
-
|
105 |
-
'tribe_aggregator_disable'
|
106 |
'type' => 'checkbox_bool',
|
107 |
'label' => __( 'Disable Event Aggregator imports', 'the-events-calendar' ),
|
108 |
'tooltip' => __( 'Stop all Event Aggregator imports from running. Existing imported events will not be affected. Imports via CSV file will still be available.', 'the-events-calendar' ),
|
109 |
'default' => false,
|
110 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
111 |
'validation_type' => 'boolean',
|
112 |
-
'priority'
|
113 |
-
|
114 |
-
|
115 |
|
116 |
$global = $ical = $ics = $gcal = $meetup = $url = $eb_fields = array();
|
117 |
// if there's an Event Aggregator license key, add the Global settings, iCal, and Meetup fields
|
@@ -124,256 +124,255 @@ if ( Tribe__Events__Aggregator::is_service_active() ) {
|
|
124 |
)
|
125 |
);
|
126 |
|
127 |
-
$global =
|
128 |
-
'import-defaults' =>
|
129 |
-
'type'
|
130 |
-
'html'
|
131 |
'priority' => 5.1,
|
132 |
-
|
133 |
-
'tribe_aggregator_default_post_status' =>
|
134 |
-
'type'
|
135 |
-
'label'
|
136 |
-
'tooltip'
|
137 |
-
'size'
|
138 |
'validation_type' => 'options',
|
139 |
-
'default'
|
140 |
-
'can_be_empty'
|
141 |
-
'parent_option'
|
142 |
-
'options'
|
143 |
-
'priority'
|
144 |
-
|
145 |
-
'tribe_aggregator_default_category' =>
|
146 |
-
'type'
|
147 |
-
'label'
|
148 |
-
'tooltip'
|
149 |
-
'size'
|
150 |
'validation_type' => 'options',
|
151 |
-
'default'
|
152 |
-
'can_be_empty'
|
153 |
-
'parent_option'
|
154 |
-
'options'
|
155 |
-
'priority'
|
156 |
-
|
157 |
-
'tribe_aggregator_default_show_map' =>
|
158 |
-
'type'
|
159 |
-
'label'
|
160 |
-
'tooltip'
|
161 |
-
'size'
|
162 |
'validation_type' => 'options',
|
163 |
-
'default'
|
164 |
-
'can_be_empty'
|
165 |
-
'parent_option'
|
166 |
-
'options'
|
167 |
-
'priority'
|
168 |
-
|
169 |
-
'tribe_aggregator_default_import_limit_type' =>
|
170 |
-
'type'
|
171 |
-
'label'
|
172 |
-
'tooltip'
|
173 |
-
|
174 |
-
'size' => 'medium',
|
175 |
'validation_type' => 'options',
|
176 |
-
'default'
|
177 |
-
'can_be_empty'
|
178 |
-
'parent_option'
|
179 |
-
'options'
|
180 |
-
'priority'
|
181 |
-
|
182 |
-
'tribe_aggregator_default_import_limit_range' =>
|
183 |
-
'type'
|
184 |
-
'label'
|
185 |
-
'tooltip'
|
186 |
-
'size'
|
187 |
'validation_type' => 'options',
|
188 |
-
'default'
|
189 |
-
'can_be_empty'
|
190 |
-
'parent_option'
|
191 |
-
'options'
|
192 |
-
'class'
|
193 |
-
'fieldset_attributes' =>
|
194 |
'data-depends' => '#tribe_aggregator_default_import_limit_type-select',
|
195 |
'data-condition' => 'range',
|
196 |
-
|
197 |
-
'priority'
|
198 |
-
|
199 |
-
'tribe_aggregator_default_import_limit_number' =>
|
200 |
-
'type'
|
201 |
-
'label'
|
202 |
-
'tooltip'
|
203 |
-
'size'
|
204 |
'validation_type' => 'options',
|
205 |
-
'default'
|
206 |
-
'can_be_empty'
|
207 |
-
'parent_option'
|
208 |
-
'options'
|
209 |
-
'class'
|
210 |
-
'fieldset_attributes' =>
|
211 |
'data-depends' => '#tribe_aggregator_default_import_limit_type-select',
|
212 |
'data-condition' => 'count',
|
213 |
-
|
214 |
-
'priority'
|
215 |
-
|
216 |
-
'tribe_aggregator_import_process_system' =>
|
217 |
-
'type'
|
218 |
-
'label'
|
219 |
-
'tooltip'
|
220 |
-
'size'
|
221 |
'validation_type' => 'options',
|
222 |
-
'default'
|
223 |
-
'can_be_empty'
|
224 |
-
'parent_option'
|
225 |
-
'options'
|
226 |
-
'priority'
|
227 |
-
|
228 |
-
'tribe_aggregator_import_process_control' =>
|
229 |
-
'type'
|
230 |
-
'label'
|
231 |
-
'html'
|
232 |
-
'priority'
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
$ical =
|
237 |
-
'ical-defaults' =>
|
238 |
'type' => 'html',
|
239 |
'html' => '<h3 id="tribe-import-ical-settings">' . esc_html__( 'iCalendar Import Settings', 'the-events-calendar' ) . '</h3>',
|
240 |
'priority' => 20.1,
|
241 |
-
|
242 |
-
'tribe_aggregator_default_ical_post_status' =>
|
243 |
-
'type'
|
244 |
-
'label'
|
245 |
-
'tooltip'
|
246 |
-
'size'
|
247 |
'validation_type' => 'options',
|
248 |
-
'default'
|
249 |
-
'can_be_empty'
|
250 |
-
'parent_option'
|
251 |
-
'options'
|
252 |
-
'priority'
|
253 |
-
|
254 |
-
'tribe_aggregator_default_ical_category' =>
|
255 |
-
'type'
|
256 |
-
'label'
|
257 |
-
'tooltip'
|
258 |
-
'size'
|
259 |
'validation_type' => 'options',
|
260 |
-
'default'
|
261 |
-
'can_be_empty'
|
262 |
-
'parent_option'
|
263 |
-
'options'
|
264 |
-
'priority'
|
265 |
-
|
266 |
-
'tribe_aggregator_default_ical_show_map' =>
|
267 |
-
'type'
|
268 |
-
'label'
|
269 |
-
'tooltip'
|
270 |
-
'size'
|
271 |
'validation_type' => 'options',
|
272 |
-
'default'
|
273 |
-
'can_be_empty'
|
274 |
-
'parent_option'
|
275 |
-
'options'
|
276 |
-
'priority'
|
277 |
-
|
278 |
-
|
279 |
|
280 |
-
$ics =
|
281 |
-
'ics-defaults' =>
|
282 |
'type' => 'html',
|
283 |
'html' => '<h3 id="tribe-import-ics-settings">' . esc_html__( 'ICS File Import Settings', 'the-events-calendar' ) . '</h3>',
|
284 |
-
'priority'
|
285 |
-
|
286 |
-
'tribe_aggregator_default_ics_post_status' =>
|
287 |
-
'type'
|
288 |
-
'label'
|
289 |
-
'tooltip'
|
290 |
-
'size'
|
291 |
'validation_type' => 'options',
|
292 |
-
'default'
|
293 |
-
'can_be_empty'
|
294 |
-
'parent_option'
|
295 |
-
'options'
|
296 |
-
'priority'
|
297 |
-
|
298 |
-
'tribe_aggregator_default_ics_category' =>
|
299 |
-
'type'
|
300 |
-
'label'
|
301 |
-
'tooltip'
|
302 |
-
'size'
|
303 |
'validation_type' => 'options',
|
304 |
-
'default'
|
305 |
-
'can_be_empty'
|
306 |
-
'parent_option'
|
307 |
-
'options'
|
308 |
-
'priority'
|
309 |
-
|
310 |
-
'tribe_aggregator_default_ics_show_map' =>
|
311 |
-
'type'
|
312 |
-
'label'
|
313 |
-
'tooltip'
|
314 |
-
'size'
|
315 |
'validation_type' => 'options',
|
316 |
-
'default'
|
317 |
-
'can_be_empty'
|
318 |
-
'parent_option'
|
319 |
-
'options'
|
320 |
-
'priority'
|
321 |
-
|
322 |
-
|
323 |
|
324 |
-
$gcal =
|
325 |
-
'gcal-defaults' =>
|
326 |
'type' => 'html',
|
327 |
'html' => '<h3 id="tribe-import-google-settings">' . esc_html__( 'Google Calendar Import Settings', 'the-events-calendar' ) . '</h3>',
|
328 |
-
'priority'
|
329 |
-
|
330 |
-
'tribe_aggregator_default_gcal_post_status' =>
|
331 |
-
'type'
|
332 |
-
'label'
|
333 |
-
'tooltip'
|
334 |
-
'size'
|
335 |
'validation_type' => 'options',
|
336 |
-
'default'
|
337 |
-
'can_be_empty'
|
338 |
-
'parent_option'
|
339 |
-
'options'
|
340 |
-
'priority'
|
341 |
-
|
342 |
-
'tribe_aggregator_default_gcal_category' =>
|
343 |
-
'type'
|
344 |
-
'label'
|
345 |
-
'tooltip'
|
346 |
-
'size'
|
347 |
'validation_type' => 'options',
|
348 |
-
'default'
|
349 |
-
'can_be_empty'
|
350 |
-
'parent_option'
|
351 |
-
'options'
|
352 |
-
'priority'
|
353 |
-
|
354 |
-
'tribe_aggregator_default_gcal_show_map' =>
|
355 |
-
'type'
|
356 |
-
'label'
|
357 |
-
'tooltip'
|
358 |
-
'size'
|
359 |
'validation_type' => 'options',
|
360 |
-
'default'
|
361 |
-
'can_be_empty'
|
362 |
-
'parent_option'
|
363 |
-
'options'
|
364 |
-
'priority'
|
365 |
-
|
366 |
-
|
367 |
|
368 |
-
$meetup =
|
369 |
-
'meetup-defaults' =>
|
370 |
'type' => 'html',
|
371 |
'html' => '<h3 id="tribe-import-meetup-settings">' . esc_html__( 'Meetup Import Settings', 'the-events-calendar' ) . '</h3>',
|
372 |
'priority' => 40.1,
|
373 |
-
|
374 |
-
'meetup-defaults-info' =>
|
375 |
-
'type'
|
376 |
-
'html'
|
377 |
esc_html__(
|
378 |
'To import Meetup events, please be sure to add your Meetup API key on %1$sEvents > Settings > APIs%2$s',
|
379 |
'the-events-calendar'
|
@@ -381,116 +380,116 @@ if ( Tribe__Events__Aggregator::is_service_active() ) {
|
|
381 |
'<a href="' . admin_url( Tribe__Settings::$parent_page . '&page=tribe-common&tab=addons' ) . '">',
|
382 |
'</a>'
|
383 |
). '</p>',
|
384 |
-
'priority'
|
385 |
-
|
386 |
-
'tribe_aggregator_default_meetup_post_status' =>
|
387 |
-
'type'
|
388 |
-
'label'
|
389 |
-
'tooltip'
|
390 |
-
'size'
|
391 |
'validation_type' => 'options',
|
392 |
-
'default'
|
393 |
-
'can_be_empty'
|
394 |
-
'parent_option'
|
395 |
-
'options'
|
396 |
-
'priority'
|
397 |
-
|
398 |
-
'tribe_aggregator_default_meetup_category' =>
|
399 |
-
'type'
|
400 |
-
'label'
|
401 |
-
'tooltip'
|
402 |
-
'size'
|
403 |
'validation_type' => 'options',
|
404 |
-
'default'
|
405 |
-
'can_be_empty'
|
406 |
-
'parent_option'
|
407 |
-
'options'
|
408 |
-
'priority'
|
409 |
-
|
410 |
-
'tribe_aggregator_default_meetup_show_map' =>
|
411 |
-
'type'
|
412 |
-
'label'
|
413 |
-
'tooltip'
|
414 |
-
'size'
|
415 |
'validation_type' => 'options',
|
416 |
-
'default'
|
417 |
-
'can_be_empty'
|
418 |
-
'parent_option'
|
419 |
-
'options'
|
420 |
-
'priority'
|
421 |
-
|
422 |
-
|
423 |
-
|
424 |
-
$url =
|
425 |
-
'url-defaults' =>
|
426 |
-
'type'
|
427 |
-
'html'
|
428 |
-
'priority'
|
429 |
-
|
430 |
-
'tribe_aggregator_default_url_post_status' =>
|
431 |
-
'type'
|
432 |
-
'label'
|
433 |
-
'tooltip'
|
434 |
-
'size'
|
435 |
'validation_type' => 'options',
|
436 |
-
'default'
|
437 |
-
'can_be_empty'
|
438 |
-
'parent_option'
|
439 |
-
'options'
|
440 |
-
'priority'
|
441 |
-
|
442 |
-
'tribe_aggregator_default_url_category' =>
|
443 |
-
'type'
|
444 |
-
'label'
|
445 |
-
'tooltip'
|
446 |
-
'size'
|
447 |
'validation_type' => 'options',
|
448 |
-
'default'
|
449 |
-
'can_be_empty'
|
450 |
-
'parent_option'
|
451 |
-
'options'
|
452 |
-
'priority'
|
453 |
-
|
454 |
-
'tribe_aggregator_default_url_show_map' =>
|
455 |
-
'type'
|
456 |
-
'label'
|
457 |
-
'tooltip'
|
458 |
-
'size'
|
459 |
'validation_type' => 'options',
|
460 |
-
'default'
|
461 |
-
'can_be_empty'
|
462 |
-
'parent_option'
|
463 |
-
'options'
|
464 |
-
'priority'
|
465 |
-
|
466 |
-
'tribe_aggregator_default_url_import_range' =>
|
467 |
-
'type'
|
468 |
-
'label'
|
469 |
-
'tooltip'
|
470 |
-
'size'
|
471 |
'validation_type' => 'options',
|
472 |
-
'default'
|
473 |
-
'can_be_empty'
|
474 |
-
'parent_option'
|
475 |
-
'options'
|
476 |
-
'priority'
|
477 |
-
|
478 |
-
'tribe_aggregator_default_url_import_event_settings' =>
|
479 |
-
'type'
|
480 |
-
'label'
|
481 |
-
'tooltip'
|
482 |
-
'size'
|
483 |
'validation_type' => 'options',
|
484 |
-
'default'
|
485 |
-
'can_be_empty'
|
486 |
-
'parent_option'
|
487 |
-
'options'
|
488 |
-
'priority'
|
489 |
-
|
490 |
-
|
491 |
|
492 |
// Ensure that "(do not override)" is set up for Eventbrite import statuses, and "Published" is not.
|
493 |
-
$eventbrite_origin_post_statuses =
|
494 |
$eventbrite_origin_post_statuses = $eventbrite_origin_post_statuses + $origin_post_statuses;
|
495 |
|
496 |
unset( $eventbrite_origin_post_statuses['publish'] );
|
@@ -500,13 +499,13 @@ if ( Tribe__Events__Aggregator::is_service_active() ) {
|
|
500 |
unset( $eventbrite_origin_post_statuses[''] );
|
501 |
}
|
502 |
|
503 |
-
$eb_fields =
|
504 |
-
'eventbrite-defaults' =>
|
505 |
'type' => 'html',
|
506 |
'html' => '<h3 id="tribe-import-eventbrite-settings">' . esc_html__( 'Eventbrite Import Settings', 'the-events-calendar' ) . '</h3>',
|
507 |
'priority' => 17.1,
|
508 |
-
|
509 |
-
'tribe_aggregator_default_eventbrite_post_status' =>
|
510 |
'type' => 'dropdown',
|
511 |
'label' => esc_html__( 'Default Status', 'the-events-calendar' ),
|
512 |
'tooltip' => esc_html__( 'The default post status for events imported via Eventbrite', 'the-events-calendar' ),
|
@@ -517,8 +516,8 @@ if ( Tribe__Events__Aggregator::is_service_active() ) {
|
|
517 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
518 |
'options' => $eventbrite_origin_post_statuses,
|
519 |
'priority' => 17.2,
|
520 |
-
|
521 |
-
'tribe_aggregator_default_eventbrite_category' =>
|
522 |
'type' => 'dropdown',
|
523 |
'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ),
|
524 |
'tooltip' => esc_html__( 'The default event category for events imported via Eventbrite', 'the-events-calendar' ),
|
@@ -529,8 +528,8 @@ if ( Tribe__Events__Aggregator::is_service_active() ) {
|
|
529 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
530 |
'options' => $origin_categories,
|
531 |
'priority' => 17.3,
|
532 |
-
|
533 |
-
'tribe_aggregator_default_eventbrite_show_map' =>
|
534 |
'type' => 'dropdown',
|
535 |
'label' => esc_html__( 'Show Map', 'the-events-calendar' ),
|
536 |
'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ),
|
@@ -541,8 +540,8 @@ if ( Tribe__Events__Aggregator::is_service_active() ) {
|
|
541 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
542 |
'options' => $origin_show_map_options,
|
543 |
'priority' => 17.4,
|
544 |
-
|
545 |
-
|
546 |
}
|
547 |
|
548 |
$internal = array_merge(
|
@@ -592,56 +591,59 @@ if ( get_bloginfo( 'version' ) >= 4.7 ) {
|
|
592 |
|
593 |
if ( tribe( 'events-aggregator.main' )->is_service_active() ) {
|
594 |
|
595 |
-
$import_setting_links =
|
596 |
-
'update-authority' =>
|
597 |
'name' => __( 'Update Authority', 'the-events-calendar' ),
|
598 |
'priority' => 5,
|
599 |
-
|
600 |
-
'global-settings' =>
|
601 |
'name' => __( 'Global', 'the-events-calendar' ),
|
602 |
'priority' => 10,
|
603 |
-
|
604 |
-
'csv-settings' =>
|
605 |
'name' => __( 'CSV', 'the-events-calendar' ),
|
606 |
'priority' => 15,
|
607 |
-
|
608 |
-
'ical-settings' =>
|
609 |
'name' => __( 'iCalendar', 'the-events-calendar' ),
|
610 |
'priority' => 20,
|
611 |
-
|
612 |
-
'ics-settings' =>
|
613 |
'name' => __( 'ICS File', 'the-events-calendar' ),
|
614 |
'priority' => 25,
|
615 |
-
|
616 |
-
'google-settings' =>
|
617 |
'name' => __( 'Google Calendar', 'the-events-calendar' ),
|
618 |
'priority' => 35,
|
619 |
-
|
620 |
-
'meetup-settings' =>
|
621 |
'name' => __( 'Meetup', 'the-events-calendar' ),
|
622 |
'priority' => 40,
|
623 |
-
|
624 |
-
'url-settings' =>
|
625 |
'name' => __( 'Other URLs', 'the-events-calendar' ),
|
626 |
'priority' => 45,
|
627 |
-
|
628 |
-
'eventbrite-settings' =>
|
629 |
'name' => __( 'Eventbrite', 'the-events-calendar' ),
|
630 |
'priority' => 17,
|
631 |
-
|
632 |
-
|
633 |
|
634 |
/**
|
635 |
* If Eventbrite Tickets is enabled and Event Aggregator is disabled, display the correct import links
|
636 |
*/
|
637 |
-
if (
|
638 |
-
|
|
|
|
|
|
|
639 |
'ical-settings',
|
640 |
'ics-settings',
|
641 |
'google-settings',
|
642 |
'meetup-settings',
|
643 |
'url-settings',
|
644 |
-
|
645 |
|
646 |
foreach ( $ea_keys as $key ) {
|
647 |
unset( $import_setting_links[ $key ] );
|
@@ -673,7 +675,7 @@ if ( tribe( 'events-aggregator.main' )->is_service_active() ) {
|
|
673 |
'Use the options below to configure your imports. Global Import Settings apply to all imports, but you can also override the global settings by adjusting the origin-specific options. Check your Event Aggregator Service Status on the %1$s.',
|
674 |
'the-events-calendar'
|
675 |
),
|
676 |
-
'<a href="' . Tribe__Settings::instance()->get_url(
|
677 |
);
|
678 |
?>
|
679 |
</p>
|
@@ -700,35 +702,35 @@ if ( tribe( 'events-aggregator.main' )->is_service_active() ) {
|
|
700 |
}
|
701 |
|
702 |
$fields = array_merge(
|
703 |
-
|
704 |
-
'import-box-start' =>
|
705 |
'type' => 'html',
|
706 |
'html' => '<div id="modern-tribe-info">',
|
707 |
-
|
708 |
-
'import-box-title' =>
|
709 |
'type' => 'html',
|
710 |
'html' => '<h2>' . esc_html__( 'Imports', 'the-events-calendar' ) . '</h2>',
|
711 |
-
|
712 |
-
'import-box-description' =>
|
713 |
'type' => 'html',
|
714 |
'html' => '<p>' . $import_instructions . '</p>',
|
715 |
-
|
716 |
-
'import-box-end' =>
|
717 |
'type' => 'html',
|
718 |
'html' => '</div>',
|
719 |
-
|
720 |
-
'import-form-content-start' =>
|
721 |
'type' => 'html',
|
722 |
'html' => '<div class="tribe-settings-form-wrap">',
|
723 |
-
|
724 |
-
|
725 |
$internal,
|
726 |
-
|
727 |
-
'addons-form-content-end' =>
|
728 |
'type' => 'html',
|
729 |
'html' => '</div>',
|
730 |
-
|
731 |
-
|
732 |
);
|
733 |
|
734 |
/**
|
@@ -739,10 +741,10 @@ $fields = array_merge(
|
|
739 |
*/
|
740 |
$import = apply_filters(
|
741 |
'tribe_aggregator_tab',
|
742 |
-
|
743 |
'priority' => 50,
|
744 |
'fields' => $fields,
|
745 |
-
|
746 |
);
|
747 |
|
748 |
// Only create the Add-ons Tab if there is any
|
6 |
$internal = array();
|
7 |
$use_global_settings_phrase = esc_html__( 'Use global import settings', 'the-events-calendar' );
|
8 |
$post_statuses = get_post_statuses( array() );
|
9 |
+
$category_dropdown = wp_dropdown_categories( [
|
10 |
'echo' => false,
|
11 |
'hide_empty' => false,
|
12 |
'orderby' => 'post_title',
|
13 |
'taxonomy' => Tribe__Events__Main::TAXONOMY,
|
14 |
+
] );
|
15 |
preg_match_all( '!\<option.*value="([^"]+)"[^\>]*\>(.*)\</option\>!m', $category_dropdown, $matches );
|
16 |
+
$categories = [
|
17 |
'' => __( 'No default category', 'the-events-calendar' ),
|
18 |
+
];
|
19 |
$events_aggregator_is_active = tribe( 'events-aggregator.main' )->is_service_active();
|
20 |
|
21 |
$origin_post_statuses = $events_aggregator_is_active
|
31 |
$origin_categories[ $match ] = $matches[2][ $key ];
|
32 |
}
|
33 |
|
34 |
+
$yes_no_options = [
|
35 |
'no' => __( 'No', 'the-events-calendar' ),
|
36 |
'yes' => __( 'Yes', 'the-events-calendar' ),
|
37 |
+
];
|
38 |
|
39 |
$origin_show_map_options = array( '' => $use_global_settings_phrase ) + $yes_no_options;
|
40 |
|
41 |
+
$change_authority = [
|
42 |
+
'import-defaults-update_authority' => [
|
43 |
'type' => 'html',
|
44 |
'html' => '<h3 id="tribe-import-update-authority">' . esc_html__( 'Event Update Authority', 'the-events-calendar' ) . '</h3>',
|
45 |
'priority' => 1.1,
|
46 |
+
],
|
47 |
+
'info-update_authority' => [
|
48 |
'type' => 'html',
|
49 |
'html' => '<p>' . esc_html__( 'You can make changes to imported events via The Events Calendar and see those changes reflected on your site’s calendar. The owner of the original event source (e.g. the iCalendar feed or Meetup group) might also make changes to their event. If you choose to re-import an altered event (manually or via a scheduled import), any changes made at the source or on your calendar will need to be addressed.', 'the-events-calendar' ) . '</p>',
|
50 |
'priority' => 1.2,
|
51 |
+
],
|
52 |
+
'tribe_aggregator_default_update_authority' => [
|
53 |
'type' => 'radio',
|
54 |
'label' => esc_html__( 'Event Update Authority', 'the-events-calendar' ),
|
55 |
'validation_type' => 'options',
|
56 |
'default' => Tribe__Events__Aggregator__Settings::$default_update_authority,
|
57 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
58 |
+
'options' => [
|
59 |
'overwrite' => __( 'Overwrite my event with any changes from the original source.', 'the-events-calendar' ),
|
60 |
'retain' => __( 'Do not re-import events. Changes made locally will be preserved.', 'the-events-calendar' ),
|
61 |
'preserve_changes' => __( 'Import events but preserve local changes to event fields.', 'the-events-calendar' ),
|
62 |
+
],
|
63 |
'priority' => 1.3,
|
64 |
+
],
|
65 |
+
];
|
66 |
|
67 |
+
$csv = [
|
68 |
+
'csv-defaults' => [
|
69 |
+
'type' => 'html',
|
70 |
+
'html' => '<h3 id="tribe-import-csv-settings">' . esc_html__( 'CSV Import Settings', 'the-events-calendar' ) . '</h3>',
|
71 |
'priority' => 10.1,
|
72 |
+
],
|
73 |
+
'tribe_aggregator_default_csv_post_status' => [
|
74 |
'type' => 'dropdown',
|
75 |
'label' => esc_html__( 'Default Status', 'the-events-calendar' ),
|
76 |
'tooltip' => esc_html__( 'The default post status for events imported via CSV', 'the-events-calendar' ),
|
80 |
'can_be_empty' => true,
|
81 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
82 |
'options' => $origin_post_statuses,
|
83 |
+
'priority' => 10.2,
|
84 |
+
],
|
85 |
+
'tribe_aggregator_default_csv_category' => [
|
86 |
'type' => 'dropdown',
|
87 |
'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ),
|
88 |
'tooltip' => esc_html__( 'The default event category for events imported via CSV', 'the-events-calendar' ),
|
92 |
'can_be_empty' => true,
|
93 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
94 |
'options' => $origin_categories,
|
95 |
+
'priority' => 10.3,
|
96 |
+
],
|
97 |
+
];
|
98 |
+
|
99 |
+
$ea_disable = [
|
100 |
+
'tribe_aggregator_disable_header' => [
|
101 |
+
'type' => 'html',
|
102 |
+
'html' => '<h3 id="tribe-import-ea-disable">' . esc_html__( 'Event Aggregator Control', 'the-events-calendar' ) . '</h3>',
|
103 |
'priority' => 50.1,
|
104 |
+
],
|
105 |
+
'tribe_aggregator_disable' => [
|
106 |
'type' => 'checkbox_bool',
|
107 |
'label' => __( 'Disable Event Aggregator imports', 'the-events-calendar' ),
|
108 |
'tooltip' => __( 'Stop all Event Aggregator imports from running. Existing imported events will not be affected. Imports via CSV file will still be available.', 'the-events-calendar' ),
|
109 |
'default' => false,
|
110 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
111 |
'validation_type' => 'boolean',
|
112 |
+
'priority' => 50.2,
|
113 |
+
],
|
114 |
+
];
|
115 |
|
116 |
$global = $ical = $ics = $gcal = $meetup = $url = $eb_fields = array();
|
117 |
// if there's an Event Aggregator license key, add the Global settings, iCal, and Meetup fields
|
124 |
)
|
125 |
);
|
126 |
|
127 |
+
$global = [
|
128 |
+
'import-defaults' => [
|
129 |
+
'type' => 'html',
|
130 |
+
'html' => '<h3 id="tribe-import-global-settings">' . esc_html__( 'Global Import Settings', 'the-events-calendar' ) . '</h3>',
|
131 |
'priority' => 5.1,
|
132 |
+
],
|
133 |
+
'tribe_aggregator_default_post_status' => [
|
134 |
+
'type' => 'dropdown',
|
135 |
+
'label' => esc_html__( 'Default Status', 'the-events-calendar' ),
|
136 |
+
'tooltip' => esc_html__( 'The default post status for events', 'the-events-calendar' ),
|
137 |
+
'size' => 'medium',
|
138 |
'validation_type' => 'options',
|
139 |
+
'default' => 'publish',
|
140 |
+
'can_be_empty' => true,
|
141 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
142 |
+
'options' => $post_statuses,
|
143 |
+
'priority' => 5.2,
|
144 |
+
],
|
145 |
+
'tribe_aggregator_default_category' => [
|
146 |
+
'type' => 'dropdown',
|
147 |
+
'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ),
|
148 |
+
'tooltip' => esc_html__( 'The default event category for events', 'the-events-calendar' ),
|
149 |
+
'size' => 'medium',
|
150 |
'validation_type' => 'options',
|
151 |
+
'default' => '',
|
152 |
+
'can_be_empty' => true,
|
153 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
154 |
+
'options' => $categories,
|
155 |
+
'priority' => 5.3,
|
156 |
+
],
|
157 |
+
'tribe_aggregator_default_show_map' => [
|
158 |
+
'type' => 'dropdown',
|
159 |
+
'label' => esc_html__( 'Show Map', 'the-events-calendar' ),
|
160 |
+
'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ),
|
161 |
+
'size' => 'medium',
|
162 |
'validation_type' => 'options',
|
163 |
+
'default' => 'no',
|
164 |
+
'can_be_empty' => true,
|
165 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
166 |
+
'options' => $yes_no_options,
|
167 |
+
'priority' => 5.4,
|
168 |
+
],
|
169 |
+
'tribe_aggregator_default_import_limit_type' => [
|
170 |
+
'type' => 'dropdown',
|
171 |
+
'label' => esc_html__( 'Import Limit Type', 'the-events-calendar' ),
|
172 |
+
'tooltip' => esc_html__( 'Limit the number of imported events by number, date range, or not at all; on slower websites this may impact the success of imports. Selecting a shorter time period or a smaller number of events may improve results.', 'the-events-calendar' ),
|
173 |
+
'size' => 'medium',
|
|
|
174 |
'validation_type' => 'options',
|
175 |
+
'default' => 'range',
|
176 |
+
'can_be_empty' => false,
|
177 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
178 |
+
'options' => tribe( 'events-aggregator.settings' )->get_import_limit_type_options(),
|
179 |
+
'priority' => 5.5,
|
180 |
+
],
|
181 |
+
'tribe_aggregator_default_import_limit_range' => [
|
182 |
+
'type' => 'dropdown',
|
183 |
+
'label' => esc_html__( 'Import Date Range Limit', 'the-events-calendar' ),
|
184 |
+
'tooltip' => esc_html__( 'When importing from an event source, this is how far into the future the events will be fetched; on slower websites a larger date range may impact the success of imports. Selecting a shorter time period may improve results.', 'the-events-calendar' ),
|
185 |
+
'size' => 'medium',
|
186 |
'validation_type' => 'options',
|
187 |
+
'default' => tribe( 'events-aggregator.settings' )->get_import_range_default( true ),
|
188 |
+
'can_be_empty' => true,
|
189 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
190 |
+
'options' => tribe( 'events-aggregator.settings' )->get_import_range_options( true ),
|
191 |
+
'class' => 'tribe-dependent',
|
192 |
+
'fieldset_attributes' => [
|
193 |
'data-depends' => '#tribe_aggregator_default_import_limit_type-select',
|
194 |
'data-condition' => 'range',
|
195 |
+
],
|
196 |
+
'priority' => 5.6,
|
197 |
+
],
|
198 |
+
'tribe_aggregator_default_import_limit_number' => [
|
199 |
+
'type' => 'dropdown',
|
200 |
+
'label' => esc_html__( 'Import Quantity Limit', 'the-events-calendar' ),
|
201 |
+
'tooltip' => esc_html__( 'When importing from an event source, this is the maximum number of events that will be imported; on slower websites this may impact the success of imports. Setting this to a smaller number may improve results.', 'the-events-calendar' ),
|
202 |
+
'size' => 'medium',
|
203 |
'validation_type' => 'options',
|
204 |
+
'default' => tribe( 'events-aggregator.settings' )->get_import_limit_count_default(),
|
205 |
+
'can_be_empty' => true,
|
206 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
207 |
+
'options' => tribe( 'events-aggregator.settings' )->get_import_limit_count_options(),
|
208 |
+
'class' => 'tribe-dependent',
|
209 |
+
'fieldset_attributes' => [
|
210 |
'data-depends' => '#tribe_aggregator_default_import_limit_type-select',
|
211 |
'data-condition' => 'count',
|
212 |
+
],
|
213 |
+
'priority' => 5.7,
|
214 |
+
],
|
215 |
+
'tribe_aggregator_import_process_system' => [
|
216 |
+
'type' => 'dropdown',
|
217 |
+
'label' => esc_html__( 'Import Process System', 'the-events-calendar' ),
|
218 |
+
'tooltip' => esc_html__( 'The Asynchronous import process is faster and does not rely on WordPress Cron but might not work correctly in all WordPress installations, try switching to the Cron-based process for maximum compatibility.', 'the-events-calendar' ),
|
219 |
+
'size' => 'medium',
|
220 |
'validation_type' => 'options',
|
221 |
+
'default' => tribe( 'events-aggregator.settings' )->get_import_process_default( false ),
|
222 |
+
'can_be_empty' => false,
|
223 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
224 |
+
'options' => tribe( 'events-aggregator.settings' )->get_import_process_options( true ),
|
225 |
+
'priority' => 5.8,
|
226 |
+
],
|
227 |
+
'tribe_aggregator_import_process_control' => [
|
228 |
+
'type' => 'wrapped_html',
|
229 |
+
'label' => esc_html__( 'Stop current processes', 'the-events-calendar' ),
|
230 |
+
'html' => $stop_running_processes_message,
|
231 |
+
'priority' => 5.9,
|
232 |
+
],
|
233 |
+
];
|
234 |
+
|
235 |
+
$ical = [
|
236 |
+
'ical-defaults' => [
|
237 |
'type' => 'html',
|
238 |
'html' => '<h3 id="tribe-import-ical-settings">' . esc_html__( 'iCalendar Import Settings', 'the-events-calendar' ) . '</h3>',
|
239 |
'priority' => 20.1,
|
240 |
+
],
|
241 |
+
'tribe_aggregator_default_ical_post_status' => [
|
242 |
+
'type' => 'dropdown',
|
243 |
+
'label' => esc_html__( 'Default Status', 'the-events-calendar' ),
|
244 |
+
'tooltip' => esc_html__( 'The default post status for events imported via iCalendar', 'the-events-calendar' ),
|
245 |
+
'size' => 'medium',
|
246 |
'validation_type' => 'options',
|
247 |
+
'default' => '',
|
248 |
+
'can_be_empty' => true,
|
249 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
250 |
+
'options' => $origin_post_statuses,
|
251 |
+
'priority' => 20.2,
|
252 |
+
],
|
253 |
+
'tribe_aggregator_default_ical_category' => [
|
254 |
+
'type' => 'dropdown',
|
255 |
+
'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ),
|
256 |
+
'tooltip' => esc_html__( 'The default event category for events imported via iCalendar', 'the-events-calendar' ),
|
257 |
+
'size' => 'medium',
|
258 |
'validation_type' => 'options',
|
259 |
+
'default' => '',
|
260 |
+
'can_be_empty' => true,
|
261 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
262 |
+
'options' => $origin_categories,
|
263 |
+
'priority' => 20.3,
|
264 |
+
],
|
265 |
+
'tribe_aggregator_default_ical_show_map' => [
|
266 |
+
'type' => 'dropdown',
|
267 |
+
'label' => esc_html__( 'Show Map', 'the-events-calendar' ),
|
268 |
+
'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ),
|
269 |
+
'size' => 'medium',
|
270 |
'validation_type' => 'options',
|
271 |
+
'default' => '',
|
272 |
+
'can_be_empty' => true,
|
273 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
274 |
+
'options' => $origin_show_map_options,
|
275 |
+
'priority' => 20.4,
|
276 |
+
],
|
277 |
+
];
|
278 |
|
279 |
+
$ics = [
|
280 |
+
'ics-defaults' => [
|
281 |
'type' => 'html',
|
282 |
'html' => '<h3 id="tribe-import-ics-settings">' . esc_html__( 'ICS File Import Settings', 'the-events-calendar' ) . '</h3>',
|
283 |
+
'priority' => 25.1,
|
284 |
+
],
|
285 |
+
'tribe_aggregator_default_ics_post_status' => [
|
286 |
+
'type' => 'dropdown',
|
287 |
+
'label' => esc_html__( 'Default Status', 'the-events-calendar' ),
|
288 |
+
'tooltip' => esc_html__( 'The default post status for events imported via .ics files', 'the-events-calendar' ),
|
289 |
+
'size' => 'medium',
|
290 |
'validation_type' => 'options',
|
291 |
+
'default' => '',
|
292 |
+
'can_be_empty' => true,
|
293 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
294 |
+
'options' => $origin_post_statuses,
|
295 |
+
'priority' => 25.2,
|
296 |
+
],
|
297 |
+
'tribe_aggregator_default_ics_category' => [
|
298 |
+
'type' => 'dropdown',
|
299 |
+
'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ),
|
300 |
+
'tooltip' => esc_html__( 'The default event category for events imported via .ics files', 'the-events-calendar' ),
|
301 |
+
'size' => 'medium',
|
302 |
'validation_type' => 'options',
|
303 |
+
'default' => '',
|
304 |
+
'can_be_empty' => true,
|
305 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
306 |
+
'options' => $origin_categories,
|
307 |
+
'priority' => 25.3,
|
308 |
+
],
|
309 |
+
'tribe_aggregator_default_ics_show_map' => [
|
310 |
+
'type' => 'dropdown',
|
311 |
+
'label' => esc_html__( 'Show Map', 'the-events-calendar' ),
|
312 |
+
'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ),
|
313 |
+
'size' => 'medium',
|
314 |
'validation_type' => 'options',
|
315 |
+
'default' => '',
|
316 |
+
'can_be_empty' => true,
|
317 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
318 |
+
'options' => $origin_show_map_options,
|
319 |
+
'priority' => 25.4,
|
320 |
+
],
|
321 |
+
];
|
322 |
|
323 |
+
$gcal = [
|
324 |
+
'gcal-defaults' => [
|
325 |
'type' => 'html',
|
326 |
'html' => '<h3 id="tribe-import-google-settings">' . esc_html__( 'Google Calendar Import Settings', 'the-events-calendar' ) . '</h3>',
|
327 |
+
'priority' => 35.1,
|
328 |
+
],
|
329 |
+
'tribe_aggregator_default_gcal_post_status' => [
|
330 |
+
'type' => 'dropdown',
|
331 |
+
'label' => esc_html__( 'Default Status', 'the-events-calendar' ),
|
332 |
+
'tooltip' => esc_html__( 'The default post status for events imported via Google Calendar', 'the-events-calendar' ),
|
333 |
+
'size' => 'medium',
|
334 |
'validation_type' => 'options',
|
335 |
+
'default' => '',
|
336 |
+
'can_be_empty' => true,
|
337 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
338 |
+
'options' => $origin_post_statuses,
|
339 |
+
'priority' => 35.2,
|
340 |
+
],
|
341 |
+
'tribe_aggregator_default_gcal_category' => [
|
342 |
+
'type' => 'dropdown',
|
343 |
+
'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ),
|
344 |
+
'tooltip' => esc_html__( 'The default event category for events imported via Google Calendar', 'the-events-calendar' ),
|
345 |
+
'size' => 'medium',
|
346 |
'validation_type' => 'options',
|
347 |
+
'default' => '',
|
348 |
+
'can_be_empty' => true,
|
349 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
350 |
+
'options' => $origin_categories,
|
351 |
+
'priority' => 35.3,
|
352 |
+
],
|
353 |
+
'tribe_aggregator_default_gcal_show_map' => [
|
354 |
+
'type' => 'dropdown',
|
355 |
+
'label' => esc_html__( 'Show Map', 'the-events-calendar' ),
|
356 |
+
'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ),
|
357 |
+
'size' => 'medium',
|
358 |
'validation_type' => 'options',
|
359 |
+
'default' => '',
|
360 |
+
'can_be_empty' => true,
|
361 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
362 |
+
'options' => $origin_show_map_options,
|
363 |
+
'priority' => 35.4,
|
364 |
+
],
|
365 |
+
];
|
366 |
|
367 |
+
$meetup = [
|
368 |
+
'meetup-defaults' => [
|
369 |
'type' => 'html',
|
370 |
'html' => '<h3 id="tribe-import-meetup-settings">' . esc_html__( 'Meetup Import Settings', 'the-events-calendar' ) . '</h3>',
|
371 |
'priority' => 40.1,
|
372 |
+
],
|
373 |
+
'meetup-defaults-info' => [
|
374 |
+
'type' => 'html',
|
375 |
+
'html' => '<p>' . sprintf(
|
376 |
esc_html__(
|
377 |
'To import Meetup events, please be sure to add your Meetup API key on %1$sEvents > Settings > APIs%2$s',
|
378 |
'the-events-calendar'
|
380 |
'<a href="' . admin_url( Tribe__Settings::$parent_page . '&page=tribe-common&tab=addons' ) . '">',
|
381 |
'</a>'
|
382 |
). '</p>',
|
383 |
+
'priority' => 40.2,
|
384 |
+
],
|
385 |
+
'tribe_aggregator_default_meetup_post_status' => [
|
386 |
+
'type' => 'dropdown',
|
387 |
+
'label' => esc_html__( 'Default Status', 'the-events-calendar' ),
|
388 |
+
'tooltip' => esc_html__( 'The default post status for events imported via Meetup', 'the-events-calendar' ),
|
389 |
+
'size' => 'medium',
|
390 |
'validation_type' => 'options',
|
391 |
+
'default' => '',
|
392 |
+
'can_be_empty' => true,
|
393 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
394 |
+
'options' => $origin_post_statuses,
|
395 |
+
'priority' => 40.3,
|
396 |
+
],
|
397 |
+
'tribe_aggregator_default_meetup_category' => [
|
398 |
+
'type' => 'dropdown',
|
399 |
+
'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ),
|
400 |
+
'tooltip' => esc_html__( 'The default event category for events imported via Meetup', 'the-events-calendar' ),
|
401 |
+
'size' => 'medium',
|
402 |
'validation_type' => 'options',
|
403 |
+
'default' => '',
|
404 |
+
'can_be_empty' => true,
|
405 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
406 |
+
'options' => $origin_categories,
|
407 |
+
'priority' => 40.4,
|
408 |
+
],
|
409 |
+
'tribe_aggregator_default_meetup_show_map' => [
|
410 |
+
'type' => 'dropdown',
|
411 |
+
'label' => esc_html__( 'Show Map', 'the-events-calendar' ),
|
412 |
+
'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ),
|
413 |
+
'size' => 'medium',
|
414 |
'validation_type' => 'options',
|
415 |
+
'default' => '',
|
416 |
+
'can_be_empty' => true,
|
417 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
418 |
+
'options' => $origin_show_map_options,
|
419 |
+
'priority' => 40.5,
|
420 |
+
],
|
421 |
+
];
|
422 |
+
|
423 |
+
$url = [
|
424 |
+
'url-defaults' => [
|
425 |
+
'type' => 'html',
|
426 |
+
'html' => '<h3 id="tribe-import-url-settings">' . esc_html__( 'Other URL Import Settings', 'the-events-calendar' ) . '</h3>',
|
427 |
+
'priority' => 45.1,
|
428 |
+
],
|
429 |
+
'tribe_aggregator_default_url_post_status' => [
|
430 |
+
'type' => 'dropdown',
|
431 |
+
'label' => esc_html__( 'Default Status', 'the-events-calendar' ),
|
432 |
+
'tooltip' => esc_html__( 'The default post status for events imported via other URLs', 'the-events-calendar' ),
|
433 |
+
'size' => 'medium',
|
434 |
'validation_type' => 'options',
|
435 |
+
'default' => '',
|
436 |
+
'can_be_empty' => true,
|
437 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
438 |
+
'options' => $origin_post_statuses,
|
439 |
+
'priority' => 45.2,
|
440 |
+
],
|
441 |
+
'tribe_aggregator_default_url_category' => [
|
442 |
+
'type' => 'dropdown',
|
443 |
+
'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ),
|
444 |
+
'tooltip' => esc_html__( 'The default event category for events imported via other URLs', 'the-events-calendar' ),
|
445 |
+
'size' => 'medium',
|
446 |
'validation_type' => 'options',
|
447 |
+
'default' => '',
|
448 |
+
'can_be_empty' => true,
|
449 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
450 |
+
'options' => $origin_categories,
|
451 |
+
'priority' => 45.3,
|
452 |
+
],
|
453 |
+
'tribe_aggregator_default_url_show_map' => [
|
454 |
+
'type' => 'dropdown',
|
455 |
+
'label' => esc_html__( 'Show Map', 'the-events-calendar' ),
|
456 |
+
'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ),
|
457 |
+
'size' => 'medium',
|
458 |
'validation_type' => 'options',
|
459 |
+
'default' => '',
|
460 |
+
'can_be_empty' => true,
|
461 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
462 |
+
'options' => $origin_show_map_options,
|
463 |
+
'priority' => 45.4,
|
464 |
+
],
|
465 |
+
'tribe_aggregator_default_url_import_range' => [
|
466 |
+
'type' => 'dropdown',
|
467 |
+
'label' => esc_html__( 'Import Date Range Limit', 'the-events-calendar' ),
|
468 |
+
'tooltip' => esc_html__( 'When importing from a website that uses The Events Calendar, the REST API will attempt to fetch events this far in the future. That website\'s hosting resources may impact the success of imports. Selecting a shorter time period may improve results.', 'the-events-calendar' ) . ' ' . sprintf( '<a href="%1$s" target="_blank">%2$s</a>', esc_attr( 'https://theeventscalendar.com/knowledgebase/url-import-errors-event-aggregator/' ), esc_html( 'Learn more.' ) ),
|
469 |
+
'size' => 'medium',
|
470 |
'validation_type' => 'options',
|
471 |
+
'default' => tribe( 'events-aggregator.settings' )->get_import_range_default(),
|
472 |
+
'can_be_empty' => false,
|
473 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
474 |
+
'options' => tribe( 'events-aggregator.settings' )->get_url_import_range_options( true ),
|
475 |
+
'priority' => 45.5,
|
476 |
+
],
|
477 |
+
'tribe_aggregator_default_url_import_event_settings' => [
|
478 |
+
'type' => 'dropdown',
|
479 |
+
'label' => esc_html__( 'Import Event Settings', 'the-events-calendar' ),
|
480 |
+
'tooltip' => esc_html__( "Fetch source event's settings (e.g. Show Maps Link or Sticky in Month View) when importing from another site using The Events Calendar.", 'the-events-calendar' ),
|
481 |
+
'size' => 'medium',
|
482 |
'validation_type' => 'options',
|
483 |
+
'default' => 'no',
|
484 |
+
'can_be_empty' => true,
|
485 |
+
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
486 |
+
'options' => $yes_no_options,
|
487 |
+
'priority' => 45.6,
|
488 |
+
],
|
489 |
+
];
|
490 |
|
491 |
// Ensure that "(do not override)" is set up for Eventbrite import statuses, and "Published" is not.
|
492 |
+
$eventbrite_origin_post_statuses = [ 'do_not_override' => esc_html__( '(do not override)', 'the-events-calendar' ) ];
|
493 |
$eventbrite_origin_post_statuses = $eventbrite_origin_post_statuses + $origin_post_statuses;
|
494 |
|
495 |
unset( $eventbrite_origin_post_statuses['publish'] );
|
499 |
unset( $eventbrite_origin_post_statuses[''] );
|
500 |
}
|
501 |
|
502 |
+
$eb_fields = [
|
503 |
+
'eventbrite-defaults' => [
|
504 |
'type' => 'html',
|
505 |
'html' => '<h3 id="tribe-import-eventbrite-settings">' . esc_html__( 'Eventbrite Import Settings', 'the-events-calendar' ) . '</h3>',
|
506 |
'priority' => 17.1,
|
507 |
+
],
|
508 |
+
'tribe_aggregator_default_eventbrite_post_status' => [
|
509 |
'type' => 'dropdown',
|
510 |
'label' => esc_html__( 'Default Status', 'the-events-calendar' ),
|
511 |
'tooltip' => esc_html__( 'The default post status for events imported via Eventbrite', 'the-events-calendar' ),
|
516 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
517 |
'options' => $eventbrite_origin_post_statuses,
|
518 |
'priority' => 17.2,
|
519 |
+
],
|
520 |
+
'tribe_aggregator_default_eventbrite_category' => [
|
521 |
'type' => 'dropdown',
|
522 |
'label' => esc_html__( 'Default Event Category', 'the-events-calendar' ),
|
523 |
'tooltip' => esc_html__( 'The default event category for events imported via Eventbrite', 'the-events-calendar' ),
|
528 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
529 |
'options' => $origin_categories,
|
530 |
'priority' => 17.3,
|
531 |
+
],
|
532 |
+
'tribe_aggregator_default_eventbrite_show_map' => [
|
533 |
'type' => 'dropdown',
|
534 |
'label' => esc_html__( 'Show Map', 'the-events-calendar' ),
|
535 |
'tooltip' => esc_html__( 'Show map by default on imported event and venues', 'the-events-calendar' ),
|
540 |
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
541 |
'options' => $origin_show_map_options,
|
542 |
'priority' => 17.4,
|
543 |
+
],
|
544 |
+
];
|
545 |
}
|
546 |
|
547 |
$internal = array_merge(
|
591 |
|
592 |
if ( tribe( 'events-aggregator.main' )->is_service_active() ) {
|
593 |
|
594 |
+
$import_setting_links = [
|
595 |
+
'update-authority' => [
|
596 |
'name' => __( 'Update Authority', 'the-events-calendar' ),
|
597 |
'priority' => 5,
|
598 |
+
],
|
599 |
+
'global-settings' => [
|
600 |
'name' => __( 'Global', 'the-events-calendar' ),
|
601 |
'priority' => 10,
|
602 |
+
],
|
603 |
+
'csv-settings' => [
|
604 |
'name' => __( 'CSV', 'the-events-calendar' ),
|
605 |
'priority' => 15,
|
606 |
+
],
|
607 |
+
'ical-settings' => [
|
608 |
'name' => __( 'iCalendar', 'the-events-calendar' ),
|
609 |
'priority' => 20,
|
610 |
+
],
|
611 |
+
'ics-settings' => [
|
612 |
'name' => __( 'ICS File', 'the-events-calendar' ),
|
613 |
'priority' => 25,
|
614 |
+
],
|
615 |
+
'google-settings' => [
|
616 |
'name' => __( 'Google Calendar', 'the-events-calendar' ),
|
617 |
'priority' => 35,
|
618 |
+
],
|
619 |
+
'meetup-settings' => [
|
620 |
'name' => __( 'Meetup', 'the-events-calendar' ),
|
621 |
'priority' => 40,
|
622 |
+
],
|
623 |
+
'url-settings' => [
|
624 |
'name' => __( 'Other URLs', 'the-events-calendar' ),
|
625 |
'priority' => 45,
|
626 |
+
],
|
627 |
+
'eventbrite-settings' => [
|
628 |
'name' => __( 'Eventbrite', 'the-events-calendar' ),
|
629 |
'priority' => 17,
|
630 |
+
],
|
631 |
+
];
|
632 |
|
633 |
/**
|
634 |
* If Eventbrite Tickets is enabled and Event Aggregator is disabled, display the correct import links
|
635 |
*/
|
636 |
+
if (
|
637 |
+
class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' )
|
638 |
+
&& ! tribe( 'events-aggregator.main' )->has_license_key()
|
639 |
+
) {
|
640 |
+
$ea_keys = [
|
641 |
'ical-settings',
|
642 |
'ics-settings',
|
643 |
'google-settings',
|
644 |
'meetup-settings',
|
645 |
'url-settings',
|
646 |
+
];
|
647 |
|
648 |
foreach ( $ea_keys as $key ) {
|
649 |
unset( $import_setting_links[ $key ] );
|
675 |
'Use the options below to configure your imports. Global Import Settings apply to all imports, but you can also override the global settings by adjusting the origin-specific options. Check your Event Aggregator Service Status on the %1$s.',
|
676 |
'the-events-calendar'
|
677 |
),
|
678 |
+
'<a href="' . esc_url( Tribe__Settings::instance()->get_url( [ 'page' => 'tribe-help' ] ) ) . '#tribe-tribe-aggregator-status">' . esc_html__( 'Help page', 'the-events-calendar' ) . '</a>'
|
679 |
);
|
680 |
?>
|
681 |
</p>
|
702 |
}
|
703 |
|
704 |
$fields = array_merge(
|
705 |
+
[
|
706 |
+
'import-box-start' => [
|
707 |
'type' => 'html',
|
708 |
'html' => '<div id="modern-tribe-info">',
|
709 |
+
],
|
710 |
+
'import-box-title' => [
|
711 |
'type' => 'html',
|
712 |
'html' => '<h2>' . esc_html__( 'Imports', 'the-events-calendar' ) . '</h2>',
|
713 |
+
],
|
714 |
+
'import-box-description' => [
|
715 |
'type' => 'html',
|
716 |
'html' => '<p>' . $import_instructions . '</p>',
|
717 |
+
],
|
718 |
+
'import-box-end' => [
|
719 |
'type' => 'html',
|
720 |
'html' => '</div>',
|
721 |
+
],
|
722 |
+
'import-form-content-start' => [
|
723 |
'type' => 'html',
|
724 |
'html' => '<div class="tribe-settings-form-wrap">',
|
725 |
+
],
|
726 |
+
],
|
727 |
$internal,
|
728 |
+
[
|
729 |
+
'addons-form-content-end' => [
|
730 |
'type' => 'html',
|
731 |
'html' => '</div>',
|
732 |
+
],
|
733 |
+
]
|
734 |
);
|
735 |
|
736 |
/**
|
741 |
*/
|
742 |
$import = apply_filters(
|
743 |
'tribe_aggregator_tab',
|
744 |
+
[
|
745 |
'priority' => 50,
|
746 |
'fields' => $fields,
|
747 |
+
]
|
748 |
);
|
749 |
|
750 |
// Only create the Add-ons Tab if there is any
|
src/admin-views/aggregator/status.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
-
$indicator_icons =
|
3 |
-
'good'
|
4 |
'warning' => 'warning',
|
5 |
-
'bad'
|
6 |
-
|
7 |
|
8 |
$show_third_party_accounts = ! is_network_admin();
|
9 |
?>
|
@@ -20,19 +20,19 @@ $show_third_party_accounts = ! is_network_admin();
|
|
20 |
$ea_active = false;
|
21 |
if ( tribe( 'events-aggregator.main' )->is_service_active() ) {
|
22 |
$indicator = 'good';
|
23 |
-
$text
|
24 |
$ea_active = true;
|
25 |
} else {
|
26 |
$service_status = tribe( 'events-aggregator.service' )->api()->get_error_code();
|
27 |
|
28 |
$indicator = 'bad';
|
29 |
if ( 'core:aggregator:invalid-service-key' == $service_status ) {
|
30 |
-
$text
|
31 |
-
$notes
|
32 |
$notes .= esc_html__( 'Buy Event Aggregator to access more event sources and automatic imports!', 'the-events-calendar' );
|
33 |
$notes .= '</a>';
|
34 |
} else {
|
35 |
-
$text
|
36 |
$notes = '<a href="' . esc_url( Tribe__Settings::instance()->get_url( array( 'tab' => 'licenses' ) ) ) . '">' . esc_html__( 'Check your license key', 'the-events-calendar' ) . '</a>';
|
37 |
}
|
38 |
}
|
@@ -41,7 +41,7 @@ $show_third_party_accounts = ! is_network_admin();
|
|
41 |
<td class="label"><?php esc_html_e( 'License Key', 'the-events-calendar' ); ?></td>
|
42 |
<td class="indicator <?php esc_attr_e( $indicator ); ?>"><span class="dashicons dashicons-<?php echo esc_attr( $indicator_icons[ $indicator ] ); ?>"></span></td>
|
43 |
<td><?php echo esc_html( $text ); ?></td>
|
44 |
-
<td><?php echo $notes; ?></td>
|
45 |
</tr>
|
46 |
<?php
|
47 |
// if EA is not active, bail out of the rest of this
|
@@ -50,20 +50,20 @@ $show_third_party_accounts = ! is_network_admin();
|
|
50 |
return ob_get_clean();
|
51 |
}
|
52 |
|
53 |
-
$service
|
54 |
-
$import_limit
|
55 |
$import_available = $service->get_limit_remaining();
|
56 |
-
$import_count
|
57 |
|
58 |
$indicator = 'good';
|
59 |
-
$notes
|
60 |
|
61 |
if ( 0 === $import_limit || $import_count >= $import_limit ) {
|
62 |
$indicator = 'bad';
|
63 |
-
$notes
|
64 |
} elseif ( $import_count / $import_limit >= 0.8 ) {
|
65 |
$indicator = 'warning';
|
66 |
-
$notes
|
67 |
}
|
68 |
|
69 |
$text = sprintf( // import count and limit
|
@@ -77,7 +77,7 @@ $show_third_party_accounts = ! is_network_admin();
|
|
77 |
<td class="label"><?php esc_html_e( 'Current usage', 'the-events-calendar' ); ?></td>
|
78 |
<td class="indicator <?php esc_attr_e( $indicator ); ?>"><span class="dashicons dashicons-<?php echo esc_attr( $indicator_icons[ $indicator ] ); ?>"></span></td>
|
79 |
<td><?php echo esc_html( $text ); ?></td>
|
80 |
-
<td><?php echo $notes; ?></td>
|
81 |
</tr>
|
82 |
</tbody>
|
83 |
</table>
|
@@ -91,15 +91,15 @@ $show_third_party_accounts = ! is_network_admin();
|
|
91 |
<tbody>
|
92 |
<?php
|
93 |
$indicator = 'good';
|
94 |
-
$notes
|
95 |
|
96 |
$ea_server = tribe( 'events-aggregator.service' )->api()->domain;
|
97 |
-
$up
|
98 |
|
99 |
if ( ! $up || is_wp_error( $up ) ) {
|
100 |
$indicator = 'bad';
|
101 |
/* translators: %s: Event Aggregator Server URL */
|
102 |
-
$text
|
103 |
$notes = esc_html__( 'The server is not currently responding', 'the-events-calendar' );
|
104 |
} elseif ( is_object( $up ) && is_object( $up->data ) && isset( $up->data->status ) && 400 <= $up->data->status ) {
|
105 |
// this is a rare condition that should never happen
|
@@ -109,7 +109,7 @@ $show_third_party_accounts = ! is_network_admin();
|
|
109 |
/* translators: %s: Event Aggregator Server URL */
|
110 |
$text = sprintf( __( 'Not connected to %s', 'the-events-calendar' ), $ea_server );
|
111 |
|
112 |
-
$notes
|
113 |
$notes .= '<pre>';
|
114 |
$notes .= esc_html( $up->message );
|
115 |
$notes .= '</pre>';
|
@@ -133,8 +133,8 @@ $show_third_party_accounts = ! is_network_admin();
|
|
133 |
// @todo add API request for pingback check
|
134 |
if ( defined( 'DISABLE_WP_CRON' ) && true === DISABLE_WP_CRON ) {
|
135 |
$indicator = 'warning';
|
136 |
-
$text
|
137 |
-
$notes
|
138 |
} else {
|
139 |
$text = __( 'WP Cron enabled', 'the-events-calendar' );
|
140 |
}
|
@@ -150,18 +150,18 @@ $show_third_party_accounts = ! is_network_admin();
|
|
150 |
</table>
|
151 |
|
152 |
<?php if ( $show_third_party_accounts ) : ?>
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
<?php
|
161 |
// Eventbrite status section
|
162 |
$indicator = 'good';
|
163 |
-
$notes
|
164 |
-
$text
|
165 |
|
166 |
if ( tribe( 'events-aggregator.main' )->api( 'origins' )->is_oauth_enabled( 'eventbrite' ) ) {
|
167 |
if ( ! tribe( 'events-aggregator.settings' )->has_eb_security_key() ) {
|
@@ -176,36 +176,41 @@ $show_third_party_accounts = ! is_network_admin();
|
|
176 |
$notes = esc_html__( 'The service has disabled oAuth. Some types of events may not import.', 'the-events-calendar' );
|
177 |
}
|
178 |
?>
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
<?php
|
188 |
// Meetup status section
|
189 |
$indicator = 'good';
|
190 |
-
$notes
|
191 |
-
$text
|
192 |
-
|
193 |
-
if (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
194 |
$indicator = 'warning';
|
195 |
-
$text = __( '
|
196 |
-
$notes =
|
197 |
-
$notes .= esc_html__( 'Enter your API key', 'the-events-calendar' );
|
198 |
-
$notes .= '</a>';
|
199 |
}
|
200 |
?>
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
<?php
|
210 |
/**
|
211 |
* Fires below the rows in the third party status table.
|
@@ -218,6 +223,6 @@ $show_third_party_accounts = ! is_network_admin();
|
|
218 |
*/
|
219 |
do_action( 'tribe_events_status_third_party', $indicator_icons );
|
220 |
?>
|
221 |
-
|
222 |
-
|
223 |
<?php endif; ?>
|
1 |
<?php
|
2 |
+
$indicator_icons = [
|
3 |
+
'good' => 'marker',
|
4 |
'warning' => 'warning',
|
5 |
+
'bad' => 'dismiss',
|
6 |
+
];
|
7 |
|
8 |
$show_third_party_accounts = ! is_network_admin();
|
9 |
?>
|
20 |
$ea_active = false;
|
21 |
if ( tribe( 'events-aggregator.main' )->is_service_active() ) {
|
22 |
$indicator = 'good';
|
23 |
+
$text = __( 'Your license is valid', 'the-events-calendar' );
|
24 |
$ea_active = true;
|
25 |
} else {
|
26 |
$service_status = tribe( 'events-aggregator.service' )->api()->get_error_code();
|
27 |
|
28 |
$indicator = 'bad';
|
29 |
if ( 'core:aggregator:invalid-service-key' == $service_status ) {
|
30 |
+
$text = __( 'You do not have a license', 'the-events-calendar' );
|
31 |
+
$notes = '<a href="https://theeventscalendar.com/wordpress-event-aggregator/?utm_source=importsettings&utm_medium=plugin-tec&utm_campaign=in-app">';
|
32 |
$notes .= esc_html__( 'Buy Event Aggregator to access more event sources and automatic imports!', 'the-events-calendar' );
|
33 |
$notes .= '</a>';
|
34 |
} else {
|
35 |
+
$text = __( 'Your license is invalid', 'the-events-calendar' );
|
36 |
$notes = '<a href="' . esc_url( Tribe__Settings::instance()->get_url( array( 'tab' => 'licenses' ) ) ) . '">' . esc_html__( 'Check your license key', 'the-events-calendar' ) . '</a>';
|
37 |
}
|
38 |
}
|
41 |
<td class="label"><?php esc_html_e( 'License Key', 'the-events-calendar' ); ?></td>
|
42 |
<td class="indicator <?php esc_attr_e( $indicator ); ?>"><span class="dashicons dashicons-<?php echo esc_attr( $indicator_icons[ $indicator ] ); ?>"></span></td>
|
43 |
<td><?php echo esc_html( $text ); ?></td>
|
44 |
+
<td><?php echo $notes; // Escaping handled above. ?></td>
|
45 |
</tr>
|
46 |
<?php
|
47 |
// if EA is not active, bail out of the rest of this
|
50 |
return ob_get_clean();
|
51 |
}
|
52 |
|
53 |
+
$service = tribe( 'events-aggregator.service' );
|
54 |
+
$import_limit = $service->get_limit( 'import' );
|
55 |
$import_available = $service->get_limit_remaining();
|
56 |
+
$import_count = $service->get_limit_usage();
|
57 |
|
58 |
$indicator = 'good';
|
59 |
+
$notes = ' ';
|
60 |
|
61 |
if ( 0 === $import_limit || $import_count >= $import_limit ) {
|
62 |
$indicator = 'bad';
|
63 |
+
$notes = esc_html__( 'You have reached your daily import limit. Scheduled imports will be paused until tomorrow.', 'the-events-calendar' );
|
64 |
} elseif ( $import_count / $import_limit >= 0.8 ) {
|
65 |
$indicator = 'warning';
|
66 |
+
$notes = esc_html__( 'You are approaching your daily import limit. You may want to adjust your Scheduled Import frequencies.', 'the-events-calendar' );
|
67 |
}
|
68 |
|
69 |
$text = sprintf( // import count and limit
|
77 |
<td class="label"><?php esc_html_e( 'Current usage', 'the-events-calendar' ); ?></td>
|
78 |
<td class="indicator <?php esc_attr_e( $indicator ); ?>"><span class="dashicons dashicons-<?php echo esc_attr( $indicator_icons[ $indicator ] ); ?>"></span></td>
|
79 |
<td><?php echo esc_html( $text ); ?></td>
|
80 |
+
<td><?php echo $notes; // Escaping handled above. ?></td>
|
81 |
</tr>
|
82 |
</tbody>
|
83 |
</table>
|
91 |
<tbody>
|
92 |
<?php
|
93 |
$indicator = 'good';
|
94 |
+
$notes = ' ';
|
95 |
|
96 |
$ea_server = tribe( 'events-aggregator.service' )->api()->domain;
|
97 |
+
$up = tribe( 'events-aggregator.service' )->get( 'status/up' );
|
98 |
|
99 |
if ( ! $up || is_wp_error( $up ) ) {
|
100 |
$indicator = 'bad';
|
101 |
/* translators: %s: Event Aggregator Server URL */
|
102 |
+
$text = sprintf( __( 'Not connected to %s', 'the-events-calendar' ), $ea_server );
|
103 |
$notes = esc_html__( 'The server is not currently responding', 'the-events-calendar' );
|
104 |
} elseif ( is_object( $up ) && is_object( $up->data ) && isset( $up->data->status ) && 400 <= $up->data->status ) {
|
105 |
// this is a rare condition that should never happen
|
109 |
/* translators: %s: Event Aggregator Server URL */
|
110 |
$text = sprintf( __( 'Not connected to %s', 'the-events-calendar' ), $ea_server );
|
111 |
|
112 |
+
$notes = __( 'The server is responding with an error:', 'the-events-calendar' );
|
113 |
$notes .= '<pre>';
|
114 |
$notes .= esc_html( $up->message );
|
115 |
$notes .= '</pre>';
|
133 |
// @todo add API request for pingback check
|
134 |
if ( defined( 'DISABLE_WP_CRON' ) && true === DISABLE_WP_CRON ) {
|
135 |
$indicator = 'warning';
|
136 |
+
$text = __( 'WP Cron not enabled', 'the-events-calendar' );
|
137 |
+
$notes = esc_html__( 'Scheduled imports may not run reliably', 'the-events-calendar' );
|
138 |
} else {
|
139 |
$text = __( 'WP Cron enabled', 'the-events-calendar' );
|
140 |
}
|
150 |
</table>
|
151 |
|
152 |
<?php if ( $show_third_party_accounts ) : ?>
|
153 |
+
<table class="event-aggregator-status">
|
154 |
+
<thead>
|
155 |
+
<tr class="table-heading">
|
156 |
+
<th colspan="4"><?php esc_html_e( 'Third Party Accounts', 'the-events-calendar' ); ?></th>
|
157 |
+
</tr>
|
158 |
+
</thead>
|
159 |
+
<tbody>
|
160 |
<?php
|
161 |
// Eventbrite status section
|
162 |
$indicator = 'good';
|
163 |
+
$notes = ' ';
|
164 |
+
$text = 'Connected';
|
165 |
|
166 |
if ( tribe( 'events-aggregator.main' )->api( 'origins' )->is_oauth_enabled( 'eventbrite' ) ) {
|
167 |
if ( ! tribe( 'events-aggregator.settings' )->has_eb_security_key() ) {
|
176 |
$notes = esc_html__( 'The service has disabled oAuth. Some types of events may not import.', 'the-events-calendar' );
|
177 |
}
|
178 |
?>
|
179 |
+
<tr>
|
180 |
+
<td class="label">
|
181 |
+
<img src="<?php echo esc_url( tribe_events_resource_url( 'images/aggregator/eventbrite.png' ) ); ?>" /><span><?php esc_html_e( 'Eventbrite', 'the-events-calendar' ); ?></span>
|
182 |
+
</td>
|
183 |
+
<td class="indicator <?php esc_attr_e( $indicator ); ?>"><span class="dashicons dashicons-<?php echo esc_attr( $indicator_icons[ $indicator ] ); ?>"></span></td>
|
184 |
+
<td><?php echo esc_html( $text ); ?></td>
|
185 |
+
<td><?php echo $notes; // Escaping handled above. ?></td>
|
186 |
+
</tr>
|
187 |
<?php
|
188 |
// Meetup status section
|
189 |
$indicator = 'good';
|
190 |
+
$notes = ' ';
|
191 |
+
$text = 'Connected';
|
192 |
+
|
193 |
+
if ( tribe( 'events-aggregator.main' )->api( 'origins' )->is_oauth_enabled( 'meetup' ) ) {
|
194 |
+
if ( ! tribe( 'events-aggregator.settings' )->has_meetup_security_key() ) {
|
195 |
+
$indicator = 'warning';
|
196 |
+
$text = __( 'You have not connected Event Aggregator to Meetup', 'the-events-calendar' );
|
197 |
+
$meetup_auth_url = Tribe__Events__Aggregator__Record__Meetup::get_auth_url( array( 'back' => 'settings' ) );
|
198 |
+
$notes = '<a href="' . esc_url( $meetup_auth_url ). '">' . esc_html_x( 'Connect to Meetup', 'link for connecting meetup', 'the-events-calendar' ) . '</a>';
|
199 |
+
}
|
200 |
+
} else {
|
201 |
$indicator = 'warning';
|
202 |
+
$text = __( 'Limited connectivity with Meetup', 'the-events-calendar' );
|
203 |
+
$notes = esc_html__( 'The service has disabled oAuth. Some types of events may not import.', 'the-events-calendar' );
|
|
|
|
|
204 |
}
|
205 |
?>
|
206 |
+
<tr>
|
207 |
+
<td class="label">
|
208 |
+
<img src="<?php echo esc_url( tribe_events_resource_url( 'images/aggregator/meetup.png' ) ); ?>" /><span><?php esc_html_e( 'Meetup', 'the-events-calendar' ); ?></span>
|
209 |
+
</td>
|
210 |
+
<td class="indicator <?php esc_attr_e( $indicator ); ?>"><span class="dashicons dashicons-<?php echo esc_attr( $indicator_icons[ $indicator ] ); ?>"></span></td>
|
211 |
+
<td><?php echo esc_html( $text ); ?></td>
|
212 |
+
<td><?php echo $notes; // Escaping handled above. ?></td>
|
213 |
+
</tr>
|
214 |
<?php
|
215 |
/**
|
216 |
* Fires below the rows in the third party status table.
|
223 |
*/
|
224 |
do_action( 'tribe_events_status_third_party', $indicator_icons );
|
225 |
?>
|
226 |
+
</tbody>
|
227 |
+
</table>
|
228 |
<?php endif; ?>
|
src/admin-views/aggregator/tabs/import-form.php
CHANGED
@@ -13,12 +13,12 @@ $default_category = empty( $default_category ) ? tribe_get_option( 'tribe_agg
|
|
13 |
$post_statuses = get_post_statuses( array() );
|
14 |
|
15 |
// Ensure the "(do not override)" status is set up for Eventbrite imports, and "Published" is removed.
|
16 |
-
$do_not_override_status =
|
17 |
$eventbrite_post_statuses = $do_not_override_status + $post_statuses;
|
18 |
unset( $eventbrite_post_statuses['publish'] );
|
19 |
|
20 |
$category_dropdown = array();
|
21 |
-
$category_dropdown = wp_dropdown_categories(
|
22 |
'echo' => false,
|
23 |
'name' => 'aggregator[category]',
|
24 |
'id' => 'tribe-ea-field-category',
|
@@ -26,7 +26,7 @@ $category_dropdown = wp_dropdown_categories( array(
|
|
26 |
'class' => 'tribe-ea-field tribe-ea-dropdown tribe-ea-size-large',
|
27 |
'orderby' => 'post_title',
|
28 |
'taxonomy' => Tribe__Events__Main::TAXONOMY,
|
29 |
-
|
30 |
$category_dropdown = preg_replace( '!\<select!', '<select data-hide-search', $category_dropdown );
|
31 |
$category_dropdown = preg_replace( '!(\<select[^\>]*\>)!', '$1<option value="">' . __( 'No Additional Categories', 'the-events-calendar' ) . '</option>', $category_dropdown );
|
32 |
$category_dropdown = preg_replace( '!(value="' . $default_category . '")!', '$1 selected', $category_dropdown );
|
@@ -128,10 +128,10 @@ wp_nonce_field( 'tribe-aggregator-save-import', 'tribe_aggregator_nonce' );
|
|
128 |
</tr>
|
129 |
|
130 |
<?php
|
131 |
-
$form_args =
|
132 |
'record' => $record,
|
133 |
'aggregator_action' => $aggregator_action,
|
134 |
-
|
135 |
|
136 |
if ( 'edit' === $aggregator_action ) {
|
137 |
$this->template( 'origins/' . $record->meta['origin'], $form_args );
|
13 |
$post_statuses = get_post_statuses( array() );
|
14 |
|
15 |
// Ensure the "(do not override)" status is set up for Eventbrite imports, and "Published" is removed.
|
16 |
+
$do_not_override_status = [ 'do_not_override' => esc_html__( '(do not override)', 'the-events-calendar' ) ];
|
17 |
$eventbrite_post_statuses = $do_not_override_status + $post_statuses;
|
18 |
unset( $eventbrite_post_statuses['publish'] );
|
19 |
|
20 |
$category_dropdown = array();
|
21 |
+
$category_dropdown = wp_dropdown_categories( [
|
22 |
'echo' => false,
|
23 |
'name' => 'aggregator[category]',
|
24 |
'id' => 'tribe-ea-field-category',
|
26 |
'class' => 'tribe-ea-field tribe-ea-dropdown tribe-ea-size-large',
|
27 |
'orderby' => 'post_title',
|
28 |
'taxonomy' => Tribe__Events__Main::TAXONOMY,
|
29 |
+
] );
|
30 |
$category_dropdown = preg_replace( '!\<select!', '<select data-hide-search', $category_dropdown );
|
31 |
$category_dropdown = preg_replace( '!(\<select[^\>]*\>)!', '$1<option value="">' . __( 'No Additional Categories', 'the-events-calendar' ) . '</option>', $category_dropdown );
|
32 |
$category_dropdown = preg_replace( '!(value="' . $default_category . '")!', '$1 selected', $category_dropdown );
|
128 |
</tr>
|
129 |
|
130 |
<?php
|
131 |
+
$form_args = [
|
132 |
'record' => $record,
|
133 |
'aggregator_action' => $aggregator_action,
|
134 |
+
];
|
135 |
|
136 |
if ( 'edit' === $aggregator_action ) {
|
137 |
$this->template( 'origins/' . $record->meta['origin'], $form_args );
|
src/admin-views/tribe-options-addons-api.php
CHANGED
@@ -5,30 +5,57 @@
|
|
5 |
*/
|
6 |
$internal = array();
|
7 |
|
8 |
-
$current_url = Tribe__Settings::instance()->get_url(
|
9 |
|
10 |
// if there's an Event Aggregator license key, add the Meetup.com API fields
|
11 |
if ( get_option( 'pue_install_key_event_aggregator' ) ) {
|
12 |
|
13 |
-
$
|
14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
'type' => 'html',
|
16 |
'html' => '<h3>' . esc_html__( 'Meetup', 'the-events-calendar' ) . '</h3>',
|
17 |
-
|
18 |
-
'meetup-info-box'
|
|
|
|
|
|
|
|
|
19 |
'type' => 'html',
|
20 |
-
'html' =>
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
'size' => 'medium',
|
27 |
-
'validation_type' => 'alpha_numeric',
|
28 |
-
'can_be_empty' => true,
|
29 |
-
'parent_option' => Tribe__Events__Main::OPTIONNAME,
|
30 |
-
),
|
31 |
-
);
|
32 |
}
|
33 |
|
34 |
/**
|
@@ -54,7 +81,7 @@ if ( class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ) || get_option( '
|
|
54 |
$eventbrite_disconnect_url = tribe( 'events-aggregator.settings' )->build_disconnect_eventbrite_url( $current_url );
|
55 |
}
|
56 |
?>
|
57 |
-
<a target="_blank" class="tribe-ea-eventbrite-button" href="<?php echo esc_url( Tribe__Events__Aggregator__Record__Eventbrite::get_auth_url(
|
58 |
<?php if ( ! $missing_eb_credentials ) : ?>
|
59 |
<a href="<?php echo esc_url( $eventbrite_disconnect_url ); ?>" class="tribe-ea-eventbrite-disconnect"><?php echo esc_html( $eventbrite_disconnect_label ); ?></a>
|
60 |
<?php endif; ?>
|
@@ -64,20 +91,20 @@ if ( class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ) || get_option( '
|
|
64 |
<?php
|
65 |
$eventbrite_token_html = ob_get_clean();
|
66 |
|
67 |
-
$internal2 =
|
68 |
-
'eb-start' =>
|
69 |
'type' => 'html',
|
70 |
'html' => '<h3>' . esc_html__( 'Eventbrite', 'the-events-calendar' ) . '</h3>',
|
71 |
-
|
72 |
-
'eb-info-box' =>
|
73 |
'type' => 'html',
|
74 |
'html' => '<p>' . esc_html__( 'You need to connect Event Aggregator to Eventbrite to import your events from Eventbrite.', 'the-events-calendar' ) . '</p>',
|
75 |
-
|
76 |
-
'eb_token_button' =>
|
77 |
'type' => 'html',
|
78 |
'html' => $eventbrite_token_html,
|
79 |
-
|
80 |
-
|
81 |
|
82 |
$internal = array_merge( $internal, $internal2 );
|
83 |
}
|
@@ -85,35 +112,35 @@ if ( class_exists( 'Tribe__Events__Tickets__Eventbrite__Main' ) || get_option( '
|
|
85 |
$internal = apply_filters( 'tribe_addons_tab_fields', $internal );
|
86 |
|
87 |
$fields = array_merge(
|
88 |
-
|
89 |
-
'addons-box-start' =>
|
90 |
'type' => 'html',
|
91 |
'html' => '<div id="modern-tribe-info">',
|
92 |
-
|
93 |
-
'addons-box-title' =>
|
94 |
'type' => 'html',
|
95 |
'html' => '<h2>' . esc_html__( 'APIs', 'the-events-calendar' ) . '</h2>',
|
96 |
-
|
97 |
-
'addons-box-description' =>
|
98 |
'type' => 'html',
|
99 |
'html' => '<p>' . __( 'Some features and add-ons require you to enter an API key or log into a third-party website so that The Events Calendar can communicate with an outside source.', 'the-events-calendar' ) . '</p>',
|
100 |
-
|
101 |
-
'addons-box-end' =>
|
102 |
'type' => 'html',
|
103 |
'html' => '</div>',
|
104 |
-
|
105 |
-
'addons-form-content-start' =>
|
106 |
'type' => 'html',
|
107 |
'html' => '<div class="tribe-settings-form-wrap">',
|
108 |
-
|
109 |
-
|
110 |
$internal,
|
111 |
-
|
112 |
-
'addons-form-content-end' =>
|
113 |
'type' => 'html',
|
114 |
'html' => '</div>',
|
115 |
-
|
116 |
-
|
117 |
);
|
118 |
|
119 |
/**
|
@@ -124,10 +151,10 @@ $fields = array_merge(
|
|
124 |
*/
|
125 |
$addons = apply_filters(
|
126 |
'tribe_addons_tab',
|
127 |
-
|
128 |
'priority' => 50,
|
129 |
'fields' => $fields,
|
130 |
-
|
131 |
);
|
132 |
|
133 |
// Only create the Add-ons Tab if there is any
|
5 |
*/
|
6 |
$internal = array();
|
7 |
|
8 |
+
$current_url = Tribe__Settings::instance()->get_url( [ 'tab' => 'addons' ] );
|
9 |
|
10 |
// if there's an Event Aggregator license key, add the Meetup.com API fields
|
11 |
if ( get_option( 'pue_install_key_event_aggregator' ) ) {
|
12 |
|
13 |
+
$missing_meetup_credentials = ! tribe( 'events-aggregator.settings' )->is_ea_authorized_for_meetup();
|
14 |
+
|
15 |
+
ob_start();
|
16 |
+
?>
|
17 |
+
|
18 |
+
<fieldset id="tribe-field-meetup_token" class="tribe-field tribe-field-text tribe-size-medium">
|
19 |
+
<legend class="tribe-field-label"><?php esc_html_e( 'Meetup Token', 'the-events-calendar' ) ?></legend>
|
20 |
+
<div class="tribe-field-wrap">
|
21 |
+
<?php
|
22 |
+
if ( $missing_meetup_credentials ) {
|
23 |
+
echo '<p>' . esc_html__( 'You need to connect to Meetup for Event Aggregator to work properly' ) . '</p>';
|
24 |
+
$meetup_button_label = __( 'Connect to Meetup', 'the-events-calendar' );
|
25 |
+
} else {
|
26 |
+
$meetup_button_label = __( 'Refresh your connection to Meetup', 'the-events-calendar' );
|
27 |
+
$meetup_disconnect_label = __( 'Disconnect', 'the-events-calendar' );
|
28 |
+
$meetup_disconnect_url = tribe( 'events-aggregator.settings' )->build_disconnect_meetup_url( $current_url );
|
29 |
+
}
|
30 |
+
?>
|
31 |
+
<a target="_blank" class="tribe-ea-meetup-button" href="<?php echo esc_url( Tribe__Events__Aggregator__Record__Meetup::get_auth_url( [ 'back' => 'settings' ] ) ); ?>">
|
32 |
+
<?php esc_html_e( $meetup_button_label ); ?></a>
|
33 |
+
<?php if ( ! $missing_meetup_credentials ) : ?>
|
34 |
+
<a href="<?php echo esc_url( $meetup_disconnect_url ); ?>" class="tribe-ea-meetup-disconnect"><?php echo esc_html( $meetup_disconnect_label ); ?></a>
|
35 |
+
<?php endif; ?>
|
36 |
+
</div>
|
37 |
+
</fieldset>
|
38 |
+
|
39 |
+
<?php
|
40 |
+
$meetup_token_html = ob_get_clean();
|
41 |
+
|
42 |
+
$internal_meetup = [
|
43 |
+
'meetup-start' => [
|
44 |
'type' => 'html',
|
45 |
'html' => '<h3>' . esc_html__( 'Meetup', 'the-events-calendar' ) . '</h3>',
|
46 |
+
],
|
47 |
+
'meetup-info-box' => [
|
48 |
+
'type' => 'html',
|
49 |
+
'html' => '<p>' . esc_html__( 'You need to connect Event Aggregator to Meetup to import your events from Meetup.', 'the-events-calendar' ) . '</p>',
|
50 |
+
],
|
51 |
+
'meetup_token_button' => [
|
52 |
'type' => 'html',
|
53 |
+
'html' => $meetup_token_html,
|
54 |
+
],
|
55 |
+
];
|
56 |
+
|
57 |
+
$internal = array_merge( $internal, $internal_meetup );
|
58 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
59 |
}
|
60 |
|
61 |
/**
|
81 |
$eventbrite_disconnect_url = tribe( 'events-aggregator.settings' )->build_disconnect_eventbrite_url( $current_url );
|
82 |
}
|
83 |
?>
|
84 |
+
<a target="_blank" class="tribe-ea-eventbrite-button" href="<?php echo esc_url( Tribe__Events__Aggregator__Record__Eventbrite::get_auth_url( [ 'back' => 'settings' ] ) ); ?>"><?php esc_html_e( $eventbrite_button_label ); ?></a>
|
85 |
<?php if ( ! $missing_eb_credentials ) : ?>
|
86 |
<a href="<?php echo esc_url( $eventbrite_disconnect_url ); ?>" class="tribe-ea-eventbrite-disconnect"><?php echo esc_html( $eventbrite_disconnect_label ); ?></a>
|
87 |
<?php endif; ?>
|
91 |
<?php
|
92 |
$eventbrite_token_html = ob_get_clean();
|
93 |
|
94 |
+
$internal2 = [
|
95 |
+
'eb-start' => [
|
96 |
'type' => 'html',
|
97 |
'html' => '<h3>' . esc_html__( 'Eventbrite', 'the-events-calendar' ) . '</h3>',
|
98 |
+
],
|
99 |
+
'eb-info-box' => [
|
100 |
'type' => 'html',
|
101 |
'html' => '<p>' . esc_html__( 'You need to connect Event Aggregator to Eventbrite to import your events from Eventbrite.', 'the-events-calendar' ) . '</p>',
|
102 |
+
],
|
103 |
+
'eb_token_button' => [
|
104 |
'type' => 'html',
|
105 |
'html' => $eventbrite_token_html,
|
106 |
+
],
|
107 |
+
];
|
108 |
|
109 |
$internal = array_merge( $internal, $internal2 );
|
110 |
}
|
112 |
$internal = apply_filters( 'tribe_addons_tab_fields', $internal );
|
113 |
|
114 |
$fields = array_merge(
|
115 |
+
[
|
116 |
+
'addons-box-start' => [
|
117 |
'type' => 'html',
|
118 |
'html' => '<div id="modern-tribe-info">',
|
119 |
+
],
|
120 |
+
'addons-box-title' => [
|
121 |
'type' => 'html',
|
122 |
'html' => '<h2>' . esc_html__( 'APIs', 'the-events-calendar' ) . '</h2>',
|
123 |
+
],
|
124 |
+
'addons-box-description' => [
|
125 |
'type' => 'html',
|
126 |
'html' => '<p>' . __( 'Some features and add-ons require you to enter an API key or log into a third-party website so that The Events Calendar can communicate with an outside source.', 'the-events-calendar' ) . '</p>',
|
127 |
+
],
|
128 |
+
'addons-box-end' => [
|
129 |
'type' => 'html',
|
130 |
'html' => '</div>',
|
131 |
+
],
|
132 |
+
'addons-form-content-start' => [
|
133 |
'type' => 'html',
|
134 |
'html' => '<div class="tribe-settings-form-wrap">',
|
135 |
+
],
|
136 |
+
],
|
137 |
$internal,
|
138 |
+
[
|
139 |
+
'addons-form-content-end' => [
|
140 |
'type' => 'html',
|
141 |
'html' => '</div>',
|
142 |
+
],
|
143 |
+
]
|
144 |
);
|
145 |
|
146 |
/**
|
151 |
*/
|
152 |
$addons = apply_filters(
|
153 |
'tribe_addons_tab',
|
154 |
+
[
|
155 |
'priority' => 50,
|
156 |
'fields' => $fields,
|
157 |
+
]
|
158 |
);
|
159 |
|
160 |
// Only create the Add-ons Tab if there is any
|
src/resources/css/aggregator-page.css
CHANGED
@@ -419,7 +419,7 @@
|
|
419 |
margin-bottom: .25em;
|
420 |
}
|
421 |
|
422 |
-
.tribe-ea .tribe-ea-
|
423 |
margin-left: 2rem;
|
424 |
margin-top: 1rem;
|
425 |
}
|
419 |
margin-bottom: .25em;
|
420 |
}
|
421 |
|
422 |
+
.tribe-ea .tribe-ea-login-button {
|
423 |
margin-left: 2rem;
|
424 |
margin-top: 1rem;
|
425 |
}
|
src/resources/css/aggregator-page.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.tribe-ea .tribe-ea-tab{padding:20px;margin-top:20px;border:1px solid #ccc;background-color:#fff}.tribe-ea .tribe-ea-tab .form-table th[scope=row]{width:140px}.tribe-ea .tribe-ea-tab .form-table tr{position:relative}.tribe-ea .tribe-ea-tab .form-table .eb-url-row th[scope=row]{padding:0}.tribe-ea .tribe-ea-tab .form-table .eb-url-row td{padding:0 10px}.tribe-ea .tribe-ea-tab .subsubsub li{font-weight:700}.tribe-ea .tribe-ea-tab .subsubsub .count,.tribe-ea .tribe-ea-tab .subsubsub a{font-weight:400}.tribe-ea .tribe-ea-help{padding:4px;color:#0073aa;cursor:pointer}.tribe-ea .tribe-ea-hidden{display:none}.tribe-ea .tribe-ea-file-name{display:inline-block;font-style:italic;line-height:26px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.tribe-ea .tribe-ea-raw-list{line-height:1.25em;list-style:square;margin-top:0;margin-left:22px;margin-bottom:6px}.tribe-ea .tribe-ea-raw-list>li{margin-bottom:2px}.tribe-ea .tribe-ea-total{font-weight:600}.tribe-ea .tribe-ea-size-tiny{width:75px}.tribe-ea .tribe-ea-size-small{width:100px}.tribe-ea .tribe-ea-size-medium{width:150px}.tribe-ea .tribe-ea-size-large{width:200px}.tribe-ea .tribe-ea-size-xlarge{width:405px}.tribe-ea .has-credentials{padding:0}.tribe-ea .tribe-button-row{padding-left:0}.tribe-ea .tribe-ea-fileicon{padding:3px}.tribe-ea .tribe-ea-field-readonly{line-height:30px}.tribe-ea .tribe-ea-field-readonly+.tribe-ea-field{margin-left:10px}.tribe-ea .tribe-ea-field.tribe-field-inline-dropdown{margin-left:0}.tribe-ea .tribe-credential-row{border-top:15px solid #fff}.tribe-ea .enter-credentials{background-color:#f8eceb;padding:1rem}.tribe-ea .enter-credentials.credentials-entered{background-color:#ebf2eb}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-prompt,.tribe-ea .enter-credentials.credentials-entered .tribe-fieldset{display:none}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-success{display:block;margin-bottom:0}.tribe-ea .enter-credentials input{max-width:250px;width:75%}.tribe-ea .enter-credentials .dashicons{font-size:1.5rem;line-height:1.2rem;margin-right:.5rem}.tribe-ea .enter-credentials .dashicons-warning{color:#d54e21}.tribe-ea .enter-credentials .dashicons-yes{color:#41a341;font-size:2rem}.tribe-ea .enter-credentials #facebook_api_key{margin-right:1.5rem}.tribe-ea .enter-credentials .tribe-credentials-success{display:none}.tribe-ea .manage-column.column-frequency,.tribe-ea .manage-column.column-imported{width:15%}.tribe-ea .manage-column.column-total{width:15%;text-align:left}.tribe-ea .tribe-ea-tab-scheduled td.column-source{padding-left:10px}.tribe-ea .tribe-ea-tab-scheduled td.column-source :not(.row-actions) a:first-of-type{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;max-width:100%;vertical-align:bottom}.tribe-ea td.column-source{padding-left:50px;position:relative}.tribe-ea td.column-total{text-align:left}.tribe-ea .dashicons.tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status{position:absolute;width:45px;bottom:0;top:0;left:0;font-size:25px}.tribe-ea .tribe-ea-report-status>.dashicons{width:100%;padding-top:10px;font-size:inherit}.tribe-ea .tribe-ea-report-status .tribe-ea-status-success{color:#46b450}.tribe-ea .tribe-ea-report-status .tribe-ea-status-scheduled{color:#00a0d2}.tribe-ea .tribe-ea-report-status .tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status .tribe-ea-status-pending{color:#ffb900;font-size:.8em}.tribe-ea .select2-container-multi .select2-choices .select2-search-field input{height:25px}.tribe-ea .select2-container{margin:0 1px 0 0}.tribe-ea input,.tribe-ea select{margin-left:0}.tribe-ea .tribe-refine{margin-bottom:.25rem}.tribe-ea .tribe-refine:last-child{margin-bottom:0}.tribe-ea .tribe-date-helper{color:gray}.tribe-ea .tribe-ea-inline-label{padding-top:7px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license{background:url(../images/aggregator/ea-upsell-bkg.svg) transparent no-repeat;background-size:cover;border:none;padding:60px 0;text-align:center}.tribe-ea .tribe-notice-tribe-missing-aggregator-license .upsell-banner{margin-bottom:30px;margin-left:auto;margin-right:auto}.tribe-ea .tribe-notice-tribe-missing-aggregator-license h3{color:#fff;font-size:22px;font-weight:400;letter-spacing:1.5px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license p{color:#fff;font-size:16px;font-weight:300;letter-spacing:1px;margin:0 auto 30px;width:50%}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button){color:#abd8e8}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):active,.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):hover{color:#cbe1e8}.tribe-ea .tribe-banner{display:flex;align-items:center;justify-content:center;flex:1 1 auto}.tribe-ea .tribe-banner.tribe-active.tribe-dependent{display:flex}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets{background-image:linear-gradient(135deg,#0178ba,#0178ba 25%,#01bdac 65%,#01bdac);background-size:cover;padding:0;text-align:center}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets h3{color:#fff;font-size:26px;letter-spacing:1px;font-weight:400;padding:0 45px}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets img{max-width:165px}.tribe-ea .tribe-button{border:1px solid;border-radius:3px;color:#fff;display:inline-block;font-size:13px;font-weight:300;letter-spacing:1.5px;padding:15px 30px;text-decoration:none;text-transform:uppercase}.tribe-ea .tribe-button-primary{background:#000;border-color:#000;margin-right:5px}.tribe-ea .tribe-button-secondary{background:transparent;border-color:#fff;margin-left:10px}.tribe-ea .dataTables_filter,.tribe-ea .dataTables_length{line-height:28px;margin-bottom:.5rem}.tribe-ea .dataTables_filter select,.tribe-ea .dataTables_length select{margin-top:-2px}.tribe-ea .tribe-view-filters.tribe-active+.tribe-filters{display:block}.tribe-ea dl.tribe-filters{display:none;margin-left:.5rem;margin-top:0}.tribe-ea dl.tribe-filters dt{clear:left;display:inline-block;font-weight:700;margin-right:.25rem}.tribe-ea dl.tribe-filters dd{display:inline;margin-left:0}.tribe-ea dl.tribe-filters dd:after{content:"";display:block;margin-bottom:.25rem}.tribe-ea .widefat td p{margin-bottom:.25em}.tribe-ea .tribe-ea-eventbrite-button{margin-left:2rem;margin-top:1rem}.tribe-ea-table-container{background-color:#fafafa;border:1px solid #e7e7e7;min-height:25px;padding:.5rem}.tribe-preview-container{display:none;padding-left:1rem;padding-right:1rem;margin-top:.5rem}.edit-form .tribe-preview-container,.show-data .tribe-preview-container,.tribe-preview-container.tribe-fetch-error,.tribe-preview-container.tribe-fetched,.tribe-preview-container.tribe-fetching{display:block}.tribe-preview-container.tribe-fetching .spinner-container{display:block;text-align:center}.tribe-preview-container.tribe-fetch-error .tribe-fetch-error-message{display:block}.tribe-preview-container .data-container{display:none}.tribe-preview-container .data-container.csv-data #tribe-csv-preview-message{display:block}.tribe-preview-container .data-container.csv-data #tribe-remote-preview-message{display:none}.tribe-preview-container .data-container #tribe-remote-preview-message{display:block}.tribe-preview-container>td{padding-left:0;padding-right:0}.tribe-preview-container .tribe-column-end-date,.tribe-preview-container .tribe-column-start-date,.tribe-preview-container .tribe-column-start-time{width:8em}.tribe-preview-container .spinner-container,.tribe-preview-container .tribe-fetch-error-message{display:none}.tribe-preview-container .spinner{float:none;margin-left:auto;margin-right:auto;visibility:visible}.tribe-preview-container .spinner-message{display:block;margin-top:.25rem}.tribe-preview-container .dataTable{float:left}.tribe-preview-container .dataTable .check-column input,.tribe-preview-container .dataTable .column-cb input{display:none}.tribe-preview-container .dataTable tfoot th,.tribe-preview-container .dataTable thead th{padding-right:20px;white-space:nowrap}.tribe-preview-container .dataTable thead tr+tr th{background:#f3f3f3;border-bottom:0;font-weight:700}.tribe-preview-container .tribe-td-height-limit{max-height:50px;overflow:hidden}.tribe-preview-container .display-checkboxes .check-column input,.tribe-preview-container .display-checkboxes .column-cb input{display:inline-block}.tribe-preview-container .tribe-preview-message{display:none;font-weight:700;line-height:26px}.tribe-preview-container #tribe-ea-field-post_status+label{margin-left:1rem}.tribe-default-settings{display:none;overflow:hidden;padding-bottom:1rem;padding-top:1rem}.tribe-default-settings label{display:inline-block;line-height:26px}.edit-form .tribe-default-settings,.edit-form .tribe-finalize-container,.show-data .data-container,.show-data .tribe-default-settings,.show-data .tribe-finalize-container{display:block}.edit-form .tribe-cancel{display:inline-block}.tribe-ea-form .tribe-bumpdown-manual,.tribe-ea-form .tribe-bumpdown-scheduled,.tribe-ea-form[data-origin=csv] .dataTables_filter,.tribe-ea-form[data-origin=csv] .dataTables_info,.tribe-ea-form[data-origin=csv] .dataTables_length,.tribe-ea-form[data-origin=csv] .dataTables_paginate{display:none}.tribe-ea-form[data-type=manual] .tribe-bumpdown-manual,.tribe-ea-form[data-type=schedule] .tribe-bumpdown-scheduled{display:inline-block}.tribe-cancel{display:none}.tribe-finalize-container{display:none;padding-top:1.5rem}.tribe-finalize-container .tribe-timezone-message{font-style:italic;padding-top:.5rem}.tribe-finalize-container .tribe-limits-message{font-style:italic;padding:0;margin:1em 0 -1.5em}.tribe-message-loader{display:none}.tribe-notice-aggregator-update-msg .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-notice-aggregator-update-msg .progress .bar{background:#ffba00;height:1rem;width:1%}.tribe-notice-aggregator-update-msg.completed{border-left-color:#46b450}.tribe-notice-aggregator-update-msg.completed .progress .bar{background:#7ad03a}.tribe-notice-aggregator-update-msg .tracker{margin:0;padding:0}.tribe-notice-aggregator-update-msg .tracker .tracked-item{display:none;margin:.25rem 0}.tribe-notice-aggregator-update-msg .tracker.has-created,.tribe-notice-aggregator-update-msg .tracker.has-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated{padding-bottom:.25rem}.tribe-notice-aggregator-update-msg .tracker.has-created .track-created,.tribe-notice-aggregator-update-msg .tracker.has-created .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-updated{display:block}.tribe-ea-tab-edit .tribe-bumpdown-trigger.tribe-ea-help{display:none}.select2-disabled{margin-bottom:0;color:gray;cursor:default}.tribe-dropdown-subtitle{font-size:11px;color:gray}.select2-highlighted .tribe-dropdown-subtitle{color:#fff}.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat p,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat td,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat ul{color:#ccc}.tribe-ea-field-wrapper-post_status{min-width:275px}.tribe-ea-field-wrapper-post_status.tribe-active{float:left}@media screen and (max-width:782px){.tribe-ea .form-table td{padding-right:0}.tribe-ea .form-table td input[type=text]{width:92%;display:inline-block}.tribe-ea td.tribe-dependent.tribe-active{display:block}.tribe-ea input+.tribe-ea-help{line-height:30px}}
|
1 |
+
.tribe-ea .tribe-ea-tab{padding:20px;margin-top:20px;border:1px solid #ccc;background-color:#fff}.tribe-ea .tribe-ea-tab .form-table th[scope=row]{width:140px}.tribe-ea .tribe-ea-tab .form-table tr{position:relative}.tribe-ea .tribe-ea-tab .form-table .eb-url-row th[scope=row]{padding:0}.tribe-ea .tribe-ea-tab .form-table .eb-url-row td{padding:0 10px}.tribe-ea .tribe-ea-tab .subsubsub li{font-weight:700}.tribe-ea .tribe-ea-tab .subsubsub .count,.tribe-ea .tribe-ea-tab .subsubsub a{font-weight:400}.tribe-ea .tribe-ea-help{padding:4px;color:#0073aa;cursor:pointer}.tribe-ea .tribe-ea-hidden{display:none}.tribe-ea .tribe-ea-file-name{display:inline-block;font-style:italic;line-height:26px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:auto}.tribe-ea .tribe-ea-raw-list{line-height:1.25em;list-style:square;margin-top:0;margin-left:22px;margin-bottom:6px}.tribe-ea .tribe-ea-raw-list>li{margin-bottom:2px}.tribe-ea .tribe-ea-total{font-weight:600}.tribe-ea .tribe-ea-size-tiny{width:75px}.tribe-ea .tribe-ea-size-small{width:100px}.tribe-ea .tribe-ea-size-medium{width:150px}.tribe-ea .tribe-ea-size-large{width:200px}.tribe-ea .tribe-ea-size-xlarge{width:405px}.tribe-ea .has-credentials{padding:0}.tribe-ea .tribe-button-row{padding-left:0}.tribe-ea .tribe-ea-fileicon{padding:3px}.tribe-ea .tribe-ea-field-readonly{line-height:30px}.tribe-ea .tribe-ea-field-readonly+.tribe-ea-field{margin-left:10px}.tribe-ea .tribe-ea-field.tribe-field-inline-dropdown{margin-left:0}.tribe-ea .tribe-credential-row{border-top:15px solid #fff}.tribe-ea .enter-credentials{background-color:#f8eceb;padding:1rem}.tribe-ea .enter-credentials.credentials-entered{background-color:#ebf2eb}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-prompt,.tribe-ea .enter-credentials.credentials-entered .tribe-fieldset{display:none}.tribe-ea .enter-credentials.credentials-entered .tribe-credentials-success{display:block;margin-bottom:0}.tribe-ea .enter-credentials input{max-width:250px;width:75%}.tribe-ea .enter-credentials .dashicons{font-size:1.5rem;line-height:1.2rem;margin-right:.5rem}.tribe-ea .enter-credentials .dashicons-warning{color:#d54e21}.tribe-ea .enter-credentials .dashicons-yes{color:#41a341;font-size:2rem}.tribe-ea .enter-credentials #facebook_api_key{margin-right:1.5rem}.tribe-ea .enter-credentials .tribe-credentials-success{display:none}.tribe-ea .manage-column.column-frequency,.tribe-ea .manage-column.column-imported{width:15%}.tribe-ea .manage-column.column-total{width:15%;text-align:left}.tribe-ea .tribe-ea-tab-scheduled td.column-source{padding-left:10px}.tribe-ea .tribe-ea-tab-scheduled td.column-source :not(.row-actions) a:first-of-type{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:inline-block;max-width:100%;vertical-align:bottom}.tribe-ea td.column-source{padding-left:50px;position:relative}.tribe-ea td.column-total{text-align:left}.tribe-ea .dashicons.tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status{position:absolute;width:45px;bottom:0;top:0;left:0;font-size:25px}.tribe-ea .tribe-ea-report-status>.dashicons{width:100%;padding-top:10px;font-size:inherit}.tribe-ea .tribe-ea-report-status .tribe-ea-status-success{color:#46b450}.tribe-ea .tribe-ea-report-status .tribe-ea-status-scheduled{color:#00a0d2}.tribe-ea .tribe-ea-report-status .tribe-ea-status-failed{color:#dc3232}.tribe-ea .tribe-ea-report-status .tribe-ea-status-pending{color:#ffb900;font-size:.8em}.tribe-ea .select2-container-multi .select2-choices .select2-search-field input{height:25px}.tribe-ea .select2-container{margin:0 1px 0 0}.tribe-ea input,.tribe-ea select{margin-left:0}.tribe-ea .tribe-refine{margin-bottom:.25rem}.tribe-ea .tribe-refine:last-child{margin-bottom:0}.tribe-ea .tribe-date-helper{color:gray}.tribe-ea .tribe-ea-inline-label{padding-top:7px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license{background:url(../images/aggregator/ea-upsell-bkg.svg) transparent no-repeat;background-size:cover;border:none;padding:60px 0;text-align:center}.tribe-ea .tribe-notice-tribe-missing-aggregator-license .upsell-banner{margin-bottom:30px;margin-left:auto;margin-right:auto}.tribe-ea .tribe-notice-tribe-missing-aggregator-license h3{color:#fff;font-size:22px;font-weight:400;letter-spacing:1.5px}.tribe-ea .tribe-notice-tribe-missing-aggregator-license p{color:#fff;font-size:16px;font-weight:300;letter-spacing:1px;margin:0 auto 30px;width:50%}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button){color:#abd8e8}.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):active,.tribe-ea .tribe-notice-tribe-missing-aggregator-license a:not(.tribe-button):hover{color:#cbe1e8}.tribe-ea .tribe-banner{display:flex;align-items:center;justify-content:center;flex:1 1 auto}.tribe-ea .tribe-banner.tribe-active.tribe-dependent{display:flex}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets{background-image:linear-gradient(135deg,#0178ba,#0178ba 25%,#01bdac 65%,#01bdac);background-size:cover;padding:0;text-align:center}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets h3{color:#fff;font-size:26px;letter-spacing:1px;font-weight:400;padding:0 45px}.tribe-ea .tribe-banner.tribe-banner-eventbrite-tickets img{max-width:165px}.tribe-ea .tribe-button{border:1px solid;border-radius:3px;color:#fff;display:inline-block;font-size:13px;font-weight:300;letter-spacing:1.5px;padding:15px 30px;text-decoration:none;text-transform:uppercase}.tribe-ea .tribe-button-primary{background:#000;border-color:#000;margin-right:5px}.tribe-ea .tribe-button-secondary{background:transparent;border-color:#fff;margin-left:10px}.tribe-ea .dataTables_filter,.tribe-ea .dataTables_length{line-height:28px;margin-bottom:.5rem}.tribe-ea .dataTables_filter select,.tribe-ea .dataTables_length select{margin-top:-2px}.tribe-ea .tribe-view-filters.tribe-active+.tribe-filters{display:block}.tribe-ea dl.tribe-filters{display:none;margin-left:.5rem;margin-top:0}.tribe-ea dl.tribe-filters dt{clear:left;display:inline-block;font-weight:700;margin-right:.25rem}.tribe-ea dl.tribe-filters dd{display:inline;margin-left:0}.tribe-ea dl.tribe-filters dd:after{content:"";display:block;margin-bottom:.25rem}.tribe-ea .widefat td p{margin-bottom:.25em}.tribe-ea .tribe-ea-login-button{margin-left:2rem;margin-top:1rem}.tribe-ea-table-container{background-color:#fafafa;border:1px solid #e7e7e7;min-height:25px;padding:.5rem}.tribe-preview-container{display:none;padding-left:1rem;padding-right:1rem;margin-top:.5rem}.edit-form .tribe-preview-container,.show-data .tribe-preview-container,.tribe-preview-container.tribe-fetch-error,.tribe-preview-container.tribe-fetched,.tribe-preview-container.tribe-fetching{display:block}.tribe-preview-container.tribe-fetching .spinner-container{display:block;text-align:center}.tribe-preview-container.tribe-fetch-error .tribe-fetch-error-message{display:block}.tribe-preview-container .data-container{display:none}.tribe-preview-container .data-container.csv-data #tribe-csv-preview-message{display:block}.tribe-preview-container .data-container.csv-data #tribe-remote-preview-message{display:none}.tribe-preview-container .data-container #tribe-remote-preview-message{display:block}.tribe-preview-container>td{padding-left:0;padding-right:0}.tribe-preview-container .tribe-column-end-date,.tribe-preview-container .tribe-column-start-date,.tribe-preview-container .tribe-column-start-time{width:8em}.tribe-preview-container .spinner-container,.tribe-preview-container .tribe-fetch-error-message{display:none}.tribe-preview-container .spinner{float:none;margin-left:auto;margin-right:auto;visibility:visible}.tribe-preview-container .spinner-message{display:block;margin-top:.25rem}.tribe-preview-container .dataTable{float:left}.tribe-preview-container .dataTable .check-column input,.tribe-preview-container .dataTable .column-cb input{display:none}.tribe-preview-container .dataTable tfoot th,.tribe-preview-container .dataTable thead th{padding-right:20px;white-space:nowrap}.tribe-preview-container .dataTable thead tr+tr th{background:#f3f3f3;border-bottom:0;font-weight:700}.tribe-preview-container .tribe-td-height-limit{max-height:50px;overflow:hidden}.tribe-preview-container .display-checkboxes .check-column input,.tribe-preview-container .display-checkboxes .column-cb input{display:inline-block}.tribe-preview-container .tribe-preview-message{display:none;font-weight:700;line-height:26px}.tribe-preview-container #tribe-ea-field-post_status+label{margin-left:1rem}.tribe-default-settings{display:none;overflow:hidden;padding-bottom:1rem;padding-top:1rem}.tribe-default-settings label{display:inline-block;line-height:26px}.edit-form .tribe-default-settings,.edit-form .tribe-finalize-container,.show-data .data-container,.show-data .tribe-default-settings,.show-data .tribe-finalize-container{display:block}.edit-form .tribe-cancel{display:inline-block}.tribe-ea-form .tribe-bumpdown-manual,.tribe-ea-form .tribe-bumpdown-scheduled,.tribe-ea-form[data-origin=csv] .dataTables_filter,.tribe-ea-form[data-origin=csv] .dataTables_info,.tribe-ea-form[data-origin=csv] .dataTables_length,.tribe-ea-form[data-origin=csv] .dataTables_paginate{display:none}.tribe-ea-form[data-type=manual] .tribe-bumpdown-manual,.tribe-ea-form[data-type=schedule] .tribe-bumpdown-scheduled{display:inline-block}.tribe-cancel{display:none}.tribe-finalize-container{display:none;padding-top:1.5rem}.tribe-finalize-container .tribe-timezone-message{font-style:italic;padding-top:.5rem}.tribe-finalize-container .tribe-limits-message{font-style:italic;padding:0;margin:1em 0 -1.5em}.tribe-message-loader{display:none}.tribe-notice-aggregator-update-msg .progress{border:1px solid #ccc;float:left;margin-right:1rem;padding:1px;width:18rem}.tribe-notice-aggregator-update-msg .progress .bar{background:#ffba00;height:1rem;width:1%}.tribe-notice-aggregator-update-msg.completed{border-left-color:#46b450}.tribe-notice-aggregator-update-msg.completed .progress .bar{background:#7ad03a}.tribe-notice-aggregator-update-msg .tracker{margin:0;padding:0}.tribe-notice-aggregator-update-msg .tracker .tracked-item{display:none;margin:.25rem 0}.tribe-notice-aggregator-update-msg .tracker.has-created,.tribe-notice-aggregator-update-msg .tracker.has-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated{padding-bottom:.25rem}.tribe-notice-aggregator-update-msg .tracker.has-created .track-created,.tribe-notice-aggregator-update-msg .tracker.has-created .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-skipped .track-skipped,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-remaining,.tribe-notice-aggregator-update-msg .tracker.has-updated .track-updated{display:block}.tribe-ea-tab-edit .tribe-bumpdown-trigger.tribe-ea-help{display:none}.select2-disabled{margin-bottom:0;color:gray;cursor:default}.tribe-dropdown-subtitle{font-size:11px;color:gray}.select2-highlighted .tribe-dropdown-subtitle{color:#fff}.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat p,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat td,.tribe-aggregator-inactive .tribe-ea-tab-scheduled .widefat ul{color:#ccc}.tribe-ea-field-wrapper-post_status{min-width:275px}.tribe-ea-field-wrapper-post_status.tribe-active{float:left}@media screen and (max-width:782px){.tribe-ea .form-table td{padding-right:0}.tribe-ea .form-table td input[type=text]{width:92%;display:inline-block}.tribe-ea td.tribe-dependent.tribe-active{display:block}.tribe-ea input+.tribe-ea-help{line-height:30px}}
|
src/resources/css/events-admin.css
CHANGED
@@ -460,6 +460,47 @@ table.eventForm {
|
|
460 |
background: #c85b2f;
|
461 |
}
|
462 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
463 |
/* = Event Aggregator Status
|
464 |
=============================================*/
|
465 |
|
460 |
background: #c85b2f;
|
461 |
}
|
462 |
|
463 |
+
/*
|
464 |
+
Meetup
|
465 |
+
*/
|
466 |
+
|
467 |
+
.tribe-ea-meetup-disconnect {
|
468 |
+
color: #a00;
|
469 |
+
display: inline-block;
|
470 |
+
margin-left: 1rem;
|
471 |
+
}
|
472 |
+
|
473 |
+
.tribe-ea-meetup-disconnect:active,
|
474 |
+
.tribe-ea-meetup-disconnect:hover {
|
475 |
+
color: #f00;
|
476 |
+
}
|
477 |
+
|
478 |
+
.tribe-ea-meetup-button {
|
479 |
+
border-radius: 3px;
|
480 |
+
color: #fff;
|
481 |
+
display: inline-block;
|
482 |
+
padding: .5rem 1.5rem;
|
483 |
+
text-decoration: none;
|
484 |
+
-webkit-transition: background-color 0.5s ease;
|
485 |
+
transition: background-color 0.5s ease;
|
486 |
+
}
|
487 |
+
|
488 |
+
.tribe-ea-meetup-button:active,
|
489 |
+
.tribe-ea-meetup-button:hover {
|
490 |
+
color: #fff;
|
491 |
+
cursor: pointer;
|
492 |
+
}
|
493 |
+
|
494 |
+
.tribe-ea-meetup-button {
|
495 |
+
background: #f41940;
|
496 |
+
}
|
497 |
+
|
498 |
+
.tribe-ea-meetup-button:active,
|
499 |
+
.tribe-ea-meetup-button:hover,
|
500 |
+
.tribe-ea-meetup-button:focus {
|
501 |
+
background: #f41940;
|
502 |
+
}
|
503 |
+
|
504 |
/* = Event Aggregator Status
|
505 |
=============================================*/
|
506 |
|
src/resources/css/events-admin.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
.events-cal #post-query-submit,.events-cal .tablenav select[name=m]{display:none}.fixed .column-end-date,.fixed .column-events-cats,.fixed .column-start-date{width:14%}#additional-field-table input,#additional-field-table select,#additional-field-table textarea{width:200px}#additional-field-table tbody tr{height:72px}.tribe-restore-link+a{display:none}.eventForm{margin-top:-20px}.eventForm td{font-size:12px;padding:0 6px 10px 0;vertical-align:middle}.eventForm td input.alignleft,.eventForm td select.alignleft{margin-right:.3rem}.eventForm #EventURL{width:70%}.eventForm #event-meta td{vertical-align:top}.eventForm #event-meta td:first-child{line-height:30px}.eventForm #event-meta td div{margin-bottom:10px}.eventForm #event-meta td div:last-child{margin-bottom:20px}.eventForm textarea{width:100%}.eventForm h4{font-size:1.2em;margin:1em 0}.eventForm h4.event-time{margin-top:0}.eventForm .tribe_sectionheader{padding-bottom:5px}.eventForm p{margin:0 0 10px}.eventForm input[type=color],.eventForm input[type=date],.eventForm input[type=datetime-local],.eventForm input[type=datetime],.eventForm input[type=email],.eventForm input[type=month],.eventForm input[type=number],.eventForm input[type=password],.eventForm input[type=search],.eventForm input[type=tel],.eventForm input[type=text],.eventForm input[type=time],.eventForm input[type=url],.eventForm input[type=week]{background-image:none;border:1px solid #ccc;border-radius:3px;line-height:20px;margin-left:0}.eventForm .event-dynamic-helper-text{color:#999;font-style:italic;padding:0}.eventForm .tribe-datetime-block .tribe-allday{margin:10px 0 0}.eventForm .tribe-datetime-block .tribe-field-end_date,.eventForm .tribe-datetime-block .tribe-field-end_time,.eventForm .tribe-datetime-block .tribe-field-start_date,.eventForm .tribe-datetime-block .tribe-field-start_time{height:28px}.eventForm .tribe-datetime-block .tribe-field-end_date,.eventForm .tribe-datetime-block .tribe-field-start_date{width:100px}.eventForm .tribe-datetime-block .tribe-field-end_time,.eventForm .tribe-datetime-block .tribe-field-start_time{width:80px}.eventForm .tribe-datetime-block .tribe-field-timezone{width:100%;max-width:199px;min-width:100px;margin-top:-2px;display:none}.eventForm .tribe-datetime-block .tribe-field-timezone.select2-container{display:inline-block;margin-top:-4px}.eventForm .tribe-datetime-block .tribe-change-timezone{white-space:nowrap}.eventForm .tribe-datetime-label{vertical-align:top;padding-top:5px}.ui-datepicker-calendar .ui-datepicker-today a{background:linear-gradient(354deg,#ccc,#eee);color:#000}.ui-datepicker-calendar .ui-datepicker-today.ui-datepicker-current-day a{background:linear-gradient(354deg,#0a55a0,#1288eb);color:#fff}.ui-datepicker select.ui-datepicker-month{width:8rem}.tribe-community-event-info{width:100%;margin:10px}#EventInfo,.eventtable{width:100%;margin:0;padding-top:0}#event_tickets,.eventtable.ticket_list.eventForm{table-layout:fixed}#ticket_end_date,#ticket_start_date{width:100px}.form-table form input{border:none}#submitLabel{display:block}#submitLabel input{display:block;padding:0}#EventBriteDetailDiv h4,.eventForm .tribe_sectionheader h4,.tribe-community-event-info h4{padding-bottom:6px;text-transform:uppercase;border-bottom:1px solid #e5e5e5}.tribe-events-error{display:none}.tribe-events-multi-event-day{color:#0f81bb}.ui-front{z-index:1000000}.events-cal .ui-widget-overlay.ui-front{z-index:90}.edit-linked-post-link{display:inline-block;margin-left:10px}.linked-post-wrapper tbody+tbody tr.saved_linked-post td,.linked-post-wrapper tbody+tfoot tr td{margin-top:1em;padding-top:1em}.linked-post-wrapper .linked-post td:first-child{padding-left:30px}.move-linked-post-group{padding-right:.5em;cursor:move}.tribe-delete-this{float:right;color:#444}.tribe-delete-this.hover-state,.tribe-delete-this:hover{color:#a00}.tribe-delete-this.tribe-confirm-delete-this,.tribe_community_edit .edit-linked-post-link a{display:none}.tribe-linked-post-error.error{display:inline;margin-left:5px;padding:5px 10px}#tribe-field-toggle_blocks_editor_hidden_field{display:none}#EventBriteDetailDiv small,.tribe-community-event-info small{font-size:10px;color:#a3a3a3}#eventBriteTicketing,#mainDonateRow{margin:-11px 6px 0;padding:10px 15px;border:1px solid #e2e2e2;border-radius:3px;-webkit-border-top-left-radius:0;-moz-border-radius-topleft:0;-webkit-border-top-right-radius:0;-moz-border-radius-topright:0;-khtml-border-radius:3px;background:url(../images/bg_fade.png) repeat-x 0 0;background-color:#fff}#eventBriteTicketing h2{height:80px;margin:0;background:url(../images/eb_press_little.gif) no-repeat 100% 0}.tribe-community-event-info,table.eventForm{width:100%}#custom-recurrence-weeks label{display:block;float:left;width:45px;margin-bottom:3px}#custom-recurrence-frequency input{width:30px}#custom-recurrence-years label{display:block;float:left;width:50px;margin-bottom:3px}#recurrence-changed-row{display:none;color:red}#rec-days-error,#rec-end-error{color:red}.rec-error{display:none}#recurrence-pattern-description{font-style:italic}.recurrence-pattern-description-row{display:none}.chosen,.chzn-container,.tribe-chosen{margin-right:10px!important}#defaultCountry,#eventsDefaultState,#StateProvinceSelect,.events-dropdown{min-width:220px}.multi-day-cutoff-dropdown{width:100px!important}.inactive-sidebar .widget,.widget-liquid-right .sidebar-description,.widget-liquid-right .widget{overflow:visible!important}.tribe-aggregator-import-details{overflow:hidden}.tribe-aggregator-import-details dt{clear:left;float:left;margin-right:.25rem}.tribe-aggregator-import-details dd{margin-left:0}.tribe-aggregator-import-details .tribe-value{font-weight:700}.tribe-ea-eventbrite-disconnect{color:#a00;display:inline-block;margin-left:1rem}.tribe-ea-eventbrite-disconnect:active,.tribe-ea-eventbrite-disconnect:hover{color:red}.tribe-ea-eventbrite-button{border-radius:3px;color:#fff;display:inline-block;padding:.5rem 1.5rem;text-decoration:none;transition:background-color .5s ease}.tribe-ea-eventbrite-button:active,.tribe-ea-eventbrite-button:hover{color:#fff;cursor:pointer}.tribe-ea-eventbrite-button{background:#f6682f}.tribe-ea-eventbrite-button:active,.tribe-ea-eventbrite-button:focus,.tribe-ea-eventbrite-button:hover{background:#c85b2f}.event-aggregator-status{background-color:#fff;width:100%;border:2px solid #e4e5e6;border-spacing:0;margin-bottom:16px}.event-aggregator-status tbody tr:nth-child(2n) td{background-color:#f9f9f9}.event-aggregator-status th{text-align:left;border-bottom:1px solid #e4e5e6}.event-aggregator-status td,.event-aggregator-status th{padding:8px 12px;background-color:#fff}.event-aggregator-status td.label{width:220px}.event-aggregator-status td.label img{width:18px;height:18px;margin-right:6px;float:left}.event-aggregator-status td.indicator{width:20px}.event-aggregator-status td.indicator.good{color:#38b042}.event-aggregator-status td.indicator.bad{color:#ed5047}.event-aggregator-status td.indicator.warning{color:#f3ae46}@media (max-width:782px){.eventForm .tribe-datetime-block .tribe-field-end_date,.eventForm .tribe-datetime-block .tribe-field-start_date{width:63%;display:inline-block}.eventForm .tribe-datetime-block .tribe-field-end_time,.eventForm .tribe-datetime-block .tribe-field-start_time{width:35%;display:inline-block}.eventForm .tribe-datetime-block .tribe-datetime-separator{width:100%;display:block;text-align:center;padding:5px 0}.eventForm .tribe-datetime-block .tribe-field-timezone.select2-container{display:table;margin:10px auto 0}.eventForm .tribe-datetime-block .tribe-change-timezone{width:100%;display:block;text-align:center;padding:5px 0}}@media(min-width:1193px){.eventForm .tribe-datetime-block .tribe-field-timezone{width:calc(100% - 400px)}}
|
1 |
+
.events-cal #post-query-submit,.events-cal .tablenav select[name=m]{display:none}.fixed .column-end-date,.fixed .column-events-cats,.fixed .column-start-date{width:14%}#additional-field-table input,#additional-field-table select,#additional-field-table textarea{width:200px}#additional-field-table tbody tr{height:72px}.tribe-restore-link+a{display:none}.eventForm{margin-top:-20px}.eventForm td{font-size:12px;padding:0 6px 10px 0;vertical-align:middle}.eventForm td input.alignleft,.eventForm td select.alignleft{margin-right:.3rem}.eventForm #EventURL{width:70%}.eventForm #event-meta td{vertical-align:top}.eventForm #event-meta td:first-child{line-height:30px}.eventForm #event-meta td div{margin-bottom:10px}.eventForm #event-meta td div:last-child{margin-bottom:20px}.eventForm textarea{width:100%}.eventForm h4{font-size:1.2em;margin:1em 0}.eventForm h4.event-time{margin-top:0}.eventForm .tribe_sectionheader{padding-bottom:5px}.eventForm p{margin:0 0 10px}.eventForm input[type=color],.eventForm input[type=date],.eventForm input[type=datetime-local],.eventForm input[type=datetime],.eventForm input[type=email],.eventForm input[type=month],.eventForm input[type=number],.eventForm input[type=password],.eventForm input[type=search],.eventForm input[type=tel],.eventForm input[type=text],.eventForm input[type=time],.eventForm input[type=url],.eventForm input[type=week]{background-image:none;border:1px solid #ccc;border-radius:3px;line-height:20px;margin-left:0}.eventForm .event-dynamic-helper-text{color:#999;font-style:italic;padding:0}.eventForm .tribe-datetime-block .tribe-allday{margin:10px 0 0}.eventForm .tribe-datetime-block .tribe-field-end_date,.eventForm .tribe-datetime-block .tribe-field-end_time,.eventForm .tribe-datetime-block .tribe-field-start_date,.eventForm .tribe-datetime-block .tribe-field-start_time{height:28px}.eventForm .tribe-datetime-block .tribe-field-end_date,.eventForm .tribe-datetime-block .tribe-field-start_date{width:100px}.eventForm .tribe-datetime-block .tribe-field-end_time,.eventForm .tribe-datetime-block .tribe-field-start_time{width:80px}.eventForm .tribe-datetime-block .tribe-field-timezone{width:100%;max-width:199px;min-width:100px;margin-top:-2px;display:none}.eventForm .tribe-datetime-block .tribe-field-timezone.select2-container{display:inline-block;margin-top:-4px}.eventForm .tribe-datetime-block .tribe-change-timezone{white-space:nowrap}.eventForm .tribe-datetime-label{vertical-align:top;padding-top:5px}.ui-datepicker-calendar .ui-datepicker-today a{background:linear-gradient(354deg,#ccc,#eee);color:#000}.ui-datepicker-calendar .ui-datepicker-today.ui-datepicker-current-day a{background:linear-gradient(354deg,#0a55a0,#1288eb);color:#fff}.ui-datepicker select.ui-datepicker-month{width:8rem}.tribe-community-event-info{width:100%;margin:10px}#EventInfo,.eventtable{width:100%;margin:0;padding-top:0}#event_tickets,.eventtable.ticket_list.eventForm{table-layout:fixed}#ticket_end_date,#ticket_start_date{width:100px}.form-table form input{border:none}#submitLabel{display:block}#submitLabel input{display:block;padding:0}#EventBriteDetailDiv h4,.eventForm .tribe_sectionheader h4,.tribe-community-event-info h4{padding-bottom:6px;text-transform:uppercase;border-bottom:1px solid #e5e5e5}.tribe-events-error{display:none}.tribe-events-multi-event-day{color:#0f81bb}.ui-front{z-index:1000000}.events-cal .ui-widget-overlay.ui-front{z-index:90}.edit-linked-post-link{display:inline-block;margin-left:10px}.linked-post-wrapper tbody+tbody tr.saved_linked-post td,.linked-post-wrapper tbody+tfoot tr td{margin-top:1em;padding-top:1em}.linked-post-wrapper .linked-post td:first-child{padding-left:30px}.move-linked-post-group{padding-right:.5em;cursor:move}.tribe-delete-this{float:right;color:#444}.tribe-delete-this.hover-state,.tribe-delete-this:hover{color:#a00}.tribe-delete-this.tribe-confirm-delete-this,.tribe_community_edit .edit-linked-post-link a{display:none}.tribe-linked-post-error.error{display:inline;margin-left:5px;padding:5px 10px}#tribe-field-toggle_blocks_editor_hidden_field{display:none}#EventBriteDetailDiv small,.tribe-community-event-info small{font-size:10px;color:#a3a3a3}#eventBriteTicketing,#mainDonateRow{margin:-11px 6px 0;padding:10px 15px;border:1px solid #e2e2e2;border-radius:3px;-webkit-border-top-left-radius:0;-moz-border-radius-topleft:0;-webkit-border-top-right-radius:0;-moz-border-radius-topright:0;-khtml-border-radius:3px;background:url(../images/bg_fade.png) repeat-x 0 0;background-color:#fff}#eventBriteTicketing h2{height:80px;margin:0;background:url(../images/eb_press_little.gif) no-repeat 100% 0}.tribe-community-event-info,table.eventForm{width:100%}#custom-recurrence-weeks label{display:block;float:left;width:45px;margin-bottom:3px}#custom-recurrence-frequency input{width:30px}#custom-recurrence-years label{display:block;float:left;width:50px;margin-bottom:3px}#recurrence-changed-row{display:none;color:red}#rec-days-error,#rec-end-error{color:red}.rec-error{display:none}#recurrence-pattern-description{font-style:italic}.recurrence-pattern-description-row{display:none}.chosen,.chzn-container,.tribe-chosen{margin-right:10px!important}#defaultCountry,#eventsDefaultState,#StateProvinceSelect,.events-dropdown{min-width:220px}.multi-day-cutoff-dropdown{width:100px!important}.inactive-sidebar .widget,.widget-liquid-right .sidebar-description,.widget-liquid-right .widget{overflow:visible!important}.tribe-aggregator-import-details{overflow:hidden}.tribe-aggregator-import-details dt{clear:left;float:left;margin-right:.25rem}.tribe-aggregator-import-details dd{margin-left:0}.tribe-aggregator-import-details .tribe-value{font-weight:700}.tribe-ea-eventbrite-disconnect{color:#a00;display:inline-block;margin-left:1rem}.tribe-ea-eventbrite-disconnect:active,.tribe-ea-eventbrite-disconnect:hover{color:red}.tribe-ea-eventbrite-button{border-radius:3px;color:#fff;display:inline-block;padding:.5rem 1.5rem;text-decoration:none;transition:background-color .5s ease}.tribe-ea-eventbrite-button:active,.tribe-ea-eventbrite-button:hover{color:#fff;cursor:pointer}.tribe-ea-eventbrite-button{background:#f6682f}.tribe-ea-eventbrite-button:active,.tribe-ea-eventbrite-button:focus,.tribe-ea-eventbrite-button:hover{background:#c85b2f}.tribe-ea-meetup-disconnect{color:#a00;display:inline-block;margin-left:1rem}.tribe-ea-meetup-disconnect:active,.tribe-ea-meetup-disconnect:hover{color:red}.tribe-ea-meetup-button{border-radius:3px;color:#fff;display:inline-block;padding:.5rem 1.5rem;text-decoration:none;transition:background-color .5s ease}.tribe-ea-meetup-button:active,.tribe-ea-meetup-button:hover{color:#fff;cursor:pointer}.tribe-ea-meetup-button,.tribe-ea-meetup-button:active,.tribe-ea-meetup-button:focus,.tribe-ea-meetup-button:hover{background:#f41940}.event-aggregator-status{background-color:#fff;width:100%;border:2px solid #e4e5e6;border-spacing:0;margin-bottom:16px}.event-aggregator-status tbody tr:nth-child(2n) td{background-color:#f9f9f9}.event-aggregator-status th{text-align:left;border-bottom:1px solid #e4e5e6}.event-aggregator-status td,.event-aggregator-status th{padding:8px 12px;background-color:#fff}.event-aggregator-status td.label{width:220px}.event-aggregator-status td.label img{width:18px;height:18px;margin-right:6px;float:left}.event-aggregator-status td.indicator{width:20px}.event-aggregator-status td.indicator.good{color:#38b042}.event-aggregator-status td.indicator.bad{color:#ed5047}.event-aggregator-status td.indicator.warning{color:#f3ae46}@media (max-width:782px){.eventForm .tribe-datetime-block .tribe-field-end_date,.eventForm .tribe-datetime-block .tribe-field-start_date{width:63%;display:inline-block}.eventForm .tribe-datetime-block .tribe-field-end_time,.eventForm .tribe-datetime-block .tribe-field-start_time{width:35%;display:inline-block}.eventForm .tribe-datetime-block .tribe-datetime-separator{width:100%;display:block;text-align:center;padding:5px 0}.eventForm .tribe-datetime-block .tribe-field-timezone.select2-container{display:table;margin:10px auto 0}.eventForm .tribe-datetime-block .tribe-change-timezone{width:100%;display:block;text-align:center;padding:5px 0}}@media(min-width:1193px){.eventForm .tribe-datetime-block .tribe-field-timezone{width:calc(100% - 400px)}}
|
src/resources/postcss/aggregator-page.pcss
CHANGED
@@ -415,7 +415,7 @@
|
|
415 |
margin-bottom: .25em;
|
416 |
}
|
417 |
|
418 |
-
.tribe-ea-
|
419 |
margin-left: 2rem;
|
420 |
margin-top: 1rem;
|
421 |
}
|
415 |
margin-bottom: .25em;
|
416 |
}
|
417 |
|
418 |
+
.tribe-ea-login-button {
|
419 |
margin-left: 2rem;
|
420 |
margin-top: 1rem;
|
421 |
}
|
src/resources/postcss/events-admin.pcss
CHANGED
@@ -495,6 +495,45 @@ table.eventForm {
|
|
495 |
}
|
496 |
}
|
497 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
498 |
|
499 |
|
500 |
/* = Event Aggregator Status
|
495 |
}
|
496 |
}
|
497 |
|
498 |
+
/*
|
499 |
+
Meetup
|
500 |
+
*/
|
501 |
+
.tribe-ea-meetup-disconnect {
|
502 |
+
color: #a00;
|
503 |
+
display: inline-block;
|
504 |
+
margin-left: 1rem;
|
505 |
+
|
506 |
+
&:active,
|
507 |
+
&:hover {
|
508 |
+
color: #f00;
|
509 |
+
}
|
510 |
+
}
|
511 |
+
|
512 |
+
.tribe-ea-meetup-button {
|
513 |
+
border-radius: 3px;
|
514 |
+
color: #fff;
|
515 |
+
display: inline-block;
|
516 |
+
padding: .5rem 1.5rem;
|
517 |
+
text-decoration: none;
|
518 |
+
transition: background-color 0.5s ease;
|
519 |
+
|
520 |
+
&:active,
|
521 |
+
&:hover {
|
522 |
+
color: #fff;
|
523 |
+
cursor: pointer;
|
524 |
+
}
|
525 |
+
}
|
526 |
+
|
527 |
+
.tribe-ea-meetup-button {
|
528 |
+
background: #f41940;
|
529 |
+
|
530 |
+
&:active,
|
531 |
+
&:hover,
|
532 |
+
&:focus {
|
533 |
+
background: #f41940;
|
534 |
+
}
|
535 |
+
}
|
536 |
+
|
537 |
|
538 |
|
539 |
/* = Event Aggregator Status
|
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: 4.9.
|
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: 4.9.6
|
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 ComposerAutoloaderInit1e14d36a81f25b127dfe9ca1d1950e7c::getLoader();
|
vendor/composer/autoload_real.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
// autoload_real.php @generated by Composer
|
4 |
|
5 |
-
class
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
@@ -19,15 +19,15 @@ class ComposerAutoloaderInit2ed272add03d71d5b8076bf3942482a8
|
|
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 ComposerAutoloaderInit1e14d36a81f25b127dfe9ca1d1950e7c
|
6 |
{
|
7 |
private static $loader;
|
8 |
|
19 |
return self::$loader;
|
20 |
}
|
21 |
|
22 |
+
spl_autoload_register(array('ComposerAutoloaderInit1e14d36a81f25b127dfe9ca1d1950e7c', 'loadClassLoader'), true, true);
|
23 |
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
|
24 |
+
spl_autoload_unregister(array('ComposerAutoloaderInit1e14d36a81f25b127dfe9ca1d1950e7c', '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\ComposerStaticInit1e14d36a81f25b127dfe9ca1d1950e7c::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' =>
|
@@ -135,9 +135,9 @@ class ComposerStaticInit2ed272add03d71d5b8076bf3942482a8
|
|
135 |
public static function getInitializer(ClassLoader $loader)
|
136 |
{
|
137 |
return \Closure::bind(function () use ($loader) {
|
138 |
-
$loader->prefixLengthsPsr4 =
|
139 |
-
$loader->prefixDirsPsr4 =
|
140 |
-
$loader->classMap =
|
141 |
|
142 |
}, null, ClassLoader::class);
|
143 |
}
|
4 |
|
5 |
namespace Composer\Autoload;
|
6 |
|
7 |
+
class ComposerStaticInit1e14d36a81f25b127dfe9ca1d1950e7c
|
8 |
{
|
9 |
public static $prefixLengthsPsr4 = array (
|
10 |
'T' =>
|
135 |
public static function getInitializer(ClassLoader $loader)
|
136 |
{
|
137 |
return \Closure::bind(function () use ($loader) {
|
138 |
+
$loader->prefixLengthsPsr4 = ComposerStaticInit1e14d36a81f25b127dfe9ca1d1950e7c::$prefixLengthsPsr4;
|
139 |
+
$loader->prefixDirsPsr4 = ComposerStaticInit1e14d36a81f25b127dfe9ca1d1950e7c::$prefixDirsPsr4;
|
140 |
+
$loader->classMap = ComposerStaticInit1e14d36a81f25b127dfe9ca1d1950e7c::$classMap;
|
141 |
|
142 |
}, null, ClassLoader::class);
|
143 |
}
|