Hi! Could we please enable some services and cookies to improve your experience and our website?

PHPize Online / SQLize Online  /  SQLtest Online

A A A
Login    Share code      Blog   FAQ

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

Copy Format Clear

Stuck with a problem? Got Error? Ask AI support!

Copy Clear
Copy Format Clear
<?php function renderUpload(): void { $this->assertUserLoggedIn(); $group = NULL; if(!is_null($this->queryParam("gid"))) { $gid = (int) $this->queryParam("gid"); $group = (new Clubs)->get($gid); if(!$group) $this->flashFail("err", tr("forbidden"), tr("not_enough_permissions_comment")); // TODO check if group allows uploads to anyone if(!$group->canBeModifiedBy($this->user->identity)) $this->flashFail("err", tr("forbidden"), tr("not_enough_permissions_comment")); } $this->template->group = $group; if($_SERVER["REQUEST_METHOD"] !== "POST") return; $upload = $_FILES["blob"]; if(isset($upload) && file_exists($upload["tmp_name"])) { if($upload["size"] > self::MAX_AUDIO_SIZE) $this->flashFail("err", tr("error"), tr("media_file_corrupted_or_too_large")); } else { $err = !isset($upload) ? 65536 : $upload["error"]; $err = str_pad(dechex($err), 9, "0", STR_PAD_LEFT); $this->flashFail("err", tr("error"), tr("error_generic") . "Upload error: 0x$err"); } $performer = $this->postParam("performer"); $name = $this->postParam("name"); $lyrics = $this->postParam("lyrics"); $genre = empty($this->postParam("genre")) ? "undefined" : $this->postParam("genre"); $nsfw = ($this->postParam("nsfw") ?? "off") === "on"; if(empty($performer) || empty($name) || iconv_strlen($performer . $name) > 128) # FQN of audio must not be more than 128 chars $this->flashFail("err", tr("error"), tr("error_insufficient_info")); $audio = new Audio; $audio->setOwner($this->user->id); $audio->setName($name); $audio->setPerformer($performer); $audio->setLyrics(empty($lyrics) ? NULL : $lyrics); $audio->setGenre($genre); $audio->setExplicit($nsfw); try { $audio->setFile($upload); } catch(\DomainException $ex) { $e = $ex->getMessage(); $this->flashFail("err", tr("error"), tr("media_file_corrupted_or_too_large") . " $e."); } $audio->save(); $audio->add($group ?? $this->user->identity); $this->redirect(is_null($group) ? "/audios" . $this->user->id : "/audios-" . $group->getId()); } }
Copy Clear