__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php
declare(strict_types=1);

require_once __DIR__ . '/home_slider_helpers.php';

$mesesLargos = [
    1 => 'Enero', 2 => 'Febrero', 3 => 'Marzo', 4 => 'Abril', 5 => 'Mayo', 6 => 'Junio',
    7 => 'Julio', 8 => 'Agosto', 9 => 'Septiembre', 10 => 'Octubre', 11 => 'Noviembre', 12 => 'Diciembre',
];

$fechaReferencia = new DateTimeImmutable('today');
$mesActual = $fechaReferencia->modify('first day of this month');
$mesSiguiente = $mesActual->modify('+1 month');
$mesesPermitidos = [
    $mesActual->format('Y-m'),
    $mesSiguiente->format('Y-m'),
];

$capacitacionesVisibles = [];
$capacitacionesPorMes = [];

foreach ($capacitaciones as $item) {
    $capacitacion = buildCapacitacionItem((array) $item);
    if ($capacitacion === null) {
        continue;
    }

    $claveMes = $capacitacion['fecha']->format('Y-m');
    if (!in_array($claveMes, $mesesPermitidos, true)) {
        continue;
    }

    $capacitacionesVisibles[] = $capacitacion;
    $capacitacionesPorMes[$claveMes][(int) $capacitacion['fecha']->format('j')][] = $capacitacion;
}

sortCapacitacionesChronologically($capacitacionesVisibles);

foreach ($capacitacionesPorMes as &$dias) {
    foreach ($dias as &$itemsDia) {
        sortCapacitacionesChronologically($itemsDia);
    }
}
unset($dias, $itemsDia);

$detalleCalendario = $capacitacionesVisibles[0] ?? null;

$renderCalendarioMes = static function (
    DateTimeImmutable $mes,
    array $capacitacionesPorMes,
    array $mesesLargos,
    DateTimeImmutable $fechaReferencia
): void {
    $claveMes = $mes->format('Y-m');
    $nombreMes = $mesesLargos[(int) $mes->format('n')] . ' ' . $mes->format('Y');
    $primerDia = $mes->modify('first day of this month');
    $ultimoDia = $mes->modify('last day of this month');
    $diasDelMes = (int) $ultimoDia->format('j');
    $inicioSemana = (int) $primerDia->format('N');
    $celdasPrevias = $inicioSemana - 1;
    $totalCeldas = (int) ceil(($celdasPrevias + $diasDelMes) / 7) * 7;
    $diasSemana = ['Lun', 'Mar', 'Mié', 'Jue', 'Vie', 'Sáb', 'Dom'];

    echo '<section class="cap-calendar__month" data-month-label="' . htmlspecialchars($nombreMes, ENT_QUOTES, 'UTF-8') . '" hidden>';
    echo '<div class="cap-calendar__weekdays">';
    foreach ($diasSemana as $diaSemana) {
        echo '<span>' . htmlspecialchars($diaSemana, ENT_QUOTES, 'UTF-8') . '</span>';
    }
    echo '</div>';
    echo '<div class="cap-calendar__grid">';

    for ($i = 0; $i < $totalCeldas; $i++) {
        $numeroDia = $i - $celdasPrevias + 1;

        if ($numeroDia < 1 || $numeroDia > $diasDelMes) {
            echo '<div class="cap-calendar__day cap-calendar__day--empty" aria-hidden="true"></div>';
            continue;
        }

        $items = $capacitacionesPorMes[$claveMes][$numeroDia] ?? [];
        $fechaDia = $mes->setDate((int) $mes->format('Y'), (int) $mes->format('m'), $numeroDia);
        $clases = ['cap-calendar__day'];

        if ($items !== []) {
            $clases[] = 'cap-calendar__day--has-events';
        }

        if ($fechaDia->format('Y-m-d') === $fechaReferencia->format('Y-m-d')) {
            $clases[] = 'cap-calendar__day--today';
        }

        echo '<div class="' . htmlspecialchars(implode(' ', $clases), ENT_QUOTES, 'UTF-8') . '">';
        echo '<div class="cap-calendar__day-head">';
        echo '<span class="cap-calendar__day-number">' . $numeroDia . '</span>';
        if ($items !== []) {
            echo '<span class="cap-calendar__day-badge">' . count($items) . '</span>';
        }
        echo '</div>';

        if ($items !== []) {
            echo '<div class="cap-calendar__items">';
            foreach ($items as $indice => $evento) {
                $fechaTexto = $evento['fecha']->format('d') . ' ' . $mesesLargos[(int) $evento['fecha']->format('n')];
                $esActivo = $indice === 0 ? ' is-active' : '';
                echo '<button type="button" class="cap-calendar__item-trigger' . $esActivo . '"'
                    . ' data-cap-title="' . htmlspecialchars($evento['titulo'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-description="' . htmlspecialchars($evento['descripcion'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-time="' . htmlspecialchars($evento['hora'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-mode="' . htmlspecialchars($evento['modalidad'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-link="' . htmlspecialchars($evento['boton_url'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-link-label="' . htmlspecialchars($evento['boton_texto'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-date="' . htmlspecialchars($fechaTexto, ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-category="' . htmlspecialchars($evento['categoria'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-speaker="' . htmlspecialchars($evento['capacitador'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-audience="' . htmlspecialchars($evento['publico'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-platform="' . htmlspecialchars($evento['plataforma'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-cupo="' . htmlspecialchars($evento['cupo'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' data-cap-accent="' . htmlspecialchars($evento['acento'], ENT_QUOTES, 'UTF-8') . '"'
                    . ' title="' . htmlspecialchars($evento['hora'] . ' - ' . $evento['titulo'], ENT_QUOTES, 'UTF-8') . '">';
                echo '<span class="cap-calendar__item-dot" style="--cap-dot:' . htmlspecialchars($evento['acento'], ENT_QUOTES, 'UTF-8') . ';"></span>';
                echo '<span class="cap-calendar__item-copy">';
                echo '<span class="cap-calendar__item-time">' . htmlspecialchars($evento['hora'], ENT_QUOTES, 'UTF-8') . '</span>';
                echo '<span class="cap-calendar__item-title">' . htmlspecialchars($evento['titulo'], ENT_QUOTES, 'UTF-8') . '</span>';
                echo '</span>';
                echo '</button>';
            }
            echo '</div>';
        }

        echo '</div>';
    }

    echo '</div>';
    echo '</section>';
};
?>

<section class="home-slider home-slider--capacitaciones" id="inicio-capacitaciones" aria-labelledby="capacitaciones-title">
  <div class="cap-panel">
    <div class="cap-panel__head">
      <div class="cap-panel__copy">
        <p class="cap-panel__eyebrow">Agenda formativa</p>
        <h2 id="capacitaciones-title">Capacitaciones</h2>
      </div>
    </div>

    <section class="cap-calendar" aria-label="Calendario mensual de capacitaciones">
      <div class="cap-calendar__toolbar">
        <button type="button" class="cap-calendar__arrow" data-cap-calendar-prev aria-label="Mes anterior">
          <span aria-hidden="true">&lt;</span>
        </button>
        <div class="cap-calendar__toolbar-copy">
          <p>Explora por mes</p>
          <h3 class="cap-calendar__label" data-cap-calendar-label></h3>
        </div>
        <button type="button" class="cap-calendar__arrow" data-cap-calendar-next aria-label="Mes siguiente">
          <span aria-hidden="true">&gt;</span>
        </button>
      </div>

      <?php $renderCalendarioMes($mesActual, $capacitacionesPorMes, $mesesLargos, $fechaReferencia); ?>
      <?php $renderCalendarioMes($mesSiguiente, $capacitacionesPorMes, $mesesLargos, $fechaReferencia); ?>

      <div class="cap-calendar__detail" id="capCalendarDetail" style="--cap-detail-accent: <?= htmlspecialchars((string) ($detalleCalendario['acento'] ?? '#8f141b'), ENT_QUOTES, 'UTF-8') ?>;">
        <?php if ($detalleCalendario !== null): ?>
          <?php
            $detalleContexto = trim((string) ($detalleCalendario['capacitador'] ?? '')) !== ''
                ? trim((string) $detalleCalendario['capacitador'])
                : trim((string) ($detalleCalendario['plataforma'] ?? ''));
            $detalleContextoLabel = trim((string) ($detalleCalendario['capacitador'] ?? '')) !== ''
                ? 'Capacitador'
                : 'Espacio';
            $detallePublico = trim((string) ($detalleCalendario['publico'] ?? ''));
          ?>
          <div class="cap-calendar__detail-meta">
            <span id="capCalendarDetailCategory"><?= htmlspecialchars((string) $detalleCalendario['categoria'], ENT_QUOTES, 'UTF-8') ?></span>
            <span id="capCalendarDetailMode"><?= htmlspecialchars((string) $detalleCalendario['modalidad'], ENT_QUOTES, 'UTF-8') ?></span>
          </div>

          <h3 id="capCalendarDetailTitle"><?= htmlspecialchars((string) $detalleCalendario['titulo'], ENT_QUOTES, 'UTF-8') ?></h3>
          <p id="capCalendarDetailDescription"><?= htmlspecialchars((string) $detalleCalendario['descripcion'], ENT_QUOTES, 'UTF-8') ?></p>

          <div class="cap-calendar__detail-grid">
            <article>
              <span>Fecha</span>
              <strong id="capCalendarDetailDate"><?= htmlspecialchars($detalleCalendario['fecha']->format('d') . ' ' . $mesesLargos[(int) $detalleCalendario['fecha']->format('n')], ENT_QUOTES, 'UTF-8') ?></strong>
            </article>
            <article>
              <span>Hora</span>
              <strong id="capCalendarDetailTime"><?= htmlspecialchars((string) $detalleCalendario['hora'], ENT_QUOTES, 'UTF-8') ?></strong>
            </article>
            <article id="capCalendarDetailContextCard"<?= $detalleContexto === '' ? ' hidden' : '' ?>>
              <span id="capCalendarDetailContextLabel"><?= htmlspecialchars($detalleContextoLabel, ENT_QUOTES, 'UTF-8') ?></span>
              <strong id="capCalendarDetailContextValue"><?= htmlspecialchars($detalleContexto, ENT_QUOTES, 'UTF-8') ?></strong>
            </article>
            <article>
              <span>Cupos</span>
              <strong id="capCalendarDetailCupo"><?= htmlspecialchars((string) $detalleCalendario['cupo'], ENT_QUOTES, 'UTF-8') ?></strong>
            </article>
            <article id="capCalendarDetailAudienceCard"<?= $detallePublico === '' ? ' hidden' : '' ?>>
              <span>Público</span>
              <strong id="capCalendarDetailAudience"><?= htmlspecialchars($detallePublico, ENT_QUOTES, 'UTF-8') ?></strong>
            </article>
          </div>

          <a
            class="cap-calendar__detail-link"
            id="capCalendarDetailLink"
            href="<?= htmlspecialchars((string) $detalleCalendario['boton_url'], ENT_QUOTES, 'UTF-8') ?>"
            target="_blank"
            rel="noopener noreferrer"
          >
            <?= htmlspecialchars((string) $detalleCalendario['boton_texto'], ENT_QUOTES, 'UTF-8') ?>
          </a>
        <?php else: ?>
          <div class="cap-calendar__detail-empty">No hay sesiones configuradas para el rango visible.</div>
        <?php endif; ?>
      </div>
    </section>
  </div>
</section>

Filemanager

Name Type Size Permission Actions
cajabusqueda.php File 1.74 KB 0664
documentos_apoyo.php File 3.24 KB 0664
encabezado.php File 7.71 KB 0664
head.php File 633 B 0664
home_slider_helpers.php File 2.37 KB 0664
home_sliders.php File 574 B 0664
mas_servicios.php File 2.98 KB 0664
nav.php File 7.06 KB 0664
piepagina.php File 10.23 KB 0664
slider_capacitaciones.php File 10.6 KB 0664
slider_capacitaciones_banners.php File 4.86 KB 0664
slider_publicaciones.php File 4.13 KB 0664
tutoriales_helpers.php File 2.58 KB 0664
Filemanager