예제 #1
0
 /**
  * 处理子文件的版本
  * @param array $create_array
  * @param integer $user_id
  * @param string $user_nick
  * @param string $from_path
  * @param string $to_path
  * @param integer $parent_file_id
  * @param string $device_name
  * @param integer $file_size
  * @throws MFileopsException
  * @return mixed $value 返回最终需要执行完的结果
  */
 public function handleChildrenVersions($create_array, $user_id, $user_nick, $from_path, $to_path, $parent_file_id, $device_name, $file_size)
 {
     // 查找所有子文件
     $create_array = $this->findAllChildrenFiles($parent_file_id, $user_nick, $from_path, $to_path, $create_array, $device_name, $file_size);
     if ($create_array === false) {
         throw new MFileopsException(Yii::t('api', 'Internal Server Error'), MConst::HTTP_CODE_500);
     }
     // 查询目标文件是否包含之前对应的各自版本信息
     //
     $file_versions = MFileMetas::batchQueryFileMeta(MConst::VERSION, $create_array);
     if ($file_versions === false) {
         throw new MFileopsException(Yii::t('api', 'Internal Server Error'), MConst::HTTP_CODE_500);
     }
     foreach ($file_versions as $file_version) {
         // 取出路径对应对象
         $file_meta = $create_array[$file_version["file_path"]];
         // 针对原有的版本信息,附加新的
         $meta_value = MUtils::getFileVersions($device_name, $file_size, $file_meta->version_id, MConst::CREATE_FILE, $user_id, $user_nick, $file_version["meta_value"]);
         $file_meta->meta_value = $meta_value;
         // 修改标记,需要更新
         $file_meta->is_add = false;
         //
         // 添加到需要更新的版本ref
         //
         array_push($this->versions, $file_meta->version_id);
     }
     return $create_array;
 }