]> git.joonet.de Git - adminer.git/commitdiff
Substitute foreign keys in e-mail fields
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Wed, 9 Sep 2009 20:19:27 +0000 (20:19 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Wed, 9 Sep 2009 20:19:27 +0000 (20:19 +0000)
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1079 7c3ca157-0c34-0410-bff1-cbf682f78f5c

adminer/include/adminer.inc.php
adminer/select.inc.php
editor/include/adminer.inc.php

index 905a572110bd18524dd64313dc683e13fed78fdd..a0a5ecc531fb7db2679402199a8d8e3df8b60b6a 100644 (file)
@@ -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;
        }
        
index 459f9f33edf5ed79d2c7316ddef64b5b97b1f459..8dc424faba1cd167e8ca0e85974d1b43e5163a13 100644 (file)
@@ -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 "<p>";
 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 ? "<th>" . lang('Relations') : "") . "</thead>\n";
-                       foreach ($descriptions as $n => $row) {
+                       foreach ($adminer->rowDescriptions($rows, $foreign_keys) as $n => $row) {
                                $unique_idf = implode('&amp;', unique_idf($rows[$n], $indexes));
                                echo "<tr" . odd() . "><td><input type='checkbox' name='check[]' value='$unique_idf' onclick=\"this.form['all'].checked = false; form_uncheck('all-page');\">" . (count($select) != count($group) || information_schema(DB) ? '' : " <a href='" . h(ME) . "edit=" . urlencode($TABLE) . "&amp;$unique_idf'>" . lang('edit') . "</a>");
                                foreach ($row as $key => $val) {
index 3c1e6dd8c018886ddd27ed728a8fa6a48381cbcf..953cee0475a7d57a8bfb0e69f146b2ae5a6ed7b6 100644 (file)
@@ -188,6 +188,7 @@ ORDER BY ORDINAL_POSITION"); //! requires MySQL 5
                        echo "<p>" . lang('From') . ": <input name='email_from'>\n";
                        echo lang('Subject') . ": <input name='email_subject'>\n";
                        echo "<p><textarea name='email_message' rows='15' cols='60'></textarea>\n";
+                       //! add UI for {$name} fields
                        echo "<p>" . (count($emailFields) == 1 ? '<input type="hidden" name="email_field" value="' . h(key($emailFields)) . '">' : '<select name="email_field">' . optionlist($emailFields) . '</select> ');
                        echo "<input type='submit' name='email' value='" . lang('Send') . "'$confirm>\n";
                        echo "</div></fieldset>\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),