'.__('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").'.

'; } } function wp_dlm_init_messages() { global $dlm_build; $wp_dlm_build = get_option('wp_dlm_build'); if ( !empty($wp_dlm_build) && $wp_dlm_build!=$dlm_build && ($wp_dlm_build<20100206 || !is_numeric($wp_dlm_build)) ) { if (!isset($_GET['action'])) { add_action( 'admin_notices', 'dlm_activation_notice_upgrade'); } } } add_action('init','wp_dlm_init_messages',2); ################################################################################ // HANDLE UPDATES ################################################################################ function wp_dlm_init_or_upgrade() { // Permissions need to be set for sure global $wp_roles; if (is_object($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' ); endif; // Add default options 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'); global $dlm_build; $wp_dlm_build = get_option('wp_dlm_build'); if ( !empty($wp_dlm_build) && $wp_dlm_build!=$dlm_build && ($wp_dlm_build<20100206 || !is_numeric($wp_dlm_build)) ) { // THESE VERSIONS NEED A BACKUP + UPGRADE } else { wp_dlm_init(); wp_dlm_update(); } } 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_option('wp_dlm_build', $dlm_build); } } ################################################################################ // Set up database ################################################################################ function wp_dlm_init() { 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 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( "RENAME TABLE $wp_dlm_db_old TO $wp_dlm_db;" ); $wpdb->query( "RENAME TABLE $wp_dlm_db_formats_old TO $wp_dlm_db_formats;" ); $wpdb->query( "RENAME TABLE $wp_dlm_db_stats_old TO $wp_dlm_db_stats;" ); $wpdb->query( "RENAME TABLE $wp_dlm_db_log_old TO $wp_dlm_db_log;" ); $wpdb->query( "RENAME TABLE $wp_dlm_db_meta_old TO $wp_dlm_db_meta;" ); global $wp_dlm_db_exists; $wp_dlm_db_exists = false; // Check tables exist $tables = $wpdb->get_results("show tables;"); foreach ( $tables as $table ) { foreach ( $table as $value ) { if ( strtolower($value) == strtolower($wp_dlm_db) ) $wp_dlm_db_exists = true; } } if (!$wp_dlm_db_exists) { // Output fail message echo '

'.__('Database was NOT upgraded - the rename process failed. Ensure your mysql user has ALTER, DROP, CREATE and INSERT privileges.',"wp-download_monitor").'

'; } else { // Continue the upgrade wp_dlm_init(); wp_dlm_update(); // 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); } echo '

'.__('Database Upgraded',"wp-download_monitor").'

'; } } 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;"); } ?>