diff --git a/sources/Afup/Forum/AppelConferencier.php b/sources/Afup/Forum/AppelConferencier.php index faa0efee9..645f7169a 100644 --- a/sources/Afup/Forum/AppelConferencier.php +++ b/sources/Afup/Forum/AppelConferencier.php @@ -4,134 +4,43 @@ namespace Afup\Site\Forum; -use Afup\Site\Utils\Base_De_Donnees; -use AppBundle\Event\Model\Talk; +use AppBundle\Event\Model\Repository\EventRepository; +use AppBundle\Event\Model\Repository\SpeakerRepository; +use AppBundle\Event\Model\Repository\TalkRepository; +use CCMBenchmark\Ting\Repository\CollectionInterface; class AppelConferencier { - public const DEFAULT_JOURNEE = 0; + public function __construct( + private readonly TalkRepository $talkRepository, + private readonly SpeakerRepository $speakerRepository, + private readonly EventRepository $eventRepository, + ) {} - public function __construct(private readonly Base_De_Donnees $_bdd) {} - - public function supprimerSession($id) - { - $this->delierSession($id); - - $requete = ' DELETE FROM afup_sessions '; - $requete .= ' WHERE session_id = ' . $this->_bdd->echapper($id); - - return $this->_bdd->executer($requete); - } - - public function obtenirCommentairesPourSession($id = 0) - { - $requete = ' SELECT '; - $requete .= ' co.*, '; - $requete .= ' pp.nom, '; - $requete .= ' pp.prenom '; - $requete .= ' FROM '; - $requete .= ' afup_forum_sessions_commentaires co '; - $requete .= ' LEFT JOIN '; - $requete .= ' afup_personnes_physiques pp'; - $requete .= ' ON '; - $requete .= ' co.id_personne_physique = pp.id'; - $requete .= ' WHERE co.id_session = ' . $this->_bdd->echapper($id); - $requete .= ' ORDER BY date ASC'; - - return $this->_bdd->obtenirTous($requete); - } - - public function obtenirConferenciersPourSession($id = 0) + public function obtenirConferenciersPourSession(int $id = 0): CollectionInterface { - $requete = ' SELECT '; - $requete .= ' LOWER(CONCAT(SUBSTRING(c.prenom, 1, 1), c.nom)) as code, '; - $requete .= ' c.* '; - $requete .= ' FROM '; - $requete .= ' afup_conferenciers c '; - $requete .= ' INNER JOIN '; - $requete .= ' afup_conferenciers_sessions cs'; - $requete .= ' ON '; - $requete .= ' c.conferencier_id = cs.conferencier_id'; - $requete .= ' WHERE cs.session_id = ' . $this->_bdd->echapper($id); - - return $this->_bdd->obtenirTous($requete); - } - - public function obtenirSession($id = 0, string $champs = '*', $complement = true) - { - $this->_bdd->executer("SET NAMES utf8mb4"); - - $requete = ' SELECT '; - $requete .= ' ' . $champs . ' '; - $requete .= ' FROM '; - $requete .= ' afup_sessions '; - $requete .= ' WHERE session_id = ' . $this->_bdd->echapper($id); - - $session = $this->_bdd->obtenirEnregistrement($requete); - - if ($complement) { - $requete = ' SELECT '; - $requete .= ' cs.conferencier_id, '; - $requete .= ' c.id_forum'; - $requete .= ' FROM '; - $requete .= ' afup_conferenciers_sessions cs'; - $requete .= ' INNER JOIN '; - $requete .= ' afup_conferenciers c'; - $requete .= ' ON '; - $requete .= ' c.conferencier_id = cs.conferencier_id'; - $requete .= ' WHERE cs.session_id = ' . $this->_bdd->echapper($id); - - $complements = $this->_bdd->obtenirTous($requete); - $i = 1; - foreach ($complements as $complement) { - $session['id_forum'] = $complement['id_forum']; - $session['conferencier_id_' . $i] = $complement['conferencier_id']; - $i++; - } - } - - return $session; + return $this->speakerRepository->getSpeakersBySession($id); } - /** - * @return mixed[] - */ - public function obtenirListeSessionsAvecResumes($id_forum): array + public function obtenirListeSessionsAvecResumes(int $id_forum): array { - $requete = ' SELECT '; - $requete .= ' se.session_id, '; - $requete .= ' se.* '; - $requete .= ' FROM '; - $requete .= ' afup_sessions se '; - $requete .= ' LEFT JOIN '; - $requete .= ' afup_forum_planning pl '; - $requete .= ' ON se.session_id = pl.id_session'; - $requete .= ' WHERE se.id_forum = ' . $this->_bdd->echapper($id_forum); - $requete .= ' AND se.plannifie = 1'; - $requete .= ' AND se.genre != 9 '; - $requete .= ' ORDER BY '; - $requete .= ' pl.debut, se.titre'; - - $sessions = $this->_bdd->obtenirTous($requete); + $sessions = $this->talkRepository->getScheduledTalksByEvent($id_forum); $sessionsAvecId = []; foreach ($sessions as $session) { $sessionsAvecId[$session['session_id']] = $session; } - $sessionsAvecResumes = []; - - - $forum = new Forum($this->_bdd); - $forum_details = $forum->obtenir($id_forum); - if (!$forum_details) { + $event = $this->eventRepository->get($id_forum); + if ($event === null) { return []; } - $directoryPath = __DIR__ . "/../../../htdocs/templates/" . $forum_details['path'] . "/resumes/"; + $directoryPath = __DIR__ . "/../../../htdocs/templates/" . $event->getPath() . "/resumes/"; if (!is_dir($directoryPath)) { return []; } + $sessionsAvecResumes = []; $repertoire = new \DirectoryIterator($directoryPath); foreach ($repertoire as $file) { if (preg_match("/^[1-9]/", $file->getFilename())) { @@ -146,243 +55,17 @@ public function obtenirListeSessionsAvecResumes($id_forum): array return $sessionsAvecResumes; } - public function obtenirListeSessionsPlannifies($id_forum) + public function obtenirListeSessionsPlannifies(int $id_forum): array { - $requete = ' SELECT '; - $requete .= " ( SELECT CONCAT(c.prenom, ' ', c.nom,' - ', c.societe ) FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id order by c.conferencier_id asc limit 1) as conf1 , - ( SELECT twitter FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id order by c.conferencier_id asc limit 1) as twitter1 , - ( SELECT cs.conferencier_id FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id order by c.conferencier_id asc limit 1) as conferencier_id1 , - ( SELECT CONCAT(c.prenom, ' ', c.nom,' - ', c.societe) FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id order by c.conferencier_id asc limit 1,1) as conf2 , - ( SELECT twitter FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id order by c.conferencier_id asc limit 1,1) as twitter2 , - ( SELECT cs.conferencier_id FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id order by c.conferencier_id asc limit 1,1) as conferencier_id2 , "; - - $requete .= ' se.*, '; - $requete .= ' IF(se.journee = 1, "boss", IF(se.journee = 2, "geek", "boss geek")) as journee, '; - $requete .= ' sa.nom as nom_salle, '; - $requete .= ' pl.id, '; - $requete .= ' pl.debut, '; - $requete .= ' pl.fin, '; - $requete .= ' pl.keynote, '; - $requete .= ' pl.id_salle, '; - $requete .= ' se.joindin '; - $requete .= ' FROM '; - $requete .= ' afup_sessions se '; - $requete .= ' LEFT JOIN '; - $requete .= ' afup_forum_planning pl '; - $requete .= ' ON se.session_id = pl.id_session'; - $requete .= ' LEFT JOIN '; - $requete .= ' afup_forum_salle sa '; - $requete .= ' ON sa.id = pl.id_salle'; - $requete .= ' WHERE se.id_forum = ' . $this->_bdd->echapper($id_forum); - $requete .= ' AND se.genre != 9 '; - $requete .= ' AND se.plannifie = 1'; - $requete .= ' ORDER BY '; - $requete .= ' pl.debut, sa.nom ,se.titre'; - - return $this->_bdd->obtenirTous($requete); + return $this->talkRepository->getPlannedTalksWithSpeakers($id_forum); } - public function obtenirListeProjets($id_forum = null, - string $champs = 's.*', - string $ordre = 's.date_soumission', - $associatif = false, - $filtre = false, - $only_ids = []) - { - $requete = ' SELECT '; - $requete .= ' COUNT(co.id) as commentaires_nombre, '; - $requete .= ' ' . $champs . ' '; - $requete .= ' FROM '; - $requete .= ' afup_sessions s '; - $requete .= ' INNER JOIN afup_conferenciers_sessions cs '; - $requete .= ' ON cs.session_id = s.session_id '; - $requete .= ' INNER JOIN afup_conferenciers c '; - $requete .= ' ON c.conferencier_id = cs.conferencier_id '; - $requete .= ' LEFT JOIN afup_forum_sessions_commentaires co '; - $requete .= ' ON cs.session_id = co.id_session '; - $requete .= ' WHERE c.id_forum = ' . $this->_bdd->echapper($id_forum); - if ($filtre) { - $requete .= ' AND s.titre LIKE \'%' . $filtre . '%\' '; - } - if ($only_ids) { - $requete .= ' AND s.session_id IN (' . implode(', ', $only_ids) . ') '; - } - $requete .= ' AND s.genre = 9 '; - $requete .= ' GROUP BY s.session_id '; - $requete .= ' ORDER BY ' . $ordre; - - if ($associatif) { - return $this->_bdd->obtenirAssociatif($requete); - } else { - return $this->_bdd->obtenirTous($requete); - } + public function obtenirListeProjets( + int $id_forum = 0, + string $ordre = 's.date_soumission', + array $only_ids = [], + ): array { + return $this->talkRepository->getProjectTalks($id_forum, $ordre, $only_ids); } - public function modifierSession( - $id, - $id_forum, - $date_soumission, - $titre, - $abstract, - int $genre, - int $plannifie, - $joindin = null, - $youtubeId = null, - $slidesUrl = null, - $openfeedbackPath = null, - $blogPostUrl = null, - $interviewUrl = null, - $languageCode = null, - int $skill = null, - int $needs_mentoring = null, - $use_markdown = null, - $video_has_fr_subtitles = null, - $video_has_en_subtitles = null, - $date_publication = null, - $tweets = null, - $transcript = null, - $verbatim = null, - ) { - $this->_bdd->executer("SET NAMES utf8mb4"); - - $requete = 'UPDATE afup_sessions SET '; - $requete .= ' id_forum = ' . $this->_bdd->echapper($id_forum) . ', '; - $requete .= ' date_soumission = ' . $this->_bdd->echapper($date_soumission) . ', '; - $requete .= ' titre = ' . $this->_bdd->echapper($titre) . ', '; - $requete .= ' abstract = ' . $this->_bdd->echapper($abstract) . ', '; - $requete .= ' genre = ' . $this->_bdd->echapper($genre) . ', '; - if (strlen(trim((string) $joindin)) > 0) { - $requete .= ' joindin = ' . $this->_bdd->echapper($joindin) . ', '; - } else { - $requete .= ' joindin = NULL, '; - } - if ($youtubeId !== null) { - $requete .= ' youtube_id = ' . $this->_bdd->echapper($youtubeId) . ', '; - } - if ($slidesUrl !== null) { - $requete .= ' slides_url = ' . $this->_bdd->echapper($slidesUrl) . ', '; - } - if ($openfeedbackPath !== null) { - $requete .= ' openfeedback_path = ' . $this->_bdd->echapper($openfeedbackPath) . ', '; - } - if ($blogPostUrl !== null) { - $requete .= ' blog_post_url = ' . $this->_bdd->echapper($blogPostUrl) . ', '; - } - if ($interviewUrl !== null) { - $requete .= ' interview_url = ' . $this->_bdd->echapper($interviewUrl) . ', '; - } - if ($languageCode !== null) { - $requete .= ' language_code = ' . $this->_bdd->echapper($languageCode) . ', '; - } - if ($skill !== null) { - $requete .= 'skill = ' . $this->_bdd->echapper($skill) . ', '; - } - if ($needs_mentoring !== null) { - $requete .= 'needs_mentoring = ' . $this->_bdd->echapper($needs_mentoring) . ', '; - } - if ($use_markdown !== null) { - $requete .= 'markdown = ' . $this->_bdd->echapper($use_markdown) . ', '; - } - if ($video_has_fr_subtitles !== null) { - $requete .= 'video_has_fr_subtitles = ' . $this->_bdd->echapper($video_has_fr_subtitles) . ', '; - } - if ($video_has_en_subtitles !== null) { - $requete .= 'video_has_en_subtitles = ' . $this->_bdd->echapper($video_has_en_subtitles) . ', '; - } - if ($date_publication !== null) { - $requete .= 'date_publication = ' . $this->_bdd->echapper($date_publication) . ', '; - } - if ($tweets !== null) { - $requete .= 'tweets = ' . $this->_bdd->echapper($tweets) . ', '; - } - if ($transcript !== null) { - $requete .= 'transcript = ' . $this->_bdd->echapper($transcript) . ', '; - } - if ($verbatim !== null) { - $requete .= 'verbatim = ' . $this->_bdd->echapper($verbatim) . ', '; - } - $requete .= ' plannifie = ' . $this->_bdd->echapper($plannifie) . ' '; - $requete .= ' WHERE session_id = ' . (int) $id; - - return $this->_bdd->executer($requete); - } - - public function ajouterSession( - $id_forum, - $date_soumission, - $titre, - $abstract, - int $genre, - int $plannifie = 0, - int $needs_mentoring = 0, - int $level = Talk::SKILL_NA, - $useMarkdown = false, - ) { - $donnees = [ - $this->_bdd->echapper($id_forum), - $this->_bdd->echapper($date_soumission), - $this->_bdd->echapper($titre), - $this->_bdd->echapper($abstract), - self::DEFAULT_JOURNEE, - $this->_bdd->echapper($genre), - $this->_bdd->echapper($plannifie), - $this->_bdd->echapper($needs_mentoring), - $this->_bdd->echapper($level), - (int) $useMarkdown, - ]; - - $requete = ' INSERT INTO afup_sessions - (id_forum, date_soumission, titre, abstract, journee, genre, plannifie, needs_mentoring, skill, markdown) - VALUES - (' . implode(',', $donnees) . ')'; - - $res = $this->_bdd->executer($requete); - if ($res === false) { - return false; - } - return $this->_bdd->obtenirUn('select LAST_INSERT_ID()'); - } - - public function delierSession($session_id) - { - $requete = ' DELETE FROM afup_conferenciers_sessions '; - $requete .= ' WHERE session_id = ' . (int) $session_id; - - return $this->_bdd->executer($requete); - } - - public function lierConferencierSession($conferencier_id, $session_id) - { - if (!$conferencier_id) { - return true; - } - $donnees = [ - $this->_bdd->echapper($conferencier_id), - $this->_bdd->echapper($session_id), - ]; - - $requete = ' REPLACE INTO afup_conferenciers_sessions'; - $requete .= ' (conferencier_id, session_id) '; - $requete .= ' VALUES '; - $requete .= ' (' . implode(',', $donnees) . ')'; - - return $this->_bdd->executer($requete); - } - - public function dejaVote($id_user, $id_session): bool - { - $requete = 'SELECT count(*) FROM afup_sessions_vote - WHERE id_personne_physique=' . $this->_bdd->echapper($id_user) - . ' AND id_session=' . $this->_bdd->echapper($id_session); - - return (bool) $this->_bdd->obtenirUn($requete); - } - - public function nbVoteSession($id_session): int - { - $requete = 'SELECT count(*) FROM afup_sessions_vote - WHERE id_session=' . $this->_bdd->echapper($id_session); - - return (int) $this->_bdd->obtenirUn($requete); - } } diff --git a/sources/AppBundle/Controller/Legacy/Forum2009ConferenciersAction.php b/sources/AppBundle/Controller/Legacy/Forum2009ConferenciersAction.php index e42989fb2..c3e52e441 100644 --- a/sources/AppBundle/Controller/Legacy/Forum2009ConferenciersAction.php +++ b/sources/AppBundle/Controller/Legacy/Forum2009ConferenciersAction.php @@ -22,10 +22,7 @@ public function __invoke(Request $request): Response if ('projet' === $type) { $sessions = $this->appelConferencier->obtenirListeProjets( Forum2009Config::ID, - 's.*', 's.titre', - false, - false, Forum2009Config::PROJECT_IDS, ); } else { diff --git a/sources/AppBundle/Controller/Legacy/Forum2009ProjetsPhpAction.php b/sources/AppBundle/Controller/Legacy/Forum2009ProjetsPhpAction.php index 9b4e6ab2a..c5688ba08 100644 --- a/sources/AppBundle/Controller/Legacy/Forum2009ProjetsPhpAction.php +++ b/sources/AppBundle/Controller/Legacy/Forum2009ProjetsPhpAction.php @@ -20,10 +20,7 @@ public function __invoke(Request $request): Response { $sessions = $this->appelConferencier->obtenirListeProjets( Forum2009Config::ID, - 's.*', 's.titre', - false, - false, Forum2009Config::PROJECT_IDS, ); diff --git a/sources/AppBundle/Event/Model/Repository/SpeakerRepository.php b/sources/AppBundle/Event/Model/Repository/SpeakerRepository.php index a84f833b9..df26634ff 100644 --- a/sources/AppBundle/Event/Model/Repository/SpeakerRepository.php +++ b/sources/AppBundle/Event/Model/Repository/SpeakerRepository.php @@ -11,6 +11,7 @@ use AppBundle\Ting\JoinHydrator; use CCMBenchmark\Ting\Driver\Mysqli\Serializer\Boolean; use CCMBenchmark\Ting\Repository\CollectionInterface; +use CCMBenchmark\Ting\Repository\HydratorArray; use CCMBenchmark\Ting\Repository\HydratorSingleObject; use CCMBenchmark\Ting\Repository\Metadata; use CCMBenchmark\Ting\Repository\MetadataInitializer; @@ -178,6 +179,22 @@ public function countByEvent(Event $event): int return (int) $query->query()->first()[0]->nb; } + public function getSpeakersBySession(int $sessionId): CollectionInterface + { + $sql = ' SELECT '; + $sql .= ' LOWER(CONCAT(SUBSTRING(c.prenom, 1, 1), c.nom)) as code, '; + $sql .= ' c.* '; + $sql .= ' FROM '; + $sql .= ' afup_conferenciers c '; + $sql .= ' INNER JOIN '; + $sql .= ' afup_conferenciers_sessions cs'; + $sql .= ' ON '; + $sql .= ' c.conferencier_id = cs.conferencier_id'; + $sql .= ' WHERE cs.session_id = :sessionId'; + + $query = $this->getPreparedQuery($sql)->setParams(['sessionId' => $sessionId]); + return $query->query($this->getCollection(new HydratorArray())); + } /** * @inheritDoc */ diff --git a/sources/AppBundle/Event/Model/Repository/TalkRepository.php b/sources/AppBundle/Event/Model/Repository/TalkRepository.php index 9130c7f94..412134937 100644 --- a/sources/AppBundle/Event/Model/Repository/TalkRepository.php +++ b/sources/AppBundle/Event/Model/Repository/TalkRepository.php @@ -427,6 +427,89 @@ public function findList(array $talkIds): CollectionInterface ->query($this->getCollection(new HydratorSingleObject())); } + /** + * @return array> + */ + public function getScheduledTalksByEvent(int $forumId): array + { + $sql = 'SELECT se.session_id, se.* + FROM afup_sessions se + LEFT JOIN afup_forum_planning pl ON se.session_id = pl.id_session + WHERE se.id_forum = :forumId + AND se.plannifie = 1 + AND se.genre != 9 + ORDER BY pl.debut, se.titre'; + + $query = $this->getPreparedQuery($sql)->setParams(['forumId' => $forumId]); + + return iterator_to_array($query->query($this->getCollection(new HydratorArray()))); + } + + /** + * @return array> + */ + public function getPlannedTalksWithSpeakers(int $forumId): array + { + $sql = 'SELECT + ( SELECT CONCAT(c.prenom, \' \', c.nom,\' - \', c.societe) FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id ORDER BY c.conferencier_id ASC LIMIT 1) as conf1, + ( SELECT twitter FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id ORDER BY c.conferencier_id ASC LIMIT 1) as twitter1, + ( SELECT cs.conferencier_id FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id ORDER BY c.conferencier_id ASC LIMIT 1) as conferencier_id1, + ( SELECT CONCAT(c.prenom, \' \', c.nom,\' - \', c.societe) FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id ORDER BY c.conferencier_id ASC LIMIT 1,1) as conf2, + ( SELECT twitter FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id ORDER BY c.conferencier_id ASC LIMIT 1,1) as twitter2, + ( SELECT cs.conferencier_id FROM afup_conferenciers_sessions cs INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id WHERE cs.session_id = se.session_id ORDER BY c.conferencier_id ASC LIMIT 1,1) as conferencier_id2, + se.*, + IF(se.journee = 1, "boss", IF(se.journee = 2, "geek", "boss geek")) as journee, + sa.nom as nom_salle, + pl.id, + pl.debut, + pl.fin, + pl.keynote, + pl.id_salle, + se.joindin + FROM afup_sessions se + LEFT JOIN afup_forum_planning pl ON se.session_id = pl.id_session + LEFT JOIN afup_forum_salle sa ON sa.id = pl.id_salle + WHERE se.id_forum = :forumId + AND se.genre != 9 + AND se.plannifie = 1 + ORDER BY pl.debut, sa.nom, se.titre'; + + $query = $this->getPreparedQuery($sql)->setParams(['forumId' => $forumId]); + + return iterator_to_array($query->query($this->getCollection(new HydratorArray()))); + } + + /** + * @return array> + */ + public function getProjectTalks( + int $forumId, + string $order = 's.date_soumission', + array $onlyIds = [], + ): array { + if (!in_array($order, ['s.date_soumission', 's.titre'], true)) { + throw new \InvalidArgumentException(sprintf('Invalid order column "%s".', $order)); + } + + $sql = 'SELECT COUNT(co.id) as commentaires_nombre, s.* + FROM afup_sessions s + INNER JOIN afup_conferenciers_sessions cs ON cs.session_id = s.session_id + INNER JOIN afup_conferenciers c ON c.conferencier_id = cs.conferencier_id + LEFT JOIN afup_forum_sessions_commentaires co ON cs.session_id = co.id_session + WHERE c.id_forum = :forumId'; + + if ($onlyIds !== []) { + $sql .= ' AND s.session_id IN (' . implode(', ', array_map('intval', $onlyIds)) . ')'; + } + + $sql .= ' AND s.genre = 9 GROUP BY s.session_id ORDER BY ' . $order; + + $query = $this->getPreparedQuery($sql)->setParams(['forumId' => $forumId]); + $collection = $query->query($this->getCollection(new HydratorArray())); + + return iterator_to_array($collection->getIterator()); + } + /** * @return Metadata */ diff --git a/sources/AppBundle/Event/Model/Speaker.php b/sources/AppBundle/Event/Model/Speaker.php index d686aefbf..0960a9bca 100644 --- a/sources/AppBundle/Event/Model/Speaker.php +++ b/sources/AppBundle/Event/Model/Speaker.php @@ -135,7 +135,6 @@ class Speaker implements NotifyPropertyInterface private bool $travelRefundNeeded = true; private bool $travelRefundSponsored = false; - private ?MicrophoneType $micType = null; public function getId(): ?int @@ -721,7 +720,6 @@ public function setMicType(?MicrophoneType $micType): void $this->propertyChanged('micType', $this->micType, $micType); $this->micType = $micType; } - public function hasHotelNightBefore(): ?bool { if (null === ($hotelNights = $this->getHotelNightsArray())) {