return $this->getSystemTypes($translated)[$type] ?? _T($type);
}
+ /**
+ * Get all known types
+ *
+ * @return array<string,string>
+ *
+ * @throws Throwable
+ */
+ public function getTypes(): array
+ {
+ $types = $this->getSystemTypes();
+
+ $select = $this->zdb->select(self::TABLE);
+ $select->quantifier('DISTINCT');
+ $select->where->notIn('type', array_keys($this->getSystemTypes(false)));
+ $results = $this->zdb->execute($select);
+
+ foreach ($results as $r) {
+ $types[$r->type] = $r->type;
+ }
+
+ return $types;
+ }
+
/**
* Handle files
*
<i class="jsonly displaynone dropdown icon" aria-hidden="true"></i>
<div class="jsonly displaynone default text">{{ _T("Choose or enter your own...") }}</div>
<div class="jsonly displaynone menu">
- {% for doc_type in document.getSystemTypes(false) %}
- <div class="item" data-value="{{ doc_type }}">{{ document.getSystemType(doc_type) }}</div>
+ {% for doc_type, tdoc_type in document.getTypes() %}
+ <div class="item" data-value="{{ doc_type }}">{{ tdoc_type }}</div>
{% endfor %}
</div>
</div>
$tlist = $document->getTypedList();
$this->assertCount(1, $tlist);
}
+
+ /**
+ * Test getTypes
+ *
+ * @return void
+ */
+ public function testGetTypes(): void
+ {
+ $document = new \Galette\Entity\Document($this->zdb);
+
+ //per default, retrieve ony system types
+ $list_types = $document->getSystemTypes();
+ $this->assertSame($list_types, $document->getTypes());
+
+ //create a new type
+ $document = $this->getDocumentInstance();
+ $_FILES['document_file'] = [
+ 'error' => UPLOAD_ERR_OK,
+ 'name' => 'afile.pdf',
+ 'tmp_name' => '/tmp/afile.pdf',
+ 'size' => 4096
+ ];
+ $post = [
+ 'document_type' => 'An other document type',
+ 'comment' => '',
+ 'visible' => \Galette\Entity\FieldsConfig::STAFF
+ ];
+
+ $this->assertTrue($document->store($post, $_FILES));
+
+ //check new type is present from getTypes() method
+ $list_types['An other document type'] = 'An other document type';
+ $this->assertSame($list_types, $document->getTypes());
+ }
}