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(); }
/** * Sets an array with only the mf2 prefixed meta. * * @param int|WP_Post $post Optional. Post ID or post object. Defaults to global $post. */ private function get_mf2meta($post) { $post = get_post($post); $meta = get_post_meta($post->ID); if (!$meta) { $this->meta = array(); return; } if (isset($meta['response'])) { $response = maybe_unserialize($meta['response']); // Retrieve from the old response array and store in new location. if (!empty($response)) { $new = array(); // Convert to new format and update. if (!empty($response['title'])) { $new['name'] = $response['title']; } if (!empty($response['url'])) { $new['url'] = $response['url']; } if (!empty($response['content'])) { $new['content'] = $response['content']; } if (!empty($response['published'])) { $new['published'] = $response['published']; } if (!empty($response['author'])) { $new['card'] = array(); $new['card']['name'] = $response['author']; if (!empty($response['icon'])) { $new['card']['photo'] = $response['icon']; } } $new = array_unique($new); $new['card'] = array_unique($new['card']); if (isset($new)) { update_post_meta($this->post->ID, 'mf2_cite', $new); delete_post_meta($this->post->ID, 'response'); $meta['cite'] = $new; } } } foreach ($meta as $key => $value) { if (!str_prefix($key, 'mf2_')) { unset($meta[$key]); } else { unset($meta[$key]); $key = str_replace('mf2_', '', $key); $value = array_map('maybe_unserialize', $value); $value = array_shift($value); // If value is a multi-array with only one element. if (is_multi_array($value)) { if (1 === count($value)) { $value = array_shift($value); } if (isset($value['card'])) { if (is_multi_array($value['card'])) { if (1 === count($value['card'])) { $value['card'] = array_shift($value['card']); } } $value['card'] = array_filter($value['card']); } } if (is_array($value)) { $value = array_filter($value); } $meta[$key] = $value; } } $this->meta = array_filter($meta); }