{
IPF_Utils::makeDirectories($this->getAbsolutePath(''));
- if (@$value['remove'] === true)
+ if (ArrayTools::get($value, 'remove'))
return $this->removeFile($value['data']);
- if (@$value['name'] != @$value['rename'])
- return $this->renameFile(@$value['name'], @$value['rename']);
+ $oldname = ArrayTools::get($value, 'name', '');
+ $newname = ArrayTools::get($value, 'rename', '');
+ if ($oldname != $newname)
+ return $this->renameFile($oldname, $newname);
- $value = @$value['data'];
-
- if (@$value['name'] == '')
- return '';
-
- parent::clean($value);
+ if (UPLOAD_ERR_OK != ArrayTools::get($value['data'], 'error')) {
+ if ($this->required && !$oldname)
+ throw new IPF_Exception_Form(__('This field is required.'));
+ return $oldname;
+ }
- switch ($value['error']) {
+ $data = $value['data'];
+ switch ($data['error']) {
case UPLOAD_ERR_OK:
break;
case UPLOAD_ERR_INI_SIZE:
default:
throw new IPF_Exception_Form(__('An error occured when upload the file. Please try to send the file again.'));
}
- if ($value['size'] > $this->max_size) {
+ if ($data['size'] > $this->max_size) {
throw new IPF_Exception_Form(sprintf(__('The uploaded file is to big (%1$s). Reduce the size to less than %2$s and try again.'),
- IPF_Utils::prettySize($value['size']),
+ IPF_Utils::prettySize($data['size']),
IPF_Utils::prettySize($this->max_size)));
}
- $name = IPF_Utils::cleanFileName($value['name'], $this->getAbsolutePath(''));
+ $name = IPF_Utils::cleanFileName($data['name'], $this->getAbsolutePath(''));
$dest = $this->getAbsolutePath($name);
- if (!move_uploaded_file($value['tmp_name'], $dest))
+ if (!move_uploaded_file($data['tmp_name'], $dest))
throw new IPF_Exception_Form(__('An error occured when upload the file. Please try to send the file again.'));
@chmod($dest, IPF::get('file_permission'));
return $this->getRelativePath($name);
{
if (!isset($data[$name]))
return null;
+
$remove = isset($data[$name.'_remove']) && $data[$name.'_remove'] == 1;
- $res = array('data'=>$data[$name], 'remove'=>$remove);
+
+ $res = array(
+ 'data' => $data[$name],
+ 'remove' => $remove,
+ );
+
if (isset($data[$name.'_rename']))
$res['rename'] = $data[$name.'_rename'];
+
if (isset($data[$name.'_name']))
$res['name'] = $data[$name.'_name'];
+
return $res;
}