/**
 * ngg_upgrade() - update routine for older version
 * 
 * @return Success message
 */
function ngg_upgrade()
{
    global $wpdb, $user_ID, $nggRewrite;
    // get the current user ID
    get_currentuserinfo();
    // in multisite environment the pointer $wpdb->nggpictures need to be set again
    $wpdb->nggpictures = $wpdb->prefix . 'ngg_pictures';
    $wpdb->nggallery = $wpdb->prefix . 'ngg_gallery';
    $wpdb->nggalbum = $wpdb->prefix . 'ngg_album';
    // Be sure that the tables exist, avoid case sensitive : http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html
    if ($wpdb->get_var("SHOW TABLES LIKE '{$wpdb->nggpictures}'")) {
        echo __('Upgrade database structure...', 'nggallery');
        $wpdb->show_errors();
        $installed_ver = get_option('ngg_db_version');
        // 0.9.7 is smaller that 0.97, my fault :-)
        if ($installed_ver == '0.9.7') {
            $installed_ver = '0.97';
        }
        // v0.33 -> v.071
        if (version_compare($installed_ver, '0.71', '<')) {
            $wpdb->query("ALTER TABLE {$wpdb->nggpictures} CHANGE pid pid BIGINT(20) NOT NULL AUTO_INCREMENT ");
            $wpdb->query("ALTER TABLE {$wpdb->nggpictures} CHANGE galleryid galleryid BIGINT(20) NOT NULL ");
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE gid gid BIGINT(20) NOT NULL AUTO_INCREMENT ");
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE pageid pageid BIGINT(20) NULL DEFAULT '0'");
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE previewpic previewpic BIGINT(20) NULL DEFAULT '0'");
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE gid gid BIGINT(20) NOT NULL AUTO_INCREMENT ");
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE description galdesc MEDIUMTEXT NULL");
        }
        // v0.71 -> v0.84
        if (version_compare($installed_ver, '0.84', '<')) {
            ngg_maybe_add_column($wpdb->nggpictures, 'sortorder', "BIGINT(20) DEFAULT '0' NOT NULL AFTER exclude");
        }
        // v0.84 -> v0.95
        if (version_compare($installed_ver, '0.95', '<')) {
            // first add the author field and set it to the current administrator
            ngg_maybe_add_column($wpdb->nggallery, 'author', "BIGINT(20) NOT NULL DEFAULT '{$user_ID}' AFTER previewpic");
            // switch back to zero
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE author author BIGINT(20) NOT NULL DEFAULT '0'");
        }
        // v0.95 -> v0.97
        if (version_compare($installed_ver, '0.96', '<')) {
            // Convert into WordPress Core taxonomy scheme
            ngg_convert_tags();
            // Drop tables, we don't need them anymore
            $wpdb->query("DROP TABLE IF EXISTS " . $wpdb->prefix . "ngg_tags");
            $wpdb->query("DROP TABLE IF EXISTS " . $wpdb->prefix . "ngg_pic2tags");
            // New capability for administrator role
            $role = get_role('administrator');
            $role->add_cap('NextGEN Manage tags');
            // Add new option
            $ngg_options = get_option('ngg_options');
            $ngg_options['graphicLibrary'] = 'gd';
            update_option('ngg_options', $ngg_options);
        }
        // v0.97 -> v1.00
        if (version_compare($installed_ver, '0.97', '<')) {
            ngg_maybe_add_column($wpdb->nggpictures, 'imagedate', "DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER alttext");
        }
        // v0.97 -> v1.3.0
        if (version_compare($installed_ver, '1.3.0', '<')) {
            ngg_maybe_add_column($wpdb->nggpictures, 'post_id', "BIGINT(20) DEFAULT '0' NOT NULL AFTER pid");
            ngg_maybe_add_column($wpdb->nggpictures, 'meta_data', "LONGTEXT AFTER sortorder");
            $wpdb->query("ALTER TABLE " . $wpdb->nggpictures . " ADD INDEX post_id ( post_id )");
        }
        // v1.3.0 -> v1.3.1
        if (version_compare($installed_ver, '1.3.1', '<')) {
            // add description and previewpic for the album itself
            ngg_maybe_add_column($wpdb->nggalbum, 'previewpic', "BIGINT(20) DEFAULT '0' NOT NULL AFTER name");
            ngg_maybe_add_column($wpdb->nggalbum, 'albumdesc', "MEDIUMTEXT NULL AFTER previewpic");
        }
        // v1.3.5 -> v1.4.0
        if (version_compare($installed_ver, '1.4.0', '<')) {
            // add link from album to a page
            ngg_maybe_add_column($wpdb->nggalbum, 'pageid', "BIGINT(20) DEFAULT '0' NOT NULL AFTER sortorder");
        }
        // v1.4.0 -> v1.7.0
        if (version_compare($installed_ver, '1.7.0', '<')) {
            // add slug fields
            ngg_maybe_add_column($wpdb->nggpictures, 'image_slug', "VARCHAR(255) NOT NULL AFTER pid");
            ngg_maybe_add_column($wpdb->nggalbum, 'slug', "VARCHAR(255) NOT NULL AFTER name");
            ngg_maybe_add_column($wpdb->nggallery, 'slug', "VARCHAR(255) NOT NULL AFTER name");
        }
        // update now the database
        update_option("ngg_db_version", NGG_DBVERSION);
        echo __('finished', 'nggallery') . "<br />\n";
        $wpdb->hide_errors();
        // *** From here we start file operation which could failed sometimes,
        // *** ensure that the DB changes are not performed two times...
        // Change all thumbnail folders to "thumbs"
        if (version_compare($installed_ver, '0.96', '<')) {
            echo __('Update file structure...', 'nggallery');
            ngg_convert_filestructure();
            echo __('finished', 'nggallery') . "<br />\n";
        }
        // On some reason the import / date sometimes failed, due to the memory limit
        if (version_compare($installed_ver, '0.97', '<')) {
            echo __('Import date and time information...', 'nggallery');
            ngg_import_date_time();
            echo __('finished', 'nggallery') . "<br />\n";
        }
        // Move imagerotator outside the plugin folder
        if (version_compare($installed_ver, '1.1.0', '<')) {
            $ngg_options = get_option('ngg_options');
            echo __('Move imagerotator to new location...', 'nggallery');
            $ngg_options['irURL'] = ngg_move_imagerotator();
            $ngg_options['galPagedGalleries'] = 0;
            $ngg_options['galColumns'] = 0;
            update_option('ngg_options', $ngg_options);
            echo __('finished', 'nggallery') . "<br />\n";
        }
        // Remove thumbcrop setting, thumbfix and quare size do the same
        if (version_compare($installed_ver, '1.4.0', '<')) {
            $ngg_options = get_option('ngg_options');
            echo __('Update settings...', 'nggallery');
            if ($ngg_options['thumpcrop']) {
                $ngg_options['thumbfix'] = true;
                $ngg_options['thumbheight'] = $ngg_options['thumbwidth'];
                $ngg_options['galAjaxNav'] = true;
            }
            $ngg_options['galHiddenImg'] = false;
            update_option('ngg_options', $ngg_options);
            echo __('finished', 'nggallery') . "<br />\n";
        }
        // Remove the old widget options
        if (version_compare($installed_ver, '1.4.4', '<')) {
            delete_option('ngg_widget');
            echo __('Updated widget structure. If you used NextGEN Widgets, you need to setup them again...', 'nggallery');
        }
        if (version_compare($installed_ver, '1.6.0', '<')) {
            $ngg_options = get_option('ngg_options');
            $ngg_options['enableIR'] = '1';
            $ngg_options['slideFx'] = 'fade';
            update_option('ngg_options', $ngg_options);
            echo __('Updated options.', 'nggallery');
        }
        if (version_compare($installed_ver, '1.7.0', '<')) {
            // Network blogs need to call this manually
            if (!is_multisite()) {
                ?>
               <h2><?php 
                _e('Create unique slug', 'nggallery');
                ?>
</h2>
        	   <p><?php 
                _e('One of the upcomming features are a reworked permalinks structure.', 'nggallery');
                ?>
        	   <?php 
                _e('Therefore it\'s needed to have a unique identifier for each image, gallery and album.', 'nggallery');
                ?>
<br />
               <?php 
                _e('Depend on the amount of database entries this will take a while, don\'t reload this page.', 'nggallery');
                ?>
</p>
               <?php 
                ngg_rebuild_unique_slugs::start_rebuild();
            }
        }
        if (version_compare($installed_ver, '1.8.0', '<')) {
            $ngg_options = get_option('ngg_options');
            // new permalink structure
            $ngg_options['permalinkSlug'] = 'nggallery';
            update_option('ngg_options', $ngg_options);
            echo __('Updated options.', 'nggallery');
        }
        // better to flush rewrite rules after upgrades
        $nggRewrite->flush();
        return;
    }
    echo __('Could not find NextGEN Gallery database tables, upgrade failed !', 'nggallery');
    return;
}
Beispiel #2
0
/**
 * ngg_upgrade() - update routine for older version
 * 
 * @return Success message
 */
function ngg_upgrade()
{
    global $wpdb, $user_ID, $nggRewrite;
    // get the current user ID
    get_currentuserinfo();
    // Be sure that the tables exist
    if ($wpdb->get_var("show tables like '{$wpdb->nggpictures}'") == $wpdb->prefix . 'ngg_pictures') {
        echo __('Upgrade database structure...', 'nggallery');
        $wpdb->show_errors();
        $installed_ver = get_option("ngg_db_version");
        // 0.9.7 is smaller that 0.97, my fault :-)
        if ($installed_ver == '0.9.7') {
            $installed_ver = '0.97';
        }
        // v0.33 -> v.071
        if (version_compare($installed_ver, '0.71', '<')) {
            $wpdb->query("ALTER TABLE {$wpdb->nggpictures} CHANGE pid pid BIGINT(20) NOT NULL AUTO_INCREMENT ");
            $wpdb->query("ALTER TABLE {$wpdb->nggpictures} CHANGE galleryid galleryid BIGINT(20) NOT NULL ");
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE gid gid BIGINT(20) NOT NULL AUTO_INCREMENT ");
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE pageid pageid BIGINT(20) NULL DEFAULT '0'");
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE previewpic previewpic BIGINT(20) NULL DEFAULT '0'");
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE gid gid BIGINT(20) NOT NULL AUTO_INCREMENT ");
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE description galdesc MEDIUMTEXT NULL");
        }
        // v0.71 -> v0.84
        if (version_compare($installed_ver, '0.84', '<')) {
            ngg_maybe_add_column($wpdb->nggpictures, 'sortorder', "BIGINT(20) DEFAULT '0' NOT NULL AFTER exclude");
        }
        // v0.84 -> v0.95
        if (version_compare($installed_ver, '0.95', '<')) {
            // first add the author field and set it to the current administrator
            ngg_maybe_add_column($wpdb->nggallery, 'author', "BIGINT(20) NOT NULL DEFAULT '{$user_ID}' AFTER previewpic");
            // switch back to zero
            $wpdb->query("ALTER TABLE {$wpdb->nggallery} CHANGE author author BIGINT(20) NOT NULL DEFAULT '0'");
        }
        // v0.95 -> v0.97
        if (version_compare($installed_ver, '0.96', '<')) {
            // Convert into WordPress Core taxonomy scheme
            ngg_convert_tags();
            // Drop tables, we don't need them anymore
            $wpdb->query("DROP TABLE IF EXISTS " . $wpdb->prefix . "ngg_tags");
            $wpdb->query("DROP TABLE IF EXISTS " . $wpdb->prefix . "ngg_pic2tags");
            // New capability for administrator role
            $role = get_role('administrator');
            $role->add_cap('NextGEN Manage tags');
            // Add new option
            $ngg_options = get_option('ngg_options');
            $ngg_options['graphicLibrary'] = 'gd';
            update_option('ngg_options', $ngg_options);
        }
        // v0.97 -> v1.00
        if (version_compare($installed_ver, '0.97', '<')) {
            ngg_maybe_add_column($wpdb->nggpictures, 'imagedate', "DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00' AFTER alttext");
        }
        // v0.97 -> v1.3.0
        if (version_compare($installed_ver, '1.3.0', '<')) {
            ngg_maybe_add_column($wpdb->nggpictures, 'post_id', "BIGINT(20) DEFAULT '0' NOT NULL AFTER pid");
            ngg_maybe_add_column($wpdb->nggpictures, 'meta_data', "LONGTEXT AFTER sortorder");
            $wpdb->query("ALTER TABLE " . $wpdb->nggpictures . " ADD INDEX post_id ( post_id )");
        }
        // v1.3.0 -> v1.3.1
        if (version_compare($installed_ver, '1.3.1', '<')) {
            // add description and previewpic for the album itself
            ngg_maybe_add_column($wpdb->nggalbum, 'previewpic', "BIGINT(20) DEFAULT '0' NOT NULL AFTER name");
            ngg_maybe_add_column($wpdb->nggalbum, 'albumdesc', "MEDIUMTEXT NULL AFTER previewpic");
        }
        // v1.3.5 -> v1.4.0
        if (version_compare($installed_ver, '1.4.0', '<')) {
            // add link from album to a page
            ngg_maybe_add_column($wpdb->nggalbum, 'pageid', "BIGINT(20) DEFAULT '0' NOT NULL AFTER sortorder");
        }
        // better to flush rewrite rules after upgrades
        $nggRewrite->flush();
        // update now the database
        update_option("ngg_db_version", NGG_DBVERSION);
        echo __('finished', 'nggallery') . "<br />\n";
        $wpdb->hide_errors();
        // *** From here we start file operation which could failed sometimes,
        // *** ensure that the DB changes are not performed two times...
        // Change all thumbnail folders to "thumbs"
        if (version_compare($installed_ver, '0.96', '<')) {
            echo __('Update file structure...', 'nggallery');
            ngg_convert_filestructure();
            echo __('finished', 'nggallery') . "<br />\n";
        }
        // On some reason the import / date sometimes failed, due to the memory limit
        if (version_compare($installed_ver, '0.97', '<')) {
            echo __('Import date and time information...', 'nggallery');
            ngg_import_date_time();
            echo __('finished', 'nggallery') . "<br />\n";
        }
        // Move imagerotator outside the plugin folder
        if (version_compare($installed_ver, '1.1.0', '<')) {
            $ngg_options = get_option('ngg_options');
            echo __('Move imagerotator to new location...', 'nggallery');
            $ngg_options['irURL'] = ngg_move_imagerotator();
            $ngg_options['galPagedGalleries'] = 0;
            $ngg_options['galColumns'] = 0;
            update_option('ngg_options', $ngg_options);
            echo __('finished', 'nggallery') . "<br />\n";
        }
        // Remove thumbcrop setting, thumbfix and quare size do the same
        if (version_compare($installed_ver, '1.4.0', '<')) {
            $ngg_options = get_option('ngg_options');
            echo __('Update settings...', 'nggallery');
            if ($ngg_options['thumpcrop']) {
                $ngg_options['thumbfix'] = true;
                $ngg_options['thumbheight'] = $ngg_options['thumbwidth'];
                $ngg_options['galAjaxNav'] = true;
            }
            $ngg_options['galHiddenImg'] = false;
            update_option('ngg_options', $ngg_options);
            echo __('finished', 'nggallery') . "<br />\n";
        }
        return;
    }
}