/** * Tests the note upload action with invalid input. */ public function testUploadInvalid() { $this->init(); // Empty title $fakeNote = new Note(); $fakeNote->setAttributes($this->noteAttributes); $fakeNote->title = null; $this->assertFalse($fakeNote->validate()); // Lengthy title $fakeNote = new Note(); $fakeNote->setAttributes($this->noteAttributes); Yii::import('ext.randomness.*'); $fakeNote->title = Randomness::randomString(Note::MAX_TITLE_LENGTH + 1); $this->assertFalse($fakeNote->validate()); // Empty description $fakeNote = new Note(); $fakeNote->setAttributes($this->noteAttributes); $fakeNote->description = null; $this->assertFalse($fakeNote->validate()); // Invalid course_id $fakeNote = new Note(); $fakeNote->setAttributes($this->noteAttributes); $fakeNote->course_id = self::INVALID_ID; $this->assertFalse($fakeNote->validate()); // Empty faculty_id $fakeNote = new Note(); $fakeNote->setAttributes($this->noteAttributes); $fakeNote->faculty_id = null; $this->assertFalse($fakeNote->validate()); // Invalid faculty_id $fakeNote->faculty_id = self::INVALID_ID; $this->assertFalse($fakeNote->validate()); // Invalid file type $fakeNote = new Note(); $fakeNote->setAttributes($this->noteAttributes); $fakeFile = $this->testFile; $fakeFile['name'] = 'Fake.avi'; $fakeFile['type'] = 'video/x-msvideo'; $fakeNote->file = new CUploadedFile($fakeFile['name'], $fakeFile['tmp_name'], $fakeFile['type'], $fakeFile['size'], $fakeFile['error']); $this->assertFalse($fakeNote->validate()); // Invalid file size $fakeNote = new Note(); $fakeNote->setAttributes($this->noteAttributes); $fakeFile = $this->testFile; $fakeFile['size'] = Note::MAX_FILE_SIZE * 2; $fakeNote->file = new CUploadedFile($fakeFile['name'], $fakeFile['tmp_name'], $fakeFile['type'], $fakeFile['size'], $fakeFile['error']); $this->assertFalse($fakeNote->validate()); // Empty file and raw text $fakeNote = new Note(); $fakeNote->setAttributes($this->noteAttributes); $fakeNote->raw_file_text = null; $fakeNote->file = null; $this->assertFalse($fakeNote->validate()); }
/** * Uploads a note. */ public function actionUpload() { $model = new Note(); if (isset($_POST['Note'])) { $model->attributes = $_POST['Note']; if ($model->validate()) { // sets extension $extension = 'htm'; if (empty($model->raw_file_text)) { $noteFile = CUploadedFile::getInstance($model, 'file'); $extension = $noteFile->extensionName; } $model->type = Note::getTypeFromExtension($extension); $model->save(false); // saves file $filePath = Yii::app()->params['notesDir']; if (empty($model->raw_file_text)) { $noteFile = CUploadedFile::getInstance($model, 'file'); $noteFile->saveAs($filePath . $model->id . '.' . $noteFile->extensionName); } else { touch($filePath . $model->id . '.htm'); file_put_contents($filePath . $model->id . '.htm', $model->raw_file_text); } $event = new UploadEvent($this); $event->student = $model->student; $this->onNewUpload($event); $message['text'] = 'Berkas berhasil diunggah.'; $message['type'] = 'general'; $message['default_text'] = 'Saya baru saja mengunggah ' . $model->title . ' pada BerKuliah!'; $message['name'] = $model->title; $message['link'] = array('note/view', 'id' => $model->id); $message['picture'] = $model->getTypeIcon(); $message['caption'] = $model->course->name; $message['description'] = $model->description; Yii::app()->user->addShareMessage($message); $this->redirect(array('home/index')); } else { $model->faculty_id = null; Yii::app()->user->setNotification('danger', 'Terdapat kesalahan pengisian.'); } } $this->render('upload', array('model' => $model)); }