function gmedia_upgrade_process() { $db_version = get_option('gmediaDbVersion'); $info = get_transient('gmediaHeavyJob'); $result = array('content' => ''); $upgrading = get_transient('gmediaUpgrade'); if ($upgrading) { $timeout = time() - $upgrading; } else { $timeout = 0; } if ($timeout > 20) { require_once GMEDIA_ABSPATH . 'config/update.php'; gmedia_db_update(); } $result['timeout'] = $timeout; if (!empty($info)) { $result['content'] = '<div>' . implode("</div>\n<div>", $info) . '</div>'; } elseif ($db_version == GMEDIA_DBVERSION) { $result['status'] = 'done'; } header('Content-Type: application/json; charset=' . get_option('blog_charset'), true); echo json_encode($result); die; }
function gmedia_db_update__1_8_0() { global $wpdb, $gmDB, $gmGallery; $info = get_transient('gmediaHeavyJob'); $steps = get_transient('gmediaUpgradeSteps'); if (!isset($steps['status_update'])) { $wpdb->update($wpdb->prefix . 'gmedia', array('status' => 'publish'), array('status' => 'public')); $wpdb->update($wpdb->prefix . 'gmedia_term', array('status' => 'publish'), array('status' => 'public')); $wpdb->update($wpdb->prefix . 'gmedia_term', array('global' => 0), array('taxonomy' => 'gmedia_tag')); $wpdb->update($wpdb->prefix . 'gmedia_term', array('global' => 0), array('taxonomy' => 'gmedia_category')); $info['180_1'] = __('Gmedia database data updated...', 'grand-media'); $info['180_2'] = __('Adding ability to comment gmedia items...', 'grand-media'); set_transient('gmediaHeavyJob', $info); $steps['status_update'] = 1; $steps['step'] = 0; } set_transient('gmediaUpgrade', time()); $steps['step']++; if (!isset($steps['gmedia_posts'])) { $gm_options = $gmGallery->options; $step = $steps['step']; $gmedias = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}gmedia WHERE post_id IS NULL OR post_id = '' OR post_id = 0 LIMIT 20"); if (!empty($gmedias)) { $post_data = array('post_type' => 'gmedia', 'comment_status' => $gm_options['default_gmedia_comment_status']); $i = 0; foreach ($gmedias as $gmedia) { $i++; $description = $gmedia->description; $description = mb_convert_encoding($description, 'UTF-8', 'UTF-8'); $title = $gmedia->title; $title = mb_convert_encoding($title, 'UTF-8', 'UTF-8'); if ($description !== $gmedia->description || $title !== $gmedia->title) { $gmDB->insert_gmedia((array) $gmedia); } $post_data['post_author'] = $gmedia->author; $post_data['post_content'] = $description; $post_data['post_title'] = trim($title) ? $title : $gmedia->gmuid; $post_data['post_status'] = $gmedia->status; $post_data['post_name'] = $gmedia->gmuid; $post_data['post_date'] = $gmedia->date; $post_data['post_modified'] = $gmedia->modified; $post_data['post_mime_type'] = $gmedia->mime_type; $post_ID = wp_insert_post($post_data); if ($post_ID) { add_metadata('post', $post_ID, '_gmedia_ID', $gmedia->ID); $wpdb->update($wpdb->prefix . 'gmedia', array('post_id' => $post_ID), array('ID' => $gmedia->ID)); $info['180_3'] = sprintf(__('Updated %d items in Gmedia Library...', 'grand-media'), $step * $i); set_transient('gmediaHeavyJob', $info); set_transient('gmediaUpgrade', time()); } } set_transient('gmediaHeavyJob', $info); $gmDB->update_gmedia_caches($gmedias, false, false); set_transient('gmediaUpgradeSteps', $steps); if (defined('DISABLE_WP_CRON') && DISABLE_WP_CRON) { set_transient('gmediaUpgrade', time() - 17); } else { wp_schedule_single_event(time(), 'gmedia_db_update'); } } else { $info['180_5'] = __('Adding other features...', 'grand-media'); set_transient('gmediaHeavyJob', $info); $steps['gmedia_posts'] = 1; $steps['step'] = 1; } } if (isset($steps['gmedia_posts']) && !isset($steps['terms_posts'])) { $step = $steps['step']; $taxonomies = array('gmedia_album', 'gmedia_gallery'); $gmedia_terms_with_post = $wpdb->get_col("SELECT gmedia_term_id FROM {$wpdb->prefix}gmedia_term_meta WHERE meta_key = '_post_ID' AND meta_value != ''"); $gmedia_terms_exclude = ''; if (!empty($gmedia_terms_with_post)) { $gmedia_terms_exclude = "AND term_id NOT IN ('" . implode("','", $gmedia_terms_with_post) . "')"; } $gmedia_terms = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}gmedia_term WHERE taxonomy IN('" . implode("','", $taxonomies) . "') {$gmedia_terms_exclude} LIMIT 20"); if (!empty($gmedia_terms)) { $i = 0; foreach ($gmedia_terms as $term) { if ($gmDB->get_metadata('gmedia_term', $term->term_id, '_post_ID', true)) { continue; } $post_data = array('post_author' => $term->global, 'post_content' => $term->description, 'post_title' => $term->name, 'post_status' => $term->status, 'post_type' => $term->taxonomy); $post_ID = wp_insert_post($post_data); if ($post_ID) { add_metadata('post', $post_ID, '_gmedia_term_ID', $term->term_id); $gmDB->add_metadata('gmedia_term', $term->term_id, '_post_ID', $post_ID); $i++; $info['180_6'] = sprintf(__('Updated %d terms (with author)...', 'grand-media'), $step * $i); set_transient('gmediaHeavyJob', $info); set_transient('gmediaUpgrade', time()); } } set_transient('gmediaUpgradeSteps', $steps); if (defined('DISABLE_WP_CRON') && DISABLE_WP_CRON) { set_transient('gmediaUpgrade', time() - 17); } else { wp_schedule_single_event(time(), 'gmedia_db_update'); } } else { $info['180_7'] = __('Update cache...', 'grand-media'); set_transient('gmediaHeavyJob', $info); wp_cache_set('last_changed', time(), 'gmedia_terms'); set_transient('gmediaUpgrade', time()); $steps['terms_posts'] = 1; } } if (isset($steps['terms_posts'])) { update_option("gmediaDbVersion", '1.8.0'); set_transient('gmediaUpgradeSteps', $steps); //wp_schedule_single_event(time() + 2, 'gmedia_db_update'); gmedia_db_update(); } }