File manager - Edit - /home/verseaumee/ptitsanes/plugins/solidres/experience/solidres.scriptfile.php
Back
<?php /** ------------------------------------------------------------------------ SOLIDRES - Accommodation booking extension for Joomla ------------------------------------------------------------------------ * @author Solidres Team <contact@solidres.com> * @website https://www.solidres.com * @copyright Copyright (C) 2013 - 2019 Solidres. All Rights Reserved. * @license GNU General Public License version 3, or later ------------------------------------------------------------------------ */ defined('_JEXEC') or die; class plgSolidresExperienceInstallerScript { public function install($adapter) { $plugins = JFolder::folders($adapter->getParent()->getPath('source') . '/experiencepayment', '[^\.]', false, true); $db = JFactory::getDbo(); $query = $db->getQuery(true) ->update($db->qn('#__extensions')) ->set('enabled = 1') ->where($db->qn('type') . ' = ' . $db->q('plugin')) ->where($db->qn('folder') . ' = ' . $db->q('solidres')) ->where($db->qn('element') . ' = ' . $db->q('experience')); $db->setQuery($query) ->execute(); foreach ($plugins as $plugin) { $installer = new JInstaller; $installer->setPath('source', $plugin); $newAdapter = $installer->setupInstall('install', true); if (is_object($newAdapter) && $newAdapter->install()) { $pluginName = trim(basename($plugin)); $query->clear() ->update($db->qn('#__extensions')) ->set('enabled = 1') ->where($db->qn('type') . ' = ' . $db->q('plugin')) ->where($db->qn('folder') . ' = ' . $db->q('experiencepayment')) ->where($db->qn('element') . ' = ' . $db->q($pluginName)); $db->setQuery($query) ->execute(); } } $query->clear(); $query->select('COUNT(*)') ->from($db->quoteName('#__sr_customfields')) ->where($db->quoteName('context') . ' = ' . $db->quote('com_solidres.experience.customer')); $count = $db->setQuery($query)->loadResult(); if ($count < 1) { $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Title', 'customer_title', '1', 'select', '1', '2015-12-03 07:28:48', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{\"multiple\":\"0\",\"options\":[{\"text\":\"Mr.\",\"value\":\"Mr.\"},{\"text\":\"Mrs.\",\"value\":\"Mrs.\"},{\"text\":\"Ms.\",\"value\":\"Ms.\"}],\"format\":\"dd-mm-yy\"}', '17', '0', NULL, 0)")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'First name', 'customer_firstname', '1', 'text', '0', '2015-12-03 09:06:03', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '18', '0', NULL, 0)")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Middlename', 'customer_middlename', '1', 'text', '1', '2015-12-03 09:06:35', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '19', '0', NULL, 0)")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Last name', 'customer_lastname', '1', 'text', '0', '2015-12-03 09:07:18', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '20', '0', NULL, 0)")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Email', 'customer_email', '1', 'email', '0', '2015-12-03 09:07:37', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '21', '0', NULL, 0) ")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Confirm Email', 'customer_email2', '1', 'email', '0', '2015-12-03 09:07:37', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '22', '0', 'Confirm your email address.', 0)")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Landline number', 'customer_phonenumber', '1', 'text', '0', '2015-12-03 09:08:03', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '23', '0', NULL, 0) ")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Mobile phone', 'customer_mobilephone', '1', 'text', '1', '2015-12-03 09:08:13', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '24', '0', NULL, 0)")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Company', 'customer_company', '1', 'text', '1', '2015-12-03 09:08:26', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '25', '0', NULL, 0) ")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Address 1', 'customer_address1', '1', 'text', '0', '2015-12-03 09:08:46', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '26', '0', NULL, 0) ")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Address 2', 'customer_address2', '1', 'text', '1', '2015-12-03 09:09:14', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '27', '0', NULL, 0) ")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'VAT number', 'customer_vat_number', '1', 'text', '1', '2015-12-03 09:09:38', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '28', '0', NULL, 0)")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'City', 'customer_city', '1', 'text', '0', '2015-12-03 09:09:54', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '29', '0', NULL, 0) ")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Zip/Postal code', 'customer_zipcode', '1', 'text', '1', '2015-12-03 09:10:07', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '30', '0', NULL, 0)")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Country', 'customer_country_id', '1', 'country', '0', '2015-12-03 09:10:49', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '31', '0', NULL, 0) ")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'State/Province', 'customer_geo_state_id', '1', 'zone_state', '1', '2015-12-03 09:11:23', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '32', '0', NULL, 0)")->execute(); $db->setQuery("INSERT INTO " . $db->quoteName('#__sr_customfields') . " VALUES ('0', 'Note', 'customer_note', '1', 'textarea', '1', '2015-12-03 09:11:49', '0', '0', '0000-00-00 00:00:00', '1', 'com_solidres.experience.customer', '{}', '33', '0', NULL, 0)")->execute(); } $contentElementPath = JPATH_ADMINISTRATOR . '/components/com_falang/contentelements'; if (JFolder::exists($contentElementPath)) { $path = $adapter->getParent()->getPath('source') . '/administrator/components/com_solidres/falang'; $translateFiles = JFolder::files($path, '\.xml', false, true); foreach ($translateFiles as $file) { JFile::copy($file, $contentElementPath . '/' . basename($file)); } } } public function update($adapter) { $this->install($adapter); $db = JFactory::getDbo(); if ((string) $adapter->getManifest()->version == '0.3.0') { $query = $db->getQuery(true) ->select($db->qn('id')) ->from($db->qn('#__sr_experience_reservations')); $db->setQuery($query); if (($pks = $db->loadColumn()) && SRPlugin::isEnabled('experience')) { foreach ($pks as $pk) { SRExperienceHelper::updateCustomerName($pk); } } } $query = $db->getQuery(true) ->select('COUNT(*)') ->from($db->qn('#__sr_experience_date_xref')); $db->setQuery($query); if (!$db->loadResult()) { $query->clear() ->select('a.id, a.available_dates', 'a') ->from($db->qn('#__sr_experiences', 'a')); $db->setQuery($query); if ($rows = $db->loadObjectList()) { $nowDate = JFactory::getDate(); $values = array(); foreach ($rows as $row) { $pk = (int) $row->id; $dates = json_decode($row->available_dates, true); if (!empty($dates)) { foreach ($dates as $date) { try { $date = JFactory::getDate($date); if ((int) $nowDate->diff($date)->format('%R%a') >= 0) { $values[] = $pk . ',' . $db->q($date->toSql()); } } catch (Exception $e) { } } } } if ($values) { $query->clear() ->insert($db->qn('#__sr_experience_date_xref')) ->columns($db->qn(array('experience_id', 'date'))) ->values(\Joomla\Utilities\ArrayHelper::arrayUnique($values)); $db->setQuery($query) ->execute(); } } } // Update add new confirm email field if not exists $query = $db->getQuery(true) ->select('*') ->from($db->quoteName('#__sr_customfields')) ->where($db->quoteName('context') . ' = ' . $db->quote('com_solidres.experience.customer')) ->order($db->quoteName('ordering') . ' ASC'); $db->setQuery($query); $willUpdateFields = []; $ordering = 0; foreach ($db->loadObjectList() as $field) { if ($field->field_name === 'customer_email2') { $willUpdateFields = false; break; } // Update ordering $field->ordering = ++$ordering; $willUpdateFields[] = $field; if ($field->field_name === 'customer_email') { $confirmEmailField = clone $field; $confirmEmailField->id = 0; $confirmEmailField->title = 'Confirm Email'; $confirmEmailField->description = 'Confirm your email address.'; $confirmEmailField->field_name = 'customer_email2'; $confirmEmailField->ordering = ++$ordering; $willUpdateFields[] = $confirmEmailField; } } if (false !== $willUpdateFields) { foreach ($willUpdateFields as $willUpdateField) { if ($willUpdateField->id) { $db->updateObject('#__sr_customfields', $willUpdateField, 'id'); } else { $db->insertObject('#__sr_customfields', $willUpdateField, 'id'); } } } } public function uninstall($adapter) { $db = JFactory::getDbo(); $query = $db->getQuery(true) ->update($db->qn('#__extensions')) ->set('enabled = 0') ->where($db->qn('type') . ' = ' . $db->q('plugin')) ->where($db->qn('folder') . ' = ' . $db->q('experiencepayment')); $db->setQuery($query) ->execute(); $query->clear('where') ->where($db->qn('type') . ' = ' . $db->q('module')) ->where($db->qn('element') . ' LIKE ' . $db->q('mod_sr_experience%')); $db->setQuery($query) ->execute(); $query->clear() ->update($db->qn('#__modules')) ->set('published = 0') ->where($db->qn('module') . ' LIKE ' . $db->q('mod_sr_experience%')); $db->setQuery($query) ->execute(); $query->clear() ->delete($db->quoteName('#__sr_customfield_values')) ->where($db->quoteName('context') . ' LIKE ' . $db->quote('com_solidres.experience.customer%')); $db->setQuery($query) ->execute(); $query->clear() ->delete($db->quoteName('#__sr_customfields')) ->where($db->quoteName('context') . ' = ' . $db->quote('com_solidres.experience.customer')); $db->setQuery($query) ->execute(); } public function preflight($type, $parent) { if (!JComponentHelper::isEnabled('com_solidres')) { $msg = "<p>Experience installed failed. Please make sure that Solidres Component is installed then try again.</p>"; JLog::add($msg, JLog::WARNING, 'jerror'); } $isCustomFieldInstalled = JPluginHelper::isEnabled('solidres', 'customfield'); if (!$isCustomFieldInstalled) { $msg = "<p>Experience installed failed. Please make sure that Solidres Custom Field plugin is installed and enabled then try again.</p>"; JLog::add($msg, JLog::WARNING, 'jerror'); return false; } /** @var JTableMenu $table */ $table = JTable::getInstance('menu'); $componentId = (int) JComponentHelper::getComponent('com_solidres')->id; $db = $table->getDbo(); $query = $db->getQuery(true); if ($table->load(array( 'client_id' => 1, 'parent_id' => 1, 'type' => 'component', 'menutype' => 'main', 'link' => 'index.php?option=com_solidres&view=experiences', 'component_id' => $componentId, ))) { $menuId = (int) $table->id; $db = $table->getDbo(); $query->delete($db->qn('#__menu')) ->where('(' . $db->qn('id') . ' = ' . $menuId . ' OR ' . $db->qn('parent_id') . ' = ' . $menuId . ')'); $db->setQuery($query) ->execute(); } if ($type === 'uninstall') { $query->clear() ->select('a.extension_id') ->from($db->qn('#__extensions', 'a')) ->where('a.type = ' . $db->q('plugin')) ->where('a.folder = ' . $db->q('solidres')) ->where('a.element = ' . $db->q('experienceinvoice')); $db->setQuery($query); if ($eid = $db->loadResult()) { $jInstaller = new JInstaller; $jInstaller->uninstall('plugin', $eid); } return; } $data = array(); $data['menutype'] = 'main'; $data['title'] = 'SR_SUBMENU_EXPERIENCES'; $data['alias'] = 'solidres-experiences'; $data['link'] = 'index.php?option=com_solidres&view=experiences'; $data['type'] = 'component'; $data['img'] = 'class:component'; $data['component_id'] = $componentId; $data['client_id'] = 1; $data['published'] = 1; $data['parent_id'] = 1; $data['home'] = 0; $data['path'] = ''; $data['params'] = ''; if ($parentId = $this->createAdminMenuItem($data, 1)) { $data['parent_id'] = $parentId; $subMenus = array( array('SR_EXPERIENCES_LABEL', 'sr-experiences', 'index.php?option=com_solidres&view=experiences'), array('SR_CATEGORIES_LABEL', 'sr-expcategories', 'index.php?option=com_solidres&view=expcategories'), array('SR_TRANSPORTATIONS_LABEL', 'sr-transportations', 'index.php?option=com_solidres&view=transportations'), array('SR_EXP_EXTRAS', 'sr-expextras', 'index.php?option=com_solidres&view=expextras'), array('SR_SUBMENU_COUPONS_LIST', 'sr-expcoupons', 'index.php?option=com_solidres&view=expcoupons'), array('SR_EXP_GUIDES_LABEL', 'sr-expguides', 'index.php?option=com_solidres&view=expguides'), array('SR_CUSTOM_FIELDS_LABEL', 'sr-experience-fields', 'index.php?option=com_solidres&view=customfields&context=com_solidres.experience.customer'), array('SR_RESERVATIONS_LABEL', 'sr-expreservations', 'index.php?option=com_solidres&view=expreservations'), array('SR_EXPERIENCE_INVOICES', 'sr-expinvoices', 'index.php?option=com_solidres&view=expinvoices'), array('SR_STATUSES', 'sr-statuses', 'index.php?option=com_solidres&view=statuses&scope=1'), array('SR_ORIGINS', 'sr-origins', 'index.php?option=com_solidres&view=origins&scope=1'), array('SR_EXP_CALENDARS', 'sr-expcalendars', 'index.php?option=com_solidres&view=expcalendars'), array('SR_EXP_REPORT_N_STATISTICS', 'sr-expdashboard', 'index.php?option=com_solidres&view=expdashboard'), ); foreach ($subMenus as $subMenu) { $data['title'] = $subMenu[0]; $data['alias'] = $subMenu[1]; $data['link'] = $subMenu[2]; $this->createAdminMenuItem($data, $parentId); } } $files = array( JPATH_ROOT . '/media/plg_solidres_experience/assets/css/datepicker.css', JPATH_ROOT . '/media/plg_solidres_experience/assets/css/datepicker.min.css', JPATH_ROOT . '/media/plg_solidres_experience/assets/js/datepicker.js', JPATH_ROOT . '/media/plg_solidres_experience/assets/js/datepicker.min.js', JPATH_PLUGINS . '/solidres/experience/administrator/components/com_solidres/models/fields/date.php', ); foreach ($files as $file) { if (JFile::exists($file)) { @JFile::delete($file); } } if (JFolder::exists(JPATH_ROOT . '/media/plg_solidres_experience/assets/js/i18n')) { @JFolder::delete(JPATH_ROOT . '/media/plg_solidres_experience/assets/js/i18n'); } } protected function createAdminMenuItem($data, $parentId) { /** @var JTableMenu $table */ $table = JTable::getInstance('menu'); $db = $table->getDbo(); try { $table->setLocation($parentId, 'last-child'); } catch (InvalidArgumentException $e) { JLog::add($e->getMessage(), JLog::WARNING, 'jerror'); return false; } if (!$table->bind($data) || !$table->check() || !$table->store()) { $query = $db->getQuery(true) ->select('id') ->from('#__menu') ->where('menutype = ' . $db->q($data['menutype'])) ->where('client_id = 1') ->where('link = ' . $db->q($data['link'])) ->where('type = ' . $db->q($data['type'])) ->where('parent_id = ' . $db->q($data['parent_id'])) ->where('home = ' . $db->q($data['home'])); $db->setQuery($query); $menuId = $db->loadResult(); if (!$menuId) { throw new RuntimeException($table->getError()); } else { /** @var JTableMenu $temporaryTable */ $temporaryTable = JTable::getInstance('menu'); $temporaryTable->delete($menuId, true); $temporaryTable->rebuild($data['parent_id']); // Retry creating the menu item $table->setLocation($parentId, 'last-child'); if (!$table->bind($data) || !$table->check() || !$table->store()) { // Install failed, warn user and rollback changes throw new RuntimeException($table->getError()); } } } return $table->id; } }
| ver. 1.4 |
Github
|
.
| PHP 8.5.7 | Generation time: 0 |
proxy
|
phpinfo
|
Settings