use App\Permission; use App\Posts; use App\Response; use App\VideoProvider; /** @var $Episode Episode */ if (!POST_REQUEST) { Episodes::loadPage(); } CSRFProtection::protect(); if (empty($data)) { CoreUtils::notFound(); } $data = explode('/', $data); $action = array_splice($data, 0, 1)[0] ?? null; $data = implode('/', $data); $EpData = Episodes::parseID(!empty($data) ? $data : $_POST['epid'] ?? null); if (!empty($EpData)) { $Episode = Episodes::getActual($EpData['season'], $EpData['episode'], Episodes::ALLOW_MOVIES); if (empty($Episode)) { Response::fail("There's no episode with this season & episode number"); } $isMovie = $Episode->isMovie; } else { if ($action !== 'add') { CoreUtils::notFound(); } } switch ($action) { case "get": Response::done(array('ep' => $Episode, 'epid' => $Episode->formatTitle(AS_ARRAY, 'id'), 'caneditid' => $Episode->getPostCount() === 0)); break;
private static function _genericPostInfo(Post $Post, array $data, array &$details) { $label = CoreUtils::capitalize($data['type']) . " #{$data['id']}"; if (!empty($Post)) { $label = $Post->toAnchor($label); } $details[] = array('Post', $label); if (empty($Post)) { $details[] = array('Still exists', false); } $EpID = (new Episode($Post))->formatTitle(AS_ARRAY, 'id'); $EpData = Episodes::parseID($EpID); $Episode = Episodes::getActual($EpData['season'], $EpData['episode'], Episodes::ALLOW_MOVIES); $details[] = array('Posted under', !empty($Episode) ? "<a href='" . $Episode->formatURL() . "'>{$EpID}</a>" : $EpID . ' (now deleted/moved)'); if (!empty($Post)) { $details[] = array(($data['type'] === 'request' ? 'Requested' : 'Reserved') . ' by', Users::get($data['type'] === 'request' ? $Post->requested_by : $Post->reserved_by)->getProfileLink()); if ($data['type'] === 'request') { if (!empty($Post->reserved_by)) { $details[] = array('Reserved by', Users::get($Post->reserved_by)->getProfileLink()); } else { $details[] = array('Reserved', false); } } } }
/** * Returns the HTML of the "Appears in # episodes" section of appearance pages * * @param array $Appearance * @param bool $allowMovies * * @return string */ static function getRelatedEpisodesHTML($Appearance, $allowMovies = false) { global $CGDb; $EpTagsOnAppearance = $CGDb->rawQuery("SELECT t.tid\n\t\t\tFROM tagged tt\n\t\t\tLEFT JOIN tags t ON tt.tid = t.tid\n\t\t\tWHERE tt.ponyid = ? && t.type = 'ep'", array($Appearance['id'])); if (!empty($EpTagsOnAppearance)) { foreach ($EpTagsOnAppearance as $k => $row) { $EpTagsOnAppearance[$k] = $row['tid']; } $EpAppearances = $CGDb->rawQuery("SELECT DISTINCT name FROM tags WHERE tid IN (" . implode(',', $EpTagsOnAppearance) . ") ORDER BY name"); if (empty($EpAppearances)) { return ''; } $List = ''; foreach ($EpAppearances as $tag) { $name = strtoupper($tag['name']); $EpData = Episodes::parseID($name); $Ep = Episodes::getActual($EpData['season'], $EpData['episode'], $allowMovies); $List .= (empty($Ep) ? self::expandEpisodeTagName($name) : "<a href='{$Ep->formatURL()}'>" . $Ep->formatTitle() . '</a>') . ', '; } $List = rtrim($List, ', '); $N_episodes = CoreUtils::makePlural($Appearance['ishuman'] ? 'movie' : 'episode', count($EpAppearances), PREPEND_NUMBER); $hide = ''; } else { $N_episodes = 'no episodes'; $List = ''; $hide = 'style="display:none"'; } return <<<HTML \t<section id="ep-appearances" {$hide}> \t\t<h2><span class='typcn typcn-video'></span>Appears in {$N_episodes}</h2> \t\t<p>{$List}</p> \t</section> HTML; }