Beispiel #1
0
 public function testEavQueue()
 {
     // set up Manufacturer records
     $field = EavField::getNewInstance('Manufacturer', EavField::DATATYPE_TEXT, EavField::TYPE_TEXT_SIMPLE);
     $field->save();
     $data = array('first', 'second', 'third');
     foreach ($data as $value) {
         $manufacturer = Manufacturer::getNewInstance($value);
         $manufacturer->getSpecification()->setAttributeValueByLang($field, 'en', $value . ' test');
         $manufacturer->save();
     }
     ActiveRecordModel::clearPool();
     // fetch them from database
     $manufacturers = ActiveRecordModel::getRecordSetArray('Manufacturer', new ARSelectFilter());
     foreach ($manufacturers as &$entry) {
         ActiveRecordModel::addToEavQueue('Manufacturer', $entry);
     }
     // duplicate
     $manufacturers = array_merge($manufacturers, $manufacturers);
     // load EAV data
     ActiveRecordModel::loadEav();
     foreach ($manufacturers as $man) {
         $this->assertEqual($man['name'] . ' test', $man['attributes'][$field->getID()]['value_en']);
     }
 }
 public function testClone()
 {
     $text = EavField::getNewInstance('User', EavField::DATATYPE_TEXT, EavField::TYPE_TEXT_SIMPLE);
     $text->save();
     $singleSel = EavField::getNewInstance('User', EavField::DATATYPE_NUMBERS, EavField::TYPE_NUMBERS_SELECTOR);
     $singleSel->handle->set('single.sel');
     $singleSel->setValueByLang('name', 'en', 'Select one value');
     $singleSel->save();
     $value1 = EavValue::getNewInstance($singleSel);
     $value1->setValueByLang('value', 'en', $firstValue = '20');
     $value1->save();
     $value2 = EavValue::getNewInstance($singleSel);
     $value2->setValueByLang('value', 'en', $secValue = '30');
     $value2->save();
     $user = User::getNewInstance('*****@*****.**');
     $user->save();
     $spec = $user->getSpecification();
     $spec->setAttributeValueByLang($text, 'en', 'text');
     $spec->setAttributeValue($singleSel, $value1);
     $user->save();
     $cloned = clone $user;
     $cloned->email->set('*****@*****.**');
     $cloned->save();
     $this->assertNotSame($cloned->getSpecification(), $user->getSpecification());
     $this->assertEquals($cloned->getSpecification()->getAttribute($text)->getValueByLang('value', 'en'), 'text');
     ActiveRecordModel::clearPool();
     $reloaded = ActiveRecordModel::getInstanceByID('User', $cloned->getID(), true);
     $this->assertEquals($reloaded->getSpecification()->getAttribute($text)->getValueByLang('value', 'en'), 'text');
     $this->assertEquals($reloaded->getSpecification()->getAttribute($singleSel)->getValue()->get()->getID(), $value1->getID());
 }
 public function testIndex()
 {
     $response = $this->controller->index();
     $this->assertIsA($response, 'ActionResponse');
     $nodes = $response->get('nodes');
     // +1 for offline methods
     $this->assertEqual(count($nodes), count(EavField::getEavClasses()) + 1);
 }
Beispiel #4
0
 /**
  * Get new EavFieldGroup active record instance
  *
  * @return EavFieldGroup
  */
 public static function getNewInstance($className)
 {
     if ($className instanceof EavFieldManager) {
         $className = $className->getClassName();
     }
     $inst = parent::getNewInstance(__CLASS__);
     $inst->classID->set(EavField::getClassID($className));
     return $inst;
 }
Beispiel #5
0
 public function getSpecificationFieldSet($loadReferencedRecords = false)
 {
     $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle($this->getFieldClass(), 'classID'), EavField::getClassID($this->owner)));
     if ($this->owner->getStringIdentifier()) {
         $f->mergeCondition(new EqualsCond(new ARFieldHandle('EavField', 'stringIdentifier'), $this->owner->getStringIdentifier()));
     }
     $f->setOrder(new ARFieldHandle($this->getFieldClass(), 'position'));
     return ActiveRecordModel::getRecordSet($this->getFieldClass(), $f, $loadReferencedRecords);
 }
Beispiel #6
0
 public static function getNewInstance(EavAble $parent)
 {
     $field = self::getInstanceField($parent);
     $instance = parent::getNewInstance(__CLASS__);
     $instance->{$field}->set($parent);
     $instance->classID->set(EavField::getClassID($parent));
     $instance->parent = $parent;
     $parent->eavObject->set($instance);
     return $instance;
 }
Beispiel #7
0
 public function testCreatingField()
 {
     $field = EavField::getNewInstance('Manufacturer');
     $field->save();
     $otherField = EavField::getNewInstance('User');
     $otherField->save();
     $fields = EavField::getFieldsByClass('Manufacturer');
     $this->assertEqual($fields->size(), 1);
     $this->assertEqual($fields->get(0), $field);
 }
Beispiel #8
0
 /**
  * Creates a select filter for custom fields
  *
  * @param bool $includeParentFields
  * @return ARSelectFilter
  */
 private function getFieldFilter($class = null)
 {
     $classID = $class ? EavField::getClassID($class) : $this->classID;
     $filter = new ARSelectFilter(new EqualsCond(new ARFieldHandle('EavField', 'classID'), $classID));
     if (is_null($class) && $this->stringIdentifier) {
         $filter->mergeCondition(new EqualsCond(new ARFieldHandle('EavField', 'stringIdentifier'), $this->stringIdentifier));
     }
     $filter->setOrder(new ARFieldHandle('EavFieldGroup', 'position'));
     $filter->setOrder(new ARFieldHandle('EavField', 'position'));
     return $filter;
 }
 public function process()
 {
     static $beenHere = null;
     if (!$beenHere) {
         EavObject::defineSchema();
         $schema = EavField::getSchemaInstance('EavObject');
         $schema->registerField(new ARForeignKeyField("eyeExamRequestID", "EyeExamRequest", "ID", null, ARInteger::instance()), false);
         $eafFieldInst = EavField::getNewInstance('EavField');
         $eafFieldInst->registerClass('EyeExamRequest', 8);
     }
     $beenHere = true;
 }
Beispiel #10
0
 public function index()
 {
     $nodes = array();
     foreach (EavField::getEavClasses() as $class => $id) {
         $nodes[] = array('ID' => $id, 'name' => $this->translate($class));
     }
     // get offline payment methods
     $offlineMethods = array();
     foreach (OfflineTransactionHandler::getEnabledMethods() as $method) {
         $id = substr($method, -1);
         $offlineMethods[] = array('ID' => $method, 'name' => $this->config->get('OFFLINE_NAME_' . $id));
     }
     if ($offlineMethods) {
         $nodes[] = array('ID' => 'offline methods', 'name' => $this->translate('_offline_methods'), 'sub' => $offlineMethods);
     }
     return new ActionResponse('nodes', $nodes);
 }
 public function testIndex()
 {
     $class = 'Category';
     $this->request->set('id', EavField::getClassID($class));
     $response = $this->controller->index();
     $this->assertIsA($response, 'ActionResponse');
     // field list should be empty
     $this->assertEqual(0, count($response->get('specFieldsWithGroups')));
     $field = EavField::getNewInstance($class);
     $field->save();
     // one new field expected
     $response = $this->controller->index();
     $this->assertEqual(1, count($response->get('specFieldsWithGroups')));
     // the field should not show up in different category
     $this->request->set('id', EavField::getClassID('User'));
     $response = $this->controller->index();
     $this->assertEqual(0, count($response->get('specFieldsWithGroups')));
     // test creating a group
     $group = EavFieldGroup::getNewInstance($class);
     $group->save();
     $this->request->set('id', EavField::getClassID($class));
     $response = $this->controller->index();
 }
Beispiel #12
0
 private function getSchemaInstance($fieldName)
 {
     list($schemaName, $fieldName) = explode('.', $fieldName);
     if ('eavField' == $schemaName) {
         $eavField = EavField::getInstanceByID($fieldName, true);
         if (!$eavField->isMultiValue->get()) {
             $schemaName = $eavField->getValueTableName();
         } else {
             // intentionally return wrong schema for multi-select values as they cannot be sorted or searched
             $schemaName = 'EavField';
         }
     }
     $possibleSchemas = ActiveRecordModel::getSchemaInstance($this->modelClass)->getDirectlyReferencedSchemas();
     if (isset($possibleSchemas[$schemaName])) {
         $schema = $possibleSchemas[$schemaName];
     } else {
         foreach ((array) $possibleSchemas as $name => $schemaArray) {
             $parts = explode('_', $name, 2);
             if (isset($parts[1]) && $parts[1] == $schemaName) {
                 $schema = $schemaArray[0];
                 break;
             }
         }
     }
     if (!isset($schema) || !is_object($schema)) {
         $schema = ActiveRecordModel::getSchemaInstance($schemaName);
     }
     if ('EavItem' == $schema->getName()) {
         $schema = ActiveRecordModel::getSchemaInstance('EavValue');
     }
     return $schema;
 }
Beispiel #13
0
 public static function getFieldsByClass($className)
 {
     $f = new ARSelectFilter(new EqualsCond(new ARFieldHandle('EavField', 'classID'), EavField::getClassID($className)));
     $f->setOrder(new ARFieldHandle('EavField', 'position'));
     return self::getRecordSet('EavField', $f);
 }