/** * Edita, actualiza o borrar un registro * * Viene siempre por POST * Actualiza o Borrar según el valor de $this->request['accion'] * * @return array con el template y valores a renderizar */ public function editAction() { switch ($this->request['accion']) { case 'G': //GUARDAR DATOS if ($this->values['permisos']['permisosModulo']['UP']) { $variables = new CpanVariables('Mod', 'Env', $this->request[$this->entity]['Entity']); $this->varEnvMod = $variables->getValores(); unset($variables); $this->values['varEnvMod'] = $this->varEnvMod; $id = $this->request[$this->entity]['Id']; $entidad = $this->request[$this->entity]['Entity']; $idEntidad = $this->request[$this->entity]['IdEntity']; $tipo = $this->request[$this->entity]['Type']; $title = $this->request[$this->entity]['Title']; $slug = $this->request[$this->entity]['Name']; $showCaption = $this->request[$this->entity]['ShowCaption']; $publicar = $this->request[$this->entity]['Publish']; $documento = $this->request['FILES']['documento']; $documento['maxWidth'] = $this->varEnvMod['galery']['maxWidthImage']; $documento['maxHeight'] = $this->varEnvMod['galery']['maxHeightImage']; $documento['modoRecortar'] = $this->request['modoRecortar']; $rules = $this->getRules($this->request[$this->entity]['Type']); // Para que deje actualizar aunque estemos en el límite del // número máximo de documentos if ($rules['numMaxDocs'] > 0) { $rules['numMaxDocs']++; } $doc = new CpanDocs($id); $doc->setTitle($title); $doc->setName($slug); $doc->setShowCaption($showCaption); $doc->setPublish($publicar); if ($documento['name'] != '') { $doc->setArrayDoc($documento); } $doc->setIsThumbnail(0); if ($doc->valida($rules)) { $ok = $doc->actualiza(); // Subir Miniatura if ($ok and $this->varEnvMod['galery']['generateThumbnail'] == '1') { $thumbNail = $doc->getThumbNail(); $thumbNail->setTitle($title); $thumbNail->setName($slug); $thumbNail->setShowCaption($showCaption); $thumbNail->setPublish($publicar); $thumbNail->setIsThumbnail(1); if ($documento['name'] != '') { $documento['maxWidth'] = $this->varEnvMod['galery']['widthThumbnail']; $documento['maxHeight'] = $this->varEnvMod['galery']['heightThumbnail']; $thumbNail->setArrayDoc($documento); } if ($thumbNail->valida($rules)) { $ok = $thumbNail->actualiza(); } unset($thumbNail); } } $this->values['errores'] = $doc->getErrores(); $this->values['alertas'] = $doc->getAlertas(); unset($doc); return $this->listPopupAction($entidad, $idEntidad, $tipo, $this->request['formato']); } else { return array('template' => '_global/forbiden.html.twig'); } break; case 'B': //BORRAR DATOS if ($this->values['permisos']['permisosModulo']['DE']) { $id = $this->request[$this->entity]['Id']; $entidad = $this->request[$this->entity]['Entity']; $idEntidad = $this->request[$this->entity]['IdEntity']; $tipo = $this->request[$this->entity]['Type']; $datos = new CpanDocs($id); if ($datos->erase()) { // Borro los eventuales hijos del documento ( los thumbnails) $thumbNail = new CpanDocs(); $rows = $thumbNail->cargaCondicion('Id', "BelongsTo='{$id}'"); foreach ($rows as $row) { $thumbNail = new CpanDocs($row['Id']); $thumbNail->erase(); } unset($thumbNail); //$this->values['datos'] = $datos; $this->values['errores'] = $datos->getErrores(); } unset($datos); return $this->listPopupAction($entidad, $idEntidad, $tipo, $this->request['formato']); } else { return array('template' => '_global/forbiden.html.twig'); } break; } }
/** * Borrar los documentos de la entidad $entidad y $idEntidad * que son del tipo $tipo * * En el parámetro $tipo se puede usar el comodín '%' para * seleccionar varios tipos de documentos * * Borra las entradas en la tabla de documentos y * los archivos físicos del disco duro * * @param string $entidad * @param integer $idEntidad * @param string $tipo El tipo de documento * @param string $criterio Expresión lógica a incluir en el criterio de borrado * @return boolean */ public function borraDocs($entidad, $idEntidad, $tipo, $criterio = '1') { $ok = false; $filtro = "(Entity='{$entidad}') AND (IdEntity='{$idEntidad}') AND (Type LIKE '{$tipo}') AND ({$criterio})"; $rows = $this->cargaCondicion('Id', $filtro); foreach ($rows as $row) { $doc = new CpanDocs($row['Id']); $doc->erase(); } unset($doc); return $ok; }