Esempio n. 1
0
 /**
  * 建立記錄
  * @param Bitstream $bitstream
  * @param String $action
  * @return Log
  */
 public static function create_log($bitstream, $action)
 {
     $log = new Puli_log();
     $log->set_bitstream($bitstream);
     $log->set_action($action);
     $log->update();
 }
 /**
  * 開始進行轉換
  * @param Bitstream $bitstream
  */
 public function convert_start($bitstream)
 {
     //$this->puli_log->create_log($bitstream, 'convert_start');
     // 開始進行轉換的手續
     $params["PATH"] = $bitstream->get_path();
     $params["DIR"] = $bitstream->get_dir();
     $params["FULLNAME"] = $bitstream->get_fullname();
     $params["EXT_NAME"] = $bitstream->get_ext_name();
     $params["FILE_NAME"] = $bitstream->get_file_name();
     $params["OUTPUT_DIR"] = $this->get_completed_dir();
     $params["ORI_NAME"] = $bitstream->get_original_file_name();
     $converter = $this->CI->config->item("converter");
     $converter_name = $converter["name"];
     $output_path = $converter["output_path"];
     $output_path = $this->_format_path($output_path, $params);
     $output_name = $converter["output_name"];
     $output_name = $this->_format_path($output_name, $params);
     $output_mime = $converter["mime"];
     if (is_null($output_mime)) {
         $output_mime = $bitstream->get_mime();
     }
     $scrtips = $converter["script"];
     if (isset($converter["params"])) {
         $params["PARAMS"] = $converter["params"];
         $params["BITSTREAM_PARAMS"] = $bitstream->get_parameters();
     }
     chdir($bitstream->get_dir());
     foreach ($scrtips as $step) {
         // 取代$step的資料
         $step = $this->_format_path($step, $params);
         //exec($step, $output);
         //echo system($step, $output);
         //passthru($step);
         //$output = array();
         exec($step);
         echo " - " . $step . "<br />";
         /*
                     if (is_array($output)) {
            foreach ($output AS $o) {
                echo $o."<br />";
            }
                     }
                     echo " - " .$step."<br />";
         */
     }
     //return;
     //轉換完成,取得資料
     //echo $output_path;
     //return false;
     if (is_file($output_path)) {
         if ($bitstream->is_convert_completed()) {
             return true;
         }
         $converted_bitstream = new Bitstream();
         $internal_name = substr($output_path, strrpos($output_path, DIRECTORY_SEPARATOR) + 1);
         $converted_bitstream->set_field("original_name", $output_name);
         $converted_bitstream->set_field("internal_name", $internal_name);
         $converted_bitstream->set_field("type", $converter_name);
         $converted_bitstream->set_field("original_id", $bitstream->get_id());
         $converted_bitstream->set_field("mime", $output_mime);
         $converted_bitstream->save();
         $bitstream->delete_file();
         $this->puli_log->create_log($converted_bitstream, $converter_name . "_completed");
     } else {
         $this->puli_log->create_log($bitstream, $converter_name . "_error");
         return false;
     }
     return true;
 }