'.__('Download Monitor 3.3 (and above) use a different database structure than in previous versions - this was to support multiple categories. You must update your database in order for this version to work - backup your database first then', "wp-download_monitor").' '.__('click here', "wp-download_monitor").' '.__('to run the update script', "wp-download_monitor").'.
';
} else {
echo ''.__('Download Monitor 3.3 (and above) use a different database structure than in previous versions - this was to support multiple categories. You must update your database in order for this version to work - backup your database first then', "wp-download_monitor").' '.__('click here', "wp-download_monitor").' '.__('to run the update script', "wp-download_monitor").'.
';
}
}
global $dlm_build;
$wp_dlm_build = get_option('wp_dlm_build');
if ( !empty($wp_dlm_build) && $wp_dlm_build!=$dlm_build && ($wp_dlm_build<20100204 || !is_numeric($wp_dlm_build)) ) {
if (!isset($_GET['action'])) {
add_action( 'admin_notices', 'dlm_activation_notice_upgrade');
}
}
// INIT ON ACTIVATE FOR FRESH INSTALLS/UPGRADES POST 3.3
function wp_dlm_activate() {
global $wp_roles;
$wp_roles->add_cap( 'administrator', 'user_can_config_downloads' );
$wp_roles->add_cap( 'administrator', 'user_can_edit_downloads' );
$wp_roles->add_cap( 'administrator', 'user_can_add_new_download' );
$wp_roles->add_cap( 'administrator', 'user_can_add_exist_download' );
$wp_roles->add_cap( 'administrator', 'user_can_view_downloads_log' );
global $dlm_build;
$wp_dlm_build = get_option('wp_dlm_build');
if ( !empty($wp_dlm_build) && $wp_dlm_build!=$dlm_build && ($wp_dlm_build<20100204 || !is_numeric($wp_dlm_build)) ) {
// THESE VERSIONS NEED A MANUAL BACKUP + UPGRADE
} else {
wp_dlm_update();
wp_dlm_init();
}
}
register_activation_hook( __FILE__, 'wp_dlm_activate' );
################################################################################
// HANDLE UPDATES
################################################################################
function wp_dlm_update() {
global $dlm_build;
add_option('wp_dlm_build', $dlm_build, 'Version of DLM plugin', 'no');
if ( get_option('wp_dlm_build') != $dlm_build ) {
// Update the build
update_option('wp_dlm_build', $dlm_build);
}
}
################################################################################
// Set up database
################################################################################
function wp_dlm_init() {
global $wp_roles;
add_option('wp_dlm_url', '', 'URL for download', 'no');
add_option('wp_dlm_type', 'ID', 'wp_dlm_type', 'no');
add_option('wp_dlm_default_format', '0', 'wp_dlm_default_format', 'no');
add_option('wp_dlm_does_not_exist','','no');
add_option('wp_dlm_image_url',WP_PLUGIN_URL."/download-monitor/img/download.gif",'no');
add_option('wp_dlm_log_downloads', 'yes', '', 'no');
add_option('wp_dlm_file_browser_root', ABSPATH, 'no');
$wp_roles->add_cap( 'administrator', 'user_can_config_downloads' );
$wp_roles->add_cap( 'administrator', 'user_can_edit_downloads' );
$wp_roles->add_cap( 'administrator', 'user_can_add_new_download' );
$wp_roles->add_cap( 'administrator', 'user_can_add_exist_download' );
$wp_roles->add_cap( 'administrator', 'user_can_view_downloads_log' );
global $table_prefix,$wp_dlm_db,$wp_dlm_db_taxonomies,$wp_dlm_db_formats,$wpdb,$wp_dlm_db_stats,$wp_dlm_db_log,$wp_dlm_db_meta,$wp_dlm_db_relationships;
// Get Collation
$collate = "";
if($wpdb->supports_collation()) {
if(!empty($wpdb->charset)) $collate = "DEFAULT CHARACTER SET $wpdb->charset";
if(!empty($wpdb->collate)) $collate .= " COLLATE $wpdb->collate";
}
// Create tables
$sql = "CREATE TABLE IF NOT EXISTS ".$wp_dlm_db." (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`title` VARCHAR (200) NOT NULL ,
`filename` LONGTEXT NOT NULL ,
`file_description` LONGTEXT NULL ,
`dlversion` VARCHAR (200) NOT NULL ,
`postDate` DATETIME NOT NULL ,
`hits` INT (12) UNSIGNED NOT NULL ,
`user` VARCHAR (200) NOT NULL ,
`members` INT (1) NULL,
`mirrors` LONGTEXT NULL,
PRIMARY KEY ( `id` )) $collate;";
$result = $wpdb->query($sql);
$sql = "CREATE TABLE IF NOT EXISTS ".$wp_dlm_db_taxonomies." (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` LONGTEXT NOT NULL ,
`parent` INT (12) UNSIGNED NOT NULL,
`taxonomy` VARCHAR (250) NOT NULL ,
`order` INT (12) UNSIGNED NULL,
PRIMARY KEY ( `id` )) $collate;";
$result = $wpdb->query($sql);
$sql = "CREATE TABLE IF NOT EXISTS ".$wp_dlm_db_relationships." (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`taxonomy_id` INT UNSIGNED NOT NULL,
`download_id` INT UNSIGNED NOT NULL,
PRIMARY KEY ( `id` )) $collate;";
$result = $wpdb->query($sql);
$sql = "CREATE TABLE IF NOT EXISTS ".$wp_dlm_db_formats." (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR (250) NOT NULL ,
`format` LONGTEXT NOT NULL,
PRIMARY KEY ( `id` )) $collate;";
$result = $wpdb->query($sql);
$sql = "CREATE TABLE IF NOT EXISTS ".$wp_dlm_db_stats." (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`download_id` INT UNSIGNED NOT NULL,
`date` DATE NOT NULL ,
`hits` INT (12) UNSIGNED NOT NULL,
PRIMARY KEY ( `id` )) $collate;";
$result = $wpdb->query($sql);
$sql = "CREATE TABLE IF NOT EXISTS ".$wp_dlm_db_log." (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`download_id` INT UNSIGNED NOT NULL,
`user_id` INT UNSIGNED NOT NULL,
`date` DATETIME NULL ,
`ip_address` VARCHAR (200) NULL ,
PRIMARY KEY ( `id` )) $collate;";
$result = $wpdb->query($sql);
$sql = "CREATE TABLE IF NOT EXISTS ".$wp_dlm_db_meta." (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`meta_name` LONGTEXT NOT NULL ,
`meta_value` LONGTEXT NOT NULL ,
`download_id` INT (12) UNSIGNED NOT NULL,
PRIMARY KEY ( `id` )) $collate;";
$result = $wpdb->query($sql);
$q = $wpdb->get_results("select * from $wp_dlm_db;");
if ( empty( $q ) ) {
$wpdb->query("TRUNCATE table $wp_dlm_db");
}
return;
}
################################################################################
// Upgrade/Clean functions
################################################################################
function wp_dlm_upgrade() {
global $wpdb, $table_prefix,$wp_dlm_db,$wp_dlm_db_taxonomies,$wp_dlm_db_formats,$wpdb,$wp_dlm_db_stats,$wp_dlm_db_log,$wp_dlm_db_meta,$wp_dlm_db_relationships;
$wpdb->hide_errors();
// Get Collation
$collate = "";
if($wpdb->supports_collation()) {
if(!empty($wpdb->charset)) $collate = "DEFAULT CHARACTER SET $wpdb->charset";
if(!empty($wpdb->collate)) $collate .= " COLLATE $wpdb->collate";
}
// old tables
$wp_dlm_db_old = $table_prefix."DLM_DOWNLOADS";
$wp_dlm_db_taxonomies_old = $table_prefix."DLM_CATS";
$wp_dlm_db_formats_old = $table_prefix."DLM_FORMATS";
$wp_dlm_db_stats_old = $table_prefix."DLM_STATS";
$wp_dlm_db_log_old = $table_prefix."DLM_LOG";
$wp_dlm_db_meta_old = $table_prefix."DLM_META";
// Rename old tables
$wpdb->query("ALTER TABLE $wp_dlm_db_old RENAME $wp_dlm_db;");
$wpdb->query("ALTER TABLE $wp_dlm_db_formats_old RENAME $wp_dlm_db_formats;");
$wpdb->query("ALTER TABLE $wp_dlm_db_stats_old RENAME $wp_dlm_db_stats;");
$wpdb->query("ALTER TABLE $wp_dlm_db_log_old RENAME $wp_dlm_db_log;");
$wpdb->query("ALTER TABLE $wp_dlm_db_meta_old RENAME $wp_dlm_db_meta;");
// Create new taxonomy table
$sql = "CREATE TABLE IF NOT EXISTS ".$wp_dlm_db_taxonomies." (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` LONGTEXT NOT NULL ,
`parent` INT (12) UNSIGNED NOT NULL,
`taxonomy` VARCHAR (250) NOT NULL ,
`order` INT (12) UNSIGNED NULL,
PRIMARY KEY ( `id` )) $collate;";
$result = $wpdb->query($sql);
// Create new taxonomy relationship
$sql = "CREATE TABLE IF NOT EXISTS ".$wp_dlm_db_relationships." (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`taxonomy_id` INT UNSIGNED NOT NULL,
`download_id` INT UNSIGNED NOT NULL,
PRIMARY KEY ( `id` )) $collate;";
$result = $wpdb->query($sql);
// GET OLD DATA
$values="";
$values2="";
$values3="";
// Get cats from Downloads
$query = sprintf("SELECT * from %s;",
$wpdb->escape( $wp_dlm_db ));
$result_d = $wpdb->get_results($query);
if($result_d && $wpdb->num_rows>0) {
foreach($result_d as $d) {
$id=$d->id;
$category_id=$d->category_id;
if ($category_id) {
$values.='("'.$category_id.'", "'.$id.'"),';
}
}
$values = substr_replace($values,"",-1);
}
// Cats -> Taxonomies
$query = sprintf("SELECT * from %s;",
$wpdb->escape( $wp_dlm_db_taxonomies_old ));
$result_d = $wpdb->get_results($query);
if($result_d && $wpdb->num_rows>0) {
foreach($result_d as $d) {
$id=$d->id;
$name=$d->name;
$parent=$d->parent;
$values2.='("'.$id.'", "'.$name.'", "'.$parent.'", "category"),';
}
$values2 = substr_replace($values2,"",-1);
}
// ADD DATA
if (!empty($values)) {
$query_ins = sprintf("INSERT INTO %s (taxonomy_id, download_id) VALUES %s;",
$wpdb->escape( $wp_dlm_db_relationships ),
$values);
$wpdb->query($query_ins);
}
if (!empty($values2)) {
$query_ins = sprintf("INSERT INTO %s (id, name, parent, taxonomy) VALUES %s;",
$wpdb->escape( $wp_dlm_db_taxonomies ),
$values2);
$wpdb->query($query_ins);
}
// Tags (in meta) -> Taxonomies
$query = sprintf("SELECT * from %s;",
$wpdb->escape( $wp_dlm_db_meta ));
$result_d = $wpdb->get_results($query);
if($result_d && $wpdb->num_rows>0) {
foreach($result_d as $d) {
$id=$d->id;
$meta_name=$d->meta_name;
$meta_value=$d->meta_value;
$download_id=$d->download_id;
if ($meta_name=='tags') {
$meta_values = explode(',',$meta_value);
$meta_values = array_map('trim', $meta_values);
foreach ($meta_values as $meta) {
if ($meta) {
// Insert
$tag_id = $wpdb->get_var("SELECT id FROM $wp_dlm_db_taxonomies WHERE name='".$wpdb->escape($meta)."' AND taxonomy='tag';");
if (!$tag_id) {
$wpdb->query("INSERT INTO $wp_dlm_db_taxonomies (name, parent, taxonomy) VALUES ('".$wpdb->escape($meta)."', '0', 'tag');");
$tag_id = $wpdb->insert_id;
}
$values3.='("'.$tag_id.'", "'.$download_id.'"),';
}
}
}
}
$values3 = substr_replace($values3,"",-1);
}
if (!empty($values3)) {
$query_ins = sprintf("INSERT INTO %s (taxonomy_id, download_id) VALUES %s;",
$wpdb->escape( $wp_dlm_db_relationships ),
$values3);
$wpdb->query($query_ins);
}
wp_dlm_update();
wp_dlm_init();
}
function wp_dlm_cleanup() {
global $wpdb, $table_prefix;
// old tables
$wp_dlm_db_old = $table_prefix."DLM_DOWNLOADS";
$wp_dlm_db_taxonomies_old = $table_prefix."DLM_CATS";
$wp_dlm_db_formats_old = $table_prefix."DLM_FORMATS";
$wp_dlm_db_stats_old = $table_prefix."DLM_STATS";
$wp_dlm_db_log_old = $table_prefix."DLM_LOG";
$wp_dlm_db_meta_old = $table_prefix."DLM_META";
// Drop
$wpdb->query("DROP TABLE IF EXISTS $wp_dlm_db_old;");
$wpdb->query("DROP TABLE IF EXISTS $wp_dlm_db_taxonomies_old;");
$wpdb->query("DROP TABLE IF EXISTS $wp_dlm_db_formats_old;");
$wpdb->query("DROP TABLE IF EXISTS $wp_dlm_db_stats_old;");
$wpdb->query("DROP TABLE IF EXISTS $wp_dlm_db_log_old;");
$wpdb->query("DROP TABLE IF EXISTS $wp_dlm_db_meta_old;");
}
?>