|
|
|
@ -88,26 +88,18 @@ class ActiveRecord extends \yii\mongo\ActiveRecord
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$collection = static::getCollection(); |
|
|
|
|
if (array_key_exists('newFileContent', $values)) { |
|
|
|
|
$fileContent = $values['newFileContent']; |
|
|
|
|
if (isset($values['newFileContent'])) { |
|
|
|
|
$newFileContent = $values['newFileContent']; |
|
|
|
|
unset($values['newFileContent']); |
|
|
|
|
unset($values['file']); |
|
|
|
|
$newId = $collection->insertFileContent($fileContent, $values); |
|
|
|
|
} elseif (array_key_exists('file', $values)) { |
|
|
|
|
$file = $values['file']; |
|
|
|
|
if ($file instanceof UploadedFile) { |
|
|
|
|
$fileName = $file->tempName; |
|
|
|
|
} elseif (is_string($file)) { |
|
|
|
|
if (file_exists($file)) { |
|
|
|
|
$fileName = $file; |
|
|
|
|
} else { |
|
|
|
|
throw new InvalidParamException("File '{$file}' does not exist."); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
throw new InvalidParamException('Unsupported type of "file" attribute.'); |
|
|
|
|
} |
|
|
|
|
unset($values['newFileContent']); |
|
|
|
|
if (isset($values['file'])) { |
|
|
|
|
$newFile = $values['file']; |
|
|
|
|
unset($values['file']); |
|
|
|
|
} |
|
|
|
|
if (isset($newFileContent)) { |
|
|
|
|
$newId = $collection->insertFileContent($newFileContent, $values); |
|
|
|
|
} elseif (isset($newFile)) { |
|
|
|
|
$fileName = $this->extractFileName($newFile); |
|
|
|
|
$newId = $collection->insertFile($fileName, $values); |
|
|
|
|
} else { |
|
|
|
|
$newId = $collection->insert($values); |
|
|
|
@ -136,35 +128,24 @@ class ActiveRecord extends \yii\mongo\ActiveRecord
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$collection = static::getCollection(); |
|
|
|
|
if (array_key_exists('newFileContent', $values)) { |
|
|
|
|
$fileContent = $values['newFileContent']; |
|
|
|
|
if (isset($values['newFileContent'])) { |
|
|
|
|
$newFileContent = $values['newFileContent']; |
|
|
|
|
unset($values['newFileContent']); |
|
|
|
|
} |
|
|
|
|
if (isset($values['file'])) { |
|
|
|
|
$newFile = $values['file']; |
|
|
|
|
unset($values['file']); |
|
|
|
|
$values['_id'] = $this->getAttribute('_id'); |
|
|
|
|
$this->deleteInternal(); |
|
|
|
|
$collection->insertFileContent($fileContent, $values); |
|
|
|
|
$rows = 1; |
|
|
|
|
$this->setAttribute('newFileContent', null); |
|
|
|
|
$this->setAttribute('file', null); |
|
|
|
|
} elseif (array_key_exists('file', $values)) { |
|
|
|
|
$file = $values['file']; |
|
|
|
|
if ($file instanceof UploadedFile) { |
|
|
|
|
$fileName = $file->tempName; |
|
|
|
|
} elseif (is_string($file)) { |
|
|
|
|
if (file_exists($file)) { |
|
|
|
|
$fileName = $file; |
|
|
|
|
} else { |
|
|
|
|
throw new InvalidParamException("File '{$file}' does not exist."); |
|
|
|
|
} |
|
|
|
|
if (isset($newFileContent) || isset($newFile)) { |
|
|
|
|
$rows = $this->deleteInternal(); |
|
|
|
|
$insertValues = $values; |
|
|
|
|
$insertValues['_id'] = $this->getAttribute('_id'); |
|
|
|
|
if (isset($newFileContent)) { |
|
|
|
|
$collection->insertFileContent($newFileContent, $insertValues); |
|
|
|
|
} else { |
|
|
|
|
throw new InvalidParamException('Unsupported type of "file" attribute.'); |
|
|
|
|
$fileName = $this->extractFileName($newFile); |
|
|
|
|
$collection->insertFile($fileName, $insertValues); |
|
|
|
|
} |
|
|
|
|
unset($values['newFileContent']); |
|
|
|
|
unset($values['file']); |
|
|
|
|
$values['_id'] = $this->getAttribute('_id'); |
|
|
|
|
$this->deleteInternal(); |
|
|
|
|
$collection->insertFile($fileName, $values); |
|
|
|
|
$rows = 1; |
|
|
|
|
$this->setAttribute('newFileContent', null); |
|
|
|
|
$this->setAttribute('file', null); |
|
|
|
|
} else { |
|
|
|
@ -192,6 +173,27 @@ class ActiveRecord extends \yii\mongo\ActiveRecord
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Extracts filename from given raw file value. |
|
|
|
|
* @param mixed $file raw file value. |
|
|
|
|
* @return string file name. |
|
|
|
|
* @throws \yii\base\InvalidParamException on invalid file value. |
|
|
|
|
*/ |
|
|
|
|
protected function extractFileName($file) |
|
|
|
|
{ |
|
|
|
|
if ($file instanceof UploadedFile) { |
|
|
|
|
return $file->tempName; |
|
|
|
|
} elseif (is_string($file)) { |
|
|
|
|
if (file_exists($file)) { |
|
|
|
|
return $file; |
|
|
|
|
} else { |
|
|
|
|
throw new InvalidParamException("File '{$file}' does not exist."); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
throw new InvalidParamException('Unsupported type of "file" attribute.'); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Refreshes the [[file]] attribute from file collection, using current primary key. |
|
|
|
|
* @return \MongoGridFSFile|null refreshed file value. |
|
|
|
|
*/ |
|
|
|
|