HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/confeduphaar/backip-old-files/plugins/user/jnewssyncuser/jnewssyncuser.php
<?php
defined('_JEXEC') OR die('Access Denied!');
### © 2006-2020 Joobi. All rights reserved.
### license GNU GPLv3 , link https://joobi.org

jimport('joomla.plugin.plugin');


/**
 * Plugin to sync user with jNews
 */
class plgUserjNewssyncuser extends JPlugin {

	var $oldUser = null;
	
	function onBeforeStoreUser($user, $isnew){
		$this->oldUser = $user;
		return true;
	}

	//joomla 16
	function onUserAfterSave( $user, $isnew, $success, $msg ) {
		return $this->onAfterStoreUser($user, $isnew, $success, $msg);
	}
	
	//joomla 15
	function onAfterStoreUser($user, $isnew, $success, $msg){
		if($success===false) return false;
		
		if ( strtolower( substr( JPATH_ROOT, strlen(JPATH_ROOT)-13 ) ) =='administrator' ) {
			$adminPath = strtolower( substr( JPATH_ROOT, strlen(JPATH_ROOT)-13 ) );
		} else {
			$adminPath = JPATH_ROOT;
		}

		if ( ! defined( 'DS' ) ) define( 'DS', DIRECTORY_SEPARATOR );
		if ( !@include_once( $adminPath .DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_jnews'.DIRECTORY_SEPARATOR.'defines.php') ) return;
		include_once( JNEWSPATH_CLASS . 'class.jnews.php');
		require_once(JNEWS_JPATH_ROOT_NO_ADMIN .DIRECTORY_SEPARATOR.'administrator'.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.JNEWS_OPTION.DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.'class.subscribers.php');
		require_once(JNEWS_JPATH_ROOT_NO_ADMIN .DIRECTORY_SEPARATOR.'administrator'.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.JNEWS_OPTION.DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.'class.listssubscribers.php');
		
		jimport( 'joomla.html.parameter' );
		$plugin = JPluginHelper::getPlugin('user', 'jnewssyncuser');
		$registry = new JRegistry;
		  if( ! method_exists($registry,'loadString')) {
            $data = trim($plugin->params);
            $options = array('processSections' => false);
            if ((substr($data, 0, 1) != '{') && (substr($data, -1, 1) != '}'))
            {
                    $ini = JRegistryFormat::getInstance('INI');
                    $obj = $ini->stringToObject($data, $options);
            }
            else
            {
                    $obj = json_decode($data);
            }
            $registry->loadObject($obj);	
        } else {
              $registry->loadString( $plugin->params );
        }
      
		$params = $registry;

		$db = JFactory::getDBO();
		$subscriber = new stdClass();
		
		$confirmed = 1;
		if($user['block']) $confirmed = 0;

		$subscriber->email = trim(strip_tags($user['email']));
		if(!empty($user['name'])) $subscriber->name = trim(strip_tags($user['name']));
		if(empty($user['block'])) $subscriber->confirmed = 1;
		$subscriber->user_id = $user['id'];
		$subscriber->ip = jNews_Subscribers::getIP();
		$subscriber->receive_html = 1;
		$subscriber->confirmed = $confirmed;
		$subscriber->subscribe_date = time();
		$subscriber->language_iso = 'eng';
		$subscriber->timezone = '00:00:00';
		$subscriber->blacklist = 0;

		//check if the version of jnews is pro
		if($GLOBALS[JNEWS.'level'] > 2){
			$subscriber->column1='';
			$subscriber->column2='';
			$subscriber->column3='';
			$subscriber->column4='';
			$subscriber->column5='';
		}//end if check if the version is pro

		if(!$isnew AND !empty($this->oldUser['email']) AND $user['email'] != $this->oldUser['email']){
			$d['email']=$this->oldUser['email'];
			$infos=jNews_Subscribers::getSubscriberIdFromEmail($this->oldUser);
			$subscriber->id = $infos['subscriberId'];
		}

		if($isnew){ //new registered user

			$status= jNews_Subscribers::saveSubscriber($subscriber,$subscriber->id,true);

			if(empty($subscriber->id)){
				$subscriber->id =jNews_Subscribers::getSubscriberIdFromUserId($subscriber->user_id);
			}

			if(!($status)) return;
			$listsToSubscribe = $params->get('lists','');

			if(!empty($listsToSubscribe)) {
				$condition= ' WHERE `id` IN ('.$listsToSubscribe.')' ;
			}else{
				$condition=' WHERE `auto_add` > 0';
			}

			//get list ids of auto_add lists
			$query='SELECT `id`, `list_type`, `params` from `#__jnews_lists`'.$condition ;
			$db->setQuery($query);
			$autoListId=$db->loadObjectList();
			$error = $db->getErrorMsg();

			if (!empty($error)){
				echo  $error;
				return false;
			}else{

				//use for masterlists
				$listsA = array();

				foreach($autoListId as $autoId){

					if(!empty($autoId->params)){
						//use for masterlists
						$listsA[] = $autoId->id;
					}else{
						//for non-masterlists
						$subscriber->list_id=$autoId->id;
						jNews_ListsSubs::saveToListSubscribers($subscriber);
					}

					if($autoId->list_type == 2) {
						$subscribe = array();
						$subscribe[] = $autoId->id;
						if(!empty($subscribe)) jNews_ListsSubs::subscribeARtoQueue( $subscriber->id, $subscribe );
					}

				}//end of foreach

			}

			if( !empty($listsA) ){

			    //we check if the social class file exists for the implementation of master lists
				if ( @include_once( JNEWSPATH_ADMIN . 'social' .DIRECTORY_SEPARATOR. 'class.social.php' ) ) {
				if(class_exists('social')){

					$listidSubsA = array();
					$masterListSubscriber = new stdClass();

					//we check if configuration for master lists is enabled
					if( $GLOBALS[JNEWS.'use_masterlists'] ){

						if( ($GLOBALS[JNEWS.'level'] > 1) ){

							//we validate if the user can be subscribed to the list then we return the masterlistid
							//1 - MasterLists for all Potential Users
							$listidSubsA[] = jNews_Social::includeMasterListIds($subscriber->id,1,$listsA);
							//2 - MasterLists for all Registered Subscribers
							$listidSubsA[] = jNews_Social::includeMasterListIds($subscriber->id,2,$listsA);
						}

						if( ($GLOBALS[JNEWS.'level'] > 2) ){
							//we validate if the user can be subscribed to the list then we return the masterlistid
							//3 - MasterLists for all Front-end Subscribers
							$listidSubsA[] = jNews_Social::includeMasterListIds($subscriber->id,3,$listsA);
						}
					}

					$masterListSubscriber->id = $subscriber->id;
					$masterListSubscriber->list_id = $listidSubsA;
					jNews_ListsSubs::saveToListSubscribers($masterListSubscriber);

				}
				}

			}

		}else{ //confirmed registered user
//			if(!empty($this->oldUser['block']) AND !empty($subscriber->confirmed)){
			   if(empty($subscriber->id)) $subscriber->id =jNews_Subscribers::getSubscriberIdFromUserId($subscriber->user_id);
				plgUserjNewssyncuser::_confirmUserSubscription($subscriber->id);
                           if($isnew === false AND $success === true)
                           {
                                $status= jNews_Subscribers::saveSubscriber($subscriber,$subscriber->id);
                           }
//			}
		}//endelse

		return true;
	}
	
	function onUserAfterDelete($user, $success, $msg){
		return $this->onAfterDeleteUser($user, $success, $msg);
	}

	function onAfterDeleteUser($user, $success, $msg){
		if($success===false) return false;

		if ( strtolower( substr( JPATH_ROOT, strlen(JPATH_ROOT)-13 ) ) =='administrator' ) {
			$adminPath = strtolower( substr( JPATH_ROOT, strlen(JPATH_ROOT)-13 ) );
		} else {
			$adminPath = JPATH_ROOT;
		}

		if ( ! defined( 'DS' ) ) define( 'DS', DIRECTORY_SEPARATOR );
		if ( !@include_once( $adminPath .DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_jnews'.DIRECTORY_SEPARATOR.'defines.php') ) return;
		require_once(JNEWS_JPATH_ROOT_NO_ADMIN .DIRECTORY_SEPARATOR.'administrator'.DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.JNEWS_OPTION.DIRECTORY_SEPARATOR.'classes'.DIRECTORY_SEPARATOR.'class.subscribers.php');
		include_once( JNEWSPATH_CLASS . 'class.jnews.php');

		$d['email'] = $user['email'];
		$infos=jNews_Subscribers::getSubscriberIdFromEmail($d);
		$subscriberid= $infos['subscriberId'];

		if(!empty($subscriberid)){
			jNews_Subscribers::deleteSubscriber($subscriberid);
		}

		return true;
	}

/**
	 * Confirmed the subscriber
	 */
	 function _confirmUserSubscription($subscriberId) {
		$db = JFactory::getDBO();
		$status = false;
		if(empty($subscriberId)) return false;

		$query = 'UPDATE `#__jnews_subscribers` SET `confirmed` = 1 WHERE `id`=' . (int)$subscriberId;
	 	$db->setQuery($query);
		$status=$db->query();
		if($status){
			$query = 'UPDATE `#__jnews_queue` SET `suspend`= 0 WHERE `subscriber_id`=' . (int)$subscriberId;
			$db->setQuery($query);
			$status=$db->query();
		}
		return $status;

    }

}