示例#1
0
文件: bios.php 项目: NazarK/sqp
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);
 }