ContractController::actionUpload PHP Method

actionUpload() public method

}
public actionUpload ( )
    public function actionUpload()
    {
        Yii::import("xupload.models.XUploadForm");
        //Here we define the paths where the files will be stored temporarily
        $path = Yii::app()->getBasePath() . "/../";
        $publicPath = 'http://img.yincart.com';
        //
        //	if (!file_exists($path)) {
        //	    mkdir($path, 0777, true);
        //	}
        //	$ymd = date("Ymd");
        //	$path .= $ymd . '/';
        //	if (!file_exists($path)) {
        //	    mkdir($path, 0777, true);
        //	}
        //This is for IE which doens't handle 'Content-type: application/json' correctly
        header('Vary: Accept');
        if (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'application/json') !== false) {
            header('Content-type: application/json');
        } else {
            header('Content-type: text/plain');
        }
        //Here we check if we are deleting and uploaded file
        if (isset($_GET["_method"])) {
            if ($_GET["_method"] == "delete") {
                if ($_GET["file"][0] !== '.') {
                    $file = $path . $_GET["file"];
                    if (is_file($file)) {
                        unlink($file);
                    }
                }
                echo json_encode(true);
            }
        } else {
            $model = new XUploadForm();
            $upload = new FileUpload(array($model, 'file'), 'upload/groupon');
            if (!$upload->isNull()) {
                $model->mime_type = $upload->instance->getType();
                $model->size = $upload->instance->getSize();
                $model->name = $upload->instance->getName();
                if ($model->validate()) {
                    $filename = $upload->save();
                    //                }
                    //            }
                    //	    $model->file = CUploadedFile::getInstance($model, 'file');
                    //We check that the file was successfully uploaded
                    //	    if ($model->file !== null) {
                    //Grab some data
                    //		$model->mime_type = $model->file->getType();
                    //		$model->size = $model->file->getSize();
                    //		$model->name = $model->file->getName();
                    //(optional) Generate a random name for our file
                    //		$filename = date("YmdHis") . '_' . rand(10000, 99999);
                    //		$filename .= "." . $model->file->getExtensionName();
                    //		$filename =  $ymd . '/' . $filename;
                    //		if ($model->validate()) {
                    //Move our file to our temporary dir
                    //		    $model->file->saveAs($path . $filename);
                    //		    chmod($path . $filename, 0777);
                    //here you can also generate the image versions you need
                    //using something like PHPThumb
                    //Now we need to save this path to the user's session
                    if (Yii::app()->user->hasState('images')) {
                        $userImages = Yii::app()->user->getState('images');
                    } else {
                        $userImages = array();
                    }
                    $userImages[] = array("path" => $path . $filename, "thumb" => $path . $filename, "filename" => $filename, "url" => $publicPath . '/' . $filename, 'size' => $model->size, 'mime' => $model->mime_type, 'name' => $model->name);
                    Yii::app()->user->setState('images', $userImages);
                    //Now we need to tell our widget that the upload was succesfull
                    //We do so, using the json structure defined in
                    // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup
                    echo json_encode(array(array("name" => $model->name, "type" => $model->mime_type, "size" => $model->size, "url" => $publicPath . '/' . $filename, "thumbnail_url" => $publicPath . '/' . "{$filename}", "delete_url" => $this->createUrl("upload", array("_method" => "delete", "file" => $filename)), "delete_type" => "POST")));
                } else {
                    //If the upload failed for some reason we log some data and let the widget know
                    echo json_encode(array(array("error" => $model->getErrors('file'))));
                    Yii::log("XUploadAction: " . CVarDumper::dumpAsString($model->getErrors()), CLogger::LEVEL_ERROR, "xupload.actions.XUploadAction");
                }
            } else {
                throw new CHttpException(500, "Could not upload file");
            }
        }
    }