/administrator/components/com_login/models/login.php
PHP | 157 lines | 84 code | 23 blank | 50 comment | 15 complexity | 090f8cf122c212fc6f122446ef62808d MD5 | raw file
Possible License(s): LGPL-3.0, LGPL-2.0, JSON, GPL-2.0, BSD-3-Clause, LGPL-2.1, MIT
- <?php
- /**
- * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
- * @license GNU General Public License, see LICENSE.php
- */
- defined('_JEXEC') or die;
- /**
- * Login Model
- *
- * @package Joomla.Administrator
- * @subpackage com_login
- * @since 1.5
- */
- class LoginModelLogin extends JModelLegacy
- {
- /**
- * Method to auto-populate the model state.
- *
- * Note. Calling getState in this method will result in recursion.
- *
- * @since 1.6
- */
- protected function populateState()
- {
- $credentials = array(
- 'username' => JRequest::getVar('username', '', 'method', 'username'),
- 'password' => JRequest::getVar('passwd', '', 'post', 'string', JREQUEST_ALLOWRAW)
- );
- $this->setState('credentials', $credentials);
- // check for return URL from the request first
- if ($return = JRequest::getVar('return', '', 'method', 'base64')) {
- $return = base64_decode($return);
- if (!JURI::isInternal($return)) {
- $return = '';
- }
- }
- // Set the return URL if empty.
- if (empty($return)) {
- $return = 'index.php';
- }
- $this->setState('return', $return);
- }
- /**
- * Get the administrator login module by name (real, eg 'login' or folder, eg 'mod_login')
- *
- * @param string $name The name of the module
- * @param string $title The title of the module, optional
- *
- * @return object The Module object
- *
- * @since 11.1
- */
- public static function getLoginModule($name = 'mod_login', $title = null)
- {
- $result = null;
- $modules = LoginModelLogin::_load($name);
- $total = count($modules);
- for ($i = 0; $i < $total; $i++)
- {
- // Match the title if we're looking for a specific instance of the module
- if (!$title || $modules[$i]->title == $title) {
- $result = $modules[$i];
- break; // Found it
- }
- }
- // If we didn't find it, and the name is mod_something, create a dummy object
- if (is_null($result) && substr($name, 0, 4) == 'mod_') {
- $result = new stdClass;
- $result->id = 0;
- $result->title = '';
- $result->module = $name;
- $result->position = '';
- $result->content = '';
- $result->showtitle = 0;
- $result->control = '';
- $result->params = '';
- $result->user = 0;
- }
- return $result;
- }
- /**
- * Load login modules.
- *
- * Note that we load regardless of state or access level since access
- * for public is the only thing that makes sense since users are not logged in
- * and the module lets them log in.
- * This is put in as a failsafe to avoid super user lock out caused by an unpublished
- * login module or by a module set to have a viewing access level that is not Public.
- *
- * @param string $name The name of the module
- *
- * @return array
- *
- * @since 11.1
- */
- protected static function _load($module)
- {
- static $clean;
- if (isset($clean)) {
- return $clean;
- }
- $app = JFactory::getApplication();
- $lang = JFactory::getLanguage()->getTag();
- $clientId = (int) $app->getClientId();
- $cache = JFactory::getCache ('com_modules', '');
- $cacheid = md5(serialize(array( $clientId, $lang)));
- $loginmodule = array();
- if (!($clean = $cache->get($cacheid))) {
- $db = JFactory::getDbo();
- $query = $db->getQuery(true);
- $query->select('m.id, m.title, m.module, m.position, m.showtitle, m.params');
- $query->from('#__modules AS m');
- $query->where('m.module =' . $db->Quote($module) .' AND m.client_id = 1');
- $query->join('LEFT', '#__extensions AS e ON e.element = m.module AND e.client_id = m.client_id');
- $query->where('e.enabled = 1');
- // Filter by language
- if ($app->isSite() && $app->getLanguageFilter()) {
- $query->where('m.language IN (' . $db->Quote($lang) . ',' . $db->Quote('*') . ')');
- }
- $query->order('m.position, m.ordering');
- // Set the query
- $db->setQuery($query);
- $modules = $db->loadObjectList();
- if ($db->getErrorNum()){
- JError::raiseWarning(500, JText::sprintf('JLIB_APPLICATION_ERROR_MODULE_LOAD', $db->getErrorMsg()));
- return $loginmodule;
- }
- // Return to simple indexing that matches the query order.
- $loginmodule = $modules;
- $cache->store($loginmodule, $cacheid);
- }
- return $loginmodule;
- }
- }