public static function initialize($str)
 {
     $idHandler = new self();
     if (self::isSerialized($str)) {
         $object = json_decode($str);
         if (isset($object->video)) {
             $idHandler->setVideoId($object->video);
         }
         if (isset($object->asset)) {
             $idHandler->setAssetId($object->asset);
         }
         if (isset($object->reference)) {
             $idHandler->setReferenceId($object->reference);
         }
     } else {
         $idHandler->setVideoId($str);
     }
     return $idHandler;
 }
 /**
  * Create a video using LocalFile framework
  * @param string $provider provider whose API will be used to fetch video data
  * @param string $videoId id of video, assigned by provider
  * @param Title $title Title object stemming from name of video
  * @param string $description description of video
  * @param boolean $undercover upload a video without creating the associated article
  * @param array $overrideMetadata one or more metadata fields that override API response
  * @return FileRepoStatus On success, the value member contains the
  *     archive name, or an empty string if it was a new file.
  */
 public static function uploadVideo($provider, $videoId, &$title, $description = null, $undercover = false, $overrideMetadata = array())
 {
     wfProfileIn(__METHOD__);
     $oUploader = new self();
     $oUploader->setProvider($provider);
     $oUploader->setVideoId($videoId);
     $oUploader->setDescription($description);
     if (!empty($undercover)) {
         $oUploader->hideAction();
     }
     $oUploader->overrideMetadata($overrideMetadata);
     $r = $oUploader->upload($title);
     wfProfileOut(__METHOD__);
     return $r;
 }