diff --git a/source/packages/plg_system_mokosuitesupport/src/Helper/CannedResponseHelper.php b/source/packages/plg_system_mokosuitesupport/src/Helper/CannedResponseHelper.php new file mode 100644 index 0000000..0275737 --- /dev/null +++ b/source/packages/plg_system_mokosuitesupport/src/Helper/CannedResponseHelper.php @@ -0,0 +1,77 @@ +get(DatabaseInterface::class); + + $query = $db->getQuery(true) + ->select('cr.id, cr.title, cr.body, cr.category, cr.shortcut') + ->from($db->quoteName('#__mokosuitesupport_canned_responses', 'cr')) + ->where($db->quoteName('cr.status') . ' = ' . $db->quote('active')) + ->order('cr.category ASC, cr.title ASC'); + + if ($category) { + $query->where($db->quoteName('cr.category') . ' = ' . $db->quote($category)); + } + + $db->setQuery($query); + + return $db->loadObjectList() ?: []; + } + + /** + * Search canned responses by keyword. + */ + public static function search(string $keyword): array + { + $db = Factory::getContainer()->get(DatabaseInterface::class); + $filter = \Joomla\Filter\InputFilter::getInstance(); + $keyword = $filter->clean($keyword, 'STRING'); + + if (strlen($keyword) < 2) { + return []; + } + + $search = $db->quote('%' . $db->escape($keyword, true) . '%'); + + $db->setQuery($db->getQuery(true) + ->select('cr.id, cr.title, cr.body, cr.category, cr.shortcut') + ->from($db->quoteName('#__mokosuitesupport_canned_responses', 'cr')) + ->where($db->quoteName('cr.status') . ' = ' . $db->quote('active')) + ->where('(cr.title LIKE ' . $search . ' OR cr.body LIKE ' . $search . ' OR cr.shortcut LIKE ' . $search . ')') + ->order('cr.title ASC'), 0, 20); + + return $db->loadObjectList() ?: []; + } + + /** + * Get categories with response counts. + */ + public static function getCategories(): array + { + $db = Factory::getContainer()->get(DatabaseInterface::class); + + $db->setQuery($db->getQuery(true) + ->select('category, COUNT(*) AS count') + ->from('#__mokosuitesupport_canned_responses') + ->where($db->quoteName('status') . ' = ' . $db->quote('active')) + ->group('category') + ->order('category ASC')); + + return $db->loadObjectList() ?: []; + } +}