git-svn-id: https://192.168.0.254/svn/Proyectos.Incam_Intranet/trunk/src@1 e2b1556b-49f8-d141-9351-52d6861a72d9
209 lines
4.9 KiB
PHP
209 lines
4.9 KiB
PHP
<?php
|
|
/*
|
|
* Clase Empresa
|
|
*/
|
|
|
|
include_once("BD.php");
|
|
|
|
class Empresa {
|
|
|
|
//Atributos:
|
|
|
|
/* Usuario que tiene activa la sesión. */
|
|
private $usuario;
|
|
|
|
/* Idioma */
|
|
private $locale;
|
|
|
|
/* Contiene una lista con todos los atributos y su valor*/
|
|
private $campos = array();
|
|
|
|
//Constructor:
|
|
|
|
/**
|
|
* Recupera un pedido a partir de su identificador.
|
|
* @param id - datos necesarios para crear un pedido.
|
|
*/
|
|
function Empresa($usuario, $id, $locale){
|
|
$this->usuario = $usuario;
|
|
switch (gettype($id)) {
|
|
case "string":$this->campos['oid']=$id;
|
|
break;
|
|
case "array": $this->parseaArray($id);
|
|
break;
|
|
case "resource": $this->parseaResource($id);
|
|
break;
|
|
default: echo gettype($id);
|
|
break;
|
|
}
|
|
$this->locale = $locale;
|
|
}
|
|
|
|
/**
|
|
* Devuelve el valor de un campo.
|
|
* @param nombre - nombre del campo por el que buscar.
|
|
* @return valor del campo buscado.
|
|
*/
|
|
function getValor($nombre){
|
|
$especial = false;
|
|
if(gettype($nombre) != "integer" && gettype($nombre) != "string"){
|
|
return false;
|
|
exit;
|
|
}
|
|
if(array_key_exists($nombre,$this->campos)){
|
|
// El campo ya lo habíamos recuperamos, lo mostramos
|
|
return $this->campos[$nombre];
|
|
} else {
|
|
// Hay que recuperar el campo de la base de datos
|
|
$consulta="SELECT * FROM clientes WHERE oid=\"".$this->campos['oid']."\"";
|
|
|
|
switch ($nombre) {
|
|
case "nombre_gerente":$idGerente=$this->getValor("gerente");
|
|
$consulta="SELECT CONCAT(nombre,\" \",apellidos) FROM usuarios WHERE oid=\"".$idGerente."\"";
|
|
$especial = true;
|
|
break;
|
|
case "nombre_privacidad":$idGerente=$this->getValor("oid");
|
|
$consulta="SELECT privado FROM clientes WHERE oid=\"".$idGerente."\"";
|
|
$especial = true;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
$bd=new BD();
|
|
|
|
if(!$especial){
|
|
$valores = $bd->getRegistro($consulta);
|
|
|
|
// Lo insertamos para nosotros
|
|
foreach($valores as $key => $value){
|
|
$arrayAct=array($key => $value);
|
|
$this->campos=$this->campos + $arrayAct;
|
|
}
|
|
}else{
|
|
// Lo insertamos para nosotros
|
|
$valor= $bd->getCampo($consulta);
|
|
//echo $valor."-".$consulta;
|
|
if($nombre == "nombre_privacidad"){
|
|
switch ($valor) {
|
|
case 0:
|
|
$valor = $this->locale['2213'];
|
|
break;
|
|
case 1:
|
|
$valor = $this->locale['2212'];
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
// Lo insertamos para nosotros
|
|
$arrayAct=array($nombre => $valor);
|
|
$this->campos=$this->campos + $arrayAct;
|
|
}
|
|
|
|
return $this->campos[$nombre];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Acceso a los campos de la empresa.
|
|
* @return los campos de la empresa.
|
|
*/
|
|
function getCampos(){
|
|
return $this->campos;
|
|
}
|
|
|
|
/**
|
|
* Asigna un nuevo campo a la empresa
|
|
* @param nombre - nombre del campo a asignar.
|
|
* @param valor - valor del campo.
|
|
*/
|
|
private function setCampo($nombre, $valor){
|
|
$viejo = $this->getValor($nombre);
|
|
if($viejo != $valor){
|
|
$this->campos[$nombre] = $valor;
|
|
$dato = $nombre." = '".$valor."',";
|
|
return $dato;
|
|
}else{
|
|
return "";
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Asigna nuevos campos a la empresa.
|
|
* @param array - lista de campos a asignar de la forma campo => valor.
|
|
*/
|
|
function setCampos($array){
|
|
if($this->puedeGestionar()){
|
|
$consulta = "UPDATE clientes SET ";
|
|
foreach($array as $key => $value){
|
|
$consulta .= $this->setCampo($key, $value);
|
|
}
|
|
//Quitamos la última coma
|
|
if ($consulta{strlen($consulta) - 1} == ",")
|
|
$consulta = substr($consulta,0,strlen($consulta) - 1);
|
|
$oid = $this->getValor("oid");
|
|
$consulta .= "WHERE oid='$oid'";
|
|
$bd = new BD();
|
|
if($bd->execQuery($consulta)){
|
|
return true;
|
|
}else{
|
|
$error = $this->locale['bd'];
|
|
throw new Exception($error);
|
|
return false;
|
|
exit;
|
|
}
|
|
}else{
|
|
$error = $this->locale['2206'];
|
|
throw new Exception($error);
|
|
return false;
|
|
exit;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Elimina una empresa de la base de datos.
|
|
*/
|
|
function eliminar(){
|
|
//PERMISOS:
|
|
$gerente = $this->getValor("gerente");
|
|
if($this->puedeGestionar()){
|
|
$oid = $this->getValor("oid");
|
|
$consulta = "DELETE FROM clientes WHERE oid='$oid'";
|
|
$bd = new BD();
|
|
if($bd->execQuery($consulta)){
|
|
return true;
|
|
}else{
|
|
$error = $this->locale['bd'];
|
|
throw new Exception($error);
|
|
return false;
|
|
exit;
|
|
}
|
|
}else{
|
|
$error = $this->locale['2206'];
|
|
throw new Exception($error);
|
|
return false;
|
|
exit;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Comprueba si el usuario tiene permisos para gestionar la empresa.
|
|
*/
|
|
function puedeGestionar(){
|
|
//Sólo los gerentes pueden gestionar empresas.
|
|
if($this->usuario->tieneRol(3)){
|
|
//Sólo puede si es el propio dueño o administrador.
|
|
if(($this->usuario->getValor("oid") == $this->getValor("gerente")) || $this->usuario->tieneRol(1)){
|
|
return true;
|
|
}else{
|
|
return false;
|
|
}
|
|
}else{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
?>
|