wpsslc_google_api();
}
/**
* Main WPSSLC_Plugin_Settings Instance.
*
* @since 1.0.0
*
* @return instance
*/
public static function instance() {
if ( null === self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Get an instance of WPSSLC_Google_API_Functions class.
*
* @return WPSSLC_Google_API_Functions class instance
*/
public static function wpsslc_google_api() {
if ( null === self::$instance_api ) {
self::$instance_api = new WPSSLC_Google_API_Functions();
}
return self::$instance_api;
}
/**
* WPSSLC Plugin Activation Hook
*/
public function wpsslc_activation() {
update_option( 'active_contactsheets', 1 );
}
/**
* WPSSLC Plugin Deactivation Hook
*/
public function wpsslc_deactivation() {
update_option( 'active_contactsheets', '' );
}
/**
* Register a plugin menu page.
*/
public function wpsslc_menu_page() {
global $admin_page_hooks, $_parent_pages;
if ( ! isset( $admin_page_hooks['wpsyncsheets_lite'] ) ) {
$wpsslc_page = add_menu_page(
esc_attr__( 'WPSyncSheets Lite', 'wpssc' ),
'WPSyncSheets Lite',
'manage_options',
'wpsyncsheets_lite',
'',
WPSSLC_URL . 'assets/images/menu-icon.svg',
90
);
}
add_submenu_page( 'wpsyncsheets_lite', 'WPSyncSheets Lite For Contact Form 7', 'For Contact Form 7', 'manage_options', 'wpsyncsheets-contact-form-7', array( $this, 'wpsslc_plugin_page' ), 1 );
if ( ! isset( $_parent_pages['documentation'] ) ) {
add_submenu_page( 'wpsyncsheets_lite', 'Documentation', '
Documentation
', 'manage_options', 'documentation', array( $this, 'wpsslc_handle_external_redirects' ), 20 );
}
$this->remove_duplicate_submenu_page();
}
/**
* Documentation and Support Page Link.
*
* Redirect the documentation and support page.
*
* @since 1.0.0
* @access public
*/
public function wpsslc_handle_external_redirects() {
// phpcs:ignore
if ( empty( $_GET['page'] ) ) {
return;
}
// phpcs:ignore
if ( 'documentation' === $_GET['page'] ) {
// phpcs:ignore
wp_redirect( WPSSLC_DOC_MENU_URL );
die;
}
}
/**
* Remove duplicate submenu
* Submenu page hack: Remove the duplicate WPSyncSheets Plugin link on subpages
*/
public function remove_duplicate_submenu_page() {
remove_submenu_page( 'wpsyncsheets_lite', 'wpsyncsheets_lite' );
}
/**
* Enqueue css and js files
*/
public static function wpsslc_load_custom_wp_admin_style() {
// @codingStandardsIgnoreStart.
if ( is_admin() && ( isset( $_GET['page'] ) && ( ( 'wpcf7' === sanitize_text_field( wp_unslash( $_GET['page'] ) ) ) || ( 'wpsyncsheets-contact-form-7' === sanitize_text_field( wp_unslash( $_GET['page'] ) ) ) || ( 'wpcf7-new' === sanitize_text_field( wp_unslash( $_GET['page'] ) ) ) ) ) ) {
// @codingStandardsIgnoreEnd.
wp_enqueue_script( 'wpsslc-admin-setting', WPSSLC_URL . 'assets/js/wpsslc-admin-setting.js', WPSSLC_VERSION, true, false );
wp_localize_script( 'wpsslc-admin-setting', 'ajax_login_object', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
wp_enqueue_style( 'wpsslc-admin-setting', WPSSLC_URL . 'assets/css/wpsslc-admin-setting.css', WPSSLC_VERSION, true );
}
}
/**
* Enqueue css and js files
*/
public function wpsslc_selectively_enqueue_admin_script() {
wp_enqueue_script( 'wpsslc-general-script', WPSSLC_URL . 'assets/js/wpsslc-general.js', WPSSLC_VERSION, true, false );
}
/**
* Show row meta on the plugin screen.
*
* @param mixed $wpsslc_links Plugin Row Meta.
* @param mixed $wpsslc_file Plugin Base file.
* @return array
*/
public static function wpsslc_plugin_row_meta( $wpsslc_links, $wpsslc_file ) {
if ( 'contactsheets-lite/wpsyncsheets-lite-contact-form-7.php' === (string) $wpsslc_file ) {
$wpsslc_row_meta = array(
'docs' => '' . __( 'View Documentation', 'wpssc' ) . '',
);
return array_merge( $wpsslc_links, $wpsslc_row_meta );
}
return (array) $wpsslc_links;
}
/**
* Pugin settings page
*/
public static function wpsslc_plugin_page() {
$wpsslc_error = '';
// Google API Settings Tab.
if ( isset( $_POST['submit'] ) ) {
if ( isset( $_POST['client_token'] ) ) {
$wpsslc_clienttoken = sanitize_text_field( wp_unslash( $_POST['client_token'] ) );
} else {
$wpsslc_clienttoken = '';
}
if ( isset( $_POST['client_id'] ) && isset( $_POST['client_secret'] ) ) {
$wpsslc_google_settings = array( sanitize_text_field( wp_unslash( $_POST['client_id'] ) ), sanitize_text_field( wp_unslash( $_POST['client_secret'] ) ), $wpsslc_clienttoken );
} else {
$wpsslc_google_settings_value = self::$instance_api->wpsslc_option( 'wpssc_google_settings' );
$wpsslc_google_settings = array( $wpsslc_google_settings_value[0], $wpsslc_google_settings_value[1], $wpsslc_clienttoken );
}
self::$instance_api->wpsslc_update_option( 'wpssc_google_settings', $wpsslc_google_settings );
}
if ( isset( $_POST['revoke'] ) ) {
if ( ! isset( $_POST['wpsslc_api_settings'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['wpsslc_api_settings'] ) ), 'save_api_settings' ) ) {
$wpsslc_error = '' . esc_html__( 'Error: Sorry, your nonce did not verify.', 'wpssc' ) . '';
} else {
$wpsslc_google_settings = self::$instance_api->wpsslc_option( 'wpssc_google_settings' );
$wpsslc_google_settings[2] = '';
self::$instance_api->wpsslc_update_option( 'wpssc_google_settings', $wpsslc_google_settings );
self::$instance_api->wpsslc_update_option( 'wpssc_google_accessToken', '' );
}
}
$wpsslc_google_settings_value = self::$instance_api->wpsslc_option( 'wpssc_google_settings' );
if ( isset( $wpsslc_google_settings_value[2] ) && ! empty( $wpsslc_google_settings_value[2] ) ) {
if ( ! self::$instance_api->getClient() ) {
$wpsslc_error = self::$instance_api->getClient( 1 );
if ( 'Invalid token format' === (string) $wpsslc_error || 'invalid_grant' === (string) $wpsslc_error ) {
$wpsslc_error = '' . esc_html__( 'Error: Invalid Token - Revoke Token with below settings and try again.', 'wpssc' ) . '
';
} else {
$wpsslc_error = 'Error: ' . $wpsslc_error . '
';
}
}
}
?>