/** * insert original cam or slide in repository and if user submit, checks submitted file's extension * @param string $camslide * @param assoc_array $recording_metadata * @param string $recording_dir * @return bool */ function originals_mam_insert_media($album_name, $asset_name, $camslide, &$recording_metadata, $recording_dir) { $media_name = 'original_' . $camslide; //initialize media metadata and media metadata $media_meta['author'] = $recording_metadata['author']; $media_meta['title'] = $recording_metadata['title']; $media_meta['description'] = $recording_metadata['description']; $media_meta['record_date'] = $recording_metadata['record_date']; $media_meta['width'] = "N/A"; $media_meta['height'] = "N/A"; $media_meta['duration'] = "N/A"; $media_meta['video_codec'] = "N/A"; $media_meta['audio_codec'] = "N/A"; $media_meta['disposition'] = 'file'; //check the name of submited file to keep the extension (pcastaction is quite sensitive to extension type) if (isset($recording_metadata['submitted_' . $camslide])) { $res = file_get_extension($recording_metadata['submitted_' . $camslide]); $ext = $res['ext']; if ($ext == '') { //if there wasn't an extension, then check mimetype $mimetype = $recording_metadata['submitted_mimetype']; list($type, $subtype) = explode('/', $mimetype); $mimetypes2ext = array('mpeg' => 'mpg', 'quicktime' => 'mov', 'x-msvideo' => 'avi'); if (isset($mimetypes2ext[$subtype])) { $ext = $mimetypes2ext[$subtype]; } else { $ext = 'mov'; } //default extension } if (ctype_alnum($ext)) { //an extension should not have bad chars $mov_filepath = $recording_dir . '/' . $camslide . '.mov'; $goodext_filepath = $recording_dir . '/' . $camslide . '.' . $ext; //rename cam.mov into cam.mpg if submit was an .mpg file rename($mov_filepath, $goodext_filepath); $media_file_path = $goodext_filepath; $media_meta['filename'] = "{$camslide}.{$ext}"; } else { print "submitted filename has bad extension: {$ext}"; myerror("submitted filename has bad extension: {$ext}"); } } else { $media_file_path = system("ls {$recording_dir}/{$camslide}.*"); $media_meta['filename'] = basename($media_file_path); } $filesize = round(filesize($media_file_path) / 1048576); $media_meta['file_size'] = $filesize; $res1 = ezmam_media_new($album_name, $asset_name, $media_name, $media_meta, $media_file_path); if (!$res1) { myerror("error adding original_{$camslide}:" . ezmam_last_error() . "\n"); } else { print "{$camslide} media inserted in repository in {$album_name} {$asset_name} {$media_name}\n"; } return $res1; }
/** * insert chapter_slide directory in a media * @param string $album * @param string $asset * @param string $chapter_slide_dir */ function insert_chapterslide_media($album, $asset, $chapter_slide_dir) { $media = "chapter_slide"; $media_meta['filename'] = "chapter_slide"; $media_meta['disposition'] = "directory"; //not a simple file, but a directory with a chapters.xml and chapter<n>.png print "insert media chapter_slide media {$album} {$asset} {$media}\n"; $res = ezmam_media_new($album, $asset, $media, $media_meta, $chapter_slide_dir, true); //unlink($chapter_slide_dir); }