wpapi = $wpapi; $this->php_wrapper = $php_wrapper; $this->admium_globals = $admium_globals; $this->cookie_manager = $cookie_manager; $this->token_validator = $token_validator; $this->admium_authenticator = $admium_authenticator; } function install() { $table_name = $this->wpapi->db_prefix() . $this->admium_globals->db_session_table_suffix(); $sql = "CREATE TABLE " . $table_name . " ( email varchar(256) NOT NULL, secret char(32) NOT NULL, issued_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (secret) );"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); } function is_subscriber() { return $this->admium_authenticator->is_subscriber(); } /* This function tells WordPress to allow our query vars; by default it strips out query vars that it doesn't recognize. See http://www.voidtrance.net/2010/02/passing-and-receiving-query-variables. */ function allow_query_vars($query_vars) { $query_vars[] = $this->admium_globals->token_name(); $query_vars[] = $this->admium_globals->test_parameter_name(); $query_vars[] = $this->admium_globals->view_as_subscriber_parameter_name(); return $query_vars; } // Show post contents to subscribers, and the call-to-subscribe to non-subscribers. function wrap_post($content) { global $post; $visibility = get_post_meta($post->ID, $this->admium_globals->admium_post_visibility_field_name(), 'true'); //$showcalltosubscribe = get_post_meta($post->ID, $admium_globals->admium_post_visibility_calltosubscribe(), 'true'); switch($visibility) { case AdmiumGlobals::VISIBILITY_ALL: return $content; break; // all case AdmiumGlobals::VISIBILITY_NONSUBSCRIBER: if(!$this->is_subscriber()) return $content; break; // non-sub case AdmiumGlobals::VISIBILITY_SUBSCRIBER: if($this->is_subscriber()) { return $content; } break; // subscriber case AdmiumGlobals::VISIBILITY_SUBWITHCALL: if($this->is_subscriber()) { return $content; } else { // non-subscriber $calltosubscribe = get_option($this->admium_globals->call_to_subscribe_option_name()); return $calltosubscribe; } break; } // end switch } // Include the JavaScript to launch the modal subscribe popup. function include_popup_javascript() { $wp_query = $this->wpapi->wp_query(); $test = array_key_exists($this->admium_globals->test_parameter_name(), $wp_query->query_vars); $site_id = $this->wpapi->get_option($this->admium_globals->admium_site_id()); echo ""; } function register_widgets() { # The require statement is kept in here so that this file may be # included without including all of WordPress. require_once 'class-admium-widgets.php'; register_widget('Admium_Widget_SubscriberOnlyText'); register_widget('Admium_Widget_NonSubscriberOnlyText'); } function subscribe_link_shortcode($atts, $content) { $site_id = $this->wpapi->get_option($this->admium_globals->admium_site_id()); $test = array_key_exists($this->admium_globals->test_parameter_name(), $_GET); $url = $this->admium_globals->popup_subscribe_url($site_id, $test); return "" . $content . ""; } function add_view_as_subscriber_toggle_to_admin_bar() { global $wp_admin_bar; $vas_link_prefix = $this->wpapi->home_url() . "?" . $this->admium_globals->view_as_subscriber_cookie_name() . "="; if ($this->admium_authenticator->is_viewing_as_subscriber()) { $wp_admin_bar->add_menu( array( 'id' => 'admium_view_as_subscriber', 'title' => 'View as Admium Non-subscriber', 'href' => $vas_link_prefix . 'off' ) ); } else { $wp_admin_bar->add_menu( array( 'id' => 'admium_view_as_subscriber', 'title' => 'View as Admium Subscriber', 'href' => $vas_link_prefix . 'on' ) ); } /*if ($_COOKIE[$this->wp_api->view_as_subscriber_cookie_name()] == true) { $wp_admin_bar->add_menu( array( 'href' => $link ) ); }*/ } function set_hooks() { if ( $this->wpapi->is_admin() ) { $admin = new AdmiumAdmin($this->admium_globals, $this->wpapi); $admin->set_hooks(); } // Do 1-time initialization of the plugin, like setting up database tables. $this->wpapi->register_activation_hook('/admium/admium.php', array($this, 'install')); // Install widgets. $this->wpapi->add_action('widgets_init', array($this, 'register_widgets')); // Store HTML content that's shown to get the user to subscribe. $this->wpapi->add_option($this->admium_globals->call_to_subscribe_option_name(), $this->admium_globals->default_call_to_subscribe()); // Wrap all posts marked "subscriber-only" with the call to subscribe. $this->wpapi->add_filter('the_content', array($this, 'wrap_post')); // Include the Admium javascript, in the header. $this->wpapi->add_action('wp_head', array($this, 'include_popup_javascript')); // Tell WordPress to allow the query vars we need. $this->wpapi->add_filter('query_vars', array($this, 'allow_query_vars')); // Authenticate the user. $this->wpapi->add_action('parse_query', array($this->admium_authenticator, 'authenticate')); // Handle shortcodes. $this->wpapi->add_shortcode('admium_subscribe_link', array($this, 'subscribe_link_shortcode')); // Make shortcodes functional within widgets. $this->wpapi->add_filter('widget_text', 'do_shortcode', 9); if ($this->wpapi->is_administrator()) { // Put "view as subscriber" toggle in the admin bar. $FAR_RIGHT_POSITION = 777; $this->wpapi->add_action('admin_bar_menu', array($this, 'add_view_as_subscriber_toggle_to_admin_bar'), $FAR_RIGHT_POSITION); } } } ?>