Exemplo n.º 1
0
 /**
  * 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 '';
 }
Exemplo n.º 2
0
 /**
  * Add a new image file into the mediawiki infrastructure so that it can
  * be accessed as [[Image:filename.jpg]]
  */
 private static function addMediawikiImage($articleID, &$image, $userIsScreenshotter)
 {
     // check if we've already uploaded this image
     $dupTitle = DupImage::checkDupImage($image['filename']);
     // if we've already uploaded this image, just return that filename
     if ($dupTitle) {
         $image['mediawikiName'] = $dupTitle;
         return true;
     }
     // find name for image; change filename to Filename 1.jpg if
     // Filename.jpg already existed
     $regexp = '/[^' . Title::legalChars() . ']+/';
     $first = preg_replace($regexp, '', $image['first']);
     $ext = $image['ext'];
     $newName = $first . '.' . $ext;
     $i = 1;
     do {
         $title = Title::newFromText($newName, NS_IMAGE);
         if ($title && !$title->exists()) {
             break;
         }
         $newName = $first . ' Version ' . ++$i . '.' . $ext;
     } while ($i <= 1000);
     // insert image into wikihow mediawiki repos
     if (!$userIsScreenshotter) {
         $comment = '{{' . WikiVisualTranscoder::PHOTO_LICENSE . '}}';
     } else {
         $comment = '{{' . WikiVisualTranscoder::SCREENSHOT_LICENSE . '}}';
     }
     // next 6 lines taken and modified from
     // extensions/wikihow/eiu/Easyimageupload.body.php
     $title = Title::makeTitleSafe(NS_IMAGE, $newName);
     if (!$title) {
         return false;
     }
     $file = new LocalFile($title, RepoGroup::singleton()->getLocalRepo());
     if (!$file) {
         return false;
     }
     $ret = $file->upload($image['filename'], $comment, $comment);
     if (!$ret->ok) {
         return false;
     }
     // instruct later processing about which mediawiki name was used
     $image['mediawikiName'] = $newName;
     // Add our uploaded image to the dup table so it's no uploaded again
     DupImage::addDupImage($image['filename'], $image['mediawikiName']);
     // Keep a log of where images were uploaded in wikiphoto_image_names table
     $dbw = WikiVisualTranscoder::getDB('write');
     $imgname = $articleID . '/' . $image['name'];
     $sql = 'INSERT INTO wikivisual_photo_names SET filename=' . $dbw->addQuotes($imgname) . ', wikiname=' . $dbw->addQuotes($image['mediawikiName']);
     $dbw->query($sql, __METHOD__);
     return true;
 }
Exemplo n.º 3
0
 private function dbRemoveTranscodingJobs($aid)
 {
     $dbw = WikiVisualTranscoder::getDB('write');
     $dbw->delete('wikivisual_vid_transcoding_status', array("article_id" => $aid), __METHOD__);
 }
 public static function isStillTranscoding($aid)
 {
     $dbr = WikiVisualTranscoder::getDB('read');
     return 0 < $dbr->selectField('wikivisual_vid_transcoding_status', 'count(*)', array('article_id' => $aid, "status != 'Complete'"));
 }