id = ''; $this->group = ''; $this->name = ''; $this->lang = ''; $this->is_login = false; $this->folder_id = kHOME_ID; $this->folder_name = ''; //kHOME_NAME; $this->message = ''; $this->trash = false; } // ---------------------------------------------------------- private function reset_data( ) { $this->id = ''; $this->group = ''; $this->name = ''; $this->lang = ''; $this->is_login = false; $this->folder_id = kHOME_ID; $this->folder_name = ''; //kHOME_NAME; $this->message = ''; $this->trash = false; } // ---------------------------------------------------------- public function login( $user, $pass, $lang ) { $this->reset_data(); $this->lang = $lang; $this->is_login = $this->sql_login_ok( $user, $pass ); if ($this->is_login) { $this->open_session( ); } else { $this->logoff( ); } return $this->is_login; } // ---------------------------------------------------------- public function logoff( ) { $this->close_session(); } // ---------------------------------------------------------- public function get_id( ) { if (isset($_SESSION["s_user_id"])) { return $_SESSION["s_user_id"]; } else { return $this->$id; } } // ---------------------------------------------------------- public function get_group( ) { if (isset($_SESSION["s_user_group"])) { return $_SESSION["s_user_group"]; } else { return $this->$group; } } // ---------------------------------------------------------- public function get_name( ) { if (isset($_SESSION["s_user_name"])) { return $_SESSION["s_user_name"]; } else { return $this->$name; } } // ---------------------------------------------------------- public function get_lang( ) { if (isset($_SESSION["s_user_lang"])) { return $_SESSION["s_user_lang"]; } else { return $this->$lang; } } // ---------------------------------------------------------- public function get_trash( ) { if (isset($_SESSION["s_user_trash"])) { return $_SESSION["s_user_trash"]; } else { return $this->$trash; } } // ---------------------------------------------------------- public function is_login( ) { if (isset($_SESSION["s_login"])) { return $_SESSION["s_login"]; } else { return false; } } // ---------------------------------------------------------- public function get_folder_id( ) { if (isset($_SESSION["s_folder_id"])) { return $_SESSION["s_folder_id"]; } else { return $this->$folder_id; } } // ---------------------------------------------------------- public function get_folder_name( ) { if (isset($_SESSION["s_folder_name"])) { return $_SESSION["s_folder_name"]; } else { return $this->folder_name; } } // ---------------------------------------------------------- public function set_folder( $folder_id, $folder_name ) { $_SESSION["s_folder_id"] = $folder_id; $_SESSION["s_folder_name"] = $folder_name; } // ---------------------------------------------------------- public function get_message( ) { if (isset($_SESSION["s_message"])) { return $_SESSION["s_message"]; } else { return $this->message; } } // ---------------------------------------------------------- public function set_message( $message ) { $_SESSION["s_message"] = $message; } public function set_warning( $message ) { $_SESSION["s_message"] = "[WA]".$message; } public function set_error( $message ) { $_SESSION["s_message"] = "[ER]".$message; } public function set_success( $message ) { $_SESSION["s_message"] = "[OK]".$message; } // ---------------------------------------------------------- public function any_message( ) { return (! empty($_SESSION["s_message"])); } // ---------------------------------------------------------- public function clear_message( ) { $_SESSION["s_message"] = ''; } // ---------------------------------------------------------- public function get_ip( ) { return $_SERVER['REMOTE_ADDR']; } // ---------------------------------------------------------- public function can_write( $access ) { if (empty($access)) { return true; } else { // Comprobamos Usuario $user_full = '#'.$this->get_id().'.1#'; $user_read = '#'.$this->get_id().'.2#'; $user_write = '#'.$this->get_id().'.3#'; $pos = strpos( $access, $user_read ); if ($pos === false) { $pos = strpos( $access, $user_write ); if ($pos === false) { $pos = strpos( $access, $user_full ); if ($pos === false) { // Comprobamos Grupo $group_full = '#'.$this->get_group().'.1#'; $group_read = '#'.$this->get_group().'.2#'; $group_write = '#'.$this->get_group().'.3#'; $pos = strpos( $access, $group_read ); if ($pos === false ) { $pos = strpos( $access, $group_write ); if ($pos === false ) { $pos = strpos( $access, $group_full ); if ($pos === false) { return false; // No debería llegar nunca aquí } else { return true; } } else { return true; } } else { return false; } } else { return true; } } else { return true; } } else { return false; } } } // ---------------------------------------------------------- public function get_session_value( $session_key ) { return $_SESSION[$session_key]; } // ---------------------------------------------------------- public function set_session_value( $session_key, $session_value ) { $_SESSION[$session_key] = $session_value; } // ---------------------------------------------------------- public function isset_session_value( $session_key ) { return isset($_SESSION[$session_key]); } // ---------------------------------------------------------- public function unset_session_value( $session_key ) { if (isset($_SESSION[$session_key])) { unset($_SESSION[$session_key]); } } // ========================================================== // SQL // ---------------------------------------------------------- private function sql_login_ok( $user, $pass ) { global $db; $q_login_SELECT = "USUARIO, GRUPO, CHAT, ELIM_PAP_WEB" . " from USUARIOS" . " where USUARIO='%s'" . " and CLAVE=CAST(SHA1('%s') AS CHAR)" . " and (TIPO=0 OR TIPO=2)"; $query = sprintf($q_login_SELECT, $user, $pass); $result = $db->query_select($query); if ($result) { $row = $result->fetch_assoc(); $this->id = $row["USUARIO"]; $this->group = $row["GRUPO"]; $this->name = $row["CHAT"]; // Nombre corrto o nick => mejor para mostrar //$this->name = $row["NOMBRE"]; // Nombre largo => demasiado farragoso $this->trash = ( $row["ELIM_PAP_WEB"] == 1 ? true : false ); $result->close(); // Verifica que lo encontrado es del usuario y algún registro nulo if ($this->id != $user) { $this->reset_data(); return false; } return true; } return false; } // ========================================================== // SESSION // ---------------------------------------------------------- private function get_session( ) { $this->id = $_SESSION["s_user_id"]; $this->group = $_SESSION["s_user_group"]; $this->name = $_SESSION["s_user_name"]; $this->lang = $_SESSION["s_user_lang"]; $this->trash = $_SESSION["s_user_trash"]; $this->is_login = $_SESSION["s_login"]; $this->folder_id = $_SESSION["s_folder_id"]; $this->folder_name = $_SESSION["s_folder_name"]; $this->message = $_SESSION["s_message"]; } // ---------------------------------------------------------- private function set_session( ) { $_SESSION["s_user_id"] = $this->id; $_SESSION["s_user_group"] = $this->group; $_SESSION["s_user_name"] = $this->name; $_SESSION["s_user_lang"] = $this->lang; $_SESSION["s_user_trash"] = $this->trash; $_SESSION["s_login"] = $this->is_login; $_SESSION["s_folder_id"] = $this->folder_id; $_SESSION["s_folder_name"] = $this->folder_name; $_SESSION["s_message"] = $this->message; } // ---------------------------------------------------------- private function reset_session( ) { $this->reset_data(); $this->set_session(); } // ---------------------------------------------------------- private function open_session( ) { $this->set_session(); } // -------------------------------------------------------------- private function close_session( ) { $this->reset_session(); session_unset(); session_destroy(); } } // -------------------------------------------------------------- ?>