$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; }