* @license GPL-2.0+ * @link http://tovolt.com * @copyright 2014 ToVolt */ /** * Plugin class. This class should ideally be used to work with the * public-facing side of the WordPress site. * * If you're interested in introducing administrative or dashboard * functionality, then refer to `class-plugin-name-admin.php` * * @package AnsPress * @author Rahul Aryan */ class anspress { /** * Plugin version, used for cache-busting of style and script file references. */ const VERSION = '1.0.0'; /** * Unique identifier * The variable name is used as the text domain when internationalizing strings * of text. Its value should match the Text Domain file header in the main * plugin file. * */ protected $plugin_slug = 'anspress'; /** * Instance of this class. */ protected static $instance = null; /** * Initialize the plugin by setting localization and loading public scripts * and styles. */ private function __construct() { // Load plugin text domain add_action( 'init', array( $this, 'load_plugin_textdomain' ) ); // Activate plugin when new blog is added add_action( 'wpmu_new_blog', array( $this, 'activate_new_site' ) ); add_filter('init', array($this, 'query_var')); } /** * Return the plugin slug. * * @since 1.0.0 * * @return Plugin slug variable. */ public function get_plugin_slug() { return $this->plugin_slug; } /** * Return an instance of this class. * * @since 1.0.0 * * @return object A single instance of this class. */ public static function get_instance() { // If the single instance hasn't been set, set it now. if ( null == self::$instance ) { self::$instance = new self; } return self::$instance; } /** * Fired when the plugin is activated. * * @since 1.0.0 * * @param boolean $network_wide True if WPMU superadmin uses * "Network Activate" action, false if * WPMU is disabled or plugin is * activated on an individual blog. */ public static function activate( $network_wide ) { global $wp_rewrite; $wp_rewrite->flush_rules(); // create base page if(!get_option('ap_base_page_created') || !get_post(get_option('ap_base_page_created'))){ global $user_ID; $post = array(); $post['post_type'] = 'page'; $post['post_content'] = esc_attr(' '); $post['post_author'] = null; $post['post_status'] = 'publish'; $post['post_title'] = 'AnsPress'; $postid = wp_insert_post ($post); if($postid) update_option('ap_base_page_created', $postid); } // create ask page if(!get_option('ap_ask_page_created') || !get_post(get_option('ap_ask_page_created'))){ global $user_ID; $post = array(); $post['post_type'] = 'page'; $post['post_content'] = esc_attr(' '); $post['post_author'] = null; $post['post_parent'] = get_option('ap_base_page_created'); $post['post_status'] = 'publish'; $post['post_title'] = 'Ask'; $postid = wp_insert_post ($post); if($postid) update_option('ap_ask_page_created', $postid); } // create edit page if(!get_option('ap_edit_page_created') || !get_post(get_option('ap_edit_page_created'))){ global $user_ID; $post = array(); $post['post_type'] = 'page'; $post['post_content'] = esc_attr(' '); $post['post_author'] = null; $post['post_parent'] = get_option('ap_base_page_created'); $post['post_status'] = 'publish'; $post['post_title'] = 'Edit'; $postid = wp_insert_post ($post); if($postid) update_option('ap_edit_page_created', $postid); } if(!get_option('anspress_opt')){ $default = array( 'base_page' => get_option('ap_base_page_created'), 'ask_page' => get_option('ap_ask_page_created'), 'edit_page' => get_option('ap_edit_page_created'), 'theme' => 'default', 'author_credits' => false, 'clear_databse' => false, 'multiple_answers' => false ); update_option('anspress_opt', $default); } if ( function_exists( 'is_multisite' ) && is_multisite() ) { if ( $network_wide ) { // Get all blog ids $blog_ids = self::get_blog_ids(); foreach ( $blog_ids as $blog_id ) { switch_to_blog( $blog_id ); self::single_activate(); } restore_current_blog(); } else { self::single_activate(); } } else { self::single_activate(); } } /** * Fired when the plugin is deactivated. * * @param boolean $network_wide True if WPMU superadmin uses * "Network Deactivate" action, false if * WPMU is disabled or plugin is * deactivated on an individual blog. */ public static function deactivate( $network_wide ) { if ( function_exists( 'is_multisite' ) && is_multisite() ) { if ( $network_wide ) { // Get all blog ids $blog_ids = self::get_blog_ids(); foreach ( $blog_ids as $blog_id ) { switch_to_blog( $blog_id ); self::single_deactivate(); } restore_current_blog(); } else { self::single_deactivate(); } } else { self::single_deactivate(); } } /** * Fired when a new site is activated with a WPMU environment. * * @param int $blog_id ID of the new blog. */ public function activate_new_site( $blog_id ) { if ( 1 !== did_action( 'wpmu_new_blog' ) ) { return; } switch_to_blog( $blog_id ); self::single_activate(); restore_current_blog(); } /** * Get all blog ids of blogs in the current network that are: * - not archived * - not spam * - not deleted * * @return array|false The blog ids, false if no matches. */ private static function get_blog_ids() { global $wpdb; // get an array of blog ids $sql = "SELECT blog_id FROM $wpdb->blogs WHERE archived = '0' AND spam = '0' AND deleted = '0'"; return $wpdb->get_col( $sql ); } /** * Fired for each blog when the plugin is activated. */ private static function single_activate() { // @TODO: Define activation functionality here } /** * Fired for each blog when the plugin is deactivated. * * @since 1.0.0 */ private static function single_deactivate() { // @TODO: Define deactivation functionality here } /** * Load the plugin text domain for translation. * * @since 1.0.0 */ public function load_plugin_textdomain() { $domain = $this->plugin_slug; $locale = apply_filters( 'plugin_locale', get_locale(), $domain ); load_textdomain( $domain, trailingslashit( WP_LANG_DIR ) . $domain . '/' . $domain . '-' . $locale . '.mo' ); } //add author_more to query vars public function query_var() { global $wp; $wp->add_query_var('edit_q'); } }