Пример #1
0
 /**
  * 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());
 }
Пример #2
0
 /**
  * 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));
 }