File manager - Edit - /home/verseaumee/ptitsanes/plugins/solidres/feedback/administrator/components/com_solidres/tables/feedback.php
Back
<?php /* ------------------------------------------------------------------------ Solidres - Hotel booking extension for Joomla ------------------------------------------------------------------------ @Author Solidres Team @Website http://www.solidres.com @Copyright Copyright (C) 2013 - 2018 Solidres. All Rights Reserved. @License GNU General Public License version 3, or later ------------------------------------------------------------------------ */ defined('_JEXEC') or die; /** * Feedback type table * * @package Solidres * @subpackage Feedback * @since 0.8.0 */ JLoader::register('SolidresFeedBackHelper', SRPlugin::getAdminPath('feedback') . '/helpers/feedback.php'); class SolidresTableFeedBack extends JTable { public function __construct(JDatabaseDriver $db) { parent::__construct('#__sr_feedbacks', 'id', $db); } public function store($updateNulls = false) { $app = JFactory::getApplication(); $db = $this->getDbo(); $this->scope = (int) $this->scope > 0 ? 1 : 0; if ($this->scope && !SRPlugin::isEnabled('experience')) { $this->scope = 0; } if ($this->id) { $this->modified_date = JFactory::getDate()->toSql(); } elseif ($this->reservation_id) { if (SolidresFeedBackHelper::hasFeedback($this->scope, $this->reservation_id)) { $this->setError(JText::_('SR_FEEDBACK_WARNING_YOU_HAD_FEEDBACK_FOR_THIS_RESERVATION')); return false; } } if ($this->reservation_id) { $db = $this->getDbo(); $query = $db->getQuery(true); if ($this->scope) { $query->select('a.experience_id') ->from($db->qn('#__sr_experience_reservations', 'a')) ->where('a.id = ' . (int) $this->reservation_id); } else { $query->select('a.reservation_asset_id') ->from($db->qn('#__sr_reservations', 'a')) ->where('a.id = ' . (int) $this->reservation_id); } $db->setQuery($query); if ($itemId = $db->loadResult()) { $this->item_id = (int) $itemId; } } if (empty($this->created_date)) { $this->created_date = JFactory::getDate()->toSql(); } /* Scores Handle */ $scores = $app->input->get('scores', array(), 'array'); $score_field = $app->input->get('score_field', array(), 'array'); $scoreCount = count($scores); $maxScore = (int) JComponentHelper::getParams('com_solidres')->get('feedback_max_scores', 10); foreach ($scores as &$score) { $score = (int) $score; if ($score < 1 || $score > $maxScore) { $this->setError(JText::_('SR_FEEDBACK_ERR_INVALID_SCORE_NUMBER')); if ($this->id) { $feedbackModel = JModelLegacy::getInstance('Feedback', 'SolidresModel', ['ignore_request' => true]); $feedback = $feedbackModel->getItem($this->id); if (!empty($feedback->feedback_score_rate)) { $app->input->post->set('feedbackScoreRate', $feedback->feedback_score_rate); } } return false; } } if ($result = parent::store($updateNulls)) { $jform = $app->input->post->get('jform', array(), 'array'); $feedback_type_value = $jform['feedback_type_value_id']; settype($feedback_type_value, 'array'); if (count($feedback_type_value)) { $tblAttrXref = $db->qn('#__sr_feedback_attribute_xref'); $tblScore = $db->qn('#__sr_feedback_scores'); $tblReservation = $db->qn('#__sr_reservations'); try { $feedback_id = (int) $this->id; $db->setQuery('SELECT feedback_id, feedback_attribute_value_id FROM #__sr_feedback_attribute_xref WHERE feedback_id = ' . $feedback_id); $old_data = (array) $db->loadRowList(); $query = $db->getQuery(true) ->insert($tblAttrXref) ->columns(array('id', 'feedback_id', 'feedback_attribute_value_id')); $values = array(); if ($old_data) { $removes = array(); foreach ($old_data AS &$odata) { $key = (string) join('.', $odata); $removes[$key] = '(feedback_id = ' . $odata[0] . ' AND feedback_attribute_value_id = ' . $odata[1] . ')'; $odata = $key; } } foreach ($feedback_type_value AS $value) { $key = (string) ($feedback_id . '.' . $value); if (in_array($key, $old_data)) { unset($removes[$key]); continue; } $values[] = '0,' . $feedback_id . ',' . $value; } if (count($values)) { $query->values($values); $db->setQuery($query) ->execute(); } if (!empty($removes)) { $query->clear() ->delete($tblAttrXref); $query->where(join(' OR ', $removes)); $db->setQuery($query) ->execute(); } $query->clear() ->update($tblReservation) ->set('token = NULL') ->where('id = ' . (int) $this->reservation_id); $db->setQuery($query) ->execute(); if ($scoreCount > 0) { $query->clear() ->delete($tblScore) ->where('feedback_id = ' . $feedback_id); $db->setQuery($query) ->execute(); for ($i = 0; $i < $scoreCount; $i++) { $scoreField = preg_split('/\:\:/', $score_field[$i], 2); $score_field_id = (int) $scoreField[1]; $query->clear() ->insert($tblScore) ->set(array('score = ' . (int) $scores[$i], 'feedback_id = ' . $feedback_id, 'field_id = ' . $score_field_id)); $db->setQuery($query) ->execute(); } } } catch (RuntimeException $e) { $app->enqueueMessage($e->getMessage(), 'error'); return false; } } } return $result; } public function delete($pk = null) { try { $pk = (int) $pk; $db = $this->getDbo(); $query = $db->getQuery(true) ->delete($db->quoteName('#__sr_feedback_attribute_xref')) ->where('feedback_id = ' . $pk); $db->setQuery($query)->execute(); $query->clear() ->delete($db->quoteName('#__sr_feedback_scores')) ->where('feedback_id = ' . $pk); $db->setQuery($query)->execute(); return parent::delete($pk); } catch (Exception $ex) { $this->setError($ex->getMessage()); return false; } } public function check() { if ((int) $this->reservation_id < 1 && (int) $this->item_id < 1) { $this->setError(JText::_('SR_FEEDBACK_ERR_REQUIRED_RESERVATION_OR_ITEM_SCOPE_' . $this->scope . '_MESSAGE')); return false; } return true; } }
| ver. 1.4 |
Github
|
.
| PHP 8.5.7 | Generation time: 0 |
proxy
|
phpinfo
|
Settings