Example #1
0
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;
}
Example #2
0
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();
    }
}