| E2-Interface documentation | Contained in the E2-Interface distribution. |
E2::User - A module for loading user data and sorting and listing a user's writeups
use E2::User;
# Display homenode info
my $user = new E2::User;
$user->load( "dem bones" ); # see E2::Node
print $user->name;
print "\nuser since: " . $user->createtime; # See E2::Node
print "\nlast seen: " . $user->lasttime;
print "\nnumber of writeups / XP: ";
print $user->writeup_count . '/' . $user->experience;
print "\nlevel: " . $user->level_string;
print "\nC!s spent: " . $user->cool_count;
print "\nmission drive within everything:\n\t";
print $user->mission;
print "\nspecialties:\n\t" . $user->specialties;
print "\nschool/company:\n\t" . $user->employment;
print "\nmotto:\n\t" . $user->motto;
print "\nmember of:\n\t";
foreach my $g ( $user->groups ) { print $g->{title} . ' '; }
print "\nmost recent writeup:\n\t";
print $user->lastnode;
print "\n-------------------------------------\n\n";
print $user->text;
print "\n\nUser Bookmarks:\n";
foreach my $g ( $user->bookmarks ) {
print $g->{title};
print "\n";
}
This module provides access to user information that is normally displayed on a user's homenode. It inherits E2::Node.
NOTE: E2::Node provides $user->createtime and other methods that might be useful in displaying user information.
new creates an E2::User object.
These return, respectively, the username, user_id, the time of account creation, and the last time the specified user was seen on E2.
NOTE: E2::Node provides $user->createtime, as well as other methods that might be useful in displaying user information.
These return, respectively, the username and user_id of this user's alias (for message forwarding) if he indeed has one.
text returns the text of the "User Bio" section of the user's homenode.
These return, respectively, the XP number of the user in question, the level number, and the level including description text ("13 (Pseudo God)", etc.).
These return, respectively, the number of writeups written by the user in question, and the number of C!s he has spent.
image returns a relative URL to the homenode image of the user in question.
These return the name and id, respectively, of the most recent node written by this user.
These return the strings that are displayed in the user's homenode regarding his mission drive, specialties, motto, and his employer or school.
groups returns a list of hashrefs corresponding to the groups which this user is a member. It only lists membership in 'gods', 'Content Editors', and 'edev'. Hash keys include 'title' and 'id'.
bookmarks returns a list of hashrefs corresponding to the nodes that this user has bookmarked. Hash keys include 'title' and 'id'.
E2::Interface, E2::Node, E2::UserSearch, http://everything2.com, http://everything2.com/?node=clientdev
Jose M. Weeks <jose@joseweeks.com> (Simpleton on E2)
This software is public domain.
| E2-Interface documentation | Contained in the E2-Interface distribution. |
# E2::User # Jose M. Weeks <jose@joseweeks.com> # 05 June 2003 # # See bottom for pod documentation. package E2::User; use 5.006; use strict; use warnings; use Carp; use E2::Node; our $VERSION = "0.32"; our @ISA = qw(E2::Node); our $DEBUG; *DEBUG = *E2::Interface::DEBUG; sub new; sub clear; sub name; sub id; sub alias; sub alias_id; sub text; sub lasttime; sub experience; sub level; sub level_string; sub writeup_count; sub cool_count; sub image_url; sub lastnode; sub lastnode_id; sub mission; sub specialties; sub motto; sub employment; sub groups; sub bookmarks; sub new { my $arg = shift; my $class = ref( $arg ) || $arg; my $self = $class->SUPER::new(); $self->clear; return $self; } sub clear { my $self = shift or croak "Usage: clear E2USER"; warn "E2::User::clear\n" if $DEBUG > 1; $self->{alias} = undef; $self->{alias_id} = undef; $self->{text} = undef; # Homenode text $self->{lasttime} = undef; $self->{experience} = undef; $self->{level} = undef; # Integer $self->{level_string} = undef; # Ex: "3 (Acolyte)" $self->{writeup_num} = undef; $self->{cool_num} = undef; $self->{image} = undef; # Relative URL $self->{lastnode} = undef; $self->{lastnode_id} = undef; $self->{mission} = undef; $self->{specialties} = undef; $self->{motto} = undef; $self->{employment} = undef; $self->{groups} = (); # these are lists of hashrefs $self->{bookmarks} = (); # with the following keys: # o title # o id return $self->SUPER::clear; } sub type_as_string { return 'user'; }; sub twig_handlers { my $self = shift or croak "Usage: twig_handlers E2USER"; return ( 'useralias/e2link' => sub { (my $a, my $b) = @_; $self->{alias} = $b->text; $self->{alias_id} = $b->{att}->{node_id}; }, 'node/doctext' => sub { (my $a, my $b) = @_; $self->{text} = $b->text; }, 'experience' => sub { (my $a, my $b) = @_; $self->{experience} = $b->text; }, 'lasttime' => sub { (my $a, my $b) = @_; $self->{lasttime} = $b->text; }, 'level' => sub { (my $a, my $b) = @_; $self->{level} = $b->{att}->{value}; $self->{level_string} = $b->text; }, 'writeups' => sub { (my $a, my $b) = @_; $self->{writeup_num} = $b->text; }, 'image' => sub { (my $a, my $b) = @_; $self->{image} = $b->text; }, 'lastnoded/e2link' => sub { (my $a, my $b) = @_; $self->{lastnode} = $b->text; $self->{lastnode_id} = $b->{att}->{node_id}; }, 'cools' => sub { (my $a, my $b) = @_; $self->{cool_num} = $b->text; }, 'userstrings/mission' => sub { (my $a, my $b) = @_; $self->{mission} = $b->text; }, 'userstrings/specialties' => sub { (my $a, my $b) = @_; $self->{specialties} = $b->text; }, 'userstrings/motto' => sub { (my $a, my $b) = @_; $self->{motto} = $b->text; }, 'userstrings/employment' => sub { (my $a, my $b) = @_; $self->{employment} = $b->text; }, 'groupmembership/e2link' => sub { (my $a, my $b) = @_; push @{ $self->{groups} }, { title => $b->text, id => $b->{att}->{node_id} }; }, 'bookmarks/e2link' => sub { (my $a, my $b) = @_; push @{ $self->{bookmarks} }, { title => $b->text, id => $b->{att}->{node_id} }; } ); } #--------------- # Access Members #--------------- sub name { my $self = shift or croak "Usage: name E2USER"; return $self->title; } sub id { my $self = shift or croak "Usage: id E2USER"; return $self->node_id; } sub alias { my $self = shift or croak "Usage: alias E2USER"; return $self->{alias}; } sub alias_id { my $self = shift or croak "Usage: alias_id E2USER"; return $self->{alias_id}; } sub text { my $self = shift or croak "Usage: text E2USER"; return $self->{text}; } sub lasttime { my $self = shift or croak "Usage: lasttime E2USER"; return $self->{lasttime}; } sub experience { my $self = shift or croak "Usage: experience E2USER"; return $self->{experience}; } sub level { my $self = shift or croak "Usage: level E2USER"; return $self->{level}; } sub level_string { my $self = shift or croak "Usage: level_string E2USER"; return $self->{level_string}; } sub writeup_count { my $self = shift or croak "Usage: writeup_count E2USER"; return $self->{writeup_num}; } sub cool_count { my $self = shift or croak "Usage: cool_count E2USER"; return $self->{cool_num}; } sub image_url { my $self = shift or croak "Usage: image_url E2USER"; return $self->{image}; } sub lastnode { my $self = shift or croak "Usage: lastnode E2USER"; return $self->{lastnode}; } sub lastnode_id { my $self = shift or croak "Usage: lastnode_id E2USER"; return $self->{lastnode_id}; } sub mission { my $self = shift or croak "Usage: mission E2USER"; return $self->{mission}; } sub specialties { my $self = shift or croak "Usage: specialties E2USER"; return $self->{specialties}; } sub motto { my $self = shift or croak "Usage: motto E2USER"; return $self->{motto}; } sub employment { my $self = shift or croak "Usage: employment E2USER"; return $self->{employment}; } sub groups { my $self = shift or croak "Usage: groups E2USER"; if( ! defined $self->{groups} ) { return (); } return @{ $self->{groups} }; } sub bookmarks { my $self = shift or croak "Usage: bookmarks E2USER"; if( ! defined $self->{bookmarks} ) { return (); } return @{ $self->{bookmarks} }; } 1; __END__