Talk:API:EPrints

From EPrints Documentation
Revision as of 10:22, 10 September 2009 by Cjg (talk | contribs) (rev. 3.)
Jump to: navigation, search

I'm going to use this page to get my thoughts in order. Cjg 16:58, 2 September 2009 (BST)

Current 3.1 System

Session, Repository, DataSet, MetaField

API

Plan:

  • RepositoryHandle (was Session)
  • MetaFieldHandle
  • DataSetHandle
  • Repository, MetaField and DataSet still exist but are not part of the API.
$handle = EPrint->get_repository_handle()
$dataset = $handle->get_dataset_handle()
$field = $dataset->get_field( "foo" )
$search = $dataset->get_search()

OK. The problems:

  • what to name the new modules
  • if we should rename the old modules? s/DataSet/DataSetConfig/
  • What methods to use
  • What $foo variable name to conventially use to refer to this item.

revision 2

$repo = EPrints->repository_by_id( "devel" );
$dataset = $repo->dataset( "user" );
$user = $repo->user( 23 );
$user = $repo->user_by_username( "cjg" );
$user = $dataset->dataobj( 23 );
$search = $dataset->search();
$list = $search->execute();

rev. 3.

repo

$repo = EPrints->repository( "devel", noise=>1 );
$repo = EPrints->repository_from_request( noise=>3 );
$xml = $repo->xml();
$dataset = $repo->dataset( "user" );
$user = $repo->user( 23 );
$user = $repo->user_by_username( "cjg" );
$user = $repo->user_by_email( 'cjg@ecs.soton.ac.uk' );

dataset

$user = $dataset->dataobj( 23 );
$search = $dataset->prepare_search();

search

$list = $search->execute();


Still needing API working out: dataobj,eprint,user,subject,file,document,search,list,xml,page

Current

$string = EPrints::XML::to_string( $node, "utf-8", 1 ); #use this to convert DOM trees to string

$dom = EPrints::XML::parse_xml_string( $string );

$dom = EPrints::XML::parse_xml( $file, $basepath, $no_expand );

$boolean = is_dom( $node, @nodestrings );

$newnode = EPrints::XML::clone_node( $node, $deep );

EPrints::XML::write_xhtml_file( $node, $filename );

$document = EPrints::XML::make_document();

$dom = EPrints:XML::parse_url($url, $no_expand);

nherrits all methods from EPrints::DataObj.

# create a new document on $eprint 
my $doc_data = {
  _parent => $eprint,
  eprintid => $eprint->get_id,
};
my $doc_ds = $handle->get_dataset( 'document' );
my $document = $doc_ds->create_object( $handle, $doc_data );

# Add files to the document  
$success = $doc->add_file( $file, $filename, [$preserve_path] );
$success = $doc->upload( $filehandle, $filename [, $preserve_path [, $filesize ] ] );
$success = $doc->upload_archive( $filehandle, $filename, $archive_format );
$success = $doc->add_archive( $file, $archive_format );
$success = $doc->add_directory( $directory );
$success = $doc->upload_url( $url );

# get an existing document
$document = $handle->get_document( $doc_id );
# or
foreach my $doc ( $eprint->get_all_documents ) { ... }

# eprint to which this document belongs
$eprint = $doc->get_eprint;

# delete a document object *forever*:
$success = $doc->remove;

$url = $doc->get_url( [$file] );
$path = $doc->local_path;
%files = $doc->files;

# delete a file
$success = $doc->remove_file( $filename );
# delete all files
$success = $doc->remove_all_files;

# change the file which is used as the URL for the document.
$doc->set_main( $main_file );

# icons and previews
$xhtml = $doc->render_icon_link( %opts );
$xhtml = $doc->render_preview_link( %opts );

$repository = $handle->get_repository;

# without a $handle available
$repository = EPrints->get_repository( $id );

$id = $repository->get_id;
$dataset = $repository->get_dataset( $setname );

$repository->log( $msg );

$confitem = $repository->get_conf( $key, [@subkeys] );

# calling subtroutines in the config  
$boolean = $repository->can_call( @cmd_conf_path );
$result = $repository->call( $cmd, @params );

# calling external commands
$returncode = $repository->exec( $cmd_id, %map );

$img_dom = $handle->make_element( "img", src => "/foo.gif", alt => "my pic" );

$comment_dom = $handle->make_comment( $text );

$text_dom = $handle->make_text( $text );

$empty_frag = $handle->make_doc_fragment;

render_ruler render_nbsp render-link render_name $xhtml_hidden = $handle->render_hidden_field( $name, $value ) [edit] $xhtml_input = $handle->render_input_field( %opts ) [edit] $xhtml_input = $handle->render_noenter_input_field( %opts ) render_form

$handle->prepare_page( { page=>$mypage, title=>$mytitle } );
$handle->send_page();