| Server IP : 54.36.91.62 / Your IP : 216.73.217.112 Web Server : Apache System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : coopiak ( 151928) PHP Version : 8.3.23 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/coopiak/newsite/administrator/components/com_languages/models/ |
Upload File : |
<?php
/**
* @package Joomla.Administrator
* @subpackage com_languages
*
* @copyright Copyright (C) 2005 - 2015 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Languages Strings Model
*
* @since 2.5
*/
class LanguagesModelStrings extends JModelLegacy
{
/**
* Method for refreshing the cache in the database with the known language strings.
*
* @return boolean True on success, Exception object otherwise.
*
* @since 2.5
*/
public function refresh()
{
require_once JPATH_COMPONENT . '/helpers/languages.php';
$app = JFactory::getApplication();
$app->setUserState('com_languages.overrides.cachedtime', null);
// Empty the database cache first.
try
{
$this->_db->setQuery('TRUNCATE TABLE ' . $this->_db->quoteName('#__overrider'));
$this->_db->execute();
}
catch (RuntimeException $e)
{
return $e;
}
// Create the insert query.
$query = $this->_db->getQuery(true)
->insert($this->_db->quoteName('#__overrider'))
->columns('constant, string, file');
// Initialize some variables.
$client = $app->getUserState('com_languages.overrides.filter.client', 'site') ? 'administrator' : 'site';
$language = $app->getUserState('com_languages.overrides.filter.language', 'en-GB');
$base = constant('JPATH_' . strtoupper($client));
$path = $base . '/language/' . $language;
$files = array();
// Parse common language directory.
jimport('joomla.filesystem.folder');
if (is_dir($path))
{
$files = JFolder::files($path, $language . '.*ini$', false, true);
}
// Parse language directories of components.
$files = array_merge($files, JFolder::files($base . '/components', $language . '.*ini$', 3, true));
// Parse language directories of modules.
$files = array_merge($files, JFolder::files($base . '/modules', $language . '.*ini$', 3, true));
// Parse language directories of templates.
$files = array_merge($files, JFolder::files($base . '/templates', $language . '.*ini$', 3, true));
// Parse language directories of plugins.
$files = array_merge($files, JFolder::files(JPATH_PLUGINS, $language . '.*ini$', 3, true));
// Parse all found ini files and add the strings to the database cache.
foreach ($files as $file)
{
$strings = LanguagesHelper::parseFile($file);
if ($strings && count($strings))
{
$query->clear('values');
foreach ($strings as $key => $string)
{
$query->values($this->_db->quote($key) . ',' . $this->_db->quote($string) . ',' . $this->_db->quote(JPath::clean($file)));
}
try
{
$this->_db->setQuery($query);
$this->_db->execute();
}
catch (RuntimeException $e)
{
return $e;
}
}
}
// Update the cached time.
$app->setUserState('com_languages.overrides.cachedtime.' . $client . '.' . $language, time());
return true;
}
/**
* Method for searching language strings.
*
* @return array Array of resuls on success, Exception object otherwise.
*
* @since 2.5
*/
public function search()
{
$results = array();
$input = JFactory::getApplication()->input;
$filter = JFilterInput::getInstance();
$searchTerm = $input->getString('searchstring');
$limitstart = $input->getInt('more');
try
{
$searchstring = $this->_db->quote('%' . $filter->clean($searchTerm, 'TRIM') . '%');
// Create the search query.
$query = $this->_db->getQuery(true)
->select('constant, string, file')
->from($this->_db->quoteName('#__overrider'));
if ($input->get('searchtype') == 'constant')
{
$query->where('constant LIKE ' . $searchstring);
}
else
{
$query->where('string LIKE ' . $searchstring);
}
// Consider the limitstart according to the 'more' parameter and load the results.
$this->_db->setQuery($query, $limitstart, 10);
$results['results'] = $this->_db->loadObjectList();
// Check whether there are more results than already loaded.
$query->clear('select')->clear('limit')
->select('COUNT(id)');
$this->_db->setQuery($query);
if ($this->_db->loadResult() > $limitstart + 10)
{
// If this is set a 'More Results' link will be displayed in the view.
$results['more'] = $limitstart + 10;
}
}
catch (RuntimeException $e)
{
return $e;
}
return $results;
}
}