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 |
Descargar tablas de la Base de Datos
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 |
6 |
{% block title %}{{ title }}{% endblock %}
7 |
8 |
9 | {% for category in nav %}
10 | {% if category.name %}
11 |
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 |
Ejecutar consulta SQL
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 |
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 |
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 |
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 |
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 |
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.
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 |
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 |
Sistema » Usuarios » Enviar email a grupos
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 |
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 |
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";
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,"),'',$key,'>',"\n";
66 | }
67 | echo "\t",'',$item,'>',"\n";
68 | }
69 | echo '',$root,'>',"\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 |
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 |