Entry Object

From Dreamwidth Notes
Jump to: navigation, search


The two main objects the Dreamwidth source code uses are Entry and User. The Entry object stores information about a Dreamwidth post. Its definition resides in cgi-bin/LJ/Entry.pm and if you want to create a new object of this type you need to do so by calling LJ::Entry. I will summarize some of the important methods and attributes here.

Creating an Entry object

Function: new

LJ::Entry->new($u, jitemid => $jitemid)

will return an Entry object. So will

LJ::Entry->new($u, ditemid => $ditemid)

provided that $u is the User object of the user this entry belongs to (in the case of communities, this is the community, not the poster) and $jitemid or $ditemid is the ID of an existing entry.

Please note that this can also create a 'zombie-entry' if the ID does not actually exist , so you need to make sure it is the correct one.

Function: new_from_url

Sometimes it is useful to just construct a new Entry object from the URL of the entry. This can be done by calling

LJ::Entry->new($uri)

where $uri is the URL of the entry.

Entry object functions

For the purpose of this section, $entry will always be our Entry object.

Function: ditemid

$entry->ditemid

returns the ditemid of that entry.

Function: jitemid

$entry->jitemid

returns the jitemid of that entry.

Function: user/userid

$entry->user

returns the User object of the account this entry was posted in, which is not necessarily the User object of the account this entry was posted by. For communities, the community's User object is returned.

$entry->userid

just returns the user ID of that user.

Function: poster/posterid

$entry->poster

returns the User object of the account this entry was posted by, which is not necessarily the User object of the account this entry was posted in.

$entry->posterid

just returns the user ID of that user.

Function: reply_url

$entry->reply_url

returns the correct ?mode=reply URL of your entry.

Function: security

$entry->security

returns the security level of the entry as a string. This can be 'public', 'private', or 'usemask', which is members-only/access-locked in some way, including custom access filters.

Function: subject_html

$entry->subject_html

returns the entry's subject as a string with HTML tags.

Function: subject_text

$entry->subject_html

returns the entry's subject as a plain-text string.

Function: url

$entry->url

returns the permalink (the one without any arguments) to the entry.

However, it can also be passed arguments. The most-often used are:

$entry->url(mode => 'reply')

which returns the link to the ?mode=reply page, just as

$entry->reply_url

does; and

$entry->url( anchor => "comments" )

which returns the link to the #comments anchor.

Function: userpic

$entry->userpic

returns a LJ::Userpic object for this post, or undef if it was posted without an icon selected.

Function: valid

As it is possible to construct 'zombie-entries' with invalid item IDs, you can check whether an entry actually exists using

$entry->valid

which will return either 1 or 0.

Function: visible_to

If you want to check whether an entry is visible to a user $remote, where $remote is an User object, you can do this with

$entry->visible_to($remote)

which will return either 1 or 0.

Deleting an Entry Object

If you want to delete an entry, you can do this by calling

LJ::Entry->delete_entry($u, $jitemid)

This can only be done using the jitemid of the entry, not with the ditemid. The function return 1 if it succeeded, else it returns 0.