registerHookCallbacks(); } /** * Register callbacks for actions and filters * @mvc Controller * @author Zanto Translate */ public function registerHookCallbacks() { add_action('shutdown', array($this, 'shutdown')); // register admin pages for the plugin add_action('admin_menu', array($this, 'ze_admin_pages_callback')); // Register activation and deactivation hooks register_activation_hook(__FILE__, 'ze_on_activate_callback'); register_deactivation_hook(__FILE__, 'ze_on_deactivate_callback'); // Translation-ready add_action('wp_loaded', array($this, 'wp_loaded')); // Add earlier execution as it needs to occur before admin page display add_action('init', array($this, 'init')); } public function error_js() { if (!empty($GLOBALS['_ze_errors'])) { $errors = $GLOBALS['_ze_errors']; $errtext = ''; ?>
", "url" : "https://wordpress.org/support/plugin/0-errors/", "errNo" : , "state" : "closed" }'>
ze_register_settings(); add_action('admin_enqueue_scripts', array($this, 'ze_admin_CSS')); $settings = $ZE_Settings::get_settings(); if ($settings['ze_bar_enable'] && current_user_can('manage_optoins')) { // add scripts and styles only available in admin add_action('admin_enqueue_scripts', array($this, 'ze_add_CSS')); add_action('admin_enqueue_scripts', array($this, 'ze_add_JS')); // add scripts and styles to the front end add_action('wp_enqueue_scripts', array($this, 'ze_add_JS')); add_action('wp_enqueue_scripts', array($this, 'ze_add_CSS')); } if (is_admin()) { add_action('admin_print_footer_scripts', array($this, 'error_js'), 50); } else { add_action('wp_print_footer_scripts', array($this, 'error_js'), 50); } } public function get_admins() { $users = get_users(); $recepients = array(); foreach ($users as $user) { if (in_array('administrator', $user->roles)) $recepients[] = array('email' => $user->user_email, 'name' => $user->display_name); } return $recepients; } public function shutdown() { if (!empty($GLOBALS['_ze_errors'])) { global $ze_error_handler, $ZE_Settings; $settings = $ZE_Settings::get_settings(); if ($settings['ze_err_log']) { if (defined('DOING_AJAX') && DOING_AJAX) { update_option('ze_hxr_errors', $ze_error_handler::get_ajax_errs()); } } if ($settings['ze_email_alerts']['enable']) { if (!get_transient('ze_error_alert')) { $headers = ''; $site_name = get_site_option('site_name'); $subject = sprintf(__('%s Error Alert!', '0e'), $site_name); $message = __('Errors have been recorded on your website!:') . "\r\n\r\n"; $message .= network_home_url('/') . "\r\n\r\n"; $message .= sprintf(__('This message was sent by 0Errors plugin installed on %s:'), $site_name) . "\r\n\r\n"; if ($settings['ze_email_alerts']['cc_admins']) { $admins = $this->get_admins(); foreach ($admins as $admin) { $headers[] = sprintf('Cc: %s <%s>', $admin['display_name'], $admin['email']); } } $to_mail = $settings['ze_email_alerts']['email_addrs']; wp_mail($to_mail, $subject, $message, $headers); set_transient('ze_error_alert', true, 60 * 1440); //24 hour transient } } } } /** * * Adding JavaScript scripts for the admin pages only * * Loading existing scripts from wp-includes or adding custom ones * */ public function ze_add_JS() { wp_register_script('j-bar', ZEP_URL . '/js/jbar.js', array('jquery'), '1.0', true); wp_enqueue_script('j-bar'); } /** * * Add CSS styles * */ public function ze_add_CSS() { wp_register_style('j-bar-css', ZEP_URL . '/css/jbar.css', array(), '1.0', 'screen'); wp_enqueue_style('j-bar-css'); } /** * * Add CSS styles * */ public function ze_admin_CSS($hook) { if ('toplevel_page_zero-errors' === $hook) { wp_register_style('ze_stgs_page', ZEP_URL . '/css/stgs-page.css', array(), '1.0', 'screen'); wp_enqueue_style('ze_stgs_page'); } } /** * * Callback for registering pages * * This demo registers a custom page for the plugin and a subpage * */ public function ze_admin_pages_callback() { add_menu_page(__("Zero Errors", '0e'), __("Zero Errors", '0e'), 'edit_themes', 'zero-errors', array($this, 'Zero_Error_Stgs'), 'dashicons-flag'); } /** * * The content of the settings page * */ public function Zero_Error_Stgs() { include_once( ZEP_PATH_INCLUDES . '/stgs-page.php' ); } /** * Initialize the Settings class * * Register a settings section with a field for a secure WordPress admin option creation. * */ public function ze_register_settings() { global $ZE_Settings; require_once( ZEP_PATH_CLASS . '/ze-settings.class.php' ); $ZE_Settings = new ZE_Settings(); } /** * Add textdomain for plugin */ public function wp_loaded() { load_plugin_textdomain('0e', false, dirname(plugin_basename(__FILE__)) . '/lang/'); } }