/** * 处理子文件的版本 * @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; }