<?php /** * Gitium provides automatic git version control and deployment for * your plugins and themes integrated into wp-admin. * * Copyright (C) 2014-2025 PRESSINFRA SRL <ping@presslabs.com> * * Gitium is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * Gitium 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Gitium. If not, see <http://www.gnu.org/licenses/>. * * @package Gitium */ class Gitium_Menu { public $gitium_menu_slug = 'gitium/gitium.php'; public $commits_menu_slug = 'gitium/gitium-commits.php'; public $settings_menu_slug = 'gitium/gitium-settings.php'; public $git = null; public $menu_slug; public $submenu_slug; public function __construct( $menu_slug, $submenu_slug ) { global $git; $this->git = $git; $this->menu_slug = $menu_slug; $this->submenu_slug = $submenu_slug; } public function redirect( $message = '', $success = false, $menu_slug = '' ) { $message_id = substr( md5( str_shuffle( 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789' ) . time() ), 0, 8 ); if ( $message ) { set_transient( 'message_' . $message_id, $message, 900 ); } if ( '' === $menu_slug ) { $menu_slug = $this->menu_slug; } $url = network_admin_url( 'admin.php?page=' . $menu_slug ); $url = esc_url_raw( add_query_arg( array( 'message' => $message_id, 'success' => $success, ), $url ) ); wp_safe_redirect( $url ); exit; } public function success_redirect( $message = '', $menu_slug = '' ) { $this->redirect( $message, true, $menu_slug ); } public function disconnect_repository() { $gitium_disconnect_repo = filter_input(INPUT_POST, 'GitiumSubmitDisconnectRepository', FILTER_SANITIZE_FULL_SPECIAL_CHARS); if ( ! isset( $gitium_disconnect_repo ) ) { return; } check_admin_referer( 'gitium-admin' ); gitium_uninstall_hook(); if ( ! $this->git->remove_remote() ) { $this->redirect( __('Could not remove remote.', 'gitium') ); } $this->success_redirect( __('You are now disconnected from the repository. New key pair generated.', 'gitium') ); } public function show_message() { $get_message = filter_input(INPUT_GET, 'message', FILTER_SANITIZE_FULL_SPECIAL_CHARS); $get_success = filter_input(INPUT_GET, 'success', FILTER_SANITIZE_FULL_SPECIAL_CHARS); if ( isset( $get_message ) && $get_message ) { $type = ( isset( $get_success ) && $get_success == 1 ) ? 'updated' : 'error'; $message = get_transient( 'message_'. $get_message ); if ( $message ) : ?> <div class="<?php echo esc_attr( $type ); ?>"><p><?php echo esc_html( $message ); ?></p></div> <?php endif; } } protected function show_disconnect_repository_button() { ?> <form name="gitium_form_disconnect" id="gitium_form_disconnect" action="" method="POST"> <?php wp_nonce_field( 'gitium-admin' ); ?> <input type="submit" name="GitiumSubmitDisconnectRepository" value='<?php _e( 'Disconnect from repo', 'gitium' ); ?>' class="button secondary" onclick="return confirm('<?php _e( 'Are you sure you want to disconnect from the remote repository?', 'gitium' ); ?>')"/> </form> <?php } }