function add_mosaic_file_of_collection($nid, $upload_src_dir, $file_name_for_adding_mosaic) { $targets = get_store_of_collection($nid); $archive = drupal_realpath($targets[0]); $archive0 = drupal_realpath($targets[1]); // 檢查檔案是否存在 if (!has_file_in_archive0($nid, $file_name_for_adding_mosaic)) { // archive0 內有檔的話,archive 一定有檔 if (!file_exists($archive . '/' . $file_name_for_adding_mosaic)) { throw new Exception("add_mosaic_file_of_collection(): file {$file_name_for_adding_mosaic} does not exist."); } } if (!is_mosaic_file_in_archive($nid, $file_name_for_adding_mosaic)) { // 1) 把 archive 內的非馬賽克移到 archive0 內 rename($archive . '/' . $file_name_for_adding_mosaic, $archive0 . '/' . $file_name_for_adding_mosaic); // 2) 把 upload 內的檔案移到 archive 內 if (!is_dir($upload_src_dir) || !($src_dir_handler = opendir($upload_src_dir))) { throw new Exception("update_archive_file_of_collection(): no upload directory: {$upload_src_dir} ."); } // 此迴圈應只會執行三次,有兩次是 . 和 .. 這兩個目錄,另一個是上傳檔 while (($fname = readdir($src_dir_handler)) !== false) { if (is_dir($fname)) { continue; } // ignore sub directory $the_new_file = $upload_src_dir . '/' . $fname; rename($the_new_file, $archive . '/' . $file_name_for_adding_mosaic); } rmdir($upload_src_dir); // delete containing directory. _coll_make_public($nid, true); // defined at coll/coll.inc //delete_thumbnail_of_collection($nid, '200_300'); delete_all_thumbnail_of_collection($nid); } else { // 已經有馬賽克檔 //throw new Exception("add_mosaic_file_of_collection():"); drupal_set_message('此檔已經存在馬賽克檔,已直接進行更新。'); update_archive_file_of_collection($nid, $upload_src_dir, $file_name_for_adding_mosaic, false); } }
[1] => array( 'collection_id' => '10002', 'repository_id' => 'A10000002', 'store' => '010', 'files' => array('10002_001.tif', '10002_002.tif', ...) ), ... ); */ $argv = drush_get_arguments(); $ticket = $argv[2]; if (empty($ticket)) { mylog('empty ticket', 'mconvert-bug.txt'); exit(0); } $archives = variable_get("archives_for_convert_{$ticket}", array()); if (empty($archives)) { mylog('empty archives', 'mconvert-bug.txt'); variable_del("archives_for_convert_{$ticket}"); exit(0); } variable_del("archives_for_convert_{$ticket}"); foreach ($archives as $archive) { //$store = $archive['store']; $collection_id = $archive['collection_id']; //$files = $archive['files']; //mylog($collection_id, 'bbb.txt'); _coll_make_public($collection_id, false); // defined at coll/coll.inc, call dt::ogg2webm defined at dt/dt.class.inc // use avconv -i in.ogv -s 480x360 -bt 700k -ab 128k -f webm -y out.webm }