PERSONAS
IMPLICADAS Y COMPROMETIDAS
CON SU ENTORNO MÁS CERCANO
require_once "class.model.php";
class model_paginado extends model {
/* variables para paginación */
var $total;
// indica total de resultados
var $pagina;
// indica la página en la que nos encontramos.
var $c;
// indica resultados que se mostraran por página.
var $totalPaginas;
// indica la cantidad total de páginas que devuelve la consulta.
var $enablePagina = false;
// variable se pone true si se activa Paginacion con la funcion enablePaginacion(boolean).
var $registros;
// cantidad de registros leídos en la última consulta a la base de datos.
var $paramPaginado = 'pagina';
// por si se tiene que anyadir un anchor en las paginaciones
var $anchor = '';
// parametro para pasar el numero de pagina
/**
* Código de Siguiente.
*
* Este atributo contiene el código HTML que representará al link
* para avanzar a la siguiente página de resultados.
* Puede ser cualquier c�digo HTML permitido dentro dentro de un
* tag
.
**/
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->anchor . "\">" . $this->siguiente . " ";
else
return "
paramPaginado . "=" . ($this->pagina() + 1) . $this->propagar()) . $this->anchor . "\">" . $this->siguiente . " ";
}
if($this->pagina() == $this->totalPaginas()) {
//return $this->siguiente;
return "
" . $this->siguiente . $this->anchor . " ";
}
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->anchor . "\">" . $this->anterior . " ";
else
return "
paramPaginado . "=" . ($this->pagina() - 1) . $this->propagar()) . $this->anchor . "\">" . $this->anterior . " ";
}
if($this->pagina() == 1) {
//return $this->anterior;
return "
" . $this->anterior . $this->anchor . " ";
}
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->anchor . "\">" . $this->anterior . " ";
else
return "
anchor . "\">" . $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->anchor . "\">" . $this->siguiente . " ";
else
//return "
paramPaginado."=".($this->pagina()+1).$this->propagar())."\">".$this->siguiente." ";
return "
anchor . "\">" . $this->siguiente . " ";
}
if($this->pagina() == $this->totalPaginas()) {
//return $this->siguiente;
//return "
".$this->siguiente.$this->anchor." ";
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()) . $this->anchor . "\">$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() . $this->anchor) . "\" $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() . $this->anchor) . "\">$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() . $this->anchor) . "\" $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 . "
anchor . "\">$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 . "
anchor . "\">$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]) {
if (is_array($GLOBALS[$var])) {
foreach ($GLOBALS[$var] as $k => $v)
$ret .= '&'.sanitize($var).'['.sanitize($k).']=' . sanitize($v);
} else
$ret .= '&'.sanitize($var).'=' . sanitize($GLOBALS[$var]);
} elseif($_REQUEST[$var]) {
if (is_array($_REQUEST[$var])) {
foreach ($_REQUEST[$var] as $k => $v)
$ret .= '&'.sanitize($var).'['.sanitize($k).']=' . sanitize($v);
} else
$ret .= '&'.sanitize($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() . $this->anchor . "\">" . 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() . $this->anchor . "\">" . 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 = "", $prefix = "")
{
//idioma
if (!$cabeceraSelect) {
if ($this->vars["idioma"]) {
if ($_SESSION["idioma"])
$strWhere .= " WHERE id_idioma = " . $_SESSION["idioma"];
else
$strWhere .= " WHERE id_idioma = 1";
}
}
if($this->dominios){
if ($strWhere) {
$strWhere .= " AND ".$prefix."dominio_ciudad={$_SESSION['dominio_ciudad']}";
} else {
$strWhere .= " WHERE ".$prefix."dominio_ciudad={$_SESSION['dominio_ciudad']}";
}
}
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 . " WHERE dominio_ciudad={$_SESSION['dominio_ciudad']} ORDER BY ott_version DESC) as tmp " . $strWhere . " GROUP BY id,id_idioma " . $strOrden;
} else {
$_sql = "SELECT * FROM ( SELECT * FROM " . $this->tabla . " WHERE dominio_ciudad={$_SESSION['dominio_ciudad']} 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 . " WHERE dominio_ciudad={$_SESSION['dominio_ciudad']} ORDER BY ott_version DESC) as tmp " . $strWhere . " GROUP BY id,id_idioma " . $strOrden . $strLimit;
} else {
$_sqlA = "SELECT * FROM ( SELECT * FROM " . $this->tabla . " WHERE dominio_ciudad={$_SESSION['dominio_ciudad']} 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 getMSinDominios($where = "", $orden = "", $strId = "id", $cabeceraSelect = "", $groupby = "", $prefix = "")
{
//idioma
if (!$cabeceraSelect) {
if ($this->vars["idioma"]) {
if ($_SESSION["idioma"])
$strWhere .= " WHERE id_idioma = " . $_SESSION["idioma"];
else
$strWhere .= " WHERE id_idioma = 1";
}
}
/*if($this->dominios){
if ($strWhere) {
$strWhere .= " AND ".$prefix."dominio_ciudad={$_SESSION['dominio_ciudad']}";
} else {
$strWhere .= " WHERE ".$prefix."dominio_ciudad={$_SESSION['dominio_ciudad']}";
}
}*/
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;
}
if (!$this->res) {
//echo "
";
if (!$cabeceraSelect) {
$_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) {
$_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;
}
function setAnchor($str) {
$this->anchor = '#'.$str;
}
}
?>
Acción social
Nos dirigimos a colectivos vulnerables tanto para cubrir sus necesidades básicas como para generarles oportunidades.
Comunidad
Pieza clave que nos cohesiona y multiplica nuestro potencial para cambiar la realidad actual de nuestro entorno.
Voluntariado
Un voluntariado estimulante y flexible dirigido a cualquier persona con ganas de actuar ya sea de manera puntual o regular.
Proximidad
Nuestro ámbito de actuación es la ciudad, donde queremos potenciar la implicación de las personas barrio a barrio, de vecino a vecino.
Nuestra experiencia como familia del programa Llars de acogida ha sido muy gratificante, enriquecedora y sencilla.
May Vergés - Llars de Acogida
Cada vez que voy a la BACstation, salgo lleno de energía positiva y amor. Soy de Argentina y aquí he encontrado una segunda familia que me ha ayudado a superar momentos difíciles.
Francisco Marino - Referente y voluntario de la BACstation Vallcarca
Cuando conocí BarcelonActua, me pareció un proyecto revolucionario y lleno de esperanza. Empezar como voluntaria me permitió ver que el voluntariado es activismo, es actuar de acuerdo con tus ideas.
Victòria dels Àngels Pérez - Coordinadora del Aula de Lectura
Ser mentor ha sido una experiencia de aprendizaje mutuo muy positiva para ambos, que ha permitido a mi mentorada reafirmarse en la consecución de su camino formativo y profesional.
Marcos Robles - Mentor Becas U-BAC
El acompañamiento de BarcelonActua es un ascensor social, me ha dado oportunidades para estar al mismo nivel que las personas locales y formar parte de la comunidad. Ahora puedo empezar mi vida.
Bektur Saipidinov - Joven acogido en la BACstation Gràcia
¿Cómo colaborar?
¿Cómo colaborar?
Voluntarios
¿Quieres participar en actividades, campañas y eventos de acción social en tu ciudad?
SABER +
Socios
Gracias a los socios podemos seguir realizando nuestra labor. ¿Quieres formar parte?
SABER +
Empresas
Si eres una empresa responsable socialmente, puedes implicarte con tu ciudad.
SABER +
Mantente al tanto de nuestras actividades, acciones y novedades. Suscríbete a nuestra newsletter.
Lo que pasa en nuestro entorno
31/07/2026
Laia Serrano explica en La Treva de SER Catalunya el valor del voluntariado local
La directora general de Fundació BarcelonActua destaca que hacer voluntariado cerca de casa facilita un compromiso sostenible en el tiempo y permite descubrir nuevas realidades sin salir de (...)
30/06/2026
BarcelonActua mantiene vivo el legado social de Gaudí
NHK visita Barcelona para explicar cómo el compromiso de la Junta Constructora del Temple Expiatori de la Sagrada Família impulsa proyectos sociales que generan oportunidades para (...)