require_php_version()) { add_action('admin_notices', array($this, 'php_version_notice')); return; } /** * Plugin Loaded Action */ add_action('plugins_loaded', array($this, 'plugin_setup'), 10); /** * Disable AddOns For Compatible in Wp-Statistics 13.0 */ add_action('plugins_loaded', array($this, 'disable_addons'), 0); /** * Install And Upgrade plugin */ register_activation_hook(WP_STATISTICS_MAIN_FILE, array('WP_Statistics', 'install')); /** * wp-statistics loaded */ do_action('wp_statistics_loaded'); } /** * Cloning is forbidden. * * @since 13.0 */ public function __clone() { \WP_STATISTICS\Helper::doing_it_wrong(__CLASS__, esc_html__('Cloning is forbidden.', 'wp-statistics')); } /** * Magic getter to bypass referencing plugin. * * @param $key * @return mixed */ public function __get($key) { return $this->container[$key]; } /** * Constructors plugin Setup * * @throws Exception */ public function plugin_setup() { /** * Load Text Domain */ add_action('init', array($this, 'load_textdomain')); try { /** * Include Require File */ $this->includes(); /** * Display Admin Notices */ add_action('admin_notices', array('\\WP_STATISTICS\\Helper', 'displayAdminNotices')); /** * instantiate Plugin */ $this->instantiate(); } catch (Exception $e) { self::log($e->getMessage()); } } /** * Includes plugin files */ public function includes() { // third-party Libraries require_once WP_STATISTICS_DIR . 'includes/vendor/autoload.php'; // Create the plugin upload directory in advance. $this->create_upload_directory(); // Utility classes. require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-db.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-timezone.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-option.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-user.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-helper.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-mail.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-menus.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-meta-box.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-admin-bar.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-rest-api.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-purge.php'; // Hits Class require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-country.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-user-online.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-user-agent.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-ip.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-geoip.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-pages.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-visitor.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-historical.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-visit.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-referred.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-search-engine.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-exclusion.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-hits.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-privacy-exporter.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-privacy-erasers.php'; // Ajax area require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-template.php'; // Admin classes if (is_admin()) { require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-install.php'; require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-ajax.php'; require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-dashboard.php'; require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-export.php'; require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-network.php'; require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-assets.php'; require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-notices.php'; require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-post.php'; require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-user.php'; require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-taxonomy.php'; require_once WP_STATISTICS_DIR . 'includes/admin/class-wp-statistics-admin-privacy.php'; require_once WP_STATISTICS_DIR . 'includes/admin/TinyMCE/class-wp-statistics-tinymce.php'; // Admin Pages List require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-settings.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-optimization.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-plugins.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-overview.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-online.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-hits.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-refer.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-words.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-searches.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-pages.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-visitors.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-country.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-category.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-authors.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-tags.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-browsers.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-platforms.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-top-visitors-today.php'; require_once WP_STATISTICS_DIR . 'includes/admin/pages/class-wp-statistics-admin-page-exclusions.php'; } // WordPress ShortCode and Widget require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-shortcode.php'; require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-widget.php'; // Meta Box List \WP_STATISTICS\Meta_Box::includes(); // Rest-Api require_once WP_STATISTICS_DIR . 'includes/api/v2/class-wp-statistics-api-hit.php'; require_once WP_STATISTICS_DIR . 'includes/api/v2/class-wp-statistics-api-meta-box.php'; // WordPress Cron require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-schedule.php'; // Front Class. if (!is_admin()) { require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-frontend.php'; } // WP-CLI Class. if (defined('WP_CLI') && WP_CLI) { require_once WP_STATISTICS_DIR . 'includes/class-wp-statistics-cli.php'; } // Template functions. include WP_STATISTICS_DIR . 'includes/template-functions.php'; } private function create_upload_directory() { $upload_dir = wp_upload_dir(); $upload_dir_name = $upload_dir['basedir'] . '/' . WP_STATISTICS_UPLOADS_DIR; wp_mkdir_p($upload_dir_name); /** * Create .htaccess to avoid public access. */ if (is_dir($upload_dir_name) and is_writable($upload_dir_name)) { $htaccess_file = path_join($upload_dir_name, '.htaccess'); if (!file_exists($htaccess_file) and $handle = @fopen($htaccess_file, 'w')) { fwrite($handle, "Deny from all\n"); fclose($handle); } } /** * Backward compatibility * Move the wp-statistics.log to wp-content/uploads/wp-statistics/debug.log */ $legacy_old_log = ABSPATH . 'wp-statistics.log'; if (file_exists($legacy_old_log)) { rename($legacy_old_log, path_join($upload_dir_name, 'debug.log')); } } /** * Loads the load plugin text domain code. */ public function load_textdomain() { load_plugin_textdomain('wp-statistics', false, basename(WP_STATISTICS_DIR) . '/languages'); } /** * Check PHP Version */ public function require_php_version() { if (!version_compare(phpversion(), WP_STATISTICS_REQUIRE_PHP_VERSION, ">=")) { return false; } return true; } /** * Show notice about PHP version * * @return void */ function php_version_notice() { $error = __('Your installed PHP Version is: ', 'wp-statistics') . PHP_VERSION . '. '; $error .= __('The WP-Statistics plugin requires PHP version ', 'wp-statistics') . WP_STATISTICS_REQUIRE_PHP_VERSION . __(' or greater.', 'wp-statistics'); ?>