private static function getS3() { global $IP; require_once "{$IP}/extensions/wikihow/common/S3.php"; if (is_null(self::$s3)) { self::$s3 = new S3(WH_AWS_WIKIVIDEO_PROD_ACCESS_KEY, WH_AWS_WIKIVIDEO_PROD_SECRET_KEY); } return self::$s3; }
/** * Add a new video file into the mediawiki infrastructure so that it can * be accessed as {{whvid|filename.mp4|Preview.jpg}} */ public function addWikiHowVideo($articleId, &$video) { // find name for video; change filename to Filename 1.jpg if // Filename.jpg already existed $regexp = '/[^' . Title::legalChars() . ']+/'; $first = preg_replace($regexp, '', $video['first']); // Let's also remove " and ' since s3 doesn't seem to like $first = preg_replace('/["\']+/', '', $first); $ext = $video['ext']; $newName = $first . '.' . $ext; $i = 1; do { if (!WikiVideo::fileExists($newName)) { break; } $newName = $first . ' Version ' . ++$i . '.' . $ext; } while ($i <= 1000); // Move the file from one s3 bucket to another $ret = WikiVideo::copyFileToProd(WikiVisualTranscoder::AWS_TRANSCODING_OUT_BUCKET, $video['aws_uri_out'], $newName); if ($ret['error']) { return $ret['error']; } // instruct later processing about which mediawiki name was used $video['mediawikiName'] = $newName; // Add preview image $img = $video; $img['ext'] = 'jpg'; $err = Mp4Transcoder::addMediawikiImage($articleId, $img); if ($err) { return 'Unable to add preview image: ' . $err; } else { $video['previewMediawikiName'] = $img['mediawikiName']; // Cleanup temporary preview image if (!empty($img['filename'])) { $rmCmd = "rm " . $img['filename']; system($rmCmd); } } self::d(">>> addWikiHowVideo: video['mediawikiName']=" . $video['mediawikiName'] . ", video['previewMediawikiName']=" . $video['previewMediawikiName']); // Keep a log of where videos were uploaded in wikivideo_video_names table $dbw = WikiVisualTranscoder::getDB('write'); $vidname = $articleID . '/' . $video['name']; $sql = 'INSERT INTO wikivisual_vid_names SET filename=' . $dbw->addQuotes($vidname) . ', wikiname=' . $dbw->addQuotes($video['mediawikiName']); $dbw->query($sql, __METHOD__); return ''; }