Changeset 3013

Show
Ignore:
Timestamp:
09/02/08 02:06:03 (3 months ago)
Author:
auno
Message:

Fixed error for during upgrade from MT3.x. BugzID:81774

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/MT/Upgrade.pm

    r2948 r3013  
    1717#    * Template check for all blogs 
    1818 
    19 use vars qw(%classes %functions $App $DryRun $Installing $SuperUser  
     19use vars qw(%classes %functions %LegacyPerms $App $DryRun $Installing $SuperUser 
    2020            $CLI $MAX_TIME $MAX_ROWS @steps); 
    2121 
     
    7171        }, 
    7272    ); 
     73 
     74    %LegacyPerms = ( 
     75        # System-wide permissions 
     76        #[ 2**0, 'administer', 'System Administrator', 2, 'system' ], 
     77        #[ 2**1, 'create_blog', 'Create Blogs', 2, 'system' ], 
     78        #[ 2**2, 'view_log', 'View System Activity Log', 2, 'system' ], 
     79        #[ 2**3, 'manage_plugins', 'Manage Plugins', 'system' ], 
     80 
     81        # Blog-specific permissions: 
     82        # The order here is the same order they are presented on the 
     83        # role definition screen. 
     84        2**0 => 'comment',# 'Add Comments', 1, 'blog'],  
     85        2**12 => 'administer_blog',# 'Blog Administrator', 1, 'blog'],  
     86        2**6 => 'edit_config',# 'Configure Blog', 1, 'blog'],  
     87        2**3 => 'edit_all_posts',# 'Edit All Entries', 1, 'blog'],  
     88        2**4 => 'edit_templates',# 'Manage Templates', 1, 'blog'],  
     89        2**2 => 'upload',# 'Upload File', 1, 'blog'],  
     90        2**1 => 'post',# 'Create Entry', 1, 'blog'],  
     91        2**16 => 'edit_assets',# 'Manage Assets', 1, 'blog'], 
     92        2**15 => 'save_image_defaults',# 'Save Image Defaults', 1, 'blog'],  
     93        2**9 => 'edit_categories',# 'Add/Manage Categories', 1, 'blog'],  
     94        2**14 => 'edit_tags',# 'Manage Tags', 1, 'blog'],  
     95        2**10 => 'edit_notifications',# 'Manage Notification List', 1, 'blog'],  
     96        2**8 => 'send_notifications',# 'Send Notifications', 1, 'blog'],  
     97        2**13 => 'view_blog_log',# 'View Activity Log', 1, 'blog'],  
     98        #[ 2**17, 'publish_post', 'Publish Post', 1, 'blog'], 
     99        #[ 2**18, 'manage_feedback', 'Manage Feedback', 1, 'blog'], 
     100        #[ 2**19, 'set_publish_paths', 'Set Publishing Paths', 1, 'blog'], 
     101        #[ 2**20, 'manage_pages', 'Manage Pages', 1, 'blog'], 
     102        # 2**5 == 32 is deprecated; reserved for future use  
     103        2**7 => 'rebuild',# 'Rebuild Files', 1, 'blog'],  
     104        # Not a real permission but a denial thereeof; unlisted because it  
     105        # has no label.  
     106        2**11 => 'not_comment',# '', 1, 'blog'], 
     107    ); 
    73108} 
    74109 
  • trunk/lib/MT/Upgrade/v3.pm

    r2942 r3013  
    379379        }, 
    380380    }; 
     381} 
     382 
     383my $perm_role_names = { 
     384    4096 => 'Blog Administrator',  # administer_blog 
     385    30687 => 'Blog Administrator', # 32767 - 2048(not comment) - 32(reserved) = all permissions in MT3.3 
     386    14303 => 'Blog Administrator', # 16383 - 2048(not comment) - 32(reserved) = all permissions in MT3.2 
     387    2 => 'Writer', # post 
     388    6 => 'Writer (can upload)', # post + upload 
     389    17032 => 'Editor',  # edit_all_posts + edit_tags + edit_categories + rebuild 
     390    17036 => 'Editor (can upload)', # Editor + upload 
     391    144 => 'Designer', # edit_templates + rebuild 
     392    17292 => 'Publisher', # Editor (can upload) + send_notifications 
     393}; 
     394 
     395sub _migrate_permission_to_role { 
     396    my $perm = shift; 
     397    my $full_perm_mask = 0; 
     398 
     399    return unless $perm->author_id; 
     400    my $user = MT::Author->load($perm->author_id); 
     401    if (!$user) { 
     402        $perm->remove; 
     403        return; 
     404    } 
     405    # Don't bother with non-AUTHOR types 
     406    return unless $user->type == 1; 
     407 
     408    my $role_mask = $perm->role_mask; 
     409    $role_mask -= 32 if (32 & $role_mask) == 32; # for permissions before 3.2 
     410 
     411    if (!$full_perm_mask) { 
     412        # only consider blog permissions that are supported (exclude 
     413        # now reserved permission bits like 32). 
     414        foreach my $key (keys %MT::Upgrade::LegacyPerms) { 
     415            next if $MT::Upgrade::LegacyPerms{$key} =~ m/^not_/; # skip exclusion permissions 
     416            $full_perm_mask |= $key; 
     417        } 
     418    } 
     419 
     420    $role_mask = $full_perm_mask & $role_mask; 
     421 
     422    # '0' permission, not used for permissions, just prefs 
     423    return unless $role_mask; 
     424 
     425    my $name; 
     426    $name = MT->translate($perm_role_names->{$role_mask}) 
     427        if $perm_role_names->{$role_mask}; 
     428    $name ||= MT->translate("Custom ([_1])", $role_mask); 
     429    require MT::Role; 
     430    my $role = MT::Role->load({ name => $name }); 
     431    if ($role) { 
     432        if (($role->role_mask != $role_mask) &&  
     433            ((4096 != $role->role_mask) && (30687 != $role_mask))) { 
     434            $role = undef; 
     435        } 
     436    } 
     437    unless ($role) { 
     438        $role = new MT::Role; 
     439        $role->name($name); 
     440        $role->description(MT->translate("This role was generated by Movable Type upon upgrade.")); 
     441        $role->role_mask($role_mask); 
     442        $role->save; 
     443    } 
     444    my $blog = MT::Blog->load($perm->blog_id); 
     445    $user->add_role($role, $blog) if $blog; 
    381446} 
    382447 
  • trunk/lib/MT/Upgrade/v4.pm

    r2966 r3013  
    523523### Subroutines 
    524524 
    525 my $perm_role_names = { 
    526     4096 => 'Blog Administrator',  # administer_blog 
    527     30687 => 'Blog Administrator', # 32767 - 2048(not comment) - 32(reserved) = all permissions in MT3.3 
    528     14303 => 'Blog Administrator', # 16383 - 2048(not comment) - 32(reserved) = all permissions in MT3.2 
    529     2 => 'Writer', # post 
    530     6 => 'Writer (can upload)', # post + upload 
    531     17032 => 'Editor',  # edit_all_posts + edit_tags + edit_categories + rebuild 
    532     17036 => 'Editor (can upload)', # Editor + upload 
    533     144 => 'Designer', # edit_templates + rebuild 
    534     17292 => 'Publisher', # Editor (can upload) + send_notifications 
    535 }; 
    536  
    537 { 
    538     my $full_perm_mask = 0; 
    539     my %LegacyPerms = ( 
    540         # System-wide permissions 
    541         #[ 2**0, 'administer', 'System Administrator', 2, 'system' ], 
    542         #[ 2**1, 'create_blog', 'Create Blogs', 2, 'system' ], 
    543         #[ 2**2, 'view_log', 'View System Activity Log', 2, 'system' ], 
    544         #[ 2**3, 'manage_plugins', 'Manage Plugins', 'system' ], 
    545   
    546         # Blog-specific permissions: 
    547         # The order here is the same order they are presented on the 
    548         # role definition screen. 
    549         2**0 => 'comment',# 'Add Comments', 1, 'blog'],  
    550         2**12 => 'administer_blog',# 'Blog Administrator', 1, 'blog'],  
    551         2**6 => 'edit_config',# 'Configure Blog', 1, 'blog'],  
    552         2**3 => 'edit_all_posts',# 'Edit All Entries', 1, 'blog'],  
    553         2**4 => 'edit_templates',# 'Manage Templates', 1, 'blog'],  
    554         2**2 => 'upload',# 'Upload File', 1, 'blog'],  
    555         2**1 => 'post',# 'Create Entry', 1, 'blog'],  
    556         2**16 => 'edit_assets',# 'Manage Assets', 1, 'blog'], 
    557         2**15 => 'save_image_defaults',# 'Save Image Defaults', 1, 'blog'],  
    558         2**9 => 'edit_categories',# 'Add/Manage Categories', 1, 'blog'],  
    559         2**14 => 'edit_tags',# 'Manage Tags', 1, 'blog'],  
    560         2**10 => 'edit_notifications',# 'Manage Notification List', 1, 'blog'],  
    561         2**8 => 'send_notifications',# 'Send Notifications', 1, 'blog'],  
    562         2**13 => 'view_blog_log',# 'View Activity Log', 1, 'blog'],  
    563         #[ 2**17, 'publish_post', 'Publish Post', 1, 'blog'], 
    564         #[ 2**18, 'manage_feedback', 'Manage Feedback', 1, 'blog'], 
    565         #[ 2**19, 'set_publish_paths', 'Set Publishing Paths', 1, 'blog'], 
    566         #[ 2**20, 'manage_pages', 'Manage Pages', 1, 'blog'], 
    567         # 2**5 == 32 is deprecated; reserved for future use  
    568         2**7 => 'rebuild',# 'Rebuild Files', 1, 'blog'],  
    569         # Not a real permission but a denial thereeof; unlisted because it  
    570         # has no label.  
    571         2**11 => 'not_comment',# '', 1, 'blog'], 
    572     ); 
    573  
    574  
    575 sub _migrate_permission_to_role { 
    576     my $perm = shift; 
    577  
    578     return unless $perm->author_id; 
    579     my $user = MT::Author->load($perm->author_id); 
    580     if (!$user) { 
    581         $perm->remove; 
    582         return; 
    583     } 
    584     # Don't bother with non-AUTHOR types 
    585     return unless $user->type == 1; 
    586  
    587     my $role_mask = $perm->role_mask; 
    588     $role_mask -= 32 if (32 & $role_mask) == 32; # for permissions before 3.2 
    589  
    590     if (!$full_perm_mask) { 
    591         # only consider blog permissions that are supported (exclude 
    592         # now reserved permission bits like 32). 
    593         foreach my $key (keys %LegacyPerms) { 
    594             next if $LegacyPerms{$key} =~ m/^not_/; # skip exclusion permissions 
    595             $full_perm_mask |= $key; 
    596         } 
    597     } 
    598  
    599     $role_mask = $full_perm_mask & $role_mask; 
    600  
    601     # '0' permission, not used for permissions, just prefs 
    602     return unless $role_mask; 
    603  
    604     my $name; 
    605     $name = MT->translate($perm_role_names->{$role_mask}) 
    606         if $perm_role_names->{$role_mask}; 
    607     $name ||= MT->translate("Custom ([_1])", $role_mask); 
    608     require MT::Role; 
    609     my $role = MT::Role->load({ name => $name }); 
    610     if ($role) { 
    611         if (($role->role_mask != $role_mask) &&  
    612             ((4096 != $role->role_mask) && (30687 != $role_mask))) { 
    613             $role = undef; 
    614         } 
    615     } 
    616     unless ($role) { 
    617         $role = new MT::Role; 
    618         $role->name($name); 
    619         $role->description(MT->translate("This role was generated by Movable Type upon upgrade.")); 
    620         $role->role_mask($role_mask); 
    621         $role->save; 
    622     } 
    623     my $blog = MT::Blog->load($perm->blog_id); 
    624     $user->add_role($role, $blog) if $blog; 
    625 } 
    626  
    627525sub _process_masks { 
    628526    my ($perm) = @_; 
     
    631529    return unless $mask; 
    632530    my @perms; 
    633     for my $key (keys %LegacyPerms) { 
     531    for my $key (keys %MT::Upgrade::LegacyPerms) { 
    634532        if (int($mask) & int($key)) { 
    635533            if (2 eq $key) { # post 
     
    642540                $perm->restrictions("'comment'"); 
    643541            } else { 
    644                 push @perms, $LegacyPerms{$key}; 
     542                push @perms, $MT::Upgrade::LegacyPerms{$key}; 
    645543            } 
    646544        } 
     
    674572        } 
    675573    } 
    676 } 
    677574} 
    678575