[ Index ]

Documentación de MTHPortal v1.0 Alameda

title

Body

[close]

/clases/ -> mthportal.class.php (source)

   1  <?
   2  /**
   3   * mthportal.class.php
   4   * Última Modificación: 27 Marzo 2007
   5   * @author Meth < mth at mthweb.org >
   6   * @package MTHPortal
   7   * @version 1.0
   8   * Clase mth utilizada para llevar a cabo ciertas funciones del Portal
   9   * como pueden ser administración de usuarios, del portal, etc...
  10   */
  11  
  12  //INCLUYO LAS SUBCLASES Y LAS INICIO
  13  require_once(dirname(__FILE__).'/adodb_lite/adodb.inc.php');
  14  require_once(dirname(__FILE__).'/mth/mthusuario.class.php');
  15  require_once(dirname(__FILE__).'/mth/mthfunciones.class.php');
  16  require_once(dirname(__FILE__).'/xajax/xajax.inc.php');
  17  
  18  class mth{
  19      /**
  20       * @var string Variable que almacena los errores ocurridos
  21       */
  22      var $error;
  23      /**
  24       * @var array Matriz con todas las variables de configuracion de la web
  25       */
  26      var $configuracion;
  27      /**
  28       * @var class Referencia a adobd_lite para acceder a la base de datos
  29       */
  30      var $db;
  31      /**
  32       * @var class Referencia a mth_usuarios para poder administrar todos los
  33       * aspectos de los usuarios
  34       */
  35      var $mth_usuarios;
  36      /**
  37       * @var class Referencia a mth_funciones para poder realizar ciertas
  38       * funciones de la web
  39       */
  40      var $mth_funciones;
  41      /**
  42       * @var string Prefijo para las funciones que registrará xajax
  43       */
  44      var $ajaxFuncPrefix;
  45      /**
  46       * @var class Contendrá la clase xajax para las funciones de mthportal
  47       */
  48      var $xajax;
  49      /**
  50       * Constructor de la clase que inicializa adodb_lite para poder conectar con
  51       * la base de datos de manera correcta, más adelante conectaremos a la base de
  52       * datos con los datos proporcionados por el archivo de configuración
  53       * @param array Datos de acceso a la base de datos
  54       */
  55      function mth($db_conf=''){
  56          /* 
  57              CONEXION A LA BASE DE DATOS
  58              PRIMERO DEFINIMOS TIPO DE BASE DE DATOS
  59          */
  60          $this->db = ADONewConnection($db_conf['type'],'extend:date:pear');
  61          /* 
  62              CONECTAMOS CON LAS BASES DE DATOS, SI NO HAY ERROR CONTINUAMOS, SI HAY ERROR
  63              ENTONCES MOSTRAMOS QUE NO SE PUDO CONECTAR CON LA BASE DE DATOS 
  64          */
  65          $this->db->Connect($db_conf['server'],$db_conf['user'],$db_conf['pass'],$db_conf['name']);
  66          if($this->db->IsConnected()){
  67              $this->configuracion = array();
  68              $this->configuracion = $this->obtener_configuracion();
  69              $this->mth_usuarios = new mth_usuarios(&$this->db,$this->configuracion);
  70              $this->mth_funciones = new mth_funciones;
  71              $this->ajaxFuncPrefix = 'ax';
  72              $this->xajax = new xajax($this->configuracion['url_sistema']);
  73              $this->xajax->decodeUTF8InputOn();
  74              $this->registerFunctions();
  75          }
  76          else return false;
  77      }//FIN mth
  78  
  79      /**
  80       * Función que extrae la configuración general de la web
  81       * el resultado es devuelto en un array cuyo índice es el nombre de la variable
  82       * y el valor es el valor de la variable
  83       * Esta función no recibe parámetros
  84       */
  85      function obtener_configuracion($todo=false){
  86          $configuracion = array();
  87          $data = $this->db->GetAssoc('SELECT * FROM web_config');
  88          $i = 0;
  89          foreach($data as $matriz){
  90              if($todo === false){
  91                  $variable = $matriz['Variable'];
  92                  $configuracion[$variable] = $matriz['Valor'];
  93              }
  94              else{
  95                  $configuracion[$i] = $matriz;
  96                  $i++;
  97              }
  98          }
  99          return $configuracion;
 100      }//FIN obtener_configuracion
 101  
 102      /**
 103       * Función para actualizar la configuración de la web
 104       * @param array Matriz que almacena los valores de configuración de la web
 105       */
 106      function actualizar_configuracion($datos=''){
 107          if(is_array($datos)){
 108              $this->mth_funciones->comprobar_datos_configuracion($datos,$this->configuracion);
 109              foreach($datos as $key => $value){
 110                  $this->db->Execute('UPDATE web_config SET Valor = ? WHERE Variable = ?',array($value,$key));
 111              }
 112              return true;
 113          }
 114          else return false;
 115      }//FIN actualizar_configuracion
 116  
 117      /**
 118       * Función que obtiene la lista de paises desde la base de datos, proporciona de
 119       * salida un array cuyo índice es el código del país
 120       * No recibe parámetros
 121       */
 122      function lista_paises(){
 123          $data = $this->db->GetAssoc('SELECT * FROM web_countries ORDER BY country');
 124          $pais = array();
 125          foreach($data as $matriz){
 126              $variable = $matriz['code'];
 127              $pais[$variable] = $matriz['country'];
 128          }
 129          return $pais;
 130      }//FIN lista_paises
 131  
 132      /**
 133       * Función que obtiene los módulos instalados, no instalados y
 134       * la lista completa
 135       * @param string Tipo de módulos a obtener, hay tres opciones: 'ins' para 
 136       * instalados, 'des' para no instalados y 'comp' para la lista completa, 
 137       * cualquier otra opción hará que devuelva los módulos instalados
 138       */
 139      function lista_modulos($tipo='ins'){
 140          if($tipo == 'des'){//CONSEGUIR MODULOS INSTALADOS PARA PODER DESINSTALAR
 141              $retorno = array();
 142              $data = $this->db->GetAssoc('SELECT * FROM web_menu WHERE Modulo = 1');
 143              foreach($data as $key => $value){
 144                  $retorno[$key] = $value['Menu'];
 145              }
 146              return $retorno;
 147          }//FIN CONSEGUIR MODULOS INSTALADOS PARA PODER DESINSTALAR
 148          else if($tipo == 'comp'){//CONSEGUIR TODOS MODULOS DISPONIBLES
 149              $dir = "./modulos/";
 150              $retorno = array();
 151              if (is_dir($dir)){
 152                  if ($gd = opendir($dir)) {
 153                      while (($archivo = readdir($gd)) !== false) {
 154                          if (is_dir($dir.$archivo) && $archivo != '.' && $archivo != '..')
 155                              $retorno[$archivo] = ucfirst($archivo);
 156                      }
 157                      closedir($gd);
 158                      return $retorno;
 159                  }
 160              }
 161              else return false;
 162          }//FIN CONSEGUIR TODOS MODULOS DISPONIBLES
 163          else{//CONSEGUIR MODULOS NO INSTALADOS PARA INSTALAR
 164              //PRIMERO OBTENGO LOS MODULOS INSTALADOS
 165              $ins = array();
 166              $data = $this->db->GetAssoc('SELECT * FROM web_menu WHERE Modulo = 1');
 167              foreach($data as $key => $value){
 168                  $ins[$key] = $value['Menu'];
 169              }
 170  
 171              $dir = "./modulos/";
 172              $retorno = array();
 173              if (is_dir($dir)){
 174                  if ($gd = opendir($dir)) {
 175                      while (($archivo = readdir($gd)) !== false) {
 176                          if (is_dir($dir.$archivo) && $archivo != '.' && $archivo != '..' && !in_array(ucfirst($archivo),$ins))
 177                              $retorno[$archivo] = ucfirst($archivo);
 178                      }
 179                      closedir($gd);
 180                      return $retorno;
 181                  }
 182              }
 183              else return false;
 184          }//FIN CONSEGUIR MODULOS NO INSTALADOS PARA INSTALAR
 185      }//FIN lista_modulos
 186  
 187  /********************************************************************************
 188  FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX
 189  FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX
 190  FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX FUNCIONES DE XAJAX
 191  ********************************************************************************/
 192      /**
 193       * Función que registra las funciones que voy a utilizar con xajax, serán
 194       * todas las funciones que comiencen por ax y la siguiente letra sea mayúsculas
 195       */
 196      function registerFunctions($ad=false){
 197          $this->xajax->registerFunction(array('conectar',&$this,'axConectar'));
 198          $this->xajax->registerFunction(array('comprobarNick',&$this,'axComprobarNick'));
 199          $this->xajax->registerFunction(array('registroUsuario',&$this,'axRegistroUsuario'));
 200          $this->xajax->registerFunction(array('verificarEmail',&$this,'axVerificarEmail'));
 201          $this->xajax->registerFunction(array('recordarContrasena',&$this,'axRecordarContrasena'));
 202          $this->xajax->registerFunction(array('activarCuenta',&$this,'axActivarCuenta'));
 203          $this->xajax->registerFunction(array('actualizarCuenta',&$this,'axActualizarCuenta'));
 204          //FUNCIONES DE ADMINISTRACION
 205          if($ad == true){
 206              $this->xajax->registerFunction(array('actualizarConfiguracion',&$this,'ad_axActualizarConfiguracion'));
 207              $this->xajax->registerFunction(array('buscarUsuario',&$this,'ad_axBuscarUsuario'));
 208              $this->xajax->registerFunction(array('anadirUsuario',&$this,'ad_axAnadirUsuario'));
 209          }
 210      }//FIN registerFunctions
 211  
 212      /**
 213       * Función que recibe los datos enviados a través del formulario de conexión
 214       * y decide si el usuario puede conectarse a la web o no
 215       * @param array Datos recibidos desde el formulario
 216       * @param string Div del html donde va a cargar los resultados
 217       */
 218      function axConectar($datos='',$capa=''){
 219          global $USUARIOCONECTADO;
 220          $objResponse = new xajaxResponse();
 221          if(is_array($datos)){//DATOS RECIBIDOS CORRECTAMENTE
 222                  if($id = $this->mth_usuarios->conectar($datos['usuariologin'],$datos['contrasenalogin'],$datos['imagenlogin'])){
 223                      $_SESSION['usuario'] = $id['Id'];
 224                      $_SESSION['nivel'] = $id['Nivel'];
 225                      $USUARIOCONECTADO = $id['Nick'];
 226                      $desde_xajax = true;
 227                      include ('./templates/usuario.php');
 228                      if(0 < $id['Nivel'])
 229                          $usuarioadmin = '1';
 230                      $objResponse->addAssign($capa,'innerHTML',usuario_conectado());
 231                  }
 232                  else{
 233                      if($this->mth_usuarios->error == 'Imagen de verificaci&oacute;n err&oacute;nea'){//IMAGEN DE VERIFICACION NO VALIDA
 234                          $objResponse->addAlert(html_entity_decode($this->mth_usuarios->error));
 235                          $objResponse->addAssign('imagenlogin','value','');
 236                          $objResponse->addScript('xajax.$(\'imagenlogin\').focus()');
 237                      }//FIN IMAGEN DE VERIFICACION INVALIDA
 238                      else{
 239                          $objResponse->addAlert(html_entity_decode($this->mth_usuarios->error));
 240                          if($this->configuracion['mod_rewrite'] == 1) $objResponse->addAssign('recordar_login','innerHTML','<br /><a href="'.$this->configuracion['url_sistema'].'opt-recordar/" title="Recordar Contrase&ntilde;a">Recordar Contrase&ntilde;a</a>');
 241                          else $objResponse->addAssign('recordar_login','innerHTML','<br /><a href="index.php?sec=recordar" title="Recordar Contrase&ntilde;a">Recordar Contrase&ntilde;a</a>');
 242                      }
 243  
 244                  }
 245          }//FIN DATOS RECIBIDOS CORRECTAMENTE
 246          else $objResponse->addAlert('Datos no recibidos de manera correcta');
 247          //LOS DATOS NO SE RECIBIERON CORRECTAMENTE ASI QUE MUESTRO UN MENSAJE
 248          //INDICANDOLO
 249          $objResponse->addAssign('cargando_login','style.display','none');
 250          return $objResponse;
 251      }//FIN axConectar
 252  
 253      /**
 254       * Función que comprueba si un nick es válido
 255       * @param string Nombre de usuario
 256       * @param string Div del html donde va a cargar los resultados
 257       */
 258      function axComprobarNick($nick='',$capa=''){
 259          $objResponse = new xajaxResponse();
 260          if($this->mth_usuarios->_usuario_valido($nick)){
 261              if(!$this->mth_usuarios->_esregistrado($nick)) $objResponse->addAssign('comprobar_nickregistro','innerHTML','<br />Nombre de Usuario v&aacute;lido');
 262              else $objResponse->addAssign($capa,'innerHTML','<br /><span style="color: red">Nombre de Usuario registrado, por favor escoja otro</span>');
 263          }
 264          //EL NOMBRE DE USUARIO NO ES CORRECTO
 265          else $objResponse->addAssign('comprobar_nickregistro','innerHTML','<br /><span style="color: red">'.$this->mth_usuarios->error.'</span>');
 266          return $objResponse;
 267      }//FIN axComprobarNick$key
 268  
 269      /**
 270       * Función que realiza el registro del usuario a través de xajax
 271       * @param array Datos de registro del usuario
 272       * @param string Div del html donde va a cargar los resultados
 273       */
 274      function axRegistroUsuario($datos='',$capa=''){
 275          $objResponse = new xajaxResponse();
 276          if(is_array($datos)){
 277              $adicional = array();
 278              $adicional['Ciudad'] = $datos['ciudadregistro'];
 279              $adicional['Provincia'] = $datos['provinciaregistro'];
 280              $adicional['Pais'] = $datos['paisregistro'];
 281              if($this->mth_usuarios->registrar($datos['nickregistro'],$datos['contrasenaregistro'],$datos['contrasenaregistro2'],$datos['emailregistro'],$datos['imagenregistro'],$adicional))
 282                  $objResponse->addAssign($capa,'innerHTML','Registro concluido satisfactoriamente');
 283              else $objResponse->addAlert(html_entity_decode($this->mth_usuarios->error));
 284          }
 285          else $objResponse->addAlert('Datos recibidos incorrectos');
 286          $objResponse->addAssign('cargando_registro','style.display','none');
 287          return $objResponse;
 288      }//FIN axRegistroUsuario
 289  
 290      /**
 291       * Función que comprueba si el email proporcionado es correcto
 292       * @param string Email a comprobar
 293       * @param string Div del html donde va a cargar los resultados
 294       */
 295      function axVerificarEmail($email='',$capa=''){
 296          $objResponse = new xajaxResponse();
 297          if($this->mth_usuarios->_email_valido($email)){
 298              if(!$this->mth_usuarios->_esregistrado('',$email))
 299                  $objResponse->addAssign($capa,'innerHTML','<br />Email  v&aacute;lido');
 300              else
 301                  $objResponse->addAssign($capa,'innerHTML','<br /><span style="color: red">Email registrado, por favor, escoja otro</span>');
 302          } 
 303          else
 304              $objResponse->addAssign($capa,'innerHTML','<br /><span style="color: red">'.$this->mth_usuarios->error.'</span>');
 305          return $objResponse;
 306      }//FIN axVerificarEmail
 307  
 308      /**
 309       * Función que envía el recordatorio de contraseña al usuario a través de xajax
 310       * @param array Datos introducidos por el usuario en el formulario
 311       * @param string Div del html donde va a cargar los resultados
 312       */
 313      function axRecordarContrasena($datos='',$capa=''){
 314          $objResponse = new xajaxResponse();
 315          if(strtolower($datos['imagenrecordar']) == strtolower($_SESSION['vimg'])){
 316              if($this->mth_usuarios->enviar_email_recordatorio($datos['usuariorecordar'],$datos['emailrecordar'])){
 317                  $desde_xajax = true;
 318                  include ('./templates/usuario.php');
 319                  $objResponse->addAssign($capa,'innerHTML',usuario_login());
 320              }
 321              else $objResponse->addAlert(html_entity_decode($this->mth_usuarios->error));
 322          }
 323          else{//IMAGEN DE VERIFICACION NO SALIO BIEN
 324              $objResponse->addAlert(html_entity_decode('Imagen de verificaci&oacute;n err&oacute;nea'));
 325              $objResponse->addScript('xajax.$(\'imagenrecordar\').focus()');
 326          }
 327          $objResponse->addAssign('cargando_recordar','style.display','none');
 328          return $objResponse;
 329      }//FIN axRecordarContrasena
 330  
 331      /**
 332       * Función que activa un usuario mediante xajax
 333       * @param array Datos introducidos por el usuario para activar su cuenta
 334       * @param string Div del html donde va a cargar los resultados
 335       */
 336      function axActivarCuenta($datos='',$capa=''){
 337          $objResponse = new xajaxResponse();
 338          if($this->mth_usuarios->activar_usuario($datos['usuarioactivar'],$datos['emailactivar'],$datos['cadenaactivar'])){
 339                  $ERROR = 'Cuenta activada, ya puede ingresar con su cuenta';
 340                  $ACCIONLOGIN = $this->configuracion['url_sistema'];
 341                  $FORMALOGIN_USUARIO = 'Usuario';
 342                  $FORMALOGIN_CONTRASENA = 'Contrasena';
 343                  $desde_xajax = true;
 344                  include ('./templates/usuario.php');
 345                  $objResponse->addAssign($capa,'innerHTML',usuario_login());
 346                  $objResponse->addScript('xajax.$(\'usuariologin\').onfocus = function(){limpiar(\'usuariologin\');}
 347                  xajax.$(\'contrasenalogin\').onfocus = function(){limpiar(\'contrasenalogin\');}
 348                  xajax.$(\'formalogin\').onsubmit = function(){xajax_conectar(xajax.getFormValues(\'formalogin\'));xajax.$(\'cargando_login\').style.display = \'\';return false;}');
 349          }
 350          else{
 351              $objResponse->addAlert(html_entity_decode($this->mth_usuarios->error));
 352          }
 353          $objResponse->addAssign('cargando_activar','style.display','none');
 354          return $objResponse;
 355      }//FIN axActivarCuenta
 356  
 357      /**
 358       * Función que actualiza los datos de un usuario dado su id, actualiza email
 359       * contraseña, etc...
 360       * @param array Datos introducidos por el usuario en el formulario correspondiente
 361       * @param string Div del html donde va a cargar los resultados
 362       */
 363      function axActualizarCuenta($datos='',$capa){
 364          $objResponse = new xajaxResponse();
 365              $adicional = array();
 366              $adicional['Ciudad'] = $datos['ciudadsucuenta'];
 367              $adicional['Provincia'] = $datos['provinciasucuenta'];
 368              $adicional['Pais'] = $datos['paissucuenta'];
 369              if($this->mth_usuarios->editar_usuario($_SESSION['usuario'],$datos['contrasenasucuenta'],$datos['contrasenasucuenta2'],$datos['emailsucuenta'],$adicional)){
 370                  $desde_xajax = true;
 371                  include ('./templates/usuario.php');
 372                  if($row = $this->mth_usuarios->info_usuario($_SESSION['usuario']))
 373                      $USUARIOCONECTADO = $row['Nick'];
 374                  $objResponse->addAssign($capa,'innerHTML',usuario_conectado());
 375              }
 376              else
 377                  $objResponse->addAlert($mth->mth_usuarios->error);
 378          return $objResponse;
 379      }//FIN axActualizarCuenta
 380  /********************************************************************************
 381  FUNCIONES DE XAJAX PARA ADMINISTRACION FUNCIONES DE XAJAX PARA ADMINISTRACION
 382  FUNCIONES DE XAJAX PARA ADMINISTRACION FUNCIONES DE XAJAX PARA ADMINISTRACION
 383  FUNCIONES DE XAJAX PARA ADMINISTRACION FUNCIONES DE XAJAX PARA ADMINISTRACION
 384  ********************************************************************************/
 385      /**
 386       * Función que actualiza la configuración de la web utilizando Xajax
 387       * @param array Datos para actualizar la configuración de la web
 388       */
 389      function ad_axActualizarConfiguracion($datos=''){
 390          $objResponse = new xajaxResponse();
 391          if($this->actualizar_configuracion($datos))
 392              $objResponse->addAlert('Configuración actualizada correctamente');
 393          else $objResponse->addAlert('Ocurrió un error al actualizar la configuración');
 394          $objResponse->addAssign('enviar','value','Configurar');
 395          return $objResponse;
 396      }//FIN actualizarConfiguracion
 397  
 398      /**
 399       * Función que busca usuarios dados sus iniciales del nick
 400       * @param string Parámetro de busqueda de nick
 401       * @param string Div del html donde va a cargar los resultados
 402       */
 403      function ad_axBuscarUsuario($inicial='',$capa=''){
 404          $objResponse = new xajaxResponse();
 405          if($listado = $this->mth_usuarios->buscar_usuario($inicial)){
 406              $lista = '<br />Usuarios encontrados:<ul>';
 407              foreach($listado as $key => $value){
 408                  $lista .= '<li><a href="#" id="usuario-'.$key.'" onclick="xajax.$(\'user\').value = \''.$value['Nick'].'\'">'.$value['Nick'].'</a></li>';
 409                  $script = 'xajax.$(\'usuario-'.$key.'\').onclick = function(){ xajax.$(\'user\').value = \''.$value['Nick'].'\' }';
 410                  $objResponse->addScript($script);
 411              }
 412              $lista .= '</ul>';
 413              $objResponse->addAssign($capa,'innerHTML',$lista);
 414          }
 415          return $objResponse;
 416      }//FIN buscarUsuario
 417  
 418      /**
 419       * Función que muestra el formulario para añadir usuarios, siempre que el parámetro de entrada
 420       * sea vacío, si no está vacío entonces pasa a añadir al usuario
 421       * @param array Datos del usuario a añadir
 422       */
 423  	function ad_axAnadirUsuario($datos='',$capa=''){
 424          $objResponse = new xajaxResponse();
 425                  global $paisregistro;
 426          if($datos == ''){
 427                      $desde_xajax = 1;
 428                      include ('./templates/usuario.php');
 429                      include ('templates/funciones.template.php');
 430                      $paisregistro = $this->lista_paises();
 431                      $objResponse->addAssign($capa,'innerHTML',usuario_registro());
 432                      $script = 'function comprobar_nick(){
 433                          xajax.$(\'comprobar_nickregistro\').innerHTML = \'<br />Comprobando Nombre de usuario...\';
 434                          xajax_comprobarNick(xajax.$(\'nickregistro\').value,\'comprobar_nickregistro\');
 435                          }
 436                          function comprobar_email(){
 437                          xajax.$(\'comprobar_emailregistro\').innerHTML = \'<br />Comprobando Email...\';
 438                          xajax_verificarEmail(xajax.$(\'emailregistro\').value,\'comprobar_emailregistro\');
 439                          }
 440                          xajax.$(\'registroweb\').onsubmit = function(){
 441                          xajax_registroUsuario(xajax.getFormValues(\'registroweb\'),\'registroweb\');
 442                          xajax.$(\'cargando_registro\').style.display = \'\';
 443                          return false;
 444                          }
 445                          addEvent(xajax.$(\'nickregistro\'),\'blur\',comprobar_nick);
 446                          addEvent(xajax.$(\'emailregistro\'),\'blur\',comprobar_email);';
 447                      $objResponse->addScript($script);
 448                  }
 449          return $objResponse;
 450      }//FIN anadirUsuario
 451  }
 452  ?>


Generado: Wed Mar 28 13:27:31 2007 Realizado con PHPXref 0.7