Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/embedpre.../EmbedPre.../ThirdPar.../Googleca...
File: Embedpress_Google_Helper.php
}
[500] Fix | Delete
}
[501] Fix | Delete
[502] Fix | Delete
/**
[503] Fix | Delete
* Helper function to return pretty printed JSON string.
[504] Fix | Delete
* @return string
[505] Fix | Delete
*/
[506] Fix | Delete
public static function getPrettyJSONString($jsonObject) {
[507] Fix | Delete
return str_replace(" ", " ", json_encode($jsonObject, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
[508] Fix | Delete
}
[509] Fix | Delete
[510] Fix | Delete
public static function sort_calendars(&$items) {
[511] Fix | Delete
// Set locale to UTF-8 variant if this is not the case.
[512] Fix | Delete
if (strpos(setlocale(LC_COLLATE, 0), '.UTF-8') === false) {
[513] Fix | Delete
// If we set this to a non existing locale it will be the default locale after this call.
[514] Fix | Delete
setlocale(LC_COLLATE, get_locale() . '.UTF-8');
[515] Fix | Delete
}
[516] Fix | Delete
usort($items, function($a, $b) {
[517] Fix | Delete
return strcoll($a['summary'], $b['summary']);
[518] Fix | Delete
});
[519] Fix | Delete
}
[520] Fix | Delete
public static function shortcode($atts = [], $content = null) {
[521] Fix | Delete
[522] Fix | Delete
// When we have no attributes, $atts is an empty string
[523] Fix | Delete
if (!is_array($atts)) {
[524] Fix | Delete
$atts = [];
[525] Fix | Delete
}
[526] Fix | Delete
[527] Fix | Delete
foreach ($atts as &$value) {
[528] Fix | Delete
$value = esc_attr($value);
[529] Fix | Delete
}
[530] Fix | Delete
unset($value); // Unset reference
[531] Fix | Delete
[532] Fix | Delete
wp_enqueue_style('dashicons');
[533] Fix | Delete
wp_enqueue_style( 'fullcalendar');
[534] Fix | Delete
wp_enqueue_style( 'fullcalendar_daygrid');
[535] Fix | Delete
wp_enqueue_style( 'fullcalendar_timegrid');
[536] Fix | Delete
wp_enqueue_style( 'fullcalendar_list');
[537] Fix | Delete
wp_enqueue_style( 'epgc');
[538] Fix | Delete
wp_enqueue_style( 'tippy_light');
[539] Fix | Delete
[540] Fix | Delete
[541] Fix | Delete
wp_enqueue_script('popper');
[542] Fix | Delete
wp_enqueue_script('tippy');
[543] Fix | Delete
wp_enqueue_script('my_moment');
[544] Fix | Delete
wp_enqueue_script('my_moment_timezone');
[545] Fix | Delete
wp_enqueue_script('fullcalendar');
[546] Fix | Delete
wp_enqueue_script('fullcalendar_moment');
[547] Fix | Delete
wp_enqueue_script('fullcalendar_moment_timezone');
[548] Fix | Delete
wp_enqueue_script('fullcalendar_daygrid');
[549] Fix | Delete
wp_enqueue_script('fullcalendar_timegrid');
[550] Fix | Delete
wp_enqueue_script('fullcalendar_list');
[551] Fix | Delete
wp_enqueue_script('fullcalendar_locales');
[552] Fix | Delete
wp_enqueue_script('epgc');
[553] Fix | Delete
$defaultConfig = [
[554] Fix | Delete
'header' => [
[555] Fix | Delete
'left' => 'prev,next today',
[556] Fix | Delete
'center' => 'title',
[557] Fix | Delete
'right' => 'dayGridMonth,timeGridWeek,listWeek'
[558] Fix | Delete
]
[559] Fix | Delete
];
[560] Fix | Delete
$userConfig = $defaultConfig; // copy
[561] Fix | Delete
$userFilter = 'top';
[562] Fix | Delete
$userEventPopup = 'true';
[563] Fix | Delete
$userEventLink = 'true';
[564] Fix | Delete
$userHidePassed = 'false';
[565] Fix | Delete
$userHideFuture = 'false';
[566] Fix | Delete
$userEventDescription = 'true';
[567] Fix | Delete
$userEventLocation = 'true';
[568] Fix | Delete
$userEventAttendees = 'false';
[569] Fix | Delete
$userEventAttachments = 'false';
[570] Fix | Delete
$userEventCreator = 'false';
[571] Fix | Delete
$userEventCalendarname = 'false';
[572] Fix | Delete
$calendarIds = '';
[573] Fix | Delete
$uncheckedCalendarIds = ''; // in filter
[574] Fix | Delete
// Get all non-fullcalendar known properties
[575] Fix | Delete
foreach ($atts as $key => $value) {
[576] Fix | Delete
if ($key === 'public') {
[577] Fix | Delete
// This existsed in old versions, but we don't want it in our shortcode output, so skip it.
[578] Fix | Delete
continue;
[579] Fix | Delete
}
[580] Fix | Delete
if ($key === 'filter') {
[581] Fix | Delete
$userFilter = $value === 'true' ? 'top' : $value;
[582] Fix | Delete
continue;
[583] Fix | Delete
}
[584] Fix | Delete
if ($key === 'eventpopup') {
[585] Fix | Delete
$userEventPopup = $value;
[586] Fix | Delete
continue;
[587] Fix | Delete
}
[588] Fix | Delete
if ($key === 'eventlink') {
[589] Fix | Delete
$userEventLink = $value;
[590] Fix | Delete
continue;
[591] Fix | Delete
}
[592] Fix | Delete
if ($key === 'hidepassed') {
[593] Fix | Delete
$userHidePassed = $value;
[594] Fix | Delete
continue;
[595] Fix | Delete
}
[596] Fix | Delete
if ($key === 'hidefuture') {
[597] Fix | Delete
$userHideFuture = $value;
[598] Fix | Delete
continue;
[599] Fix | Delete
}
[600] Fix | Delete
if ($key === 'eventdescription') {
[601] Fix | Delete
$userEventDescription = $value;
[602] Fix | Delete
continue;
[603] Fix | Delete
}
[604] Fix | Delete
if ($key === 'eventattachments') {
[605] Fix | Delete
$userEventAttachments = $value;
[606] Fix | Delete
continue;
[607] Fix | Delete
}
[608] Fix | Delete
if ($key === 'eventattendees') {
[609] Fix | Delete
$userEventAttendees = $value;
[610] Fix | Delete
continue;
[611] Fix | Delete
}
[612] Fix | Delete
if ($key === 'eventlocation') {
[613] Fix | Delete
$userEventLocation = $value;
[614] Fix | Delete
continue;
[615] Fix | Delete
}
[616] Fix | Delete
if ($key === 'eventcreator') {
[617] Fix | Delete
$userEventCreator = $value;
[618] Fix | Delete
continue;
[619] Fix | Delete
}
[620] Fix | Delete
if ($key === 'eventcalendarname') {
[621] Fix | Delete
$userEventCalendarname = $value;
[622] Fix | Delete
continue;
[623] Fix | Delete
}
[624] Fix | Delete
if ($key === 'uncheckedcalendarids' && !empty($value)) {
[625] Fix | Delete
$uncheckedCalendarIds = $value; // comma separated string
[626] Fix | Delete
continue;
[627] Fix | Delete
}
[628] Fix | Delete
[629] Fix | Delete
if ($key === 'calendarids') {
[630] Fix | Delete
if (!empty($value)) {
[631] Fix | Delete
$calendarIds = $value; // comma separated string
[632] Fix | Delete
}
[633] Fix | Delete
continue;
[634] Fix | Delete
}
[635] Fix | Delete
if ($key === 'fullcalendarconfig') {
[636] Fix | Delete
// A JSON string that we can directly send to FullCalendar
[637] Fix | Delete
$userConfig = json_decode($value, true);
[638] Fix | Delete
} else {
[639] Fix | Delete
// Fullcalendar properties that get passed to fullCalendar instance.
[640] Fix | Delete
$parts = explode('-', $key);
[641] Fix | Delete
$partsCount = count($parts);
[642] Fix | Delete
if ($partsCount > 1) {
[643] Fix | Delete
$currentUserConfigLayer = &$userConfig;
[644] Fix | Delete
for ($i = 0; $i < $partsCount; $i++) {
[645] Fix | Delete
$part = $parts[$i];
[646] Fix | Delete
if ($i + 1 === $partsCount) {
[647] Fix | Delete
if ($value === 'true') {
[648] Fix | Delete
$value = true;
[649] Fix | Delete
} elseif ($value === 'false') {
[650] Fix | Delete
$value = $value;
[651] Fix | Delete
}
[652] Fix | Delete
$currentUserConfigLayer[$part] = $value;
[653] Fix | Delete
} else {
[654] Fix | Delete
if (!array_key_exists($part, $currentUserConfigLayer)) {
[655] Fix | Delete
$currentUserConfigLayer[$part] = [];
[656] Fix | Delete
}
[657] Fix | Delete
$currentUserConfigLayer = &$currentUserConfigLayer[$part];
[658] Fix | Delete
}
[659] Fix | Delete
}
[660] Fix | Delete
} else {
[661] Fix | Delete
$userConfig[$key] = $value;
[662] Fix | Delete
}
[663] Fix | Delete
}
[664] Fix | Delete
}
[665] Fix | Delete
[666] Fix | Delete
$dataCalendarIds = '';
[667] Fix | Delete
if (!empty($calendarIds)) {
[668] Fix | Delete
$dataCalendarIds = 'data-calendarids=\'' . json_encode(array_map('trim', explode(',', $calendarIds))) . '\'';
[669] Fix | Delete
} else {
[670] Fix | Delete
$privateSettingsSelectedCalendarListIds = get_option('epgc_selected_calendar_ids', []);
[671] Fix | Delete
if (!empty($privateSettingsSelectedCalendarListIds)) {
[672] Fix | Delete
$dataCalendarIds = 'data-calendarids=\'' . json_encode($privateSettingsSelectedCalendarListIds) . '\'';
[673] Fix | Delete
}
[674] Fix | Delete
}
[675] Fix | Delete
[676] Fix | Delete
$dataUnchekedCalendarIds = '';
[677] Fix | Delete
if (!empty($uncheckedCalendarIds)) {
[678] Fix | Delete
$dataUnchekedCalendarIds = 'data-uncheckedcalendarids=\'' . json_encode(array_map('trim', explode(',', $uncheckedCalendarIds))) . '\'';
[679] Fix | Delete
}
[680] Fix | Delete
[681] Fix | Delete
$filterHTML = '<div class="epgc-calendar-filter" ' . $dataUnchekedCalendarIds . '></div>';
[682] Fix | Delete
[683] Fix | Delete
return '<div class="epgc-calendar-wrapper epgc-calendar-page">' . ($userFilter === 'top' ? wp_kses_post($filterHTML) : '') . '<div '
[684] Fix | Delete
. esc_attr($dataCalendarIds) . ' data-filter=\''
[685] Fix | Delete
. esc_attr($userFilter) . '\' data-eventpopup=\''
[686] Fix | Delete
. esc_attr($userEventPopup) . '\' data-eventlink=\''
[687] Fix | Delete
. esc_attr($userEventLink) . '\' data-eventdescription=\''
[688] Fix | Delete
. esc_attr($userEventDescription) . '\' data-eventlocation=\''
[689] Fix | Delete
. esc_attr($userEventLocation) . '\' data-eventattachments=\''
[690] Fix | Delete
. esc_attr($userEventAttachments) . '\' data-eventattendees=\''
[691] Fix | Delete
. esc_attr($userEventAttendees) . '\' data-eventcreator=\''
[692] Fix | Delete
. esc_attr($userEventCreator) . '\' data-eventcalendarname=\''
[693] Fix | Delete
. esc_attr($userEventCalendarname) . '\' data-hidefuture=\''
[694] Fix | Delete
. esc_attr($userHideFuture) . '\' data-hidepassed=\''
[695] Fix | Delete
. esc_attr($userHidePassed) . '\' data-config=\''
[696] Fix | Delete
. json_encode($userConfig) . '\' data-locale="'
[697] Fix | Delete
. esc_attr(get_locale())
[698] Fix | Delete
. '" class="epgc-calendar"></div>'
[699] Fix | Delete
. ($userFilter === 'bottom' ? wp_kses_post($filterHTML) : '')
[700] Fix | Delete
. '</div>';
[701] Fix | Delete
}
[702] Fix | Delete
[703] Fix | Delete
public static function admin_post_calendarlist() {
[704] Fix | Delete
try {
[705] Fix | Delete
$client = static::getGoogleClient(true);
[706] Fix | Delete
if ($client->isAccessTokenExpired()) {
[707] Fix | Delete
if (!$client->getRefreshToken()) {
[708] Fix | Delete
throw new Exception(EPGC_ERRORS_REFRESH_TOKEN_MISSING);
[709] Fix | Delete
}
[710] Fix | Delete
$client->refreshAccessToken();
[711] Fix | Delete
}
[712] Fix | Delete
$service = new Embedpress_GoogleCalendarClient($client);
[713] Fix | Delete
$items = $service->getCalendarList();
[714] Fix | Delete
[715] Fix | Delete
self::sort_calendars($items);
[716] Fix | Delete
[717] Fix | Delete
update_option('epgc_calendarlist', self::getPrettyJSONString($items), false);
[718] Fix | Delete
self::add_notice(PGC_NOTICES_CALENDARLIST_UPDATE_SUCCESS, 'success', true);
[719] Fix | Delete
exit;
[720] Fix | Delete
} catch (Exception $ex) {
[721] Fix | Delete
self::embedpress_die($ex);
[722] Fix | Delete
}
[723] Fix | Delete
}
[724] Fix | Delete
public static function admin_post_colorlist() {
[725] Fix | Delete
try {
[726] Fix | Delete
$client = static::getGoogleClient(true);
[727] Fix | Delete
if ($client->isAccessTokenExpired()) {
[728] Fix | Delete
if (!$client->getRefreshToken()) {
[729] Fix | Delete
throw new Exception(PGC_ERRORS_REFRESH_TOKEN_MISSING);
[730] Fix | Delete
}
[731] Fix | Delete
$client->refreshAccessToken();
[732] Fix | Delete
}
[733] Fix | Delete
$service = new Embedpress_GoogleCalendarClient($client);
[734] Fix | Delete
$items = $service->getColorList();
[735] Fix | Delete
update_option('epgc_colorlist', self::getPrettyJSONString($items), false);
[736] Fix | Delete
self::add_notice(EPGC_NOTICES_COLORLIST_UPDATE_SUCCESS, 'success', true);
[737] Fix | Delete
exit;
[738] Fix | Delete
} catch (Exception $ex) {
[739] Fix | Delete
self::embedpress_die($ex);
[740] Fix | Delete
}
[741] Fix | Delete
}
[742] Fix | Delete
public static function admin_post_deletecache() {
[743] Fix | Delete
if ( ! isset( $_POST['epgc_deletecache_data'] ) || ! wp_verify_nonce( $_POST['epgc_deletecache_data'], 'epgc_deletecache' ) || !current_user_can('manage_options')) {
[744] Fix | Delete
print 'Sorry, your nonce did not verify.';
[745] Fix | Delete
exit;
[746] Fix | Delete
} else {
[747] Fix | Delete
self::delete_calendar_cache();
[748] Fix | Delete
self::add_notice(PGC_NOTICES_CACHE_DELETED, 'success', true);
[749] Fix | Delete
exit;
[750] Fix | Delete
}
[751] Fix | Delete
}
[752] Fix | Delete
public static function admin_post_verify() {
[753] Fix | Delete
try {
[754] Fix | Delete
$client = static::getGoogleClient(true);
[755] Fix | Delete
$client->refreshAccessToken();
[756] Fix | Delete
self::add_notice(PGC_NOTICES_VERIFY_SUCCESS, 'success', true);
[757] Fix | Delete
exit;
[758] Fix | Delete
} catch (Exception $ex) {
[759] Fix | Delete
self::embedpress_die($ex);
[760] Fix | Delete
}
[761] Fix | Delete
}
[762] Fix | Delete
public static function enqueue_scripts() {
[763] Fix | Delete
wp_enqueue_style('dashicons');
[764] Fix | Delete
wp_register_style('fullcalendar', EPGC_ASSET_URL . 'lib/fullcalendar4/core/main.min.css', null, EMBEDPRESS_VERSION);
[765] Fix | Delete
wp_register_style('fullcalendar_daygrid', EPGC_ASSET_URL . 'lib/fullcalendar4/daygrid/main.min.css', ['fullcalendar'], EMBEDPRESS_VERSION);
[766] Fix | Delete
wp_register_style('fullcalendar_timegrid', EPGC_ASSET_URL . 'lib/fullcalendar4/timegrid/main.min.css', ['fullcalendar_daygrid'], EMBEDPRESS_VERSION);
[767] Fix | Delete
wp_register_style('fullcalendar_list', EPGC_ASSET_URL . 'lib/fullcalendar4/list/main.min.css', ['fullcalendar'], EMBEDPRESS_VERSION);
[768] Fix | Delete
wp_register_style('epgc', EPGC_ASSET_URL . 'css/epgc.css', ['fullcalendar_timegrid'], EMBEDPRESS_VERSION);
[769] Fix | Delete
wp_register_style('tippy_light', EPGC_ASSET_URL . 'lib/tippy/light-border.css', null, EMBEDPRESS_VERSION);
[770] Fix | Delete
[771] Fix | Delete
//wp_enqueue_style( 'fullcalendar');
[772] Fix | Delete
//wp_enqueue_style( 'fullcalendar_daygrid');
[773] Fix | Delete
//wp_enqueue_style( 'fullcalendar_timegrid');
[774] Fix | Delete
//wp_enqueue_style( 'fullcalendar_list');
[775] Fix | Delete
//wp_enqueue_style( 'epgc');
[776] Fix | Delete
//wp_enqueue_style( 'tippy_light');
[777] Fix | Delete
[778] Fix | Delete
[779] Fix | Delete
wp_register_script('popper',EPGC_ASSET_URL . 'lib/popper.min.js', null, EMBEDPRESS_VERSION, true);
[780] Fix | Delete
wp_register_script('tippy',EPGC_ASSET_URL . 'lib/tippy/tippy-bundle.umd.min.js', ['popper'], EMBEDPRESS_VERSION, true);
[781] Fix | Delete
wp_register_script('my_moment',EPGC_ASSET_URL . 'lib/moment/moment-with-locales.min.js', null, EMBEDPRESS_VERSION, true);
[782] Fix | Delete
wp_register_script('my_moment_timezone',EPGC_ASSET_URL . 'lib/moment/moment-timezone-with-data.min.js', ['my_moment'], EMBEDPRESS_VERSION, true);
[783] Fix | Delete
wp_register_script('fullcalendar',EPGC_ASSET_URL . 'lib/fullcalendar4/core/main.min.js', ['my_moment_timezone'], EMBEDPRESS_VERSION, true);
[784] Fix | Delete
wp_register_script('fullcalendar_moment',EPGC_ASSET_URL . 'lib/fullcalendar4/moment/main.min.js', ['fullcalendar'], EMBEDPRESS_VERSION, true);
[785] Fix | Delete
wp_register_script('fullcalendar_moment_timezone',EPGC_ASSET_URL . 'lib/fullcalendar4/moment-timezone/main.min.js', ['fullcalendar_moment'], EMBEDPRESS_VERSION, true);
[786] Fix | Delete
wp_register_script('fullcalendar_daygrid',EPGC_ASSET_URL . 'lib/fullcalendar4/daygrid/main.min.js', ['fullcalendar'], EMBEDPRESS_VERSION, true);
[787] Fix | Delete
wp_register_script('fullcalendar_timegrid',EPGC_ASSET_URL . 'lib/fullcalendar4/timegrid/main.min.js', ['fullcalendar_daygrid'], EMBEDPRESS_VERSION, true);
[788] Fix | Delete
wp_register_script('fullcalendar_list',EPGC_ASSET_URL . 'lib/fullcalendar4/list/main.min.js', ['fullcalendar'], EMBEDPRESS_VERSION, true);
[789] Fix | Delete
wp_register_script('fullcalendar_locales',EPGC_ASSET_URL . 'lib/fullcalendar4/core/locales-all.min.js',['fullcalendar'], EMBEDPRESS_VERSION, true);
[790] Fix | Delete
wp_register_script('epgc', EPGC_ASSET_URL . 'js/main.js',['fullcalendar'], EMBEDPRESS_VERSION, true);
[791] Fix | Delete
[792] Fix | Delete
//wp_enqueue_script('popper');
[793] Fix | Delete
//wp_enqueue_script('my_moment');
[794] Fix | Delete
//wp_enqueue_script('my_moment_timezone');
[795] Fix | Delete
//wp_enqueue_script('fullcalendar');
[796] Fix | Delete
//wp_enqueue_script('fullcalendar_moment');
[797] Fix | Delete
//wp_enqueue_script('fullcalendar_moment_timezone');
[798] Fix | Delete
//wp_enqueue_script('fullcalendar_daygrid');
[799] Fix | Delete
//wp_enqueue_script('fullcalendar_timegrid');
[800] Fix | Delete
//wp_enqueue_script('fullcalendar_list');
[801] Fix | Delete
//wp_enqueue_script('fullcalendar_locales');
[802] Fix | Delete
//wp_enqueue_script('epgc');
[803] Fix | Delete
[804] Fix | Delete
$nonce = wp_create_nonce('epgc_nonce');
[805] Fix | Delete
wp_localize_script('epgc', 'epgc_object', [
[806] Fix | Delete
'ajax_url' => admin_url('admin-ajax.php'),
[807] Fix | Delete
'nonce' => $nonce,
[808] Fix | Delete
'trans' => [
[809] Fix | Delete
'all_day' => __('All day', 'embedpress'),
[810] Fix | Delete
'created_by' => __('Created by', 'embedpress'),
[811] Fix | Delete
'go_to_event' => __('Go to event', 'embedpress'),
[812] Fix | Delete
'unknown_error' => __('Unknown error', 'embedpress'),
[813] Fix | Delete
'request_error' => __('Request error', 'embedpress'),
[814] Fix | Delete
'loading' => __('Loading', 'embedpress')
[815] Fix | Delete
]
[816] Fix | Delete
]);
[817] Fix | Delete
[818] Fix | Delete
}
[819] Fix | Delete
[820] Fix | Delete
public static function remove_private_data() {
[821] Fix | Delete
if ( ! isset( $_POST['epgc_remove_private_data'] ) || ! wp_verify_nonce( $_POST['epgc_remove_private_data'], 'epgc_remove_private' ) || !current_user_can('manage_options')) {
[822] Fix | Delete
print 'Sorry, your nonce did not verify.';
[823] Fix | Delete
exit;
[824] Fix | Delete
} else {
[825] Fix | Delete
self::delete_plugin_data('private');
[826] Fix | Delete
self::add_notice(EPGC_NOTICES_REMOVE_SUCCESS, 'success', true);
[827] Fix | Delete
exit;
[828] Fix | Delete
}
[829] Fix | Delete
}
[830] Fix | Delete
[831] Fix | Delete
public static function admin_post_remove() {
[832] Fix | Delete
[833] Fix | Delete
if ( ! isset( $_POST['epgc_remove_private_data'] ) || ! wp_verify_nonce( $_POST['epgc_remove_private_data'], 'epgc_remove_private' ) || !current_user_can('manage_options')) {
[834] Fix | Delete
print 'Sorry, your nonce did not verify.';
[835] Fix | Delete
exit;
[836] Fix | Delete
} else {
[837] Fix | Delete
[838] Fix | Delete
self::delete_plugin_data();
[839] Fix | Delete
self::add_notice(EPGC_NOTICES_REMOVE_SUCCESS, 'success', true);
[840] Fix | Delete
exit;
[841] Fix | Delete
}
[842] Fix | Delete
[843] Fix | Delete
}
[844] Fix | Delete
public static function admin_post_revoke() {
[845] Fix | Delete
try {
[846] Fix | Delete
$client = self::getGoogleClient();
[847] Fix | Delete
$accessToken = self::getDecoded('epgc_access_token');
[848] Fix | Delete
if (!empty($accessToken)) {
[849] Fix | Delete
$client->setAccessTokenInfo($accessToken);
[850] Fix | Delete
}
[851] Fix | Delete
$refreshToken = get_option("epgc_refresh_token");
[852] Fix | Delete
if (!empty($refreshToken)) {
[853] Fix | Delete
$client->setRefreshToken($refreshToken);
[854] Fix | Delete
}
[855] Fix | Delete
if (empty($accessToken) && empty($refreshToken)) {
[856] Fix | Delete
throw new Exception(EPGC_ERRORS_ACCESS_REFRESH_TOKEN_MISSING);
[857] Fix | Delete
}
[858] Fix | Delete
$client->revoke();
[859] Fix | Delete
// Clear access and refresh tokens
[860] Fix | Delete
self::delete_plugin_data('private');
[861] Fix | Delete
self::add_notice(EPGC_NOTICES_REVOKE_SUCCESS, 'success', true);
[862] Fix | Delete
exit;
[863] Fix | Delete
} catch (Exception $ex) {
[864] Fix | Delete
self::embedpress_die($ex);
[865] Fix | Delete
}
[866] Fix | Delete
}
[867] Fix | Delete
public static function admin_post_authorize() {
[868] Fix | Delete
if ( ! isset( $_POST['epgc_authorize_data'] ) || ! wp_verify_nonce( $_POST['epgc_authorize_data'], 'epgc_authorize' ) || !current_user_can('manage_options')) {
[869] Fix | Delete
print 'Sorry, your nonce did not verify.';
[870] Fix | Delete
exit;
[871] Fix | Delete
} else {
[872] Fix | Delete
try {
[873] Fix | Delete
$client = self::getGoogleClient();
[874] Fix | Delete
$client->authorize();
[875] Fix | Delete
exit;
[876] Fix | Delete
} catch (Exception $ex) {
[877] Fix | Delete
self::embedpress_die($ex);
[878] Fix | Delete
}
[879] Fix | Delete
}
[880] Fix | Delete
[881] Fix | Delete
}
[882] Fix | Delete
[883] Fix | Delete
public static function fetch_calendar() {
[884] Fix | Delete
if ( empty( $_GET['page']) || 'embedpress' !== $_GET['page'] ) {
[885] Fix | Delete
return;
[886] Fix | Delete
}
[887] Fix | Delete
[888] Fix | Delete
if ( !current_user_can( 'manage_options') ) {
[889] Fix | Delete
return;
[890] Fix | Delete
}
[891] Fix | Delete
if (!empty($_GET['code'])) {
[892] Fix | Delete
// Redirect from Google authorize with code that we can use to get access and refresh tokens.
[893] Fix | Delete
try {
[894] Fix | Delete
$client = self::getGoogleClient();
[895] Fix | Delete
// This will also set the access and refresh tokens on the client
[896] Fix | Delete
// and call the token callback we have set to save them in the options table.
[897] Fix | Delete
$client->handleCodeRedirect();
[898] Fix | Delete
$service = new Embedpress_GoogleCalendarClient($client);
[899] Fix | Delete
$items = $service->getCalendarList();
[900] Fix | Delete
self::sort_calendars($items);
[901] Fix | Delete
[902] Fix | Delete
update_option('epgc_calendarlist', self::getPrettyJSONString($items), false);
[903] Fix | Delete
wp_redirect(EPGC_REDIRECT_URL);
[904] Fix | Delete
exit;
[905] Fix | Delete
} catch (Exception $ex) {
[906] Fix | Delete
self::embedpress_die($ex);
[907] Fix | Delete
}
[908] Fix | Delete
[909] Fix | Delete
}
[910] Fix | Delete
[911] Fix | Delete
$clientSecretError = '';
[912] Fix | Delete
$clientSecret = self::get_valid_client_secret($clientSecretError);
[913] Fix | Delete
[914] Fix | Delete
$accessToken = self::getDecoded('epgc_access_token');
[915] Fix | Delete
[916] Fix | Delete
if (empty($clientSecret) || !empty($clientSecretError)) {
[917] Fix | Delete
update_option('epgc_selected_calendar_ids', [], false);
[918] Fix | Delete
}
[919] Fix | Delete
if (!empty($accessToken)) {
[920] Fix | Delete
// validate_selected_calendar_ids
[921] Fix | Delete
}
[922] Fix | Delete
if (empty($clientSecret) || !empty($clientSecretError)) {
[923] Fix | Delete
// save new data from user input, show them input
[924] Fix | Delete
[925] Fix | Delete
} elseif (self::getDecoded('epgc_calendarlist')) {
[926] Fix | Delete
// show calendar list
[927] Fix | Delete
}
[928] Fix | Delete
[929] Fix | Delete
}
[930] Fix | Delete
}
[931] Fix | Delete
[932] Fix | Delete
[933] Fix | Delete
[934] Fix | Delete
[935] Fix | Delete
[936] Fix | Delete
[937] Fix | Delete
/**
[938] Fix | Delete
* Add 'eepgcnotice' to the removable_query_args filter, so we can set this and
[939] Fix | Delete
* WP will remove it for us. We use this for our custom admin notices. This way
[940] Fix | Delete
* you can add parameters to the URL and check for them, but we won't see them
[941] Fix | Delete
* in the URL.
[942] Fix | Delete
*/
[943] Fix | Delete
add_filter('removable_query_args', [Embedpress_Google_Helper::class, 'removable_query_args']);
[944] Fix | Delete
[945] Fix | Delete
/**
[946] Fix | Delete
* Check for 'epgcnotice' parameter and show admin notice if we have a option.
[947] Fix | Delete
*/
[948] Fix | Delete
add_action('admin_init', [Embedpress_Google_Helper::class,'notices_init']);
[949] Fix | Delete
[950] Fix | Delete
/**
[951] Fix | Delete
* Handle AJAX request from frontend.
[952] Fix | Delete
*/
[953] Fix | Delete
add_action('wp_ajax_epgc_ajax_get_calendar', [Embedpress_Google_Helper::class, 'ajax_get_calendar']);
[954] Fix | Delete
add_action('wp_ajax_nopriv_epgc_ajax_get_calendar', [Embedpress_Google_Helper::class, 'ajax_get_calendar']);
[955] Fix | Delete
[956] Fix | Delete
add_action('admin_post_epgc_calendarlist', [Embedpress_Google_Helper::class,'admin_post_calendarlist']);
[957] Fix | Delete
[958] Fix | Delete
[959] Fix | Delete
add_action('admin_post_epgc_colorlist', [Embedpress_Google_Helper::class, 'admin_post_colorlist']);
[960] Fix | Delete
add_action('admin_post_epgc_deletecache', [Embedpress_Google_Helper::class, 'admin_post_deletecache']);
[961] Fix | Delete
[962] Fix | Delete
[963] Fix | Delete
/**
[964] Fix | Delete
* Admin post action to verify if we have valid access and refresh token.
[965] Fix | Delete
*/
[966] Fix | Delete
add_action('admin_post_epgc_verify', [Embedpress_Google_Helper::class, 'admin_post_verify']);
[967] Fix | Delete
[968] Fix | Delete
add_shortcode( 'embedpress_calendar', [Embedpress_Google_Helper::class, 'shortcode']);
[969] Fix | Delete
add_action('wp_enqueue_scripts', [Embedpress_Google_Helper::class, 'enqueue_scripts'], EPGC_ENQUEUE_ACTION_PRIORITY);
[970] Fix | Delete
[971] Fix | Delete
add_action('admin_post_epgc_remove_private', [Embedpress_Google_Helper::class, 'remove_private_data']);
[972] Fix | Delete
[973] Fix | Delete
/**
[974] Fix | Delete
* Admin post action to authorize access.
[975] Fix | Delete
*/
[976] Fix | Delete
add_action('admin_post_epgc_authorize', [Embedpress_Google_Helper::class, 'admin_post_authorize']);
[977] Fix | Delete
[978] Fix | Delete
add_action('admin_init', [Embedpress_Google_Helper::class, 'fetch_calendar']);
[979] Fix | Delete
[980] Fix | Delete
[981] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function