App\Http\Controllers\SkinlibController::handleUpload PHP Method

handleUpload() public method

public handleUpload ( Illuminate\Http\Request $request )
$request Illuminate\Http\Request
    public function handleUpload(Request $request)
    {
        $this->checkUpload($request);
        $t = new Texture();
        $t->name = $request->input('name');
        $t->type = $request->input('type');
        $t->likes = 1;
        $t->hash = Utils::upload($_FILES['file']);
        $t->size = ceil($_FILES['file']['size'] / 1024);
        $t->public = $request->input('public') == 'true' ? "1" : "0";
        $t->uploader = $this->user->uid;
        $t->upload_at = Utils::getTimeFormatted();
        $cost = $t->size * ($t->public == "1" ? Option::get('score_per_storage') : Option::get('private_score_per_storage'));
        if ($this->user->getScore() < $cost) {
            return json(trans('skinlib.upload.lack-score'), 7);
        }
        $results = Texture::where('hash', $t->hash)->get();
        if (!$results->isEmpty()) {
            foreach ($results as $result) {
                // if the texture already uploaded was setted to private,
                // then allow to re-upload it.
                if ($result->type == $t->type && $result->public == "1") {
                    return json(trans('skinlib.upload.repeated'), 0, ['tid' => $result->tid]);
                }
            }
        }
        $t->save();
        $this->user->setScore($cost, 'minus');
        if ($this->user->getCloset()->add($t->tid, $t->name)) {
            return json(trans('skinlib.upload.success', ['name' => $request->input('name')]), 0, ['tid' => $t->tid]);
        }
    }