if ($EpisodeChanged) { $TagName = CGUtils::checkEpisodeTagName("movie#{$insert['episode']}"); $MovieTag = $CGDb->where('name', $editing ? "movie#{$Episode->episode}" : $TagName)->getOne('tags', 'tid'); if (!empty($MovieTag)) { if ($editing) { $CGDb->where('tid', $MovieTag['tid'])->update('tags', array('name' => $TagName)); } } else { if (!$CGDb->insert('tags', array('name' => $TagName, 'type' => 'ep'))) { Response::dbError('Episode tag creation failed'); } } } } else { if ($SeasonChanged || $EpisodeChanged) { $TagName = CGUtils::checkEpisodeTagName("s{$insert['season']}e{$insert['episode']}"); $EpTag = $CGDb->where('name', $editing ? "s{$Episode->season}e{$Episode->episode}" : $TagName)->getOne('tags', 'tid'); if (!empty($EpTag)) { if ($editing) { $CGDb->where('tid', $EpTag['tid'])->update('tags', array('name' => $TagName)); } } else { if (!$CGDb->insert('tags', array('name' => $TagName, 'type' => 'ep'))) { Response::dbError('Episode tag creation failed'); } } } } } if ($editing) { $logentry = array('target' => $Episode->formatTitle(AS_ARRAY, 'id'));
foreach ($TargetTagged as $tg) { Appearances::updateIndex($tg['ponyid']); } } } else { $keep_tagged = false; } if (!$CGDb->where('tid', $Tag['tid'])->update('tags', array('synonym_of' => null, 'uses' => $uses))) { Response::dbError(); } Response::done(array('keep_tagged' => $keep_tagged)); break; case 'make': case 'set': $data['name'] = CGUtils::validateTagName('name'); $epTagName = CGUtils::checkEpisodeTagName($data['name']); $surelyAnEpisodeTag = $epTagName !== false; $type = (new Input('type', function ($value) { if (!isset(Tags::$TAG_TYPES_ASSOC[$value])) { return Input::ERROR_INVALID; } }, array(Input::IS_OPTIONAL => true, Input::CUSTOM_ERROR_MESSAGES => array(Input::ERROR_INVALID => 'Invalid tag type: @value'))))->out(); if (empty($type)) { if ($surelyAnEpisodeTag) { $data['name'] = $epTagName; } $data['type'] = $epTagName === false ? null : 'ep'; } else { if ($type == 'ep') { if (!$surelyAnEpisodeTag) { $errmsg = <<<HTML