$opciones = array('0' => __('tareas'), '1' => __('eventos')); $tipo_tarea = isset($filters['es_evento']) ? $filters['es_evento'] : null; $value = select_tag('filters[es_evento]', options_for_select($opciones, $tipo_tarea, array('include_custom' => __('tareas y eventos')))); echo $value ? $value : " "; ?> </div> </div> <div class="form-row"> <?php echo label_for("filters[estado_tarea]", __('estado tarea') . ":"); ?> <div class="content"> <?php $opciones = TareaPeer::getAllEstadosTareas(); $html = ""; $html .= "<ul class=\"sf_admin_checklist\">\n"; foreach ($opciones as $estado) { $i = $estado->getPrimaryKey(); $es_seleccionado = isset($filters['estado_' . $i]) ? true : false; $html .= "<li>"; $html .= checkbox_tag('filters[estado_' . $i . ']', true, $es_seleccionado); $html .= label_for("filters[estado_" . $i . "]", $estado->__toString() ? __($estado->__toString()) : '-'); $html .= "</li>\n"; } $html .= "</ul>\n"; echo $html; ?> </div> </div>
protected function addFiltersCriteria($c) { //fecha_inicio if (isset($this->filters['fecha_inicio'])) { if (isset($this->filters['fecha_inicio']['from']) && $this->filters['fecha_inicio']['from'] !== '') { $criterion = $c->getNewCriterion(TareaPeer::FECHA_INICIO, $this->filters['fecha_inicio']['from'], Criteria::GREATER_EQUAL); } if (isset($this->filters['fecha_inicio']['to']) && $this->filters['fecha_inicio']['to'] !== '') { if (isset($criterion)) { $criterion->addAnd($c->getNewCriterion(TareaPeer::FECHA_INICIO, $this->filters['fecha_inicio']['to'], Criteria::LESS_EQUAL)); } else { $criterion = $c->getNewCriterion(TareaPeer::FECHA_INICIO, $this->filters['fecha_inicio']['to'], Criteria::LESS_EQUAL); } } if (isset($criterion)) { $c->add($criterion); } } //fecha_vencimiento if (isset($this->filters['fecha_vencimiento'])) { if (isset($this->filters['fecha_vencimiento']['from']) && $this->filters['fecha_vencimiento']['from'] !== '') { $criterion = $c->getNewCriterion(TareaPeer::FECHA_VENCIMIENTO, $this->filters['fecha_vencimiento']['from'], Criteria::GREATER_EQUAL); } if (isset($this->filters['fecha_vencimiento']['to']) && $this->filters['fecha_vencimiento']['to'] !== '') { if (isset($criterion)) { $criterion->addAnd($c->getNewCriterion(TareaPeer::FECHA_VENCIMIENTO, $this->filters['fecha_vencimiento']['to'], Criteria::LESS_EQUAL)); } else { $criterion = $c->getNewCriterion(TareaPeer::FECHA_VENCIMIENTO, $this->filters['fecha_vencimiento']['to'], Criteria::LESS_EQUAL); } } if (isset($criterion)) { $c->add($criterion); } } $es_evento = null; if (isset($this->filters['es_evento']) && $this->filters['es_evento'] !== '') { $es_evento = $this->filters['es_evento'] ? true : false; if ($es_evento) { $c->add($c->getNewCriterion(TareaPeer::ES_EVENTO, true)); } else { $criterion1 = $c->getNewCriterion(TareaPeer::ES_EVENTO, null, Criteria::ISNULL); $criterion2 = $c->getNewCriterion(TareaPeer::ES_EVENTO, false); $criterion1->addOr($criterion2); $c->add($criterion1); } } $criterion_tareas = $c->getNewCriterion(TareaPeer::ES_EVENTO, null, Criteria::ISNULL); $criterion_tareas_2 = $c->getNewCriterion(TareaPeer::ES_EVENTO, false); $criterion_tareas->addOr($criterion_tareas_2); $crt_aux = null; $estados = TareaPeer::getAllEstadosTareas(); foreach ($estados as $estado) { $campo = "estado_" . $estado->getPrimaryKey(); if (isset($this->filters[$campo]) && $this->filters[$campo] !== '') { if (!isset($crt_aux)) { $crt_aux = $c->getNewCriterion(TareaPeer::ID_ESTADO_TAREA, $estado->getPrimaryKey()); } else { $crt_aux->addOr($c->getNewCriterion(TareaPeer::ID_ESTADO_TAREA, $estado->getPrimaryKey())); } } } if (isset($crt_aux)) { $criterion_tareas->addAnd($crt_aux); } $criterion_eventos = $c->getNewCriterion(TareaPeer::ES_EVENTO, true); $estados = TareaPeer::getAllEstadosEventos(); $crt_aux = null; foreach ($estados as $estado) { $campo = "estado_" . $estado->getPrimaryKey(); if (isset($this->filters[$campo]) && $this->filters[$campo] !== '') { if (!isset($crt_aux)) { $crt_aux = $c->getNewCriterion(TareaPeer::ID_ESTADO_TAREA, $estado->getPrimaryKey()); } else { $crt_aux->addOr($c->getNewCriterion(TareaPeer::ID_ESTADO_TAREA, $estado->getPrimaryKey())); } } } if (isset($crt_aux)) { $criterion_eventos->addAnd($crt_aux); } if (isset($es_evento)) { //una de las dos: tarea o evento if ($es_evento) { $c->add($criterion_eventos); } else { $c->add($criterion_tareas); } } else { $c->addOr($criterion_tareas); $c->addOr($criterion_eventos); } }