/master/plugins/system/regacymailing.php
PHP | 282 lines | 278 code | 0 blank | 4 comment | 82 complexity | 837fe6db1c638b913f84cc6dc39f804e MD5 | raw file
- <?php
- /**
- * @copyright Copyright (C) 2009-2011 ACYBA SARL - All rights reserved.
- * @license http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL
- */
- defined('_JEXEC') or die('Restricted access');
- ?>
- <?php
- class plgSystemRegacymailing extends JPlugin
- {
- function plgSystemRegacymailing(&$subject, $config){
- parent::__construct($subject, $config);
- }
- function onAfterRoute(){
- if(empty($_POST['option']) OR empty($_POST['func']) OR $_POST['option'] != 'com_virtuemart' OR $_POST['func'] != 'shopperupdate') return;
- $user =& JFactory::getUser();
- if(empty($user->id)) return;
- $acylistsdisplayed = JRequest::getString('acylistsdisplayed_dispall').','.JRequest::getString('acylistsdisplayed_onecheck');
- if(strlen($acylistsdisplayed) < 2) return;
- $listsDisplayed = explode(',',$acylistsdisplayed);
- JArrayHelper::toInteger($listsDisplayed);
- if(empty($listsDisplayed)) return;
- if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'helper.php')) return;
- $userClass = acymailing::get('class.subscriber');
- $subid = $userClass->subid($user->id);
- if(empty($subid)) return; //The user should already be there
- $visiblelistschecked = JRequest::getVar( 'acysub', array(), '', 'array' );
- $acySubHidden = JRequest::getString( 'acysubhidden');
- if(!empty($acySubHidden)){
- $visiblelistschecked = array_merge($visiblelistschecked,explode(',',$acySubHidden));
- }
- $listsClass = acymailing::get('class.list');
- $allLists = $listsClass->getLists('listid');
- if(acymailing::level(1)){
- $allLists = $listsClass->onlyCurrentLanguage($allLists);
- }
- $formLists = array();
- foreach($listsDisplayed as $listidDisplayed){
- $newlists = null;
- $newlists['status'] = in_array($listidDisplayed,$visiblelistschecked) ? '1' : '-1';
- $formLists[$listidDisplayed] = $newlists;
- }
- $userClass->saveSubscription($subid,$formLists);
- }
- function onAfterRender(){
- $option = JRequest::getString('option');
- if(empty($option)) return;
- $components = array();
- $components['com_user'] = array('view' => array('register'),'lengthafter' => 200);
- $components['com_users'] = array('view' => array('registration'),'lengthafter' => 200, 'email' => 'jform\[email2\]', 'password' => 'jform\[password2\]');
- $components['com_alpharegistration'] = array('view' => array('register'),'lengthafter' => 250);
- $components['com_ccusers'] = array('view' => array('register'),'lengthafter' => 500);
- $components['com_virtuemart'] = array('view' => array('shop.registration','account.billing','checkout.index'),'viewvar' => 'page','lengthafter' => 500, 'acysubscribestyle' => 'style="clear:both"');
- $components['com_hikashop'] = array('view' => array('checkout','user'),'viewvar' => 'ctrl', 'lengthafter' => 500 , 'tdclass' => 'key', 'email' => 'data\[register\]\[email\]','password' => 'data\[register\]\[password2\]');
- $components['com_tienda'] = array('view' => array('checkout'),'lengthafter' => 500 , 'email' => 'email_address','password' => 'password2');
- $components['com_osemsc'] = array('view' => array('register'),'lengthafter' => 200,'email' => 'oseemail','password' => 'osepassword2');
- if(!isset($components[$option])) return;
- $viewVar = (isset($components[$option]['viewvar']) ? $components[$option]['viewvar'] : 'view');
- if(!in_array(JRequest::getString($viewVar,JRequest::getString('task')),$components[$option]['view'])) return;
- if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'helper.php')) return;
- if(!isset($this->params)){
- $plugin =& JPluginHelper::getPlugin('system', 'regacymailing');
- $this->params = new JParameter( $plugin->params );
- }
- $visibleLists = $this->params->get('lists','None');
- if($visibleLists == 'None') return;
- $visibleListsArray = array();
- $listsClass = acymailing::get('class.list');
- $allLists = $listsClass->getLists('listid');
- if(acymailing::level(1)){
- $allLists = $listsClass->onlyCurrentLanguage($allLists);
- }
- if(strpos($visibleLists,',') OR is_numeric($visibleLists)){
- $allvisiblelists = explode(',',$visibleLists);
- foreach($allLists as $oneList){
- if($oneList->published AND in_array($oneList->listid,$allvisiblelists)) $visibleListsArray[] = $oneList->listid;
- }
- }elseif(strtolower($visibleLists) == 'all'){
- foreach($allLists as $oneList){
- if($oneList->published){$visibleListsArray[] = $oneList->listid;}
- }
- }
- if(empty($visibleListsArray)) return;
- $checkedLists = $this->params->get('listschecked','All');
- $userClass = acymailing::get('class.subscriber');
- $loggedinUser = JFactory::getUser();
- if(!empty($loggedinUser->id)){
- $currentSubid = $userClass->subid($loggedinUser->id);
- if(!empty($currentSubid)){
- $currentSubscription = $userClass->getSubscriptionStatus($currentSubid,$visibleListsArray);
- $checkedLists = '';
- foreach($currentSubscription as $listid => $oneSubsciption){
- if($oneSubsciption->status == '1') $checkedLists .= $listid.',';
- }
- }
- }
- if(strtolower($checkedLists) == 'all'){ $checkedListsArray = $visibleListsArray;}
- elseif(strpos($checkedLists,',') OR is_numeric($checkedLists)){ $checkedListsArray = explode(',',$checkedLists);}
- else{ $checkedListsArray = array();}
- $subText = $this->params->get('subscribetext');
- if(empty($subText)){
- $lang =& JFactory::getLanguage();
- $lang->load(ACYMAILING_COMPONENT,JPATH_SITE);
- if($this->params->get('displaymode','dispall') == 'dispall'){
- $subText = JText::_('SUBSCRIPTION').':';
- }else{
- $subText = JText::_('YES_SUBSCRIBE_ME');
- }
- }
- $body = JResponse::getBody();
- if(!empty($components[$option][$this->params->get('fieldafter','password')])){
- $after = $components[$option][$this->params->get('fieldafter','password')];
- }else{
- if($this->params->get('fieldafter','password') == 'custom'){ $after = $this->params->get('fieldaftercustom'); }
- else{ $after = ($this->params->get('fieldafter','password') == 'email') ? 'email' : 'password2'; }
- }
- $listsDisplayed = '<input type="hidden" value="'.implode(',',$visibleListsArray).'" name="acylistsdisplayed_'.$this->params->get('displaymode','dispall').'" />';
- $return = '';
- if($this->params->get('displaymode','dispall') == 'dispall'){
- foreach($visibleListsArray as $oneList){
- $check = in_array($oneList,$checkedListsArray) ? 'checked="checked"' : '';
- $return .= '<tr><td><input type="checkbox" id="acy_list_'.$oneList.'" class="acymailing_checkbox" name="acysub[]" '.$check.' value="'.$oneList.'"/></td><td nowrap="nowrap"><label for="acy_list_'.$oneList.'" class="acylabellist">';
- $return .= $allLists[$oneList]->name;
- $return .= '</label></td></tr>';
- }
- }else{
- $check = '';
- foreach($visibleListsArray as $oneList){
- if(in_array($oneList,$checkedListsArray)){ $check = 'checked="checked"'; break; };
- }
- $return = '<span class="acysubscribe_span"><input type="checkbox" id="acysubhidden" name="acysubhidden" value="'.implode(',',$visibleListsArray).'" '.$check.' /> <label for="acysubhidden">'.$subText.'</label>'.$listsDisplayed.'</span>';
- }
- $tdclass = '';
- if(!empty($components[$option]['tdclass'])) $tdclass = 'class="'.$components[$option]['tdclass'].'"';
- if(preg_match('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</tr>)#Uis',$body)){
- if($this->params->get('displaymode','dispall') == 'dispall'){
- $return = '<tr class="acysubscribe"><td '.$tdclass.' style="padding-top:5px" valign="top">'.$subText.$listsDisplayed.'</td><td><table>'.$return.'</table></td></tr>';
- }else{
- $return = '<tr class="acysubscribe"><td colspan="2">'.$return.'</td></tr>';
- }
- $body = preg_replace('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</tr>)#Uis','$1'.$return,$body,1);
- JResponse::setBody($body);
- return;
- }
- if(preg_match('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</div>)#Uis',$body)){
- if($this->params->get('displaymode','dispall') == 'dispall'){
- $return = '<div class="acysubscribe"><label class="labelacysubscribe">'.$subText.$listsDisplayed.'</label><table>'.$return.'</table></div>';
- }else{
- $return = '<div class="acysubscribe" '.@$components[$option]['acysubscribestyle'].' >'.$return.'</div>';
- }
- $body = preg_replace('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</div>)#Uis','$1'.$return,$body,1);
- JResponse::setBody($body);
- return;
- }
- if(preg_match('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</p>)#Uis',$body)){
- if($this->params->get('displaymode','dispall') == 'dispall'){
- $return = '<div class="acysubscribe"><label class="labelacysubscribe">'.$subText.$listsDisplayed.'</label><table>'.$return.'</table></div>';
- }else{
- $return = '<div class="acysubscribe">'.$return.'</div>';
- }
- $body = preg_replace('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</p>)#Uis','$1'.$return,$body,1);
- JResponse::setBody($body);
- return;
- }
- if(preg_match('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</dd>)#Uis',$body)){
- if($this->params->get('displaymode','dispall') == 'dispall'){
- $return = '<dt class="acysubscribe"><label class="labelacysubscribe">'.$subText.$listsDisplayed.'</label></dt><dd><table>'.$return.'</table></dd>';
- }else{
- $return = '<div class="acysubscribe">'.$return.'</div>';
- }
- $body = preg_replace('#(name="'.$after.'".{0,'.$components[$option]['lengthafter'].'}</dd>)#Uis','$1'.$return,$body,1);
- JResponse::setBody($body);
- return;
- }
- }
- function onUserBeforeSave($user, $isnew, $new){
- return $this->onBeforeStoreUser($user, $isnew);
- }
- function onBeforeStoreUser($user, $isnew){
- $this->oldUser = $user;
- return true;
- }
- function onUserAfterSave($user, $isnew, $success, $msg){
- return $this->onAfterStoreUser($user,$isnew,$success,$msg);
- }
- function onAfterStoreUser($user, $isnew, $success, $msg){
- if($success===false OR empty($user['email'])) return false;
- if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'helper.php')) return true;
- if(!isset($this->params)){
- $plugin =& JPluginHelper::getPlugin('system', 'regacymailing');
- $this->params = new JParameter( $plugin->params );
- }
- $config = acymailing::config();
- $joomUser = null;
- $joomUser->email = trim(strip_tags($user['email']));
- if(!empty($user['name'])) $joomUser->name = trim(strip_tags($user['name']));
- if(empty($user['block'])) $joomUser->confirmed = 1;
- $joomUser->enabled = 1 - (int)$user['block'];
- $joomUser->userid = $user['id'];
- $userClass = acymailing::get('class.subscriber');
- if(!$isnew AND !empty($this->oldUser['email']) AND $user['email'] != $this->oldUser['email']){
- $joomUser->subid = $userClass->subid($this->oldUser['email']);
- }
- if(empty($joomUser->subid)){
- $joomUser->subid = $userClass->subid($joomUser->userid);
- }
- $userClass->checkVisitor = false;
- $userClass->sendConf = false;
- if(isset($joomUser->email)){
- $userHelper = acymailing::get('helper.user');
- if(!$userHelper->validEmail($joomUser->email)) return true;
- }
- $subid = $userClass->save($joomUser);
- if($isnew || empty($joomUser->subid)){
- $listsToSubscribe = $config->get('autosub','None');
- $currentSubscription = $userClass->getSubscriptionStatus($subid);
- $config = acymailing::config();
- $listsClass = acymailing::get('class.list');
- $allLists = $listsClass->getLists('listid');
- if(acymailing::level(1)){
- $allLists = $listsClass->onlyCurrentLanguage($allLists);
- }
- $visiblelistschecked = JRequest::getVar( 'acysub', array(), '', 'array' );
- $acySubHidden = JRequest::getString( 'acysubhidden');
- if(!empty($acySubHidden)){
- $visiblelistschecked = array_merge($visiblelistschecked,explode(',',$acySubHidden));
- }
- if(empty($visiblelistschecked) AND !empty($_SESSION['acysub'])){
- $visiblelistschecked = $_SESSION['acysub'];
- unset($_SESSION['acysub']);
- }
- $listsArray = array();
- if(strpos($listsToSubscribe,',') OR is_numeric($listsToSubscribe)){
- $listsArrayParam = explode(',',$listsToSubscribe);
- foreach($allLists as $oneList){
- if($oneList->published AND (in_array($oneList->listid,$visiblelistschecked) || in_array($oneList->listid,$listsArrayParam))){$listsArray[] = $oneList->listid;}
- }
- }elseif(strtolower($listsToSubscribe) == 'all'){
- foreach($allLists as $oneList){
- if($oneList->published){$listsArray[] = $oneList->listid;}
- }
- }elseif(!empty($visiblelistschecked)){
- foreach($allLists as $oneList){
- if($oneList->published AND in_array($oneList->listid,$visiblelistschecked)){$listsArray[] = $oneList->listid;}
- }
- }
- $statusAdd = (empty($joomUser->enabled) OR (empty($joomUser->confirmed) AND $config->get('require_confirmation',false))) ? 2 : 1;
- $addlists = array();
- if(!empty($listsArray)){
- foreach($listsArray as $idOneList){
- if(!isset($currentSubscription[$idOneList])){
- $addlists[$statusAdd][] = $idOneList;
- }
- }
- }
- if(!empty($addlists)) {
- $listsubClass = acymailing::get('class.listsub');
- if(!empty($user['gid'])) $listsubClass->gid = $user['gid'];
- if(!empty($user['groups'])) $listsubClass->gid = $user['groups'];
- $listsubClass->addSubscription($subid,$addlists);
- }
- }else{
- if(!empty($this->oldUser['block']) AND !empty($joomUser->confirmed)){
- $userClass->confirmSubscription($subid);
- }
- }
- return true;
- }
- function onUserAfterDelete($user,$success,$msg){
- return $this->onAfterDeleteUser($user, $success, $msg);
- }
- function onAfterDeleteUser($user, $success, $msg){
- if($success===false) return false;
- if(!include_once(rtrim(JPATH_ADMINISTRATOR,DS).DS.'components'.DS.'com_acymailing'.DS.'helpers'.DS.'helper.php')) return true;
- $userClass = acymailing::get('class.subscriber');
- $subid = $userClass->subid($user['email']);
- if(!empty($subid)){
- $userClass->delete($subid);
- }
- return true;
- }
- }//endclass