• 17-05-2023, 11:58:42
    #10
    emeğine sağlık doğru forumda olduğumuzu hatırlattınız
  • 19-05-2023, 12:48:05
    #11
    İlgili kod üzerinde bir değişiklik yaptım, o gün ilgili gün gelmiş ise toas ile bir uyarı verecektir ilgili günün geldiğiyle alakalı olarak.

    <?php
    $apiUrl = "https://date.nager.at/api/v2/publicholidays/" . date('Y') . "/tr";
    $response = file_get_contents($apiUrl);
    $veri = json_decode($response, true);
    
    function cevirTatil($tatilAdi)
    {
        // Çeviri tablosu
        $ceviriTablosu = array(
            "New Year's Day" => "Yılbaşı",
            "Labour Day" => "Emek ve Dayanışma Günü",
            "Easter Monday" => "Paskalya Pazartesi",
            "Republic Day" => "Cumhuriyet Bayramı",
            "Victory Day" => "Zafer Bayramı",
            "Youth and Sports Day" => "Gençlik ve Spor Bayramı",
            "Democracy and National Unity Day" => "Demokrasi ve Milli Birlik Günü",
            "Sacrifice Feast" => "Kurban Bayramı",
            "Eid al-Fitr First Day" => "Ramazan Bayramı Birinci Gün",
            "Eid al-Fitr Second Day" => "Ramazan Bayramı İkinci Gün",
            "National Independence & Children's Day" => "Ulusal Egemenlik ve Çocuk Bayramı",
            "Eid al-Fitr Third Day" => "Ramazan Bayramı Üçüncü Gün",
            "Atatürk Commemoration & Youth Day" => "Atatürk'ü Anma Gençlik ve Spor Bayramı",
            "Eid al-Adha First Day" => "Kurban Bayramı Birinci Gün",
            "Eid al-Adha Second Day" => "Kurban Bayramı İkinci Gün",
            "Eid al-Adha Third Day" => "Kurban Bayramı Üçüncü Gün",
            "Eid al-Adha Fourth Day" => "Kurban Bayramı Dördüncü Gün"
        );
    
        if (isset($ceviriTablosu[$tatilAdi])) {
            return $ceviriTablosu[$tatilAdi];
        }
    
        return $tatilAdi;
    }
    
    function cevirAy($ayAdi)
    {
        // Çeviri tablosu
        $ceviriTablosu = array(
            "January" => "Ocak",
            "February" => "Şubat",
            "March" => "Mart",
            "April" => "Nisan",
            "May" => "Mayıs",
            "June" => "Haziran",
            "July" => "Temmuz",
            "August" => "Ağustos",
            "September" => "Eylül",
            "October" => "Ekim",
            "November" => "Kasım",
            "December" => "Aralık",
            "Jan" => "Oca",
            "Feb" => "Şub",
            "Mar" => "Mar",
            "Apr" => "Nis",
            "Jun" => "Haz",
            "Jul" => "Tem",
            "Aug" => "Ağu",
            "Sep" => "Eyl",
            "Oct" => "Eki",
            "Nov" => "Kas",
            "Dec" => "Ara"
        );
    
        $ayParcalari = explode(' ', $ayAdi);
        $cevrilmisParcalar = array();
        foreach ($ayParcalari as $parca) {
            if (isset($ceviriTablosu[$parca])) {
                $cevrilmisParcalar[] = $ceviriTablosu[$parca];
            } else {
                $cevrilmisParcalar[] = $parca;
            }
        }
    
        return implode(' ', $cevrilmisParcalar);
    }
    
    function cevirHaftaGunu($haftaGunu)
    {
        // Çeviri tablosu
        $ceviriTablosu = array(
            "Monday" => "Pazartesi",
            "Tuesday" => "Salı",
            "Wednesday" => "Çarşamba",
            "Thursday" => "Perşembe",
            "Friday" => "Cuma",
            "Saturday" => "Cumartesi",
            "Sunday" => "Pazar"
        );
    
        if (isset($ceviriTablosu[$haftaGunu])) {
            return $ceviriTablosu[$haftaGunu];
        }
    
        return $haftaGunu;
    }
    
    $simdikiTarih = date('Y-m-d');
    $isHolidayToday = false;
    $holidayName = '';
    
    if (!empty($veri)) {
        foreach ($veri as $tatil) {
            if ($tatil['date'] === $simdikiTarih) {
                $isHolidayToday = true;
                $holidayName = cevirTatil($tatil['name']);
                break;
            }
        }
    }
    
    
    if ($isHolidayToday) {
        echo "<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js'></script>";
        echo "<link href='https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css' rel='stylesheet' />";
        echo "<script src='https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js'></script>";
    
        echo "<script>";
        echo "jQuery(document).ready(function() {";
        echo "    toastr.success('Bugün: " . htmlentities($holidayName, ENT_QUOTES, 'UTF-8') . " tatili');";
        echo "});";
        echo "</script>";
    }
    
    echo "<strong>" . date('Y') . " Resmi Tatil Günleri:</strong><br>";
    foreach ($veri as $tatil) {
        $cevrilmisAd = cevirTatil($tatil['name']);
        $tatilTarihi = date('d F', strtotime($tatil['date']));
        $cevrilmisTarih = str_replace(
            array('May', 'June'),
            array('May', 'Haziran'),
            cevirAy($tatilTarihi)
        );
        $haftaGunu = date('l', strtotime($tatil['date']));
        $cevrilmisHaftaGunu = cevirHaftaGunu($haftaGunu);
        if ($tatil['date'] >= $simdikiTarih) {
            echo "<strong>" . $cevrilmisTarih . " " . $cevrilmisHaftaGunu . "</strong> - " . $cevrilmisAd . "<br>";
        }
    }
    ?>
  • 19-05-2023, 13:46:19
    #12
    Üyeliği durduruldu
    Nacizane ufak birkaç güncelleme yaptım. Güncellemelerle kod daha modüler, okunabilir ve PSR-2 standartlarına uygun hale gelir.

    <?php
    class ResmiTatilGunleriAPI
    {
        private string $apiUrl;
        private array $veri;
        public function __construct()
        {
            $this->apiUrl = "https://date.nager.at/api/v2/publicholidays/" . date('Y') . "/tr";
            $this->veri = $this->fetchData();
        }
        private function fetchData(): array
        {
            $response = file_get_contents($this->apiUrl);
            return json_decode($response, true);
        }
        private function cevirTatil(string $tatilAdi): string
        {
            $ceviriTablosu = [
                "New Year's Day" => "Yılbaşı",
                "Labour Day" => "Emek ve Dayanışma Günü",
                "Easter Monday" => "Paskalya Pazartesi",
                "Republic Day" => "Cumhuriyet Bayramı",
                "Victory Day" => "Zafer Bayramı",
                "Youth and Sports Day" => "Gençlik ve Spor Bayramı",
                "Democracy and National Unity Day" => "Demokrasi ve Milli Birlik Günü",
                "Sacrifice Feast" => "Kurban Bayramı",
                "Eid al-Fitr First Day" => "Ramazan Bayramı Birinci Gün",
                "Eid al-Fitr Second Day" => "Ramazan Bayramı İkinci Gün",
                "National Independence & Children's Day" => "Ulusal Egemenlik ve Çocuk Bayramı",
                "Eid al-Fitr Third Day" => "Ramazan Bayramı Üçüncü Gün",
                "Atatürk Commemoration & Youth Day" => "Atatürk'ü Anma Gençlik ve Spor Bayramı",
                "Eid al-Adha First Day" => "Kurban Bayramı Birinci Gün",
                "Eid al-Adha Second Day" => "Kurban Bayramı İkinci Gün",
                "Eid al-Adha Third Day" => "Kurban Bayramı Üçüncü Gün",
                "Eid al-Adha Fourth Day" => "Kurban Bayramı Dördüncü Gün"
            ];
            return $ceviriTablosu[$tatilAdi] ?? $tatilAdi;
        }
        private function cevirAy(int $ayAdi): string
        {
            // date('d F', strtotime($tatil['date']));
            // date('n') bir ayın sayısal temsili, ay değeri 1 ile 12 arasında tam sayıdır 
            // Örneğin, bugünün tarihi 19 Mayıs 2023 ise, date('n') ifadesi "5" değerini döndürecektir. 
            $ceviriTablosu = [
                1 => "Ocak",
                2 => "Şubat",
                3 => "Mart",
                4 => "Nisan",
                5 => "Mayıs",
                6 => "Haziran",
                7 => "Temmuz",
                8 => "Ağustos",
                9 => "Eylül",
                10 => "Ekim",
                11 => "Kasım",
                12 => "Aralık"
            ];
            return $ceviriTablosu[$ayAdi] ?? '';
        }
        public function tatilGunleri(): array
        {
            // dizisindeki tatilleri filtreleyerek bugünkü tarihten sonraki tatilleri seçer
            // array_map fonksiyonunu kullanarak her tatil için tarih ve isim bilgisini dönüştürerek
            $tatilFilter = array_filter($this->veri, function ($tatil) {
                return $tatil['date'] >= date('Y-m-d');
            });
            
            $tatilGunleri = array_map(function ($tatil) {
                return [
                    'date' => $this->cevirAy(date('n', strtotime($tatil['date']))),
                    'name' => $this->cevirTatil($tatil['name'])
                ];
            }, $tatilFilter);
            return $tatilGunleri;
        }
    }
    // Örnek kullanım
    $resmiTatilGunleri = new ResmiTatilGunleriAPI();
    $tatilGunleri = $resmiTatilGunleri->tatilGunleri();
    if (!empty($tatilGunleri)) {
        echo "<strong>" . date('Y') . " Resmi Tatil Günleri:</strong><br>";
        foreach ($tatilGunleri as $tatil) {
            echo "<strong>" . $tatil['date'] . "</strong> - " . $tatil['name'] . "<br>";
        }
    } else {
        echo "Resmi tatil günleri alınamadı.";
    }
  • 19-05-2023, 14:08:26
    #13
    Biraz daha sadeleştirilmiş hale getirdim. @vido teşekkür ederim.

    <?php
    
    class TatilKontrolcu {
      private $ceviriTablosu;
    
      public function __construct() {
        $this->ceviriTablosu = [
          "New Year's Day" => "Yılbaşı", "Labour Day" => "Emek ve Dayanışma Günü", "Easter Monday" => "Paskalya Pazartesi",
          "Republic Day" => "Cumhuriyet Bayramı", "Victory Day" => "Zafer Bayramı", "Youth and Sports Day" => "Gençlik ve Spor Bayramı",
          "Democracy and National Unity Day" => "Demokrasi ve Milli Birlik Günü", "Sacrifice Feast" => "Kurban Bayramı",
          "Eid al-Fitr First Day" => "Ramazan Bayramı 1. Gün", "Eid al-Fitr Second Day" => "Ramazan Bayramı 2. Gün",
          "National Independence & Children's Day" => "Ulusal Egemenlik ve Çocuk Bayramı", "Eid al-Fitr Third Day" => "Ramazan Bayramı 3. Gün",
          "Atatürk Commemoration & Youth Day" => "Atatürk'ü Anma Gençlik ve Spor Bayramı", "Eid al-Adha First Day" => "Kurban Bayramı 1. Gün",
          "Eid al-Adha Second Day" => "Kurban Bayramı 2. Gün", "Eid al-Adha Third Day" => "Kurban Bayramı 3. Gün",
          "Eid al-Adha Fourth Day" => "Kurban Bayramı 4. Gün"
        ];
      }
    
    
      private function cevirTatil( $tatilAdi ) {
        return isset( $this->ceviriTablosu[ $tatilAdi ] ) ? $this->ceviriTablosu[ $tatilAdi ] : $tatilAdi;
      }
    
      private function cevirAy( $ayAdi ) {
        $ceviriTablosu = [
          "January" => "Ocak", "February" => "Şubat", "March" => "Mart", "April" => "Nisan", "May" => "Mayıs", "June" => "Haziran",
          "July" => "Temmuz", "August" => "Ağustos", "September" => "Eylül", "October" => "Ekim", "November" => "Kasım", "December" => "Aralık",
          "Jan" => "Oca", "Feb" => "Şub", "Mar" => "Mar", "Apr" => "Nis", "Jun" => "Haz", "Jul" => "Tem", "Aug" => "Ağu", "Sep" => "Eyl",
          "Oct" => "Eki", "Nov" => "Kas", "Dec" => "Ara"
        ];
    
        $ayParcalari = explode( ' ', $ayAdi );
        $cevrilmisParcalar = [];
        foreach ( $ayParcalari as $parca ) {
          $cevrilmisParcalar[] = isset( $ceviriTablosu[ $parca ] ) ? $ceviriTablosu[ $parca ] : $parca;
        }
    
        return implode( ' ', $cevrilmisParcalar );
      }
    
    
      private function cevirHaftaGunu( $haftaGunu ) {
        $ceviriTablosu = [
          "Monday" => "Pazartesi", "Tuesday" => "Salı", "Wednesday" => "Çarşamba", "Thursday" => "Perşembe",
          "Friday" => "Cuma", "Saturday" => "Cumartesi", "Sunday" => "Pazar"
        ];
    
        return isset( $ceviriTablosu[ $haftaGunu ] ) ? $ceviriTablosu[ $haftaGunu ] : $haftaGunu;
      }
    
    
      public function tatilleriKontrolEt() {
        $apiUrl = "https://date.nager.at/api/v2/publicholidays/" . date( 'Y' ) . "/tr";
        $response = file_get_contents( $apiUrl );
        $veri = json_decode( $response, true );
    
        $simdikiTarih = date( 'Y-m-d' );
        $bugunTatilMi = false;
        $tatilAdi = '';
    
        if ( !empty( $veri ) ) {
          foreach ( $veri as $tatil ) {
            if ( $tatil[ 'date' ] === $simdikiTarih ) {
              $bugunTatilMi = true;
              $tatilAdi = $this->cevirTatil( $tatil[ 'name' ] );
              break;
            }
          }
        }
    
        if ( $bugunTatilMi ) {
          echo "<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js'></script>";
          echo "<link href='https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css' rel='stylesheet' />";
          echo "<script src='https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js'></script>";
    
          echo "<script>";
          echo "jQuery(document).ready(function() {";
          echo "    toastr.success('Bugün: " . htmlentities( $tatilAdi, ENT_QUOTES, 'UTF-8' ) . " tatili');";
          echo "});";
          echo "</script>";
        }
    
        echo "<strong>" . date( 'Y' ) . " Resmi Tatil Günleri:</strong><br>";
        foreach ( $veri as $tatil ) {
          $cevrilmisAd = $this->cevirTatil( $tatil[ 'name' ] );
          $tatilTarihi = date( 'd F', strtotime( $tatil[ 'date' ] ) );
          $cevrilmisTarih = str_replace( [ 'May', 'June' ], [ 'May', 'Haziran' ], $this->cevirAy( $tatilTarihi ) );
          $haftaGunu = date( 'l', strtotime( $tatil[ 'date' ] ) );
          $cevrilmisHaftaGunu = $this->cevirHaftaGunu( $haftaGunu );
          if ( $tatil[ 'date' ] >= $simdikiTarih ) {
            echo "<strong>" . $cevrilmisTarih . " " . $cevrilmisHaftaGunu . "</strong> - " . $cevrilmisAd . "<br>";
          }
        }
      }
    }
    
    $tatilKontrolcu = new TatilKontrolcu();
    $tatilKontrolcu->tatilleriKontrolEt();
    
    ?>