#!/usr/bin/perl -w # Copyright 2008-2009 Robert ("Bob") Igo of StormLogic, LLC and mythic.tv. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . use Switch; use Tweaker::Script; package Tweaker::Script; # List all the options that this script supports. Make sure it matches what's in # the corresponding .tcf entry. set_known_options( 'scrub', 'protect' ); my $beginning_of_user_index=65; # Try to implement the given option. sub implement_option { my($option) = @_; $dbconnectionstring = get_mythtv_connection_string(); if (connect_to_db("DBI:mysql:$dbconnectionstring")) { my @table_list = ( [ 'capturecard', 'cardid' ], # tuner-related [ 'cardinput', 'cardinputid' ], # tuner-related [ 'videosource', 'sourceid' ], # tuner-related [ 'dvdinput', 'intid' ], [ 'dvdtranscode', 'intid' ], [ 'gameplayers', 'gameplayerid' ], [ 'music_smartplaylist_categories', 'categoryid' ], [ 'music_smartplaylist_items', 'smartplaylistitemid' ], [ 'music_smartplaylists', 'smartplaylistid' ], [ 'phonedirectory', 'intid' ], [ 'profilegroups', 'id' ], [ 'recordingprofiles', 'id' ], [ 'storagegroup', 'id' ], [ 'videotypes', 'intid' ], ); switch ($option) { case "scrub" { # delete the rows from the table foreach my $table (@table_list) { do_query("DELETE FROM @$table[0] WHERE @$table[1] < $beginning_of_user_index;"); do_query("ALTER TABLE @$table[0] AUTO_INCREMENT = 0;"); } } case "protect" { foreach my $table (@table_list) { do_query("ALTER TABLE @$table[0] AUTO_INCREMENT = $beginning_of_user_index;"); } } } } else { exit -1; } disconnect_from_db(); } sub poll_options { my($option) = @_; switch ($option) { case "scrub" { recommendation_level("recommended", "This is required to ensure that other KnoppMyth SQL Tweaks work."); } case "protect" { recommendation_level("recommended", "This is required to ensure that other KnoppMyth SQL Tweaks do not clobber user-made changes."); } } } # Unimplemented in 0.7 sub check_option { help; } # Unimplemented in 0.7 sub count_iterations { help; } process_parameters;