| 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/nimes/components/com_rsfeedback/models/ |
Upload File : |
<?php
/**
* @package RSFeedback!
* @copyright (C) 2010-2018 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
use Joomla\CMS\MVC\Model\AdminModel;
use Joomla\CMS\Mail\MailHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Table\Table;
use Joomla\CMS\Factory;
class RSFeedbackModelCategory extends AdminModel
{
protected $_context = 'com_rsfeedback.category';
public function getTable($type = 'Category', $prefix = 'RSFeedbackTable', $config = array()) {
return Table::getInstance($type, $prefix, $config);
}
public function getItem($pk = null) {
$app = Factory::getApplication();
$db = Factory::getDbo();
$query = $db->getQuery(true);
$params = $app->getParams();
$pk = ($pk ? $pk : $app->input->get('id', 0, 'int'));
$item = parent::getItem($pk);
$columns[] = 'f.*';
$columns[] = $db->qn('s.name').' as status_name';
$columns[] = $db->qn('s.default').' as status_default';
$columns[] = $db->qn('u.username');
$columns[] = 'COALESCE(SUM('.$db->qn('uv.number_points').'),0) as nr_votes';
$columns[] = $db->qn('c.max_votes_allowed');
$columns[] = $db->qn('c.name').' as category_name';
$columns = implode(',',$columns);
$query->select($columns)
->from($db->qn('#__rsfeedback_feedbacks').' f')
->join('left', $db->qn('#__rsfeedback_statuses').' s ON '.$db->qn('s.id').' = '.$db->qn('f.status_id'))
->join('left', $db->qn('#__rsfeedback_user_votes').' uv ON '.$db->qn('uv.feedback_id').' = '.$db->qn('f.id'))
->join('left', $db->qn('#__rsfeedback_categories').' c ON '.$db->qn('c.id').' = '.$db->qn('f.cat_id'))
->join('left', $db->qn('#__users').' u ON '.$db->qn('u.id').' = '.$db->qn('f.user_id'));
$query->where($db->qn('f.published') .' = '.$db->q('1'));
// search filter
if ($search = $app->input->get('search', '', 'string'))
$query->where(" (".$db->qn("f.title")." LIKE ".$db->q("%".$search."%")." OR ".$db->qn("f.text")." LIKE ".$db->q("%".$search."%").") ");
$query->where($db->qn('f.cat_id').' = '.$db->q($item->id));
$query->group($db->qn('f.id'));
$query->order($db->qn('f.id').' DESC');
$db->setQuery($query);
$item->children = $db->loadObjectList();
return $item;
}
protected function populateState($ordering = 'f.id', $direction = 'DESC') {
$app = Factory::getApplication();
// Load the parameters.
$params = $app->getParams();
$this->setState('params', $params);
// Search filter
$search = $app->input->get('search', '', 'string');
$this->setState('filter.search', $search);
}
public function getForm($data = array(), $loadData = true) {
$form = $this->loadForm('com_rsfeedback.category', 'category', array('control' => 'jform', 'load_data' => $loadData));
if (empty($form))
return false;
return $form;
}
protected function loadFormData() {
// Check the session for previously entered form data.
$app = Factory::getApplication();
$data = $app->getUserState('com_rsfeedback.edit.category.data', array());
$id = $app->input->get('id', 0, 'int');
if (!empty($id))
$data = $this->getItem();
return $data;
}
protected function canDelete($record) {
return (bool) RSFeedbackHelper::getPermissions('category_delete');
}
public function delete(&$pk) {
$model = BaseDatabaseModel::getInstance('feedbacks', 'RSFeedbackModel');
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->select($db->qn('id'))->from($db->qn('#__rsfeedback_feedbacks'))->where($db->qn('cat_id').' = '.$db->q($pk));
$db->setQuery($query);
$category_feedbacks = $db->loadObjectList();
if (!empty($category_feedbacks)) {
foreach ($category_feedbacks as $feedback)
$model->delete($feedback->id);
}
return parent::delete($pk);
}
public function save($data) {
$permissions = RSFeedbackHelper::getPermissions();
// if category_moderation is on, set published=0 for new categories before saving
if ($permissions['category_moderation'])
$data['published'] = 0;// set the category state to unpublish
// send moderation emails if save returned true
if (parent::save($data)) {
if ($permissions['category_moderation']) {
$config = RSFeedbackHelper::getConfig();
$jconfig = Factory::getConfig();
$user = Factory::getUser();
// send mail to the category_moderation_emails in the config
$emails = $config->category_moderation_emails;
$emails = str_replace("\r", "", $emails);
if (!empty($emails)) {
$from_email = $jconfig->get('mailfrom');
$from_name = $jconfig->get('fromname');
if ($data['id'] == 0) {
$subject = Text::sprintf('COM_RSFEEDBACK_SUBJECT_REQUIRE_MODERATION_CATEGORY',$user->name);
$body = Text::sprintf('COM_RSFEEDBACK_BODY_REQUIRE_MODERATION_CATEGORY', $user->name, $data['name']);
} else {
$subject = Text::sprintf('COM_RSFEEDBACK_SUBJECT_REQUIRE_MODERATION_UPDATED_CATEGORY',$user->name);
$body = Text::sprintf('COM_RSFEEDBACK_BODY_REQUIRE_MODERATION_UPDATED_CATEGORY', $user->name, $data['name']);
}
$emails = explode("\n",$emails);
foreach ($emails as $email)
if (MailHelper::isEmailAddress(trim($email)))
Factory::getMailer()->sendMail($from_email, $from_name, $email, $subject, $body, 1);
}
}
return true;
}
}
}