protected function addFiltersCriteria($c) { //$c->addJoin(FormularioPeer::ID_TABLA, TablaPeer::ID_TABLA, Criteria::JOIN); //problemos aqui. $id_empresa = isset($this->filters['id_empresa']) ? $this->filters['id_empresa'] : ""; $id_tabla = isset($this->filters['id_tabla']) ? $this->filters['id_tabla'] : null; if ($id_empresa !== "" && $id_tabla != "") { $c->addAnd(TablaPeer::ID_EMPRESA, $id_empresa, Criteria::EQUAL); } //id_tabla if ($id_tabla) { //NO CAMBIAR AQUI FormularioPeer::ID_TABLA por TablaPeer::ID_TABLA porque entonces no funciona para alguien que tienen permisos solo para algunas tablas $c->addAnd(FormularioPeer::ID_TABLA, $id_tabla, Criteria::EQUAL); } //fecha if (isset($this->filters['ultimo_contacto'])) { if (isset($this->filters['ultimo_contacto']['from']) && $this->filters['ultimo_contacto']['from'] !== '') { $criterion = $c->getNewCriterion(FormularioPeer::FECHA, $this->filters['ultimo_contacto']['from'], Criteria::GREATER_EQUAL); } if (isset($this->filters['ultimo_contacto']['to']) && $this->filters['ultimo_contacto']['to'] !== '') { if (isset($criterion)) { $criterion->addAnd($c->getNewCriterion(FormularioPeer::FECHA, $this->filters['ultimo_contacto']['to'], Criteria::LESS_EQUAL)); } else { $criterion = $c->getNewCriterion(FormularioPeer::FECHA, $this->filters['ultimo_contacto']['to'], Criteria::LESS_EQUAL); } } if (isset($criterion)) { $c->add($criterion); } } if (isset($this->filters['id_empresa']) && $this->filters['id_empresa'] != '') { $empresa = EmpresaPeer::retrieveByPk($this->filters['id_empresa']); } else { $id_empresa = sfContext::getInstance()->getUser()->getAttribute('idempresa', null); $empresa = EmpresaPeer::retrieveByPk($id_empresa); } //filtrar según campos personalizados. $campos = $empresa->getCamposFormularioOrdenadosAlcancetablas($id_tabla); if ($id_tabla == 63 && $this->filters['no_realizacion'] == 1) { $c->addAnd(ItemPeer::ID_ITEM_BASE, 316, Criteria::EQUAL); $c->addAnd(ItemPeer::FECHA, null, Criteria::EQUAL); } elseif ($id_tabla == 63 && $this->filters['no_realizacion'] == 2) { $c->addAnd(ItemPeer::FECHA, null, Criteria::NOT_EQUAL); } $filtros = new Filtros($campos, $this->filters); $filtros->updateCriteria($c); }