function UploadFile($TargetFolder, $InputName, $Options = False) { /* if (is_array($InputName)) { $Options = $InputName; $InputName = $TargetFolder; }*/ $FileName = ArrayValue('name', ArrayValue($InputName, $_FILES)); if ($FileName == '') { return; } // no upload, return null // options $AllowFileExtension = ArrayValue('AllowFileExtension', $Options); // TODO: $Overwrite is not used yet $CanOverwrite = ArrayValue('Overwrite', $Options, False); $CreateTargetFolder = ArrayValue('CreateTargetFolder', $Options, True); $WebTarget = ArrayValue('WebTarget', $Options); if ($CreateTargetFolder === True) { if (!file_exists($TargetFolder)) { mkdir($TargetFolder, 0777, True); } if (!is_writable($TargetFolder)) { throw new Exception(sprintf('Directory (%s) is not writable.', $TargetFolder)); } } $Upload = new Gdn_Upload(); if ($AllowFileExtension != False) { if (!is_array($AllowFileExtension)) { $AllowFileExtension = SplitString($AllowFileExtension); } foreach ($AllowFileExtension as $Extension) { $Upload->AllowFileExtension($Extension); } } $IsMultipleUpload = is_array($FileName); $Count = $IsMultipleUpload ? count($FileName) : 1; $OriginalFiles = $_FILES; $Result = array(); for ($i = 0; $i < $Count; $i++) { if ($IsMultipleUpload != False) { $_FILES[$InputName] = array(); foreach (array('name', 'type', 'tmp_name', 'error', 'size') as $Key) { $Value = GetValueR($InputName . '.' . $Key . '.' . $i, $OriginalFiles); SetValue($Key, $_FILES[$InputName], $Value); } } else { $FileName = array($FileName); } $TempFile = $Upload->ValidateUpload($InputName); $TargetFile = GenerateCleanTargetName($TargetFolder, $FileName[$i], '', $TempFile, $CanOverwrite); // 2.0.18 screwed Gdn_Upload::SaveAs() //$Upload->SaveAs($TempFile, $TargetFile); if (!move_uploaded_file($TempFile, $TargetFile)) { throw new Exception(sprintf(T('Failed to move uploaded file to target destination (%s).'), $TargetFile)); } if ($WebTarget != False) { $File = str_replace(DS, '/', $TargetFile); } elseif (array_key_exists('WithTargetFolder', $Options)) { $File = $TargetFile; } else { $File = pathinfo($TargetFile, PATHINFO_BASENAME); } $Result[] = $File; } $_FILES = $OriginalFiles; if ($IsMultipleUpload) { return $Result; } return $File; }