dAttributes["type"] = "file"; $this->dAttributes["name"] = $sN; $this->dFileInfos = od_nil; if (isset($_FILES[$sN])) { $this->dFileInfos = $_FILES[$sN]; // security check $sOFN = isset($this->dFileInfos["name"]) ? $this->dFileInfos["name"]:""; $oOFN =& new WYPath($sOFN); if (!$oOFN->bCheck(WYPATH_CHECK_NOSCRIPT|WYPATH_CHECK_NOPATH)) { $goApp->log("error on file upload: illegal file type/name <$sOFN>"); @unlink($_FILES[$sN]["tmp_name"]); $_FILES[$sN] = array("error" => -1); $this->dFileInfos = $_FILES[$sN]; } else if ($this->bUploadOK()) { $oTmpPath = new WYPath($this->dFileInfos["tmp_name"]); $oToPath = od_clone($goApp->oDataPath); $oToPath->addComponent($oTmpPath->sBasename()); if (!$goApp->move_uploaded_file($oTmpPath, $oToPath)) $goApp->log("WYFileUpload: Could not move uploaded file " . $oTmpPath->sPath . " to " . $oToPath->sPath); else $this->dFileInfos["tmp_name"] = $oToPath->sPath; } else $goApp->log("error on file upload: " . $this->iErrorCode() . ": " . $this->sErrorMessage()); } } function deleteTmpFile() { $sTmpPath = $this->dFileInfos["tmp_name"]; if ($sTmpPath) { $oFile = new WYFile(new WYPath($sTmpPath)); if ($oFile->bExists()) $oFile->bDelete(); } } function iErrorCode() { if (isset($this->dFileInfos["error"])) return $this->dFileInfos["error"]; else return 0; } function bUploadOK() { $i = $this->iErrorCode(); return $i == UPLOAD_ERR_OK || $i == UPLOAD_ERR_NO_FILE; } function bFileUploaded() { $i = $this->iErrorCode(); return $i !== UPLOAD_ERR_NO_FILE && $this->dFileInfos['name']; } function sErrorMessage($bAsHTML = true) { $s = ""; switch($this->iErrorCode()) { case UPLOAD_ERR_INI_SIZE: case UPLOAD_ERR_FORM_SIZE: $s = WYTS("FileUploadErrorSize", $bAsHTML); break; case UPLOAD_ERR_PARTIAL: $s = WYTS("FileUploadErrorInterrupted", $bAsHTML); break; case UPLOAD_ERR_NO_FILE: $s = WYTS("FileUploadErrorNoFile", $bAsHTML); break; default: $s = WYTS("FileUploadErrorUnknown", $bAsHTML); break; } return $s; } function setWidth($i) { $this->dAttributes["size"] = $i; } function oFilePath() { $oP = od_nil; if ($this->bUploadOK()) { $oP =& new WYPath($this->dFileInfos["tmp_name"]); } return $oP; } function oOriginalFilename() { $oP = od_nil; if ($this->bUploadOK()) { $oP =& new WYPath($this->dFileInfos["name"]); } return $oP; } } ?>