/home/preegmxb/byeaglytics-co.com/components/com_finder/src/Helper/FinderHelper.php
<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_finder
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\Component\Finder\Site\Helper;

\defined('JPATH_PLATFORM') or die;

use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Factory;
use Joomla\Component\Finder\Administrator\Indexer\Query;
use Joomla\Database\ParameterType;

/**
 * Helper class for Joomla! Finder components
 *
 * @since  4.0.0
 */
class FinderHelper
{
	/**
	 * Method to log searches to the database
	 *
	 * @param   Query    $searchquery  The search query
	 * @param   integer  $resultCount  The number of results for this search
	 *
	 * @return  void
	 *
	 * @since   4.0.0
	 */
	public static function logSearch(Query $searchquery, $resultCount = 0)
	{
		if (!ComponentHelper::getParams('com_finder')->get('gather_search_statistics', 0))
		{
			return;
		}

		if (trim($searchquery->input) == '' && !$searchquery->empty)
		{
			return;
		}

		// Initialise our variables
		$db = Factory::getDbo();
		$query = $db->getQuery(true);

		// Sanitise the term for the database
		$temp = unserialize(serialize($searchquery));
		$temp->input = trim(strtolower($searchquery->input));
		$entry = new \stdClass;
		$entry->searchterm = $temp->input;
		$entry->query = serialize($temp);
		$entry->md5sum = md5($entry->query);
		$entry->hits = 1;
		$entry->results = $resultCount;

		// Query the table to determine if the term has been searched previously
		$query->select($db->quoteName('hits'))
			->from($db->quoteName('#__finder_logging'))
			->where($db->quoteName('md5sum') . ' = ' . $db->quote($entry->md5sum));
		$db->setQuery($query);
		$hits = (int) $db->loadResult();

		// Reset the $query object
		$query->clear();

		// Update the table based on the results
		if ($hits)
		{
			$query->update($db->quoteName('#__finder_logging'))
				->set('hits = (hits + 1)')
				->where($db->quoteName('md5sum') . ' = ' . $db->quote($entry->md5sum));
			$db->setQuery($query);
			$db->execute();
		}
		else
		{
			$query->insert($db->quoteName('#__finder_logging'))
				->columns(
					[
						$db->quoteName('searchterm'),
						$db->quoteName('query'),
						$db->quoteName('md5sum'),
						$db->quoteName('hits'),
						$db->quoteName('results'),
					]
				)
				->values('?, ?, ?, ?, ?')
				->bind(1, $entry->searchterm)
				->bind(2, $entry->query, ParameterType::LARGE_OBJECT)
				->bind(3, $entry->md5sum)
				->bind(4, $entry->hits, ParameterType::INTEGER)
				->bind(5, $entry->results, ParameterType::INTEGER);
			$db->setQuery($query);
			$db->execute();
		}
	}
}