Difference between revisions of "API:EPrints/DataObj/Subject"

From EPrints Documentation
Jump to: navigation, search
Line 1: Line 1:
still todo!
+
<!-- Pod2Wiki=_preamble_
 +
This page has been automatically generated from the EPrints 3.2 source. Any wiki changes made between the 'Pod2Wiki=*' and 'Edit below this comment' comments will be lost.
 +
-->{{API}}{{Pod2Wiki}}{{API:Source|file=EPrints/DataObj/Subject.pm|package_name=EPrints::DataObj::Subject}}[[Category:API|Subject]]<div><!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki=_private_ --><!-- Pod2Wiki=head_name -->
 +
==NAME==
 +
'''EPrints::DataObj::Subject''' - Class and methods relating to the subejcts tree.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=head_description -->
 +
==DESCRIPTION==
 +
This class represents a single node in the subejcts tree. It also contains a number of methods for handling the entire tree.
 +
 
 +
EPrints::DataObj::Subject is a subclass of EPrints::DataObj
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_system_field_info -->
 +
===$thing = EPrints::DataObj::Subject-&gt;get_system_field_info===
 +
 
 +
Return an array describing the system metadata of the Subject dataset.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_new -->
 +
===$subject = EPrints::DataObj::Subject-&gt;new( $session, $subjectid )===
 +
 
 +
Create a new subject object given the id of the subject. The values for the subject are loaded from the database.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_new_from_data -->
 +
===$subject = EPrints::DataObj::Subject-&gt;new_from_data( $session, $data )===
 +
 
 +
Construct a new subject object from a hash reference containing the relevant fields. Generally this method is only used to construct new Subjects coming out of the database.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_commit -->
 +
===$success = $subject-&gt;commit( [$force] )===
 +
 
 +
Commit this subject to the database, but only if any fields have  changed since we loaded it.
 +
 
 +
If $force is set then always commit, even if there appear to be no changes.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_remove -->
 +
===$success = $subject-&gt;remove===
 +
 
 +
Remove this subject from the database.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_dataset_id -->
 +
===$dataset = EPrints::DataObj::Subject-&gt;get_dataset_id===
 +
 
 +
Returns the id of the [[API:EPrints/DataSet|EPrints::DataSet]] object to which this record belongs.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_remove_all -->
 +
===EPrints::DataObj::Subject::remove_all( $session )===
 +
 
 +
Static function.
 +
 
 +
Remove all subjects from the database. Use with care!
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_create_child -->
 +
===$child_subject = $subject-&gt;create_child( $id, $name, $depositable )===
 +
 
 +
Similar to EPrints::DataObj::Subject::create, but this creates the new subject as a child of the current subject.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_children -->
 +
===@children = $subject-&gt;get_children===
 +
 
 +
Return a list of EPrints::DataObj::Subject objects which are direct children of the current subject.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_parents -->
 +
===@parents = $subject-&gt;get_parents===
 +
 
 +
Return a list of EPrints::DataObj::Subject objects which are direct parents of the current subject.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_can_post -->
 +
===$boolean = $subject-&gt;can_post( [$user] )===
 +
 
 +
Determines whether the given user can post in this subject.
 +
 
 +
Currently there is no way to configure subjects for certain users, so this just returns the true or false depending on the "depositable" flag.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_render_with_path -->
 +
===$xhtml = $subject-&gt;render_with_path( $session, $topsubjid )===
 +
 
 +
Return the name of this subject including it's path from $topsubjid.
 +
 
 +
$topsubjid must be an ancestor of this subject.
 +
 
 +
eg.
 +
 
 +
Library of Congress &gt; B Somthing &gt; BC Somthing more Detailed
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_paths -->
 +
===@paths = $subject-&gt;get_paths( $session, $topsubjid )===
 +
 
 +
This function returns all the paths from this subject back up to the specified top subject.
 +
 
 +
@paths is an array of array references. Each of the inner arrays is a list of subject id's describing a path down the tree from $topsubjid to $session.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_subjects -->
 +
===$subject_pairs = $subject-&gt;get_subjects ( [$postable_only], [$show_top_level], [$nes_tids], [$no_nest_label] )===
 +
 
 +
Return a reference to an array. Each item in the array is a two  element list.
 +
 
 +
The first element in the list is an indenifier string.
 +
 
 +
The second element is a utf-8 string describing the subject (in the  current language), including all the items above it in the tree, but only as high as this subject.
 +
 
 +
The subjects which are returned are this item and all its children,  and childrens children etc. The order is it returns  this subject, then the first child of this subject, then children of  that (recursively), then the second child of this subject etc.
 +
 
 +
If $postable_only is true then filter the results to only contain  subjects which have the "depositable" flag set to true.
 +
 
 +
If $show_top_level is not true then the pair representing the current subject is not included at the start of the list.
 +
 
 +
If $nest_ids is true then each then the ids retured are nested so that the ids of the children of this subject are prefixed with this  subjects id and a colon, and their children are prefixed by their  nested id and a colon. eg. L:LC:LC003 rather than just "LC003"
 +
 
 +
if $no_nest_label is true then the subject label only contains the name of the subject, not the higher level ones.
 +
 
 +
A default result from this method would look something like this:
 +
 
 +
  [
 +
    [ "D", "History" ],
 +
    [ "D1", "History: History (General)" ],
 +
    [ "D111", "History: History (General): Medieval History" ]
 +
]
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_subject_label -->
 +
===$label = EPrints::DataObj::Subject::subject_label( $session, $subject_id )===
 +
 
 +
Return the full label of a subject, including parents. Returns undef if the subject id is invalid.
 +
 
 +
The returned string is encoded in utf8.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_get_all -->
 +
===( $subject_map, $reverse_map ) = EPrints::DataObj::Subject::get_all( $session )===
 +
 
 +
Get all the subjects for the current archvive of $session.
 +
 
 +
$subject_map is a reference to a hash. The keys of the hash are the id's of the subjects. The values of the hash are the  EPrint::Subject object relating to that id.
 +
 
 +
$reverse_map is a reference to a hash. Each key is the id of a subject. Each value is a reference to an array. The array contains a EPrints::DataObj::Subject objects, one for each child of the subject  with the id. The array is sorted by the labels for the subjects, in the current language.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_count_eprints -->
 +
===$count = $subject-&gt;count_eprints( $dataset )===
 +
 
 +
Return the number of eprints in the dataset which are in this subject or one of its decendants. Search all fields of type subject.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_valid_id -->
 +
===$boolean = EPrints::DataObj::Subject::valid_id( $id )===
 +
 
 +
Return true if the string is an acceptable identifier for a subject.
 +
 
 +
This does not check all possible illegal values, yet.
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=item_render -->
 +
===$subj-&gt;render()===
 +
 
 +
undocumented
 +
 
 +
<div style='background-color: #e8e8f; margin: 0.5em 0em 1em 0em; border: solid 1px #cce;  padding: 0em 1em 0em 1em; font-size: 80%; '>
 +
<span style='display:none'>User Comments</span>
 +
<!-- Edit below this comment -->
 +
 
 +
 
 +
<!-- Pod2Wiki= -->
 +
</div>
 +
<!-- Pod2Wiki=_postamble_ --><!-- Edit below this comment -->

Revision as of 13:21, 25 February 2010

EPrints 3 Reference: Directory Structure - Metadata Fields - Repository Configuration - XML Config Files - XML Export Format - EPrints data structure - Core API - Data Objects


API: Core API

Latest Source Code (3.4, 3.3) | Revision Log | Before editing this page please read Pod2Wiki


NAME

EPrints::DataObj::Subject - Class and methods relating to the subejcts tree.

User Comments


DESCRIPTION

This class represents a single node in the subejcts tree. It also contains a number of methods for handling the entire tree.

EPrints::DataObj::Subject is a subclass of EPrints::DataObj

User Comments


$thing = EPrints::DataObj::Subject->get_system_field_info

Return an array describing the system metadata of the Subject dataset.

User Comments


$subject = EPrints::DataObj::Subject->new( $session, $subjectid )

Create a new subject object given the id of the subject. The values for the subject are loaded from the database.

User Comments


$subject = EPrints::DataObj::Subject->new_from_data( $session, $data )

Construct a new subject object from a hash reference containing the relevant fields. Generally this method is only used to construct new Subjects coming out of the database.

User Comments


$success = $subject->commit( [$force] )

Commit this subject to the database, but only if any fields have changed since we loaded it.

If $force is set then always commit, even if there appear to be no changes.

User Comments


$success = $subject->remove

Remove this subject from the database.

User Comments


$dataset = EPrints::DataObj::Subject->get_dataset_id

Returns the id of the EPrints::DataSet object to which this record belongs.

User Comments


EPrints::DataObj::Subject::remove_all( $session )

Static function.

Remove all subjects from the database. Use with care!

User Comments


$child_subject = $subject->create_child( $id, $name, $depositable )

Similar to EPrints::DataObj::Subject::create, but this creates the new subject as a child of the current subject.

User Comments


@children = $subject->get_children

Return a list of EPrints::DataObj::Subject objects which are direct children of the current subject.

User Comments


@parents = $subject->get_parents

Return a list of EPrints::DataObj::Subject objects which are direct parents of the current subject.

User Comments


$boolean = $subject->can_post( [$user] )

Determines whether the given user can post in this subject.

Currently there is no way to configure subjects for certain users, so this just returns the true or false depending on the "depositable" flag.

User Comments


$xhtml = $subject->render_with_path( $session, $topsubjid )

Return the name of this subject including it's path from $topsubjid.

$topsubjid must be an ancestor of this subject.

eg.

Library of Congress > B Somthing > BC Somthing more Detailed

User Comments


@paths = $subject->get_paths( $session, $topsubjid )

This function returns all the paths from this subject back up to the specified top subject.

@paths is an array of array references. Each of the inner arrays is a list of subject id's describing a path down the tree from $topsubjid to $session.

User Comments


$subject_pairs = $subject->get_subjects ( [$postable_only], [$show_top_level], [$nes_tids], [$no_nest_label] )

Return a reference to an array. Each item in the array is a two element list.

The first element in the list is an indenifier string.

The second element is a utf-8 string describing the subject (in the current language), including all the items above it in the tree, but only as high as this subject.

The subjects which are returned are this item and all its children, and childrens children etc. The order is it returns this subject, then the first child of this subject, then children of that (recursively), then the second child of this subject etc.

If $postable_only is true then filter the results to only contain subjects which have the "depositable" flag set to true.

If $show_top_level is not true then the pair representing the current subject is not included at the start of the list.

If $nest_ids is true then each then the ids retured are nested so that the ids of the children of this subject are prefixed with this subjects id and a colon, and their children are prefixed by their nested id and a colon. eg. L:LC:LC003 rather than just "LC003"

if $no_nest_label is true then the subject label only contains the name of the subject, not the higher level ones.

A default result from this method would look something like this:

 [
   [ "D", "History" ],
   [ "D1", "History: History (General)" ],
   [ "D111", "History: History (General): Medieval History" ]
]
 

User Comments


$label = EPrints::DataObj::Subject::subject_label( $session, $subject_id )

Return the full label of a subject, including parents. Returns undef if the subject id is invalid.

The returned string is encoded in utf8.

User Comments


( $subject_map, $reverse_map ) = EPrints::DataObj::Subject::get_all( $session )

Get all the subjects for the current archvive of $session.

$subject_map is a reference to a hash. The keys of the hash are the id's of the subjects. The values of the hash are the EPrint::Subject object relating to that id.

$reverse_map is a reference to a hash. Each key is the id of a subject. Each value is a reference to an array. The array contains a EPrints::DataObj::Subject objects, one for each child of the subject with the id. The array is sorted by the labels for the subjects, in the current language.

User Comments


$count = $subject->count_eprints( $dataset )

Return the number of eprints in the dataset which are in this subject or one of its decendants. Search all fields of type subject.

User Comments


$boolean = EPrints::DataObj::Subject::valid_id( $id )

Return true if the string is an acceptable identifier for a subject.

This does not check all possible illegal values, yet.

User Comments


$subj->render()

undocumented

User Comments