diff --git a/docs/administradores/instalacion-y-configuracion/instalacion.md b/docs/administradores/instalacion-y-configuracion/instalacion.md index 5820d69..edfaf61 100644 --- a/docs/administradores/instalacion-y-configuracion/instalacion.md +++ b/docs/administradores/instalacion-y-configuracion/instalacion.md @@ -3,7 +3,7 @@ El servidor donde se va a instalar el aplicativo debe cumplir los siguientes requisitos: * **Sistema operativo:** distro Linux, Mac o Windows (se recomienda Linux, ya que solo está probado con Linux) -* **Servidor:** Apache 2, PHP 8.2 (incluyendo las extensiones `mysql` y `curl`), MySQL. +* **Servidor:** Apache 2, PHP 8.3 (incluyendo las extensiones `mysql`, `curl` y `intl`), MySQL. ## Instalación Para instalar el aplicativo, descarga el código fuente desde [https://github.com/avm99963/hores-external](https://github.com/avm99963/hores-external) y extraelo en el directorio raíz de Apache (`/var/www/html/` es el directorio raíz de Apache por defecto en Ubuntu). diff --git a/src/doexport.php b/src/doexport.php index 5d29327..6326fc9 100644 --- a/src/doexport.php +++ b/src/doexport.php @@ -83,7 +83,7 @@ function Footer() { $this->SetFont('Arial','I',10); $this->SetY(-20); - $this->Cell(0, 10, export::convert("Generado: ".strftime("%d %b %Y %T", $actualTime)), 0, 0, 'L'); + $this->Cell(0, 10, export::convert("Generado: ".date::getShortDateWithTime($actualTime)), 0, 0, 'L'); $this->SetY(-20); $this->Cell(0, 10, $this->PageNo().'/{nb}', 0, 0, 'R'); } diff --git a/src/inc/calendarsView.php b/src/inc/calendarsView.php index 46a3761..03d1486 100644 --- a/src/inc/calendarsView.php +++ b/src/inc/calendarsView.php @@ -33,7 +33,7 @@ public static function renderCalendar($current, $ends, $selectedFunc, $disabled if ($dow == 1) echo ""; if ($dom == 1) echo ""; - if ($dom == 1 || $start) echo "
".security::htmlsafe(ucfirst(strftime("%B %G", $current->getTimestamp())))."
"; + if ($dom == 1 || $start) echo "
".security::htmlsafe(ucfirst(date::getMonthYear($current->getTimestamp())))."
"; if ($dow == 1 || $start) echo ""; if ($dom == 1 || $start) { for ($i = 1; $i < $dow; $i++) { diff --git a/src/inc/date.php b/src/inc/date.php new file mode 100644 index 0000000..ba89c09 --- /dev/null +++ b/src/inc/date.php @@ -0,0 +1,35 @@ +format($timestamp); + } + + public static function getShortDate(IntlCalendar|DateTimeInterface|array|string|int|float $timestamp) { + static $formatter = self::createFormatter("dd MMM yyyy"); + return $formatter->format($timestamp); + } + + public static function getShortDateWithTime(IntlCalendar|DateTimeInterface|array|string|int|float $timestamp) { + static $formatter = self::createFormatter("dd MMM yyyy HH:mm:ss"); + return $formatter->format($timestamp); + } + + public static function getLongDate(IntlCalendar|DateTimeInterface|array|string|int|float $timestamp) { + static $formatter = self::createFormatter("dd 'de' MMMM 'de' yyyy"); + return $formatter->format($timestamp); + } +} diff --git a/src/inc/incidents.php b/src/inc/incidents.php index b558ed9..7bda42d 100644 --- a/src/inc/incidents.php +++ b/src/inc/incidents.php @@ -486,13 +486,13 @@ public static function add($worker, $type, $details, $iday, $begins, $ends, $cre if (!count($to)) return 0; - $subject = "Incidencia del tipo \"".security::htmlsafe($incidenttype["name"])."\" creada para ".security::htmlsafe($workerName)." el ".strftime("%d %b %Y", $sday); + $subject = "Incidencia del tipo \"".security::htmlsafe($incidenttype["name"])."\" creada para ".security::htmlsafe($workerName)." el ".date::getShortDate($sday); $body = mail::bodyTemplate("

Hola,

Este es un mensaje automático para avisarte de que ".security::htmlsafe(people::userData("name"))." ha introducido la siguiente incidencia en el sistema de registro horario:

Has recibido este mensaje porque estás configurado como persona responsable de la categoría a la que pertenece este trabajador o eres el administrador del sistema.

"); @@ -568,9 +568,9 @@ public static function verify($id, $value, $confirmedby = "ME") { "email" => $workerEmail, "name" => $workerName )]; - $subject = "Incidencia del ".strftime("%d %b %Y", $incident["day"])." ".($value == 1 ? "verificada" : "rechazada"); + $subject = "Incidencia del ".date::getShortDate($incident["day"])." ".($value == 1 ? "verificada" : "rechazada"); $body = mail::bodyTemplate("

Bienvenido ".security::htmlsafe($workerName).",

-

Este es un mensaje automático para avisarte de que la incidencia que introduciste para el día ".strftime("%d de %B de %Y", $incident["day"])." ha sido ".($value == 1 ? "aceptada" : "rechazada").".

Puedes ver el estado de todas tus incidencias en el aplicativo web.

"); +

Este es un mensaje automático para avisarte de que la incidencia que introduciste para el día ".date::getLongDate($incident["day"])." ha sido ".($value == 1 ? "aceptada" : "rechazada").".

Puedes ver el estado de todas tus incidencias en el aplicativo web.

"); mail::send($to, [], $subject, $body); } diff --git a/src/inc/incidentsView.php b/src/inc/incidentsView.php index 1f90bc8..5bd0bda 100644 --- a/src/inc/incidentsView.php +++ b/src/inc/incidentsView.php @@ -119,7 +119,7 @@ public static function renderIncidents(&$incidents, &$companies, $scrollable = f - + +
&continue=" data-dyndialog-href="dynamic/editincidentcomment.php?id=&continue=" class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" title="Ver/editar las observaciones">comment 0 ? ' class="mdl-badge mdl-badge--overlap" data-badge="'.$attachments.'"' : '')?>>&continue=" data-dyndialog-href="dynamic/incidentattachments.php?id=&continue=" class="mdl-button mdl-js-button mdl-button--icon mdl-js-ripple-effect" title="Ver/gestionar los archivos adjuntos">attach_file diff --git a/src/inc/registryView.php b/src/inc/registryView.php index f068558..c0c84f6 100644 --- a/src/inc/registryView.php +++ b/src/inc/registryView.php @@ -84,7 +84,7 @@ public static function renderRegistry(&$registry, &$companies, $scrollable = fal -