Пример #1
0
 public function feed_meta_fields()
 {
     $sxe = $this->get_sxml_structure();
     foreach ($sxe->description->children() as $fname => $field) {
         $dom_struct = $this->get_dom_structure();
         $xp_struct = $this->get_xpath_structure();
         $fname = (string) $fname;
         $src = trim(isset($field['src']) ? str_replace('/rdf:RDF/rdf:Description/', '', $field['src']) : '');
         $meta_id = isset($field['meta_id']) ? $field['meta_id'] : null;
         if (!is_null($meta_id)) {
             continue;
         }
         $nodes = $xp_struct->query('/record/description/' . $fname);
         if ($nodes->length > 0) {
             $nodes->item(0)->parentNode->removeChild($nodes->item(0));
         }
         $this->saveStructure($dom_struct);
         $type = isset($field['type']) ? $field['type'] : 'string';
         $type = in_array($type, [databox_field::TYPE_DATE, databox_field::TYPE_NUMBER, databox_field::TYPE_STRING, databox_field::TYPE_TEXT]) ? $type : databox_field::TYPE_STRING;
         $multi = isset($field['multi']) ? (bool) (string) $field['multi'] : false;
         $meta_struct_field = databox_field::create($this->app, $this, $fname, $multi);
         $meta_struct_field->set_readonly(isset($field['readonly']) ? (string) $field['readonly'] : 0)->set_indexable(isset($field['index']) ? (string) $field['index'] : '1')->set_separator(isset($field['separator']) ? (string) $field['separator'] : '')->set_required(isset($field['required']) && (string) $field['required'] == 1)->set_business(isset($field['business']) && (string) $field['business'] == 1)->set_type($type)->set_tbranch(isset($field['tbranch']) ? (string) $field['tbranch'] : '')->set_thumbtitle(isset($field['thumbtitle']) ? (string) $field['thumbtitle'] : (isset($field['thumbTitle']) ? $field['thumbTitle'] : '0'))->set_report(isset($field['report']) ? (string) $field['report'] : '1')->save();
         try {
             $meta_struct_field->set_tag(\databox_field::loadClassFromTagName($src))->save();
         } catch (\Exception $e) {
         }
     }
     return $this;
 }
Пример #2
0
 public function testSet_tag()
 {
     $source = \databox_field::loadClassFromTagName('Phraseanet:tf-basename');
     $this->object_mono->set_tag($source);
     $this->object_multi->set_tag($source);
     $this->assertEquals($source, $this->object_mono->get_tag());
     $this->assertEquals($source, $this->object_multi->get_tag());
     $this->object_mono->set_tag(null);
     $this->object_multi->set_tag(null);
     $this->assertEquals(new \Alchemy\Phrasea\Metadata\Tag\Nosource(), $this->object_mono->get_tag());
     $this->assertEquals(new \Alchemy\Phrasea\Metadata\Tag\Nosource(), $this->object_multi->get_tag());
 }
Пример #3
0
 public function testUpdateFields()
 {
     $databoxes = self::$DI['app']->getDataboxes();
     $databox = array_shift($databoxes);
     $fieldObjects = [];
     // create two fields
     $fields = [['sbas-id' => $databox->get_sbas_id(), 'name' => 'testfield' . mt_rand(), 'multi' => true, 'thumbtitle' => false, 'tag' => 'XMP:XMP', 'business' => false, 'indexable' => true, 'required' => true, 'separator' => '=;', 'readonly' => false, 'type' => 'string', 'tbranch' => '', 'report' => true, 'dces-element' => null, 'vocabulary-type' => null, 'vocabulary-restricted' => false], ['sbas-id' => $databox->get_sbas_id(), 'name' => 'testfield' . mt_rand(), 'multi' => true, 'thumbtitle' => false, 'tag' => 'XMP:XMP', 'business' => false, 'indexable' => true, 'required' => true, 'separator' => '=;', 'readonly' => false, 'type' => 'string', 'tbranch' => '', 'report' => true, 'dces-element' => null, 'vocabulary-type' => null, 'vocabulary-restricted' => false]];
     foreach ($fields as $fieldData) {
         $field = \databox_field::create(self::$DI['app'], $databox, $fieldData['name'], $fieldData['multi']);
         $field->set_thumbtitle($fieldData['thumbtitle'])->set_tag(\databox_field::loadClassFromTagName($fieldData['tag']))->set_business($fieldData['business'])->set_indexable($fieldData['indexable'])->set_required($fieldData['required'])->set_separator($fieldData['separator'])->set_readonly($fieldData['readonly'])->set_type($fieldData['type'])->set_tbranch($fieldData['tbranch'])->set_report($fieldData['report'])->setVocabularyControl(null)->setVocabularyRestricted(false);
         $field->save();
         $fieldObjects[] = $field;
     }
     // get body
     $body = $databox->get_meta_structure()->toArray();
     // change some body data
     $body[count($body) - 2]['business'] = true;
     $body[count($body) - 2]['indexable'] = false;
     $body[count($body) - 1]['readonly'] = true;
     $body[count($body) - 1]['required'] = false;
     self::$DI['client']->request("PUT", sprintf("/admin/fields/%d/fields", $databox->get_sbas_id()), [], [], [], json_encode($body));
     $response = self::$DI['client']->getResponse()->getContent();
     $this->assertEquals("application/json", self::$DI['client']->getResponse()->headers->get("content-type"));
     $data = json_decode($response, true);
     $this->assertTrue(is_array($data));
     // expect last 2 fields from body equals last 2 fields from response
     $this->assertEquals(array_splice($body, -2), array_splice($data, -2));
     // delete created fields
     foreach ($fieldObjects as $field) {
         $field->delete();
     }
 }
Пример #4
0
 private function validateTagField(array $field)
 {
     try {
         \databox_field::loadClassFromTagName($field['tag'], true);
     } catch (\Exception_Databox_metadataDescriptionNotFound $e) {
         throw new BadRequestHttpException(sprintf('Provided tag %s is unknown.', $field['tag']));
     }
 }