public function executeEdit() { if ($this->getRequestParameter('layout', '')) { $this->setLayout('popup'); } $this->tablaFicheros = TablaPeer::getTablaFicheros(); $this->id_formulario_proviene = $this->getRequestParameter('id_formulario_proviene', null); $this->id_tabla_proviene = $this->getRequestParameter('id_tabla_proviene', null); $this->formulario = $this->getFormularioOrCreate(); $this->items = $this->formulario->getArrayItems(); if ($this->getRequest()->getMethod() == sfRequest::POST) { //GENERAMOS EL ID DEL FORMULARIO PARA QUE LO PUEDA COGER LA TAREA AL GUARDALA if ($this->formulario->getIdFormulario() == 0) { $this->saveFormulario($this->formulario); } $this->updateFormularioFromRequest(); $this->saveFormulario($this->formulario); $this->getUser()->setFlash('notice', 'Las modificaciones se han guardado'); if ($this->getRequestParameter('save_and_add')) { if ($this->id_formulario_proviene != null) { return $this->redirect('formularios/create/?id_tabla=' . $this->formulario->getIdTabla() . "&id_formulario_proviene=" . $this->id_formulario_proviene); } else { return $this->redirect('formularios/create/?id_tabla=' . $this->formulario->getIdTabla()); } } else { if ($this->getRequestParameter('save_and_list')) { /*$ruta=sfContext::getInstance()->getUser()->getAttribute('ruta_legedia',null);*/ $ruta = UsuarioPeer::getRuta(); if ($this->id_formulario_proviene != null) { return $this->redirect('formularios/edit?id_formulario=' . $this->id_formulario_proviene); } else { $dir = $ruta . "/formularios/list/?filters[id_empresa]=" . $this->formulario->getTabla()->getIdEmpresa() . "&filters[id_tabla]=" . $this->formulario->getIdTabla() . "&filter=filter"; header("location: {$dir}"); } exit; //return $this->redirect('formularios/list'); } else { if ($this->id_formulario_proviene != null) { return $this->redirect('formularios/edit?id_formulario=' . $this->id_formulario_proviene); } else { $pre = str_replace('formularios/edit', 'notificaciones/inscribir/id_fichero/', Notificaciones::selfURL()); if (isset($_POST['modelo']) && isset($_POST['sistema']) && isset($_POST['tip'])) { header('Location: ' . $pre . $this->formulario->getIdFormulario() . '?model=' . $_POST['modelo'] . '&type=' . $_POST['tip'] . '&system=' . $_POST['sistema'] . '&redirect=1'); } elseif (isset($_POST['modelo']) && isset($_POST['sistema'])) { header('Location: ' . $pre . $this->formulario->getIdFormulario() . '?model=' . $_POST['modelo'] . '&system=' . $_POST['sistema'] . '&redirect=1'); } else { //echo "--".$this->formulario->getIdFormulario();exit(); return $this->redirect('formularios/edit?id_formulario=' . $this->formulario->getIdFormulario()); } } } } } else { $this->tablas_auxiliares = array(); if ($this->formulario->getIdFormulario() != 0) { //Obtengo si hay un campo de tipo Tabla cuya tabla sea esta y tenga el mostrar_en_padre $c = new Criteria(); $c->AddJoin(CampoPeer::ID_CAMPO, RelCampoTablaPeer::ID_CAMPO, Criteria::JOIN); $c->AddJoin(RelCampoTablaPeer::ID_TABLA, TablaPeer::ID_TABLA, Criteria::JOIN); $id_empresa = sfContext::getInstance()->getUser()->getAttribute('idempresa', 0); $c->addAnd(TablaPeer::ID_EMPRESA, $id_empresa, Criteria::EQUAL); $c->addAnd(CampoPeer::TIPO, CampoPeer::ID_TABLA, Criteria::EQUAL); $c->addAnd(CampoPeer::MOSTRAR_EN_PADRE, 1, Criteria::EQUAL); $c->addAnd(CampoPeer::VALOR_TABLA, $this->formulario->getIdTabla(), Criteria::EQUAL); $campos_rel = CampoPeer::doSelect($c); foreach ($campos_rel as $campo_rel) { //DEL CAMPO OBTENEMOS LA TABLA $tablas_rel = $campo_rel->getRelCampoTablas(); $tabla_rel = $tablas_rel[0]; unset($tablas_rel); $c = $this->getCriterio(); $c->addJoin(FormularioPeer::ID_FORMULARIO, ItemPeer::ID_FORMULARIO, Criteria::JOIN); $c->addJoin(ItemPeer::ID_ITEM_BASE, ItemBasePeer::ID_ITEM_BASE, Criteria::JOIN); $c->addAnd(ItemBasePeer::ID_CAMPO, $campo_rel->getIdCampo(), Criteria::EQUAL); $c->addAnd(ItemPeer::ID_TABLA, $this->formulario->getIdFormulario(), Criteria::EQUAL); $c->addAnd(FormularioPeer::ID_TABLA, $tabla_rel->getIdTabla(), Criteria::EQUAL); $this->processSort(false); $this->addSortCriteria($c); $c->setDistinct(); $pager = new sfPropelPager('Formulario', sfConfig::get('app_listas_formularios')); $pager->setPeerMethod('doSelectJoinTabla'); $pager->setCriteria($c); $pager->setPage($this->getRequestParameter('page', 1)); $pager->init(); $this->tablas_auxiliares[] = array("forms" => $pager, "id_tabla" => $tabla_rel->getIdTabla()); } } $this->labels = $this->getLabels(); } }