%PDF- %PDF-
Direktori : /var/www/pn/beta/64801_wp-content/plugins/wysija-newsletters/helpers/ |
Current File : /var/www/pn/beta/64801_wp-content/plugins/wysija-newsletters/helpers/front.php |
<?php defined('WYSIJA') or die('Restricted access'); /** * class managing the admin vital part to integrate */ class WYSIJA_help_front extends WYSIJA_help{ function __construct(){ parent::__construct(); // wysija form shortcode add_shortcode('wysija_form', array($this,'scan_form_shortcode')); // wysija total of subscribers shortcode add_shortcode('wysija_subscribers_count', array($this,'scan_subscribers_count_shortcode')); // init shortcode [wysija_archive] require_once(WYSIJA_CORE.'controller.php'); require_once(WYSIJA_CORE.'module'.DS.'module.php');// @todo: move to autoloader $archive_std = WYSIJA_module::get_instance_by_name('archive_std');// implement hook "wysija_front_init() if (!empty($archive_std) && is_a($archive_std, 'WYSIJA_module')) $archive_std->front_init(); /* We try to process the least possible code */ if(isset($_REQUEST['wysija-page']) || isset($_REQUEST['wysija-launch'])){ if(defined('DOING_AJAX')){ add_action('wp_ajax_nopriv_wysija_ajax', array($this, 'ajax')); }else{ $paramscontroller=$_REQUEST['controller']; //this is an exception on one server this params stats was not accepted if($paramscontroller=='stat') $paramscontroller='stats'; $this->controller=WYSIJA::get($paramscontroller,'controller'); if(isset($_REQUEST['action']) && method_exists($this->controller, $_REQUEST['action'])){ add_action('init',array($this->controller,$_REQUEST['action'])); //$this->controller->$_REQUEST['action'](); }else $this->error('Action does not exist.'); if(isset($_REQUEST['wysija-page'])){ /* set the content filter to replace the shortcode */ add_filter('wp_title', array($this,'meta_page_title')); add_filter( 'the_title', array($this,'scan_title')); add_filter( 'the_content', array($this,'scan_content'),98); if(isset($_REQUEST['message_success'])){ add_filter( 'the_content', array($this,'scan_content_NLform'),99 ); } } } }else{ add_filter('the_content', array($this,'scan_content_NLform'),99 ); //if the comment form checkbox option is activated we add some hooks to process it $model_config = WYSIJA::get('config','model'); if($model_config->getValue('commentform')){ add_action('comment_form', array($this,'comment_form_extend')); add_action('comment_post', array($this,'comment_posted'), 60,2); } // if the register form checkbox option is activated we add some hooks to process it if($model_config->getValue('registerform')){ if(is_multisite()){ add_action('signup_extra_fields', array($this,'register_form_extend')); // we need this condition otherwise we will send two confirmation emails when on ms with buddypress if(!WYSIJA::is_plugin_active('buddypress/bp-loader.php')){ add_filter('wpmu_validate_user_signup', array($this,'registerms_posted'), 60,3); } }else{ add_action('register_form', array($this,'register_form_extend')); add_action('register_post', array($this,'register_posted'), 60,3); } // special case when buddypress is activated if(WYSIJA::is_plugin_active('buddypress/bp-loader.php')){ add_action('bp_after_signup_profile_fields', array($this,'register_form_bp_extend')); add_action('bp_signup_validate', array($this,'register_bp'),60,3); // we can have just one confirmation email for the wp user and the wysija confirmation when bp and multisite are activated if(is_multisite()){ add_action('wpmu_activate_user', array($this,'wpmu_activate_user')); } } } } } /** * In MS when user account is activated we auto confirm the subscriber * @param type $wpuser_id * @return boolean */ function wpmu_activate_user($wpuser_id){ if((int)$wpuser_id>0){ $model_user = WYSIJA::get('user','model'); $result_subscriber = $model_user->getOne(false , array('wpuser_id'=>$wpuser_id)); if(!empty($result_subscriber)){ $helper_user = WYSIJA::get('user','helper'); $helper_user->confirm_user($result_subscriber['user_id']); } } return true; } function meta_page_title($title){ //Here I can echo the result and see that it's actually triggered if($this->is_default_mailpoet_page()){ // when user have kept the default page we modify the title based on the controller if(!empty($this->controller->title)) return $this->controller->title; } return $title; } function register_form_bp_extend(){ if ( !is_user_logged_in()){ $this->register_form_extend(); } } function register_form_extend(){ $checkbox= '<p class="wysija-after-register">'; $checkbox.='<label for="wysija-box-after-register">'; $checkbox.='<input type="checkbox" id="wysija-box-after-register" value="1" name="wysija[register_subscribe]">'; $mConfig=WYSIJA::get('config','model'); $checkbox.=$mConfig->getValue('registerform_linkname').'</label></p>'; echo '<div class="register-section" id="profile-details-section-wysija"><div class="editfield">'.$checkbox.'</div></div>'; } function register_bp(){ global $bp; if ( !isset($bp->signup->errors) && isset($_POST['wysija']['register_subscribe']) && $_POST['wysija']['register_subscribe'] ) { $model_config=WYSIJA::get('config','model'); $helper_user=WYSIJA::get('user','helper'); $data=array('user'=>array('email'=>$bp->signup->email),'user_list'=>array('list_ids'=>$model_config->getValue('registerform_lists'))); if(is_multisite()){ $helper_user->no_confirmation_email=true; } $helper_user->addSubscriber($data); } } function registerms_posted($result){ if ( empty($result['errors']->errors) && isset($_POST['wysija']['register_subscribe']) && $_POST['wysija']['register_subscribe']) { $mConfig=WYSIJA::get('config','model'); $userHelper=WYSIJA::get('user','helper'); $data=array('user'=>array('email'=>$result['user_email']),'user_list'=>array('list_ids'=>$mConfig->getValue('registerform_lists'))); $userHelper->addSubscriber($data); } return $result; } function register_posted($login,$email,$errors){ if ( empty($errors->errors) && isset($_POST['wysija']['register_subscribe']) && $_POST['wysija']['register_subscribe']) { $mConfig=WYSIJA::get('config','model'); $userHelper=WYSIJA::get('user','helper'); $data=array('user'=>array('email'=>$email),'user_list'=>array('list_ids'=>$mConfig->getValue('registerform_lists'))); $userHelper->addSubscriber($data); } } function comment_form_extend(){ echo '<p class="wysija-after-comment">'; echo '<label for="wysija-box-after-comment">'; echo '<input type="checkbox" id="wysija-box-after-comment" value="1" name="wysija[comment_subscribe]">'; $mConfig=WYSIJA::get('config','model'); echo $mConfig->getValue('commentform_linkname').'</label></p>'; } function comment_posted($cid,$comment){ $cid = (int) $cid; if ( !is_object($comment) ) $comment = get_comment($cid); //before recording the subscriber, make sure that it is not a spam comment or it needs to be approved first if($comment->comment_approved=='spam') return; if(isset($_POST['wysija']['comment_subscribe']) && $_POST['wysija']['comment_subscribe']) { if($comment->comment_approved=='0') add_comment_meta($cid, 'wysija_comment_subscribe', 1); else{ $mConfig=WYSIJA::get('config','model'); $userHelper=WYSIJA::get('user','helper'); $data=array('user'=>array('email'=>$comment->comment_author_email,'firstname'=>$comment->comment_author),'user_list'=>array('list_ids'=>$mConfig->getValue('commentform_lists'))); $userHelper->addSubscriber($data); } } } function scan_title($title){ /*careful WordPress global*/ global $post; if($this->is_default_mailpoet_page()){ // when user have kept the default page we modify the title based on the controller if(trim($title)==trim(single_post_title( '', false )) && !empty($this->controller->title)){ $post->comment_status='close'; $post->post_password=''; return $this->controller->title; } } return $title; } function scan_content($content){ $wysija_content = $wysija_undo = ''; if(!empty($this->controller->subtitle)) $wysija_content = $this->controller->subtitle; if(!empty($this->controller->optional_subtitle)) $wysija_content = $this->controller->optional_subtitle; if(!empty($this->controller->undo_unsubscribe)){ $wysija_undo = $this->controller->undo_unsubscribe; } // only force our edit subscription screen at the bottom of the content of the page // if it's the right action and there is no wysija_page shortcode in teh page if(!empty($_REQUEST['action']) && $_REQUEST['action'] == 'subscriptions' && strpos($content, '[wysija_page]') === false){ // we append the subscription form at the bottom of the page if we can't detect it return $content.'<div class="mpoet_profile_edit">'.$wysija_content.'</div>'; }else{ // we replace the shortcode by our automatic content, other wise if there is no shortcode the page stays the same return str_replace('[wysija_page]', $wysija_content.$wysija_undo, $content); } } function is_default_mailpoet_page(){ global $post; $model_config = WYSIJA::get('config','model'); if($post->ID == $model_config->getValue('confirm_email_link')) return true; else return false; } /** * this is for the new kind of shortcodes [wysija_form form="1"] * @param array $attributes * @return string html */ function scan_form_shortcode($attributes) { // IMPORTANT: this is to make sure MagicMember won't scan our form and find [user_list] as a code they should replace. remove_shortcode('user_list'); if(isset($attributes['id']) && (int)$attributes['id']>0){ $widget_data=array(); $widget_data['form']=(int)$attributes['id']; $widget_data['form_type'] = 'shortcode'; $widget_NL=new WYSIJA_NL_Widget(true); return $widget_NL->widget($widget_data); } return ''; } /** * this is for the new kind of shortcodes [wysija_form form="1"] * @param array $attributes * @return string html */ function scan_subscribers_count_shortcode($attributes) { $user = WYSIJA::get('user','model'); $list_ids = !empty($attributes['list_id']) ? explode(',', $attributes['list_id']) : array(); // if double optin is on we count only the confirmed subscribers, otherwise we count both confirmed and unconfirmed $confirmed_subscribers = false; $model_config = WYSIJA::get('config', 'model'); if ($model_config->getValue('confirm_dbleoptin')){ $confirmed_subscribers = true; } return $user->countSubscribers($list_ids, $confirmed_subscribers); } function scan_content_NLform($content){ preg_match_all('/\<div class="wysija-register">(.*?)\<\/div>/i',$content,$matches); if(!empty($matches[1]) && count($matches[1])>0) require_once(WYSIJA_WIDGETS.'wysija_nl.php'); foreach($matches[1] as $key => $mymatch){ if($mymatch){ $widgetdata=unserialize(base64_decode($mymatch)); $widgetNL=new WYSIJA_NL_Widget(true); $contentTABLE= $widgetNL->widget($widgetdata,$widgetdata); $content=str_replace($matches[0][$key],$contentTABLE,$content); }//endif }//endforeach return $content; } }