imageHandler = new ImageHandler(); } protected function getType() { return 'Adult'; } protected function getTypeSpecificFields() { return []; } protected function validateTypeSpecificFields($data) { // Adult spezifische Validierung // Eventuell Altersverifikation etc. } protected function processPosterField($data) { error_log("Adult::processPosterField - Checking for poster field, isUpdate: " . ($this->isUpdate ? 'yes' : 'no')); if ($this->isUpdate && $this->mediaId && isset($data['poster']) && !empty($data['poster'])) { $currentMedia = $this->findById($this->mediaId); if ($currentMedia && !empty($currentMedia['poster'])) { $oldPoster = $currentMedia['poster']; if (strpos($oldPoster, '/images/') === 0) { error_log("Adult::processPosterField - Deleting old poster: " . $oldPoster); $this->imageHandler->deleteImage($oldPoster); } } } if (isset($data['poster']) && !empty($data['poster'])) { error_log("Adult::processPosterField - Poster found, length: " . strlen($data['poster'])); if (strpos($data['poster'], '/images/') === 0 || filter_var($data['poster'], FILTER_VALIDATE_URL)) { error_log("Adult::processPosterField - Poster is already a path or URL, skipping processing"); return $data; } $posterPath = $this->imageHandler->saveBase64Image($data['poster'], 'adult/poster'); error_log("Adult::processPosterField - ImageHandler returned: " . ($posterPath ?: 'null')); if ($posterPath) { $data['poster'] = $posterPath; error_log("Adult::processPosterField - Poster path set to: " . $posterPath); } else { error_log("Adult::processPosterField - Failed to process poster, keeping original data"); } } else { error_log("Adult::processPosterField - No poster field found or empty"); } return $data; } public function createWithRelations($data) { $data['type'] = 'Adult'; $this->validateTypeSpecificFields($data); $data = $this->processPosterField($data); return parent::createWithRelations($data); } public function updateWithRelations($id, $data) { $this->isUpdate = true; $this->mediaId = $id; $this->validateTypeSpecificFields($data); $data = $this->processPosterField($data); parent::updateWithRelations($id, $data); } public function search($filters = [], $page = 1, $limit = 20) { // Nur Adult Content suchen $filters['type'] = 'Adult'; return parent::search($filters, $page, $limit); } }