diff --git a/adminer/include/adminer.inc.php b/adminer/include/adminer.inc.php index 905a5721..a0a5ecc5 100644 --- a/adminer/include/adminer.inc.php +++ b/adminer/include/adminer.inc.php @@ -324,9 +324,10 @@ class Adminer { /** Process extras in select form * @param array AND conditions + * @param array * @return bool true if processed, false to process other parts of form */ - function selectEmailProcess($where) { + function selectEmailProcess($where, $foreignKeys) { return false; } diff --git a/adminer/select.inc.php b/adminer/select.inc.php index 459f9f33..8dc424fa 100644 --- a/adminer/select.inc.php +++ b/adminer/select.inc.php @@ -3,6 +3,8 @@ $TABLE = $_GET["select"]; $table_status = table_status($TABLE); $indexes = indexes($TABLE); $fields = fields($TABLE); +$foreign_keys = column_foreign_keys($TABLE); + $rights = array(); // privilege => 0 $columns = array(); // selectable columns unset($text_length); @@ -52,7 +54,7 @@ if ($_POST && !$error) { dump(); exit; } - if (!$adminer->selectEmailProcess($where)) { + if (!$adminer->selectEmailProcess($where, $foreign_keys)) { if (!$_POST["import"]) { // edit $result = true; $affected = 0; @@ -120,7 +122,6 @@ if ($_POST && !$error) { $table_name = $adminer->tableName($table_status); page_header(lang('Select') . ": $table_name", $error); -$foreign_keys = column_foreign_keys($TABLE); echo "

"; if (isset($rights["insert"])) { $set = ""; @@ -174,8 +175,6 @@ if (!$columns) { : count($rows) ); - $descriptions = $adminer->rowDescriptions($rows, $foreign_keys); - $backward_keys = $adminer->backwardKeys($TABLE); $table_names = array(); if ($backward_keys) { @@ -204,7 +203,7 @@ if (!$columns) { next($select); } echo ($table_names ? "" . lang('Relations') : "") . "\n"; - foreach ($descriptions as $n => $row) { + foreach ($adminer->rowDescriptions($rows, $foreign_keys) as $n => $row) { $unique_idf = implode('&', unique_idf($rows[$n], $indexes)); echo "" . (count($select) != count($group) || information_schema(DB) ? '' : " " . lang('edit') . ""); foreach ($row as $key => $val) { diff --git a/editor/include/adminer.inc.php b/editor/include/adminer.inc.php index 3c1e6dd8..953cee04 100644 --- a/editor/include/adminer.inc.php +++ b/editor/include/adminer.inc.php @@ -188,6 +188,7 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 echo "

" . lang('From') . ": \n"; echo lang('Subject') . ": \n"; echo "

\n"; + //! add UI for {$name} fields echo "

" . (count($emailFields) == 1 ? '' : ' '); echo "\n"; echo "\n"; @@ -249,7 +250,7 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 return "100"; } - function selectEmailProcess($where) { + function selectEmailProcess($where, $foreignKeys) { global $dbh; if ($_POST["email"]) { $sent = 0; @@ -263,10 +264,14 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5 . ($where ? " AND " . implode(" AND ", $where) : "") . ($_POST["all"] ? "" : " AND ((" . implode(") OR (", array_map('where_check', (array) $_POST["check"])) . "))") ); + $rows = array(); while ($row = $result->fetch_assoc()) { + $rows[] = $row; + } + foreach ($this->rowDescriptions($rows, $foreignKeys) as $row) { $replace = array(); foreach ($matches[1] as $val) { - $replace['{$' . "$val}"] = $row[$val]; //! substitute foreign keys + $replace['{$' . "$val}"] = $row[$val]; } $email = $row[$_POST["email_field"]]; if (is_email($email) && mail($email, email_header(strtr($subject, $replace)), strtr($message, $replace),