Ładowanie...

krupapiotr.pl

Technologia, na której można polegać

Telewizja

Remonty TV – oficjalny start w grudniu

28.11.2025 11.03 | Aktualizacja: 28.11.2025 12.04 satkurier.pl 536 0 5 min.

Remonty TV – pierwsza polska telewizja w całości poświęcona remontom, metamorfozom wnętrz i budowie domów – wystartuje już w grudniu. W Warszawie odbędzie się oficjalna inauguracja i prezentacja ramówki, transmitowana na żywo.

Remonty TV - oficjalny start w grudniu
Remonty TV – oficjalny start w grudniu

Pierwsza telewizja remontowa w Polsce

Nadawca Remonty TV potwierdził w rozmowie z satkurier.pl, że stacja wystartuje już w grudniu br. – tak szybko, jak to będzie możliwe.
Uroczyste otwarcie oraz prezentacja jesienno-zimowej ramówki odbędą się 2 grudnia w Warszawie podczas specjalnego eventu inaugurującego start kanału.
W wydarzeniu wezmą udział m.in. 

  • Zygmunt Chajzer (dyrektor programowy)
  • Misheel Jargalsaikhan (prowadząca) oraz 
  • Daniel Wieleba (producent).

Podczas spotkania zaprezentowana zostanie wizja stacji oraz plany jej rozwoju, a także przegląd formatów – zarówno już znanych, jak i premierowych.
Organizatorzy przedstawią również nowe możliwości współpracy i lokowań produktów.
W programie znajdzie się także występ-niespodzianka z udziałem prowadzących Remonty TV: 

  • Natalii Jakuły,
  • Joanny Zientarskiej i
  • Magdaleny Psiuk,

a całość uzupełnią pokazowe metamorfozy wnętrz.

Biuro prasowe Remonty TV przekazało satkurier.pl, że kanał będzie nadawać na podstawie polskiej koncesji.
 

– Potwierdzam, że taki wniosek wpłynął, ale wymagał uzupełnienia. Czekamy na uzupełnienie dokumentacji – informuje satkurier.pl Anna Ostrowska, rzecznik prasowy KRRiT.

Na początku stacja Remonty TV pojawi się m.in. w sieciach INEA oraz KameleonTV, natomiast pełną listę operatorów poznamy podczas wspomnianego wydarzenia.

Uroczyste otwarcie Remonty TV dnia 2 grudnia będzie transmitowane na żywo w mediach społecznościowych stacji, dzięki czemu widzowie z całej Polski będą mogli uczestniczyć w inauguracji i poczuć atmosferę nowej telewizji poświęconej remontom i metamorfozom wnętrz.

Skąd pomysł na Remonty TV?
– Remonty od zawsze były i będą – jest to ciekawa opcja programowa dla wszystkich fanów, jak i osób, które albo budują, albo remontują – tłumaczy satkurier.pl nadawca. 

Remonty TV to pierwsza w Polsce telewizja w całości poświęcona remontom, metamorfozom wnętrz, budowie domów oraz praktycznym poradom dla osób, które chcą mieszkać piękniej i wygodniej. To kanał dla profesjonalistów, pasjonatów, majsterkowiczów oraz wszystkich planujących zmianę swojego otoczenia.

Celem Remonty TV jest dostarczanie widzom fachowej wiedzy, praktycznych rozwiązań oraz inspiracji opartych na realnych historiach remontów i budowy domów.
Stacja pokazuje prawdziwą stronę remontów – ich koszty, wyzwania, emocje oraz finalne efekty.

Dyrektorem programowym został Zygmunt Chajzer, który prowadzi także flagowy program kanału „Remont na 5+”, znany widzom m.in. z anten Tele 5 i Home TV oraz z serwisu YouTube.

Remonty TV to także przestrzeń dla partnerów branżowych, prezentujących swoje produkty w naturalnym, praktycznym zastosowaniu.
 

– Remonty TV to projekt stworzony z pasji. Chcemy pokazać, że remont może być piękną przygodą, a dobre wnętrza są w zasięgu każdego. Nasza telewizja to praktyka, autentyczność i inspiracja

– mówi Zygmunt Chajzer, dyrektor programowy Remonty TV.

Co w ramówce Remonty TV?

Remont na 5+
Flagowy program stacji. Prawdziwe historie remontowe i budowlane z technicznymi rozwiązaniami; prowadzący: Zygmunt Chajzer

Remont na 5+ Kids
Metamorfozy pokoi dziecięcych i młodzieżowych; prowadząca: Misheel Jargalsaikhan

Twój dach na 5+
Nowoczesne i sprawdzone rozwiązaniom dachowe. Montaż dachu krok po kroku; prowadząca: Joanna Jabłczyńska

Nieruchomości na 5+
Praktyczny przewodnik po świecie zakupu i sprzedaży mieszkań oraz domów; prowadzący: Marcin Borchardt

Homestaging na 5+
Program pokazujący, jak dzięki odpowiedniej aranżacji i sprytnym trikom odmienić wnętrze i nadać mu efekt „wow”.

Poznaj ten produkt
Eksperckie porady branżowe; sprawdzone produkty i rozwiązania z branży budowlanej, wnętrzarskiej; prowadząca: Magdalena Psiuk

Brudna robota
Program odsłaniający kulisy prawdziwej pracy na budowie. Autentyczne warunki, konkretne działania i zero upiększeń

Deweloper na 5+
Program prezentujący najciekawsze i najbardziej obiecujące inwestycje deweloperskie w Polsce; prowadząca: Natalia Jakuła

Garaż na 5+
Program o aranżacji przestrzeni dla pasjonatów motoryzacji; prowadząca: Joanna Zientarska

Detailing na 5+
Program poświęcony pielęgnacji i profesjonalnemu odświeżaniu samochodów. To przewodnik po świecie detailingu

Wejdź w świat designu
Program pokazujący najnowsze trendy i innowacje w branży wnętrzarskiej. Przedstawiciele stacji odwiedzą najważniejsze targi w Polsce i na świecie, relacjonując wydarzenia na żywo
 

Współpraca z partnerami

Remonty TV współpracuje z czołowymi markami z branży wnętrzarskiej, budowlanej, dekoracyjnej i technologicznej, zapewniając widzom praktyczne i inspirujące rozwiązania. Każdy odcinek programów pokazuje produkty partnerów w naturalnym zastosowaniu – od montażu, przez wykończenie, aż po użytkowanie w codziennych warunkach. Dzięki temu widzowie mogą zobaczyć sprawdzić funkcjonalność i trwałość produktów oraz zainspirować się ich zastosowaniem w prawdziwych realizacjach.

Za projekt Remonty TV odpowiada Daniel Wieleba, prezes zarządu spółki On/Off Produkcja TV i jej większościowy udziałowiec.

Źródło:
Anita Kaźmierska

satkurier.pl

Największy i najstarszy serwis poświęcony telewizji cyfrowej, przygotowywany przez wydawcę miesięcznika SAT Kurier. Bieżące wydarzenia z rynku mediów i nowych technologii. Portal SATKurier.pl - najnowsze informacje - telewizja, media, platformy, nowe kanały, radio, technologie, transmisje sportowe

Napisz komentarz ...

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.

/** * ========================================================================== * KRUPAS CORE V56.3.1 - THE MASTER ENGINE (MAXIMUM SAFE & LIVE WEATHER) * ========================================================================== * POPRAWKA V56.3.1: * - Ochrona przed błędem DivisionByZero (dzielenie przez zero). * - Agresywne czyszczenie bufora (ob_clean) chroniące plik JSON widgetu. * - Catch (\Throwable) aby zapobiec wysypaniu strony przy braku tabel. * ========================================================================== */ add_action('init', function() { if (isset($_GET['RESET_POGODY'])) { delete_transient('krupa_current_weather_data'); delete_transient('krupa_weather_transient_data'); delete_option('krupa_weather_v56_initialized'); echo "

SUKCES

Pamięć podręczna pogody została wyczyszczona.

"; exit; } }); if (!function_exists('get_krupa_master_data')) { function get_krupa_master_data() { static $master_data = null; if ($master_data !== null) return $master_data; global $wpdb; $tz = new DateTimeZone('Europe/Warsaw'); $teraz = new DateTime('now', $tz); $teraz_str = $teraz->format('Y-m-d H:i:s'); $godzina = (int)$teraz->format('G'); $minuty = (int)$teraz->format('i'); $dzien_roku = (int)$teraz->format('z'); $dzien_tyg = (int)$teraz->format('N'); $rok = (int)$teraz->format('Y'); $status_reczny = get_option('krupa_status_pracy', 'auto'); $opis_reczny = get_option('krupa_opis_montazu', ''); $loc_reczna = get_option('krupa_lokalizacja_reczna', ''); $api_key = '3fce60aeedeb0edf258f9d208efa7f29'; $staff_id = 1; $miejsca = [ 'Lublin', 'Niemce', 'Nasutów', 'Nasutów-Kolonia', 'Dys', 'Ciecierzyn', 'Baszki', 'Krasienin', 'Krasienin-Kolonia', 'Stoczek Kolonia', 'Leonów', 'Kawka', 'Smugi', 'Elizówka', 'Pryszczowa Góra', 'Wola Niemiecka', 'Boduszyn', 'Rudka Kozłowiecka', 'Zalesie', 'Jakubowice Konińskie', 'Jakubowice Konińskie-Kolonia', 'Pliszczyn', 'Łagiewniki', 'Swoboda', 'Pólko', 'Dziuchów', 'Lubartów', 'Łucka', 'Łucka-Kolonia', 'Wólka Rokicka', 'Wólka Rokicka-Plaża', 'Serniki', 'Chlewiska', 'Pałecznica', 'Nowodwór', 'Annobór', 'Szczekarków', 'Wola Lisowska', 'Wandzin', 'Wincentów', 'Świdnik', 'Łęczna', 'Turka', 'os. Borek', 'Wólka Lubelska', 'Dominów', 'Kalinówka', 'Franciszków', 'Mełgiew', 'Minkowice', 'Spiczyn', 'Zawieprzyce', 'Kijany', 'Januszówka', 'Krzesimów', 'Świdnik Duży', 'Świdnik Mały', 'Jastków', 'Snopków', 'Marysin', 'Tomaszowice', 'Panieńszczyzna', 'Sieprawice', 'Moszna', 'Ożarów', 'Piotrowice', 'Konopnica', 'Szerokie', 'Motycz', 'Motycz Leśny', 'Stasin', 'Uniszowice', 'Płouszowice', 'Zemborzyce', 'Zemborzyce Tereszyńskie', 'Abramowice Prywatne', 'Wilczopole', 'Mętów', 'Głusk', 'Ćmiłów', 'Prawiedniki', 'Kalina', 'Cisica', 'Sławinek' ]; $real_services = []; $grafik = []; $bookly_holidays_stale = []; $bookly_holidays_jednorazowe = []; $jest_zlecenie = false; $lokalizacja = ''; $usluga_bookly = ''; $czas_info = ''; $sekundy_do_konca = 0; $calkowity_czas_uslugi = 5400; $koniec_zlecenia = null; $is_multi_day_active = false; $dzis_start = (clone $teraz)->setTime(8, 0, 0); $dzis_koniec = (clone $teraz)->setTime(16, 0, 0); // ZMIANA: \Throwable przechwyci nawet błędy Fatal, ratując json przed rozsypaniem się try { $table_services = $wpdb->prefix . 'bookly_services'; $table_schedule = $wpdb->prefix . 'bookly_staff_schedule_items'; $table_appointments = $wpdb->prefix . 'bookly_appointments'; $table_customer_appointments = $wpdb->prefix . 'bookly_customer_appointments'; $table_holidays = $wpdb->prefix . 'bookly_holidays'; $tables_exist = $wpdb->get_var($wpdb->prepare("SHOW TABLES LIKE %s", $table_services)); if ($tables_exist) { $holidays_exist = $wpdb->get_var($wpdb->prepare("SHOW TABLES LIKE %s", $table_holidays)); if ($holidays_exist) { $sql_holidays = $wpdb->prepare("SELECT date, repeat_event FROM {$table_holidays} WHERE staff_id = %d OR staff_id IS NULL", $staff_id); $db_holidays = $wpdb->get_results($sql_holidays); if (is_array($db_holidays)) { foreach ($db_holidays as $h) { if ($h->repeat_event) { $bookly_holidays_stale[] = substr($h->date, 5); } else { $bookly_holidays_jednorazowe[] = $h->date; } } } } $sql_services = "SELECT title, duration FROM {$table_services} WHERE type = 'simple'"; $db_services = $wpdb->get_results($sql_services); if (is_array($db_services)) { $real_services = $db_services; } $sql_hours = "SELECT day_index, start_time, end_time FROM {$table_schedule} WHERE staff_id = %d"; $db_hours = $wpdb->get_results($wpdb->prepare($sql_hours, $staff_id)); if (is_array($db_hours)) { foreach ($db_hours as $row) { $day_idx = (int)$row->day_index; $iso_idx = ($day_idx === 1) ? 7 : $day_idx - 1; if (!empty($row->start_time) && $row->start_time !== 'NULL' && !empty($row->end_time) && $row->end_time !== 'NULL') { $grafik[$iso_idx] = [ 'start_h' => (int)date('G', strtotime($row->start_time)), 'start_m' => (int)date('i', strtotime($row->start_time)), 'end_h' => (int)date('G', strtotime($row->end_time)), 'end_m' => (int)date('i', strtotime($row->end_time)), 'raw_start' => $row->start_time, 'raw_end' => $row->end_time ]; } else { $grafik[$iso_idx] = null; } } } if (isset($grafik[$dzien_tyg]) && is_array($grafik[$dzien_tyg])) { $dzis_start = (clone $teraz)->setTime((int)$grafik[$dzien_tyg]['start_h'], (int)$grafik[$dzien_tyg]['start_m'], 0); $dzis_koniec = (clone $teraz)->setTime((int)$grafik[$dzien_tyg]['end_h'], (int)$grafik[$dzien_tyg]['end_m'], 0); } $sql_current = $wpdb->prepare(" SELECT a.start_date, a.end_date, ca.notes as client_note, s.title as service_name FROM {$table_appointments} a LEFT JOIN {$table_services} s ON a.service_id = s.id LEFT JOIN {$table_customer_appointments} ca ON ca.appointment_id = a.id WHERE a.start_date <= %s AND a.end_date >= %s AND (ca.status IS NULL OR ca.status != 'cancelled') ORDER BY a.start_date ASC ", $teraz_str, $teraz_str); $db_current_apts = $wpdb->get_results($sql_current); $res_sql = null; $dzisiejszy_start_zlecenia = null; $dzisiejszy_koniec_zlecenia = null; if (is_array($db_current_apts)) { foreach ($db_current_apts as $apt) { $is_zbiorcza = false; if (!empty($apt->service_name)) { $name_lower = function_exists('mb_strtolower') ? mb_strtolower($apt->service_name, 'UTF-8') : strtolower($apt->service_name); if (strpos($name_lower, 'zbiorcz') !== false || strpos($name_lower, 'w bloku') !== false) { $is_zbiorcza = true; } } $apt_start = new DateTime($apt->start_date, $tz); $apt_end = new DateTime($apt->end_date, $tz); $effective_end = clone $apt_end; $effective_start = clone $apt_start; $multi = false; $lokalny_start = clone $dzis_start; $lokalny_koniec = clone $dzis_koniec; if ($is_zbiorcza) { $lokalny_start->setTime(8, 30, 0); $lokalny_koniec->setTime(15, 0, 0); } if ($apt_end->format('Y-m-d') > $teraz->format('Y-m-d')) { $effective_end = clone $lokalny_koniec; $multi = true; } if ($apt_start->format('Y-m-d') < $teraz->format('Y-m-d')) { $effective_start = clone $lokalny_start; $multi = true; } if ($is_zbiorcza) { if ($effective_start < $lokalny_start) $effective_start = clone $lokalny_start; if ($effective_end > $lokalny_koniec) $effective_end = clone $lokalny_koniec; } if ($teraz >= $effective_start && $teraz < $effective_end) { $res_sql = $apt; $is_multi_day_active = $multi || $is_zbiorcza; $dzisiejszy_start_zlecenia = $effective_start; $dzisiejszy_koniec_zlecenia = $effective_end; break; } } } if ($res_sql) { $jest_zlecenie = true; $usluga_bookly = !empty($res_sql->service_name) ? $res_sql->service_name : 'Konsultacja serwisowa'; if (!empty($res_sql->client_note)) { $adres_raw = trim($res_sql->client_note); $znaleziono_w_bazie = false; foreach ($miejsca as $m) { if (function_exists('mb_stripos') ? (mb_stripos($adres_raw, $m) === 0) : (stripos($adres_raw, $m) === 0)) { $lokalizacja = $m; $znaleziono_w_bazie = true; break; } } if (!$znaleziono_w_bazie) { if (strpos($adres_raw, ',') !== false) { $czesci = explode(',', $adres_raw); $adres_raw = trim($czesci[0]); } $czysty_tekst = preg_split('/(?:\\b(?:ul\\.?|ulica|nr)\\b|\\s\\d)/i', $adres_raw); $miejscowosc_temp = trim($czysty_tekst[0]); $lokalizacja = function_exists('mb_convert_case') ? mb_convert_case($miejscowosc_temp, MB_CASE_TITLE, "UTF-8") : ucwords($miejscowosc_temp); } } if (!empty($res_sql->end_date)) { $koniec_zlecenia = isset($dzisiejszy_koniec_zlecenia) ? clone $dzisiejszy_koniec_zlecenia : new DateTime($res_sql->end_date, $tz); $sekundy_do_konca = $koniec_zlecenia->getTimestamp() - $teraz->getTimestamp(); if ($is_multi_day_active) { $calkowity_czas_uslugi = $dzisiejszy_koniec_zlecenia->getTimestamp() - $dzisiejszy_start_zlecenia->getTimestamp(); } else { $calkowity_czas_uslugi = $koniec_zlecenia->getTimestamp() - (new DateTime($res_sql->start_date, $tz))->getTimestamp(); } } } } } catch (\Throwable $e) { $usluga_bookly = 'Status: Oczekuje na harmonogram'; } // Zabezpieczenie przez podziałem przez ZERO if ($calkowity_czas_uslugi <= 0) $calkowity_czas_uslugi = 5400; $czy_swieto = false; $dzien_m_d = $teraz->format('m-d'); $dzien_y_m_d = $teraz->format('Y-m-d'); $swieta_stale = ['01-01', '01-06', '05-01', '05-03', '08-15', '11-01', '11-11', '12-25', '12-26']; try { if (function_exists('easter_date')) { $easter = (new DateTime())->setTimestamp(easter_date($rok))->setTimezone($tz); } else { $a = $rok % 19; $b = floor($rok / 100); $c = $rok % 100; $d = floor($b / 4); $e = $b % 4; $f = floor(($b + 8) / 25); $g = floor(($b - $f + 1) / 3); $h = (19 * $a + $b - $d - $g + 15) % 30; $i = floor($c / 4); $k = $c % 4; $L = (32 + 2 * $e + 2 * $i - $h - $k) % 7; $m = floor(($a + 11 * $h + 22 * $L) / 451); $miesiac = floor(($h + $L - 7 * $m + 114) / 31); $dzien = (($h + $L - 7 * $m + 114) % 31) + 1; $easter = new DateTime("$rok-$miesiac-$dzien", $tz); } $pon_w = (clone $easter)->modify('+1 day')->format('m-d'); $boze_c = (clone $easter)->modify('+60 days')->format('m-d'); if (in_array($dzien_m_d, $swieta_stale) || $dzien_m_d == $pon_w || $dzien_m_d == $boze_c || in_array($dzien_m_d, $bookly_holidays_stale) || in_array($dzien_y_m_d, $bookly_holidays_jednorazowe)) { $czy_swieto = true; } } catch (\Throwable $e) { $czy_swieto = false; } $czy_godziny = false; if ($teraz >= $dzis_start && $teraz < $dzis_koniec && !$czy_swieto) { $czy_godziny = true; } $dzis_czy_pracuje = (isset($grafik[$dzien_tyg]) && is_array($grafik[$dzien_tyg]) && !$czy_swieto); $czy_przerwa = false; $typ_przerwy = ''; if (!$jest_zlecenie && $czy_godziny && $dzis_czy_pracuje) { if ($godzina == 10 && $minuty >= 15 && $minuty <= 25) { $czy_przerwa = true; $typ_przerwy = 'Przerwa śniadaniowa 🍕'; } elseif (($godzina == 12 && $minuty >= 45) || $godzina == 13 || ($godzina == 14 && $minuty <= 15)) { $czy_przerwa = true; $typ_przerwy = 'Wolny termin / Przerwa 🔧'; } elseif ($godzina == 16 && $minuty >= 20 && $minuty <= 35) { $czy_przerwa = true; $typ_przerwy = 'Wolne okienko 🔧'; } elseif ($godzina == 17 && $minuty >= 10) { $czy_przerwa = true; $typ_przerwy = 'Krótka pauza 🔋'; } elseif ($godzina == 9 && $minuty <= 10) { $czy_przerwa = true; $typ_przerwy = 'Przerwa techniczna 🔋'; } } if (empty($usluga_bookly)) { try { if (isset($tables_exist) && $tables_exist) { $najblizsze_zlecenie = $wpdb->get_var($wpdb->prepare(" SELECT a.start_date FROM {$table_appointments} a LEFT JOIN {$table_customer_appointments} ca ON ca.appointment_id = a.id WHERE a.start_date > %s AND DATE(a.start_date) = DATE(%s) AND (ca.status IS NULL OR ca.status != 'cancelled') ORDER BY a.start_date ASC LIMIT 1 ", $teraz_str, $teraz_str)); } else { $najblizsze_zlecenie = null; } $ts_koniec_dnia = $dzis_koniec->getTimestamp(); $ts_teraz = $teraz->getTimestamp(); if ($najblizsze_zlecenie) { $wolny_czas_sekundy = strtotime($najblizsze_zlecenie) - $ts_teraz; } else { $wolny_czas_sekundy = $ts_koniec_dnia - $ts_teraz; } if ($wolny_czas_sekundy < 0) $wolny_czas_sekundy = 0; $stan_losowy = (($dzien_roku * 24) + $godzina) % 100; if ($wolny_czas_sekundy >= 3600 && $stan_losowy <= 30 && $czy_godziny) { if (empty($lokalizacja)) $lokalizacja = !empty($loc_reczna) ? $loc_reczna : $miejsca[($dzien_roku + $godzina) % count($miejsca)]; $pula_uslug = []; if (!empty($real_services) && is_array($real_services)) { foreach ($real_services as $s) { $pula_uslug[] = ['title' => $s->title, 'duration' => (int)$s->duration]; } } else { $pula_uslug[] = ['title' => 'Montaż TV-SAT', 'duration' => 5400]; } $dostepne_uslugi = []; foreach ($pula_uslug as $usl) { if ($usl['duration'] > 0 && $usl['duration'] <= $wolny_czas_sekundy) { $dostepne_uslugi[] = $usl; } } if (empty($dostepne_uslugi)) { usort($pula_uslug, function($a, $b) { return $a['duration'] - $b['duration']; }); $dostepne_uslugi[] = $pula_uslug[0]; } $indeks_uslugi = ($dzien_roku + $godzina) % count($dostepne_uslugi); $wylosowana_usluga = $dostepne_uslugi[$indeks_uslugi]; $usluga_bookly = $wylosowana_usluga['title']; $calkowity_czas_uslugi = (int)$wylosowana_usluga['duration']; if ($calkowity_czas_uslugi <= 0 || $calkowity_czas_uslugi > 14400) { $calkowity_czas_uslugi = 5400; } $sekundy_do_konca = $calkowity_czas_uslugi - ($ts_teraz % max(1, $calkowity_czas_uslugi)); if ($sekundy_do_konca > $wolny_czas_sekundy) { $sekundy_do_konca = $wolny_czas_sekundy; } } else { $usluga_bookly = 'Status: Brak zleceń'; $sekundy_do_konca = 0; if (empty($lokalizacja)) $lokalizacja = !empty($loc_reczna) ? $loc_reczna : 'Baza lub w terenie'; } } catch (\Throwable $e) { $usluga_bookly = 'Status: Oczekuje na harmonogram'; $sekundy_do_konca = 0; if (empty($lokalizacja)) $lokalizacja = !empty($loc_reczna) ? $loc_reczna : 'Baza lub w terenie'; } } else { if (empty($lokalizacja)) $lokalizacja = !empty($loc_reczna) ? $loc_reczna : $miejsca[($dzien_roku + $godzina) % count($miejsca)]; } $procent_wykonania = 100; if ($sekundy_do_konca > 0 && !$czy_przerwa) { $h = floor($sekundy_do_konca / 3600); $m = floor(($sekundy_do_konca % 3600) / 60); if ($is_multi_day_active) { $czas_info = "Dzisiejszy etap: "; } else { $czas_info = "Pozostało ok: "; } if ($h > 0) $czas_info .= "{$h} godz. "; if ($m > 0 || $h == 0) $czas_info .= "{$m} min."; $calkowity = ($calkowity_czas_uslugi > 0) ? $calkowity_czas_uslugi : 5400; $uplynelo = $calkowity - $sekundy_do_konca; if ($uplynelo < 0) $uplynelo = 0; $procent_wykonania = round(($uplynelo / max(1, $calkowity)) * 100); } $cel = clone $teraz; if ($teraz >= $dzis_koniec || !isset($grafik[$dzien_tyg]) || !is_array($grafik[$dzien_tyg])) { $cel->modify('+1 day'); $target_day = (int)$cel->format('N'); $h_start = (isset($grafik[$target_day]) && is_array($grafik[$target_day])) ? (int)$grafik[$target_day]['start_h'] : 8; $m_start = (isset($grafik[$target_day]) && is_array($grafik[$target_day])) ? (int)$grafik[$target_day]['start_m'] : 0; $cel->setTime($h_start, $m_start, 0); } elseif ($teraz < $dzis_start) { $cel->setTime((int)$grafik[$dzien_tyg]['start_h'], (int)$grafik[$dzien_tyg]['start_m'], 0); } $znal = false; $bezpiecznik_petli = 0; while (!$znal && $bezpiecznik_petli < 15) { $bezpiecznik_petli++; $c_md = $cel->format('m-d'); $c_ymd = $cel->format('Y-m-d'); $c_sw = (in_array($c_md, $swieta_stale) || $c_md == $pon_w || $c_md == $boze_c || in_array($c_md, $bookly_holidays_stale) || in_array($c_ymd, $bookly_holidays_jednorazowe)); $target_day_idx = (int)$cel->format('N'); $pracuje_w_ten_dzien = (isset($grafik[$target_day_idx]) && is_array($grafik[$target_day_idx])); if ($pracuje_w_ten_dzien && !$c_sw) { if ($bezpiecznik_petli > 1) { $h_start = (int)$grafik[$target_day_idx]['start_h']; $m_start = (int)$grafik[$target_day_idx]['start_m']; $cel->setTime($h_start, $m_start, 0); } $znal = true; } else { $cel->modify('+1 day'); $next_day = (int)$cel->format('N'); $h_start = (isset($grafik[$next_day]) && is_array($grafik[$next_day])) ? (int)$grafik[$next_day]['start_h'] : 8; $m_start = (isset($grafik[$next_day]) && is_array($grafik[$next_day])) ? (int)$grafik[$next_day]['start_m'] : 0; $cel->setTime($h_start, $m_start, 0); } } $diff = $teraz->diff($cel); $l_godzin = ($diff->days * 24) + $diff->h; $l_minut = $diff->i; if ($l_godzin == 0) { $odliczanie = $l_minut . " min."; } else { $odliczanie = $l_godzin . " godz. " . $l_minut . " min."; } // POGODA $jutro = ['t'=>'--','w'=>0,'icon'=>'☀️','msg'=>'Brak danych','biomet'=>'KORZYSTNY','wilg'=>'--','cisnienie'=>'--','color'=>'#22c55e','status'=>'STABILNIE','porada'=>'Dobre warunki.']; $pogoda_oryginalna_desc = 'Pobieranie...'; $pogoda_teraz = [ 'temp' => 0, 'desc' => 'Pobieranie...', 'id' => 800, 'wind' => 0, 'hum' => 0, 'pressure' => '--', 'time' => $teraz->format('H:i'), 'color' => '#27ae60', 'bg' => '#f1fcf4', 'status' => 'STABILNIE', 'alert' => '', 'pulse' => false, 'opis' => '', 'prognoza' => '' ]; $teraz_realnie_pracujemy = ($czy_godziny && !$czy_przerwa); $cc = get_transient('krupa_current_weather_data'); if (empty($cc) || !is_array($cc)) { $cc_res = wp_remote_get("https://api.openweathermap.org/data/2.5/weather?lat=51.3556&lon=22.5694&appid={$api_key}&units=metric&lang=pl", ['timeout'=>5]); if (!is_wp_error($cc_res) && wp_remote_retrieve_response_code($cc_res) == 200) { $cc = json_decode(wp_remote_retrieve_body($cc_res), true); if (is_array($cc) && isset($cc['weather'])) { set_transient('krupa_current_weather_data', $cc, 5 * MINUTE_IN_SECONDS); } else { $cc = ['error' => true]; } } else { $cc = ['error' => true]; set_transient('krupa_current_weather_data', $cc, 2 * MINUTE_IN_SECONDS); } } $fj = get_transient('krupa_weather_transient_data'); if (empty($fj) || !is_array($fj)) { $f_res = wp_remote_get("https://api.openweathermap.org/data/2.5/forecast?lat=51.3556&lon=22.5694&appid={$api_key}&units=metric&lang=pl", ['timeout'=>5]); if (!is_wp_error($f_res) && wp_remote_retrieve_response_code($f_res) == 200) { $fj = json_decode(wp_remote_retrieve_body($f_res), true); if (is_array($fj) && isset($fj['list'])) { set_transient('krupa_weather_transient_data', $fj, 15 * MINUTE_IN_SECONDS); } else { $fj = ['error' => true]; } } else { $fj = ['error' => true]; set_transient('krupa_weather_transient_data', $fj, 2 * MINUTE_IN_SECONDS); } } $id_teraz = 800; $temp_teraz = 20; $wilg_teraz = 50; $wiatr_teraz = 10; if (is_array($cc) && isset($cc['weather'][0])) { $pogoda_oryginalna_desc = ucfirst($cc['weather'][0]['description']); $pogoda_teraz['desc'] = $pogoda_oryginalna_desc; $id_teraz = (int)$cc['weather'][0]['id']; $pogoda_teraz['id'] = $id_teraz; $temp_teraz = round($cc['main']['temp']); $pogoda_teraz['temp'] = $temp_teraz; $wiatr_teraz = isset($cc['wind']['speed']) ? round($cc['wind']['speed'] * 3.6) : 0; $pogoda_teraz['wind'] = $wiatr_teraz; $wilg_teraz = isset($cc['main']['humidity']) ? $cc['main']['humidity'] : 0; $pogoda_teraz['hum'] = $wilg_teraz; $pogoda_teraz['pressure'] = isset($cc['main']['pressure']) ? $cc['main']['pressure'] : '--'; } $id_za_chwile = 800; if (is_array($fj) && isset($fj['list'][0])) { $id_za_chwile = (int)$fj['list'][0]['weather'][0]['id']; } $pogoda_teraz['alert'] = $teraz_realnie_pracujemy ? '✅ Optymalna aura. Warunki sprzyjające pracom na zewnątrz.' : '✅ Stabilna i spokojna aura. Dobre warunki atmosferyczne.'; $pogoda_teraz['color'] = '#27ae60'; $pogoda_teraz['bg'] = '#f1fcf4'; $pogoda_teraz['status'] = 'STABILNIE'; $pogoda_teraz['pulse'] = false; if ($id_teraz >= 200 && $id_teraz < 300) { $pogoda_teraz['desc'] = "⛈️ " . $pogoda_oryginalna_desc; $pogoda_teraz['color'] = '#EF2020'; $pogoda_teraz['status'] = 'ALARM: BURZA'; $pogoda_teraz['pulse'] = true; $pogoda_teraz['alert'] = $teraz_realnie_pracujemy ? '⚠️ Wyładowania atmosferyczne! Prace wysokościowe są wstrzymane.' : '⛈️ Niebezpieczne wyładowania atmosferyczne oraz deszcz.'; $pogoda_teraz['bg'] = '#fff5f5'; } elseif (($id_za_chwile >= 200 && $id_za_chwile < 600) && ($id_teraz >= 800)) { $pogoda_teraz['desc'] = "⚠️ Zbliżają się opady"; $pogoda_teraz['color'] = '#EF2020'; $pogoda_teraz['status'] = 'OPADY ZA MOMENT'; $pogoda_teraz['pulse'] = true; $pogoda_teraz['alert'] = '⚠️ Radar live wykrywa zbliżający front deszczowy.'; $pogoda_teraz['bg'] = '#fff5f5'; } elseif ($id_teraz >= 500 && $id_teraz < 600) { $pogoda_teraz['desc'] = "🌧️ " . $pogoda_oryginalna_desc; $pogoda_teraz['color'] = '#ff9800'; $pogoda_teraz['status'] = 'OPADY DESZCZU'; $pogoda_teraz['alert'] = $teraz_realnie_pracujemy ? '🌧️ Występujące opady ograniczają bezpieczne działania na zewnątrz.' : '🌧️ Odnotowano opady deszczu.'; $pogoda_teraz['bg'] = '#fff9f2'; } elseif ($wiatr_teraz > 25) { $pogoda_teraz['color'] = '#EF2020'; $pogoda_teraz['status'] = 'SILNY WIATR'; $pogoda_teraz['pulse'] = true; $pogoda_teraz['alert'] = "⚠️ Silne porywy wiatru ({$wiatr_teraz} km/h). Bezpieczeństwo jest priorytetem."; $pogoda_teraz['bg'] = '#fff9f2'; } elseif ($id_teraz >= 600 && $id_teraz < 700) { $pogoda_teraz['desc'] = "❄️ " . $pogoda_oryginalna_desc; $pogoda_teraz['color'] = '#3182ce'; $pogoda_teraz['status'] = 'WARUNKI ZIMOWE'; $pogoda_teraz['bg'] = '#ebf8ff'; } $pogoda_teraz['opis'] = $pogoda_teraz['alert']; $pogoda_teraz['prognoza'] = "Brak zmian atmosferycznych w ciągu najbliższych godzin."; if (is_array($fj) && isset($fj['list'][1])) { $n_id = $fj['list'][1]['weather'][0]['id']; $n_desc = function_exists('mb_strtolower') ? mb_strtolower($fj['list'][1]['weather'][0]['description']) : strtolower($fj['list'][1]['weather'][0]['description']); $n_temp = round($fj['list'][1]['main']['temp']); $n_wind = round($fj['list'][1]['wind']['speed'] * 3.6); if ($n_id >= 200 && $n_id < 300) { $pogoda_teraz['prognoza'] = "⛈️ Uwaga: spodziewane burze i wyładowania."; } elseif ($n_id >= 500 && $n_id < 600) { $pogoda_teraz['prognoza'] = "🌧️ W ciągu 3h prognozowane opady ({$n_desc})."; } elseif ($n_wind > 25) { $pogoda_teraz['prognoza'] = "💨 Możliwy wzrost siły wiatru do {$n_wind} km/h."; } else { $pogoda_teraz['prognoza'] = "☁️ Przewidujemy stabilnie: {$n_desc}, ok. {$n_temp}°C."; } } $obj_jutro = (clone $teraz)->modify('+1 day'); $jutro_m_d = $obj_jutro->format('m-d'); $jutro_y_m_d = $obj_jutro->format('Y-m-d'); $jutro_dzien_tyg = (int)$obj_jutro->format('N'); $jutro_czy_swieto = (in_array($jutro_m_d, $swieta_stale) || $jutro_m_d == $pon_w || $jutro_m_d == $boze_c || in_array($jutro_m_d, $bookly_holidays_stale) || in_array($jutro_y_m_d, $bookly_holidays_jednorazowe)); $jutro_czy_pracuje = (isset($grafik[$jutro_dzien_tyg]) && is_array($grafik[$jutro_dzien_tyg]) && !$jutro_czy_swieto); if (is_array($fj) && isset($fj['list'][8])) { $item = $fj['list'][8]; $f_id = $item['weather'][0]['id']; $f_desc = function_exists('mb_strtolower') ? mb_strtolower($item['weather'][0]['description']) : strtolower($item['weather'][0]['description']); $f_t = round($item['main']['temp']); $f_w = round($item['wind']['speed'] * 3.6); $jutro['t'] = $f_t; $jutro['w'] = $f_w; $jutro['wilg'] = $item['main']['humidity']; $jutro['cisnienie'] = $item['main']['pressure']; if ($jutro_czy_pracuje) { $full_msg = "Jutro zapowiada się: {$f_desc} przy ok. {$f_t}°C. "; if ($f_w > 25 || $f_id < 600) { $full_msg .= "Realizacje zleceń będziemy wykonywać z ostrożnością."; $jutro['biomet'] = "NIEKORZYSTNY"; $jutro['color'] = "#ef4444"; $jutro['status'] = "UWAGA"; $jutro['icon'] = "🌧️"; $jutro['porada'] = "Wymagana ostrożność podczas montażu."; } else { $full_msg .= "Bardzo stabilne warunki. Prace będą przebiegać bez zakłóceń! 🚀"; $jutro['porada'] = "Dobre warunki do pracy na zewnątrz w terenie."; } } else { $full_msg = "Jutro oczekujemy aury typu: {$f_desc}, ok. {$f_t}°C. "; $jutro['porada'] = "Jak na dzień wolny od pracy możemy tylko życzyć miłego odpoczynku"; } $jutro['msg'] = $full_msg; } if (!$czy_godziny) { $pogoda_teraz['status'] = 'FIRMA NIECZYNNA'; $pogoda_teraz['color'] = '#1e5799'; $pogoda_teraz['bg'] = '#f0f7ff'; } $master_data = compact('status_reczny','opis_reczny','lokalizacja','usluga_bookly','czas_info','czy_godziny','jutro','pogoda_teraz','czy_swieto','odliczanie','czy_przerwa','typ_przerwy', 'l_godzin', 'l_minut', 'procent_wykonania'); return $master_data; } } if (!function_exists('krupa_v55_ajax_handler')) { function krupa_v55_ajax_handler() { // Agresywne wyczyszczenie bufora (blokuje "krzaczki", które psują JSON i wyłączają widgety) if (ob_get_length()) { ob_clean(); } $c = get_krupa_master_data(); $status_final = function_exists('krupa_get_current_effective_status') ? krupa_get_current_effective_status() : ''; $czy_urlop = ($status_final === 'urlop'); $tz = new DateTimeZone('Europe/Warsaw'); $teraz = new DateTime('now', $tz); $H = (int)$teraz->format('G'); $witamy = ($H >= 5 && $H < 18) ? "Dzień dobry" : (($H >= 18 && $H < 22) ? "Dobry wieczór" : "Miłej nocy"); $lokalizacja = isset($c['lokalizacja']) ? $c['lokalizacja'] : 'Baza'; $usluga = isset($c['usluga_bookly']) ? $c['usluga_bookly'] : 'Status: Brak zleceń'; $opis = isset($c['opis_reczny']) && !empty($c['opis_reczny']) ? $c['opis_reczny'] : $usluga; $miejsce = '📌 ' . $lokalizacja; $txt = $opis; $kolor = '#EF2020'; $ikona = (function_exists('mb_stripos') ? (mb_stripos($usluga, 'wifi') !== false) : (stripos($usluga, 'wifi') !== false)) ? '📶' : '📡'; $display_time = isset($c['czas_info']) ? $c['czas_info'] : ''; $odliczanie = isset($c['odliczanie']) ? $c['odliczanie'] : ''; $czy_swieto = isset($c['czy_swieto']) ? $c['czy_swieto'] : false; $czy_przerwa = isset($c['czy_przerwa']) ? $c['czy_przerwa'] : false; $czy_godziny = isset($c['czy_godziny']) ? $c['czy_godziny'] : false; if ($status_final === 'urlop') { $ikona = '🌴'; $miejsce = 'STATUS: URLOP'; $txt = 'Odpoczywamy. Zapraszamy wkrótce!'; $kolor = '#38b2ac'; $display_time = ''; } elseif ($czy_swieto) { $ikona = '🌴'; $miejsce = 'TERAZ MAMY WOLNE'; $txt = 'Wracamy za: ' . $odliczanie; $kolor = '#4A5568'; $display_time = ''; } elseif ($czy_przerwa) { $ikona = '🥪'; $miejsce = 'CHWILA PRZERWY'; $txt = isset($c['typ_przerwy']) ? $c['typ_przerwy'] : ''; $kolor = '#f59e0b'; $display_time = ''; } elseif (!$czy_godziny && !$czy_urlop) { $l_godzin = isset($c['l_godzin']) ? $c['l_godzin'] : 0; $l_minut = isset($c['l_minut']) ? $c['l_minut'] : 0; if ($l_godzin == 0) { $ikona = '⏳'; $miejsce = 'Jesteśmy: PRZED PRACĄ'; } else { $ikona = '🌙'; $miejsce = 'Jesteśmy: PO PRACY'; } if ($l_godzin == 0 && $l_minut <= 5) { $txt = '🏡 Ostatnie minuty przed pracą, startujemy za: ' . $odliczanie . ''; } else { $txt = ' Odpoczywamy, ładujemy akumulatorki, zaczniemy za: ' . $odliczanie . ''; } $kolor = '#4A5568'; $display_time = ''; } if ($usluga === 'Status: Brak zleceń' && !$czy_przerwa && $czy_godziny && !$czy_urlop && !$czy_swieto) { $ikona = '🟢'; $kolor = '#27ae60'; } wp_send_json([ 'witamy' => $witamy, 'pracujemy' => $czy_godziny && !$czy_przerwa && !$czy_urlop, 'jutro' => isset($c['jutro']) ? $c['jutro'] : [], 'pogoda' => isset($c['pogoda_teraz']) ? $c['pogoda_teraz'] : [], 'odliczanie'=> $odliczanie, 'miejsce' => $miejsce, 'txt' => $txt, 'czas' => $display_time, 'kolor' => $kolor, 'ikona' => $ikona, 'procent' => isset($c['procent_wykonania']) ? $c['procent_wykonania'] : 100, 'ver' => 'KRUPAs CORE V56.3.1 LIVE' ]); wp_die(); } } add_action('wp_ajax_get_krupa_status', 'krupa_v55_ajax_handler'); add_action('wp_ajax_nopriv_get_krupa_status', 'krupa_v55_ajax_handler');