/** * Private function, returns header metadata prepared for use * @param array $header slice of length 14, taken from current cast file * @return array */ function _castHeader($header) { global $castFilePath; global $castPublicURL; $meta = array_fill_keys(array('RECORDED', 'PUBLISHED', 'TITLE', 'SEASON', 'EPISODE', 'DURATION', 'FILENAME', 'RATING', 'DESCRIPTION', 'HOSTS', 'GUESTS', 'ADDITIONAL', 'YOUTUBE'), ''); foreach ($header as $entry) { list($k, $v) = explode(':', $entry, 2); $meta[$k] = trim($v); } $meta['EPISODE'] = str_pad($meta['EPISODE'], 2, '0', STR_PAD_LEFT); $meta['SEASON'] = str_pad($meta['SEASON'], 2, '0', STR_PAD_LEFT); $meta['SLUG'] = 's' . $meta['SEASON'] . 'e' . $meta['EPISODE']; $meta['ABSFILENAME'] = $castFilePath . '/' . $meta['SLUG'] . '/' . $meta['FILENAME']; $meta['ARCHIVE'] = $castPublicURL . '/' . $meta['SLUG'] . '/' . $meta['FILENAME']; // Explicit -> yes, Clean -> clean, * -> no $meta['ISEXPLICIT'] = $meta['RATING'] == 'Explicit' ? 'yes' : ($meta['RATING'] == 'Clean' ? 'clean' : 'no'); $meta['MEDIARATING'] = $meta['RATING'] == 'Explicit' ? 'adult' : 'nonadult'; $meta['HOSTS'] = array_map('trim', explode(',', $meta['HOSTS'])); $meta['HOSTS2'] = array(); foreach ($meta['HOSTS'] as $Host) { $meta['HOSTS2'][] = parsePersonString($Host); } $meta['GUESTS'] = array_map('trim', explode(',', $meta['GUESTS'])); if ($meta['GUESTS'][0] == "") { array_pop($meta['GUESTS']); } $meta['GUESTS2'] = array(); foreach ($meta['GUESTS'] as $Guest) { $meta['GUESTS2'][] = parsePersonString($Guest); } return $meta; }
function nameplate($string, $size = 32) { $person = parsePersonString($string); $name = $person['name']; if (strlen($person['nickname']) > 0) { $name .= " (" . $person['nickname'] . ")"; } if (strlen($name) == 0 && strlen($person['twitter']) > 0) { $name = $person['twitter']; } if (strlen($name) == 0) { return $string; } if (strlen($person['avatar']) > 0) { $avatar = <<<AVATAR <img src="{$person['avatar']}" title="{$name}" width="{$size}" height="{$size}" alt="{$name}" class="img-rounded"/> AVATAR; } else { $avatar = $name; } if (strlen($person['twitter']) > 0) { return <<<TWITLINK <a href="https://twitter.com/{$person['twitter']}">{$avatar}</a> TWITLINK; } else { return $avatar; } }
/** * Private function, returns SVG-formatted person plate for our thumbnail * @param string $string of the form: ‘johndrinkwater’ / ‘@johndrinkwater’ / ‘John Drinkwater (@twitter)’ / ‘John Drinkwater {URL}’ * @param integer $offset translate this nameplate by this value horizontally * @param boolean $guest translate this nameplate to the guest slot if true * @return string a rendered version of $string */ function _nameplate($string, $offset = 0, $guest = false) { $person = parsePersonString($string); $name = $person['name']; if (strlen($name) == 0 && strlen($person['nickname']) > 0) { $name = $person['nickname']; } if (strlen($name) == 0 && strlen($person['twitter']) > 0) { $name = $person['twitter']; } if (strlen($name) == 0) { return; } $avatar = $person['avatar']; if (strlen($avatar) == 0) { $avatar = "unknown-host-" . md5($string); } $flip = $guest == true ? -23 : 107; return <<<SVGPLATE \t\t\t<g transform="translate({$offset},0)"> \t\t\t\t<use xlink:href="#person-holder" /> \t\t\t\t<image xlink:href="{$avatar}" width="70" height="70" preserveAspectRatio="xMidYMid slice" clip-path="url(#avatar-clip)" /> \t\t\t\t<text y="{$flip}" x="35">{$name}</text> \t\t\t</g> SVGPLATE; }