/**
  * (non-PHPdoc)
  * @see ModelHasRelatedItemsZurmoControllerUtil::afterSetAttributesDuringSave()
  */
 protected function afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions)
 {
     parent::afterSetAttributesDuringSave($model, $explicitReadWriteModelPermissions);
     if ($model instanceof Item) {
         FileModelUtil::resolveModelsHasManyFilesFromPost($model, 'files', 'filesIds');
     }
 }
示例#2
0
 /**
  * @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());
 }
示例#6
0
 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);
         }
     }
 }
示例#11
0
 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()));
     }
 }