Skip to content
Open
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/framework.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
require APP_PATH.'lib/api.php';
require APP_PATH.'lib/webdav_formats.php';
require APP_PATH.'lib/js_libs.php';
require APP_PATH.'lib/version.php';

require_once APP_PATH.'modules/core/functions.php';

Expand Down
3 changes: 3 additions & 0 deletions lib/version.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<?php

define('CYPHT_VERSION', '2.5.2');
4 changes: 2 additions & 2 deletions modules/account/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@
add_handler('accounts', 'process_delete_account', true, 'account', 'process_create_account', 'after');
add_handler('accounts', 'check_internal_users', true, 'account', 'login', 'after');
add_handler('accounts', 'account_list', true, 'account', 'check_internal_users', 'after');
add_output('accounts', 'create_form', true, 'account', 'content_section_start', 'after');
add_output('accounts', 'create_form', true, 'account', 'version_upgrade_checker', 'after');
add_output('accounts', 'user_list', true, 'account', 'create_form', 'after');

setup_base_page('change_password', 'core');
add_handler('change_password', 'process_change_password', true, 'account', 'load_user_data', 'after');
add_handler('change_password', 'check_internal_users', true, 'account', 'login', 'after');
add_output('change_password', 'change_password', true, 'account', 'content_section_start', 'after');
add_output('change_password', 'change_password', true, 'account', 'version_upgrade_checker', 'after');

/* folder list link */
add_handler('ajax_hm_folders', 'check_internal_users', true, 'account', 'login', 'after');
Expand Down
2 changes: 1 addition & 1 deletion modules/advanced_search/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
/* advanced search page */
setup_base_page('advanced_search', 'core');
add_handler('advanced_search', 'advanced_search_prepare', true, 'advanced_search', 'date', 'after');
add_output('advanced_search', 'advanced_search_content_start', true, 'advanced_search', 'content_section_start', 'after');
add_output('advanced_search', 'advanced_search_content_start', true, 'advanced_search', 'version_upgrade_checker', 'after');
add_output('advanced_search', 'advanced_search_form_start', true, 'advanced_search', 'advanced_search_content_start', 'after');
add_output('advanced_search', 'advanced_search_form_content', true, 'advanced_search', 'advanced_search_form_start', 'after');
add_output('advanced_search', 'advanced_search_form_end', true, 'advanced_search', 'advanced_search_form_content', 'after');
Expand Down
4 changes: 2 additions & 2 deletions modules/calendar/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
add_handler('calendar', 'process_delete_event', true, 'calendar', 'get_calendar_date', 'after');
add_handler('ajax_imap_message_content', 'vcalendar_check', true, 'calendar', 'imap_message_content', 'after');
/*add_output('ajax_imap_message_content', 'vcalendar_add_output', true, 'calendar', 'filter_message_headers', 'after');*/
add_output('calendar', 'calendar_content', true, 'calendar', 'content_section_start', 'after');
add_output('calendar', 'add_cal_event_form', true, 'calendar', 'content_section_start', 'after');
add_output('calendar', 'calendar_content', true, 'calendar', 'version_upgrade_checker', 'after');
add_output('calendar', 'add_cal_event_form', true, 'calendar', 'version_upgrade_checker', 'after');
add_output('ajax_hm_folders', 'calendar_page_link', true, 'calendar', 'main_menu_content', 'before');

return array(
Expand Down
2 changes: 1 addition & 1 deletion modules/contacts/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

add_handler('contacts', 'load_contacts', true, 'contacts', 'load_user_data', 'after');
add_handler('contacts', 'check_imported_contacts', true, 'contacts', 'load_user_data', 'after');
add_output('contacts', 'contacts_content_start', true, 'contacts', 'content_section_start', 'after');
add_output('contacts', 'contacts_content_start', true, 'contacts', 'version_upgrade_checker', 'after');
add_output('contacts', 'contacts_list', true, 'contacts', 'contacts_content_start', 'after');
add_output('contacts', 'contacts_content_end', true, 'contacts', 'contacts_list', 'after');
add_output('settings', 'contact_auto_collect_setting', true, 'contacts', 'max_google_contacts_number', 'after');
Expand Down
2 changes: 2 additions & 0 deletions modules/core/functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,7 @@ function setup_base_page($name, $source=false, $use_layout=true) {
add_handler($name, 'save_user_data', true, $source);
add_handler($name, 'logout', true, $source);
add_handler($name, 'http_headers', true, $source);
add_handler($name, 'version_upgrade_checker', true, $source);

add_output($name, 'header_start', false, $source);
add_output($name, 'header_css', false, $source);
Expand All @@ -442,6 +443,7 @@ function setup_base_page($name, $source=false, $use_layout=true) {
add_output($name, 'folder_list_start', true, $source);
add_output($name, 'folder_list_end', true, $source);
add_output($name, 'content_section_start', true, $source);
add_output($name, 'version_upgrade_checker', true, $source, 'content_section_start', 'after');
add_output($name, 'content_section_end', true, $source);
add_output($name, 'modals', true, $source);
add_output($name, 'save_reminder', true, $source);
Expand Down
28 changes: 28 additions & 0 deletions modules/core/handler_modules.php
Original file line number Diff line number Diff line change
Expand Up @@ -1207,3 +1207,31 @@ public function process() {
}
}
}

class Hm_Handler_version_upgrade_checker extends Hm_Handler_Module {

public function process()
{
if ($this->session->get('latest_version')) {
$latestVersion = $this->session->get('latest_version');
} else {
$api = new Hm_API_Curl();
$data = $api->command('https://api.github.com/repos/cypht-org/cypht/releases');

if ($api->last_status == 200) {
$latestRelease = reset($data);
$latestVersion = substr($latestRelease['tag_name'], 1);

$this->session->set('latest_version', $latestVersion);
}
}

if (version_compare(CYPHT_VERSION, $latestVersion, '<')) {
$needUpgrade = true;
} else {
$needUpgrade = false;
}
$this->out('need_upgrade', $needUpgrade);
$this->out('latest_version', $latestVersion);
}
}
17 changes: 17 additions & 0 deletions modules/core/output_modules.php
Original file line number Diff line number Diff line change
Expand Up @@ -2514,3 +2514,20 @@ protected function output() {
$this->out('formatted_message_list', $messageList);
}
}

class Hm_Output_version_upgrade_checker extends Hm_Output_Module {
protected function output()
{
if (! $this->get('need_upgrade')) return '';

$latestVersion = $this->get('latest_version');

return '
<div class="alert alert-info alert-dismissible fade align-items-center" role="alert" id="cypht-upgrade-alert">
<i class="bi bi-info-circle-fill me-2"></i>
You are currently running Cypht version '.CYPHT_VERSION.'. A higher version (<b>'. $latestVersion .'</b>) is available.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
';
}
}
16 changes: 8 additions & 8 deletions modules/core/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
/* homepage */
setup_base_page('home');
add_handler('home', 'check_missing_passwords', true, 'core', 'load_user_data', 'after');
add_output('home', 'home_heading', true, 'core', 'content_section_start', 'after');
add_output('home', 'home_heading', true, 'core', 'version_upgrade_checker', 'after');
add_output('home', 'home_password_dialogs', true, 'core', 'home_heading', 'after');

/* servers page */
setup_base_page('servers');
add_handler('servers', 'reload_folder_cookie', true, 'core', 'save_user_data', 'after');
add_output('servers', 'server_content_start', true, 'core', 'content_section_start', 'after');
add_output('servers', 'server_content_start', true, 'core', 'version_upgrade_checker', 'after');
add_output('servers', 'server_config_stepper', true, 'core', 'server_content_start', 'after');
add_output('servers', 'server_config_stepper_end_part', true, 'core', 'server_config_stepper', 'after');
add_output('servers', 'server_config_stepper_accordion_end_part', true, 'core', 'server_config_stepper_end_part', 'after');
Expand All @@ -32,7 +32,7 @@
/* save settings */
setup_base_page('save');
add_handler('save', 'process_save_form', true, 'core', 'load_user_data', 'after');
add_output('save', 'save_form', true, 'core', 'content_section_start', 'after');
add_output('save', 'save_form', true, 'core', 'version_upgrade_checker', 'after');

/* settings */
setup_base_page('settings');
Expand Down Expand Up @@ -69,7 +69,7 @@
add_handler('settings', 'reload_folder_cookie', true, 'core', 'save_user_settings', 'after');
add_handler('settings', 'privacy_settings', true, 'core', 'date', 'after');

add_output('settings', 'start_settings_form', true, 'core', 'content_section_start', 'after');
add_output('settings', 'start_settings_form', true, 'core', 'version_upgrade_checker', 'after');
add_output('settings', 'start_search_settings', true, 'core', 'start_settings_form', 'after');
add_output('settings', 'start_general_settings', true, 'core', 'start_search_settings', 'after');
add_output('settings', 'language_setting', true, 'core', 'start_general_settings', 'after');
Expand Down Expand Up @@ -113,14 +113,14 @@
/* message list page */
setup_base_page('message_list');
add_handler('message_list', 'default_sort_order_setting', true, 'core', 'load_user_data', 'after');
add_output('message_list', 'message_list_heading', true, 'core', 'content_section_start', 'after');
add_output('message_list', 'message_list_heading', true, 'core', 'version_upgrade_checker', 'after');
add_output('message_list', 'message_list_start', true, 'core', 'message_list_heading', 'after');
add_output('message_list', 'message_list_end', true, 'core', 'message_list_start', 'after');

/* search page */
setup_base_page('search');
add_handler('search', 'default_sort_order_setting', true, 'core', 'load_user_data', 'after');
add_output('search', 'search_content_start', true, 'core', 'content_section_start', 'after');
add_output('search', 'search_content_start', true, 'core', 'version_upgrade_checker', 'after');
add_output('search', 'search_form_start', true, 'core', 'search_content_start', 'after');
add_output('search', 'search_form_content', true, 'core', 'search_form_start', 'after');
add_output('search', 'search_form_end', true, 'core', 'search_form_content', 'after');
Expand All @@ -139,12 +139,12 @@

/* message view page */
setup_base_page('message');
add_output('message', 'message_start', true, 'core', 'content_section_start', 'after');
add_output('message', 'message_start', true, 'core', 'version_upgrade_checker', 'after');
add_output('message', 'message_end', true, 'core', 'message_start', 'after');

/* not-found page data and output */
setup_base_page('notfound');
add_output('notfound', 'notfound_content', true, 'core', 'content_section_start', 'after');
add_output('notfound', 'notfound_content', true, 'core', 'version_upgrade_checker', 'after');

/* message action ajax request */
setup_base_ajax_page('ajax_message_action', 'core');
Expand Down
11 changes: 11 additions & 0 deletions modules/core/site.js
Original file line number Diff line number Diff line change
Expand Up @@ -2605,3 +2605,14 @@ document.addEventListener("show.bs.dropdown", function (event) {
});
});

window.addEventListener('page-change', () => {
document.getElementById("cypht-upgrade-alert")?.addEventListener("close.bs.alert", function () {
Hm_Utils.save_to_local_storage('cypht_upgrade_alert_dismissed', '1');
});
if (Hm_Utils.get_from_local_storage('cypht_upgrade_alert_dismissed') !== '1') {
$("#cypht-upgrade-alert").addClass("show");
} else {
$("#cypht-upgrade-alert").addClass("hide");
}
})

4 changes: 2 additions & 2 deletions modules/developer/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
/* info page */
setup_base_page('info', 'core');
add_handler('info', 'process_server_info', true, 'developer', 'load_user_data', 'after');
add_output('info', 'info_heading', true, 'developer', 'content_section_start', 'after');
add_output('info', 'info_heading', true, 'developer', 'version_upgrade_checker', 'after');
add_output('info', 'server_information', true, 'developer', 'info_heading', 'after');
add_output('info', 'server_status_start', true, 'developer', 'server_information', 'after');
add_output('info', 'server_status_end', true, 'developer', 'server_status_start', 'after');
Expand All @@ -26,7 +26,7 @@

/* developer docs */
setup_base_page('dev', 'core');
add_output('dev', 'dev_content', true, 'developer', 'content_section_start', 'after');
add_output('dev', 'dev_content', true, 'developer', 'version_upgrade_checker', 'after');

/* add pages */
return array(
Expand Down
4 changes: 2 additions & 2 deletions modules/highlights/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@
add_handler('highlights', 'load_feeds_from_config', true, 'feeds', 'load_user_data', 'after');
add_handler('highlights', 'highlight_process_form', true, 'highlights', 'language', 'after');
add_handler('highlights', 'highlight_page_data', true, 'highlights', 'highlight_process_form', 'after');
add_output('highlights', 'highlight_config_page', true, 'highlights', 'content_section_start', 'after');
add_output('highlights', 'highlight_config_page', true, 'highlights', 'version_upgrade_checker', 'after');

add_handler('message_list', 'highlight_list_data', true, 'highlights', 'load_user_data', 'after');
add_output('message_list', 'highlight_css', true, 'highlights', 'content_section_start', 'before');
add_output('message_list', 'highlight_css', true, 'highlights', 'version_upgrade_checker', 'before');

add_output('ajax_hm_folders', 'highlight_link', true, 'highlights', 'settings_save_link', 'after');

Expand Down
2 changes: 1 addition & 1 deletion modules/history/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

setup_base_page('history', 'core');
add_handler('history', 'load_message_history', true, 'history', 'save_user_data', 'before');
add_output('history', 'history_heading', true, 'history', 'content_section_start', 'after');
add_output('history', 'history_heading', true, 'history', 'version_upgrade_checker', 'after');
add_output('history', 'history_content', true, 'history', 'history_heading', 'after');
add_output('history', 'history_footer', true, 'history', 'history_content', 'after');

Expand Down
4 changes: 2 additions & 2 deletions modules/imap_folders/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
setup_base_page('folders', 'core');
add_handler('folders', 'folders_server_id', true, 'imap_folders', 'load_user_data', 'after');
add_handler('folders', 'special_folders', true, 'imap_folders', 'folders_server_id', 'after');
add_output('folders', 'folders_content_start', true, 'imap_folders', 'content_section_start', 'after');
add_output('folders', 'folders_content_start', true, 'imap_folders', 'version_upgrade_checker', 'after');
add_output('folders', 'folders_server_select', true, 'imap_folders', 'folders_folder_subscription_button', 'after');
add_output('folders', 'folders_create_dialog', true, 'imap_folders', 'folders_server_select', 'after');
add_output('folders', 'folders_rename_dialog', true, 'imap_folders', 'folders_create_dialog', 'after');
Expand Down Expand Up @@ -79,7 +79,7 @@
add_handler('folders_subscription', 'folders_server_id', true, 'imap_folders', 'load_user_data', 'after');
add_handler('folders_subscription', 'special_folders', true, 'imap_folders', 'folders_server_id', 'after');
add_handler('folders_subscription', 'get_only_subscribed_folders_setting', true, 'imap_folders');
add_output('folders_subscription', 'folders_subscription_content_start', true, 'imap_folders', 'content_section_start', 'after');
add_output('folders_subscription', 'folders_subscription_content_start', true, 'imap_folders', 'version_upgrade_checker', 'after');
add_output('folders_subscription', 'folders_server_select', true, 'imap_folders', 'folders_subscription_content_start', 'after');
add_output('folders_subscription', 'folders_folder_subscription', true, 'imap_folders', 'folders_server_select', 'after');

Expand Down
2 changes: 1 addition & 1 deletion modules/keyboard_shortcuts/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
setup_base_page('shortcuts', 'core');
add_handler('shortcuts', 'load_edit_id', true, 'keyboard_shortcuts', 'load_keyboard_shortcuts', 'after');
add_handler('shortcuts', 'process_edit_shortcut', true, 'keyboard_shortcuts', 'load_edit_id', 'after');
add_output('shortcuts', 'start_shortcuts_page', true, 'keyboard_shortcuts', 'content_section_start', 'after');
add_output('shortcuts', 'start_shortcuts_page', true, 'keyboard_shortcuts', 'version_upgrade_checker', 'after');
add_output('shortcuts', 'shortcut_edit_form', true, 'keyboard_shortcuts', 'start_shortcuts_page', 'after');
add_output('shortcuts', 'shortcuts_content', true, 'keyboard_shortcuts', 'shortcut_edit_form', 'after');

Expand Down
2 changes: 1 addition & 1 deletion modules/nasa/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
/* APOD display */
setup_base_page('nasa_apod', 'core');
add_handler('nasa_apod', 'fetch_apod_content', true, 'nasa', 'http_headers', 'after');
add_output('nasa_apod', 'apod_content', true, 'nasa', 'content_section_start', 'after');
add_output('nasa_apod', 'apod_content', true, 'nasa', 'version_upgrade_checker', 'after');

/* folder list entry */
add_handler('ajax_hm_folders', 'nasa_folder_data', true, 'nasa', 'load_user_data', 'after');
Expand Down
2 changes: 1 addition & 1 deletion modules/pgp/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
add_handler('pgp', 'pgp_delete_public_key', true, 'pgp', 'http_headers', 'after');
add_handler('pgp', 'pgp_import_public_key', true, 'pgp', 'pgp_delete_public_key', 'after');
add_handler('pgp', 'load_pgp_data', true, 'pgp', 'pgp_import_public_key', 'after');
add_output('pgp', 'pgp_settings_start', true, 'pgp', 'content_section_start', 'after');
add_output('pgp', 'pgp_settings_start', true, 'pgp', 'version_upgrade_checker', 'after');
add_output('pgp', 'pgp_settings_public_keys', true, 'pgp', 'pgp_settings_start', 'after');
add_output('pgp', 'pgp_settings_private_key', true, 'pgp', 'pgp_settings_public_keys', 'after');
add_output('pgp', 'pgp_settings_end', true, 'pgp', 'pgp_settings_private_key', 'after');
Expand Down
2 changes: 1 addition & 1 deletion modules/profiles/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
add_handler('profiles', 'profile_edit_data', true, 'profiles', 'profile_data', 'after');
add_handler('profiles', 'process_profile_delete', true, 'profiles', 'profile_data', 'after');
add_handler('profiles', 'process_profile_update', true, 'profiles', 'process_profile_delete', 'after');
add_output('profiles', 'profile_edit_form', true, 'profiles', 'content_section_start', 'after');
add_output('profiles', 'profile_edit_form', true, 'profiles', 'version_upgrade_checker', 'after');
add_output('profiles', 'profile_content', true, 'profiles', 'profile_edit_form', 'after');

add_handler('folders', 'load_default_server_from_profiles', true, 'profiles', 'folders_server_id', 'before');
Expand Down
2 changes: 1 addition & 1 deletion modules/recover_settings/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
setup_base_page('recover_settings', 'core');
add_handler('recover_settings', 'reload_folder_cookie', true, 'core', 'save_user_data', 'after');
add_handler('recover_settings', 'process_recover_settings_form', true, 'recover_settings', 'load_user_data', 'after');
add_output('recover_settings', 'recover_settings_page', true, 'recover_settings', 'content_section_start', 'after');
add_output('recover_settings', 'recover_settings_page', true, 'recover_settings', 'version_upgrade_checker', 'after');

add_module_to_all_pages('handler', 'check_for_lost_settings', true, 'recover_settings', 'load_user_data', 'after');
add_handler('ajax_hm_folders', 'check_for_lost_settings', true, 'recover_settings', 'load_user_data', 'after');
Expand Down
4 changes: 2 additions & 2 deletions modules/sievefilters/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
add_handler('ajax_imap_debug', 'sieve_connect', true, 'imap', 'imap_connect', 'after');

// sieve filter
add_output('sieve_filters', 'sievefilters_settings_start', true, 'sievefilters', 'content_section_start', 'after');
add_output('sieve_filters', 'sievefilters_settings_start', true, 'sievefilters', 'version_upgrade_checker', 'after');
add_output('ajax_hm_folders', 'sievefilters_settings_link', true, 'sievefilters', 'settings_menu_end', 'before');
setup_base_ajax_page('ajax_account_sieve_filters', 'core');
add_handler('ajax_account_sieve_filters', 'settings_load_imap', true, 'sievefilters', 'load_user_data', 'after');
Expand All @@ -28,7 +28,7 @@
add_output('ajax_account_sieve_filters', 'check_filter_status', true, 'sievefilters');

// block list
add_output('block_list', 'blocklist_settings_start', true, 'sievefilters', 'content_section_start', 'after');
add_output('block_list', 'blocklist_settings_start', true, 'sievefilters', 'version_upgrade_checker', 'after');
setup_base_ajax_page('ajax_block_account_sieve_filters', 'core');
add_handler('ajax_block_account_sieve_filters', 'settings_load_imap', true, 'sievefilters', 'load_user_data', 'after');
add_handler('ajax_block_account_sieve_filters', 'load_behaviour', true, 'sievefilters', 'settings_load_imap', 'after');
Expand Down
Loading
Loading