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; $limitstart = $input->getInt('more'); try { $searchstring = $this->_db->quote('%' . $input->getString('searchstring') . '%'); // 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') ->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; } }