addQueryArgFilter('softaculous_pro_updater_filter_args'); // Show the text to install the license key add_filter('puc_manual_final_check_link-softaculous-pro', 'softaculous_pro_updater_check_link', 10, 1); softaculous_pro_update_check(); // Register AI Post type add_action('init', 'softaculous_pro_register_post_type'); $spro_tours = array('assistant' => 'admin.php?page=assistant', 'sidebar' => 'admin.php?page=assistant', 'dashboard' => 'index.php', 'plugins' => 'plugins.php', 'themes' => 'themes.php', 'users' => 'users.php', 'pages' => 'edit.php?post_type=page', 'posts' => 'edit.php'); // Enqueues scripts and styles if(softaculous_pro_can_enqueue_assets()){ add_action('admin_init', 'softaculous_pro_admin'); add_action('admin_enqueue_scripts', 'softaculous_pro_enqueue_scripts'); } if(is_admin() && !empty($_GET['page']) && $_GET['page'] == 'assistant'){ add_filter('screen_options_show_screen', '__return_false'); } add_action('admin_notices', 'softaculous_pro_license_notice'); // Are you the Admin ? if(current_user_can('administrator')){ if(softaculous_pro_is_display_notice()){ add_action('admin_notices', 'softaculous_pro_admin_notice'); } add_action('wp_ajax_softaculous_pro_dismissnotice', 'softaculous_pro_dismiss_notice'); // This adds the left menu in WordPress Admin page add_action('admin_menu', 'softaculous_pro_admin_menu', 5); include_once SOFTACULOUS_PRO_PLUGIN_PATH . '/main/admin.php'; add_action('admin_print_footer_scripts', 'softaculous_pro_assistant', 5); add_action('wp_ajax_softaculous_pro_wp_ajax', 'softaculous_pro_wp_ajax'); add_action('admin_menu', 'softaculous_pro_remove_admin_elements'); // Template Installation related ajax calls add_action('wp_ajax_softaculous_pro_template_info', 'softaculous_pro_templates_ajax'); add_action('wp_ajax_softaculous_pro_start_install_template', 'softaculous_pro_templates_ajax'); add_action('wp_ajax_softaculous_pro_selected_plugin_install', 'softaculous_pro_templates_ajax'); add_action('wp_ajax_softaculous_pro_download_template', 'softaculous_pro_templates_ajax'); add_action('wp_ajax_softaculous_pro_import_template', 'softaculous_pro_templates_ajax'); // Setup information add_action('wp_ajax_softaculous_pro_setup_info', 'softaculous_pro_templates_ajax'); // dismiss add_action('wp_ajax_softaculous_pro_onboarding_dismiss', 'softaculous_pro_templates_ajax'); add_action('wp_ajax_softaculous_pro_option_value', 'softaculous_pro_templates_ajax'); } // Manage Media hooks if(is_admin() && empty($softaculous_pro_settings['disable_manage_media']) && current_user_can('upload_files') /* && !empty($post) && !empty($post->post_type) && $post->post_type == 'attachment' */){ add_action('add_meta_boxes_attachment', '\SoftWP\Media::register_meta_box'); add_filter('media_row_actions', '\SoftWP\Media::add_media_row_action', 11, 2); // ajax calls add_action('wp_ajax_softaculous_pro_upload_photopea_image', '\SoftWP\Media::upload_photopea_image'); add_action('wp_ajax_softaculous_pro_calculate_compressed_size', '\SoftWP\Media::calculate_compressed_size'); add_action('wp_ajax_softaculous_pro_replace_compressed_image', '\SoftWP\Media::replace_compressed_image'); } } function softaculous_pro_templates_ajax() { if(!current_user_can('administrator')){ return false; } include_once(dirname(__FILE__).'/onboarding.php'); if($_REQUEST['action'] == 'softaculous_pro_template_info'){ softaculous_pro_ajax_template_info(); } if($_REQUEST['action'] == 'softaculous_pro_selected_plugin_install'){ softaculous_pro_ajax_selected_plugin(); } if($_REQUEST['action'] == 'softaculous_pro_start_install_template'){ softaculous_pro_ajax_start_install_template(); } if($_REQUEST['action'] == 'softaculous_pro_download_template'){ softaculous_pro_ajax_download_template(); } if($_REQUEST['action'] == 'softaculous_pro_import_template'){ softaculous_pro_ajax_import_template(); } if($_REQUEST['action'] == 'softaculous_pro_setup_info'){ softaculous_pro_save_setup_info(); } if($_REQUEST['action'] == 'softaculous_pro_option_value'){ softaculous_pro_get_options(); } if($_REQUEST['action'] == 'softaculous_pro_onboarding_dismiss'){ softaculous_pro_onboarding_dismiss(); } } function softaculous_pro_remove_admin_elements(){ if(!empty($_GET['page']) && $_GET['page'] === 'assistant'){ remove_all_actions('admin_notices'); remove_all_actions('all_admin_notices'); } } // Update check function softaculous_pro_update_check(){ global $softaculous_pro_settings; $current_version = get_option('softaculous_pro_version', 0); $version = (int) str_replace('.', '', $current_version); if($current_version == SOFTACULOUS_PRO_VERSION){ return true; } // AI is enabled by default so the cron to delete AI history should be added at activation. wp_schedule_event(time(), 'daily', 'softaculous_pro_ai_history_cron'); if(empty($softaculous_pro_settings) || !isset($softaculous_pro_settings['ai_history_duration'])){ $softaculous_pro_settings['ai_history_duration'] = 90; // Setting default AI history duration. update_option('softaculous_pro_settings', $softaculous_pro_settings); } // Save the new Version update_option('softaculous_pro_version', SOFTACULOUS_PRO_VERSION); } function softaculous_pro_admin(){ global $spro_tours; include_once SOFTACULOUS_PRO_PLUGIN_PATH . '/main/admin.php'; } // Shows the admin menu of Softaculous function softaculous_pro_admin_menu() { $capability = 'activate_plugins';// TODO : Capability for accessing this page // Add the menu page add_menu_page(__('Assistant'), __('Assistant', 'softaculous-pro'), $capability, 'assistant', 'softaculous_pro_page_handler', 'dashicons-businessperson', 1); } // The Softaculous Settings Page function softaculous_pro_page_handler(){ global $softaculous_pro; if(!current_user_can('manage_options')){ wp_die(__('Sorry, but you do not have permissions to change settings.', 'softaculous-pro')); } $act = softaculous_pro_optGET('act'); switch($act){ case 'onboarding': include_once(SOFTACULOUS_PRO_PLUGIN_PATH . '/main/setup.php'); break; case 'license': include_once(SOFTACULOUS_PRO_PLUGIN_PATH . '/main/license.php'); softaculous_pro_license(); break; case 'manage-plugins': include_once(SOFTACULOUS_PRO_PLUGIN_PATH . '/main/manage-plugins.php'); softaculous_pro_manage_plugins(); break; case 'media-replace': \SoftWP\Media::replace_media_page(); break; default: include_once(dirname(__FILE__).'/admin.php'); softaculous_pro_page_settings(); } } function softaculous_pro_can_enqueue_assets(){ global $spro_tours; if(!is_admin()){ return false; } $current_page = basename($_SERVER['REQUEST_URI'], PHP_URL_PATH); if(!empty($_COOKIE['spro-load-tour']) && (!empty($spro_tours)) && array_key_exists($_COOKIE['spro-load-tour'], $spro_tours) && $current_page == $spro_tours[$_COOKIE['spro-load-tour']]){ return $_COOKIE['spro-load-tour']; } $is_admin_page = basename(parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)); if(!empty($_GET['page']) && $_GET['page'] == 'assistant' && $is_admin_page == 'admin.php'){ return true; } return false; } function softaculous_pro_enqueue_scripts(){ wp_enqueue_style('softaculous-pro-style-admin', SOFTACULOUS_PRO_PLUGIN_URL . '/assets/css/admin.css', [], SOFTACULOUS_PRO_VERSION); wp_enqueue_style('softaculous-pro-style-intro', SOFTACULOUS_PRO_PLUGIN_URL . '/assets/css/intro.css', [], SOFTACULOUS_PRO_VERSION); wp_enqueue_style( 'softaculous-pro-style-font-awesome', SOFTACULOUS_PRO_PLUGIN_URL . '/assets/font-awesome/css/all.min.css', [], SOFTACULOUS_PRO_VERSION, 'all' ); wp_enqueue_script('softaculous-pro-script-admin', SOFTACULOUS_PRO_PLUGIN_URL . '/assets/js/admin.js', [], SOFTACULOUS_PRO_VERSION, true); wp_enqueue_script('softaculous-pro-script-intro', SOFTACULOUS_PRO_PLUGIN_URL . '/assets/js/intro.js', [], SOFTACULOUS_PRO_VERSION, false); wp_localize_script('softaculous-pro-script-admin', 'soft_pro_obj', array( 'admin_url' => esc_url(admin_url()), 'site_url' => esc_url(site_url()), 'nonce' => wp_create_nonce('softaculous_pro_js_nonce'), 'ajax_url' => admin_url('admin-ajax.php') )); } /** * Display Softaculous notice on the basis of last dismiss date. When user manually dismisses the notice, it remains for 1 month * * @since 1.0 */ function softaculous_pro_is_display_notice(){ $soft_dismissable_notice_date = get_option('softaculous_pro_dismiss_notice_date'); if(empty($soft_dismissable_notice_date)){ return true; } $soft_dismissable_notice_date2 = new DateTime($soft_dismissable_notice_date); $current_date = new DateTime(date('Y-m-d')); $date_diff_month = $soft_dismissable_notice_date2->diff($current_date); //Do not display notice again for a month if($date_diff_month->m < 1){ return false; } return true; } /** * Display Softaculous notice in dashboard * * @since 1.0 */ function softaculous_pro_admin_notice($force = 0){ if(!empty($_GET['page']) && $_GET['page'] == 'softaculous' && empty($force)){ return ''; } return ''; } function softaculous_pro_license_notice(){ global $softaculous_pro; if(is_admin() && current_user_can('activate_plugins') && !wp_doing_ajax()){ $spro_add_nonce_vars = 0; if(empty($softaculous_pro['license']['license'])){ $msg = sprintf(__('Your SoftWP plugin is %1$sUnlicensed%2$s. Please enter the license key %3$s here%4$s.', 'softaculous-pro'), '', '', '', '' ); }else{ if(!empty($softaculous_pro['license']['url_mismatch'])){ $msg = sprintf(__('Your SoftWP plugin license is %1$snot authorized%2$s to be used on %3$s. You can generate a new license for your domain from the %4$s panel.', 'softaculous-pro'), '', '', ''.site_url().'', ''.($softaculous_pro['branding']['sn'] == 'SoftWP' ? 'Softaculous' : $softaculous_pro['branding']['sn']).'' ); }elseif(empty($softaculous_pro['license']['active'])){ $msg = sprintf(__('Your SoftWP plugin license has %1$sExpired%2$s. Please renew your license for uninterrupted updates and support.', 'softaculous-pro'), '', '' ); } } if(!empty($msg)){ echo '
'.$msg.'
'.sprintf(__('Your Onboarding process is not completed yet! %1$sClick here%2$s to complete the simple setup process and build your site in a few steps.', 'softaculous-pro'), '', '').'
'.__('Use cutting-edge AI to write blog posts or content for your pages. Create a table, write a paragraph, change tone, translate, fix spelling & grammar and so much more.', 'softaculous-pro').'
'.__('Start Exploring', 'softaculous-pro').' :
'.__('New Page', 'softaculous-pro').' ●
'.__('New Post', 'softaculous-pro').' ●
'.__('Existing Page', 'softaculous-pro').' ●
'.__('Existing Post', 'softaculous-pro').'
' . $error_string . '