/** * Reads covers from $file_path into FileServer and * passes data to $query. * * @param $file_path * @param UpdateQuery $query */ private function loadCoversFromSongIntoQuery($file_path, UpdateQuery $query) { $covers = FFProbe::readTempCovers($file_path); if ($covers->nonEmpty()) { $full_cover_id = FileServer::register($covers->get()[0]); $middle_cover_id = FileServer::register($covers->get()[1]); $small_cover_id = FileServer::register($covers->get()[2]); $query->set(TSongs::C_SMALL_ID, $small_cover_id)->set(TSongs::C_MID_ID, $middle_cover_id)->set(TSongs::C_BIG_ID, $full_cover_id); } }
public static function changeCover($song_id, $cover_file) { $song_ids = explode(",", $song_id); $song_objects = (new SelectQuery(TSongs::_NAME))->where(TSongs::ID, $song_ids)->where(TSongs::USER_ID, self::$me->getId())->fetchAll(); // Delete exists covers foreach ($song_objects as $song) { if ($song[TSongs::C_SMALL_ID]) { FileServer::unregister($song[TSongs::C_SMALL_ID]); } if ($song[TSongs::C_MID_ID]) { FileServer::unregister($song[TSongs::C_MID_ID]); } if ($song[TSongs::C_BIG_ID]) { FileServer::unregister($song[TSongs::C_BIG_ID]); } } $covers = FFProbe::readTempCovers($cover_file)->getOrThrow(ControllerException::class, "Image file is corrupted"); $query = (new UpdateQuery(TSongs::_NAME))->where(TSongs::ID, $song_ids)->where(TSongs::USER_ID, self::$me->getId()); $full_cover_id = FileServer::register($covers[0]); $middle_cover_id = FileServer::register($covers[1]); $small_cover_id = FileServer::register($covers[2]); $query->set(TSongs::C_SMALL_ID, $small_cover_id)->set(TSongs::C_MID_ID, $middle_cover_id)->set(TSongs::C_BIG_ID, $full_cover_id); $query->returning(implode(",", [TSongs::ID, TSongs::C_SMALL_ID, TSongs::C_MID_ID, TSongs::C_BIG_ID])); return $query->fetchAll(); }