'', 'id_tipo_archivo' => '', // 1: imagen, 2: documento 'id_tipo_origen' => '', // 1: jornada 'id_idioma' => '1', // 1: castellano 'archivo' => '', 'alt' => '', 'title' => '', 'descripcion' => '', 'texto' => '', 'id_tipo_etiqueta' => '', 'num_play' => '', 'num_completo' => '', 'publicar' => '0' ); var $tipos = Array( 'id_origen' => 'int', 'id_tipo_archivo' => 'int', // 1: imagen, 2: documento 'id_tipo_origen' => 'int', // 1: jornada 'id_idioma' => 'int', // 1: castellano 'archivo' => 'varchar', 'alt' => 'varchar', 'title' => 'varchar', 'descripcion' => 'varchar', 'texto' => 'varchar', 'id_tipo_etiqueta' => 'int', 'num_play' => 'int', 'num_completo' => 'int', 'publicar' => 'int' ); var $error = ''; var $ancho_thumb = 84; var $res; var $linkr; var $linkw; /** * De momento vamos a coontrolar si mod_archivos va versionado co una variable en la clase * Más adelante lo tendremos que pasar en el constructor * @var boolean */ var $versiones = FALSE; var $infoReg = array(); var $comun; /** * @param string $linkr * @param string $linkw * @param $comun con las versiones se hace necesarios saber si el archivo es comun o no */ function archivo($linkr = "", $linkw = "", $comun = false) { if (isset ( $linkr )) $this->linkr = $linkr; if (isset ( $linkw )) $this->linkw = $linkw; if (isset ( $comun )) $this->comun = $comun; if($GLOBALS['objetos_versionados'])$this->versiones=TRUE; } function setCampo($campo, $valor) { $this->campos [strtolower ( $campo )] = $valor; } function getCampo($campo) { return $this->campos [strtolower ( $campo )]; } function getId() { return $this->id_archivo; } function get($id_archivo) { $_sqlA = "SELECT * FROM " . $this->tabla . " WHERE id_archivo=" . $id_archivo; // control publicado if (!$_SESSION['editar'] && $this->isVersioned()) { $strWhere .= " AND ott_publicado = 1"; } // versiones if ($this->isVersioned()) { $sqlVersion .= " ORDER BY ott_version DESC LIMIT 1"; } $_resA = query ( $_sqlA . $strWhere . $sqlVersion , $this->linkr ); if (! $_resA) { $this->error = "Error: $_sqlA
" . mysql_error (); return false; } $_dataA = mysql_fetch_object ( $_resA ); if (! $_dataA) { $this->error = "Error, archivo no encontrado: $_sqlA
" . mysql_error (); return false; } foreach ( $this->campos as $campo => $valor ) $this->campos [$campo] = $_dataA->$campo; $this->id_archivo = $id_archivo; $this->getInfoVersion($_dataA); return true; } function getM($id_origen, $id_tipo_archivo = 1, $id_tipo_origen = 1, $publicar = 1, $id_tipo_etiqueta = 1, $id_categoria = "", $idioma = "") { if ($id_tipo_etiqueta) $strTipoEtiqueta = " AND id_tipo_etiqueta=" . $id_tipo_etiqueta; if ($id_categoria) $strCategoria = " AND id_categoria=" . $id_categoria; if ($idioma) $strIdioma = " id_idioma = " . $idioma; else $strIdioma = " id_idioma = " . $_SESSION ["idioma"]; // control publicado if ($this->isVersioned()) { if (!$_SESSION['editar']) { $strWhere .= " AND ott_publicado = 1"; } else { $strWhere .= " AND ott_version_activa = 1"; } } if (! $this->res) { $_sqlA = "SELECT * FROM " . $this->tabla . " WHERE " . $strIdioma . $strWhere . " AND id_origen=" . $id_origen . " AND id_tipo_archivo=" . $id_tipo_archivo . " AND id_tipo_origen=" . $id_tipo_origen . " AND publicar=" . $publicar . $strTipoEtiqueta . $strCategoria; //echo $_sqlA; $_resA = query ( $_sqlA, $this->linkr ); if (! $_resA) { $this->error = "Error: $_sqlA
" . mysql_error (); return false; } $_dataA = mysql_fetch_object ( $_resA ); if (! $_dataA) { $this->error = "Error, archivo no encontrado: $_sqlA
" . mysql_error (); return false; } foreach ( $this->campos as $campo => $valor ) $this->campos [$campo] = $_dataA->$campo; $this->id_archivo = $_dataA->id_archivo; $this->res = $_resA; $this->getInfoVersion($_dataA); } else { $_dataA = mysql_fetch_object ( $this->res ); if (! $_dataA) { $this->error = "Error, fin dataset: $_sqlA
" . mysql_error (); return false; } foreach ( $this->campos as $campo => $valor ) $this->campos [$campo] = $_dataA->$campo; $this->id_archivo = $_dataA->id_archivo; $this->getInfoVersion($_dataA); } return true; } //copia de getM con opcion de idioma function getM_idioma($id_origen, $id_tipo_archivo = 1, $id_tipo_origen = 1, $publicar = 1, $id_tipo_etiqueta = 1, $id_categoria = "", $idioma) { if ($id_tipo_etiqueta) $strTipoEtiqueta = " and id_tipo_etiqueta=" . $id_tipo_etiqueta; if ($id_categoria) $strCategoria = " and id_categoria=" . $id_categoria; if (! $this->res) { $_sqlA = "select * from " . $this->tabla . " where id_idioma = " . $idioma . " and id_origen=" . $id_origen . " and id_tipo_archivo=" . $id_tipo_archivo . " and id_tipo_origen=" . $id_tipo_origen . " and publicar=" . $publicar . $strTipoEtiqueta . $strCategoria; //echo $_sqlA; $_resA = query ( $_sqlA, $this->linkr ); if (! $_resA) { $this->error = "Error: $_sqlA
" . mysql_error (); return false; } $_dataA = mysql_fetch_object ( $_resA ); if (! $_dataA) { $this->error = "Error, archivo no encontrado: $_sqlA
" . mysql_error (); return false; } foreach ( $this->campos as $campo => $valor ) $this->campos [$campo] = $_dataA->$campo; $this->id_archivo = $_dataA->id_archivo; $this->res = $_resA; } else { $_dataA = mysql_fetch_object ( $this->res ); if (! $_dataA) { $this->error = "Error, fin dataset: $_sqlA
" . mysql_error (); return false; } foreach ( $this->campos as $campo => $valor ) $this->campos [$campo] = $_dataA->$campo; $this->id_archivo = $_dataA->id_archivo; } return true; } function getMM($id_origen, $id_tipo_archivo = 1, $id_tipo_origen = 1) { if (! $this->res) { $_sqlA = "select * from " . $this->tabla . " where id_idioma = " . $_SESSION ["idioma"] . " and id_origen=" . $id_origen . " and id_tipo_archivo=" . $id_tipo_archivo . " and id_tipo_origen=" . $id_tipo_origen; $_resA = query ( $_sqlA, $this->linkr ); if (! $_resA) { $this->error = "Error: $_sqlA
" . mysql_error (); return false; } $_dataA = mysql_fetch_object ( $_resA ); if (! $_dataA) { $this->error = "Error, archivo no encontrado: $_sqlA
" . mysql_error (); return false; } foreach ( $this->campos as $campo => $valor ) $this->campos [$campo] = $_dataA->$campo; $this->id_archivo = $_dataA->id_archivo; $this->res = $_resA; $this->getInfoVersion($_dataA); } else { $_dataA = mysql_fetch_object ( $this->res ); if (! $_dataA) { $this->error = "Error, fin dataset: $_sqlA
" . mysql_error (); return false; } foreach ( $this->campos as $campo => $valor ) $this->campos [$campo] = $_dataA->$campo; $this->id_archivo = $_dataA->id_archivo; $this->getInfoVersion($_dataA); } return true; } function cuantos() { if ($this->res) return mysql_num_rows ( $this->res ); else return 0; } function seek($n) { if ($this->res) return mysql_data_seek ( $this->res, $n ); else return false; } function update() { if (! isset ( $this->id_archivo )) { $this->error = "Error: id_archivo no está inicilizado"; return false; } $_sqlA = "UPDATE " . $this->tabla . " SET "; foreach ( $this->campos as $campo => $valor ) { if ($this->tipos [$campo] == int) { if (! $this->campos [$campo]) $_sqlA .= $campo . "=0,"; else $_sqlA .= $campo . "=" . $this->campos [$campo] . ","; } else $_sqlA .= $campo . "='" . $this->campos [$campo] . "',"; } $_sqlA = rtrim ( $_sqlA, "," ) . " WHERE id_archivo = " . $this->id_archivo; // control de versiones if ($this->isVersioned()) { return $this->insert('update'); } else { $_resA = query ( rtrim ( $_sqlA, "," ), $this->linkw ); if (! $_resA) { $this->error = "Error: $_sqlA
" . mysql_error (); return false; } } return true; } function insert($previous = null) { $_sqlA = "INSERT INTO " . $this->tabla . " ( "; foreach ( $this->campos as $campo => $valor ) { $c .= $campo . ","; if ($this->tipos [$campo] == int) { if (! $this->campos [$campo]) $v .= "0,"; else $v .= $this->campos [$campo] . ","; } else $v .= "'" . $this->campos [$campo] . "',"; } // versiones if ($this->isVersioned()) { if ($previous == 'update') { // vengo de un update, por lo tanto hay versiones anteriores que debo desactivar (ott_version_activa=0) // debo desactivar el idioma que estoy tratando en este momento, en caso de que tenga idioma // y en caso de que no sea comun. Si es comun desactivo todos. if ($this->campos['id_idioma']) { if (!$this->comun) { $condIdioma = " AND id_idioma = ".$this->campos['id_idioma']; } } else unset($condIdioma); $s = 'UPDATE ' . $this->tabla . ' SET ott_version_activa = 0 WHERE id_archivo = '.$this->getId().$condIdioma; $r = query($s , $this->linkw); if (!$r) { $this->error = "Error: $s
" . mysql_error (); return false; } $_sqlA .= 'id_archivo,'.rtrim($c,",").",ott_autor,ott_version,ott_version_activa) VALUES ( ".$this->getId().",".rtrim($v,",").",'".$_SESSION['usu_admin']."',".($this->infoReg['numVersion']+1).",1)"; } else { $_sqlA .= rtrim($c,",").",ott_autor,ott_version,ott_version_activa) VALUES ( ".rtrim($v,",").",'".$_SESSION['usu_admin']."',".($this->infoReg['numVersion']+1).",1)"; } } else { $_sqlA .= rtrim ( $c, "," ) . ") VALUES ( " . rtrim ( $v, "," ) . ")"; //exit($_sqlA); } $_resA = query ( rtrim ( $_sqlA, "," ), $this->linkw ); if (! $_resA) { $this->error = "Error: $_sqlA
" . mysql_error (); return false; } $this->id_archivo = mysql_insert_id (); return true; } function delete($id, $path = "") { $_sqlA = "delete from " . $this->tabla . " where id_archivo=" . $id; $_resA = query ( $_sqlA, $this->linkw ); if (! $_resA) { $this->error = "Error: $_sqlA
" . mysql_error (); return false; } // ahora borro los ficheros asociados // unlink($this->getPath($path,"archivo",0,"fichero")); // if ($this->campos["id_tipo_archivo"] == _IMG_) // unlink($this->getPath($path,"archivo",1,"fichero")); // rmdir($this->getPath($path,"archivo",0,"dir")); // if ($this->campos["id_tipo_archivo"] == _IMG_) // rmdir($this->getPath($path,"archivo",1,"dir")); return true; } function get_insert_id() { $_sqlA = "select max(id_archivo) as idT from " . $this->tabla . ""; $_resA = query ( $_sqlA, $this->linkr ); if (! $_resA) { $this->error = "Error: $_sqlA
" . mysql_error (); return false; } if (mysql_num_rows ( $_resA ) > 0) { $_dataA = mysql_fetch_object ( $_resA ); return $_dataA->idT; } else return 0; } function getTipoEtiqueta() { if ($this->campos ['id_tipo_etiqueta']) return getTipoEtiqueta ( $this->link, $this->campos ['id_tipo_etiqueta'] ); else return "-"; } function getImgEtiqueta() { if ($this->campos ['id_tipo_etiqueta']) return getImgEtiqueta ( $this->link, $this->campos ['id_tipo_etiqueta'] ); else return "-"; } function getTamanyo($path = "../../") { if ($this->campos ['archivo']) { $kb = intval ( filesize ( $path . "upload/" . getTipoOrigen ( $this->campos ['id_tipo_origen'] ) . "/" . getTipoArchivo ( $this->campos ['id_tipo_archivo'] ) . "/" . $this->id_archivo . "/" . $this->campos ['archivo'] ) / 1024 ); return $kb . " KB"; } else return "0 KB"; } function getPath($base_path, $archivo, $thumb = 0, $dir = "fichero") { if ($thumb) $thumbStr = "/thumb"; else $thumbStr = ""; if ($dir == "fichero") return $base_path . $thumbStr . $this->campos [$archivo]; else return $base_path . $thumbStr; } function getAlt($base_path, $archivo, $thumb = 0, $dir = "fichero") { if ($thumb) $thumbStr = "/thumb"; else $thumbStr = ""; if ($dir == "fichero") return $this->campos ['alt']; else return ""; } function getTitle($base_path, $archivo, $thumb = 0, $dir = "fichero") { if ($thumb) $thumbStr = "/thumb"; else $thumbStr = ""; if ($dir == "fichero") return $this->campos ['title']; else return ""; } function error() { return $this->error; } public function isVersioned() { return ($this->versiones == true); } public function isPublished() { if ($this->isVersioned()) { return ($this->infoReg['publicado'] == 'Publicado'); } return true; } protected function getInfoVersion($data) { if ($this->isVersioned()) { $this->infoReg['numVersion'] = $data->ott_version; $this->infoReg['autor'] = $data->ott_autor; $this->infoReg['fecha_modificacion'] = $data->fecha_modificacion; $this->infoReg['publicado'] = ($data->ott_publicado?'Publicado':'Pendiente'); } } public function publicar() { $s = "UPDATE ".$this->tabla." SET ott_publicado = 0, ott_version_activa = 0 WHERE id_archivo = ".$this->getId(); $r = query($s,$this->linkw); if (!$r) { $this->error = "Error: $s
".mysql_error(); return false; } // luego pongo a publicado el que tenga la versión mas alta $s = "UPDATE ".$this->tabla." SET ott_publicado = 1, ott_version_activa = 1 where id_archivo = ".$this->getId()." AND ott_version = ".$this->infoReg['numVersion']; $r = query($s,$this->linkw); if (!$r) { $this->error = "Error: $s
".mysql_error(); return false; } return true; } } ?> Mi dolor de cabeza | Tratamientos cefalea, migraña y neuralgia

Mi dolor de cabeza .org