AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.111
Web Server : Apache
System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : coopiak ( 151928)
PHP Version : 8.3.23
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/coopiak/amisdesseniors-fr/annonces/components/com_jlexreview/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/annonces/components/com_jlexreview/models/mail.php
<?php
/**
 * @package		JLex Review
 * @version		4.2.3
 * @copyright	Copyright (c) 2013-2018 JLexArt. All rights reserved
 * @license		GNU General Public License version 2 or later;
 * @author		www.jlexart.com
 */

defined ( "_JEXEC" ) or die;

class JLexReviewModelMail extends JModelLegacy
{
	protected function _getSectionFile($id)
	{
		static $section_files = array();

		if (array_key_exists($id, $section_files))
		{
			return $section_files[$id];
		}

		$query = $this->_db->getQuery(true);
		$query->select("params")
				->from("#__jlexreview_form")
				->where("id=" . $id);

		$form = $this->_db->setQuery($query)->loadResult();

		if (!$form)
		{
			return null;
		}

		$form = json_decode($form);

		$section_files[$id] = $form;

		return $form;
	}

	protected function _getReview($id, $sid)
	{
		$form = $this->_getSectionFile($sid);

		if (!$form)
		{
			return null;
		}

		$config = JLexReviewHelperAdmin::getConfig ();
		$query 	= $this->_db->getQuery(true);
		$query->select("*")
				->from("#__jlexreview_fields")
				->where("review_id=" . $id);

		$body = $this->_db->setQuery($query)->loadObjectList("field_id");

		if (!$body)
		{
			return null;
		}

		$results = array();

		foreach ($form->fs_data as $field)
		{
			$return = new stdClass();
			$return->value = "";

			if (!array_key_exists($field->id, $body) || empty($body[$field->id]->field_value))
			{
				continue;
			}

			$fieldval = $body[$field->id];

			$return->label = JText::_($field->label);

			if (isset($field->rating_data))
			{
				if ($config->get("criteria_display","percent")=="percent")
				{
					$percent = intval($body[$field->rating_data->id]->field_value*100/$field->rating_data->max);
					$return->rating = $percent . "%";
				} else {
					$return->rating = $body[$field->rating_data->id]->field_value . "/" . $field->rating_data->max;
				}
			}

			switch ($field->type)
			{
				case "select":
				case "checkbox":
				case "radio":
					$html = "";
					$options_data 	= preg_split("/(\r\n|\n|\r)/", $field->options);
					$options 		= array();
					foreach ($options_data as $line)
					{
						$line = explode("|", $line);
						$options[$line[0]] = $line[1];
					}

					if ($fieldval->field_multiple=="1")
					{
						$values = explode("|", $fieldval->field_value);
						if (count($values))
						{
							foreach ($values as $selected)
							{
								$html.= '<span class="_badge">'.$options[$selected].'</span> ';
							}
						}
					} else {
						$html .= '<span class="_badge">'.$options[$fieldval->field_value].'</span> ';
					}

					$return->value = $html;
					break;

				case "text":
				case "textarea":
					$return->value = strip_tags($fieldval->field_value);
					$return->value = nl2br($return->value);

					if (preg_match('/^\s*$/', $return->value))
					{
						$return->value = JLexReviewHelperSite::subwords($return->value , 20);
					}
					break;

				case "rating":
					if ($config->get("criteria_display","percent")=="percent")
					{
						$percent = intval($fieldval->field_value*100/$field->max);
						$return->rating = $percent . "%";
					} else {
						$return->rating = $fieldval->field_value . "/" . $field->max;
					}
					
					break;
			}

			$results[] = $return;
		}

		return $results;
	}

	public function mail_subscribe ()
	{
		set_time_limit(0);
		$person_each_time 	= 20;
		$config 			= JLexReviewHelperAdmin::getConfig ();
		$now 				= JFactory::getDate ()->toSql ();

		if($config->get("enable_subscribe",0)==0) return;

		// 1. Select max point
		$query = $this->_db->getQuery (true);
		$query->select ('point')
			  ->from ('#__jlexreview_subscribe')
			  ->where('sub_type=1')
			  ->group ('point')
			  ->order ('point DESC');

		$points = $this->_db->setQuery($query,0,2)->loadColumn();
		if(!$points) return;

		// 2. Get list people to send
		$query->clear ()
			  ->select ('sub.*, item.object_name, item.object_id, item.object, item.url, item.section_file')
			  ->from ('#__jlexreview_subscribe sub')
			  ->leftJoin ('#__jlexreview_entry item ON item.id=sub.sub_value')
			  ->where (array(
			  		'item.id IS NOT NULL',
			  		'sub_type=1',
			  		'item.published=1'
			  	))
			  ->order('sub.id ASC');


		if($points && count($points)==2)
		{
			$query->where('point<'.$points[0]);
		}

		$items = $this->_db->setQuery($query, 0, $person_each_time)
						   ->loadObjectList ();

		$next_point = count($points)==2?$points[0]:($points[0]+1);

		
		// 4. Bind to template
		$path = trim($config->get('email_tpl_path',''),'/');
	   	if (preg_match('/^\s*$/', $path))
        {
            $path = 'administrator/components/com_jlexreview/libs/email_templates';
        }
        $path = JPATH_ROOT.'/'.$path;

	   	$email_tpl = $path . '/subscribe.tpl.php';
	    if (! JFile::exists ($email_tpl))
	    {
	    	return false;
	    }

	    // 5. Get Joomla! config
	    $joomla_config = JFactory::getConfig();
	    $email_from = $joomla_config->get("mailfrom");

		if (! $items)
		{
			// no user available, reset point
			$query = "UPDATE #__jlexreview_subscribe SET point=0 WHERE sub_type=1";
			$this->_db->setQuery($query)->execute();
			return null;
		}

		$userClass  = JLexReviewHelperSite::getProfile();

		foreach ( $items as $k=>&$item )
		{
			$item->user = $userClass->getUser($item->userid*1, $item->guest_email, $item->guest_name);
			$item->point_created = empty ($item->point_created) ? $item->created : $item->point_created;
			
			// entry
			if ($config->get("link_type",0)=="1")
            {
                $up =  JLexReviewHelperAdmin::getItemDetail($item->object, $item->object_id, $item->object_name, $item->url);
                $item->url = str_replace(JUri::root(true), '', $up->url);
                $item->object_name = $up->title;
            } else {
                $item->url  = urldecode($item->url);
            }

            $item->url  = trim($item->url, '/');
            $item->url  = preg_match("/^https?:\/\//", $item->url) ? $item->url : JUri::root() . $item->url;

			$query->clear();

			// where clause
			$whereClauses = array (
					'r.published=1',
					'r.created >= ' . $this->_db->quote($item->point_created),
					'r.created < ' . $this->_db->quote($now),
					'r.entry_id=' . $item->sub_value
				);

			$query->select ('SQL_CALC_FOUND_ROWS r.id,r.title,r.author_name,r.created,r.created_by')
				  ->from ("#__jlexreview r")
				  ->where ($whereClauses)
	        	  ->order ('r.id ASC')
				  ->group ('CONCAT(r.created_by,"-",r.ip_address,"-",r.author_name)');

	        $reviews 	= $this->_db->setQuery($query, 0, 7)->loadObjectList();
	        $total 		= (int) $this->_db->setQuery("SELECT FOUND_ROWS()")->loadResult();

	        if ($reviews)
	        {
	        	$names = array();

	        	foreach ($reviews as $k1=>&$review)
	        	{
	        		$review->author = $userClass->getUser($review->created_by, '', $review->author_name);
	        		$review->url = $item->url .(stripos($item->url,'?')!==false?'&':'?'). 'review_id=' . $review->id;

			        if (!preg_match('/^\s*$/', $review->title))
			        {
			        	$review->title = JLexReviewHelperAdmin::subwords($review->title,20);
			        } else {
			        	$review->title = null;
			        }

			        $review->body = $this->_getReview($review->id, $item->section_file);

		        	if($k<3)
			        	$names[]=$review->author->get('jname');
	        	}
	        }

	        if ($total > 0)
	        {
	        	// link to unsubscribe
	        	$hash = md5("jlexreview-subscribe-" . $item->id);
	        	$unsubscribe = JRoute::_('index.php?option=com_jlexreview&view=mail&task=unsubscribe&id='.$item->id.'&hash='.$hash, false, 2);

	        	if($total>3)
	        	{
	        		$title = JText::sprintf("JR_ALERT_PEOPLE_POST_REVIEW_IN_AN_ITEM", implode (",", $names), ($total-3), $item->object_name);
	        	} else {
	        		$title = JText::sprintf("JR_ALERT_USER_POST_REVIEW_IN_AN_ITEM", implode (",", $names), $item->object_name);
	        	}

	        	// bind to template
	        	ob_start ();
	        	include $email_tpl;
	        	$body = ob_get_contents();
	        	ob_end_clean ();


	        	// send.
	        	$appConfig = JFactory::getConfig();
				JFactory::getMailer()->sendMail($appConfig->get("mailfrom"), $appConfig->get("fromname"), $item->user->get("email"), $title, $body, true);

	        }
	        
			/*---- update point ----*/
			$subQuery = "UPDATE #__jlexreview_subscribe SET point=" . $next_point;
				$subQuery.= ", point_created=" .$this->_db->quote ($now). " WHERE id=" . $item->id;

			$this->_db->setQuery($subQuery)->execute();
		}

		return true;
	}

	public function mail_follow()
	{
		set_time_limit(0);
		$person_each_time 	= 20;
		$config 			= JLexReviewHelperAdmin::getConfig ();
		$now 				= JFactory::getDate ()->toSql ();

		if ($config->get("enable_following",0)==0)
		{
			return false;
		}

		// 1. Select max point
		$query = $this->_db->getQuery(true);
		$query->select('point')
			  ->from('#__jlexreview_subscribe')
			  ->where('sub_type=0')
			  ->group('point')
			  ->order('point DESC');

		$points = $this->_db->setQuery($query,0,2)->loadColumn();

		// 2. Get list people to send
		$query->clear()
			  ->select('sub.*')
			  ->from('#__jlexreview_subscribe sub')
			  ->where(array(
			  		'sub_type=0'
			  	))
			  ->order('sub.id ASC');


		if($points && count($points)==2)
		{
			$query->where('point < ' . $points [0]);
		}

		$items = $this->_db->setQuery($query, 0, $person_each_time)
						   ->loadObjectList();
		
		$next_point = 0;
		if($points)
			$next_point = count($points)==2 ? $points [0] : $points [0]+1;

		
		// 4. Bind to template
		$path = trim($config->get('email_tpl_path',''),'/');
	   	if (preg_match('/^\s*$/', $path))
        {
            $path = 'administrator/components/com_jlexreview/libs/email_templates';
        }
        $path = JPATH_ROOT.'/'.$path;
	   	$email_tpl = $path . '/follow.tpl.php';
	    if (! JFile::exists ($email_tpl))
	    {
	    	return false;
	    }

	    $joomla_config = JFactory::getConfig();
	    $email_from = $joomla_config->get("mailfrom");

		if (! $items)
		{
			// no user available, reset point
			$query = "UPDATE #__jlexreview_subscribe SET point=0 WHERE sub_type=0";
			$this->_db->setQuery($query)->execute();
			return null;
		}

		$userClass  = JLexReviewHelperSite::getProfile();
		foreach ( $items as $k=>$item )
		{
			$item->user = $userClass->getUser( $item->userid*1, $item->guest_email, $item->guest_name);
			$item->author = $userClass->getUser( $item->sub_value*1);
			$item->point_created = empty ($item->point_created) ? $item->created : $item->point_created;
			
			$query->clear ();

			// where clause
			$whereClauses = array (
					'item.id IS NOT NULL',
					'r.published=1',
					'r.created>=' . $this->_db->quote ($item->point_created),
					'r.created<' . $this->_db->quote ($now),
					'r.created_by=' . $item->sub_value
				);

			$query->select ('SQL_CALC_FOUND_ROWS r.id, r.title, item.*')
				  ->from ("#__jlexreview r")
				  ->leftJoin ("#__jlexreview_entry item ON item.id=r.entry_id");

	        $query->where ($whereClauses)
	        	  ->group ('r.entry_id')
	        	  ->order ('r.id ASC');

	        $reviews = $this->_db->setQuery ($query, 0, 7)->loadObjectList ();
	        $total 	 = $this->_db->setQuery("SELECT FOUND_ROWS()")->loadResult();

	        if ($reviews)
	        {
	        	foreach ($reviews as $k1=>&$review)
	        	{
	        		// entry
					if ($config->get("link_type",0)=="1")
		            {
		                $up =  JLexReviewHelperAdmin::getItemDetail($review->object, $review->object_id, $review->object_name, $review->url);
		                $review->url = str_replace(JUri::root(true), '', $up->url);
		                $review->object_name = $up->title;
		            } else {
		                $review->url  = urldecode($item->url);
		            }

		            $review->url  	= trim($review->url, '/');
           			$review->url  	= preg_match("/^https?:\/\//", $review->url) ? $review->url : JUri::root() . $review->url;
	        		$review->url 	= $review->url .(stripos($review->url,'?')!==false?'&':'?'). 'review_id=' . $review->id;

			        if (!preg_match('/^\s*$/', $review->title))
			        {
			        	$review->title = JLexReviewHelperAdmin::subwords($review->title,20);
			        }

			        $review->body = $this->_getReview($review->id, $review->section_file);
	        	}
	        }

	        if ($total > 0)
	        {
	        	// link to unsubscribe
	        	$hash = md5("jlexreview-subscribe-" . $item->id);
	        	$unsubscribe = JRoute::_('index.php?option=com_jlexreview&view=mail&task=unsubscribe&id='.$item->id.'&hash='.$hash, false, 2);

	        	$title = JText::sprintf("JR_ALERT_USER_POST_REVIEW_IN_AN_ITEM", $item->author->get('jname'), $reviews[0]->object_name);

	        	// bind to template
	        	ob_start ();
	        	include $email_tpl;
	        	$body = ob_get_contents ();
	        	ob_end_clean ();

	        	// send.
	        	$appConfig = JFactory::getConfig();
				JFactory::getMailer()->sendMail($appConfig->get("mailfrom"), $appConfig->get("fromname"), $item->user->get("email"), $title, $body, true);
	        }

			/*---- update point ----*/
			$subQuery = "UPDATE #__jlexreview_subscribe SET point=" . $next_point;
				$subQuery.= ", point_created=" .$this->_db->quote ($now). " WHERE id=" . $item->id;

			$this->_db->setQuery ($subQuery)->execute();
		}

		return true;
	}

	public function mail_notification ()
	{
		set_time_limit(0);
		$config = JLexReviewHelperAdmin::getConfig();

		if ($config->get("admin_alert",0)==0 && $config->get("user_alert",0)==0)
		{
			return false;
		}

		// where clause
		$point_time = $config->get("alert_date", JFactory::getDate()->toSql ());

		$query = $this->_db->getQuery(true);
		$query->select('alert.*')
			  ->from('#__jlexreview_notification alert')
			  ->where(array(
			  		'alert.unread=1',
			  		'alert.sent=0'
			  	))
			  ->order( 'alert.id ASC' );

		/**
		if ($config->get("admin_alert_send_method",1)==0 || $config->get("admin_alert",0)==0) // if set admin method is imelidately
		{
			$query->where('alert.user_remind>0');
		}
		**/
		if(!$config->get('guest_alert',0))
		{
			$query->where('alert.user_remind>0');
		}

		$rows = $this->_db->setQuery($query,0,20)->loadObjectList();

		if(!$rows) return null;

		$userClass  = JLexReviewHelperSite::getProfile();

		foreach ($rows as $row)
		{
			$row->user = $userClass->getUser($row->user_remind, $row->user_email, $row->user_email);

			$row->email_dest = $row->user_remind>0?$row->user->get("email"):$row->user_email;

			$row->author = $userClass->getUser($row->created_by, '', $row->guest_name);

			$emails = explode(",", $config->get("admin_alert_emails",""));
			
			JLexReviewHelperAdmin::getAlert()->set($row)->send($emails, $config->get("admin_alert_quicktask",1)==1?true:false);
		}

        return null;
	}

	public function unsubscribe()
	{
		$app  = JFactory::getApplication();
		$id   = $app->input->getInt("id", 0);
		$hash = md5("jlexreview-subscribe-" . $id);
		$hash_input = $app->input->getString("hash", "");

		if ($hash_input!=$hash || $id<1)
		{
			$this->setError(JText::_("JR_USER_NOT_FOUND"));
			return false;
		}

		$query = "DELETE FROM #__jlexreview_subscribe WHERE id=" . $this->_db->quote ($id);
		$this->_db->setQuery($query)->execute();

		$row = $this->_db->setQuery($query)->getAffectedRows();

		if($row<1)
		{
			$this->setError(JText::_("JR_USER_NOT_FOUND"));
			return false;
		}

		return true;
	}

	public function stop()
	{
		$app  = JFactory::getApplication();
		$id   = $app->input->getInt("id", 0);
		$hash = md5("jlexreview-notification-" . $id);
		$hash_input = $app->input->getString("hash", "");
		$now  = JFactory::getDate()->toSql();

		if ($hash_input!=$hash || $id<1)
		{
			$this->setError(JText::_("JR_USER_NOT_FOUND"));
			return false;
		}

		$row = $this->getTable("NotificationOff", "TableJR");
		$row->bind(array(
				"uid" => $id,
				"created_time" => $now,
				"published" => 1
			));

		if ($row->check())
		{
			$row->store();
		}

		return true;
	}
}

Anon7 - 2022
AnonSec Team