/** * A list of parent options * * @param array $options * @return array */ public function get_all_parents_options($options) { $result = []; $data = helper_tree::convert_by_parent($this->get(), 'sm_cntractn_parent_id'); helper_tree::convert_tree_to_options_multi($data, 0, ['name_field' => 'sm_cntractn_name', 'i18n' => true], $result); return $result; }
/** * Presets * * @see $this->get() */ public function presets($options = []) { $options['__preset'] = true; if (empty($options['columns'])) { $options['columns'] = [$this->column_prefix . 'name']; } else { if (!is_array($options['columns'])) { $options['columns'] = [$options['columns']]; } } $options['options_map'] = ['preset_value' => 'name']; $options['orderby'] = ['preset_value' => SORT_ASC]; $options['pk'] = []; if (!empty($options['where'])) { $options['pk'] = array_keys($options['where']); } $options['pk'][] = 'preset_value'; $values_found = $this->options($options); foreach ($values_found as $k => $v) { $values_found[$k]['__parent'] = '__values_found_all__'; } $values_found['__values_found_all__'] = ['name' => i18n_if('Previously Set Values:', $options['i18n'] ?? false), '__parent' => null, 'disabled' => true]; // eixsting values if (!empty($options['existing_values'])) { $existing_values = is_array($options['existing_values']) ? $options['existing_values'] : [$options['existing_values']]; $found = false; foreach ($existing_values as $v) { if (empty($values_found[$v])) { $found = true; $values_found[$v] = ['name' => i18n_if($v, $options['i18n'] ?? false), '__parent' => '__values_existing__']; } } if ($found) { $values_found['__values_existing__'] = ['name' => i18n_if('Existing Value(s)', $options['i18n'] ?? false), '__parent' => null]; } } // convert to tree $values_found = helper_tree::convert_by_parent($values_found, '__parent'); $result = []; helper_tree::convert_tree_to_options_multi($values_found, 0, ['name_field' => 'name'], $result); return $result; }