[ Index ] |
PHP Cross Reference of Joomla 4.2.2 documentation |
[Summary view] [Print] [Text view]
1 <?php 2 3 /** 4 * @package Joomla.Site 5 * @subpackage com_finder 6 * 7 * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> 8 * @license GNU General Public License version 2 or later; see LICENSE.txt 9 */ 10 11 namespace Joomla\Component\Finder\Site\Helper; 12 13 use Joomla\CMS\Component\ComponentHelper; 14 use Joomla\CMS\Factory; 15 use Joomla\Component\Finder\Administrator\Indexer\Query; 16 use Joomla\Database\ParameterType; 17 18 // phpcs:disable PSR1.Files.SideEffects 19 \defined('JPATH_PLATFORM') or die; 20 // phpcs:enable PSR1.Files.SideEffects 21 22 /** 23 * Helper class for Joomla! Finder components 24 * 25 * @since 4.0.0 26 */ 27 class FinderHelper 28 { 29 /** 30 * Method to log searches to the database 31 * 32 * @param Query $searchquery The search query 33 * @param integer $resultCount The number of results for this search 34 * 35 * @return void 36 * 37 * @since 4.0.0 38 */ 39 public static function logSearch(Query $searchquery, $resultCount = 0) 40 { 41 if (!ComponentHelper::getParams('com_finder')->get('gather_search_statistics', 0)) { 42 return; 43 } 44 45 if (trim($searchquery->input) == '' && !$searchquery->empty) { 46 return; 47 } 48 49 // Initialise our variables 50 $db = Factory::getDbo(); 51 $query = $db->getQuery(true); 52 53 // Sanitise the term for the database 54 $temp = new \stdClass(); 55 $temp->input = trim(strtolower((string) $searchquery->input)); 56 $entry = new \stdClass(); 57 $entry->searchterm = $temp->input; 58 $entry->query = serialize($temp); 59 $entry->md5sum = md5($entry->query); 60 $entry->hits = 1; 61 $entry->results = $resultCount; 62 63 // Query the table to determine if the term has been searched previously 64 $query->select($db->quoteName('hits')) 65 ->from($db->quoteName('#__finder_logging')) 66 ->where($db->quoteName('md5sum') . ' = ' . $db->quote($entry->md5sum)); 67 $db->setQuery($query); 68 $hits = (int) $db->loadResult(); 69 70 // Reset the $query object 71 $query->clear(); 72 73 // Update the table based on the results 74 if ($hits) { 75 $query->update($db->quoteName('#__finder_logging')) 76 ->set('hits = (hits + 1)') 77 ->where($db->quoteName('md5sum') . ' = ' . $db->quote($entry->md5sum)); 78 $db->setQuery($query); 79 $db->execute(); 80 } else { 81 $query->insert($db->quoteName('#__finder_logging')) 82 ->columns( 83 [ 84 $db->quoteName('searchterm'), 85 $db->quoteName('query'), 86 $db->quoteName('md5sum'), 87 $db->quoteName('hits'), 88 $db->quoteName('results'), 89 ] 90 ) 91 ->values('?, ?, ?, ?, ?') 92 ->bind(1, $entry->searchterm) 93 ->bind(2, $entry->query, ParameterType::LARGE_OBJECT) 94 ->bind(3, $entry->md5sum) 95 ->bind(4, $entry->hits, ParameterType::INTEGER) 96 ->bind(5, $entry->results, ParameterType::INTEGER); 97 $db->setQuery($query); 98 $db->execute(); 99 } 100 } 101 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Wed Sep 7 05:41:13 2022 | Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer |