Stenogram Sejmu · 2026-09-02

Wojciech Michał Zubowski

Kadencja 10 · posiedzenie 64 · wypowiedź 26

Profil posła

Brak głosu imiennego z tego dnia, który potwierdzałby klub mówcy.

Pełna wypowiedź

10. kadencja, 64. posiedzenie, 1. dzień (02-09-2026) 1. punkt porządku dziennego: Sprawozdanie Komisji Sprawiedliwości i Praw Człowieka o senackim projekcie ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz odpowiedzialności za naruszenie obowiązków w tych sprawach (druki nr 2769 i 2833). Poseł Wojciech Michał Zubowski: Panie Marszałku! Wysoka Izbo! Mam zaszczyt przedstawić stanowisko Klubu Parlamentarnego Rozwój Plus wobec sprawozdania komisji o senackim projekcie ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz odpowiedzialności za naruszenie obowiązków w tych sprawach, druki nr 2769 i 2833. Szanowni Państwo! Debata nad tym projektem ustawy miała już miejsce na sali plenarnej w lipcu tego roku. Padł wówczas wniosek o odrzucenie zawartych w nim rozwiązań. Trudno temu się dziwić, skoro również podczas szczegółowej dyskusji nad projektem ustawy prowadzonej na posiedzeniu komisji sami przedstawiciele Państwowej Komisji Wyborczej wyrażali się o projekcie z dezaprobatą. Wątpliwości podzieliło też sejmowe Biuro Ekspertyz i Oceny Skutków Regulacji. Podczas dyskusji w komisji, jak również na sali plenarnej zwracano uwagę na zagrożenia dotyczące upolitycznienia Państwowej Komisji Wyborczej, na co, nawiasem mówiąc, jest już chyba za późno, na niejasny podział kompetencji, wyjątkowo krótki okres prowadzenia konsultacji społecznych, a nawet na brak gotowości finansowej i organizacyjnej poszczególnych instytucji do realizacji przydzielonych im zadań. Szanowni Państwo! Pozwolę sobie przytoczyć fragment stenogramu z posiedzenia komisji: Mając te kwestie na uwadze, tak jak w postępowaniu dotyczącym tych kwestii prowadzonym w Senacie, Państwowa Komisja Wyborcza nie popiera powierzenia jej tych obowiązków, o których jest mowa w rozporządzeniu. Zwracamy uwagę, tak jak dotychczas w opiniach wyrażonych w postępowaniu w Senacie, że przyjęcie tych rozwiązań mogłoby godzić w wiarygodność procesów wyborczych w Polsce, w system kontroli finansowania partii politycznych, kampanii wyborczej, a także w pluralizm polityczny i mogłoby to negatywnie wpływać na potrzebę zagwarantowania możliwie największej niezależności organów wyborczych i izolowania ich od bieżących sporów politycznych. To jest, proszę państwa, głos dyrektora Zespołu Kontroli Finansowej Partii Politycznych i Kampanii Wyborczych w Krajowym Biurze Wyborczym. Szanowni Państwo! Niestety na istotne pytania zadawane przedstawicielowi wnioskodawców nie zostały udzielone jasne odpowiedzi, a liczba wątpliwości wręcz się pogłębiła. By było jasne: kwestie uregulowania reklam politycznych, wskazywania ich finansowania i odpowiednich oznaczeń powinny być jasne i klarowne. Zanim jednak zaczniemy wdrażać unijne przepisy, powinniśmy mieć przekonanie, że nie będzie to kolejna próba założenia politycznego knebla na obecną opozycję przez rządzące ugrupowania, które nie widzą i nie chcą widzieć problemów związanych, choćby do dziś, z niewyjaśnionymi kwestiami wspierania przez tego typu kampanie ich kandydata w ostatnich wyborach prezydenckich. Takie przekonanie można mieć i jest to przekonanie uzasadnione. Dlatego, szanowni państwo, w imieniu Klubu Parlamentarnego Rozwój Plus opowiadam się za odrzuceniem proponowanego projektu ustawy wraz z przyjętymi na posiedzeniu komisji zmianami. Dziękuję bardzo. (Oklaski) Przebieg posiedzenia

Otwórz zachowany oryginał · Źródło urzędowe

Dowód treści wypowiedzi

Dowód kolejności na liście dnia

Kontekst w stenogramie

  1. Wcześniej · wypowiedź 24 Paweł Szrot 10. kadencja, 64. posiedzenie, 1. dzień (02-09-2026) 1. punkt porządku dziennego: Sprawozdanie Komisji Sprawiedliwości i Praw Człowieka o senackim projekcie ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz o
  2. Wcześniej · wypowiedź 25 Sylwia Bielawska 10. kadencja, 64. posiedzenie, 1. dzień (02-09-2026) 1. punkt porządku dziennego: Sprawozdanie Komisji Sprawiedliwości i Praw Człowieka o senackim projekcie ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz o
  3. Później · wypowiedź 27 Michał Pyrzyk 10. kadencja, 64. posiedzenie, 1. dzień (02-09-2026) 1. punkt porządku dziennego: Sprawozdanie Komisji Sprawiedliwości i Praw Człowieka o senackim projekcie ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz o
  4. Później · wypowiedź 28 Arkadiusz Sikora 10. kadencja, 64. posiedzenie, 1. dzień (02-09-2026) 1. punkt porządku dziennego: Sprawozdanie Komisji Sprawiedliwości i Praw Człowieka o senackim projekcie ustawy o organach właściwych i postępowaniach w sprawach reklamy politycznej oraz o
1. (2.73ms; exec 2.68 + fetch 0.05; rows 1) SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.object_id AS member_id, d…
2. (0.77ms; exec 0.75 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
3. (0.82ms; exec 0.8 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 4486 ORDER BY ordinal
4. (1.12ms; exec 1.04 + fetch 0.08; rows 4) SELECT statement.object_id, statement.statement_number, statement.speaker_name, dayStatement.ordinal FROM sejm_transcrip…
5. (3.82ms; exec 3.79 + fetch 0.03; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
6. (1.75ms; exec 1.69 + fetch 0.06; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
7. (0.83ms; exec 0.82 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 4484 ORDER BY ordinal
8. (0.94ms; exec 0.93 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
9. (0.73ms; exec 0.72 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
10. (0.81ms; exec 0.79 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 4485 ORDER BY ordinal
11. (1.57ms; exec 1.56 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
12. (1.43ms; exec 1.42 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
13. (1.18ms; exec 1.17 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 4487 ORDER BY ordinal
14. (1.67ms; exec 1.66 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.obje…
15. (1.09ms; exec 1.08 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extracti…
16. (0.69ms; exec 0.68 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 4488 ORDER BY ordinal
17. (2.89ms; exec 2.88 + fetch 0.01; rows 0) SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_vote…
toggle
1. (2.73ms; exec 2.68 + fetch 0.05; rows 1) SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.object_id AS member_id, day.object_id AS day_id, day.term, day.proceeding_number, day.source_date, day.current_revision_id AS day_revision_id, dayStatement.ordinal, dayEvidence.id AS list_evidence_id, dayEvidence.selector_type AS list_selector_type, dayEvidence.selector AS list_selector, dayFetch.id AS list_fetch_id, dayFetch.requested_url AS list_source_url, dayArtifact.sha256 AS list_sha256, binding.artifact_id, binding.evidence_id AS transcript_evidence_id, transcriptEvidence.selector_type AS transcript_selector_type, transcriptEvidence.selector AS transcript_selector, transcriptFetch.id AS transcript_fetch_id, transcriptFetch.requested_url AS transcript_source_url, artifact.sha256 AS transcript_sha256, artifact.detected_mime, artifact.byte_size FROM sejm_statements s JOIN sejm_transcript_days day ON day.object_id = s.transcript_day_id LEFT JOIN sejm_mp_identities mp ON mp.term = day.term AND mp.mp_number = s.source_member_id LEFT JOIN sejm_transcript_day_statements dayStatement ON dayStatement.day_id = day.object_id AND dayStatement.day_revision_id = day.current_revision_id AND dayStatement.statement_id = s.object_id LEFT JOIN evidence dayEvidence ON dayEvidence.id = dayStatement.evidence_id LEFT JOIN fetches dayFetch ON dayFetch.id = dayEvidence.fetch_id LEFT JOIN artifacts dayArtifact ON dayArtifact.id = dayEvidence.artifact_id LEFT JOIN documents document ON document.owner_object_id = day.object_id AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', s.statement_number) LEFT JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) LEFT JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL LEFT JOIN evidence transcriptEvidence ON transcriptEvidence.id = binding.evidence_id LEFT JOIN fetches transcriptFetch ON transcriptFetch.id = transcriptEvidence.fetch_id LEFT JOIN artifacts artifact ON artifact.id = binding.artifact_id WHERE s.object_id = 17060 LIMIT 1
2. (0.77ms; exec 0.75 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 17187 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
3. (0.82ms; exec 0.8 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 4486 ORDER BY ordinal
4. (1.12ms; exec 1.04 + fetch 0.08; rows 4) SELECT statement.object_id, statement.statement_number, statement.speaker_name, dayStatement.ordinal FROM sejm_transcript_day_statements dayStatement JOIN sejm_statements statement ON statement.object_id = dayStatement.statement_id WHERE dayStatement.day_id = 17033 AND dayStatement.day_revision_id = 16659 AND dayStatement.ordinal BETWEEN 24 AND 28 AND statement.object_id <> 17060 ORDER BY dayStatement.ordinal
5. (3.82ms; exec 3.79 + fetch 0.03; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 17033 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 24) LIMIT 1
6. (1.75ms; exec 1.69 + fetch 0.06; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 17185 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
7. (0.83ms; exec 0.82 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 4484 ORDER BY ordinal
8. (0.94ms; exec 0.93 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 17033 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 25) LIMIT 1
9. (0.73ms; exec 0.72 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 17186 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
10. (0.81ms; exec 0.79 + fetch 0.02; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 4485 ORDER BY ordinal
11. (1.57ms; exec 1.56 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 17033 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 27) LIMIT 1
12. (1.43ms; exec 1.42 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 17188 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
13. (1.18ms; exec 1.17 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 4487 ORDER BY ordinal
14. (1.67ms; exec 1.66 + fetch 0.01; rows 1) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 17033 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 28) LIMIT 1
15. (1.09ms; exec 1.08 + fetch 0.01; rows 1) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = 17189 AND run.state = 'completed' ORDER BY CASE extraction.quality_state WHEN 'success' THEN 0 WHEN 'unreadable' THEN 1 ELSE 2 END, run.finished_at DESC, extraction.id DESC LIMIT 1
16. (0.69ms; exec 0.68 + fetch 0.01; rows 1) SELECT source_text FROM text_segments WHERE extraction_id = 4488 ORDER BY ordinal
17. (2.89ms; exec 2.88 + fetch 0.01; rows 0) SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_votes vote ON vote.object_id = individual.vote_id AND vote.current_revision_id = individual.vote_revision_id JOIN object_revisions revision ON revision.id = vote.current_revision_id JOIN evidence e ON e.id = individual.evidence_id JOIN fetches f ON f.id = e.fetch_id WHERE vote.term = 10 AND vote.sitting_number = 64 AND individual.mp_number = 457 AND LEFT(JSON_VALUE(revision.snapshot, '$.date'), 10) = '2026-09-02' AND individual.raw_club IS NOT NULL AND individual.raw_club <> '' ORDER BY vote.voting_number DESC
Top slow:
3.82ms SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.documen…
2.89ms SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes indiv…
2.73ms SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.objec…
toggle
3.82ms SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = 17033 AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', 24) LIMIT 1
2.89ms SELECT individual.raw_club, individual.evidence_id, f.requested_url FROM sejm_individual_votes individual JOIN sejm_votes vote ON vote.object_id = individual.vote_id AND vote.current_revision_id = individual.vote_revision_id JOIN object_revisions revision ON revision.id = vote.current_revision_id JOIN evidence e ON e.id = individual.evidence_id JOIN fetches f ON f.id = e.fetch_id WHERE vote.term = 10 AND vote.sitting_number = 64 AND individual.mp_number = 457 AND LEFT(JSON_VALUE(revision.snapshot, '$.date'), 10) = '2026-09-02' AND individual.raw_club IS NOT NULL AND individual.raw_club <> '' ORDER BY vote.voting_number DESC
2.73ms SELECT s.object_id AS statement_id, s.statement_number, s.speaker_name, s.source_member_id, mp.object_id AS member_id, day.object_id AS day_id, day.term, day.proceeding_number, day.source_date, day.current_revision_id AS day_revision_id, dayStatement.ordinal, dayEvidence.id AS list_evidence_id, dayEvidence.selector_type AS list_selector_type, dayEvidence.selector AS list_selector, dayFetch.id AS list_fetch_id, dayFetch.requested_url AS list_source_url, dayArtifact.sha256 AS list_sha256, binding.artifact_id, binding.evidence_id AS transcript_evidence_id, transcriptEvidence.selector_type AS transcript_selector_type, transcriptEvidence.selector AS transcript_selector, transcriptFetch.id AS transcript_fetch_id, transcriptFetch.requested_url AS transcript_source_url, artifact.sha256 AS transcript_sha256, artifact.detected_mime, artifact.byte_size FROM sejm_statements s JOIN sejm_transcript_days day ON day.object_id = s.transcript_day_id LEFT JOIN sejm_mp_identities mp ON mp.term = day.term AND mp.mp_number = s.source_member_id LEFT JOIN sejm_transcript_day_statements dayStatement ON dayStatement.day_id = day.object_id AND dayStatement.day_revision_id = day.current_revision_id AND dayStatement.statement_id = s.object_id LEFT JOIN evidence dayEvidence ON dayEvidence.id = dayStatement.evidence_id LEFT JOIN fetches dayFetch ON dayFetch.id = dayEvidence.fetch_id LEFT JOIN artifacts dayArtifact ON dayArtifact.id = dayEvidence.artifact_id LEFT JOIN documents document ON document.owner_object_id = day.object_id AND document.document_kind = 'statement_transcript' AND document.source_document_key = CONCAT('sejm:statement:', s.statement_number) LEFT JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) LEFT JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = 'html' AND binding.current_selector_sha IS NOT NULL LEFT JOIN evidence transcriptEvidence ON transcriptEvidence.id = binding.evidence_id LEFT JOIN fetches transcriptFetch ON transcriptFetch.id = transcriptEvidence.fetch_id LEFT JOIN artifacts artifact ON artifact.id = binding.artifact_id WHERE s.object_id = 17060 LIMIT 1
N+1 candidates:
5× (5.77ms) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing…
5× (4.33ms) SELECT source_text FROM text_segments WHERE extraction_id = ? ORDER BY ordinal
4× (8ms) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON versi…
toggle
5× (5.77ms) SELECT extraction.id, extraction.quality_state FROM extractions extraction JOIN processing_runs run ON run.id = extraction.run_id WHERE extraction.source_artifact_id = ? AND run.state = ? ORDER BY CASE extraction.quality_state WHEN ? THEN ? WHEN ? THEN ? ELSE ? END, run.finished_at DESC, extraction.id DESC LIMIT ?
5× (4.33ms) SELECT source_text FROM text_segments WHERE extraction_id = ? ORDER BY ordinal
4× (8ms) SELECT binding.artifact_id FROM documents document JOIN document_versions version ON version.document_id = document.object_id AND version.sequence_no = (SELECT MAX(latest.sequence_no) FROM document_versions latest WHERE latest.document_id = document.object_id) JOIN document_version_artifacts binding ON binding.version_id = version.object_id AND binding.role = ? AND binding.current_selector_sha IS NOT NULL WHERE document.owner_object_id = ? AND document.document_kind = ? AND document.source_document_key = CONCAT(?, ?) LIMIT ?
PHP: 33.6ms | App: 33.2ms | DB: 24.9ms (17, rows: 19) [exec: 24.5ms, fetch: 0.4ms] | View: 0.2ms (1) | Mem: 2MB (peak: 2MB) | Files: 20
toggle files
(0.18ms) /app/templates/speeches/show.php
/app/public/index.php
/app/vendor/autoload.php
/app/vendor/composer/autoload_real.php
/app/vendor/composer/platform_check.php
/app/vendor/composer/ClassLoader.php
/app/vendor/composer/autoload_static.php
/app/vendor/symfony/deprecation-contracts/function.php
/app/vendor/symfony/polyfill-php83/bootstrap.php
/app/lib/PFrame.php
/app/config/credentials/local.php
/app/src/Http/PublicResponseCache.php
/app/src/Http/AuthRoutes.php
/app/src/Http/ReviewDecisionRoutes.php
/app/src/Http/TopicDecisionRoutes.php
/app/src/Http/WatchRoutes.php
/app/src/Http/SpeechController.php
/app/src/Overview/SpeechReadModel.php
/app/src/Text/TextSearch.php
/app/templates/layout.php