/** * (non-PHPdoc) * @see ModelHasRelatedItemsZurmoControllerUtil::afterSetAttributesDuringSave() */ protected function afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions) { parent::afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions); if ($model instanceof Item) { FileModelUtil::resolveModelsHasManyFilesFromPost($model, 'files', 'filesIds'); } }
public function testResolveModelsHasManyFilesFromPost() { if (!RedBeanDatabase::isFrozen()) { Yii::app()->user->userModel = User::getByUsername('super'); $fileCount = count(FileModel::getAll()); $this->assertEquals(0, $fileCount); $file1 = ZurmoTestHelper::createFileModel(); $file2 = ZurmoTestHelper::createFileModel(); $file3 = ZurmoTestHelper::createFileModel(); $model = new ModelWithAttachmentTestItem(); $_POST['myTest'] = array($file1->id, $file2->id, $file3->id); FileModelUtil::resolveModelsHasManyFilesFromPost($model, 'files', 'myTest'); $model->member = 'test'; $saved = $model->save(); $this->assertTrue($saved); $fileCount = count(FileModel::getAll()); $this->assertEquals(3, $fileCount); $modelId = $model->id; $model->forget(); $model = ModelWithAttachmentTestItem::getById($modelId); $this->assertEquals(3, $model->files->count()); //Add a fourth file. $file4 = ZurmoTestHelper::createFileModel(); $_POST['myTest'] = array($file1->id, $file2->id, $file3->id, $file4->id); FileModelUtil::resolveModelsHasManyFilesFromPost($model, 'files', 'myTest'); $saved = $model->save(); $this->assertTrue($saved); $fileCount = count(FileModel::getAll()); $this->assertEquals(4, $fileCount); $model->forget(); $model = ModelWithAttachmentTestItem::getById($modelId); $this->assertEquals(4, $model->files->count()); //Remove the 2nd file. $_POST['myTest'] = array($file1->id, $file3->id, $file4->id); FileModelUtil::resolveModelsHasManyFilesFromPost($model, 'files', 'myTest'); $saved = $model->save(); $this->assertTrue($saved); $fileCount = count(FileModel::getAll()); $this->assertEquals(3, $fileCount); $model->forget(); $model = ModelWithAttachmentTestItem::getById($modelId); $this->assertEquals(3, $model->files->count()); $compareIds = array($file1->id, $file3->id, $file4->id); foreach ($model->files as $fileModel) { $this->assertTrue(in_array($fileModel->id, $compareIds)); } } }
protected static function resolveFileAttachments() { FileModelUtil::resolveModelsHasManyFilesFromPost(static::$emailTemplate, 'files', 'filesIds'); }
public function testResolveModelsHasManyFilesFromPost() { $fileCount = FileModel::getCount(); $this->assertEquals(0, $fileCount); $file1 = ZurmoTestHelper::createFileModel('testNote.txt'); $file2 = ZurmoTestHelper::createFileModel('testNote.txt'); $file3 = ZurmoTestHelper::createFileModel('testNote.txt'); $model = new ModelWithAttachmentTestItem(); $_POST['myTest'] = array($file1->id, $file2->id, $file3->id); FileModelUtil::resolveModelsHasManyFilesFromPost($model, 'files', 'myTest'); $model->member = 'test'; $saved = $model->save(); $this->assertTrue($saved); $fileCount = FileModel::getCount(); $this->assertEquals(3, $fileCount); $modelId = $model->id; $model->forget(); $model = ModelWithAttachmentTestItem::getById($modelId); $this->assertEquals(3, $model->files->count()); //Add a fourth file. $file4 = ZurmoTestHelper::createFileModel('testNote.txt'); $_POST['myTest'] = array($file1->id, $file2->id, $file3->id, $file4->id); FileModelUtil::resolveModelsHasManyFilesFromPost($model, 'files', 'myTest'); $saved = $model->save(); $this->assertTrue($saved); $fileCount = FileModel::getCount(); $this->assertEquals(4, $fileCount); $model->forget(); $model = ModelWithAttachmentTestItem::getById($modelId); $this->assertEquals(4, $model->files->count()); //Remove the 2nd file. $_POST['myTest'] = array($file1->id, $file3->id, $file4->id); FileModelUtil::resolveModelsHasManyFilesFromPost($model, 'files', 'myTest'); $saved = $model->save(); $this->assertTrue($saved); $fileCount = FileModel::getCount(); $this->assertEquals(3, $fileCount); $model->forget(); $model = ModelWithAttachmentTestItem::getById($modelId); $this->assertEquals(3, $model->files->count()); $compareIds = array($file1->id, $file3->id, $file4->id); foreach ($model->files as $fileModel) { $this->assertTrue(in_array($fileModel->id, $compareIds)); } }