protected function cargaVariables($modulo) { // Variables de entorno del modulo $variables = new CpanVariables('Mod', 'Env', $modulo); $this->varEnvMod = $variables->getValores(); $this->values['varEnvMod'] = $this->varEnvMod; if (count($this->values['varEnvMod']) == 0) { $this->values['errores'][] = "No se han definido las variables de entorno del módulo '{$modulo}'"; } }
/** * Devuelve un array con los módulos que están sujetos a gestión * de etiquetas, según el valor de la variable de entorno del proyecto 'modulosConEtiquetas' * * El array tendrá n elementos (tantos como módulos), y cada elemento es: * * - Id => el id del módulo * - Value => el título del módulo (no el nombre) * * @return array */ public function getModulosConEtiquetas() { $modulos = array(); $variables = new CpanVariables('Pro', 'Env'); $modulosConEtiquetas = explode(",", trim($variables->getNode('modulosConEtiquetas'))); unset($variables); $objetoModulo = new CpanModulos(); foreach ($modulosConEtiquetas as $moduloConEtiquetas) { $modulo = $objetoModulo->find('NombreModulo', trim($moduloConEtiquetas)); $modulos[] = array('Id' => $modulo->getId(), 'Value' => $modulo->getTitulo()); } unset($objetoModulo); unset($modulo); return $modulos; }
public function actualiza($objeto) { $entidad = $objeto->getClassName(); $idEntidad = $objeto->getPrimaryKeyValue(); $this->queryDelete("Entity='{$entidad}' and IdEntity='{$idEntidad}'"); if ($objeto->getPublish()->getIDTipo() == '1' and $objeto->getDeleted()->getIDTipo() == '0') { $variables = new CpanVariables("Mod", "Env", $entidad); foreach ($variables->getNode("columns") as $columna => $atributos) { if ($atributos['searchable']) { $texto = $objeto->{"get{$columna}"}(); if ($texto) { $search = new CpanSearch(); $search->setTexto($texto); $search->setEntity($entidad); $search->setIdEntity($idEntidad); $search->setPublish($objeto->getPublish()->getIDTipo()); $search->setChecked($objeto->getChecked()->getIDTipo()); $search->setPrivacy($objeto->getPrivacy()->getIDTipo()); $search->create(); } } } } }
$search->actualiza($objeto); unset($search); } } unset($objeto); // Actualiza la columna en el resto de idiomas if ($_SESSION['idiomas']['actual'] == 0) { // Recorro los idiomas adicionales foreach ($_SESSION['idiomas']['disponibles'] as $key => $value) { if ($key > 0) { $_SESSION['idiomas']['actual'] = $key; $objeto = new $entidad($idEntidad); $objeto->{"set{$columna}"}($v['valor']); if ($objeto->save() && ($columna == 'Publish' || $columna == 'Privacy')) { // Actualiza la url amigable $urlAmigable = CpanUrlAmigables::sincroniza($objeto); // Actualiza la tabla de búsquedas $variables = new CpanVariables("Mod", "Env", $entidad); if ($variables->getNode('searchable')) { $search = new CpanSearch(); $search->actualiza($objeto); unset($search); } } unset($objeto); } } $_SESSION['idiomas']['actual'] = 0; } $tag = ""; echo $tag;
include "../bin/yaml/lib/sfYaml.php"; } else { echo "NO EXISTE LA CLASE PARA LEER ARCHIVOS YAML"; exit; } // --------------------------------------------------------------- // CARGO LOS PARAMETROS DE CONFIGURACION. // --------------------------------------------------------------- $config = sfYaml::load('../config/config.yml'); $app = $config['config']['app']; // --------------------------------------------------------------- // ACTIVAR EL AUTOLOADER DE CLASES Y FICHEROS A INCLUIR // --------------------------------------------------------------- define("APP_PATH", $_SERVER['DOCUMENT_ROOT'] . $app['path'] . "/"); include_once "../" . $app['framework'] . "Autoloader.class.php"; Autoloader::setCacheFilePath(APP_PATH . 'tmp/class_path_cache.txt'); Autoloader::excludeFolderNamesMatchingRegex('/^CVS|\\..*$/'); Autoloader::setClassPaths(array('../' . $app['framework'], '../entities/', '../lib/')); spl_autoload_register(array('Autoloader', 'loadClass')); $valores = explode("_", $_GET['entidadColumnaPropiedad']); $modulo = $valores[0]; $columna = $valores[1]; $propiedad = $valores[2]; $var = new CpanVariables('Mod', 'Env', $modulo); $atributosColumna = $var->getColumn($columna); $atributosColumna[$propiedad] = $_GET['valor']; $var->setColumn($columna, $atributosColumna); $var->save(); unset($var); $tag = ""; echo $tag;
/** * Pone las variables de entorno del proyecto/app/modulo en curso * relativas al control de visibilidad de sus variables web * * Respeta los valores que hubiera en el yml del proyecto respecto * a las variables web definidas. * * @return void */ private function ponVisibilidad() { $variables = new CpanVariables($this->_objeto['ambito'], 'Env', $this->_objeto['nombre']); $valoresActuales = $variables->getNode('showVarWeb'); $valores['globales'] = array(); $valores['especificas'] = array(); if (is_array($this->_objeto['datos']['globales'])) { foreach ($this->_objeto['datos']['globales'] as $key => $value) { if (!isset($valoresActuales['globales'][$key])) { $valores['globales'][$key] = 0; } else { $valores['globales'][$key] = $valoresActuales['globales'][$key]; } } } if (is_array($this->_objeto['datos']['especificas'])) { foreach ($this->_objeto['datos']['especificas'] as $key => $value) { if (!isset($valoresActuales['especificas'][$key])) { $valores['especificas'][$key] = 0; } else { $valores['especificas'][$key] = $valoresActuales['especificas'][$key]; } } } $variables->setNode('showVarWeb', $valores); $variables->save(); unset($variables); }
/** * 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; } }
/** * Edita las variables de entorno de un nodo * * @return array Array template, values */ public function EditNodeAction() { if ($_SESSION['usuarioPortal']['IdPerfil'] == '1') { switch ($this->request['METHOD']) { case 'GET': $tipo = $this->request['3']; $ambito = $this->request['2']; $nombre = $this->request['4']; $columna = $this->request['5']; $titulo = "Variables {$this->request['3']} de '{$columna}'"; $variables = new CpanVariables($ambito, $tipo, $nombre); $variablesColumna = $variables->getColumn($columna); unset($variables); $archivoConfig = new Form($nombre); $columnasConfig = $archivoConfig->getNode('columns'); unset($archivoConfig); $datos = $this->ponAtributos($variablesColumna, $columnasConfig[$columna]); $this->values['titulo'] = $titulo; $this->values['tipo'] = $tipo; $this->values['ambito'] = $ambito; $this->values['nombre'] = $nombre; $this->values['columna'] = $columna; $this->values['d'] = $datos; $template = $this->entity . '/formPlantillaVariables.html.twig'; break; case 'POST': $tipo = $this->request['tipo']; $ambito = $this->request['ambito']; $nombre = $this->request['nombre']; $columna = $this->request['columna']; $titulo = "Variables {$tipo} de '{$columna}'"; $variables = new CpanVariables($ambito, $tipo, $nombre); $variables->setColumn($columna, $this->request['d']); $variables->save(); $this->values['titulo'] = $titulo; $this->values['tipo'] = $tipo; $this->values['ambito'] = $ambito; $this->values['nombre'] = $nombre; $this->values['columna'] = $columna; $this->values['errores'] = $variables->getErrores(); $archivoConfig = new Form($nombre); $columnasConfig = $archivoConfig->getNode('columns'); unset($archivoConfig); $datos = $this->ponAtributos($variables->getColumn($columna), $columnasConfig[$columna]); $this->values['d'] = $datos; unset($variables); $template = $this->entity . '/formPlantillaVariables.html.twig'; break; } } else { $template = '_global/forbiden.html.twig'; } return array('template' => $template, 'values' => $this->values); }
/** * Carga en la sesión las variables de entorno y web del proyecto */ protected function cargaVariables() { // Variables de entorno del proyecto if (!isset($_SESSION['VARIABLES']['EnvPro'])) { $variables = new CpanVariables('Pro', 'Env'); $this->varEnvPro = $variables->getValores(); $_SESSION['VARIABLES']['EnvPro'] = $this->varEnvPro; } else { $this->varEnvPro = $_SESSION['VARIABLES']['EnvPro']; } $this->values['varEnvPro'] = $this->varEnvPro; // Variables web del proyecto if (!isset($_SESSION['VARIABLES']['WebPro'])) { $variables = new CpanVariables('Pro', 'Web'); $this->varWebPro = $variables->getValores(); $_SESSION['VARIABLES']['WebPro'] = $this->varWebPro; } else { $this->varWebPro = $_SESSION['VARIABLES']['WebPro']; } $this->values['varWebPro'] = $this->varWebPro; unset($variables); }
/** * Valida el objeto * * También compruebo que el titulo y el nombre no están vacios. * * Si el título está vacío, pongo el valor de la columna indicado en la variable de entorno 'fieldGeneratorUrlFriendly' * Si el nombre está vacío, pongo el valor del título * * @param array $rules * @return boolean TRUE si el objeto completo pasa la validación */ public function valida(array $rules) { if ($this->validaArchivo($rules)) { // Validar que se haya indicado título y nombre, en su defecto // se toma el indicado por la variable de entorno if ($this->Title == '' or $this->Name == '') { $variables = new CpanVariables('Mod', 'Env', $this->getEntity()); $varEnv = $variables->getValores(); unset($variables); $datos = new $this->Entity($this->IdEntity); $columnaSlug = $varEnv['fieldGeneratorUrlFriendly']; $slug = $datos->{"get{$columnaSlug}"}(); unset($datos); if ($this->Title == '') { $this->Title = $slug; } if ($this->Name == '') { $this->Name = $this->Title; } } $slug = $this->Name; if ($slug == '') { $this->_errores[] = "No se ha indicado el título"; } } return count($this->_errores) == 0; }
/** * CÁLCULO DEL RECARGO ENERGÉTICO. * Si hay artículos que están sujetos a recargo energético, hay que calcular * el importe del impuesto e incluir una línea automática con dicho valor. * Si la línea ya está incluida, se actualiza. * * El articulo que se factura para recargo energetico viene definido en el parametro REART * Y el precio kilo en el parametro REIMP */ public function calculaRecargoEnergetico() { $var = new CpanVariables("Mod", "Web", "PcaeEmpresas"); $parametro = $var->getNode("especificas"); $reArticulo = $parametro['reArticulo']; unset($var); // Ver si existe el articulo que se ha definido en parametros // para facturar el recargo energetico $articulo = new Articulos(); $articulo = $articulo->find('Codigo', $reArticulo); if ($articulo->getIDArticulo()) { // Se ha definido el parametro con el codigo del articulo // para aplicar el recargo energetico. Ahora hay que ver si en el presupuesto // en curso hay articulos sujetos a recargo energético. $em = new EntityManager($this->getConectionName()); $tablaArticulos = "{$articulo->getDataBaseName()}.{$articulo->getTableName()}"; $lineas = new PstoLineas(); $tablaLineas = "{$lineas->getDataBaseName()}.{$lineas->getTableName()}"; unset($lineas); $query = "select t1.*,t2.Peso from {$tablaLineas} as t1, {$tablaArticulos} as t2 where t1.IDPsto='{$this->IDPsto}' and t1.IDArticulo=t2.IDArticulo and t2.RecargoEnergetico='1'"; $em->query($query); $rows = $em->fetchResult(); if ($rows) { //Hay articulos sujetos a recargo energetico $reKilos = 0; foreach ($rows as $row) { $reKilos += $row['MtsFa'] * $row['Peso']; } $reImporte = $reKilos * $articulo->getPrecioVenta(); //Ver si ya está la linea de presupuesto creada. $query = "select IDLinea from {$tablaLineas} where IDPsto='{$this->IDPsto}' and IDArticulo='{$articulo->getIDArticulo()}'"; $em->query($query); $rows = $em->fetchResult(); if ($rows) { // Ya estaba, actualizar $query = "update {$tablaLineas} set Unidades='{$reKilos}',Precio='{$articulo->getPrecioVenta()}',Importe='{$reImporte}' where IDLinea='{$rows[0]['IDLinea']}'"; $em->query($query); } else { // No está, crear $lineaPsto = new PstoLineas(); $lineaPsto->setIDPsto($this->IDPsto); $lineaPsto->setIDArticulo($articulo->getIDArticulo()); $lineaPsto->setDescripcion($articulo->getDescripcion()); $lineaPsto->setUnidades($reKilos); $lineaPsto->setPrecio($articulo->getPrecioVenta()); $lineaPsto->setImporte($reImporte); $lineaPsto->setIDAgente($_SESSION['usuarioPortal']['Id']); $lineaPsto->setIDComercial($this->IDComercial); $lineaPsto->setIDAlmacen($this->IDAlmacen); $lineaPsto->setIva($articulo->getIDIva()->getIva()); $lineaPsto->create(); unset($lineaPsto); } } else { // No hay articulos con recargo energetico. // Borro el eventual cargo de recargo energetico. $lineas = new PstoLineas(); $lineas->queryDelete("IDPsto='{$this->IDPsto}' and IDArticulo='{$articulo->getIDArticulo()}'"); unset($lineas); } $em->desConecta(); unset($em); } }
/** * Carga las variables web y de entorno del proyecto, app y módulo * @return void */ protected function cargaVariables() { // Variables de entorno del proyecto if (!isset($_SESSION['VARIABLES']['EnvPro'])) { $variables = new CpanVariables('Pro', 'Env'); $this->varEnvPro = $variables->getValores(); $_SESSION['VARIABLES']['EnvPro'] = $this->varEnvPro; } else { $this->varEnvPro = $_SESSION['VARIABLES']['EnvPro']; } $this->values['varEnvPro'] = $this->varEnvPro; if (count($this->values['varEnvPro']) == 0 and $_SESSION['usuarioPortal']['IdPerfil'] == '1') { $this->values['errores'][] = "No se han definido las variables de entorno del proyecto"; } // Variables web del proyecto if (!isset($_SESSION['VARIABLES']['WebPro'])) { $variables = new CpanVariables('Pro', 'Web'); $this->varWebPro = $variables->getValores(); $_SESSION['VARIABLES']['WebPro'] = $this->varWebPro; } else { $this->varWebPro = $_SESSION['VARIABLES']['WebPro']; } $this->values['varWebPro'] = $this->varWebPro; if (count($this->values['varWebPro']) == 0 and $_SESSION['usuarioPortal']['IdPerfil'] == '1') { $this->values['errores'][] = "No se han definido las variables web del proyecto"; } // Variables de entorno del modulo $variables = new CpanVariables('Mod', 'Env', $this->entity); $this->varEnvMod = $variables->getValores(); $this->values['varEnvMod'] = $this->varEnvMod; $_SESSION['VARIABLES']['EnvMod'] = $this->varEnvMod; if (count($this->values['varEnvMod']) == 0 and $_SESSION['usuarioPortal']['IdPerfil'] == '1') { $this->values['errores'][] = "No se han definido las variables de entorno del módulo '{$this->entity}'"; } // Variables web del modulo if (!isset($_SESSION['VARIABLES']['WebMod'])) { $variables = new CpanVariables('Mod', 'Web', $this->entity); $this->varWebMod = $variables->getValores(); $_SESSION['VARIABLES']['WebMod'] = $this->varWebMod; } else { $this->varWebMod = $_SESSION['VARIABLES']['WebMod']; } $this->values['varWebMod'] = $this->varWebMod; if (count($this->values['varWebMod']) == 0 and $_SESSION['usuarioPortal']['IdPerfil'] == '1') { $this->values['errores'][] = "No se han definido las variables web del módulo '{$this->entity}'"; } // Variables de entorno de la app if (!isset($_SESSION['VARIABLES']['EnvApp'])) { $variables = new CpanVariables('App', 'Env', $this->app); $this->varEnvApp = $variables->getValores(); $_SESSION['VARIABLES']['EnvApp'] = $this->varEnvApp; } else { $this->varEnvApp = $_SESSION['VARIABLES']['EnvApp']; } $this->values['varEnvApp'] = $this->varEnvApp; //if ((count($this->values['varEnvApp']) == 0) and ($_SESSION['usuarioPortal']['IdPerfil'] == '1')) // $this->values['errores'][] = "No se han definido las variables de entorno de la App '{$this->app}'"; // Variables web de la app if (!isset($_SESSION['VARIABLES']['WebApp'])) { $variables = new CpanVariables('App', 'Web', $this->app); $this->varWebApp = $variables->getValores(); $_SESSION['VARIABLES']['WebApp'] = $this->varWebApp; } else { $this->varWebApp = $_SESSION['VARIABLES']['WebApp']; } $this->values['varWebApp'] = $this->varWebApp; //if ((count($this->values['varWebApp']) == 0) and ($_SESSION['usuarioPortal']['IdPerfil'] == '1')) // $this->values['errores'][] = "No se han definido las variables web de la App '{$this->app}'"; unset($variables); }
/** * Devuelve un array con los atributos de cada columna del módulo $modulo * * Los atributos son: caption, visible, updatable, default, permission, help * * Los valores de los atributos se obtienen de las variables de entorno del módulo, * y si no existen, se cargan del config.yml correspondiente * * @param string $modulo El nombre del módulo * @return array Array de atributos */ public function getAtributos($modulo) { $atributos = array(); // PRIMERO LEO LOS ATRIBUTOS DE LAS COLUMNAS QUE ESTÁN EN CONFIG.YML $columnasConfig = $this->getNode('columns'); // LUEGO LOS SUSTITUYO POR LOS ESPECIFICOS QUE ESTAN EN LAS VAR DE ENTORNO DE PROYECTO // DE TAL MANERA QUE PREVALECEN LOS DEFINIDOS EN LAS VARIABLES DE ENTORNO, PERO // SI NO EXISTIERA LA VARIABLE DE ENTORNO CORRESPONDIENTE ENTONCES PONGO LA DEL CONFIG. $variables = new CpanVariables('Mod', 'Env', $modulo); if (is_array($variables->getDatosYml())) { $arrayColumnas = $variables->getNode('columns'); foreach ($arrayColumnas as $key => $value) { $atributos[$key] = $value; if (is_array($columnasConfig[$key])) { foreach ($columnasConfig[$key] as $keyConfig => $valueConfig) { if (!isset($atributos[$key][$keyConfig])) { $atributos[$key][$keyConfig] = $valueConfig; } } } } } else { // Aún no se han definido las variables, por lo tanto cargo los atributos // en base al array de correspondencia de atributos predeterminados foreach ($columnasConfig as $keyColumna => $valueColumna) { foreach (VariablesEnv::$varEnvMod as $keyVar => $keyColumnaConfig) { $atributos[$keyColumna][$keyVar] = isset($valueColumna[$keyColumnaConfig]) ? $valueColumna[$keyColumnaConfig] : ""; } } } unset($variables); // Si el usuario es super pongo la visibilidad a TRUE //if ($_SESSION['usuarioPortal']['Id'] == '1') // foreach ($atributos as $key => $value) // ++$atributos[$key]['visible']; /** if (!$atributos[$key]['visible']) { $atributos[$key]['visible'] = '1'; $atributos[$key]['caption'] .= " (oculta)"; } */ return $atributos; }