1 <?php
2
3 4 5
6 abstract class rex_form_options_element extends rex_form_element
7 {
8 private $options;
9
10
11
12 public function __construct($tag = '', rex_form_base $table = null, array $attributes = [])
13 {
14 parent::__construct($tag, $table, $attributes);
15 $this->options = [];
16 }
17
18 public function addOption($name, $value)
19 {
20 $this->options[$name] = $value;
21 }
22
23 public function addOptions(array $options, $useOnlyValues = false)
24 {
25 if (count($options) > 0) {
26 foreach ($options as $key => $option) {
27 $option = (array) $option;
28 if ($useOnlyValues) {
29 $this->addOption($option[0], $option[0]);
30 } else {
31 if (!isset($option[1])) {
32 $option[1] = $key;
33 }
34
35 $this->addOption($option[0], $option[1]);
36 }
37 }
38 }
39 }
40
41 public function addArrayOptions(array $options, $use_keys = true)
42 {
43 foreach ($options as $key => $value) {
44 if (!$use_keys) {
45 $key = $value;
46 }
47
48 $this->addOption($value, $key);
49 }
50 }
51
52 public function addSqlOptions($qry)
53 {
54 $sql = rex_sql::factory();
55 $this->addOptions($sql->getArray($qry, [], PDO::FETCH_NUM));
56 }
57
58 public function addDBSqlOptions($qry)
59 {
60 $sql = rex_sql::factory();
61 $this->addOptions($sql->getDBArray($qry, [], PDO::FETCH_NUM));
62 }
63
64 public function getOptions()
65 {
66 return $this->options;
67 }
68 }
69