#!/usr/bin/perl -w # modified from mt-load.cgi by Charl P. Botha http://cpbotha.net/ # if you've made the mistake of removing your own author permissions from # any number of blogs, run this to give yourself full permissions for all # blogs on the system; just remember to change $SUPER_AUTHOR to the correct # value... use strict; my($SUPER_AUTHOR); $SUPER_AUTHOR = 'cpbotha'; my($MT_DIR); BEGIN { if ($0 =~ m!(.*[/\\])!) { $MT_DIR = $1; } else { $MT_DIR = './'; } unshift @INC, $MT_DIR . 'lib'; unshift @INC, $MT_DIR . 'extlib'; } local $| = 1; print "Content-Type: text/html\n\n"; print "
\n\n";

use File::Spec;

eval {

my $tmpl_list;
eval { $tmpl_list = require 'MT/default-templates.pl' };
die "Can't find default template list; where is 'default-templates.pl'?\n" .
    "Error: $@\n"
    if $@ || !$tmpl_list || ref($tmpl_list) ne 'ARRAY' || !@$tmpl_list;

print "grantperms.cgi by Charl P. Botha http://cpbotha.net/\n";

require MT;
my $mt = MT->new( Config => $MT_DIR . 'mt.cfg', Directory => $MT_DIR )
    or die MT->errstr;

if ($mt->{cfg}->ObjectDriver eq 'DBI::mysql') {
    my $dbh = MT::Object->driver->{dbh};
    my $schema = File::Spec->catfile($MT_DIR, 'schemas', 'mysql.dump');
    open FH, $schema or die "Can't open schema file '$schema': $!";
    my $ddl;
    { local $/; $ddl =  }
    close FH;
    my @stmts = split /;/, $ddl;
    print "Loading database schema...\n\n";
    for my $stmt (@stmts) {
        $stmt =~ s!^\s*!!;
        $stmt =~ s!\s*$!!;
        next unless $stmt =~ /\S/;
        $dbh->do($stmt) or die $dbh->errstr;
    }
}

require MT::Author;
require MT::Blog;
require MT::Permission;


my $author = MT::Author->load({ name => $SUPER_AUTHOR }) or die "Could not find $SUPER_AUTHOR!\n\n";
print "Author id of $SUPER_AUTHOR is: ", $author->id, "\n";
print "Preparing to grant all permissions to $SUPER_AUTHOR...\n";

# now iterate through all blogs and give this author all permissions
my @blogs = MT::Blog->load;
for my $blog (@blogs) {
    my $perms = MT::Permission->load({ blog_id => $blog->id,
	                               author_id => $author->id });
    if ($perms)
    {
	$perms->set_full_permissions;
	$perms->save and print "All permissions granted for ", $blog->name, "\n" or "Could not grant permissions for ", $blog->name, "\n";
    }
}

}