Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
wp-content
/
plugins
/
vikbooking
/
admin
/
controllers
:
states.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * @package VikBooking * @subpackage core * @author E4J s.r.l. * @copyright Copyright (C) 2021 E4J s.r.l. All Rights Reserved. * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL * @link https://vikwp.com */ // No direct access defined('ABSPATH') or die('No script kiddies please!'); /** * VikBooking states controller. * * @since 1.16.0 (J) - 1.6.0 (WP) */ class VikBookingControllerStates extends JControllerAdmin { /** * AJAX endpoint to load the states of a given country. * * @return void */ public function load_from_country() { $dbo = JFactory::getDbo(); $id_country = VikRequest::getInt('id_country', 0, 'request'); $country_3_code = VikRequest::getString('country_3_code', '', 'request'); $country_2_code = VikRequest::getString('country_2_code', '', 'request'); $country_name = VikRequest::getString('country_name', '', 'request'); if (empty($id_country) && empty($country_3_code) && empty($country_2_code) && empty($country_name)) { VBOHttpDocument::getInstance()->close(500, 'Missing country identifier'); } if (!empty($id_country)) { $q = "SELECT * FROM `#__vikbooking_states` WHERE `id_country`=" . $id_country; $dbo->setQuery($q); $dbo->execute(); if (!$dbo->getNumRows()) { // no records found for this country VBOHttpDocument::getInstance()->json([]); } // output the JSON encoded list of states found VBOHttpDocument::getInstance()->json($dbo->loadAssocList()); } // find country ID by name or code $field_name = $dbo->qn('country_name'); $field_value = $country_name; if (!empty($country_3_code)) { $field_name = $dbo->qn('country_3_code'); $field_value = $country_3_code; } if (!empty($country_2_code)) { $field_name = $dbo->qn('country_2_code'); $field_value = $country_2_code; } $q = "SELECT `id` FROM `#__vikbooking_countries` WHERE {$field_name}=" . $dbo->quote($field_value); $dbo->setQuery($q, 0, 1); $id_country = $dbo->loadResult(); if (!$id_country) { // country not found VBOHttpDocument::getInstance()->close(404, sprintf('Country [%s] not found', $field_value)); } $q = "SELECT * FROM `#__vikbooking_states` WHERE `id_country`=" . $id_country; $dbo->setQuery($q); $states = $dbo->loadAssocList(); if (!$states) { // no records found for this country VBOHttpDocument::getInstance()->json([]); } // output the JSON encoded list of states found VBOHttpDocument::getInstance()->json($states); } /** * Adds a new state. */ public function add() { $app = JFactory::getApplication(); $app->redirect('index.php?option=com_vikbooking&view=managestate&idcountry=' . $app->input->getInt('idcountry', 0)); } /** * Modifies an existing state. */ public function edit() { $app = JFactory::getApplication(); $ids = $app->input->get('cid', [0], 'uint'); $app->redirect('index.php?option=com_vikbooking&view=managestate&id=' . $ids[0]); } /** * Removes one or more existing states. */ public function remove() { $dbo = JFactory::getDbo(); $app = JFactory::getApplication(); $ids = $app->input->get('cid', [0], 'uint'); $q = "DELETE FROM `#__vikbooking_states` WHERE `id` IN (" . implode(', ', $ids) . ")"; $dbo->setQuery($q); $dbo->execute(); $app->redirect('index.php?option=com_vikbooking&view=states'); } /** * Cancels the management operation. */ public function cancel() { $app = JFactory::getApplication(); $app->redirect('index.php?option=com_vikbooking&view=states'); } /** * Adds a new state/province. */ public function save() { $dbo = JFactory::getDbo(); $app = JFactory::getApplication(); $pidcountry = $app->input->getInt('idcountry', 0); $pstate_name = $app->input->getString('state_name', ''); $pstate_3_code = $app->input->getString('state_3_code', ''); $pstate_2_code = $app->input->getString('state_2_code', ''); $ppublished = $app->input->getInt('published', 0); if (empty($pidcountry) || empty($pstate_name)) { $app->enqueueMessage('Missing required values', 'error'); $app->redirect('index.php?option=com_vikbooking&task=states.add'); $app->close(); } if (empty($pstate_3_code)) { $pstate_3_code = function_exists('mb_substr') ? mb_substr($pstate_name, 0, 3, 'UTF-8') : substr($pstate_name, 0, 3); } if (empty($pstate_2_code)) { $pstate_2_code = function_exists('mb_substr') ? mb_substr($pstate_name, 0, 2, 'UTF-8') : substr($pstate_name, 0, 2); } $add_state = new stdClass; $add_state->id_country = $pidcountry; $add_state->state_name = $pstate_name; $add_state->state_3_code = $pstate_3_code; $add_state->state_2_code = $pstate_2_code; $add_state->published = $ppublished; $dbo->insertObject('#__vikbooking_states', $add_state, 'id'); if (!isset($add_state->id)) { $app->enqueueMessage('Could not create the new state/province'); } else { $app->enqueueMessage(JText::translate('JLIB_APPLICATION_SAVE_SUCCESS')); } $app->redirect('index.php?option=com_vikbooking&view=states'); } /** * Updates a state/province. */ public function update() { $this->do_update(); } /** * Updates a state/province. */ public function update_stay() { $this->do_update($stay = true); } /** * Updates a state/province. */ protected function do_update($stay = false) { $dbo = JFactory::getDbo(); $app = JFactory::getApplication(); $pid = $app->input->getInt('id', 0); $pidcountry = $app->input->getInt('idcountry', 0); $pstate_name = $app->input->getString('state_name', ''); $pstate_3_code = $app->input->getString('state_3_code', ''); $pstate_2_code = $app->input->getString('state_2_code', ''); $ppublished = $app->input->getInt('published', 0); if (empty($pid)) { $app->enqueueMessage('Missing record ID to update', 'error'); $app->redirect('index.php?option=com_vikbooking&view=states'); $app->close(); } if (empty($pidcountry) || empty($pstate_name)) { $app->enqueueMessage('Missing required values', 'error'); $app->redirect('index.php?option=com_vikbooking&task=states.edit&cid[]=' . $pid); $app->close(); } if (empty($pstate_3_code)) { $pstate_3_code = function_exists('mb_substr') ? mb_substr($pstate_name, 0, 3, 'UTF-8') : substr($pstate_name, 0, 3); } if (empty($pstate_2_code)) { $pstate_2_code = function_exists('mb_substr') ? mb_substr($pstate_name, 0, 2, 'UTF-8') : substr($pstate_name, 0, 2); } $set_state = new stdClass; $set_state->id = $pid; $set_state->id_country = $pidcountry; $set_state->state_name = $pstate_name; $set_state->state_3_code = $pstate_3_code; $set_state->state_2_code = $pstate_2_code; $set_state->published = $ppublished; $dbo->updateObject('#__vikbooking_states', $set_state, 'id'); $app->enqueueMessage(JText::translate('JLIB_APPLICATION_SAVE_SUCCESS')); if ($stay) { $app->redirect('index.php?option=com_vikbooking&task=states.edit&cid[]=' . $set_state->id); } else { $app->redirect('index.php?option=com_vikbooking&view=states'); } } }