'', '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; } } ?> Ensayos clínicos
. **/ var $siguiente = "Siguiente >"; /** * Código de Anterior. * * Este atributo contiene el código HTML que representará al link * para retroceder a la página anterior de resultados. * Puede ser cualquier código HTML permitido dentro dentro de un * tag . **/ var $anterior = "< Anterior"; function enablePagina() { return $this -> enablePagina = func_get_arg(0); } /**metodo para acceder a la $pagina**/ function pagina() { switch (func_num_args()) { case 1 : $this -> pagina = func_get_arg(0); $this -> pagina = empty($this -> pagina) ? 1 : $this -> pagina; break; default : return $this -> pagina; break; } } function porPagina() { switch (func_num_args()) { case 1 : $this -> porPagina = func_get_arg(0); break; default : return $this -> porPagina; break; } } /** * Despliega el link hacia la siguiente página * Siempre que quede una página siguiente, se muestra un link * hacia la siguiente página de resultados. * El método acepta ser llamado con un parámetro que contenga el * código HTML que representará al link y que pueda ser representado * encerrado dentro de un tag . **/ function siguiente() { switch (func_num_args()) { case 2 : $class = func_get_arg(1); case 1 : $this -> siguiente = func_get_arg(0); default : //$a = ((($this->pagina-1)*($this->porPagina))+$this->cuantos()); //$b = $this->cuantos(); //if($this->pagina()*($this->cuantos()/$this->porPagina)+1 < $this->cuantos()) //if($a < $b); if($this -> pagina < $this -> totalPaginas()) { if($_SESSION["editar"]) return " paramPaginado . "=" . ($this -> pagina() + 1) . $this -> propagar() . "\">" . $this -> siguiente . ""; else return " paramPaginado . "=" . ($this -> pagina() + 1) . $this -> propagar()) . "\">" . $this -> siguiente . ""; } if($this -> pagina() == $this -> totalPaginas()) { //return $this->siguiente; return "" . $this -> siguiente . ""; } break; } } /** * Despliega el link hacia la página anterior. * * Siempre que no estemos en la primer página, se muestra un link * hacia la página anterior de resultados. * El método acepta ser sllamado con un parámetro que contenga el * código HTML que representará al link y que pueda ser representado * encerrado dentro de un tag . **/ function anterior() { switch (func_num_args()) { case 2 : $class = func_get_arg(1); case 1 : $this -> anterior = func_get_arg(0); default : if($this -> pagina() != 1) { if($_SESSION["editar"]) return " paramPaginado . "=" . ($this -> pagina() - 1) . $this -> propagar() . "\">" . $this -> anterior . ""; else return " paramPaginado . "=" . ($this -> pagina() - 1) . $this -> propagar()) . "\">" . $this -> anterior . ""; } if($this -> pagina() == 1) { //return $this->anterior; return "" . $this -> anterior . ""; } break; } } function anterior3() { global $_object; switch (func_num_args()) { case 2 : $class = func_get_arg(1); case 1 : $this -> anterior = func_get_arg(0); default : //de momento la funcion linkTo solo acepta parametros por array $propagar[$this -> paramPaginado] = ($this -> pagina() - 1); if($this -> propagar()) { $str = explode('&', $this -> propagar()); foreach($str as $v) { $str2 = explode('=', $v); if(trim($str2[0])) $propagar[$str2[0]] = $str2[1]; } } //if($GLOBALS['idiomas']) //{ if($this -> pagina() != 1) { if($_SESSION["editar"])//no esta programado return " paramPaginado . "=" . ($this -> pagina() - 1) . $this -> propagar() . "\">" . $this -> anterior . ""; else return "" . $this -> anterior . ""; } if($this -> pagina() == 1) { //return $this->anterior; //return "".$this->anterior.""; return ; } //} break; } } function siguiente3() { global $_object; switch (func_num_args()) { case 2 : $class = func_get_arg(1); case 1 : $this -> siguiente = func_get_arg(0); default : //de momento la funcion linkTo solo acepta parametros por array $propagar[$this -> paramPaginado] = ($this -> pagina() + 1); if($this -> propagar()) { $str = explode('&', $this -> propagar()); foreach($str as $v) { $str2 = explode('=', $v); if(trim($str2[0])) $propagar[$str2[0]] = $str2[1]; } } //$a = ((($this->pagina-1)*($this->porPagina))+$this->cuantos()); //$b = $this->cuantos(); //if($this->pagina()*($this->cuantos()/$this->porPagina)+1 < $this->cuantos()) //if($a < $b); if ($this -> pagina < $this -> totalPaginas()) { if($_SESSION["editar"]) return " paramPaginado . "=" . ($this -> pagina() + 1) . $this -> propagar() . "\">" . $this -> siguiente . ""; else //return "paramPaginado."=".($this->pagina()+1).$this->propagar())."\">".$this->siguiente.""; return "" . $this -> siguiente . ""; } if($this -> pagina() == $this -> totalPaginas()) { //return $this->siguiente; //return "".$this->siguiente.""; return; } break; } } /** * Despliega los números de páginas posibles * Este método muestra una lista de todas las páginas posibles como * links, excepto la página actual, que se encuentra sin link y resaltada * en negrita. **/ function nroPaginas($separador="|", $preLink="", $postLink="", $preActive="", $postActive="") { if($_SESSION["editar"]) { //for($i = 1; $i <= $this->totalPaginas() ; $i++) $ini = intval($this -> pagina / 5) * 5; if($ini == 0) $ini = 1; $fin = (intval($this -> pagina / 5) * 5) + 5; if($fin > $this -> totalPaginas()) $fin = $this -> totalPaginas(); for($i = $ini; $i <= $fin; $i++) { //if($i == $ini){ $preLink = str_replace('li', 'li class="primera"', $preLink); } $temp[$i] = $preLink . " paramPaginado . "=$i" . $this -> propagar()) . "\">$i" . $postLink; //if($i == $ini){ $preLink = str_replace('li class="primera"', 'li', $preLink); } } // for //if($this->pagina() == $ini) { $preActive = str_replace('li', 'li class="primera"', $preActive); } $class = 'class="seleccionada"'; $temp[$this -> pagina()] = $preActive . " paramPaginado . "=$i" . $this -> propagar()) . "\" $class>" . $this -> pagina() . "" . $postActive; return implode(" " . $separador . " ", $temp); } else { $ini = intval($this -> pagina / 5) * 5; if($ini == 0) $ini = 1; $fin = (intval($this -> pagina / 5) * 5) + 5; if($fin > $this -> totalPaginas()) $fin = $this -> totalPaginas(); //echo""; for($i = $ini; $i <= $fin; $i++) { //if($i == $ini){ $preLink = str_replace('li', 'li class="primera"', $preLink); } $temp[$i] = $preLink . " paramPaginado . "=$i" . $this -> propagar()) . "\">$i" . $postLink; //if($i == $ini){ $preLink = str_replace('li class="primera"', 'li', $preLink); } } // for //if($this->pagina() == $ini) { $preActive = str_replace('li', 'li class="primera"', $preActive); } $class = 'class="seleccionada"'; $temp[$this -> pagina()] = $preActive . " paramPaginado . "=$i" . $this -> propagar()) . "\" $class>" . $this -> pagina() . "" . $postActive; return implode("", $temp); } } // function function nroPaginas3($separador="|", $preLink="", $postLink="", $preActive="", $postActive="") { global $_object; //de momento la funcion linkTo solo acepta parametros por array if($this -> propagar()) { $str = explode('&', $this -> propagar()); foreach($str as $v) { $str2 = explode('=', $v); if(trim($str2[0])) $propagar[$str2[0]] = $str2[1]; } } if($_SESSION["editar"]) { //for($i = 1; $i <= $this->totalPaginas() ; $i++) $ini = intval($this -> pagina / 5) * 5; if($ini == 0) $ini = 1; $fin = (intval($this -> pagina / 5) * 5) + 5; if($fin > $this -> totalPaginas()) $fin = $this -> totalPaginas(); for($i = $ini; $i <= $fin; $i++) { //propagar $propagar[$this -> paramPaginado] = $i; //if($i == $ini){ $preLink = str_replace('li', 'li class="primera"', $preLink); } //if($i == ($fin)){ $preLink = str_replace('li', 'li class="ultima"', $preLink); } //$temp[$i] = $preLink."paramPaginado."=$i".$this->propagar())."\">$i".$postLink; $temp[$i] = $preLink . "$i" . $postLink; //if($i == $ini){ $preLink = str_replace('li class="primera"', 'li', $preLink); } //if($i == ($fin)){ $preLink = str_replace('li class="ultima"', 'li', $preLink); } } // for //if($this->pagina() == $ini) { $preActive = str_replace('li', 'li class="primera"', $preActive); } //if($this->pagina() == ($fin)) { $preActive = str_replace('li', 'li class="ultima"', $preActive); } //$class = 'class="seleccionada"'; //propagar $propagar[$this -> paramPaginado] = $this -> pagina(); //$temp[$this->pagina()] = $preActive."paramPaginado."=$i".$this->propagar())."\" $class>".$this->pagina()."".$postActive; $temp[$this -> pagina()] = $preActive . $this -> pagina() . $postActive; return implode(" " . $separador . " ", $temp); } else { $ini = intval($this -> pagina / 5) * 5; if($ini == 0) $ini = 1; $fin = (intval($this -> pagina / 5) * 5) + 5; if($fin > $this -> totalPaginas()) $fin = $this -> totalPaginas(); for($i = $ini; $i <= $fin; $i++) { //propagar $propagar[$this -> paramPaginado] = $i; //if($i == $ini){ $preLink = str_replace('li', 'li class="primera"', $preLink); } //if($i == ($fin)){ $preLink = str_replace('li', 'li class="ultima"', $preLink); } //$temp[$i] = $preLink."paramPaginado."=$i".$this->propagar())."\">$i".$postLink; $temp[$i] = $preLink . "$i" . $postLink; //if($i == $ini){ $preLink = str_replace('li class="primera"', 'li', $preLink); } //if($i == ($fin)){ $preLink = str_replace('li class="ultima"', 'li', $preLink); } } // for //if($this->pagina() == $ini) { $preActive = str_replace('li', 'li class="primera"', $preActive); } //if($this->pagina() == ($fin)) { $preActive = str_replace('li', 'li class="ultima"', $preActive); } //$class = 'class="seleccionada"'; //propagar $propagar[$this -> paramPaginado] = $this -> pagina(); //$temp[$this->pagina()] = $preActive."paramPaginado."=$i".$this->propagar())."\" $class>".$this->pagina()."".$postActive; $temp[$this -> pagina()] = $preActive . $this -> pagina() . $postActive; return implode(" " . $separador . " ", $temp); } } /** * Indica que variables se desean propagar en los links. * * Este metodo recibe una lista de nombres que son guarados internamente * hasta que son creados los links para navegar los resultados. En ese * momento, son agregados los nombres de las variables con sus valores * para que puedan ser propagados. **/ function propagar() { switch(func_num_args()) { case 0 : if($this -> variables && is_array($this -> variables)) { foreach($this->variables as $var) { //$ret.= "&$var=".$GLOBALS[$var]; if($GLOBALS[$var]) $ret .= "&$var=" . sanitize($GLOBALS[$var]); else $ret .= "&$var=" . sanitize($_REQUEST[$var]); } } return $ret; break; default : for($i = 0; $i < func_num_args(); $i++) { $this -> variables[] = func_get_arg($i); } break; } } /** * Retorna el indice dentro del Result Set del primer * elemento de la página actual. **/ function desde() { return (($this -> pagina() - 1) * $this -> porPagina()) + 1; } /** * Retorna el �ndice dentro del Result Set del �ltimo * elemento de la p�gina actual. **/ function hasta() { return ($this -> desde() - 1) + $this -> cuantos(); } /** * Método para acceder a $total **/ function total() { switch (func_num_args()) { case 1 : $this -> total = func_get_arg(0); break; default : return $this -> total; break; } } function totalPaginas() { switch (func_num_args()) { case 1 : $this -> totalPaginas = func_get_arg(0); break; default : return $this -> totalPaginas; break; } } /** * Método para acceder a $_registros **/ function registros() { switch (func_num_args()) { case 1 : $this -> _registros = func_get_arg(0); break; default : return $this -> registros; break; } } function pagInicio() { if($this -> pagina() > 1) { return " paramPaginado . "=1" . $this -> propagar() . "\">" . func_get_arg(0) . ""; } elseif($this -> pagina() == 1) return func_get_arg(0); } function pagFinal() { if($this -> pagina() < $this -> totalPaginas()) { return " paramPaginado . "=" . $this -> totalPaginas() . $this -> propagar() . "\">" . func_get_arg(0) . ""; } elseif($this -> pagina() == $this -> totalPaginas()) return func_get_arg(0); } function mostrarEnlaces($separador="|", $strAnterior, $strSiguiente, $strInicio="", $strFinal="") { //return ($this->anterior()." ".$separador." ".$this->nroPaginas($separador)." ".$separador." ".$this->siguiente($cuantos)); //return ($this->anterior($strAnterior)." ".$separador." ".$this->nroPaginas($separador)." ".$separador." ".$this->siguiente($strSiguiente)); if($this -> enablePagina) return ($this -> pagInicio("$strInicio") . " " . $this -> anterior("$strAnterior") . " " . $separador . " " . $this -> siguiente("$strSiguiente") . " " . $this -> pagFinal("$strFinal")); } function getM($where ="", $orden ="", $strId ="id", $cabeceraSelect ="", $groupby ="") { //idioma if (!$cabeceraSelect) { if ($this -> vars["idioma"]) { if ($_SESSION["idioma"]) $strWhere .= " WHERE id_idioma = " . $_SESSION["idioma"]; else $strWhere .= " WHERE id_idioma = 1"; } } if ($orden) $strOrden = " ORDER BY " . $orden; if ($groupby) $strGroupby = " GROUP BY " . $groupby; if ($strWhere) { if ($where) $strWhere .= " AND " . $where; } else { if ($where) $strWhere .= " WHERE " . $where; } // control publicado if ($this->isVersioned()) { if (!$_SESSION['editar']) { if ($strWhere) $strWhere .= " AND ott_publicado = 1"; else $strWhere .= " WHERE ott_publicado = 1"; } else { if ($strWhere) $strWhere .= " AND ott_version_activa = 1"; else $strWhere .= " WHERE ott_version_activa = 1"; } } if (!$this -> res) { //echo "
"; if (!$cabeceraSelect) { if ($this->isVersioned()) { if ($this->vars["idioma"]) { $_sql = "SELECT * FROM ( SELECT * FROM " . $this -> tabla . " ORDER BY ott_version DESC) as tmp " . $strWhere . " GROUP BY id,id_idioma " . $strOrden; } else { $_sql = "SELECT * FROM ( SELECT * FROM " . $this -> tabla . " ORDER BY ott_version DESC) as tmp " . $strWhere . " GROUP BY id " . $strOrden; } //$_sql = "select t1.* from " . $this -> tabla . " AS t1 LEFT OUTER JOIN " . $this -> tabla . " AS t2 ON (t1.id = t2.id AND t1.ott_version < t2.ott_version) " . $strWhere . " AND t2.id IS NULL and t1.id_idioma = ".$_SESSION['idioma'] . $strOrden . $strLimit; } else { $_sql = "SELECT * FROM " . $this -> tabla . $strWhere . $strOrden; } /* if ($this->isVersioned()) { $_sql = "select t1.* from " . $this -> tabla . " AS t1 LEFT OUTER JOIN " . $this -> tabla . " AS t2 ON (t1.id = t2.id AND t1.ott_version < t2.ott_version) " . $strWhere . " AND t2.id IS NULL and t1.id_idioma = ".$_SESSION['idioma'] . $strOrden; } else { $_sql = "select * from " . $this -> tabla . $strWhere . $strOrden; } */ } else { $_sql = $cabeceraSelect . $strWhere . $strGroupby . $strOrden; } //echo $_sql; if($this -> debug) echo $_sql; $_SESSION['sql_list']=$_sql; $_res = mysql_query($_sql, $this -> linkr); if($this -> enablePagina) { $this -> res = $_res; $this -> total($this -> cuantos()); $this -> totalPaginas(ceil($this -> total() / $this -> porPagina())); // Comprobamos que no se intenta acceder a una página que no existe. if($this -> pagina() > $this -> totalPaginas()) { $this -> error("No existe la página " . $this -> pagina() . " de resultados. Hay solo un total de " . $this -> totalPaginas()); return false; } $strLimit = " limit " . ($this -> desde() - 1) . "," . $this -> porPagina; //exit($strLimit); } if (!$cabeceraSelect) { if ($this->isVersioned()) { if ($this->vars["idioma"]) { $_sqlA = "SELECT * FROM ( SELECT * FROM " . $this -> tabla . " ORDER BY ott_version DESC) as tmp " . $strWhere . " GROUP BY id,id_idioma " . $strOrden . $strLimit; } else { $_sqlA = "SELECT * FROM ( SELECT * FROM " . $this -> tabla . " ORDER BY ott_version DESC) as tmp " . $strWhere . " GROUP BY id " . $strOrden . $strLimit; } //$_sqlA = "select t1.* from " . $this -> tabla . " AS t1 LEFT OUTER JOIN " . $this -> tabla . " AS t2 ON (t1.id = t2.id AND t1.ott_version < t2.ott_version) " . $strWhere . " AND t2.id IS NULL and t1.id_idioma = ".$_SESSION['idioma'] . $strOrden . $strLimit; } else { $_sqlA = "SELECT * FROM " . $this -> tabla . $strWhere . $strOrden . $strLimit; } } else { $_sqlA = $cabeceraSelect . $strWhere . $strGroupby . $strOrden . $strLimit; } if($this -> debug) echo $_sqlA; //$this->registros( $this->cuantos()); $_resA = mysql_query($_sqlA, $this -> linkr); if(!$_resA) { $this -> error = "Error: $_sqlA
" . mysql_error(); return false; } $_dataA = mysql_fetch_object($_resA); if(!$_dataA) { $this -> error = "Error, registro no encontrado: $_sqlA
" . mysql_error(); return false; } foreach($this->campos as $campo => $valor) { $this -> campos[$campo] = $_dataA -> $campo; } $this -> id = $_dataA -> $strId; $this -> fecha_alta = $_dataA -> fecha_alta; $this -> res = $_resA; parent::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 = $_dataA -> $strId; $this -> fecha_alta = $_dataA -> fecha_alta; parent::getInfoVersion($_dataA); } return true; } function renew() { unset($this -> res); } function setParamPaginado($str) { $this -> paramPaginado = $str; } } ?>

Ensayos Clínicos