| Pangloss documentation | Contained in the Pangloss distribution. |
Pangloss::User::Privileges - user privileges.
use Pangloss::User::Privileges;
my $privs = new Pangloss::User::Privileges();
$privs->admin( false )
->add_concepts( true )
->add_categories( true )
->add_translate_languages( @languages )
->add_proofread_languages( @languages );
do { ... } if $privs->can_translate( $language );
do { ... } if $privs->can_proofread( $language );
do { ... } if $privs->admin();
# etc.
This class represents the privileges of a user in Pangloss. A user with special privileges can do one or more of:
translate terms in a given language
proofread terms in a given language
add concepts
add categories
administrate Pangloss
New privileges are created with an empty list of translate/proofread languages.
This class inherits from Pangloss::StoredObject.
set/get 'add concepts' flag of the user.
set/get 'add categories' flag of the user.
set/get administration flag of the user.
set/get hash of Pangloss::Language keys the user is allowed to translate.
set/get hash of Pangloss::Language keys the user is allowed to proofread.
test to see if user can translate/proofread one or more <Pangloss::Language>s.
add to the relevant list of languages. accepts Pangloss::Languages or their keys. returns this object.
remove from the relevant list of languages. accepts Pangloss::Languages or their keys. returns this object.
test to see if user can translate/proofread given Pangloss::Language.
Steve Purkis <spurkis@quiup.com>
| Pangloss documentation | Contained in the Pangloss distribution. |
package Pangloss::User::Privileges; use strict; use warnings::register; use Scalar::Util qw( blessed ); use base qw( Pangloss::StoredObject ); use accessors qw( admin add_concepts add_categories translate_languages proofread_languages ); our $VERSION = ((require Pangloss::Version), $Pangloss::VERSION)[1]; our $REVISION = (split(/ /, ' $Revision: 1.17 $ '))[2]; #------------------------------------------------------------------------------ # Object initialization sub init { my $self = shift; $self->translate_languages( {} ) ->proofread_languages( {} ); } #------------------------------------------------------------------------------ sub translate { my $self = shift; return scalar keys %{$self->translate_languages}; } sub proofread { my $self = shift; return scalar keys %{$self->proofread_languages}; } sub add_translate_languages { my $self = shift; foreach my $lang (@_) { my $key = $self->get_lang_key( $lang ); $self->translate_languages->{$key} = 1; } return $self; } sub add_proofread_languages { my $self = shift; foreach my $lang (@_) { my $key = $self->get_lang_key( $lang ); $self->proofread_languages->{$key} = 1; } return $self; } sub remove_translate_languages { my $self = shift; foreach my $lang (@_) { my $key = $self->get_lang_key( $lang ); delete $self->translate_languages->{$key}; } return $self; } sub remove_proofread_languages { my $self = shift; foreach my $lang (@_) { my $key = $self->get_lang_key( $lang ); delete $self->proofread_languages->{$key}; } return $self; } sub can_translate { my $self = shift; my $key = $self->get_lang_key( shift ); return $self->translate_languages->{$key} ? 1 : 0; } sub can_proofread { my $self = shift; my $key = $self->get_lang_key( shift ); return $self->proofread_languages->{$key} ? 1 : 0; } sub get_lang_key { my $self = shift; my $lang = shift; return blessed($lang) ? $lang->key : $lang; } sub copy { my $self = shift; my $privs = shift; my %translate_langs = map( { $_ => $privs->can_translate($_) } keys %{ $privs->translate_languages } ); my %proofread_langs = map( { $_ => $privs->can_proofread($_) } keys %{ $privs->proofread_languages } ); $self->admin( $privs->admin ) ->add_concepts( $privs->add_concepts ) ->add_categories( $privs->add_categories ) ->add_concepts( $privs->add_concepts ) ->translate_languages( { %translate_langs } ) ->proofread_languages( { %proofread_langs } ); return $self; } 1; __END__ #------------------------------------------------------------------------------