NAME

Bric::SOAP::Story - SOAP interface to Bricolage stories.

VERSION

$Revision: 1.28.2.1 $

DATE

$Date: 2002/10/25 22:54:03 $

SYNOPSIS

use SOAP::Lite;
import SOAP::Data 'name';

# setup soap object to login with
my $soap = new SOAP::Lite
  uri      => 'http://bricolage.sourceforge.net/Bric/SOAP/Auth',
  readable => DEBUG;
$soap->proxy('http://localhost/soap',
             cookie_jar => HTTP::Cookies->new(ignore_discard => 1));
# login
$soap->login(name(username => USER), 
               name(password => PASSWORD));

# set uri for Story module
$soap->uri('http://bricolage.sourceforge.net/Bric/SOAP/Story');

# get a list of story_ids for published stories w/ "foo" in their title
my $story_ids = $soap->list_ids(name(title          => '%foo%'), 
                                name(publish_status => 1)     )->result;

# export a story
my $xml = $soap->export(name(story_id => $story_id)->result;

# create a new story from an xml document
my $story_ids = $soap->create(name(document => $xml_document))->result;

# update an existing story from an xml document
my $story_ids = $soap->create(name(document => $xml_document),
                              name(update_ids => 
                                   [ name(story_id => 1024) ]))->result;

DESCRIPTION

This module provides a SOAP interface to manipulating Bricolage stories.

INTERFACE

Public Class Methods

list_ids

This method queries the story database for matching stories and returns a list of ids. If no stories are found an empty list will be returned.

This method can accept the following named parameters to specify the search. Some fields support matching and are marked with an (M). The value for these fields will be interpreted as an SQL match expression and will be matched case-insensitively. Other fields must specify an exact string to match. Match fields combine to narrow the search results (via ANDs in an SQL WHERE clause).

title (M)

The story's title.

description (M)

The story's description.

slug (M)

The story's slug.

category

A category containing the story, given as the complete category path from the root. Example: "/news/linux".

keyword (M)

A keyword associated with the story.

simple (M)

a single OR search that hits title, description, primary_uri and keywords.

workflow

The name of the workflow containing the story. (ex. Story)

no_workflow

Set to 1 to return only stories that are out of workflow. This is true after stories are published and until they are recalled into workflow for editing.

primary_uri (M)

The primary uri of the story.

priority

The priority of the story.

publish_status

Stories that have been published have a publish_status of "1", otherwise "0". This value never changes after being turned on. For a more accurate read on a story's current status see no_workflow above.

element

The name of the top-level element for the story. Also know as the "Story Type". This value corresponds to the element attribute on the story element in the asset schema.

publish_date_start

Lower bound on publishing date. Given in XML Schema dateTime format (CCYY-MM-DDThh:mm:ssTZ).

publish_date_end

Upper bound on publishing date. Given in XML Schema dateTime format (CCYY-MM-DDThh:mm:ssTZ).

cover_date_start

Lower bound on cover date. Given in XML Schema dateTime format (CCYY-MM-DDThh:mm:ssTZ).

cover_date_end

Upper bound on cover date. Given in XML Schema dateTime format (CCYY-MM-DDThh:mm:ssTZ).

expire_date_start

Lower bound on cover date. Given in XML Schema dateTime format (CCYY-MM-DDThh:mm:ssTZ).

expire_date_end

Upper bound on cover date. Given in XML Schema dateTime format (CCYY-MM-DDThh:mm:ssTZ).

Order

Specifies that the results be ordered by a particular property.

OrderDirection

The direction in which to order the records, either "ASC" for ascending (the default) or "DESC" for descending.

Limit

A maximum number of objects to return. If not specified, all objects that match the query will be returned.

Offset

The number of objects to skip before listing the number of objects specified by "Limit". Not used if "Limit" is not defined, and when "Limit" is defined and "Offset" is not, no objects will be skipped.

Throws: NONE

Side Effects: NONE

Notes: NONE

export

The export method retrieves a set of stories from the database, serializes them and returns them as a single XML document. See Bric::SOAP for the schema of the returned document.

Accepted paramters are:

story_id

Specifies a single story_id to be retrieved.

story_ids

Specifies a list of story_ids. The value for this option should be an array of interger "story_id" elements.

export_related_media

If set to 1 any related media attached to the story will be included in the exported document. The story will refer to these included media objects using the relative form of related-media linking. (see the XML Schema document in Bric::SOAP for details)

export_related_stories

If set to 1 then the export will work recursively across related stories. If export_media is also set then media attached to related stories will also be returned. The story element will refer to the included story objects using relative references (see the XML Schema document in Bric::SOAP for details).

Throws: NONE

Side Effects: NONE

Notes: NONE

create

The create method creates new objects using the data contained in an XML document of the format created by export().

The create will fail if your story element contains non-relative related_story_ids or related_media_ids that do not refer to existing stories or media in the system.

Returns a list of new story_ids and media_ids created in the order of the assets in the document.

Available options:

document (required)

The XML document containing objects to be created. The document must contain at least one story and may contain any number of related media objects.

Throws: NONE

Side Effects: NONE

Notes: The setting for publish_status in the incoming story is ignored and always 0 for new stories.

update

The update method updates stories using the data in an XML document of the format created by export(). A common use of update() is to export() a selected story, make changes to one or more fields and then submit the changes with update().

Returns a list of new story_ids and media_ids updated or created in the order of the assets in the document.

Takes the following options:

document (required)

The XML document where the objects to be updated can be found. The document must contain at least one story and may contain any number of related media objects.

update_ids (required)

A list of "story_id" integers for the assets to be updated. These must match id attributes on story elements in the document. If you include objects in the document that are not listed in update_ids then they will be treated as in create(). For that reason an update() with an empty update_ids list is equivalent to a create().

Throws: NONE

Side Effects: NONE

Notes: The setting for publish_status in a newly created story is ignored and always 0 for new stories. Updated stories do get publish_status set from the document setting.

delete

The delete() method deletes stories. It takes the following options:

story_id

Specifies a single story_id to be deleted.

story_ids

Specifies a list of story_ids to delete.

Throws: NONE

Side Effects: NONE

Notes: NONE

Private Class Methods

$pkg->_load_stories($args)

This method provides the meat of both create() and update(). The only difference between the two methods is that update_ids will be empty on create().

@related = $pkg->_serialize_story(writer => $writer, story_id => $story_id, args => $args)

Serializes a single story into a <story> element using the given writer and args. Returns a list of two-element arrays - [ "media", $id ] or [ "story", $id ]. These are the related media objects serialized.

AUTHOR

Sam Tregar <stregar@about-inc.com>

SEE ALSO

Bric::SOAP

POD ERRORS

Hey! The above document had some coding errors, which are explained below:

Around line 214:

=back doesn't take any parameters, but you said =back 4

Around line 346:

=back doesn't take any parameters, but you said =back 4

Around line 459:

=back doesn't take any parameters, but you said =back 4

Around line 528:

=back doesn't take any parameters, but you said =back 4

Around line 590:

=back doesn't take any parameters, but you said =back 4