├── .gitignore ├── src ├── app │ ├── Module │ │ ├── Dev │ │ │ ├── View │ │ │ │ └── Template │ │ │ │ │ └── Bd │ │ │ │ │ ├── descargar_step3.php │ │ │ │ │ ├── tablas.php │ │ │ │ │ ├── descargar_step2.php │ │ │ │ │ ├── poblar.php │ │ │ │ │ ├── descargar_step1.php │ │ │ │ │ └── consulta.php │ │ │ ├── App │ │ │ │ └── config.php │ │ │ └── Controller │ │ │ │ └── Config.php │ │ └── Sistema │ │ │ ├── Module │ │ │ ├── General │ │ │ │ ├── Module │ │ │ │ │ └── DivisionGeopolitica │ │ │ │ │ │ ├── Model │ │ │ │ │ │ ├── Sql │ │ │ │ │ │ │ ├── division_geopolitica.ods │ │ │ │ │ │ │ ├── MariaDB │ │ │ │ │ │ │ │ └── division_geopolitica.sql │ │ │ │ │ │ │ └── PostgreSQL │ │ │ │ │ │ │ │ └── division_geopolitica.sql │ │ │ │ │ │ ├── Comunas.php │ │ │ │ │ │ ├── Region.php │ │ │ │ │ │ └── Comuna.php │ │ │ │ │ │ ├── Controller │ │ │ │ │ │ ├── Comunas.php │ │ │ │ │ │ ├── Regiones.php │ │ │ │ │ │ └── Provincias.php │ │ │ │ │ │ └── App │ │ │ │ │ │ └── config.php │ │ │ │ ├── Model │ │ │ │ │ ├── Sql │ │ │ │ │ │ ├── moneda.sql │ │ │ │ │ │ └── afd.sql │ │ │ │ │ └── AfdTransicion.php │ │ │ │ ├── View │ │ │ │ │ └── Template │ │ │ │ │ │ └── Afdes │ │ │ │ │ │ └── crear_editar.php │ │ │ │ └── Controller │ │ │ │ │ └── MonedaCambios.php │ │ │ └── Usuarios │ │ │ │ ├── View │ │ │ │ └── Template │ │ │ │ │ ├── Grupos │ │ │ │ │ ├── email_mensaje.php │ │ │ │ │ └── email.php │ │ │ │ │ └── Usuarios │ │ │ │ │ ├── activo_email.php │ │ │ │ │ ├── contrasenia_recuperar_email.php │ │ │ │ │ ├── crear_email.php │ │ │ │ │ ├── contrasenia_recuperar_step1.php │ │ │ │ │ ├── contrasenia_recuperar_step2.php │ │ │ │ │ ├── ingresar.php │ │ │ │ │ ├── crear_editar.php │ │ │ │ │ └── registrar.php │ │ │ │ ├── Controller │ │ │ │ ├── Auths.php │ │ │ │ └── UsuarioGrupos.php │ │ │ │ ├── App │ │ │ │ ├── config.php │ │ │ │ └── routes.php │ │ │ │ └── Model │ │ │ │ └── Auth.php │ │ │ └── App │ │ │ └── config.php │ ├── Utility │ │ └── Upload │ │ │ └── Image │ │ │ ├── Imgur.php │ │ │ └── Encoded.php │ ├── Controller │ │ └── Upload.php │ ├── Model │ │ ├── Datasource │ │ │ ├── Auth2 │ │ │ │ └── Base.php │ │ │ └── Auth2.php │ │ └── Datasource.php │ └── View │ │ └── Helper │ │ ├── Maintainer.php │ │ └── Dashboard.php ├── general │ ├── View │ │ ├── Template │ │ │ └── Contacto │ │ │ │ └── index.html.twig │ │ └── Form │ │ │ └── Contacto.php │ └── Utility │ │ ├── Mapas │ │ └── Google.php │ │ ├── HTML.php │ │ └── Spreadsheet │ │ ├── JSON.php │ │ └── XML.php └── core │ ├── View │ ├── Layout │ │ └── bootstrap.min.html.twig │ ├── Template │ │ ├── App │ │ │ ├── module.html.twig │ │ │ └── error.html.twig │ │ ├── Pages │ │ │ └── inicio.html.twig │ │ └── Model │ │ │ ├── create.html.twig │ │ │ ├── edit.html.twig │ │ │ └── show.html.twig │ ├── Engine │ │ └── Blade.php │ ├── Engine.php │ └── Form │ │ └── Model.php │ ├── Network │ ├── Mail │ │ └── Email.php │ └── Messenger │ │ ├── Stamp │ │ └── GearmanJobSubmitted.php │ │ └── Message │ │ └── Job.php │ ├── App │ └── routes.php │ ├── Interface │ ├── Service.php │ └── Middleware.php │ ├── Data │ ├── Encryption.php │ ├── Encryption │ │ └── Aes.php │ └── Validation │ │ ├── YearMonth.php │ │ └── BooleanAsInteger.php │ ├── Database │ └── Connection │ │ └── Sqlite.php │ ├── Middleware │ ├── Throttle.php │ ├── Auth.php │ └── Csrf.php │ └── Console │ └── Command │ ├── User │ └── Create.php │ ├── Cache │ ├── Clear.php │ └── Warmup.php │ ├── Database │ └── Seed.php │ ├── Jobs │ ├── Running.php │ └── Scheduled.php │ ├── Log │ ├── Rotate.php │ └── Clear.php │ ├── Session │ └── Clear.php │ ├── Lint │ └── Twig.php │ ├── Migrations │ ├── Make.php │ ├── Migrate.php │ └── Rollback.php │ ├── Router │ ├── List.php │ └── Match.php │ ├── Translation │ ├── List.php │ └── Update.php │ ├── App │ ├── Run.php │ ├── Check.php │ ├── Setup.php │ └── Deploy.php │ ├── Backup │ └── Run.php │ ├── Assets │ └── Collect.php │ ├── Config │ └── Cache.php │ └── Security │ └── Check.php ├── README.md ├── config └── layers.php ├── tests ├── Integration │ └── Database │ │ └── PostgreSqlTest.php └── Feature │ └── Web │ └── Pages │ └── HomeTest.php └── composer.json /.gitignore: -------------------------------------------------------------------------------- 1 | /.phpunit.result.cache 2 | /.vscode 3 | /build 4 | /vendor 5 | -------------------------------------------------------------------------------- /src/app/Module/Dev/View/Template/Bd/descargar_step3.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | Este mensaje ha sido enviado de forma masiva a usuarios activos de los grupos: 4 | - 5 | 6 | -- 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/View/Template/Usuarios/activo_email.php: -------------------------------------------------------------------------------- 1 | , 2 | 3 | Le informamos que su cuenta de usuario se encuentra habilitada. 4 | 5 | Su usuario es , y el enlace directo para iniciar sesión es el 6 | siguiente: 7 | 8 | 9 | 10 | Saludos, 11 | 12 | PD: este correo es generado de forma automática, por favor no contestar. 13 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/View/Template/Usuarios/contrasenia_recuperar_email.php: -------------------------------------------------------------------------------- 1 | 2 | , 3 | 4 | Usted, o alguien más en su nombre, desde la IP , ha solicitado 5 | recuperar su contraseña. Para hacer esto ingrese a la siguiente dirección web: 6 | 7 | 8 | 9 | Si usted no ha sido quien ha solicitado recuperar su contraseña puede ignorar 10 | sin problemas este correo electrónico. 11 | 12 | Saludos, 13 | 14 | PD: este correo es generado de forma automática, por favor no contestar. 15 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/View/Template/Usuarios/crear_email.php: -------------------------------------------------------------------------------- 1 | , 2 | 3 | Se ha creado una cuenta para usted en la aplicación web disponible en: 4 | 5 | 6 | 7 | Sus datos de acceso son: 8 | 9 | - Usuario: 10 | - Contraseña: 11 | 12 | El enlace directo para iniciar sesión es el siguiente: 13 | 14 | 15 | 16 | Una vez ingrese al sistema puede editar su perfil, cambiar su contraseña y 17 | modificar otros datos básicos de su cuenta en: 18 | 19 | 20 | 21 | atte, 22 | 23 | PD: este correo es generado de forma automática, por favor no contestar. 24 | -------------------------------------------------------------------------------- /src/general/View/Template/Contacto/index.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "View/Layout/" ~ __view_layout ~ ".html.twig" %} 2 | 3 | {% block content %} 4 | 5 | 6 |

Por favor envía tu mensaje a través del siguiente formulario, serás contactado a la brevedad.

7 | 8 | {{ form_start(form) }} 9 | {{ form_fields(form) }} 10 | {{ form_captcha(form) }} 11 | {{ form_csrf(form) }} 12 | {{ form_submit('Enviar mensaje') }} 13 | {{ form_end(form) }} 14 | 15 | {% endblock %} 16 | 17 | {% block session_messages %} 18 | {% if not form_is_valid(form) %} 19 | {{ form_errors_global(form) }} 20 | {% endif %} 21 | {% endblock %} 22 | -------------------------------------------------------------------------------- /src/app/Module/Dev/View/Template/Bd/tablas.php: -------------------------------------------------------------------------------- 1 | 2 | begin(array('onsubmit'=>'Form.check()')); 5 | echo $f->input (array( 6 | 'type'=>'select', 7 | 'name'=>'database', 8 | 'label'=>'Base de datos', 9 | 'options'=>$databases, 10 | 'check'=>'notempty', 11 | 'help'=>'Nombre de la base de datos definida dentro de la configuración.', 12 | )); 13 | echo $f->end('Ver tablas'); 14 | 15 | if (isset($data)) { 16 | array_unshift ($data, array('Tabla', 'Descripción', 'Columnas', 'PK')); 17 | new \sowerphp\general\View_Helper_Table ($data, 'tablas_'.$database, true); 18 | } 19 | -------------------------------------------------------------------------------- /src/app/Module/Dev/View/Template/Bd/descargar_step2.php: -------------------------------------------------------------------------------- 1 | 2 |

Seleccione las tablas que desea descargar.

3 | begin(array('onsubmit'=>'Form.check()')); 6 | echo $f->input (array( 7 | 'type'=>'hidden', 8 | 'name'=>'database', 9 | 'value'=>$database 10 | )); 11 | echo $f->input (array( 12 | 'type'=>'hidden', 13 | 'name'=>'type', 14 | 'value'=>$type 15 | )); 16 | echo $f->input (array( 17 | 'type'=>'tablecheck', 18 | 'name'=>'tables', 19 | 'label'=>'Tablas', 20 | 'titles'=>array('Tabla', 'Comentario'), 21 | 'table'=>$tables, 22 | )); 23 | echo $f->end(array( 24 | 'name'=>'step2', 25 | 'value'=>'Generar archivo', 26 | 'align'=>'center', 27 | )); 28 | -------------------------------------------------------------------------------- /src/core/View/Layout/bootstrap.min.html.twig: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {% block title %}{{ __view_title }}{% endblock %} 7 | 8 | 9 | 10 | {{ __view_header }} 11 | 12 | 13 |
14 | {% block content %}{% endblock %} 15 |
16 | 17 | 18 | -------------------------------------------------------------------------------- /src/app/Module/Dev/View/Template/Bd/poblar.php: -------------------------------------------------------------------------------- 1 | 2 | begin(array('onsubmit'=>'Form.check()')); 5 | echo $f->input (array( 6 | 'type'=>'select', 7 | 'name'=>'database', 8 | 'label'=>'Base de datos', 9 | 'options'=>$databases, 10 | 'check'=>'notempty', 11 | 'help'=>'Nombre de la base de datos definida dentro de la configuración.', 12 | )); 13 | echo $f->input (array( 14 | 'type'=>'checkbox', 15 | 'name'=>'delete', 16 | 'label'=>'Eliminar datos', 17 | 'help'=>'Eliminar datos de cada tabla antes de agregar. Si no se elimina se actualizarán los registros de la BD que coincidan con las PKs del archivo.', 18 | )); 19 | echo $f->input (array( 20 | 'type'=>'file', 21 | 'name'=>'file', 22 | 'label'=>'Datos para poblar', 23 | 'check'=>'notempty', 24 | )); 25 | echo $f->end('Poblar tablas'); 26 | -------------------------------------------------------------------------------- /src/app/Module/Dev/View/Template/Bd/descargar_step1.php: -------------------------------------------------------------------------------- 1 | 2 |

Seleccione la base de datos desde donde elegir las tablas, en la siguiente página podrá seleccionar que tablas descargar.

3 | begin(array('onsubmit'=>'Form.check()')); 6 | echo $f->input (array( 7 | 'type'=>'select', 8 | 'name'=>'database', 9 | 'label'=>'Base de datos', 10 | 'options'=>$databases, 11 | 'check'=>'notempty', 12 | 'help'=>'Nombre de la base de datos definida dentro de la configuración.', 13 | )); 14 | echo $f->input(array( 15 | 'type'=>'select', 16 | 'name'=>'type', 17 | 'label'=>'Tipo de archivo a generar', 18 | 'options'=>array('ods'=>'ODS', 'xls'=>'XLS'), 19 | 'check'=>'notempty', 20 | 'help'=>'Formato en el que se exportarán los datos.', 21 | )); 22 | echo $f->end(array('name'=>'step1', 'value'=>'Siguiente >>')); 23 | -------------------------------------------------------------------------------- /src/core/View/Template/App/module.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "View/Layout/" ~ __view_layout ~ ".html.twig" %} 2 | 3 | {% block content %} 4 | 5 | 8 | 9 | {% for category in nav %} 10 | {% if category.name %} 11 |

{{ category.name }}

12 | {% endif %} 13 |
14 | {% for link, info in category.menu %} 15 |
16 | 24 |
25 | {% endfor %} 26 |
27 | {% endfor %} 28 | 29 | {% endblock %} 30 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SowerPHP: Simple and Open Web Ecosystem Reimagined for PHP 2 | 3 | SowerPHP es un framework, o ambiente de desarrollo, para PHP desarrollado en Chile. 4 | 5 | El principal proyecto desarrollado con este framework es la 6 | [Aplicación Web de LibreDTE](https://github.com/LibreDTE/libredte-webapp). 7 | Gracias a dicho proyecto es que este framework ha sido mejorado con los años, 8 | siempre, teniendo como principal uso LibreDTE. 9 | 10 | Todo el código fuente de SowerPHP se encuentra liberado utilizando la 11 | [licencia AGPL v3 o superior](https://github.com/sascocl/sowerphp/blob/master/COPYING). 12 | 13 | ## Crear proyecto vacío 14 | 15 | ```shell 16 | composer create-project --prefer-dist sowerphp/sowerphp-project my-project dev-master 17 | cd my-project 18 | cp env-dist .env 19 | ``` 20 | 21 | ## Ambiente DEV o QA (no producción) 22 | 23 | ### Instalación 24 | 25 | ```shell 26 | mkdir -p $HOME/dev/www 27 | cd $HOME/dev/www 28 | git clone git@github.com:sascocl/sowerphp.git sowerphp-framework 29 | cd sowerphp-framework 30 | composer install 31 | ``` 32 | 33 | ### Ejecución de pruebas 34 | 35 | ```shell 36 | XDEBUG_MODE=coverage ./vendor/bin/phpunit 37 | ``` 38 | -------------------------------------------------------------------------------- /src/app/Module/Dev/View/Template/Bd/consulta.php: -------------------------------------------------------------------------------- 1 | 2 | begin(array('onsubmit'=>'Form.check()')); 5 | echo $f->input (array( 6 | 'type'=>'select', 7 | 'name'=>'database', 8 | 'label'=>'Base de datos', 9 | 'options'=>$databases, 10 | 'check'=>'notempty', 11 | 'help'=>'Nombre de la base de datos definida dentro de la configuración.', 12 | )); 13 | echo $f->input([ 14 | 'type'=>'textarea', 15 | 'name'=>'query', 16 | 'label'=>'Consulta SQL', 17 | 'check'=>'notempty', 18 | 'help'=>'Consulta SQL que se desea ejecutar en la base de datos seleccionada.', 19 | 'rows'=>10, 20 | ]); 21 | echo $f->input([ 22 | 'type'=>'select', 23 | 'name'=>'resultados', 24 | 'label'=>'Resultados', 25 | 'options'=>['web'=>'Ver resultados en la aplicación', 'download'=>'Descargar archivo con los datos'], 26 | 'check'=>'notempty', 27 | ]); 28 | echo $f->end('Ejecutar consulta SQL'); 29 | 30 | if (isset($data)) { 31 | new \sowerphp\general\View_Helper_Table ($data, 'query_'.$database.'_'.date('U'), true); 32 | } 33 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Model/Sql/afd.sql: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | 3 | DROP TABLE IF EXISTS afd CASCADE; 4 | CREATE TABLE afd ( 5 | codigo VARCHAR(10) PRIMARY KEY, 6 | nombre VARCHAR(50) NOT NULL 7 | ); 8 | 9 | DROP TABLE IF EXISTS afd_estado CASCADE; 10 | CREATE TABLE afd_estado ( 11 | afd VARCHAR(10), 12 | codigo integer, 13 | nombre VARCHAR(50) NOT NULL, 14 | CONSTRAINT afd_estado_pkey PRIMARY KEY (afd, codigo), 15 | CONSTRAINT afd_estado_afd_fkey FOREIGN KEY (afd) REFERENCES afd (codigo) 16 | ON UPDATE CASCADE ON DELETE CASCADE 17 | ); 18 | 19 | DROP TABLE IF EXISTS afd_transicion CASCADE; 20 | CREATE TABLE afd_transicion ( 21 | afd VARCHAR(10), 22 | desde integer, 23 | valor VARCHAR(5), 24 | hasta integer NOT NULL, 25 | INDEX afd_transicion_afd_hasta_idx (afd, hasta), 26 | CONSTRAINT afd_transicion PRIMARY KEY (afd, desde, valor), 27 | CONSTRAINT afd_transicion_desde_fkey FOREIGN KEY (afd, desde) 28 | REFERENCES afd_estado (afd, codigo) ON UPDATE CASCADE ON DELETE CASCADE, 29 | CONSTRAINT afd_transicion_hasta_fkey FOREIGN KEY (afd, hasta) 30 | REFERENCES afd_estado (afd, codigo) ON UPDATE CASCADE ON DELETE CASCADE 31 | ); 32 | 33 | COMMIT; 34 | -------------------------------------------------------------------------------- /src/core/View/Template/Pages/inicio.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "View/Layout/" ~ __view_layout ~ ".html.twig" %} 2 | 3 | {% block title %}Bienvenido a SowerPHP{% endblock %} 4 | 5 | {% block content %} 6 | 7 |
8 |
9 | Logo SowerPHP 10 |

SowerPHP

11 |

Simple and Open Web Ecosystem Reimagined for PHP.

12 | 13 | Ir a la web de SowerPHP 14 | 15 |
16 |
17 | 18 |
19 | 20 |
21 |

¡Listo para programar!

22 |

Ya tienes instalado SowerPHP, es hora de empezar a programar.

23 |

Primero, crea una página de inicio en {{ project_path('/src/app/View/Template/Pages/inicio.html.twig') }}

24 |
25 | 26 | {% endblock %} 27 | -------------------------------------------------------------------------------- /src/core/Network/Mail/Email.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\core; 25 | 26 | use Symfony\Component\Mime\Email; 27 | 28 | /** 29 | * Mensaje de correo electrónico que se usará con el servicio 'mailer'. 30 | */ 31 | class Network_Mail_Email extends Email 32 | { 33 | } 34 | -------------------------------------------------------------------------------- /src/core/App/routes.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | // Instancia del servicio de enrutamiento. 27 | $router = router(); 28 | 29 | // Definir la página de inicio. 30 | $router->connect('/', [ 31 | 'controller' => 'app', 32 | 'action' => 'page', 33 | config('app.ui.homepage') 34 | ]); 35 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Module/DivisionGeopolitica/Controller/Comunas.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\General\DivisionGeopolitica; 25 | 26 | use sowerphp\autoload\Controller_Model; 27 | 28 | /** 29 | * Controlador modelo: comuna. 30 | */ 31 | class Controller_Comunas extends Controller_Model 32 | { 33 | } 34 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Module/DivisionGeopolitica/Controller/Regiones.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\General\DivisionGeopolitica; 25 | 26 | use sowerphp\autoload\Controller_Model; 27 | 28 | /** 29 | * Controlador modelo: region. 30 | */ 31 | class Controller_Regiones extends Controller_Model 32 | { 33 | } 34 | -------------------------------------------------------------------------------- /src/core/View/Template/Model/create.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "View/Layout/" ~ __view_layout ~ ".html.twig" %} 2 | 3 | {% block content %} 4 | 5 |

Crear {{ metadata.model.verbose_name|lower }}

6 | 7 | 20 | 21 | {{ form_start(form) }} 22 | {{ form_fields(form) }} 23 | {{ form_csrf(form) }} 24 | {{ form_end(form) }} 25 | 26 | 31 | 32 | {% endblock %} 33 | 34 | {% block session_messages %} 35 | {% if not form_is_valid(form) %} 36 | {{ form_errors_global(form) }} 37 | {% endif %} 38 | {% endblock %} 39 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Module/DivisionGeopolitica/Controller/Provincias.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\General\DivisionGeopolitica; 25 | 26 | use sowerphp\autoload\Controller_Model; 27 | 28 | /** 29 | * Controlador modelo: provincia. 30 | */ 31 | class Controller_Provincias extends Controller_Model 32 | { 33 | } 34 | -------------------------------------------------------------------------------- /src/core/View/Template/Model/edit.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "View/Layout/" ~ __view_layout ~ ".html.twig" %} 2 | 3 | {% block content %} 4 | 5 |

Editar {{ metadata.model.verbose_name|lower }}

6 | 7 | 20 | 21 | {{ form_start(form) }} 22 | {{ form_fields(form) }} 23 | {{ form_csrf(form) }} 24 | {{ form_end(form) }} 25 | 26 | 31 | 32 | {% endblock %} 33 | 34 | {% block session_messages %} 35 | {% if not form_is_valid(form) %} 36 | {{ form_errors_global(form) }} 37 | {% endif %} 38 | {% endblock %} 39 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Module/DivisionGeopolitica/Model/Sql/MariaDB/division_geopolitica.sql: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | 3 | DROP TABLE IF EXISTS region CASCADE; 4 | CREATE TABLE region ( 5 | codigo CHAR(2) PRIMARY KEY 6 | COMMENT 'Código de la región', 7 | region CHARACTER VARYING (60) NOT NULL 8 | COMMENT 'Nombre de la región' 9 | ) COMMENT = 'Regiones del país'; 10 | 11 | DROP TABLE IF EXISTS provincia CASCADE; 12 | CREATE TABLE provincia ( 13 | codigo CHAR(3) PRIMARY KEY 14 | COMMENT 'Código de la provincia', 15 | provincia CHARACTER VARYING (30) NOT NULL 16 | COMMENT 'Nombre de la provincia', 17 | region CHAR(2) NOT NULL 18 | COMMENT 'Región a la que pertenece la provincia', 19 | CONSTRAINT provincia_region_fk FOREIGN KEY (region) REFERENCES region 20 | (codigo) MATCH FULL ON UPDATE CASCADE ON DELETE CASCADE 21 | ) COMMENT 'Provincias de cada región del país'; 22 | 23 | DROP TABLE IF EXISTS comuna CASCADE; 24 | CREATE TABLE comuna ( 25 | codigo CHAR(5) PRIMARY KEY 26 | COMMENT 'Comunas de cada provincia del país', 27 | comuna CHARACTER VARYING (40) NOT NULL 28 | COMMENT 'Código de la comuna', 29 | provincia CHAR(3) NOT NULL 30 | COMMENT 'Nombre de la comuna', 31 | CONSTRAINT comuna_provincia_fk FOREIGN KEY (provincia) REFERENCES 32 | provincia (codigo) MATCH FULL ON UPDATE CASCADE ON DELETE 33 | CASCADE 34 | ) COMMENT 'Provincia a la que pertenece la comuna'; 35 | 36 | COMMIT; 37 | -------------------------------------------------------------------------------- /config/layers.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | return [ 27 | [ 28 | 'namespace' => 'sowerphp\app', 29 | 'directory' => 'framework:/src/app', 30 | ], 31 | [ 32 | 'namespace' => 'sowerphp\general', 33 | 'directory' => 'framework:/src/general', 34 | ], 35 | [ 36 | 'namespace' => 'sowerphp\core', 37 | 'directory' => 'framework:/src/core', 38 | ], 39 | ]; 40 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/Controller/Auths.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\Usuarios; 25 | 26 | /** 27 | * Clase para el controlador asociado a la tabla auth de la base de 28 | * datos 29 | * Comentario de la tabla: Permisos de grupos para acceder a recursos 30 | * Esta clase permite controlar las acciones entre el modelo y vista para la 31 | * tabla auth 32 | */ 33 | class Controller_Auths extends \sowerphp\autoload\Controller_Model 34 | { 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/core/View/Template/Model/show.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "View/Layout/" ~ __view_layout ~ ".html.twig" %} 2 | 3 | {% block content %} 4 | 5 |

{{ data.model.verbose_name }}

6 | 7 |
8 | {% for action in data.model.actions %} 9 | {% if action.action != 'show' %} 10 | 11 | 12 | {{ action.label }} 13 | 14 | {% endif %} 15 | {% endfor %} 16 | 17 | 18 | Listado de {{ data.model.verbose_name_plural|lower }} 19 | 20 |
21 | 22 | {% for field in data.fields %} 23 | {% if not field.hidden %} 24 |
25 |
26 | {{ field.verbose_name }} 27 |
28 |
29 | {{ field.value }} 30 |
31 |
32 | {% endif %} 33 | {% endfor %} 34 | 35 | {% endblock %} 36 | -------------------------------------------------------------------------------- /src/core/Interface/Service.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | interface Interface_Service 29 | { 30 | /** 31 | * Registra el servicio en el contenedor. 32 | */ 33 | public function register(): void; 34 | 35 | /** 36 | * Inicializa el servicio. 37 | */ 38 | public function boot(): void; 39 | 40 | /** 41 | * Finaliza el servicio. 42 | */ 43 | public function terminate(): void; 44 | } 45 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/App/config.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | return [ 25 | 26 | 'modules.Sistema' => [ 27 | 28 | // Título del módulo. 29 | 'title' => 'Configuración del sistema', 30 | 31 | // Menú para el módulo. 32 | 'nav' => [ 33 | '/usuarios' => [ 34 | 'name' => 'Usuarios', 35 | 'desc' => 'Mantenedor de usuarios y grupos del sistema', 36 | 'icon' => 'fa-solid fa-users', 37 | ], 38 | ], 39 | 40 | ], 41 | 42 | ]; 43 | -------------------------------------------------------------------------------- /src/app/Utility/Upload/Image/Imgur.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app; 25 | 26 | /** 27 | * Clase para subir imagenes a www.imgur.com 28 | */ 29 | class Utility_Upload_Image_Imgur 30 | { 31 | 32 | /** 33 | * Método que sube la imagen a imgur 34 | */ 35 | public function upload($file, array $config = []) 36 | { 37 | $Imgur = new \sowerphp\app\Apps\Model_Imgur($config); 38 | $response = $Imgur->upload(file_get_contents($file['tmp_name'])); 39 | return $response['link']; 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/core/View/Template/App/error.html.twig: -------------------------------------------------------------------------------- 1 | {% extends "View/Layout/" ~ __view_layout ~ ".html.twig" %} 2 | 3 | {% block title %}Ha ocurrido un error{% endblock %} 4 | 5 | {% block content %} 6 | 7 |
8 | Logo 9 |
10 |
11 |

¡Lo sentimos!

12 |

Encontramos un problema y la aplicación dejó de ejecutarse.

13 | {% if error_reporting and exception and message %} 14 |
15 |
{{ exception | raw }}
16 |
{{ message | raw }}
17 |
18 | {% endif %} 19 | {% if error_reporting and trace %} 20 |
21 |
Traza del error
22 |
{{ trace | raw }}
23 |
24 | {% endif %} 25 |

Por favor, verifique que la dirección web que lo trajo a esta página o los datos ingresados sean válidos.

26 | Volver a la página principal 27 | {% if soporte %} 28 | ¡Solicitar ayuda! 29 | {% endif %} 30 |
31 | 32 | {% endblock %} 33 | -------------------------------------------------------------------------------- /src/app/Utility/Upload/Image/Encoded.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app; 25 | 26 | /** 27 | * Clase para generar una imagen codificada (local encoded image) 28 | */ 29 | class Utility_Upload_Image_Encoded 30 | { 31 | 32 | /** 33 | * Método que sube la imagen y entrega la misma codificada para ser incluida 34 | * directamente en el atributo "src" del tag "img" 35 | */ 36 | public function upload($file) 37 | { 38 | return 'data:'.$file['type'].';base64,'.base64_encode(file_get_contents($file['tmp_name'])); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /tests/Integration/Database/PostgreSqlTest.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | use PHPUnit\Framework\TestCase; 27 | use sowerphp\core\App; 28 | 29 | /** 30 | * Test para probar la conexión con una base de datos PostgreSQL. 31 | */ 32 | class PostgreSqlTest extends TestCase 33 | { 34 | protected $app; 35 | 36 | protected function setUp(): void 37 | { 38 | $appType = 'http'; 39 | $appFullBoot = true; 40 | $this->app = App::getInstance($appType, $appFullBoot); 41 | } 42 | 43 | public function testConnection() 44 | { 45 | // TODO: escribir Test que prueba la conexión a la base de datos. 46 | //$this->app->run(); 47 | $this->assertTrue(true); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Module/DivisionGeopolitica/Model/Sql/PostgreSQL/division_geopolitica.sql: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | 3 | DROP TABLE IF EXISTS region CASCADE; 4 | CREATE TABLE region ( 5 | codigo CHAR(2) PRIMARY KEY, 6 | region CHARACTER VARYING (60) NOT NULL, 7 | orden SMALLINT NOT NULL DEFAULT 0 8 | ); 9 | COMMENT ON TABLE region IS 'Regiones del país'; 10 | COMMENT ON COLUMN region.codigo IS 'Código de la región'; 11 | COMMENT ON COLUMN region.region IS 'Nombre de la región'; 12 | 13 | DROP TABLE IF EXISTS provincia CASCADE; 14 | CREATE TABLE provincia ( 15 | codigo CHAR(3) PRIMARY KEY, 16 | provincia CHARACTER VARYING (30) NOT NULL, 17 | region CHAR(2) NOT NULL, 18 | CONSTRAINT provincia_region_fk FOREIGN KEY (region) REFERENCES region 19 | (codigo) MATCH FULL ON UPDATE CASCADE ON DELETE CASCADE 20 | ); 21 | COMMENT ON TABLE provincia IS 'Provincias de cada región del país'; 22 | COMMENT ON COLUMN provincia.codigo IS 'Código de la provincia'; 23 | COMMENT ON COLUMN provincia.provincia IS 'Nombre de la provincia'; 24 | COMMENT ON COLUMN provincia.region IS 'Región a la que pertenece la provincia'; 25 | 26 | DROP TABLE IF EXISTS comuna CASCADE; 27 | CREATE TABLE comuna ( 28 | codigo CHAR(5) PRIMARY KEY, 29 | comuna CHARACTER VARYING (40) NOT NULL, 30 | provincia CHAR(3) NOT NULL, 31 | CONSTRAINT comuna_provincia_fk FOREIGN KEY (provincia) REFERENCES 32 | provincia (codigo) MATCH FULL ON UPDATE CASCADE ON DELETE 33 | CASCADE 34 | ); 35 | COMMENT ON TABLE comuna IS 'Comunas de cada provincia del país'; 36 | COMMENT ON COLUMN comuna.codigo IS 'Código de la comuna'; 37 | COMMENT ON COLUMN comuna.comuna IS 'Nombre de la comuna'; 38 | COMMENT ON COLUMN comuna.provincia IS 'Provincia a la que pertenece la comuna'; 39 | 40 | COMMIT; 41 | -------------------------------------------------------------------------------- /tests/Feature/Web/Pages/HomeTest.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | use PHPUnit\Framework\TestCase; 27 | use sowerphp\core\App; 28 | 29 | /** 30 | * Test para probar el flujo completo de la aplicación renderizando la página 31 | * de inicio. 32 | */ 33 | class HomeTest extends TestCase 34 | { 35 | protected $app; 36 | 37 | protected function setUp(): void 38 | { 39 | $appType = 'http'; 40 | $appFullBoot = true; 41 | $this->app = App::getInstance($appType, $appFullBoot); 42 | } 43 | 44 | public function testHomepage() 45 | { 46 | // TODO: escribir Test que pruebe la generación de la página de inicio. 47 | //$this->app->run(); 48 | $this->assertTrue(true); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/View/Template/Usuarios/contrasenia_recuperar_step1.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 | Logo 6 |
7 |
8 |
9 | 10 |
11 |
12 |

Recuperar contraseña

13 |
14 |
15 | 16 | 17 |
18 | 19 | 20 |
21 |
22 |
23 |

Si la cuenta se encuentra bloqueada, esta opción permite desbloquear la cuenta.

24 |
25 |
26 | 27 |
28 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/View/Template/Afdes/crear_editar.php: -------------------------------------------------------------------------------- 1 | 2 | begin(array('onsubmit'=>'Form.check()')); 5 | echo $f->input([ 6 | 'name' => 'codigo', 7 | 'label' => 'Código', 8 | 'value' => isset($Afd) ? $Afd->codigo : '', 9 | 'attr' => 'maxlength="10"', 10 | 'check' => 'notempty', 11 | ]); 12 | echo $f->input([ 13 | 'name' => 'nombre', 14 | 'label' => 'Nombre', 15 | 'value' => isset($Afd) ? $Afd->nombre : '', 16 | 'attr' => 'maxlength="50"', 17 | 'check' => 'notempty', 18 | ]); 19 | echo $f->input([ 20 | 'type' => 'js', 21 | 'id' => 'estados', 22 | 'label' => 'Estados', 23 | 'titles' => ['Código', 'Estado'], 24 | 'inputs' => [ 25 | ['name'=>'estado_codigo'], 26 | ['name'=>'estado_nombre', 'attr'=>'maxlength="50"'] 27 | ], 28 | 'values' => isset($Afd) ? $Afd->getEstados('estado_') : [], 29 | ]); 30 | echo $f->input([ 31 | 'type' => 'js', 32 | 'id' => 'transiciones', 33 | 'label' => 'Transiciones', 34 | 'titles' => ['Desde', 'Valor', 'Hasta'], 35 | 'inputs' => [ 36 | ['name'=>'desde'], 37 | ['name'=>'valor', 'attr'=>'maxlength="5"'], 38 | ['name'=>'hasta'] 39 | ], 40 | 'values' => isset($Afd) ? $Afd->getTransicionesTabla() : [], 41 | ]); 42 | echo $f->end('Guardar'); 43 | if (isset($Afd)) { 44 | echo '
Grafo ',$Afd->codigo,'
',"\n"; 45 | } 46 | ?> 47 | 50 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Module/DivisionGeopolitica/App/config.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | return [ 25 | 26 | 'modules.Sistema.General.DivisionGeopolitica' => [ 27 | 28 | // Título del módulo. 29 | 'title' => 'División geopolítica', 30 | 31 | // Menú para el módulo. 32 | 'nav' => [ 33 | '/comunas' => [ 34 | 'name' => 'Comunas', 35 | 'icon' => 'fas fa-map-marker-alt', 36 | ], 37 | '/provincias' => [ 38 | 'name' => 'Provincias', 39 | 'icon' => 'fa fa-map', 40 | ], 41 | '/regiones' => [ 42 | 'name' => 'Regiones', 43 | 'icon' => 'fa fa-globe', 44 | ], 45 | ], 46 | 47 | ], 48 | 49 | ]; 50 | -------------------------------------------------------------------------------- /src/core/View/Engine/Blade.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | /** 29 | * Motor de renderizado de plantilla HTML utilizando Blade de Laravel. 30 | */ 31 | class View_Engine_Blade extends View_Engine 32 | { 33 | /** 34 | * Renderiza una plantilla blade y devolver el resultado como una cadena. 35 | * 36 | * @param string $filepath Ruta a la plantilla blade que se va a renderizar. 37 | * @param array $data Datos que se pasarán a la plantilla blade para su uso 38 | * dentro de la vista. 39 | * @return string El contenido HTML generado por la plantilla blade. 40 | */ 41 | public function render(string $filepath, array $data): string 42 | { 43 | throw new \Exception('Plantillas blade actualmente no soportadas.'); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/core/Data/Encryption.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Illuminate\Contracts\Encryption\Encrypter as EncrypterContract; 29 | 30 | /** 31 | * Clase base para los encriptadores que se definirán dentro del framework. 32 | */ 33 | abstract class Data_Encryption implements EncrypterContract 34 | { 35 | /** 36 | * Clave de encriptación. 37 | * 38 | * @var string 39 | */ 40 | protected $key; 41 | 42 | /** 43 | * Método de encriptación 44 | * 45 | * @var string 46 | */ 47 | protected $cipher; 48 | 49 | /** 50 | * Constructor del encriptador. 51 | * 52 | * @param string $key 53 | * @param string $cipher 54 | */ 55 | public function __construct(string $key, ?string $cipher = null) 56 | { 57 | $this->key = $key; 58 | $this->cipher = $cipher; 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/View/Template/Grupos/email.php: -------------------------------------------------------------------------------- 1 | 2 | begin(['onsubmit'=>'Form.check() && __.confirm(this, \'¿Enviar email?\')']); 5 | echo $f->input([ 6 | 'type' => 'tablecheck', 7 | 'id' => 'grupos', 8 | 'label' => 'Destinatarios', 9 | 'titles' => ['Grupo', '# Usuarios'], 10 | 'table' => $grupos, 11 | 'display-key' => false, 12 | 'check' => 'notempty', 13 | ]); 14 | echo $f->input([ 15 | 'type' => 'select', 16 | 'name' => 'enviar_como', 17 | 'label' => 'Enviar como', 18 | 'options' => ['bcc'=>'BCC: copia oculta', 'cc'=>'CC: copia'], 19 | 'check' => 'notempty', 20 | ]); 21 | echo $f->input([ 22 | 'name' => 'asunto', 23 | 'label' => 'Asunto', 24 | 'help' => 'Se incluirá automáticamente "['.$page_title.'] " al inicio del asunto.', 25 | 'check' => 'notempty', 26 | ]); 27 | echo $f->input([ 28 | 'type' => 'textarea', 29 | 'name' => 'mensaje', 30 | 'label' => 'Mensaje', 31 | 'check' => 'notempty', 32 | 'help' => 'Se adjuntará listado de grupos y firma (con nombre y correo del usuario más la URL de la aplicación) de forma automática al final del mensaje.', 33 | ]); 34 | echo $f->input([ 35 | 'type' => 'js', 36 | 'name' => 'adjuntos', 37 | 'label' => 'Adjuntos', 38 | 'titles' => ['Archivo adjunto'], 39 | 'inputs' => [['type'=>'file', 'name'=>'adjuntos']], 40 | 'help' => 'Archivos adjuntos que se enviarán con el correo a los usuarios.', 41 | ]); 42 | echo $f->input([ 43 | 'name' => 'agrupar', 44 | 'label' => 'Agrupar', 45 | 'value' => 0, 46 | 'check' => 'notempty integer', 47 | 'help' => 'Si el valor es diferente a 0 se agruparán los mensajes por esta cantidad de usuarios.', 48 | ]); 49 | echo $f->end('Enviar email a usuarios de grupos seleccionados'); 50 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/View/Template/Usuarios/contrasenia_recuperar_step2.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 | Logo 6 |
7 |
8 |
9 | 10 |
11 |
12 |

Reiniciar contraseña

13 |
14 |
15 | 16 | 17 |
18 |
19 | 20 | 21 |
22 | 23 | 24 | 25 |
26 |
27 |
28 |
29 |
30 | 31 |
32 | -------------------------------------------------------------------------------- /src/core/Database/Connection/Sqlite.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\core; 25 | 26 | /** 27 | * Clase personalizada para gestionar conexiones a bases de datos SQLite. 28 | * Extiende de Database_Connection, adaptando y optimizando la conexión para el 29 | * manejo eficiente de bases de datos SQLite. Esta clase facilita la 30 | * implementación de funcionalidades específicas para SQLite. 31 | */ 32 | class Database_Connection_Sqlite extends Database_Connection 33 | { 34 | /** 35 | * Asigna un límite para la obtención de filas en la consulta SQL. 36 | * 37 | * @param string $query Consulta SQL a la que se agregará el límite. 38 | * @param int $records Registros que se desean obtener. 39 | * @param int $offset Registro desde donde iniciar el límite. 40 | * @return string Consulta con el límite agregado. 41 | */ 42 | public function setLimit(string $query, int $records, int $offset = 0): string 43 | { 44 | return $query . ' LIMIT ' . $offset . ',' . $records; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/core/Interface/Middleware.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Closure; 29 | 30 | /** 31 | * Interfaz para los middlewares. 32 | */ 33 | interface Interface_Middleware 34 | { 35 | /** 36 | * Maneja una solicitud antes de llegar al controlador. 37 | * 38 | * @param Network_Request $request 39 | * @param Closure $next 40 | * @return mixed 41 | */ 42 | public function handleBefore( 43 | Network_Request $request, 44 | Closure $next 45 | ): Network_Request; 46 | 47 | /** 48 | * Maneja una solicitud después de que el controlador ha generado una 49 | * respuesta. 50 | * 51 | * @param Network_Request $request 52 | * @param Network_Response $response 53 | * @param Closure $next 54 | * @return mixed 55 | */ 56 | public function handleAfter( 57 | Network_Request $request, 58 | Network_Response $response, 59 | Closure $next 60 | ): Network_Response; 61 | } 62 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/Controller/UsuarioGrupos.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\Usuarios; 25 | 26 | use sowerphp\core\Network_Request as Request; 27 | 28 | /** 29 | * Clase para el controlador asociado a la tabla usuario_grupo de la base de 30 | * datos 31 | * Comentario de la tabla: Relación entre usuarios y los grupos a los que pertenecen 32 | * Esta clase permite controlar las acciones entre el modelo y vista para la 33 | * tabla usuario_grupo 34 | */ 35 | class Controller_UsuarioGrupos extends \sowerphp\autoload\Controller_Model 36 | { 37 | 38 | protected $deleteRecord = false; ///< Indica si se permite o no borrar registros 39 | 40 | public function editar(Request $request, ...$pk) 41 | { 42 | list($usuario) = $pk; 43 | $listar = base64_encode(url($request->getBaseUrlWithoutSlash().'/sistema/usuarios/usuario_grupos/listar'.base64_decode($_GET['listar']))); 44 | return redirect('/sistema/usuarios/usuarios/editar/'.$usuario.'?listar='.$listar); 45 | } 46 | 47 | } 48 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Controller/MonedaCambios.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\General; 25 | 26 | /** 27 | * Clase para el controlador asociado a la tabla moneda_cambio de la base de 28 | * datos 29 | * Comentario de la tabla: 30 | * Esta clase permite controlar las acciones entre el modelo y vista para la 31 | * tabla moneda_cambio 32 | */ 33 | class Controller_MonedaCambios extends \sowerphp\autoload\Controller_Model 34 | { 35 | 36 | /** 37 | * Recurso que entrega el tipo de cambio para cierta moneda en cierto día 38 | */ 39 | public function _api_tasa_GET($from, $to, $fecha = null) 40 | { 41 | if (empty($fecha)) { 42 | $fecha = date('Y-m-d'); 43 | } 44 | $from = mb_strtoupper($from); 45 | $to = mb_strtoupper($to); 46 | return [ 47 | $from => [ 48 | $to => [ 49 | $fecha => (float)(new Model_MonedaCambio($from, $to, $fecha))->valor, 50 | ] 51 | ] 52 | ]; 53 | } 54 | 55 | } 56 | -------------------------------------------------------------------------------- /src/core/View/Engine.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | /** 29 | * Clase base para los motores de renderizado de plantillas HTML. 30 | */ 31 | abstract class View_Engine 32 | { 33 | /** 34 | * Servicio de capas de la aplicación. 35 | * 36 | * @var Service_Layers 37 | */ 38 | protected $layersService; 39 | 40 | /** 41 | * Servicio de vistas de la aplicación. 42 | * 43 | * @var Service_View 44 | */ 45 | protected $viewService; 46 | 47 | /** 48 | * Constructor del motor de renderizado de las vistas. 49 | */ 50 | public function __construct( 51 | Service_Layers $layersService, 52 | Service_View $viewService 53 | ) 54 | { 55 | $this->layersService = $layersService; 56 | $this->viewService = $viewService; 57 | $this->boot(); 58 | } 59 | 60 | /** 61 | * Inicializar el motor de renderizado de las vistas. 62 | * 63 | * @return void 64 | */ 65 | protected function boot(): void 66 | { 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/app/Module/Dev/App/config.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | return [ 25 | 26 | 'modules.Dev' => [ 27 | 28 | // Menú para el módulo. 29 | 'nav' => [ 30 | '/bd/tablas' => [ 31 | 'name' => 'Listado de tablas', 32 | 'desc' => 'Información de las tablas de la base de datos', 33 | 'icon' => 'fa fa-database', 34 | ], 35 | '/bd/poblar' => [ 36 | 'name' => 'Poblar tablas', 37 | 'desc' => 'Cargar datos a tablas de la base de datos', 38 | 'icon' => 'fa fa-upload', 39 | ], 40 | '/bd/descargar' => [ 41 | 'name' => 'Descargar datos de tablas', 42 | 'desc' => 'Descargar datos de tablas de la base de datos', 43 | 'icon' => 'fa fa-download', 44 | ], 45 | '/bd/consulta' => [ 46 | 'name' => 'Ejecutar consulta', 47 | 'desc' => 'Ejecutar consulta SQL en la base de datos', 48 | 'icon' => 'fa fa-code', 49 | ], 50 | ], 51 | 52 | ], 53 | 54 | ]; 55 | -------------------------------------------------------------------------------- /src/core/Data/Encryption/Aes.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Illuminate\Encryption\Encrypter as EncrypterIlluminate; 29 | 30 | /** 31 | * Encriptador con la clase oficial de Illuminate. 32 | */ 33 | class Data_Encryption_Aes extends EncrypterIlluminate 34 | { 35 | /** 36 | * Encripta datos usando mcrypt. 37 | */ 38 | public function encrypt($value, $serialize = true): string 39 | { 40 | // Quitar espacios del string (si es string). 41 | if (is_string($value)) { 42 | $value = trim($value); 43 | } 44 | 45 | // Encriptar con el método padre. 46 | return parent::encrypt($value, $serialize); 47 | } 48 | 49 | /** 50 | * Desencripta datos encriptados usando mcrypt. 51 | */ 52 | public function decrypt($payload, $unserialize = true) 53 | { 54 | // Desencriptar con el método padre. 55 | $value = parent::decrypt($payload, $unserialize); 56 | 57 | // Quitar espacios del string (si es string). 58 | if (is_string($value)) { 59 | $value = trim($value); 60 | } 61 | 62 | // Entregar el valor. 63 | return $value; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/general/Utility/Mapas/Google.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\general; 25 | 26 | /** 27 | * Clase para consumir datos de la API de Google Maps. 28 | */ 29 | class Utility_Mapas_Google 30 | { 31 | 32 | private $api_key; ///< Llave para la API de Google Maps 33 | 34 | /** 35 | * Constructor del objeto de mapas para Google. 36 | */ 37 | public function __construct($api_key = null) 38 | { 39 | $this->api_key = $api_key ?? config('services.google.api_key'); 40 | } 41 | 42 | /** 43 | * Entrega las coordenadas geográficas a partir de una dirección 44 | */ 45 | public function getCoordenadas($direccion) 46 | { 47 | $rest = new \sowerphp\core\Network_Http_Rest(); 48 | $response = $rest->get( 49 | 'https://maps.google.com/maps/api/geocode/json?address='.urlencode($direccion).'&key='.$this->api_key 50 | ); 51 | if ($response['status']['code'] != 200 || empty($response['body']['results'][0]['geometry']['location'])) { 52 | return [false, false]; 53 | } 54 | return [$response['body']['results'][0]['geometry']['location']['lat'], $response['body']['results'][0]['geometry']['location']['lng']]; 55 | } 56 | 57 | } 58 | -------------------------------------------------------------------------------- /src/app/Controller/Upload.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app; 25 | 26 | /** 27 | * Clase que implementa los servicios web para subir archivos a la aplicación 28 | */ 29 | class Controller_Upload extends \sowerphp\autoload\Controller 30 | { 31 | 32 | /** 33 | * Servicio web para subir una imagen usando diferentes métodos 34 | */ 35 | public function _api_image_POST($method = 'imgur') 36 | { 37 | if (empty($_FILES['file'])) { 38 | return response()->json( 39 | __('Debe enviar la imagen'), 40 | 400 41 | ); 42 | } 43 | $class = 'Utility_Upload_Image_' . \sowerphp\core\Utility_Inflector::camelize($method); 44 | if (!class_exists($class)) { 45 | return response()->json( 46 | __('No se encontró el método "%(method)s" para subir la imagen', 47 | [ 48 | 'method' => $method 49 | ] 50 | ), 51 | 400 52 | ); 53 | } 54 | $Method = new $class(); 55 | $location = $Method->upload($_FILES['file']); 56 | return response()->json( 57 | ['location' => $location] 58 | ); 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/core/Network/Messenger/Stamp/GearmanJobSubmitted.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\core; 25 | 26 | use Symfony\Component\Messenger\Stamp\StampInterface; 27 | 28 | /** 29 | * Sello de Messenger que indica que un trabajo Gearman ha sido enviado. 30 | * 31 | * Esta clase implementa StampInterface y se utiliza para adjuntar información 32 | * adicional a un mensaje en el contexto de Symfony Messenger. En este caso, 33 | * el sello contiene el identificador del trabajo Gearman enviado. 34 | */ 35 | class Network_Messenger_Stamp_GearmanJobSubmitted implements StampInterface 36 | { 37 | /** 38 | * El identificador del trabajo Gearman. 39 | * 40 | * @var string 41 | */ 42 | protected $jobHandle; 43 | 44 | /** 45 | * Constructor de la clase. 46 | * 47 | * @param string $jobHandle El identificador del trabajo Gearman. 48 | */ 49 | public function __construct(string $jobHandle) 50 | { 51 | $this->jobHandle = $jobHandle; 52 | } 53 | 54 | /** 55 | * Obtiene el identificador del trabajo Gearman. 56 | * 57 | * @return string El identificador del trabajo Gearman. 58 | */ 59 | public function getJobHandle(): string 60 | { 61 | return $this->jobHandle; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/core/Data/Validation/YearMonth.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Illuminate\Contracts\Validation\Rule; 29 | 30 | class Data_Validation_YearMonth implements Rule 31 | { 32 | /** 33 | * Determina si el valor es un periodo válido en formato YYYYMM. 34 | * 35 | * @param string $attribute 36 | * @param mixed $value 37 | * @return bool 38 | */ 39 | public function passes($attribute, $value): bool 40 | { 41 | // Comprobar si el valor tiene exactamente 6 caracteres y es numérico. 42 | if (!$value || strlen($value) != 6 || !is_numeric($value)) { 43 | return false; 44 | } 45 | 46 | // Validar el mes. 47 | $month = (int) substr($value, 4, 2); 48 | if ($month < 1 || $month > 12) { 49 | return false; 50 | } 51 | 52 | // Todo ok. 53 | return true; 54 | } 55 | 56 | /** 57 | * Obtiene el mensaje de error de validación. 58 | * 59 | * @return string 60 | */ 61 | public function message(): string 62 | { 63 | return __( 64 | 'El campo :attribute debe tener el formato AAAAMM. Ejemplo %s para el año y mes actual.', 65 | date('Ym') 66 | ); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/general/Utility/HTML.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\general; 25 | 26 | /** 27 | * Clase para trabajar con temas asociados al HTML 28 | */ 29 | class Utility_HTML 30 | { 31 | 32 | /** 33 | * Entrega los tamaños de columnas para ser usados en un grid 34 | * de bootstrap 35 | * @param items Cantidad total de items a ubicar en lña grilla 36 | * @param max Cantida máxima de elementos en la grilla 37 | */ 38 | public static function getBootstrapCols($items, $max_items = 4, $grid_width = 12) 39 | { 40 | $cols = []; 41 | // llenar filas completas primero 42 | $filas_completas = floor($items/$max_items); 43 | for ($i=0; $i<$filas_completas; $i++) { 44 | for ($j=0; $j<$max_items; $j++) { 45 | $cols[] = $grid_width / $max_items; 46 | } 47 | } 48 | // agregar ultima fila 49 | $items_ultima_fila = $items - $filas_completas * $max_items; 50 | if ($items_ultima_fila) { 51 | $tam_cols_ultima_fila = $grid_width / $items_ultima_fila; 52 | for ($i=0; $i<$items_ultima_fila; $i++) { 53 | $cols[] = $tam_cols_ultima_fila; 54 | } 55 | } 56 | // entregar columnas que se deben usar 57 | return $cols; 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /src/core/Middleware/Throttle.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Closure; 29 | 30 | /** 31 | * Middleware para limitar la tasa de solicitudes. 32 | */ 33 | class Middleware_Throttle implements Interface_Middleware 34 | { 35 | /** 36 | * Maneja una solicitud antes de llegar al controlador. 37 | * 38 | * @param Network_Request $request 39 | * @param Closure $next 40 | * @return Network_Request 41 | */ 42 | public function handleBefore( 43 | Network_Request $request, 44 | Closure $next 45 | ): Network_Request 46 | { 47 | // TODO: implementar. 48 | // Pasar al siguiente middleware. 49 | return $next($request); 50 | } 51 | 52 | /** 53 | * Maneja una solicitud después de que el controlador ha generado una 54 | * respuesta. 55 | * 56 | * @param Network_Request $request 57 | * @param Network_Response $response 58 | * @param Closure $next 59 | * @return Network_Response 60 | */ 61 | public function handleAfter( 62 | Network_Request $request, 63 | Network_Response $response, 64 | Closure $next 65 | ): Network_Response 66 | { 67 | // Pasar al siguiente middleware. 68 | return $next($request, $response); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/app/Module/Dev/Controller/Config.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Dev; 25 | 26 | /** 27 | * Controlador para las acciones relacionadas con la configuración de la 28 | * aplicación 29 | */ 30 | class Controller_Config extends \sowerphp\autoload\Controller 31 | { 32 | 33 | /** 34 | * Servicio web que permite obtener el nombre del layout de la aplicación. 35 | */ 36 | public function _api_layout_GET() 37 | { 38 | return config('app.ui.layout'); 39 | } 40 | 41 | /** 42 | * Servicio web que permite obtener el menú de la aplicación web. 43 | */ 44 | public function _api_nav_app_GET() 45 | { 46 | return response()->json( 47 | config('nav.app'), 48 | 200 49 | ); 50 | } 51 | 52 | /** 53 | * Servicio web que permite obtener el correo que usa la aplicación. 54 | */ 55 | public function _api_email_GET() 56 | { 57 | $default = config('mail.default'); 58 | $mailer = config('mail.mailers.' . $default); 59 | return $mailer['username'] ?? null; 60 | } 61 | 62 | /** 63 | * Servicio web que permite obtener los módulos cargados en la aplicación. 64 | */ 65 | public function _api_modules_GET() 66 | { 67 | return response()->json( 68 | app('module')->getLoadedModules() 69 | ); 70 | } 71 | 72 | } 73 | -------------------------------------------------------------------------------- /src/core/Data/Validation/BooleanAsInteger.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Illuminate\Contracts\Validation\Rule; 29 | 30 | class Data_Validation_BooleanAsInteger implements Rule 31 | { 32 | /** 33 | * Determina si el valor es booleano, que puede ser booleano real o un 34 | * entero que representa un booleano (1 para true y 0 para false). 35 | * 36 | * @param string $attribute 37 | * @param mixed $value 38 | * @return bool 39 | */ 40 | public function passes($attribute, $value): bool 41 | { 42 | // Si es booleano true inmediatamente. 43 | if (is_bool($value)) { 44 | return true; 45 | } 46 | 47 | // Si no es numérico false. 48 | if (!is_numeric($value)) { 49 | return false; 50 | } 51 | 52 | // Si es de tipo numérico debe ser solo 0 o 1. 53 | $value = (int)$value; 54 | if ($value === 0 || $value === 1) { 55 | return true; 56 | } 57 | 58 | // Otros casos no validan. 59 | return false; 60 | } 61 | 62 | /** 63 | * Obtiene el mensaje de error de validación. 64 | * 65 | * @return string 66 | */ 67 | public function message(): string 68 | { 69 | return 'El campo :attribute debe ser un valor booleano (1 o 0).'; 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/App/config.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | return [ 25 | 26 | 'modules.Sistema.Usuarios' => [ 27 | 28 | // Título del módulo. 29 | 'title' => 'Administración de usuarios', 30 | 31 | // Menú para el módulo. 32 | 'nav' => [ 33 | '/usuarios' => [ 34 | 'name' => 'Usuarios', 35 | 'desc' => 'Usuarios del sistema', 36 | 'icon' => 'fa fa-user', 37 | ], 38 | '/grupos' => [ 39 | 'name' => 'Grupos', 40 | 'desc' => 'Grupos del sistema', 41 | 'icon' => 'fa fa-users', 42 | ], 43 | '/usuario_grupos' => [ 44 | 'name' => 'Usuarios y grupos', 45 | 'desc' => 'Pertenencia de usuarios a grupos', 46 | 'icon' => 'fa fa-users', 47 | ], 48 | '/auths' => [ 49 | 'name' => 'Autorización', 50 | 'desc' => 'Autorización y control de acceso sobre recursos', 51 | 'icon' => 'fa fa-lock', 52 | ], 53 | '/grupos/email' => [ 54 | 'name' => 'Enviar email a grupos', 55 | 'desc' => 'Enviar correo electrónico a todos los usuarios de uno o varios grupos', 56 | 'icon' => 'fas fa-paper-plane', 57 | ], 58 | ], 59 | 60 | ], 61 | 62 | ]; 63 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Module/DivisionGeopolitica/Model/Comunas.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\General\DivisionGeopolitica; 25 | 26 | use sowerphp\autoload\Model_Plural; 27 | 28 | /** 29 | * Modelo plural de la tabla "comuna" de la base de datos. 30 | * 31 | * Permite interactuar con varios registros de la tabla. 32 | */ 33 | class Model_Comunas extends Model_Plural 34 | { 35 | /** 36 | * Entrega la lista de comunas agrupadas por regiones. 37 | * 38 | * @return array Arreglo con índice el código de región y una tabla con los 39 | * códigos y glosas de comunas. 40 | */ 41 | public function getListByRegion(): array 42 | { 43 | return $this->getDatabaseConnection()->getTableWithAssociativeIndex(' 44 | SELECT r.codigo AS region, c.codigo AS id, c.comuna AS glosa 45 | FROM region AS r, provincia AS p, comuna AS c 46 | WHERE 47 | c.provincia = p.codigo 48 | AND p.region = r.codigo 49 | ORDER BY r.codigo, c.comuna 50 | '); 51 | } 52 | 53 | /** 54 | * Buscar el código de una comuna a partir de su nombre 55 | */ 56 | public function getComunaByName($nombre) 57 | { 58 | $this->setWhereStatement(['UPPER(comuna) = :comuna'], [':comuna' => mb_strtoupper($nombre)]); 59 | $comunas = $this->getObjects(); 60 | if ($comunas && isset($comunas[0])) { 61 | return $comunas[0]->codigo; 62 | } 63 | return false; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sowerphp/sowerphp-framework", 3 | "description": "Simple and Open Web Ecosystem Reimagined for PHP.", 4 | "type": "library", 5 | "keywords": ["sowerphp", "framework"], 6 | "homepage": "https://www.sowerphp.org", 7 | "license": "AGPL-3.0+", 8 | "authors": [ 9 | { 10 | "name": "SowerPHP", 11 | "homepage": "https://www.sowerphp.org" 12 | } 13 | ], 14 | "support": { 15 | "issues": "https://github.com/sascocl/sowerphp/issues", 16 | "source": "https://github.com/sascocl/sowerphp" 17 | }, 18 | "autoload": { 19 | "classmap": ["src/"] 20 | }, 21 | "autoload-dev": { 22 | "classmap": ["tests/"] 23 | }, 24 | "require": { 25 | "php": "^7.4", 26 | "clue/graph": "~0.9.3", 27 | "embed/embed": "^4.4", 28 | "google/recaptcha": "~1.2.4", 29 | "graphp/graphviz": "~0.2.2", 30 | "illuminate/cache": "^8.83", 31 | "illuminate/config": "^8.83", 32 | "illuminate/container": "^8.83", 33 | "illuminate/database": "^8.83", 34 | "illuminate/encryption": "^8.83", 35 | "illuminate/events": "^8.83", 36 | "illuminate/http": "^8.83", 37 | "illuminate/redis": "^8.83", 38 | "illuminate/routing": "^8.83", 39 | "illuminate/session": "^8.83", 40 | "illuminate/validation": "^8.0", 41 | "league/commonmark": "^2.5", 42 | "league/flysystem": "^2.5", 43 | "libchart/libchart": "~1.5.0", 44 | "monolog/monolog": "^2.9", 45 | "nyholm/psr7": "^1.8", 46 | "php-imap/php-imap": "^4.0", 47 | "phpoffice/phpspreadsheet": "^1.25.2", 48 | "predis/predis": "^2.2", 49 | "robthree/twofactorauth": "^1.8.2", 50 | "symfony/amazon-mailer": "^5.4", 51 | "symfony/amqp-messenger": "^5.4", 52 | "symfony/cache": "^5.4", 53 | "symfony/console": "^5.4", 54 | "symfony/doctrine-messenger": "^5.4", 55 | "symfony/http-client": "^5.4", 56 | "symfony/mailer": "^5.4", 57 | "symfony/mailgun-mailer": "^5.4", 58 | "symfony/messenger": "^5.4", 59 | "symfony/notifier": "^5.4", 60 | "symfony/redis-messenger": "^5.4", 61 | "symfony/postmark-mailer": "^5.4", 62 | "tecnickcom/tcpdf": "^6.7.5", 63 | "twig/twig": "^3.10", 64 | "vlucas/phpdotenv": "^5.6.0" 65 | }, 66 | "require-dev": { 67 | "fakerphp/faker": "^1.23", 68 | "mockery/mockery": "^1.6", 69 | "phpunit/phpunit": "^9.6" 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /src/general/Utility/Spreadsheet/JSON.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\general; 25 | 26 | /** 27 | * Esta clase permite leer y generar archivos json 28 | */ 29 | final class Utility_Spreadsheet_JSON 30 | { 31 | 32 | /** 33 | * @todo Implementar método (debe ser el "inverso" de self::generate()) 34 | */ 35 | public static function read($archivo) { 36 | } 37 | 38 | /** 39 | * Genera un string JSON a partir de una tabla en un arreglo 40 | * bidimensional 41 | */ 42 | public static function generate($data, $id) 43 | { 44 | // limpiar posible contenido envíado antes 45 | ob_clean(); 46 | // cabeceras del archivo 47 | header('Content-type: application/json'); 48 | header('Content-Disposition: attachment; filename='.$id.'.json'); 49 | header('Pragma: no-cache'); 50 | header('Expires: 0'); 51 | // cuerpo del archivo 52 | $datos = []; 53 | $titles = array_shift($data); 54 | foreach ($titles as &$col) { 55 | $col = \sowerphp\core\Utility_String::normalize(trim(strip_tags($col))); 56 | } 57 | foreach ($data as &$row) { 58 | $dato = []; 59 | foreach($row as $key => &$col) { 60 | $dato[$titles[$key]] = rtrim(str_replace('
', ', ', strip_tags($col, '
')), " \t\n\r\0\x0B,"); 61 | } 62 | $datos[] = $dato; 63 | } 64 | echo json_encode($datos, JSON_PRETTY_PRINT); 65 | // liberar memoria y terminar script 66 | unset($titles, $data, $datos, $id); 67 | exit(0); 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /src/app/Model/Datasource/Auth2/Base.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app; 25 | 26 | /** 27 | * Clase base para los sistemas de autenticación secundaria 28 | */ 29 | abstract class Model_Datasource_Auth2_Base 30 | { 31 | 32 | protected $Auth2; ///< Instancia del objeto con la autenticación secundaria 33 | protected $config; ///< Configuración de la autenticación secundaria 34 | protected $need_token = false; ///< Por defecto los métodos no requieren token, se debe indicar en cada clase 35 | 36 | /** 37 | * Entrega el código del método de autenticación secundaria 38 | */ 39 | public function getCode() 40 | { 41 | return \sowerphp\core\Utility_String::normalize($this->getName()); 42 | } 43 | 44 | /** 45 | * Entrega todas las autenticaciones secundarias disponibles en la aplicación 46 | */ 47 | public function getName() 48 | { 49 | return $this->config['name']; 50 | } 51 | 52 | /** 53 | * Método que la URL asociada al servicio secundario o su página con información 54 | */ 55 | public function getUrl() 56 | { 57 | return isset($this->config['url']) ? $this->config['url'] : null; 58 | } 59 | 60 | /** 61 | * Crea el secreto en caso que sea requerido para hacer el pareo 62 | * Por defecto no se usa y se entrega falso 63 | */ 64 | public function createSecret($user = null) 65 | { 66 | return false; 67 | } 68 | 69 | /** 70 | * Indica si el método de autenticación secundaria usa o no un token 71 | */ 72 | public function needToken() 73 | { 74 | return $this->need_token; 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /src/core/Console/Command/User/Create.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para crear un nuevo usuario en el sistema. 34 | * 35 | * Este comando permite crear un nuevo usuario en la base de datos. 36 | * 37 | * ## Ejemplos de uso: 38 | * 39 | * Para ejecutar el comando, usa: 40 | * ``` 41 | * php bin/console user:create 42 | * ``` 43 | * 44 | * @package sowerphp\core 45 | */ 46 | class Console_Command_User_Create extends Command 47 | { 48 | /** 49 | * Nombre del comando. 50 | * 51 | * @var string 52 | */ 53 | protected static $defaultName = 'user:create'; 54 | 55 | /** 56 | * Configuración del comando. 57 | * 58 | * @return void 59 | */ 60 | protected function configure() 61 | { 62 | $this 63 | ->setDescription('Crea un nuevo usuario en el sistema.') 64 | ->setHelp('Este comando permite crear un nuevo usuario en la base de datos.') 65 | ; 66 | } 67 | 68 | /** 69 | * Método principal del comando para ser ejecutado. 70 | * 71 | * @param InputInterface $input 72 | * @param OutputInterface $output): int 73 | */ 74 | protected function execute(InputInterface $input, OutputInterface $output): int 75 | { 76 | // TODO: implementar ejecución. 77 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 78 | return Command::FAILURE; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/core/Console/Command/Cache/Clear.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para limpiar la caché de la aplicación. 34 | * 35 | * Este comando permite eliminar todos los datos almacenados en la caché. 36 | * 37 | * ## Ejemplos de uso: 38 | * 39 | * Para ejecutar el comando, usa: 40 | * ``` 41 | * php bin/console cache:clear 42 | * ``` 43 | * 44 | * @package sowerphp\core 45 | */ 46 | class Console_Command_Cache_Clear extends Command 47 | { 48 | /** 49 | * Nombre del comando. 50 | * 51 | * @var string 52 | */ 53 | protected static $defaultName = 'cache:clear'; 54 | 55 | /** 56 | * Configuración del comando. 57 | * 58 | * @return void 59 | */ 60 | protected function configure() 61 | { 62 | $this 63 | ->setDescription('Limpia la caché de la aplicación.') 64 | ->setHelp('Este comando permite eliminar todos los datos almacenados en la caché.') 65 | ; 66 | } 67 | 68 | /** 69 | * Método principal del comando para ser ejecutado. 70 | * 71 | * @param InputInterface $input 72 | * @param OutputInterface $output): int 73 | */ 74 | protected function execute(InputInterface $input, OutputInterface $output): int 75 | { 76 | // TODO: implementar ejecución. 77 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 78 | return Command::FAILURE; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/core/Console/Command/Database/Seed.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para ejecutar los seeders de la base de datos. 34 | * 35 | * Este comando permite poblar las tablas con datos iniciales. 36 | * 37 | * ## Ejemplos de uso: 38 | * 39 | * Para ejecutar el comando, usa: 40 | * ``` 41 | * php bin/console database:seed 42 | * ``` 43 | * 44 | * @package sowerphp\core 45 | */ 46 | class Console_Command_Database_Seed extends Command 47 | { 48 | /** 49 | * Nombre del comando. 50 | * 51 | * @var string 52 | */ 53 | protected static $defaultName = 'database:seed'; 54 | 55 | /** 56 | * Configuración del comando. 57 | * 58 | * @return void 59 | */ 60 | protected function configure() 61 | { 62 | $this 63 | ->setDescription('Ejecuta los seeders de la base de datos.') 64 | ->setHelp('Este comando permite poblar las tablas con datos iniciales.') 65 | ; 66 | } 67 | 68 | /** 69 | * Método principal del comando para ser ejecutado. 70 | * 71 | * @param InputInterface $input 72 | * @param OutputInterface $output): int 73 | */ 74 | protected function execute(InputInterface $input, OutputInterface $output): int 75 | { 76 | // TODO: implementar ejecución. 77 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 78 | return Command::FAILURE; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/core/Console/Command/Jobs/Running.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para mostrar los trabajos en ejecución. 34 | * 35 | * Este comando permite ver los trabajos que están en ejecución actualmente. 36 | * 37 | * ## Ejemplos de uso: 38 | * 39 | * Para ejecutar el comando, usa: 40 | * ``` 41 | * php bin/console jobs:running 42 | * ``` 43 | * 44 | * @package sowerphp\core 45 | */ 46 | class Console_Command_Jobs_Running extends Command 47 | { 48 | /** 49 | * Nombre del comando. 50 | * 51 | * @var string 52 | */ 53 | protected static $defaultName = 'jobs:running'; 54 | 55 | /** 56 | * Configuración del comando. 57 | * 58 | * @return void 59 | */ 60 | protected function configure() 61 | { 62 | $this 63 | ->setDescription('Muestra los trabajos en ejecución.') 64 | ->setHelp('Este comando permite ver los trabajos que están en ejecución actualmente.') 65 | ; 66 | } 67 | 68 | /** 69 | * Método principal del comando para ser ejecutado. 70 | * 71 | * @param InputInterface $input 72 | * @param OutputInterface $output): int 73 | */ 74 | protected function execute(InputInterface $input, OutputInterface $output): int 75 | { 76 | // TODO: implementar ejecución. 77 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 78 | return Command::FAILURE; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/core/Console/Command/Log/Rotate.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para rotar los archivos de log. 34 | * 35 | * Este comando permite archivar los logs antiguos y comenzar nuevos archivos 36 | * de log. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console log:rotate 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Log_Rotate extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'log:rotate'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Rota los archivos de log.') 65 | ->setHelp('Este comando permite archivar los logs antiguos y comenzar nuevos archivos de log.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/core/Console/Command/Session/Clear.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para limpiar las sesiones almacenadas. 34 | * 35 | * Este comando permite eliminar todas las sesiones almacenadas en el sistema. 36 | * 37 | * ## Ejemplos de uso: 38 | * 39 | * Para ejecutar el comando, usa: 40 | * ``` 41 | * php bin/console session:clear 42 | * ``` 43 | * 44 | * @package sowerphp\core 45 | */ 46 | class Console_Command_Session_Clear extends Command 47 | { 48 | /** 49 | * Nombre del comando. 50 | * 51 | * @var string 52 | */ 53 | protected static $defaultName = 'session:clear'; 54 | 55 | /** 56 | * Configuración del comando. 57 | * 58 | * @return void 59 | */ 60 | protected function configure() 61 | { 62 | $this 63 | ->setDescription('Limpia las sesiones almacenadas.') 64 | ->setHelp('Este comando permite eliminar todas las sesiones almacenadas en el sistema.') 65 | ; 66 | } 67 | 68 | /** 69 | * Método principal del comando para ser ejecutado. 70 | * 71 | * @param InputInterface $input 72 | * @param OutputInterface $output): int 73 | */ 74 | protected function execute(InputInterface $input, OutputInterface $output): int 75 | { 76 | // TODO: implementar ejecución. 77 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 78 | return Command::FAILURE; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/app/Model/Datasource/Auth2.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app; 25 | 26 | /** 27 | * Modelo general para trabajar con autenticación secundaria 28 | */ 29 | class Model_Datasource_Auth2 extends Model_Datasource_Auth2_Base 30 | { 31 | 32 | /** 33 | * Método que permite obtener un objeto de autenticación secundaria 34 | * @param name Nombre del método de autenticación secundaria 35 | * @param config Arreglo con la configuración 36 | */ 37 | public static function get($name = '2FA', array $config = []) 38 | { 39 | $class = '\sowerphp\autoload\Model_Datasource_Auth2_'.$name; 40 | if (!class_exists($class)) { 41 | throw new \Exception('Autenticación secundaria usando '.$name.' no está disponible.'); 42 | } 43 | if (!$config) { 44 | $config = config('services.2fa.' . $name); 45 | } 46 | return new $class($config); 47 | } 48 | 49 | /** 50 | * Entrega todas las autenticaciones secundarias disponibles en la aplicación 51 | */ 52 | public static function getAll() 53 | { 54 | $auths2 = []; 55 | $auth2 = (array)config('services.2fa'); 56 | foreach ($auth2 as $name => $config) { 57 | $auths2[] = self::get($name, $config); 58 | } 59 | return $auths2; 60 | } 61 | 62 | /** 63 | * Indica si hay alguna auth2 que use token 64 | */ 65 | public static function tokenEnabled() 66 | { 67 | $auths2 = self::getAll(); 68 | foreach ($auths2 as $Auth2) { 69 | if ($Auth2->needToken()) { 70 | return true; 71 | } 72 | } 73 | return false; 74 | } 75 | 76 | } 77 | -------------------------------------------------------------------------------- /src/core/Console/Command/Lint/Twig.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para realizar linting de plantillas Twig. 34 | * 35 | * Este comando permite verificar que las plantillas Twig no tengan errores de 36 | * sintaxis. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console lint:twig 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Lint_Twig extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'lint:twig'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Realiza linting de plantillas Twig.') 65 | ->setHelp('Este comando permite verificar que las plantillas Twig no tengan errores de sintaxis.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/core/Console/Command/Log/Clear.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para limpiar los archivos de logs antiguos. 34 | * 35 | * Este comando permite eliminar los archivos de logs antiguos para liberar 36 | * espacio. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console log:clear 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Log_Clear extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'log:clear'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Limpia los archivos de logs antiguos.') 65 | ->setHelp('Este comando permite eliminar los archivos de logs antiguos para liberar espacio.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/core/Console/Command/Migrations/Make.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para crear una nueva migración de base de datos. 34 | * 35 | * Este comando permite crear una nueva migración para la base de datos. 36 | * 37 | * ## Ejemplos de uso: 38 | * 39 | * Para ejecutar el comando, usa: 40 | * ``` 41 | * php bin/console migrations:make 42 | * ``` 43 | * 44 | * @package sowerphp\core 45 | */ 46 | class Console_Command_Migrations_Make extends Command 47 | { 48 | /** 49 | * Nombre del comando. 50 | * 51 | * @var string 52 | */ 53 | protected static $defaultName = 'migrations:make'; 54 | 55 | /** 56 | * Configuración del comando. 57 | * 58 | * @return void 59 | */ 60 | protected function configure() 61 | { 62 | $this 63 | ->setDescription('Crea una nueva migración de base de datos.') 64 | ->setHelp('Este comando permite crear una nueva migración para la base de datos.') 65 | ; 66 | } 67 | 68 | /** 69 | * Método principal del comando para ser ejecutado. 70 | * 71 | * @param InputInterface $input 72 | * @param OutputInterface $output): int 73 | */ 74 | protected function execute(InputInterface $input, OutputInterface $output): int 75 | { 76 | // TODO: implementar ejecución. 77 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 78 | return Command::FAILURE; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/core/Console/Command/Router/List.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para listar todas las rutas registradas en la aplicación. 34 | * 35 | * Este comando permite ver todas las rutas definidas en la aplicación. 36 | * 37 | * ## Ejemplos de uso: 38 | * 39 | * Para ejecutar el comando, usa: 40 | * ``` 41 | * php bin/console router:list 42 | * ``` 43 | * 44 | * @package sowerphp\core 45 | */ 46 | class Console_Command_Router_List extends Command 47 | { 48 | /** 49 | * Nombre del comando. 50 | * 51 | * @var string 52 | */ 53 | protected static $defaultName = 'router:list'; 54 | 55 | /** 56 | * Configuración del comando. 57 | * 58 | * @return void 59 | */ 60 | protected function configure() 61 | { 62 | $this 63 | ->setDescription('Lista todas las rutas registradas en la aplicación.') 64 | ->setHelp('Este comando permite ver todas las rutas definidas en la aplicación.') 65 | ; 66 | } 67 | 68 | /** 69 | * Método principal del comando para ser ejecutado. 70 | * 71 | * @param InputInterface $input 72 | * @param OutputInterface $output): int 73 | */ 74 | protected function execute(InputInterface $input, OutputInterface $output): int 75 | { 76 | // TODO: implementar ejecución. 77 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 78 | return Command::FAILURE; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/core/Console/Command/Translation/List.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para listar las traducciones disponibles en la aplicación. 34 | * 35 | * Este comando permite ver todas las traducciones disponibles. 36 | * 37 | * ## Ejemplos de uso: 38 | * 39 | * Para ejecutar el comando, usa: 40 | * ``` 41 | * php bin/console translation:list 42 | * ``` 43 | * 44 | * @package sowerphp\core 45 | */ 46 | class Console_Command_Translation_List extends Command 47 | { 48 | /** 49 | * Nombre del comando. 50 | * 51 | * @var string 52 | */ 53 | protected static $defaultName = 'translation:list'; 54 | 55 | /** 56 | * Configuración del comando. 57 | * 58 | * @return void 59 | */ 60 | protected function configure() 61 | { 62 | $this 63 | ->setDescription('Lista las traducciones disponibles en la aplicación.') 64 | ->setHelp('Este comando permite ver todas las traducciones disponibles.') 65 | ; 66 | } 67 | 68 | /** 69 | * Método principal del comando para ser ejecutado. 70 | * 71 | * @param InputInterface $input 72 | * @param OutputInterface $output): int 73 | */ 74 | protected function execute(InputInterface $input, OutputInterface $output): int 75 | { 76 | // TODO: implementar ejecución. 77 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 78 | return Command::FAILURE; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/core/Console/Command/Jobs/Scheduled.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para listar los trabajos programados. 34 | * 35 | * Este comando permite ver los trabajos que están programados para ejecutarse 36 | * en el futuro. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console jobs:scheduled 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Jobs_Scheduled extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'jobs:scheduled'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Lista los trabajos programados.') 65 | ->setHelp('Este comando permite ver los trabajos que están programados para ejecutarse en el futuro.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/core/Console/Command/App/Run.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para iniciar la aplicación. 34 | * 35 | * Este comando permite inicializar y ejecutar la aplicación, configurando los 36 | * componentes necesarios y asegurando que todo esté listo para el 37 | * funcionamiento. 38 | * 39 | * ## Ejemplos de uso: 40 | * 41 | * Para ejecutar el comando, usa: 42 | * ``` 43 | * php bin/console app:run 44 | * ``` 45 | * 46 | * @package sowerphp\core 47 | */ 48 | class Console_Command_App_Run extends Command 49 | { 50 | /** 51 | * Nombre del comando. 52 | * 53 | * @var string 54 | */ 55 | protected static $defaultName = 'app:run'; 56 | 57 | /** 58 | * Configuración del comando. 59 | * 60 | * @return void 61 | */ 62 | protected function configure() 63 | { 64 | $this 65 | ->setDescription('Inicia la aplicación.') 66 | ->setHelp('Este comando permite inicializar y ejecutar la aplicación.') 67 | ; 68 | } 69 | 70 | /** 71 | * Método principal del comando para ser ejecutado. 72 | * 73 | * @param InputInterface $input 74 | * @param OutputInterface $output 75 | * @return int 76 | */ 77 | protected function execute(InputInterface $input, OutputInterface $output): int 78 | { 79 | // TODO: implementar ejecución. 80 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 81 | return Command::FAILURE; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/core/Console/Command/Cache/Warmup.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para calentar la caché de la aplicación. 34 | * 35 | * Este comando permite precompilar y almacenar en caché ciertos datos para 36 | * mejorar el rendimiento. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console cache:warmup 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Cache_Warmup extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'cache:warmup'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Calienta la caché de la aplicación.') 65 | ->setHelp('Este comando permite precompilar y almacenar en caché ciertos datos para mejorar el rendimiento.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/View/Template/Usuarios/ingresar.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 | Logo 6 |
7 |
8 |
9 | 10 |
11 |
12 |

Ingresar

13 |
14 |
15 | 16 | 17 |
18 |
19 | 20 | 21 |
22 | 23 |
24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
32 |

¿perdió su contraseña?

33 |
34 |
35 | 36 |

¿no tiene cuenta? ¡regístrese!

37 | 38 |
39 |
40 | 41 |
42 | -------------------------------------------------------------------------------- /src/core/Console/Command/Backup/Run.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para ejecutar un respaldo de la base de datos y/o archivos 34 | * importantes. 35 | * 36 | * Este comando permite realizar un respaldo de los datos críticos de la 37 | * aplicación. 38 | * 39 | * ## Ejemplos de uso: 40 | * 41 | * Para ejecutar el comando, usa: 42 | * ``` 43 | * php bin/console backup:run 44 | * ``` 45 | * 46 | * @package sowerphp\core 47 | */ 48 | class Console_Command_Backup_Run extends Command 49 | { 50 | /** 51 | * Nombre del comando. 52 | * 53 | * @var string 54 | */ 55 | protected static $defaultName = 'backup:run'; 56 | 57 | /** 58 | * Configuración del comando. 59 | * 60 | * @return void 61 | */ 62 | protected function configure() 63 | { 64 | $this 65 | ->setDescription('Ejecuta un respaldo de la base de datos y/o archivos importantes.') 66 | ->setHelp('Este comando permite realizar un respaldo de los datos críticos de la aplicación.') 67 | ; 68 | } 69 | 70 | /** 71 | * Método principal del comando para ser ejecutado. 72 | * 73 | * @param InputInterface $input 74 | * @param OutputInterface $output): int 75 | */ 76 | protected function execute(InputInterface $input, OutputInterface $output): int 77 | { 78 | // TODO: implementar ejecución. 79 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 80 | return Command::FAILURE; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/core/Console/Command/Migrations/Migrate.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para ejecutar las migraciones de base de datos pendientes. 34 | * 35 | * Este comando permite aplicar todas las migraciones pendientes a la base de 36 | * datos. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console migrations:migrate 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Migrations_Migrate extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'migrations:migrate'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Ejecuta las migraciones de base de datos pendientes.') 65 | ->setHelp('Este comando permite aplicar todas las migraciones pendientes a la base de datos.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/core/Console/Command/Migrations/Rollback.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para revertir las últimas migraciones de base de datos aplicadas. 34 | * 35 | * Este comando permite revertir las migraciones recientes en la base de datos. 36 | * 37 | * ## Ejemplos de uso: 38 | * 39 | * Para ejecutar el comando, usa: 40 | * ``` 41 | * php bin/console migrations:rollback 42 | * ``` 43 | * 44 | * @package sowerphp\core 45 | */ 46 | class Console_Command_Migrations_Rollback extends Command 47 | { 48 | /** 49 | * Nombre del comando. 50 | * 51 | * @var string 52 | */ 53 | protected static $defaultName = 'migrations:rollback'; 54 | 55 | /** 56 | * Configuración del comando. 57 | * 58 | * @return void 59 | */ 60 | protected function configure() 61 | { 62 | $this 63 | ->setDescription('Revierte las últimas migraciones de base de datos aplicadas.') 64 | ->setHelp('Este comando permite revertir las migraciones recientes en la base de datos.') 65 | ; 66 | } 67 | 68 | /** 69 | * Método principal del comando para ser ejecutado. 70 | * 71 | * @param InputInterface $input 72 | * @param OutputInterface $output): int 73 | */ 74 | protected function execute(InputInterface $input, OutputInterface $output): int 75 | { 76 | // TODO: implementar ejecución. 77 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 78 | return Command::FAILURE; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/core/Console/Command/Router/Match.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para probar una URL contra las rutas registradas. 34 | * 35 | * Este comando permite verificar si una URL específica coincide con alguna de 36 | * las rutas definidas. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console router:match /ruta/ejemplo 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Router_Match extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'router:match'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Prueba una URL contra las rutas registradas.') 65 | ->setHelp('Este comando permite verificar si una URL específica coincide con alguna de las rutas definidas.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/core/Console/Command/Assets/Collect.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para recopilar y organizar los archivos estáticos de la aplicación. 34 | * 35 | * Este comando permite recopilar todos los archivos estáticos en una ubicación 36 | * central. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console assets:collect 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Assets_Collect extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'assets:collect'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Recopila y organiza los archivos estáticos de la aplicación.') 65 | ->setHelp('Este comando permite recopilar todos los archivos estáticos en una ubicación central.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/core/Console/Command/Config/Cache.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para crear un archivo de caché para la configuración rápida. 34 | * 35 | * Este comando permite leer la configuración de la aplicación y almacenarla en 36 | * un formato de caché. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console config:cache 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Config_Cache extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'config:cache'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Crea un archivo de caché para la configuración rápida.') 65 | ->setHelp('Este comando permite leer la configuración de la aplicación y almacenarla en un formato de caché.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/core/Console/Command/App/Check.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para verificar el estado general de la aplicación. 34 | * 35 | * Este comando permite realizar una verificación del estado general de la 36 | * aplicación, comprobando configuraciones y dependencias críticas. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console app:check 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_App_Check extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'app:check'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Verifica el estado general de la aplicación.') 65 | ->setHelp('Este comando permite realizar una verificación del estado general de la aplicación.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output 74 | * @return int 75 | */ 76 | protected function execute(InputInterface $input, OutputInterface $output): int 77 | { 78 | // TODO: implementar ejecución. 79 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 80 | return Command::FAILURE; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/core/Console/Command/Translation/Update.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para actualizar los archivos de traducción con mensajes faltantes. 34 | * 35 | * Este comando permite actualizar los archivos de traducción con mensajes que 36 | * faltan. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console translation:update 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Translation_Update extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'translation:update'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Actualiza los archivos de traducción con mensajes faltantes.') 65 | ->setHelp('Este comando permite actualizar los archivos de traducción con mensajes que faltan.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/core/Network/Messenger/Message/Job.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\core; 25 | 26 | /** 27 | * Mensaje para representar un trabajo de consola. 28 | */ 29 | class Network_Messenger_Message_Job 30 | { 31 | /** 32 | * El nombre del comando. 33 | * 34 | * @var string 35 | */ 36 | protected $command; 37 | 38 | /** 39 | * Los argumentos del comando. 40 | * 41 | * @var array 42 | */ 43 | protected $arguments = []; 44 | 45 | /** 46 | * Las opciones del comando. 47 | * 48 | * @var array 49 | */ 50 | protected $options = []; 51 | 52 | /** 53 | * Constructor del mensaje de trabajo. 54 | * 55 | * @param string $command El nombre del comando. 56 | * @param array $arguments Los argumentos del comando. 57 | * @param array $options Las opciones del comando. 58 | */ 59 | public function __construct( 60 | string $command, 61 | array $arguments = [], 62 | array $options = [] 63 | ) { 64 | $this->command = $command; 65 | $this->arguments = $arguments; 66 | $this->options = $options; 67 | } 68 | 69 | /** 70 | * Obtiene el nombre del comando. 71 | * 72 | * @return string 73 | */ 74 | public function getCommand(): string 75 | { 76 | return $this->command; 77 | } 78 | 79 | /** 80 | * Obtiene los argumentos del comando. 81 | * 82 | * @return array 83 | */ 84 | public function getArguments(): array 85 | { 86 | return $this->arguments; 87 | } 88 | 89 | /** 90 | * Obtiene las opciones del comando. 91 | * 92 | * @return array 93 | */ 94 | public function getOptions(): array 95 | { 96 | return $this->options; 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /src/core/Console/Command/Security/Check.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para verificar las vulnerabilidades de seguridad en las dependencias. 34 | * 35 | * Este comando permite verificar si las dependencias del proyecto tienen 36 | * vulnerabilidades conocidas. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console security:check 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_Security_Check extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'security:check'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Verifica las vulnerabilidades de seguridad en las dependencias.') 65 | ->setHelp('Este comando permite verificar si las dependencias del proyecto tienen vulnerabilidades conocidas.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output): int 74 | */ 75 | protected function execute(InputInterface $input, OutputInterface $output): int 76 | { 77 | // TODO: implementar ejecución. 78 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 79 | return Command::FAILURE; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Module/DivisionGeopolitica/Model/Region.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\General\DivisionGeopolitica; 25 | 26 | use sowerphp\autoload\Model; 27 | 28 | /** 29 | * Modelo singular de la tabla "region" de la base de datos. 30 | * 31 | * Permite interactuar con un registro de la tabla. 32 | */ 33 | class Model_Region extends Model 34 | { 35 | 36 | /** 37 | * Metadatos del modelo. 38 | * 39 | * @var array 40 | */ 41 | protected $metadata = [ 42 | 'model' => [ 43 | 'ordering' => ['orden'], 44 | 'default_permissions' => ['list', 'view'], 45 | ], 46 | 'fields' => [ 47 | 'codigo' => [ 48 | 'type' => self::TYPE_STRING, 49 | 'primary_key' => true, 50 | 'length' => 2, 51 | 'verbose_name' => 'Código', 52 | 'help_text' => 'Código asignado por el gobierno de Chile a la región.', 53 | ], 54 | 'region' => [ 55 | 'type' => self::TYPE_STRING, 56 | 'max_length' => 60, 57 | 'verbose_name' => 'Región', 58 | 'help_text' => 'Nombre de la región.', 59 | ], 60 | 'orden' => [ 61 | 'type' => self::TYPE_SMALL_INTEGER, 62 | 'verbose_name' => 'Orden', 63 | 'help_text' => 'Orden en el que se deben listar las regiones.', 64 | ], 65 | ], 66 | 'relations' => [ 67 | 'provincias' => [ 68 | 'relation' => Model_Provincia::class, 69 | 'has_many' => 'provincia', 70 | 'related_field' => [ 71 | 'codigo' => 'region', 72 | ], 73 | 74 | ], 75 | ] 76 | ]; 77 | 78 | } 79 | -------------------------------------------------------------------------------- /src/app/View/Helper/Maintainer.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app; 25 | 26 | /** 27 | * Clase para generar los mantenedores 28 | */ 29 | class View_Helper_Maintainer extends View_Helper_Paginator 30 | { 31 | 32 | /** 33 | * Generará el mantenedor y listará los registros disponibles 34 | * @param data Registros que se deben renderizar 35 | * @param pages Cantidad total de páginas que tienen los registros 36 | * @param page Página que se está revisando o 0 para no usar el paginador 37 | * @param create =true se agrega icono para crear registro 38 | */ 39 | public function listar($data, $pages = 1, $page = 1, $create = true) 40 | { 41 | $buffer = $this->form->begin(array('onsubmit'=>'buscar(this)'))."\n"; 42 | if ($create) { 43 | $buffer .= '
'."\n"; 44 | } 45 | $this->options['link'] .= '/listar'; 46 | if ($page) { 47 | $buffer .= $this->paginator ($pages, $page)."\n"; 48 | } 49 | $buffer .= \sowerphp\general\View_Helper_Table::generate ($data, $this->options['thead']); 50 | $buffer .= $this->form->end(false)."\n"; 51 | $buffer .= '
'."\n"; 52 | if ($page) { 53 | $buffer .= 'Mostrar todos los registros (sin paginar)'."\n"; 54 | } else { 55 | $buffer .= 'Paginar registros'."\n"; 56 | } 57 | $buffer .= '
'."\n"; 58 | return $buffer; 59 | } 60 | 61 | } 62 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/Model/Auth.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\Usuarios; 25 | 26 | use sowerphp\autoload\Model; 27 | use sowerphp\app\Sistema\Usuarios\Model_Grupo; 28 | 29 | /** 30 | * Modelo singular de la tabla "auth" de la base de datos. 31 | * 32 | * Permite interactuar con un registro de la tabla. 33 | */ 34 | class Model_Auth extends Model 35 | { 36 | /** 37 | * Metadatos del modelo. 38 | * 39 | * @var array 40 | */ 41 | protected $metadata = [ 42 | 'model' => [ 43 | 'verbose_name' => 'Permiso de grupo', 44 | 'verbose_name_plural' => 'Permisos de grupos', 45 | 'db_table_comment' => 'Permisos de grupos para acceder a recursos.', 46 | 'ordering' => ['grupo', 'recurso'], 47 | 'list_group_by' => 'grupo.grupo', 48 | ], 49 | 'fields' => [ 50 | 'id' => [ 51 | 'type' => self::TYPE_INCREMENTS, 52 | 'verbose_name' => 'ID', 53 | 'help_text' => 'Identificador (serial).', 54 | 'show_in_list' => false, 55 | ], 56 | 'grupo' => [ 57 | 'type' => self::TYPE_INTEGER, 58 | 'relation' => Model_Grupo::class, 59 | 'belongs_to' => 'grupo', 60 | 'related_field' => 'id', 61 | 'verbose_name' => 'Grupo', 62 | 'help_text' => 'Grupo al que se le concede el permiso.', 63 | 'display' => '(grupo.grupo)', 64 | ], 65 | 'recurso' => [ 66 | 'type' => self::TYPE_STRING, 67 | 'max_length' => 300, 68 | 'verbose_name' => 'Recurso', 69 | 'help_text' => 'Recurso al que el grupo tiene acceso.', 70 | ], 71 | ], 72 | ]; 73 | 74 | } 75 | -------------------------------------------------------------------------------- /src/core/Console/Command/App/Setup.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para inicializar la aplicación después de la instalación. 34 | * 35 | * Este comando permite crear la estructura de directorios necesaria, 36 | * establecer permisos y realizar cualquier otra configuración inicial. 37 | * 38 | * ## Ejemplos de uso: 39 | * 40 | * Para ejecutar el comando, usa: 41 | * ``` 42 | * php bin/console app:setup 43 | * ``` 44 | * 45 | * @package sowerphp\core 46 | */ 47 | class Console_Command_App_Setup extends Command 48 | { 49 | /** 50 | * Nombre del comando. 51 | * 52 | * @var string 53 | */ 54 | protected static $defaultName = 'app:setup'; 55 | 56 | /** 57 | * Configuración del comando. 58 | * 59 | * @return void 60 | */ 61 | protected function configure() 62 | { 63 | $this 64 | ->setDescription('Inicializa la aplicación después de la instalación.') 65 | ->setHelp('Este comando permite crear la estructura de directorios necesaria, establecer permisos y realizar cualquier otra configuración inicial.') 66 | ; 67 | } 68 | 69 | /** 70 | * Método principal del comando para ser ejecutado. 71 | * 72 | * @param InputInterface $input 73 | * @param OutputInterface $output 74 | * @return int 75 | */ 76 | protected function execute(InputInterface $input, OutputInterface $output): int 77 | { 78 | // TODO: implementar ejecución. 79 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 80 | return Command::FAILURE; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /src/core/Console/Command/App/Deploy.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Symfony\Component\Console\Command\Command; 29 | use Symfony\Component\Console\Input\InputInterface; 30 | use Symfony\Component\Console\Output\OutputInterface; 31 | 32 | /** 33 | * Comando para ejecutar tareas de despliegue de la aplicación. 34 | * 35 | * Este comando permite realizar las tareas necesarias para desplegar una nueva 36 | * versión de la aplicación, como actualización de dependencias, ejecución de 37 | * migraciones y limpieza de caché. 38 | * 39 | * ## Ejemplos de uso: 40 | * 41 | * Para ejecutar el comando, usa: 42 | * ``` 43 | * php bin/console app:deploy 44 | * ``` 45 | * 46 | * @package sowerphp\core 47 | */ 48 | class Console_Command_App_Deploy extends Command 49 | { 50 | /** 51 | * Nombre del comando. 52 | * 53 | * @var string 54 | */ 55 | protected static $defaultName = 'app:deploy'; 56 | 57 | /** 58 | * Configuración del comando. 59 | * 60 | * @return void 61 | */ 62 | protected function configure() 63 | { 64 | $this 65 | ->setDescription('Ejecuta tareas de despliegue de la aplicación.') 66 | ->setHelp('Este comando permite ejecutar las tareas necesarias para desplegar una nueva versión de la aplicación.') 67 | ; 68 | } 69 | 70 | /** 71 | * Método principal del comando para ser ejecutado. 72 | * 73 | * @param InputInterface $input 74 | * @param OutputInterface $output 75 | * @return int 76 | */ 77 | protected function execute(InputInterface $input, OutputInterface $output): int 78 | { 79 | // TODO: implementar ejecución. 80 | $output->writeln(__('Comando %s no está implementado.', static::$defaultName)); 81 | return Command::FAILURE; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/general/Utility/Spreadsheet/XML.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\general; 25 | 26 | /** 27 | * Esta clase permite leer y generar archivos xml 28 | */ 29 | class Utility_Spreadsheet_XML 30 | { 31 | 32 | /** 33 | * Clase que lee un archivo XML 34 | * @todo Implementar método 35 | */ 36 | public static function read($archivo) 37 | { 38 | } 39 | 40 | /** 41 | * Función para generar un archivo XML a partir de una "tabla" 42 | */ 43 | public static function generate($data, $id) 44 | { 45 | // limpiar posible contenido envíado antes 46 | ob_clean(); 47 | // cabeceras del archivo 48 | header('Content-type: application/xml'); 49 | header('Content-Disposition: attachment; filename='.$id.'.xml'); 50 | header('Pragma: no-cache'); 51 | header('Expires: 0'); 52 | // cuerpo del archivo 53 | $root = \sowerphp\core\Utility_String::normalize(\sowerphp\core\Utility_Inflector::underscore($id)); 54 | $item = \sowerphp\core\Utility_Inflector::singularize($root); 55 | echo '',"\n"; 56 | echo '<',$root,'>',"\n"; 57 | $titles = array_shift($data); 58 | foreach ($titles as &$col) { 59 | $col = \sowerphp\core\Utility_String::normalize(trim(strip_tags($col))); 60 | } 61 | foreach($data as &$row) { 62 | echo "\t",'<',$item,'>',"\n"; 63 | foreach($row as $key => &$col) { 64 | $key = $titles[$key]; 65 | echo "\t\t",'<',$key,'>',rtrim(str_replace('
', ', ', strip_tags($col, '
')), " \t\n\r\0\x0B,"),'',"\n"; 66 | } 67 | echo "\t",'',"\n"; 68 | } 69 | echo '',"\n"; 70 | // terminar script 71 | exit(0); 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Module/DivisionGeopolitica/Model/Comuna.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\General\DivisionGeopolitica; 25 | 26 | use sowerphp\autoload\Model; 27 | 28 | /** 29 | * Modelo singular de la tabla "comuna" de la base de datos. 30 | * 31 | * Permite interactuar con un registro de la tabla. 32 | */ 33 | class Model_Comuna extends Model 34 | { 35 | 36 | /** 37 | * Metadatos del modelo. 38 | * 39 | * @var array 40 | */ 41 | protected $metadata = [ 42 | 'model' => [ 43 | 'ordering' => ['codigo'], 44 | 'default_permissions' => ['list', 'view'], 45 | 'list_group_by' => 'provincia.region.region', 46 | ], 47 | 'fields' => [ 48 | 'codigo' => [ 49 | 'type' => self::TYPE_CHAR, 50 | 'primary_key' => true, 51 | 'length' => 5, 52 | 'verbose_name' => 'Código', 53 | 'help_text' => 'Código asignado por el gobierno de Chile a la comuna.', 54 | ], 55 | 'comuna' => [ 56 | 'type' => self::TYPE_STRING, 57 | 'max_length' => 40, 58 | 'verbose_name' => 'Comuna', 59 | 'help_text' => 'Nombre de la comuna.', 60 | ], 61 | 'provincia' => [ 62 | 'type' => self::TYPE_CHAR, 63 | 'relation' => Model_Provincia::class, 64 | 'belongs_to' => 'provincia', 65 | 'related_field' => 'codigo', 66 | 'length' => 3, 67 | 'verbose_name' => 'Provincia', 68 | 'help_text' => 'Provincia a la que pertenece la comuna.', 69 | 'display' => '(provincia.provincia)', 70 | 'searchable' => 'codigo:string|provincia:string', 71 | ], 72 | ], 73 | ]; 74 | 75 | } 76 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/App/routes.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | // Instancia del servicio de enrutamiento. 25 | $router = router(); 26 | 27 | // Rutas para iniciar y cerrar sesión. 28 | $router->connect('/usuarios/ingresar', array( 29 | 'module' => 'Sistema.Usuarios', 30 | 'controller' => 'usuarios', 31 | 'action' => 'ingresar', 32 | )); 33 | $router->connect('/usuarios/ingresar/*', array( 34 | 'module' => 'Sistema.Usuarios', 35 | 'controller' => 'usuarios', 36 | 'action' => 'ingresar', 37 | )); 38 | $router->connect('/usuarios/salir', array( 39 | 'module' => 'Sistema.Usuarios', 40 | 'controller' => 'usuarios', 41 | 'action' => 'salir', 42 | )); 43 | 44 | // Rutas del perfil de usuario. 45 | $router->connect('/usuarios/perfil', array( 46 | 'module' => 'Sistema.Usuarios', 47 | 'controller' => 'usuarios', 48 | 'action' => 'perfil', 49 | )); 50 | 51 | // Rutas para la recuperación de contraseña. 52 | $router->connect('/usuarios/contrasenia/recuperar', array( 53 | 'module' => 'Sistema.Usuarios', 54 | 'controller' => 'usuarios', 55 | 'action' => 'contrasenia_recuperar', 56 | )); 57 | $router->connect('/usuarios/contrasenia/recuperar/*', array( 58 | 'module' => 'Sistema.Usuarios', 59 | 'controller' => 'usuarios', 60 | 'action' => 'contrasenia_recuperar', 61 | )); 62 | 63 | // Ruta para registrar una cuenta de usuario. 64 | $router->connect('/usuarios/registrar', array( 65 | 'module' => 'Sistema.Usuarios', 66 | 'controller' => 'usuarios', 67 | 'action' => 'registrar', 68 | )); 69 | 70 | // Rutas para preautenticación. 71 | $router->connect('/usuarios/preauth', array( 72 | 'module' => 'Sistema.Usuarios', 73 | 'controller' => 'usuarios', 74 | 'action' => 'preauth', 75 | )); 76 | $router->connect('/usuarios/preauth/*', array( 77 | 'module' => 'Sistema.Usuarios', 78 | 'controller' => 'usuarios', 79 | 'action' => 'preauth', 80 | )); 81 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/View/Template/Usuarios/crear_editar.php: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 11 | begin(array('onsubmit'=>'Form.check()')); 15 | 16 | // atributos del usuario 17 | echo $form->input([ 18 | 'name' => 'nombre', 19 | 'label' => $columns['nombre']['name'], 20 | 'value' => isset($Obj) ? $Obj->nombre : '', 21 | 'help' => $columns['nombre']['comment'], 22 | 'check' => (!$columns['nombre']['null']?['notempty']:[]), 23 | 'attr' => 'maxlength="'.$columns['nombre']['length'].'"', 24 | ]); 25 | echo $form->input([ 26 | 'name' => 'usuario', 27 | 'label' => $columns['usuario']['name'], 28 | 'value' => isset($Obj) ? $Obj->usuario : '', 29 | 'help' => $columns['usuario']['comment'], 30 | 'check' => (!$columns['usuario']['null']?['notempty']:[]), 31 | 'attr' => 'maxlength="'.$columns['usuario']['length'].'"', 32 | ]); 33 | echo $form->input([ 34 | 'name' => 'email', 35 | 'label' => $columns['email']['name'], 36 | 'value' => isset($Obj) ? $Obj->email : '', 37 | 'help' => $columns['email']['comment'], 38 | 'check' => 'notempty email', 39 | 'attr' => 'maxlength="'.$columns['email']['length'].'"', 40 | ]); 41 | echo $form->input([ 42 | 'type' => 'password', 43 | 'name' => 'contrasenia', 44 | 'label' => $columns['contrasenia']['name'], 45 | 'help' => $columns['contrasenia']['comment'], 46 | ]); 47 | echo $form->input([ 48 | 'type' => 'select', 49 | 'name' => 'activo', 50 | 'label' => $columns['activo']['name'], 51 | 'options' => [ 52 | '' => 'Seleccione una opción', 53 | '1' => 'Si', 54 | '0' => 'No' 55 | ], 56 | 'value' => isset($Obj) ? $Obj->activo : '', 57 | 'help' => $columns['activo']['comment'], 58 | 'check' => (!$columns['activo']['null']?['notempty']:[]), 59 | ]); 60 | 61 | // agregar campo para los grupos a los que pertenece el usuario 62 | echo $form->input([ 63 | 'type'=>'tablecheck', 64 | 'name'=>'grupos', 65 | 'label'=>'Grupos', 66 | 'titles'=>['GID', 'Grupo'], 67 | 'table'=>$grupos, 68 | 'checked'=>$grupos_asignados, 69 | ]); 70 | 71 | // terminar formulario 72 | echo $form->end('Guardar'); 73 | ?> 74 |
* campo es obligatorio
75 | 78 | -------------------------------------------------------------------------------- /src/core/Middleware/Auth.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Closure; 29 | 30 | /** 31 | * Middleware para autenticación. 32 | */ 33 | class Middleware_Auth implements Interface_Middleware 34 | { 35 | /** 36 | * Maneja una solicitud antes de llegar al controlador. 37 | * 38 | * @param Network_Request $request 39 | * @param Closure $next 40 | * @return Network_Request 41 | */ 42 | public function handleBefore( 43 | Network_Request $request, 44 | Closure $next 45 | ): Network_Request 46 | { 47 | // TODO: se debe refactorizar cómo se hace actualmente. 48 | // El problema, es que se definen unos permisos previos para acceder 49 | // sin autenticación o solo estando logueado en los métodos boot() de 50 | // los controladores, que se ejecutan después que los métodos 51 | // handleBefore() de los middlewares (o sea este). Y esa definición de 52 | // permisos se requiere acá (si se mueve la lógica) para poder validar 53 | // el acceso con esos 2 métodos (sin login o solo con login) antes de 54 | // pasar a corroborar la autorización específica con el usuario (que si 55 | // se podría hacer "fácil" acá). 56 | // Pasar al siguiente middleware. 57 | return $next($request); 58 | } 59 | 60 | /** 61 | * Maneja una solicitud después de que el controlador ha generado una 62 | * respuesta. 63 | * 64 | * @param Network_Request $request 65 | * @param Network_Response $response 66 | * @param Closure $next 67 | * @return Network_Response 68 | */ 69 | public function handleAfter( 70 | Network_Request $request, 71 | Network_Response $response, 72 | Closure $next 73 | ): Network_Response 74 | { 75 | // Pasar al siguiente middleware. 76 | return $next($request, $response); 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /src/app/View/Helper/Dashboard.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app; 25 | 26 | /** 27 | * Helper para la generación de los dashboards. 28 | */ 29 | class View_Helper_Dashboard 30 | { 31 | 32 | /** 33 | * Genera las tarjetas para el dashboard 34 | */ 35 | public static function cards(array $cards, $config = null) 36 | { 37 | if (!$config) { 38 | $config = []; 39 | } 40 | else if (is_string($config)) { 41 | $config = ['template' => $config]; 42 | } 43 | $config = array_merge([ 44 | 'template' => 'default', 45 | 'link-display' => 'none', 46 | ], $config); 47 | $html = file_get_contents(__DIR__.'/Dashboard/cards_'.$config['template'].'.html'); 48 | unset($config['template']); 49 | $vars = []; 50 | $n_cards = count($cards); 51 | foreach($cards[0] as $key => $val) { 52 | for ($i=1; $i<=$n_cards; $i++) { 53 | $vars[] = '{card_'.$i.'_'.$key.'}'; 54 | if ($key == 'link') { 55 | $config['link-display'] = 'block'; 56 | } 57 | } 58 | } 59 | $i = 1; 60 | $vals = []; 61 | foreach ($cards as $card) { 62 | foreach($card as $key => $val) { 63 | if ($key == 'quantity') { 64 | if (!$val) { 65 | $val = 0; 66 | } 67 | if (is_numeric($val)) { 68 | $val = num($val); 69 | } 70 | } 71 | $vals['{card_'.$i.'_'.$key.'}'] = $val; 72 | } 73 | $i++; 74 | } 75 | sort($vars); 76 | ksort($vals); 77 | foreach($config as $key => $val) { 78 | $vars[] = '{'.$key.'}'; 79 | $vals[] = $val; 80 | } 81 | return str_replace($vars, $vals, $html); 82 | } 83 | 84 | } 85 | -------------------------------------------------------------------------------- /src/app/Model/Datasource.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app; 25 | 26 | /** 27 | * Clase base para las fuentes de datos, permite obtener la configuración de las 28 | * mismas y mantener un caché con los objetos que representan las conexiones a 29 | * las fuentes de datos. 30 | */ 31 | abstract class Model_Datasource 32 | { 33 | 34 | protected static $datasources; ///< Objetos con caché para fuentes de datos 35 | 36 | /** 37 | * Método que permite obtener la fuente de datos si está en caché o bien la 38 | * configuración si no está en caché para que pueda ser creada 39 | * @param datasource Identificador de la fuente de datos (ej: database) 40 | * @param name Nombre de la configuración o arreglo con la configuración 41 | * @param config Arreglo con la configuración 42 | */ 43 | public static function getDatasource($datasource, $name = 'default', $config = []) 44 | { 45 | // si el objeto solicitado está en caché se entrega 46 | if (is_string($name) && isset(self::$datasources[$datasource][$name])) { 47 | return self::$datasources[$datasource][$name]; 48 | } 49 | // si $name es un arreglo entonces es la configuración lo que se pasó 50 | if (is_array($name)) { 51 | $config = $name; 52 | $name = 'default'; 53 | } 54 | // se crea configuración 55 | $config = array_merge((array)config($datasource.'.'.$name), $config); 56 | if (empty($config)) { 57 | throw new \Exception(__( 58 | 'No se encontró configuración del origen de datos %s.%s', 59 | $datasource, 60 | $name 61 | )); 62 | } 63 | // si no está el nombre de la configuración se asigna 64 | if (!isset($config['conf'])) { 65 | $config['conf'] = is_string($name) ? $name : 'default'; 66 | } 67 | // entregar configuración 68 | return $config; 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /src/core/Middleware/Csrf.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | use Closure; 29 | 30 | /** 31 | * Middleware para validar el Token CSRF en solicitudes que POST. 32 | */ 33 | class Middleware_Csrf implements Interface_Middleware 34 | { 35 | /** 36 | * Maneja una solicitud antes de llegar al controlador. 37 | * 38 | * @param Network_Request $request 39 | * @param Closure $next 40 | * @return Network_Request 41 | */ 42 | public function handleBefore( 43 | Network_Request $request, 44 | Closure $next 45 | ): Network_Request 46 | { 47 | // Solo validar el Token CSRF en solicitudes POST. 48 | if ($request->method() == 'POST') { 49 | $csfrTokenPost = $request->input('csrf_token'); 50 | if (!$csfrTokenPost) { 51 | /*return redirect()->back()->withError(__( 52 | 'No se ha especificado el Token CSRF.' 53 | ));*/ 54 | } 55 | /*$csfrTokenSession = session('csrf_token'); 56 | if ($csfrTokenPost != $csfrTokenSession) { 57 | return redirect()->back()->withError(__( 58 | 'El Token CSRF es inválido.' 59 | )); 60 | } 61 | dd($csfrTokenPost, $csfrTokenSession);*/ 62 | } 63 | 64 | // Pasar al siguiente middleware. 65 | return $next($request); 66 | } 67 | 68 | /** 69 | * Maneja una solicitud después de que el controlador ha generado una 70 | * respuesta. 71 | * 72 | * @param Network_Request $request 73 | * @param Network_Response $response 74 | * @param Closure $next 75 | * @return Network_Response 76 | */ 77 | public function handleAfter( 78 | Network_Request $request, 79 | Network_Response $response, 80 | Closure $next 81 | ): Network_Response 82 | { 83 | // Pasar al siguiente middleware. 84 | return $next($request, $response); 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /src/core/View/Form/Model.php: -------------------------------------------------------------------------------- 1 | 8 | * 9 | * Este programa es software libre: usted puede redistribuirlo y/o 10 | * modificarlo bajo los términos de la Licencia Pública General Affero 11 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 12 | * versión 3 de la Licencia, o (a su elección) cualquier versión 13 | * posterior de la misma. 14 | * 15 | * Este programa se distribuye con la esperanza de que sea útil, pero 16 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 17 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 18 | * Consulte los detalles de la Licencia Pública General Affero de GNU 19 | * para obtener una información más detallada. 20 | * 21 | * Debería haber recibido una copia de la Licencia Pública General 22 | * Affero de GNU junto a este programa. 23 | * En caso contrario, consulte . 24 | */ 25 | 26 | namespace sowerphp\core; 27 | 28 | /** 29 | * Formulario de un modelo de base de datos. 30 | */ 31 | class View_Form_Model extends View_Form 32 | { 33 | /** 34 | * Entrega los datos que se utilizarán para la construcción de la instancia 35 | * del formulario del modelo a partir de las opciones pasadas al método. 36 | * 37 | * Este método estandariza las opciones del modelo apra que se puedan usar 38 | * en una instancia de formulario. 39 | * 40 | * @param array $options Opciones para construir el formulario. 41 | * @return array 42 | */ 43 | protected static function buildForm(array $options): array 44 | { 45 | // Determinar los campos del formulario, instancias de View_Form_Field. 46 | $fields = []; 47 | foreach ($options['fields'] as $name => $config) { 48 | $field = new View_Form_Field($config); 49 | $fields[$name] = $field; 50 | } 51 | 52 | // Obtener los valores iniciales de los campos (desde cada campo). 53 | $initial = array_filter( 54 | array_map( 55 | function ($field) { 56 | return $field->initial; 57 | }, 58 | $fields 59 | ), 60 | function ($initial) { 61 | return $initial !== null; 62 | } 63 | ); 64 | 65 | // Entregar los datos normalizados que se deben usar para construir el 66 | // formulario del modelo. 67 | return [ 68 | 'data' => $options['form']['data'] ?? [], 69 | 'files' => $options['form']['files'] ?? [], 70 | 'initial' => $initial, 71 | 'attributes' => $options['form']['attributes'] ?? [], 72 | 'fields' => $fields, 73 | 'submit_button' => $options['form']['submit_button'] ?? [], 74 | 'layout' => $options['form']['layout'] 75 | ?? $options['model']['layout'] 76 | ?? null 77 | , 78 | ]; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/Usuarios/View/Template/Usuarios/registrar.php: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 | Logo 6 |
7 |
8 |
9 | 10 |
11 |
12 |

Crear cuenta de usuario

13 |
14 |
15 | 16 | 17 |
18 |
19 | 20 | 21 |
22 |
23 | 24 | 25 |
26 | 27 | 30 | 31 | 32 | 33 |
34 |

35 | 36 | La contraseña para acceder será enviada a su correo 37 | 38 |

39 |
40 |
41 |

Ingresar con una cuenta de usuario existente

42 |
43 |
44 | 45 |
46 | -------------------------------------------------------------------------------- /src/app/Module/Sistema/Module/General/Model/AfdTransicion.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\app\Sistema\General; 25 | 26 | use sowerphp\autoload\Model; 27 | use sowerphp\app\Sistema\General\Model_Afd; 28 | 29 | /** 30 | * Modelo singular de la tabla "afd_transicion" de la base de datos. 31 | * 32 | * Permite interactuar con un registro de la tabla. 33 | */ 34 | class Model_AfdTransicion extends Model 35 | { 36 | 37 | /** 38 | * Metadatos del modelo. 39 | * 40 | * @var array 41 | */ 42 | protected $metadata = [ 43 | 'model' => [ 44 | 'db_table_comment' => 'Transición AFD', 45 | 'ordering' => ['afd'], 46 | ], 47 | 'fields' => [ 48 | 'afd' => [ 49 | 'type' => self::TYPE_STRING, 50 | 'primary_key' => true, 51 | 'relation' => Model_Afd::class, 52 | 'belongs_to' => 'afd_estado', 53 | 'related_field' => 'afd', 54 | 'max_length' => 10, 55 | 'verbose_name' => 'Afd', 56 | 'display' => '(afd_estado.nombre)', 57 | ], 58 | 'desde' => [ 59 | 'type' => self::TYPE_INTEGER, 60 | 'primary_key' => true, 61 | 'relation' => Model_Afd::class, 62 | 'belongs_to' => 'afd_estado', 63 | 'related_field' => 'codigo', 64 | 'verbose_name' => 'Desde', 65 | 'display' => '(afd_estado.codigo)', 66 | ], 67 | 'valor' => [ 68 | 'type' => self::TYPE_STRING, 69 | 'primary_key' => true, 70 | 'max_length' => 5, 71 | 'verbose_name' => 'Valor', 72 | ], 73 | 'hasta' => [ 74 | 'type' => self::TYPE_INTEGER, 75 | 'relation' => Model_Afd::class, 76 | 'belongs_to' => 'afd_estado', 77 | 'related_field' => 'codigo', 78 | 'verbose_name' => 'Hasta', 79 | 'display' => '(afd_estado.codigo)', 80 | ], 81 | ], 82 | ]; 83 | 84 | } 85 | -------------------------------------------------------------------------------- /src/general/View/Form/Contacto.php: -------------------------------------------------------------------------------- 1 | 6 | * 7 | * Este programa es software libre: usted puede redistribuirlo y/o 8 | * modificarlo bajo los términos de la Licencia Pública General Affero 9 | * de GNU publicada por la Fundación para el Software Libre, ya sea la 10 | * versión 3 de la Licencia, o (a su elección) cualquier versión 11 | * posterior de la misma. 12 | * 13 | * Este programa se distribuye con la esperanza de que sea útil, pero 14 | * SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita 15 | * MERCANTIL o de APTITUD PARA UN PROPÓSITO DETERMINADO. 16 | * Consulte los detalles de la Licencia Pública General Affero de GNU 17 | * para obtener una información más detallada. 18 | * 19 | * Debería haber recibido una copia de la Licencia Pública General 20 | * Affero de GNU junto a este programa. 21 | * En caso contrario, consulte . 22 | */ 23 | 24 | namespace sowerphp\general; 25 | 26 | use sowerphp\core\View_Form; 27 | 28 | class View_Form_Contacto extends View_Form 29 | { 30 | 31 | protected static function buildForm(array $options): array 32 | { 33 | return [ 34 | 'data' => $options['data'] ?? [], 35 | 'files' => $options['files'] ?? [], 36 | 'initial' => $options['initial'] ?? [], 37 | 'attributes' => [ 38 | 'id' => 'contactusForm', 39 | 'action' => url('/contacto/send'), 40 | ], 41 | 'fields' => [ 42 | 'name' => [ 43 | 'verbose_name' => __('Nombre'), 44 | 'required' => true, 45 | 'max_length' => 255, 46 | ], 47 | 'email' => [ 48 | 'input_type' => 'email', 49 | 'verbose_name' => __('Correo electrónico'), 50 | 'required' => true, 51 | 'max_length' => 255, 52 | ], 53 | 'message' => [ 54 | 'widget' => [ 55 | 'name' => 'textarea', 56 | 'attributes' => [ 57 | 'rows' => 5, 58 | 'class' => 'form-control summernote', 59 | 'style' => 'height: auto', 60 | ], 61 | ], 62 | 'verbose_name' => __('Mensaje'), 63 | 'required' => true, 64 | 'min_length' => 100, 65 | 'max_length' => 1000, 66 | ], 67 | ], 68 | 'layout' => [ 69 | [ 70 | 'icon' => 'fa-regular fa-comments', 71 | 'footer' => 'Envíanos tu mensaje y te contactaremos lo antes posible.', 72 | 'rows' => [ 73 | ['name', 'email'], 74 | 'message' 75 | ], 76 | ], 77 | ], 78 | ]; 79 | } 80 | 81 | } 82 | --------------------------------------------------------------------------------