/** * (non-PHPdoc) * @see ModelHasRelatedItemsZurmoControllerUtil::afterSetAttributesDuringSave() */ protected function afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions) { parent::afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions); if ($model instanceof Item) { FileModelUtil::resolveModelsHasManyFilesFromPost($model, 'files', 'filesIds'); } }
/** * @param string $commaSeparatedExistingModelIds * @throws FailedFileUploadException */ public function actionCloneExistingFiles($commaSeparatedExistingModelIds) { assert('is_string($commaSeparatedExistingModelIds)'); $existingFileModelIds = explode(',', $commaSeparatedExistingModelIds); // Not Coding Standard $newFileModelsData = array(); //needs id, name, size at least, preferably type too. foreach ($existingFileModelIds as $existingFileModelId) { $newFileModel = FileModelUtil::makeByExistingFileModelId($existingFileModelId); if ($newFileModel === false) { throw new FailedFileUploadException(); } $newFileModelsData[] = array('name' => $newFileModel->name, 'type' => $newFileModel->type, 'size' => FileModelDisplayUtil::convertSizeToHumanReadableAndGet($newFileModel->size), 'id' => $newFileModel->id); } $newFileModelsJson = CJSON::encode($newFileModelsData); echo $newFileModelsJson; }
/** * Add the files from EmailTemplate to the EmailMessage * @param EmailMessage $emailMessage * @param EmailTemplate $emailTemplate */ protected function resolveAttachments(EmailMessage $emailMessage, EmailTemplate $emailTemplate) { if (!empty($emailTemplate->files)) { foreach ($emailTemplate->files as $file) { $emailMessageFile = FileModelUtil::makeByFileModel($file); $emailMessage->files->add($emailMessageFile); } } }
protected static function resolveFileAttachments() { FileModelUtil::resolveModelsHasManyFilesFromPost(static::$emailTemplate, 'files', 'filesIds'); }
public function testMakeByExistingFileModelIdWithoutSharedContent() { $oldFileContentsCount = FileContent::getCount(); $file1 = ZurmoTestHelper::createFileModel('testNote.txt'); $file2 = FileModelUtil::makeByExistingFileModelId($file1->id, false); $this->assertTrue($file2 !== false); $this->assertEquals($file1->name, $file2->name); $this->assertEquals($file1->type, $file2->type); $this->assertEquals($file1->size, $file2->size); $this->assertEquals($file1->fileContent->content, $file2->fileContent->content); // fileContent should be replicated as we explicitly passed false to sharedContent $this->assertNotEquals($file1->fileContent->id, $file2->fileContent->id); $this->assertEquals($oldFileContentsCount + 2, FileContent::getCount()); }
public function testMakeByExistingFileModelId() { Yii::app()->user->userModel = User::getByUsername('super'); $file1 = ZurmoTestHelper::createFileModel(); $file2 = FileModelUtil::makeByExistingFileModelId($file1->id); $this->assertTrue($file2 !== false); $this->assertEquals($file1->fileContent->content, $file2->fileContent->content); $this->assertEquals($file1->name, $file2->name); $this->assertEquals($file1->type, $file2->type); $this->assertEquals($file1->size, $file2->size); }
/** * Add the files from EmailTemplate to the EmailMessage * @param EmailMessage $emailMessage * @param EmailTemplate $emailTemplate */ protected function resolveAttachments(EmailMessage $emailMessage, EmailTemplate $emailTemplate) { if (!empty($emailTemplate->files)) { foreach ($emailTemplate->files as $file) { $emailMessageFile = FileModelUtil::makeByFileModel($file); if ($emailMessageFile instanceof FileModel) { $emailMessage->files->add($emailMessageFile); } else { $logContent = "\n EmailTemplate model with id: " . $emailTemplate->id . " is missing attachment.\n"; Yii::log($logContent, CLogger::LEVEL_WARNING); } } } }
protected static function resolveAttachments(EmailMessage $emailMessage, Item $itemOwnerModel) { if (!empty($itemOwnerModel->files)) { foreach ($itemOwnerModel->files as $file) { $emailMessageFile = FileModelUtil::makeByFileModel($file); $emailMessage->files->add($emailMessageFile); } } }
public function testModelWithAttachmentTestItem() { $pathToFiles = Yii::getPathOfAlias('application.modules.zurmo.tests.unit.files'); $filePath = $pathToFiles . DIRECTORY_SEPARATOR . 'testNote.txt'; // create 2 extra file model which should persist when $model is delete, their content should also persist. $pdfFile = FileModelUtil::makeByFilePathAndName($filePath, 'testPDF.pdf'); $pdfFileId = $pdfFile->id; $pdfFileName = $pdfFile->name; $pdfFileContent = $pdfFile->fileContent->content; $pdfFileType = $pdfFile->type; $pdfFileSize = $pdfFile->size; $pdfFile->forgetAll(); unset($pdfFile); $zipFile = FileModelUtil::makeByFilePathAndName($filePath, 'testZip.zip'); $zipFileId = $zipFile->id; $zipFileName = $zipFile->name; $zipFileContent = $zipFile->fileContent->content; $zipFileType = $zipFile->type; $zipFileSize = $zipFile->size; $zipFile->forgetAll(); unset($zipFile); $model = new ModelWithAttachmentTestItem(); $fileModel = FileModelUtil::makeByFilePathAndName($filePath, 'testNote.txt'); $firstFileModelId = $fileModel->id; $this->assertTrue($fileModel instanceof FileModel); $this->assertEquals(6495, strlen($fileModel->fileContent->content)); $theContent = $fileModel->fileContent->content; $model->files->add($fileModel); $model->member = 'test'; $saved = $model->save(); $this->assertTrue($saved); $modelId = $model->id; $model->forget(); $model = ModelWithAttachmentTestItem::getById($modelId); $this->assertEquals($theContent, $model->files[0]->fileContent->content); $this->assertEquals('testNote.txt', $model->files[0]->name); $this->assertEquals('text/plain', $model->files[0]->type); $this->assertEquals(6495, $model->files[0]->size); //Now try using CUploadedFile. self::resetAndPopulateFilesArrayByFilePathAndName('aTest', $filePath, 'testNote.txt'); $uploadedFile = CUploadedFile::getInstanceByName('aTest'); $this->assertTrue($uploadedFile instanceof CUploadedFile); $fileModel = FileModelUtil::makeByUploadedFile($uploadedFile); $this->assertTrue($fileModel instanceof FileModel); $this->assertTrue($fileModel->id != $firstFileModelId); $this->assertTrue($fileModel->id > 0); $model = ModelWithAttachmentTestItem::getById($modelId); $model->files->add($fileModel); $saved = $model->save(); $this->assertTrue($saved); $modelId = $model->id; $model->forget(); RedBeanModel::forgetAll(); $model = ModelWithAttachmentTestItem::getById($modelId); $this->assertEquals(2, $model->files->count()); //Delete the model and confirm the related models are removed $this->assertEquals(1, ModelWithAttachmentTestitem::getCount()); $this->assertEquals(4, FileModel::getCount()); $this->assertEquals(4, FileContent::getCount()); $this->assertTrue($model->delete()); $this->assertEquals(0, ModelWithAttachmentTestitem::getCount()); $this->assertEquals(2, FileModel::getCount()); $this->assertEquals(2, FileContent::getCount()); $pdfFile = FileModel::getById($pdfFileId); $this->assertEquals($pdfFileContent, $pdfFile->fileContent->content); $this->assertEquals($pdfFileName, $pdfFile->name); $this->assertEquals($pdfFileType, $pdfFile->type); $this->assertEquals($pdfFileSize, $pdfFile->size); $zipFile = FileModel::getById($zipFileId); $this->assertEquals($zipFileContent, $zipFile->fileContent->content); $this->assertEquals($zipFileName, $zipFile->name); $this->assertEquals($zipFileType, $zipFile->type); $this->assertEquals($zipFileSize, $zipFile->size); }
protected function resolveAttachmentsForEmailMessage(EmailMessage &$emailMessage, $attachments) { if (!empty($attachments)) { foreach ($attachments as $attachment) { $emailMessageFile = FileModelUtil::makeByFileModel($attachment); $emailMessage->files->add($emailMessageFile); } } }
public function testModelWithAttachmentTestItem() { if (!RedBeanDatabase::isFrozen()) { Yii::app()->user->userModel = User::getByUsername('super'); $pathToFiles = Yii::getPathOfAlias('application.modules.zurmo.tests.unit.files'); $filePath = $pathToFiles . DIRECTORY_SEPARATOR . 'testNote.txt'; $model = new ModelWithAttachmentTestItem(); $fileModel = FileModelUtil::makeByFilePathAndName($filePath, 'testNote.txt'); $firstFileModelId = $fileModel->id; $this->assertTrue($fileModel instanceof FileModel); $this->assertEquals(6495, strlen($fileModel->fileContent->content)); $theContent = $fileModel->fileContent->content; $model->files->add($fileModel); $model->member = 'test'; $saved = $model->save(); $this->assertTrue($saved); $modelId = $model->id; $model->forget(); $model = ModelWithAttachmentTestItem::getById($modelId); $this->assertEquals($theContent, $model->files[0]->fileContent->content); $this->assertEquals('testNote.txt', $model->files[0]->name); $this->assertEquals('text/plain', $model->files[0]->type); $this->assertEquals(6495, $model->files[0]->size); //Now try using CUploadedFile. self::resetAndPopulateFilesArrayByFilePathAndName('aTest', $filePath, 'testNote.txt'); $uploadedFile = CUploadedFile::getInstanceByName('aTest'); $this->assertTrue($uploadedFile instanceof CUploadedFile); $fileModel = FileModelUtil::makeByUploadedFile($uploadedFile); $this->assertTrue($fileModel instanceof FileModel); $this->assertTrue($fileModel->id != $firstFileModelId); $this->assertTrue($fileModel->id > 0); $model = ModelWithAttachmentTestItem::getById($modelId); $model->files->add($fileModel); $saved = $model->save(); $this->assertTrue($saved); $modelId = $model->id; $model->forget(); $model = ModelWithAttachmentTestItem::getById($modelId); $this->assertEquals(2, $model->files->count()); //Delete the model and confirm the related models are removed $this->assertEquals(1, count(ModelWithAttachmentTestitem::getAll())); $this->assertEquals(2, count(FileModel::getAll())); $this->assertEquals(2, count(FileContent::getAll())); $model->delete(); $this->assertEquals(0, count(ModelWithAttachmentTestitem::getAll())); $this->assertEquals(0, count(FileModel::getAll())); $this->assertEquals(0, count(FileContent::getAll())); } }