Esempio n. 1
0
$sql = "INSERT INTO `" . TABLE_PREFIX . "thumbnail_config` (id,update_timestamp,max_size)\r\n\tVALUES('" . THUMB_LARGE . "','" . $tambov_constant . "','" . $config['max_display_size'] . "')";
mysql_query($sql);
if (!isset($config['rss_thumbsize'])) {
    $config['rss_thumbsize'] = 400;
}
$sql = "INSERT INTO `" . TABLE_PREFIX . "thumbnail_config` (id,update_timestamp,max_size)\r\n\tVALUES('" . THUMB_RSS . "','" . $tambov_constant . "','" . $config['rss_thumbsize'] . "')";
mysql_query($sql);
if (!isset($config['nav_thumbsize'])) {
    $config['nav_thumbsize'] = 60;
}
$sql = "INSERT INTO `" . TABLE_PREFIX . "thumbnail_config` (id,update_timestamp,max_size)\r\n\tVALUES('" . THUMB_NAV . "','" . $tambov_constant . "','" . $config['nav_thumbsize'] . "')";
mysql_query($sql);
maybe_add_column(TABLE_PREFIX . "thumbnail_config", 'disabled', "tinyint default 0");
maybe_drop_column($config_table, "max_thumbnail_size");
maybe_drop_column($config_table, "max_display_size");
maybe_drop_column($config_table, "rss_thumbsize");
maybe_add_column($config_table, 'gallery_url', "varchar(255) NOT NULL");
$config['baseurl'] = "http://" . $_SERVER["SERVER_NAME"] . substr($_SERVER["PHP_SELF"], 0, strrpos($_SERVER["PHP_SELF"], "/")) . "/";
if (empty($config['gallery_url'])) {
    $sql = "UPDATE {$config_table} SET gallery_url = '" . $config['baseurl'] . "'";
    mysql_query($sql);
}
// RSS config
maybe_add_column($config_table, 'feed_num_entries', "int(15) NOT NULL default '15'");
maybe_add_column($config_table, 'feed_title', "varchar(255) NOT NULL default 'Plogger Photo Feed'");
maybe_add_column($config_table, 'feed_language', "varchar(20) NOT NULL default 'en-us'");
// cruft-free URLs
maybe_add_column($config_table, 'use_mod_rewrite', "smallint NOT NULL default '0'");
// default sort order
maybe_add_column($config_table, 'default_sortdir', "varchar(5) NOT NULL");
maybe_add_column($config_table, 'default_sortby', "varchar(20) NOT NULL");
function upgrade_database()
{
    global $config, $thumbnail_config;
    $default_charset = get_default_charset();
    $output = array();
    /** plogger_thumbnail_config **/
    $thumb_table = maybe_add_table(PLOGGER_TABLE_PREFIX . 'thumbnail_config', "`id` int(10) unsigned NOT NULL auto_increment,\n\t\t`update_timestamp` int(10) unsigned default NULL,\n\t\t`max_size` int(10) unsigned default NULL,\n\t\t`disabled` tinyint default 0,\n\t\tPRIMARY KEY (`id`)");
    if ($thumb_table === true) {
        $output[] = plog_tr('Added new table') . ': ' . PLOGGER_TABLE_PREFIX . 'thumbnail_config';
        // Use a random timestamp from the past to keep the existing thumbnails
        $long_ago = 1096396500;
        if (!isset($config['max_thumbnail_size'])) {
            $config['max_thumbnail_size'] = 100;
        }
        if (!isset($thumbnail_config[THUMB_SMALL]) || empty($thumbnail_config[THUMB_SMALL]['size'])) {
            $sql = "INSERT INTO `" . PLOGGER_TABLE_PREFIX . "thumbnail_config` (id, update_timestamp, max_size)\n\t\t\t\tVALUES('" . THUMB_SMALL . "', '" . $long_ago . "', '" . $config['max_thumbnail_size'] . "')";
            mysql_query($sql);
        }
        if (!isset($config['max_display_size'])) {
            $config['max_display_size'] = 500;
        }
        if (!isset($thumbnail_config[THUMB_LARGE]) || empty($thumbnail_config[THUMB_LARGE]['size'])) {
            $sql = "INSERT INTO `" . PLOGGER_TABLE_PREFIX . "thumbnail_config` (id, update_timestamp, max_size)\n\t\t\t\tVALUES('" . THUMB_LARGE . "', '" . $long_ago . "', '" . $config['max_display_size'] . "')";
            mysql_query($sql);
        }
        if (!isset($config['rss_thumbsize'])) {
            $config['rss_thumbsize'] = 400;
        }
        if (!isset($thumbnail_config[THUMB_RSS]) || empty($thumbnail_config[THUMB_RSS]['size'])) {
            $sql = "INSERT INTO `" . PLOGGER_TABLE_PREFIX . "thumbnail_config` (id, update_timestamp, max_size)\n\t\t\t\tVALUES('" . THUMB_RSS . "', '" . $long_ago . "', '" . $config['rss_thumbsize'] . "')";
            mysql_query($sql);
        }
        if (!isset($config['nav_thumbsize'])) {
            $config['nav_thumbsize'] = 60;
        }
        if (!isset($thumbnail_config[THUMB_NAV]) || empty($thumbnail_config[THUMB_NAV]['size'])) {
            $sql = "INSERT INTO `" . PLOGGER_TABLE_PREFIX . "thumbnail_config` (id, update_timestamp, max_size)\n\t\t\t\tVALUES('" . THUMB_NAV . "', '" . $long_ago . "', '" . $config['nav_thumbsize'] . "')";
            mysql_query($sql);
        }
    }
    $thumbnail_add_list = array('disabled' => "tinyint default 0", 'resize_option' => "tinyint default 2");
    foreach ($thumbnail_add_list as $key => $value) {
        $result = maybe_add_column(PLOGGER_TABLE_PREFIX . 'thumbnail_config', $key, $value);
        if (!empty($result)) {
            $output[] = $result;
        }
    }
    // Make sure to set the resize_option to square for small thumbs if previously set
    if (isset($config['square_thumbs']) && $config['square_thumbs'] == 1) {
        $sql = "UPDATE `" . PLOGGER_TABLE_PREFIX . "thumbnail_config` SET `resize_option` = '3' WHERE `id` = '" . THUMB_SMALL . "'";
        mysql_query($sql);
    }
    // Move enable_thumb_nav setting to plogger_thumbnail_config table
    if (isset($config['enable_thumb_nav'])) {
        $disabled = $config['enable_thumb_nav'] == 0 ? 1 : 0;
        $sql = "UPDATE `" . PLOGGER_TABLE_PREFIX . "thumbnail_config` SET `disabled` = '{$disabled}' WHERE `id` = '" . THUMB_NAV . "'";
        mysql_query($sql);
    }
    // set navigation thumbnails to square
    $sql = "UPDATE `" . PLOGGER_TABLE_PREFIX . "thumbnail_config` SET `resize_option` = '3' WHERE `id` = '" . THUMB_NAV . "'";
    mysql_query($sql);
    /** plogger_config **/
    $config_drop_list = array('max_thumbnail_size', 'max_display_size', 'rss_thumbsize', 'feed_language', 'enable_thumb_nav', 'square_thumbs');
    foreach ($config_drop_list as $value) {
        $result = maybe_drop_column(PLOGGER_TABLE_PREFIX . 'config', $value);
        if (!empty($result)) {
            $output[] = $result;
        }
    }
    $config_add_list = array('gallery_url' => "varchar(255) NOT NULL", 'feed_num_entries' => "int(15) NOT NULL default '15'", 'feed_title' => "varchar(255) NOT NULL default 'Plogger Photo Feed'", 'feed_content' => "tinyint default '1'", 'use_mod_rewrite' => "smallint NOT NULL default '0'", 'default_sortdir' => "varchar(5) NOT NULL", 'default_sortby' => "varchar(20) NOT NULL", 'admin_email' => "varchar(50) NOT NULL", 'allow_fullpic' => "tinyint NOT NULL default '1'", 'comments_notify' => "tinyint NOT NULL", 'comments_moderate' => "tinyint NOT NULL default 0", 'theme_dir' => "varchar(128) NOT NULL", 'album_sortby' => "varchar(20) NOT NULL default 'id'", 'album_sortdir' => "varchar(5) NOT NULL default 'DESC'", 'collection_sortby' => "varchar(20) NOT NULL default 'id'", 'collection_sortdir' => "varchar(5) NOT NULL default 'DESC'", 'thumb_nav_range' => "int(11) NOT NULL default 0", 'activation_key' => "varchar(64) NOT NULL default ''");
    foreach ($config_add_list as $key => $value) {
        $result = maybe_add_column(PLOGGER_TABLE_PREFIX . 'config', $key, $value);
        if (!empty($result)) {
            $output[] = $result;
        }
    }
    // Insert the gallery_url if not already set
    if (!isset($config['gallery_url']) || empty($config['gallery_url'])) {
        $config['baseurl'] = 'http://' . $_SERVER['HTTP_HOST'] . dirname(dirname($_SERVER['PHP_SELF'])) . '/';
        $output[] = plog_tr('Setting gallery url to ') . $config['baseurl'];
        $sql = "UPDATE `" . PLOGGER_TABLE_PREFIX . "config` SET gallery_url = '" . $config['baseurl'] . "'";
        mysql_query($sql);
    }
    // Insert default theme directory if not already set
    if (!isset($config['theme_dir']) || empty($config['theme_dir'])) {
        $output[] = plog_tr('Setting default theme directory to \'default\'');
        $sql = "UPDATE " . PLOGGER_TABLE_PREFIX . "config SET `theme_dir` = 'default' WHERE 1";
        mysql_query($sql);
    }
    /** plogger_collections **/
    $collections_add_list = array('thumbnail_id' => "int(11) NOT NULL default 0", 'path' => "varchar(255) NOT NULL");
    foreach ($collections_add_list as $key => $value) {
        $result = maybe_add_column(PLOGGER_TABLE_PREFIX . 'collections', $key, $value);
        if (!empty($result)) {
            $output[] = $result;
        }
    }
    /** plogger_albums **/
    $albums_add_list = array('thumbnail_id' => "int(11) NOT NULL default 0", 'path' => "varchar(255) NOT NULL");
    foreach ($albums_add_list as $key => $value) {
        $result = maybe_add_column(PLOGGER_TABLE_PREFIX . 'albums', $key, $value);
        if (!empty($result)) {
            $output[] = $result;
        }
    }
    /** plogger_pictures **/
    $pictures_add_list = array('description' => "text", 'EXIF_iso' => "varchar(64) NOT NULL default ''");
    foreach ($pictures_add_list as $key => $value) {
        $result = maybe_add_column(PLOGGER_TABLE_PREFIX . 'pictures', $key, $value);
        if (!empty($result)) {
            $output[] = $result;
        }
    }
    /** plogger_comments **/
    $comments_add_list = array('ip' => "char(64)", 'approved' => "tinyint default 1");
    foreach ($comments_add_list as $key => $value) {
        $result = maybe_add_column(PLOGGER_TABLE_PREFIX . 'comments', $key, $value);
        if (!empty($result)) {
            $output[] = $result;
        }
    }
    /*$output[] = maybe_add_table(PLOGGER_TABLE_PREFIX.'tag2picture',"
    		`tag_id` bigint(20) unsigned NOT NULL default '0',
    		`picture_id` bigint(20) unsigned NOT NULL default '0',
    		`tagdate` datetime default NULL,
    		KEY `tag_id` (`tag_id`),
    		KEY `picture_id` (`picture_id`)
    	");
    
    	$output[] = maybe_add_table(PLOGGER_TABLE_PREFIX.'tags',"
    		`id` bigint(20) unsigned NOT NULL auto_increment,
    		`tag` char(50) NOT NULL default '',
    		`tagdate` datetime NOT NULL default '0000-00-00 00:00:00',
    		`urlified` char(50) NOT NULL default '',
    		PRIMARY KEY  (`id`),
    		UNIQUE `tag` (`tag`),
    		UNIQUE `urlified` (`urlified`)
    	");*/
    $sql = 'ALTER TABLE ' . PLOGGER_TABLE_PREFIX . 'comments ADD INDEX approved_idx (`approved`)';
    mysql_query($sql);
    // Add ip and approved fields to comments table
    $sql = 'ALTER TABLE ' . PLOGGER_TABLE_PREFIX . 'comments CHANGE `date` `date` datetime';
    mysql_query($sql);
    // Convert charsets
    // Since 4.1 MySQL has support for specifying character encoding for tables
    // and I really want to use it if available. So we need figure out what version
    // we are running on and to the right hting
    $mysql_version = mysql_get_server_info();
    $mysql_charset_support = '4.1';
    $default_charset = '';
    if (1 == version_compare($mysql_version, $mysql_charset_support)) {
        $charset = 'utf8';
        $tables = array('collections', 'albums', 'pictures', 'comments', 'config', 'thumbnail_config');
        foreach ($tables as $table) {
            $tablename = PLOGGER_TABLE_PREFIX . $table;
            $sql = "ALTER TABLE {$tablename} DEFAULT CHARACTER SET {$charset}";
            if (!mysql_query($sql)) {
                $output[] = "failed to convert {$tablename} to {$charset}<br />" . mysql_error();
            }
        }
    }
    return $output;
}