/** * Used on first load to install ContactState data * and the startingState for the Contacts module. * @return true/false if data was in fact loaded. */ public static function loadStartingData() { if (count(ContactState::GetAll()) != 0) { return false; } $data = array(Zurmo::t('Core', 'New'), Zurmo::t('Core', 'In Progress'), Zurmo::t('ContactsModule', 'Recycled'), Zurmo::t('ContactsModule', 'Dead'), Zurmo::t('ContactsModule', 'Qualified'), Zurmo::t('ZurmoModule', 'Customer')); $order = 0; $startingStateId = null; foreach ($data as $stateName) { $state = new ContactState(); $state->name = $stateName; $state->order = $order; $saved = $state->save(); assert('$saved'); if ($stateName == Zurmo::t('ContactsModule', 'Qualified')) { $startingStateId = $state->id; } $order++; } if ($startingStateId == null) { throw new NotSupportedException(); } $metadata = ContactsModule::getMetadata(); $metadata['global']['startingStateId'] = $startingStateId; ContactsModule::setMetadata($metadata); assert('count(ContactState::GetAll()) == 6'); return true; }
public function testCreateAndGetContactState() { $state = new ContactState(); $state->name = 'First State'; $state->order = 0; $this->assertTrue($state->save()); $id = $state->id; unset($state); $state = ContactState::getById($id); $this->assertEquals('First State', $state->name); $this->assertEquals(0, $state->order); $state->delete(); }
public function setAttributeMetadataFromForm(AttributeForm $attributeForm) { $modelClassName = get_class($this->model); $attributeName = $attributeForm->attributeName; $attributeLabels = $attributeForm->attributeLabels; $elementType = $attributeForm->getAttributeTypeName(); $isRequired = (bool) $attributeForm->isRequired; $isAudited = (bool) $attributeForm->isAudited; $contactStatesData = $attributeForm->contactStatesData; $contactStatesLabels = $attributeForm->contactStatesLabels; $startingStateOrder = (int) $attributeForm->startingStateOrder; $contactStatesDataExistingValues = $attributeForm->contactStatesDataExistingValues; if ($contactStatesDataExistingValues == null) { $contactStatesDataExistingValues = array(); } if ($attributeForm instanceof ContactStateAttributeForm) { //update order on existing states. //delete removed states $states = ContactState::getAll('order'); $stateNames = array(); foreach ($states as $state) { if (in_array($state->name, $contactStatesData)) { $stateNames[] = $state->name; $state->order = array_search($state->name, $contactStatesData); $state->serializedLabels = $this->makeSerializedLabelsByLabelsAndOrder($contactStatesLabels, (int) $state->order); $saved = $state->save(); assert('$saved'); } elseif (in_array($state->name, $contactStatesDataExistingValues)) { $order = array_search($state->name, $contactStatesDataExistingValues); $state->name = $contactStatesData[$order]; $state->order = $order; $state->serializedLabels = $this->makeSerializedLabelsByLabelsAndOrder($contactStatesLabels, (int) $state->order); $saved = $state->save(); assert('$saved'); $stateNames[] = $state->name; } else { $stateNames[] = $state->name; $state->delete(); } } //add new states with correct order. foreach ($contactStatesData as $order => $name) { if (!in_array($name, $stateNames)) { $state = new ContactState(); $state->name = $name; $state->order = $order; $state->serializedLabels = $this->makeSerializedLabelsByLabelsAndOrder($contactStatesLabels, (int) $order); $saved = $state->save(); assert('$saved'); } } //Set starting state by order. ContactsUtil::setStartingStateByOrder($startingStateOrder); ModelMetadataUtil::addOrUpdateRelation($modelClassName, $attributeName, $attributeLabels, $elementType, $isRequired, $isAudited, 'ContactState'); } else { throw new NotSupportedException(); } }