mirror of
https://github.com/SuiteCRM/SuiteCRM-Core.git
synced 2026-07-28 23:36:57 +08:00
105 lines
3.9 KiB
PHP
105 lines
3.9 KiB
PHP
<?php
|
|
/**
|
|
* SuiteCRM is a customer relationship management program developed by SuiteCRM Ltd.
|
|
* Copyright (C) 2025 SuiteCRM Ltd.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it under
|
|
* the terms of the GNU Affero General Public License version 3 as published by the
|
|
* Free Software Foundation with the addition of the following permission added
|
|
* to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
|
|
* IN WHICH THE COPYRIGHT IS OWNED BY SUITECRM, SUITECRM DISCLAIMS THE
|
|
* WARRANTY OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but WITHOUT
|
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU Affero General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* In accordance with Section 7(b) of the GNU Affero General Public License
|
|
* version 3, these Appropriate Legal Notices must retain the display of the
|
|
* "Supercharged by SuiteCRM" logo. If the display of the logos is not reasonably
|
|
* feasible for technical reasons, the Appropriate Legal Notices must display
|
|
* the words "Supercharged by SuiteCRM".
|
|
*/
|
|
|
|
if (!defined('sugarEntry') || !sugarEntry) {
|
|
die('Not A Valid Entry Point');
|
|
}
|
|
|
|
global $current_user, $mod_strings, $app_strings;
|
|
|
|
if (!is_admin($current_user)) {
|
|
echo $app_strings['ERR_NOT_ADMIN'];
|
|
return;
|
|
}
|
|
|
|
require_once 'include/CalendarSync/CalendarSync.php';
|
|
|
|
$calendarSync = CalendarSync::getInstance();
|
|
|
|
$message = '';
|
|
$success = true;
|
|
|
|
if (($_POST['form_action'] ?? '') === 'manual_trigger') {
|
|
$triggerSuccess = $calendarSync->syncAllCalendarAccounts(true);
|
|
$success = $triggerSuccess;
|
|
$message = $triggerSuccess
|
|
? $mod_strings['LBL_CALENDAR_SYNC_MANUAL_TRIGGER_SUCCESS']
|
|
: $mod_strings['LBL_CALENDAR_SYNC_MANUAL_TRIGGER_FAILED'];
|
|
}
|
|
|
|
if (($_POST['form_action'] ?? '') === 'save') {
|
|
$configSuccess = $calendarSync->saveConfig($_POST);
|
|
|
|
$success = $configSuccess;
|
|
$message = $configSuccess
|
|
? $mod_strings['LBL_CALENDAR_SYNC_SETTINGS_SAVED_SUCCESS']
|
|
: $mod_strings['LBL_CALENDAR_SYNC_SETTINGS_SAVED_FAILED'];
|
|
}
|
|
|
|
$conflictResolutionOptions = [];
|
|
foreach ($calendarSync->getConflictResolutionCases() as $case) {
|
|
$labelKey = 'LBL_CALENDAR_SYNC_CONFLICT_' . strtoupper($case->value);
|
|
$conflictResolutionOptions[$case->value] = $mod_strings[$labelKey] ?? $case->value;
|
|
}
|
|
|
|
$scheduler = $calendarSync->getScheduler();
|
|
|
|
global $timedate;
|
|
$lastScheduledRunUserTz = null;
|
|
if (!empty($scheduler?->last_run)) {
|
|
$lastScheduledRunUserTz = $timedate->to_display_date_time($scheduler->last_run);
|
|
}
|
|
$lastManualRunTime = null;
|
|
$lastManualRunRaw = $calendarSync->getConfig()['last_manual_run_time'] ?? null;
|
|
if (!empty($lastManualRunRaw)) {
|
|
$lastManualRunTime = $timedate->to_display_date_time($lastManualRunRaw);
|
|
}
|
|
|
|
$schedulerStatus = [
|
|
'id' => $scheduler?->id,
|
|
'enabled' => $scheduler?->status === 'Active',
|
|
'lastScheduledRunTime' => $lastScheduledRunUserTz,
|
|
'exists' => (bool)$scheduler
|
|
];
|
|
|
|
$smarty = new Sugar_Smarty();
|
|
$smarty->assign('MOD', $mod_strings);
|
|
$smarty->assign('APP', $app_strings);
|
|
$smarty->assign('status', $schedulerStatus);
|
|
$smarty->assign('lastManualRunTime', $lastManualRunTime);
|
|
$smarty->assign('message', $message);
|
|
$smarty->assign('success', $success);
|
|
$smarty->assign('calendarSyncConfig', $calendarSync->getConfig());
|
|
$smarty->assign('conflictResolutionOptions', $conflictResolutionOptions);
|
|
|
|
$db = DBManagerFactory::getInstance();
|
|
$migrationStatusRow = $db->fetchByAssoc($db->query(
|
|
"SELECT value FROM config WHERE category = 'calendar_sync' AND name = 'google_sync_migration_status' LIMIT 1"
|
|
));
|
|
$smarty->assign('googleSyncMigrationStatus', $migrationStatusRow['value'] ?? null);
|
|
|
|
$smarty->display('modules/Administration/templates/CalendarSyncSettings.tpl');
|