1 <?php
 2 
 3 /**
 4  * @package redaxo\core\form
 5  */
 6 abstract class rex_form_options_element extends rex_form_element
 7 {
 8     private $options;
 9 
10     // 1. Parameter nicht genutzt, muss aber hier stehen,
11     // wg einheitlicher Konstrukturparameter
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