/**
  *
  * Get model properties as array.
  * return array
  */
 public function getData()
 {
     $data = array();
     $data['id'] = $this->model->id;
     $retrievableAttributes = static::resolveRetrievableAttributesByModel($this->model);
     foreach ($this->model->getAttributes($retrievableAttributes) as $attributeName => $notUsed) {
         $type = ModelAttributeToMixedArrayTypeUtil::getType($this->model, $attributeName);
         $adapterClassName = $type . 'RedBeanModelAttributeValueToArrayValueAdapter';
         if ($type != null && @class_exists($adapterClassName) && !($this->model->isRelation($attributeName) && $this->model->getRelationType($attributeName) != RedBeanModel::HAS_ONE)) {
             $adapter = new $adapterClassName($this->model, $attributeName);
             $adapter->resolveData($data);
         } elseif ($this->model->isOwnedRelation($attributeName) && ($this->model->getRelationType($attributeName) == RedBeanModel::HAS_ONE || $this->model->getRelationType($attributeName) == RedBeanModel::HAS_MANY_BELONGS_TO)) {
             if ($this->model->{$attributeName}->id > 0) {
                 $util = new ModelToArrayAdapter($this->model->{$attributeName});
                 $relatedData = $util->getData();
                 $data[$attributeName] = $relatedData;
             } else {
                 $data[$attributeName] = null;
             }
         } elseif ($this->model->isRelation($attributeName) && $this->model->getRelationType($attributeName) == RedBeanModel::HAS_ONE) {
             if ($this->model->{$attributeName}->id > 0) {
                 $data[$attributeName] = array('id' => $this->model->{$attributeName}->id);
             } else {
                 $data[$attributeName] = null;
             }
         }
     }
     return $data;
 }
 /**
  * @depends testDetailsJsonActionForWorkflow
  */
 public function testDetailsJsonActionForWorkflowWithFiles()
 {
     $emailTemplateId = self::getModelIdByModelNameAndName('EmailTemplate', 'workflow 01');
     $emailTemplate = EmailTemplate::getById($emailTemplateId);
     // attach some files
     $fileNames = array('testImage.png', 'testZip.zip', 'testPDF.pdf');
     foreach ($fileNames as $fileName) {
         $emailTemplate->files->add(ZurmoTestHelper::createFileModel($fileName));
     }
     $emailTemplate->save();
     $emailTemplate->forgetAll();
     unset($emailTemplate);
     $emailTemplate = EmailTemplate::getById($emailTemplateId);
     $emailTemplateDataUtil = new ModelToArrayAdapter($emailTemplate);
     $emailTemplateDetailsArray = $emailTemplateDataUtil->getData();
     $this->assertNotEmpty($emailTemplateDetailsArray);
     $this->setGetArray(array('id' => $emailTemplateId, 'renderJson' => true, 'includeFilesInJson' => true));
     // @ to avoid headers already sent error.
     $content = @$this->runControllerWithExitExceptionAndGetContent('emailTemplates/default/detailsJson');
     $emailTemplateDetailsResolvedArray = CJSON::decode($content);
     $emailTemplateDetailsResolvedArrayWithoutFiles = $emailTemplateDetailsResolvedArray;
     unset($emailTemplateDetailsResolvedArrayWithoutFiles['filesIds']);
     $this->assertNotEmpty($emailTemplateDetailsResolvedArray);
     $this->assertNotEquals($emailTemplateDetailsArray, $emailTemplateDetailsResolvedArray);
     $this->assertEquals($emailTemplateDetailsArray, $emailTemplateDetailsResolvedArrayWithoutFiles);
     $this->assertNotEmpty($emailTemplateDetailsResolvedArray['filesIds']);
     $this->assertEquals($emailTemplate->files->count(), count($emailTemplateDetailsResolvedArray['filesIds']));
     foreach ($emailTemplate->files as $index => $file) {
         $this->assertEquals($file->id, $emailTemplateDetailsResolvedArray['filesIds'][$index]);
     }
 }
Пример #3
0
 protected function resolveEmailTemplateAsJson(EmailTemplate $emailTemplate, $includeFilesInJson)
 {
     $emailTemplateDataUtil = new ModelToArrayAdapter($emailTemplate);
     $emailTemplateData = $emailTemplateDataUtil->getData();
     if ($includeFilesInJson) {
         $emailTemplateData['filesIds'] = array();
         foreach ($emailTemplate->files as $file) {
             $emailTemplateData['filesIds'][] = $file->id;
         }
     }
     if ($emailTemplate->builtType == EmailTemplate::BUILT_TYPE_BUILDER_TEMPLATE) {
         unset($emailTemplateData['serializedData']);
     }
     $emailTemplateJson = CJSON::encode($emailTemplateData);
     return $emailTemplateJson;
 }
 public function testGetDataWithHasOneRelatedModel()
 {
     $super = User::getByUsername('super');
     Yii::app()->user->userModel = $super;
     $currencies = Currency::getAll();
     $currencyValue = new CurrencyValue();
     $currencyValue->value = 100;
     $currencyValue->currency = $currencies[0];
     $this->assertEquals('USD', $currencyValue->currency->code);
     $testItem2 = new ModelToArrayAdapterTestItem2();
     $testItem2->name = 'John';
     $this->assertTrue($testItem2->save());
     $testItem4 = new ModelToArrayAdapterTestItem4();
     $testItem4->name = 'John';
     $this->assertTrue($testItem4->save());
     //HAS_MANY and MANY_MANY relationships should be ignored.
     $testItem3_1 = new ModelToArrayAdapterTestItem3();
     $testItem3_1->name = 'Kevin';
     $this->assertTrue($testItem3_1->save());
     $testItem3_2 = new ModelToArrayAdapterTestItem3();
     $testItem3_2->name = 'Jim';
     $this->assertTrue($testItem3_2->save());
     $testItem = new ModelToArrayAdapterTestItem();
     $testItem->firstName = 'Bob3';
     $testItem->lastName = 'Bob3';
     $testItem->boolean = true;
     $testItem->date = '2002-04-03';
     $testItem->dateTime = '2002-04-03 02:00:43';
     $testItem->float = 54.22;
     $testItem->integer = 10;
     $testItem->phone = '21313213';
     $testItem->string = 'aString';
     $testItem->textArea = 'Some Text Area';
     $testItem->url = 'http://www.asite.com';
     $testItem->owner = $super;
     $testItem->currencyValue = $currencyValue;
     $testItem->hasOne = $testItem2;
     $testItem->hasMany->add($testItem3_1);
     $testItem->hasMany->add($testItem3_2);
     $testItem->hasOneAlso = $testItem4;
     $createStamp = strtotime(DateTimeUtil::convertTimestampToDbFormatDateTime(time()));
     $this->assertTrue($testItem->save());
     $id = $testItem->id;
     $testItem->forget();
     unset($testItem);
     $testItem = ModelToArrayAdapterTestItem::getById($id);
     $adapter = new ModelToArrayAdapter($testItem);
     $data = $adapter->getData();
     $compareData = array('id' => $id, 'firstName' => 'Bob3', 'lastName' => 'Bob3', 'boolean' => 1, 'date' => '2002-04-03', 'dateTime' => '2002-04-03 02:00:43', 'float' => 54.22, 'integer' => 10, 'phone' => '21313213', 'string' => 'aString', 'textArea' => 'Some Text Area', 'url' => 'http://www.asite.com', 'currencyValue' => array('id' => $currencyValue->id, 'value' => 100, 'rateToBase' => 1, 'currency' => array('id' => $currencies[0]->id)), 'dropDown' => null, 'radioDropDown' => null, 'hasOne' => array('id' => $testItem2->id), 'hasOneAlso' => array('id' => $testItem4->id), 'primaryEmail' => null, 'primaryAddress' => null, 'secondaryEmail' => null, 'owner' => array('id' => $super->id, 'username' => 'super'), 'createdByUser' => array('id' => $super->id, 'username' => 'super'), 'modifiedByUser' => array('id' => $super->id, 'username' => 'super'), 'multiDropDown' => array('values' => null), 'tagCloud' => array('values' => null));
     // Because small delay in IO operation, allow tresholds
     $this->assertEquals($createStamp, strtotime($data['createdDateTime']), '', 2);
     $this->assertEquals($createStamp, strtotime($data['modifiedDateTime']), '', 2);
     unset($data['createdDateTime']);
     unset($data['modifiedDateTime']);
     $this->assertEquals($compareData, $data);
 }
Пример #5
0
 protected function resolveEmailTemplateAsJson(EmailTemplate $emailTemplate, $includeFilesInJson)
 {
     $emailTemplateDataUtil = new ModelToArrayAdapter($emailTemplate);
     $emailTemplateData = $emailTemplateDataUtil->getData();
     if ($includeFilesInJson) {
         $emailTemplateData['filesIds'] = array();
         foreach ($emailTemplate->files as $file) {
             $emailTemplateData['filesIds'][] = $file->id;
         }
     }
     $emailTemplateJson = CJSON::encode($emailTemplateData);
     return $emailTemplateJson;
 }
 /**
  * @depends testSuperUserEditActionForWorkflow
  */
 public function testSuperUserDetailsJsonActionForWorkflow()
 {
     $emailTemplateId = self::getModelIdByModelNameAndName('EmailTemplate', 'New Test Workflow Email Template 00');
     $emailTemplate = EmailTemplate::getById($emailTemplateId);
     $emailTemplateDataUtil = new ModelToArrayAdapter($emailTemplate);
     $emailTemplateDetailsArray = $emailTemplateDataUtil->getData();
     $this->assertNotEmpty($emailTemplateDetailsArray);
     $this->setGetArray(array('id' => $emailTemplateId, 'renderJson' => true));
     // @ to avoid headers already sent error.
     $content = @$this->runControllerWithExitExceptionAndGetContent('emailTemplates/default/details');
     $emailTemplateDetailsResolvedArray = CJSON::decode($content);
     $this->assertNotEmpty($emailTemplateDetailsResolvedArray);
     $this->assertEquals($emailTemplateDetailsArray, $emailTemplateDetailsResolvedArray);
 }