* @link http://yii-user.2mx.org/ * @license http://www.opensource.org/licenses/bsd-license.php * @version $Id: UserModule.php 132 2011-10-30 10:45:01Z mishamx $ */ class UsuarioModule extends CWebModule { /** * @var int * @desc items on page */ public $user_page_size = 10; /** * @var int * @desc items on page */ public $fields_page_size = 10; /** * @var string * @desc hash method (md5,sha1 or algo hash function http://www.php.net/manual/en/function.hash.php) */ public $hash = 'md5'; /** * @var boolean * @desc use email for activation user account */ public $enviarMailActivacion = true; /** * @var boolean * @desc allow auth for is not active user */ public $loginNotActiv = false; /** * @var boolean * @desc activate user on registration (only $sendActivationMail = false) */ public $activeAfterRegister = false; /** * @var boolean * @desc login after registration (need loginNotActiv or activeAfterRegister = true) */ public $autoLogin = true; public $urlRegistro = array("/usuario/registro"); public $urlRecuperar = array("/usuario/recuperar/recuperar"); public $urlLogin = array("/usuario/login"); public $urlLogout = array("/usuario/logout"); public $urlPerfil = array("/usuario/perfil"); public $returnUrl = array("/usuario/perfil"); public $returnLogoutUrl = array("/usuario/login"); /** * @var int * @desc Remember Me Time (seconds), defalt = 2592000 (30 days) */ public $rememberMeTime = 2592000; // 30 days public $fieldsMessage = ''; /** * @var array * @desc User model relation from other models * @see http://www.yiiframework.com/doc/guide/database.arr */ public $relations = array(); /** * @var array * @desc Profile model relation from other models */ public $profileRelations = array(); /** * @var boolean */ public $captcha = array('registration' => true); /** * @var boolean */ //public $cacheEnable = false; public $tablaUsuarios = '{{usuarios}}'; public $tablaPerfiles = '{{perfiles}}'; public $tablaCamposPerfiles = '{{campos_perfiles}}'; public $defaultScope = array( 'with' => array('perfil'), ); static private $_usuario; static private $_usuarios = array(); static private $_userByName = array(); static private $_admin; static private $_admins; /** * @var array * @desc Behaviors for models */ public $componentBehaviors = array(); public function init() { // this method is called when the module is being created // you may place code here to customize the module or the application // import the module-level models and components $this->setImport(array( 'usuario.models.*', 'usuario.components.*', )); } public function getBehaviorsFor($componentName) { if (isset($this->componentBehaviors[$componentName])) { return $this->componentBehaviors[$componentName]; } else { return array(); } } public function beforeControllerAction($controller, $action) { if (parent::beforeControllerAction($controller, $action)) { // this method is called before any module controller action is performed // you may place customized code here return true; } else return false; } /** * @param $str * @param $params * @param $dic * @return string */ public static function t($str = '', $params = array(), $dic = 'usuario') { if (Yii::t("UsuarioModule", $str) == $str) return Yii::t("UsuarioModule." . $dic, $str, $params); else return Yii::t("UsuarioModule", $str, $params); } /** * @return hash string. */ public static function encrypting($string = "") { $hash = Yii::app()->getModule('usuario')->hash; if ($hash == "md5") return md5($string); if ($hash == "sha1") return sha1($string); else return hash($hash, $string); } /** * @param $place * @return boolean */ public static function doCaptcha($place = '') { if (!extension_loaded('gd')) return false; if (in_array($place, Yii::app()->getModule('usuario')->captcha)) return Yii::app()->getModule('usuario')->captcha[$place]; return false; } /** * Return admin status. * @return boolean */ public static function isAdmin() { if (Yii::app()->user->isGuest) return false; else { if (!isset(self::$_admin)) { if (self::usuario()->superusuario) self::$_admin = true; else self::$_admin = false; } return self::$_admin; } } /** * Return admins. * @return array syperusers names */ public static function getAdmins() { if (!self::$_admins) { $admins = Usuario::model()->activo()->superusuario()->findAll(); $return_name = array(); foreach ($admins as $admin) array_push($return_name, $admin->username); self::$_admins = ($return_name) ? $return_name : array(''); } return self::$_admins; } /** * Send to user mail */ public static function sendMail($email, $subject, $message) { $adminEmail = Yii::app()->params['adminEmail']; $headers = "MIME-Version: 1.0\r\nFrom: $adminEmail\r\nReply-To: $adminEmail\r\nContent-Type: text/html; charset=utf-8"; $message = wordwrap($message, 70); $message = str_replace("\n.", "\n..", $message); return mail($email, '=?UTF-8?B?' . base64_encode($subject) . '?=', $message, $headers); } /** * Send to user mail */ public function sendMailToUser($user_id, $subject, $message, $from = '') { $user = Usuario::model()->findbyPk($user_id); if (!$from) $from = Yii::app()->params['adminEmail']; $headers = "From: " . $from . "\r\nReply-To: " . Yii::app()->params['adminEmail']; return mail($user->email, '=?UTF-8?B?' . base64_encode($subject) . '?=', $message, $headers); } /** * Return safe user data. * @param user id not required * @return user object or false */ public static function usuario($id = 0, $clearCache = false) { if (!$id && !Yii::app()->user->isGuest) $id = Yii::app()->user->id; if ($id) { if (!isset(self::$_usuarios[$id]) || $clearCache) self::$_usuarios[$id] = Usuario::model()->with(array('perfil'))->findbyPk($id); return self::$_usuarios[$id]; } else return false; } /** * Return safe user data. * @param user name * @return user object or false */ public static function getUserByName($username) { if (!isset(self::$_userByName[$username])) { $_userByName[$username] = Usuario::model()->findByAttributes(array('username' => $username)); } return $_userByName[$username]; } /** * Return safe user data. * @param user id not required * @return user object or false */ public function users() { return User; } }