PERSONES
IMPLICADES I COMPROMESES
AMB EL SEU ENTORN MÉS PROPER
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ó social
Ens adrecem a col·lectius vulnerabilitzats generant-los, a través de diferents programes i itineraris, un impacte transformador
Comunitat
Peça clau que ens cohesiona i multiplica el nostre potencial per generar impacte
Voluntariat
El nostre voluntariat és enriquidor, dinàmic, flexible, creatiu, divers i inclusiu.
PROXIMITAT
El nostre àmbit d’actuació és la ciutat, on volem potenciar la implicació de les persones, barri a barri, de veí a veí.
La nostra experiència com a família del programa Llars d'acollida és molt gratificant, enriquidora i també senzilla.
May Vergés - Llars d'acollida
Cada cop que vaig a la BACstation surto ple d'energia positiva i amor. Jo soc d’Argentina, i aquí he trobat una segona família que m’ha ajudat a travessar moments difícils.
Francisco Marino - Referent i voluntari de la BACstation Vallcarca
Quan vaig coneixèr BarcelonActua em va semblar un projecte de trencament i d’esperança. Començar com a voluntària em va permetre veure que el voluntariat és activisme, és actuar d’acord amb les teves idees.
Victòria dels Àngels Pérez - Coordinadora de l’Aula de Lectura
Ser mentor ha estat una experiència d’aprenentatge mutu molt positiva per a tots dos, que ha permès a la meva mentorada reafirmar-se en la consecució del seu camí formatiu i professional. Marcos Robles - Mentor Beques U-BAC
Marcos Robles - Mentor Beques U-BAC
L'acompanyament de BarcelonActua és un ascensor social, m'ha donat oportunitats per estar al mateix nivell que les persones locals i per formar part de la comunitat. Ara puc començar la meva vida.
Bektur Saipidinov - Jove acollit a la BACstation Gràcia
Com col·laborar?
Com col·laborar?
Voluntaris
Vols participar en activitats, campanyes i esdeveniments d’acció social a la teva ciutat?
SABER-NE MÉS
Socis
Gracies als socis podem seguir realitzant la nostra tasca. Vols formar part?
SABER-NE MÉS
Empreses
Si ets una empresa responsable socialment, pots implicar-te amb la teva ciutat.
SABER-NE MÉS
Estigues al corrent de les nostres activitats, accions i novetats. Subscriu-te al nostre newsletter.
El que passa al noste entorn
31/07/2026
Laia Serrano explica a La Treva de SER Catalunya el valor del voluntariat local
Laia Serrano, directora general de Fundació BarcelonActua, ha participat en el programa La Treva de SER Catalunya per parlar del valor del voluntariat local i de la seva capacitat per (...)
30/06/2026
BarcelonActua manté viu el llegat social de Gaudí
NHK visita Barcelona per explicar com el compromís de la Junta Constructora del Temple Expiatori de la Sagrada Família dona suport a projectes socials que generen oportunitats per a (...)