function in_admin() { return str_start(self_q(), "admin"); }
function form_link_table($link_table, $master_table, $master_field, $master_value, $items_table, $items_table_display_field) { global $tables; $title = table_long_alias($link_table) . "s"; page_header($title); $items_table_single = str_start($items_table, "s"); if (str_prefix($items_table_single) == str_prefix($master_table)) { $items_table_single = str_no_prefix($items_table_single, str_prefix($master_table)); } $master_object = db_object($master_table, $master_value); if (form_post("update")) { sql("START TRANSACTION"); sql("DELETE FROM {$link_table} WHERE {$master_field}=%d", $master_value); if (isset($_REQUEST['cb'])) { $checkbox_values = $_REQUEST['cb']; foreach ($checkbox_values as $checkbox_id => $checkbox_value) { sql("INSERT INTO {$link_table} ({$master_field},{$items_table_single}_id)\r\n VALUES (%d,%d)", $master_value, $checkbox_id); } } sql("COMMIT"); session_return("updated"); } if (form_post("cancel")) { session_return(""); } $rr = db_query("SELECT {$items_table}.id as id, {$items_table_display_field}, {$master_field}\r\n FROM {$items_table}\r\n LEFT JOIN\r\n (SELECT * FROM {$link_table} WHERE {$master_field}=%d) as sub\r\n ON ({$items_table_single}_id={$items_table}.id OR {$master_field} is NULL)", $master_value); form_start(); while ($r = db_fetch_object($rr)) { form_checkbox($r->{$items_table_display_field}, "cb[{$r->id}]", strlen($r->{$master_field}) > 0, "1"); } global $form; $form .= "<tr><td><td><input type=submit name=update value=OK>\r\n <input type=submit name=cancel value=Cancel>"; form_end(); return form(); }