limit = $limit; } function editInput($table, $field, $attrs, $value) { static $foreignTables = []; static $values = []; $foreignKeys = &$foreignTables[$table]; if ($foreignKeys === null) { $foreignKeys = Adminer\column_foreign_keys($table); } $titleFields = [ 'name', 'title', 'nickname', 'email', ]; $titleFieldName = null; foreach ((array) $foreignKeys[$field["field"]] as $foreignKey) { if (count($foreignKey["source"]) == 1) { $target = $foreignKey["table"]; $id = $foreignKey["target"][0]; $options = &$values[$target][$id]; if (!$options) { $column = Adminer\idf_escape($id); if (preg_match('~binary~', $field["type"])) { $column = "HEX($column)"; } $selectFields = [ $column, ]; $targetFields = array_keys(Adminer\fields($target)); foreach ($targetFields as $targetField) { if (in_array($targetField, $titleFields)) { $selectFields[] = Adminer\idf_escape($targetField); $titleFieldName = $targetField; break; } } $rows = Adminer\get_rows('SELECT ' . implode(',', $selectFields) . ' FROM ' . Adminer\table($target) . ' ORDER BY 1'); $options = [ '', ]; foreach ($rows as $row) { $options[$row[$id]] = $row[$titleFieldName ?? $id]; } if ($this->limit && count($options) - 1 > $this->limit) { return; } } return "" . Adminer\optionlist($options, $value, true) . ""; } } } protected $translations = [ 'cs' => ['' => 'Výběr cizího klíče v editačním formuláři'], 'de' => ['' => 'Wählen Sie im Bearbeitungsformular den Fremdschlüssel aus'], 'pl' => ['' => 'Wybierz klucz obcy w formularzu edycji'], 'ro' => ['' => 'Selectați cheia străină în formularul de editare'], 'ja' => ['' => '外部キーを編集フォームで選択'], 'ru' => ['' => 'Выбор внешнего ключа при редактировании таблицы (с подстановкой Title)'], ]; }