└── jfilterrangesliderupdater ├── language └── en-GB │ ├── plg_task_jfilterrangesliderupdater.sys.ini │ └── plg_task_jfilterrangesliderupdater.ini ├── jfilterrangesliderupdater.xml ├── services └── provider.php ├── scriptfile.php └── src └── Extension └── Jfilterrangesliderupdater.php /jfilterrangesliderupdater/language/en-GB/plg_task_jfilterrangesliderupdater.sys.ini: -------------------------------------------------------------------------------- 1 | PLG_TASK_JFILTERRANGESLIDERUPDATER="Range Slider Updater for JFilter" 2 | PLG_TASK_JFILTERRANGESLIDERUPDATER_XML_DESCRIPTION="Updates the range sliders to match the minimum and maximum values of the custom fields." 3 | -------------------------------------------------------------------------------- /jfilterrangesliderupdater/language/en-GB/plg_task_jfilterrangesliderupdater.ini: -------------------------------------------------------------------------------- 1 | PLG_TASK_JFILTERRANGESLIDERUPDATER="Range Slider Updater for JFilter" 2 | PLG_TASK_JFILTERRANGESLIDERUPDATER_XML_DESCRIPTION="Updates the range sliders to match the minimum and maximum values of the custom fields." 3 | PLG_TASK_JFILTERRANGESLIDERUPDATER_TITLE="Range Slider Updater for JFilter" 4 | PLG_TASK_JFILTERRANGESLIDERUPDATER_DESC="Updates the range sliders to match the minimum and maximum values of the custom fields." 5 | -------------------------------------------------------------------------------- /jfilterrangesliderupdater/jfilterrangesliderupdater.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | plg_task_jfilterrangesliderupdater 4 | jfilterrangesliderupdater 5 | Elisa Foltyn 6 | 2024-09 7 | (C) 2024 COOLCAT creations, Elisa Foltyn 8 | GNU General Public License version 3 or later 9 | contact@coolcat-creations.com 10 | https://coolcat-campus.com 11 | {{version}} 12 | PLG_TASK_JFILTERRANGESLIDERUPDATER_XML_DESCRIPTION 13 | Coolcatcreations\Plugin\Task\Jfilterrangesliderupdater 14 | scriptfile.php 15 | 16 | 17 | services 18 | src 19 | language 20 | 21 | 22 | 23 | 24 |
25 |
26 |
27 |
28 |
29 | -------------------------------------------------------------------------------- /jfilterrangesliderupdater/services/provider.php: -------------------------------------------------------------------------------- 1 | set( 33 | PluginInterface::class, 34 | function (Container $container) { 35 | $dispatcher = $container->get(DispatcherInterface::class); 36 | $plugin = new Jfilterrangesliderupdater( 37 | $dispatcher, 38 | (array) PluginHelper::getPlugin('task', 'jfilterrangesliderupdater') 39 | ); 40 | $plugin->setApplication(Factory::getApplication()); 41 | 42 | return $plugin; 43 | } 44 | ); 45 | } 46 | }; 47 | -------------------------------------------------------------------------------- /jfilterrangesliderupdater/scriptfile.php: -------------------------------------------------------------------------------- 1 | minimumPhp, '<')) { 39 | Factory::getApplication()->enqueueMessage(sprintf(Text::_('JLIB_INSTALLER_MINIMUM_PHP'), $this->minimumPhp), 'error'); 40 | return false; 41 | } 42 | 43 | if (version_compare(JVERSION, $this->minimumJoomla, '<')) { 44 | Factory::getApplication()->enqueueMessage(sprintf(Text::_('JLIB_INSTALLER_MINIMUM_JOOMLA'), $this->minimumJoomla), 'error'); 45 | return false; 46 | } 47 | 48 | return true; 49 | } 50 | 51 | public function postflight(string $type, InstallerAdapter $adapter): bool 52 | { 53 | if ($type !== 'install' || $type !== 'discover_install') { 54 | return true; 55 | } 56 | 57 | $db = Factory::getDbo(); 58 | $query = $db->getQuery(true) 59 | ->update('#__extensions') 60 | ->set($db->qn('enabled') . ' = 1') 61 | ->where($db->qn('type') . ' = ' . $db->q('plugin')) 62 | ->where($db->qn('element') . ' = ' . $db->q('jfilterrangesliderupdater')) 63 | ->where($db->qn('folder') . ' = ' . $db->q('task')); 64 | 65 | $db->setQuery($query); 66 | $db->execute(); 67 | 68 | return true; 69 | } 70 | }; 71 | -------------------------------------------------------------------------------- /jfilterrangesliderupdater/src/Extension/Jfilterrangesliderupdater.php: -------------------------------------------------------------------------------- 1 | [ 49 | 'langConstPrefix' => 'PLG_TASK_JFILTERRANGESLIDERUPDATER', 50 | 'form' => 'rangesliderupdater_parameters', 51 | 'method' => 'doRangesliderupdater', 52 | ], 53 | ]; 54 | protected $db; 55 | 56 | /** 57 | * Returns an array of events this subscriber will listen to. 58 | * 59 | * @return string[] 60 | * 61 | * @since 1.0.0 62 | */ 63 | public static function getSubscribedEvents(): array 64 | { 65 | return [ 66 | 'onTaskOptionsList' => 'advertiseRoutines', 67 | 'onExecuteTask' => 'standardRoutineHandler', 68 | 'onContentPrepareForm' => 'enhanceTaskItemForm', 69 | ]; 70 | } 71 | 72 | /** 73 | * Constructor. 74 | * 75 | * @param DispatcherInterface $dispatcher The dispatcher 76 | * @param array $config An optional associative array of configuration settings 77 | * 78 | * @since 4.2.0 79 | */ 80 | public function __construct(DispatcherInterface $dispatcher, array $config) 81 | { 82 | parent::__construct($dispatcher, $config); 83 | } 84 | 85 | 86 | protected function doRangesliderupdater(ExecuteTaskEvent $event): int 87 | { 88 | 89 | $db = Factory::getContainer()->get('db'); 90 | 91 | $query = $db->getQuery(true) 92 | ->select('*') 93 | ->from($db->quoteName('#__jfilters_filters')) 94 | ->where($db->quoteName('display') . ' = ' . $db->quote('range_inputs_sliders')) 95 | ->orwhere($db->quoteName('display') . ' = ' . $db->quote('range_sliders')); 96 | 97 | $db->setQuery($query); 98 | $sliders = $db->loadObjectList(); 99 | 100 | foreach ($sliders as $slider) { 101 | $this->logTask('Updating slider ' . $slider->name); 102 | 103 | $context = $slider->context; 104 | $name = $slider->name; 105 | 106 | $query = $db->getQuery(true) 107 | ->select('id') 108 | ->from($db->quoteName('#__fields')) 109 | ->where($db->quoteName('name') . ' = ' . $db->quote($name)); 110 | 111 | $db->setQuery($query); 112 | $field_id = $db->loadResult(); 113 | 114 | $query = $db->getQuery(true) 115 | ->select('value') 116 | ->from($db->quoteName('#__fields_values')) 117 | ->where($db->quoteName('field_id') . ' = ' . $db->quote($field_id)); 118 | 119 | $db->setQuery($query); 120 | $values = $db->loadObjectList(); 121 | 122 | $min = $max = null; 123 | foreach ($values as $value) { 124 | $number = (int) $value->value; 125 | if ($min === null || $number < $min) { 126 | $min = $number; 127 | } 128 | if ($max === null || $number > $max) { 129 | $max = $number; 130 | } 131 | } 132 | 133 | $attribs = json_decode($slider->attribs); 134 | $attribs->min_value = $min; 135 | $attribs->max_value = $max; 136 | 137 | $query = $db->getQuery(true) 138 | ->update($db->quoteName('#__jfilters_filters')) 139 | ->set($db->quoteName('attribs') . ' = ' . $db->quote(json_encode($attribs))) 140 | ->where($db->quoteName('id') . ' = ' . $db->quote($slider->id)); 141 | 142 | $db->setQuery($query); 143 | $db->execute(); 144 | } 145 | 146 | $this->logTask('Range Slider Updater finished successfully'); 147 | return TaskStatus::OK; 148 | } 149 | } 150 | --------------------------------------------------------------------------------