Revision history for Elive
1.37 3rd November 2015
[Elive::DAO]
- preserve argument order on soap calls.
This is work around restrictions with Bb::Collaborate::Multimedia
(and Presentation). uploads Seems that arguments needs to supplied
in a particular order (size following upload content).
1.36 1st November 2015
[Elive::DAO]
- added support for class level invocation of Elive::DAO update and delete methods.
Note: that all primary keys and mandatory fields need to be supplied.
[distribution]
- moved source repository to https://github.com/dwarring/p5-Bb-Collaborate.git
1.35 7th June 2015
Support for new module Bb::Collaborate::V3.
[Elive::DAO]
- added list() params options
[Elive::Util::Type]
- removed Elive:: namespace dependency.
[scripts/elive_query]
- added --adapter=v3 option (Bb::Collaborate::V3). removed deprecated v2 adapter
1.34 4th April 2015
- Update copyright notices
[Elive::DAO]
- tweaks for latest (SAS compatibile) Elive::StandardV3
[kwalitee]
- Use consistant version number in sub-classes
1.33 22nd January 2015
[bug-fixes]
- RT#101018 "Mouse 2.4.1 when Test::Script::Run is installed"
Removed fragile 'stderr empty' tests from t/script-elive_query.t
and t/script-elive_raise_meeting.t.
- fixed a taint issue in Elive::Entity::Preload.
1.32 1st March 2014
[testing]
- raised max tested ELM version 11.1.2 => 12.5.4
- fixed soap-session-connect.t test plan
[distribution]
- removed Elive::Array
- relocated sourceforge repository
1.31 28th March 2013
[testing]
- added Test::More 0.98 dependency. Older versions don't understand
$t->is_passing
1.30 4th January 2013
[bug fixes]
Elive::DAO
- Relax HiResDate constraints to allow negative timestamps; downgrade
to a warning
1.29 25th October 2012
[enhancements]
Elive::Entity::Meeting, Elive::Entity::Session, Elive::View::Meeting
- buildJNLP() method: Tidy up of POD and argument handling.
-- removed `version' argument; not used.
-- added 'sessionRole' parameter.
-- accept any one of 'userId', 'userName' or 'displayName'. In
particular, don't default 'userId' when 'displayName' given.
Elive::Entity::Role - added some constants:
- ${Elive::Entity::Role::PARTICIPANT} (3)
- ${Elive::Entity::Role::MODERATOR} (2)
- ${Elive::Entity::Role::APPLICATION_ADMIN} (1)
- ${Elive::Entity::Role::SYSTEM_ADMIN} (0)
Elive::Entity::Participant - added some constants:
- ${Elive::Entity::Participant::TYPE_USER} (0)
- ${Elive::Entity::Participant::TYPE_GROUP} (1)
- ${Elive::Entity::Participant::TYPE_GUEST} (2)
Elive::DAO
- revert() method - Silence 'unsaved changes' warnings
1.28 12th October 2012
[bug fixes]
elive_raise_meeting, script-elive_raise_meeting.t
- fixed -moderators option. These were being downgraded to regular
participants. Added tests (bug introduced in 1.20)
Elive::Entity::InvitedGuest, soap-session-participants.t
- added BUILDARGS method plus string coercement (it's never had these).
The following now works:
Elive::Entity::InvitedGuest->new('Robert (bob@example.com)');
[enhancements]
Elive:
- server_details() - Return all server(s) in a list context:
my @servers = Elive->server_details;
1.27 14th July 2012
[bug fixes]
Elive::Entity::Participant
- tightened up handling of reference structures (BUILDARGS method)
- fixed bug with handling of invited guest objects.
Elive::Entity::Group, Elive::Util::Type, dao-construct.t
- Fixed element_class declaration and tightened tests to match actual
content. Elements may be subgroups (group objects) or user-ids
(strings).
[testing]
- dao-errors.t - now checks content of error messages
- script-elive_lint_conf.t - tolerate perl 5.17.x depreciation warnings
(from XML::Simple <= 2.20).
- soap-preload.t - cross-check imported preload sizes
1.26 4th May 2012
[bug fixes]
Elive::Entity::ParticipantList, elive_raise_meeting:
- Fixed to align with uid (loginName) case sensitivity policies under
LDAP and latest (ELM 11.1.2). The case of the uid is preserved on
entry. But comparisons and uniqueness checks are case insensitive.
-- E.g. if a user has an LDAP uid of 'johnsmith'. Attempting to add
'JohnSmith' now works.
-- Note that after update, the returned participant list entry
contains the response uid, e.g. 'johnsmith'.
1.25 18th April 2012
[enhancements]
Elive::Connection
- Added timeout option. This is passed through to the SOAP::Lite proxy object.
[testing]
- soap-participants.t, soap-session-participants.t - stress tests now passing.
1.24 28th February 2012
[Tested against Blackboard Elive 11.1.2 / ELM 3.5.0.]
[testing]
- soap-connect.t - raised max_version to 11.1.2
- soap-participant-list.t - long participant / stress-tests are hanging
under LDAP. I marked these tests as TODO and added an alarm-timeout.
[bug fixes]
elive_query
- removed disused _get_user() function.
- direct 'connection error ...' message to STDERR
1.23 26th January 2012
[enhancements]
Elive::Entity
- added quote() method - for quoting list() filter arguments.
[bug fixes]
- elive_raise_meeting: correctly handle login and group names with
embedded single quotes, using Elive::Entity->quote().
1.22 5th January 2012
[security]
Elive::Util::_tidy_decimal():
- Untaint Ints once sanitised - for consistency with Enums and Bools.
[testing]
- Replaced Test::Builder->new with Test::More->builder
00load.t, soap-connect.t:
- now bail testing if any sub tests fail
soap-session-participants.t, soap-participant-list.t:
- reworked long participant list tests
1.21 3rd November 2011
[error handling]
Elive::Entity::Participant:
- now produces a warning if an attempt is made to assign a
moderator role to an invited guest.
Elive::DAO:
- Added taintness checks to the is_changed() method; which now dies
if any tainted data is detected.
- is_changed() now also warns if a primary key has been updated.
elive_raise_meeting, elive_query, elive_lint_config:
- Changed all scripts to report usage errors to STDERR and exit
on usage error with status code 2 [i.e. exit via pod2usage(2)].
elive_query:
- now dies immediately with status code 2, on command parsing error,
when being used non-interactively.
[testing]
- Replaced Test::Exception with Test::Fatal
1.20 15th October 2011
[upgrades]
- regressions from eLive 10.0.2, which is in limited release
(tested against ELM 3.3.2 - 3.3.5)
[security]
- Elive::DAO->set() - now dies when passed tainted data
[refactoring]
- elive_raise_meeting: replaced parse_participants() subroutine with
Elive::Entity::Participants->new(..., -moderators..., -others...);
1.19 28th September 2011
[bug fixes]
- Replaced YAML with YAML::Syck. This fixed some puzzling
compilation failures under 5.12.x and 5.14.2.
1.18 16th September 2011
[bug fixes]
Elive::Entity::Report
- changed ownerId from 'Int' to 'Str' for LDAP compatibility
- fixed delete() method to pass tests
[enhancements]
Elive::Entity::Report
- insert/update of report body (xml) is still unreliable. Progressed
slightly and updated 'Bugs & Limitations' pod.
- fixed/updated example in pod
[pod]
- Documented retrieve() method for meeting parameters, server
parameters, and participant lists
- Documented list() method for preloads
1.17 9th September 2011
[bug fixes]
- Elive::Entity::Participant - changed user, group, guest and
role properties to strictly hold only objects. For example,
user property was "isa => 'Elive::Entity::User|Str'" but is
now "isa => 'Elive::Entity::User'".
1.16 27th August 2011
[enhancements]
- Elive::Entity::Session - The ELM 3.x SessionInsert and SessionUpdate
commands often return a null response rather than an error message.
This was then leading to messy failures while unpacking. Catch
this earlier and return (as far as possible) a more meaningful
error message.
[refactoring]
- elive_query: cleaned up code for succinctness.
1.15 24th August 2011
[enhancements]
More work on inaccessible server details. This can indicate
that either the session manager or license manager are not running
and reachable.
- Elive::Connection::SDK - error message changed to "Unable to get
server details. Are all services running?"
[refactoring]
Elive is no longer a base class for Elive::DAO. This is largely for
Elive::StandardV2's benefit, which can now base itself directly on
Elive::DAO rather than Elive.
- Created new module Elive::DAO::_Base
- Changed parent class for Elive::DAO and Elive::DAO::_Array from
Elive to Elive::DAO::_Base
- Set $Elive::DAO::VERSION = '0.01'
1.14 21st August 2011
[bug fixes]
Improved detection and handling of inaccessible server details.
This is usually an indication that the Session Server (elive) is
not running or is unreachable.
- Elive::Connection::SDK - was dieing with 'Can't call method
"version" on an undefined value'. Now produces the more meaningful
'Unable to get server details is the Session Server (elive) running?'
- elive_query: now produces a warning and continues
- elive_raise_meeting: now dies with this error (unable to determine
version) unless the '-use elm2 or -use elm3' options are present.
[testing]
General improvements to error messages and handling when the server
details are inaccessible - the underlying problem should now be more
obvious to the tester.
1.13 19th August 2011
Improved support for sites running multiple session servers.
[enhancements]
- Elive::Connection::SDK - the server_details() method now returns a
list of values when used in a list context.
- Elive::DAO - avoid attempting to cache weak (keyless) entities. This
is for Elive::StandardV2's benefit, e.g. the serverVersions entity.
[pod]
- Elive::Entity::ServerDetails - documented the list() method. This
is useful for sites that are running multiple session servers.
[testing]
- script-elive_query.t - removed serverDetails singleton test (there
can be multiple servers).
- soap-session-participants.t - fixed planning
1.12 15th August 2011
[bug fixes]
Elive::DAO / Elive::Entity::Recording - the 'updateRecording' command
can return a null response (observed under ELM 3.3.4). Added code to
Elive::DAO to check for empty update responses and defensively refetch
the raw data to complete the update and update checks.
[documentation]
Elive::Entity::Recording - tidied up upload() and insert() pod
examples.
1.11 12th August 2011
[documentation]
Elive::Entity::InvitedGuest - the login name, by convention, should
be an email address. Changed pod and some tests to reflect this.
1.10 11th August 2011
[bug fixes]
- elive_raise_meeting: re-added default for meeting name (left out
with Elive 1.09).
1.09 10th August 2011
[compatibility]
Further support for Elluminate Live version >= 9.0.0 < 9.5.0
- elive_raise_meeting: Reintroduced automatic selection of session
class based on version (see rev 0.96), but this time against
earlier Elluminate Live! versions
-- Elive::Entity::Session (-user elm3) is the default for
Elluminate Live! >= 9.5.0
-- Elive::View::Session (-use elm2) is otherwise the default
[testing]
removed $TEST_AUTHOR check from all script-*.t tests
script-elive_raise_meeting.t - skip elm3 tests for Elluminate < 9.5
1.08 9th August 2011
[compatibility]
I regression tested against Elluminate 9.0 to check results.
- Recording and groups had some problems and failing tests
- I skipped all tests that involve Elive::Entity::Session. It
wasn't usable (as expected).
- Elive::View::Session worked pretty well, after one minor bug fix
(see below).
- I made some modifications to the soap-connect.t to treat 9.0 as the
mininum supported version and 9.5+ as the recommended version.
Under Elive 10.0.1+ the getUser command (Elive::Entity::User retrieve
method) matches on both userId and loginName.
- I relaxed the _readback() consistency checks to allow this. Also,
added tests to soap-user.t to capture this behaviour.
[bug fixes]
- Elive::Entity::Session - the retrieve() method now returns undef when
an attempt is made to access a non-existent meeting. This fix was
sufficient to pass all Elive::View::Session tests on Elluminate 9.0.
1.07 7th August 2011
[compatibility]
Some failures were detected when running soap-user.t and soap-group.t
tests against earlier ELM 3.0 / Elive 9.5 servers. These were caused
by attempting to parse 'domain' and 'groups' properties that were seen
in early 3.0 responses. Some changes were made to silently ignore
these properties.
- Elive::DAO, Elive::Util - add 'Any' datatype for ignored properties
- elive_query - ignore fields of type 'Any'
- Elive::Entity::User - declare 'groups' and 'domain' as type 'Any'
- Elive::Entity::User - declare 'domain' as type 'Any'
Will monitor these properties in new releases.
[bug fixes]
elive_query - reverted use of Try::Tiny based on perl 5.8.3 regressions
1.06 6th August 2011
[enhancements]
elive_raise_meeting - added -all_moderators option
[refactoring]
- renamed class Elive::Array to Elive::DAO::Array. The old class name
can still be referenced , but now produces a depreciated warning.
[testing]
- corrected occasional bogus failures (invalid ID generation) in
mock tests.
1.05 1st August 2011
[bug fixes]
Elive::Entity::Session - corrected handling of invited guests in
insert() and update () methods
- Corrected SOAP delimiter for invited guests list from ',' to ';'
- Disallow promotion of Invited guests to moderator, ie
$participant->is_moderator(1) has no effect when the participant
is a group ($participant->type == 1).
1.04 28th July 2011
[security]
Essential changes to improve general security and play better with
Perl's Taint mode. Elive now dies when any attempt is made to
construct a request from tainted strings.
- These changes will only have an impact when taint is enabled,
e.g. '-T' has been passed as a perl option.
- Taint checking is limited to outgoing strings (Str) in SOAP requests.
- Neither booleans (Bool) or integers (Int) are checked. However both
Int and Bool are sanitised when building SOAP requests.
- No attempt is made to apply taint checking to incoming data from
SOAP::Lite requests.
Elive::Util::_freeze() - Any attempts to freeze tainted strings
(type Str) while in taint mode now results in an error
Elive::DAO::list() - the 'filter' parameter is now frozen to avoid
bypassing taintness checks.
Elive::Entity::Recording, Elive::Entity::Preload - all SOAP
parameters are now frozen and taint checks are applied.
Dropped dependency on Storable::dclone; replaced with Clone::clone.
- Storable::dclone doesn't seem to honor taintness, whereas
Clone::clone does.
[enhancements]
Elive::Entity::Recording - added BUILDARGS method. 'size' is now
computed and doesn't need to be specified in upload()s.
Elive::Entity::ParticipantList - moved update checks to
_readback_checks() for the benefit of Elive::Entity::Session.
1.03 24th July 2011
[enhancements]
elive_raise_meeting - added '--dump=yaml' option
[pod]
A few minor corrections to Elive::Entity::Session pod.
1.02 21st July 2011
[pod]
Noted insert() and update() methods as undergoing depreciation for
meetings, meeting parameters, server parameters and participant lists.
[enhancements]
Elive::Entity::Participant
- added is_participant() setter/getter
Elive::Entity:Role
- added BUILDARGS() method and simplified coercements.
[bug fixes]
Elive::Entity::User
- corrected ineffective BUILDARGS() method.
1.01 20th July 2011
[bug fixes]
Elive::Entity::Preload
- removed legacy method Elive::Entity::Preload::_freeze(). This was
interfering with readback checks.
[documentation]
README
- Amendments to section 'Configuring SDK Access'
Elive
- Amendments to introductory example POD
1.00 19th July 2011
[Regression tested against Elm 3.0 / Elive 9.5 (earliest supported
version). Back-ported recently introduced Elive::Entity::Session
to Elm 3.0+. Other minor changes for compatibility.].
Elive
- amended introductory example POD to create a meeting using
Elive::Entity::Session (was using Elive::View::Session).
elive_raise_meeting
- now unconditionally uses Elive::Entity::Session as the default
class for raising meetings (-use elm3).
soap-recording.t
- skipped some failing download tests for Elm <= 3.0.
Elive::Entity::ServerParameters
- included some aliases for misspellings present in Elm 3.0 responses
(sic) ModertatorTelephonyAddress, ModertatorTelephonyPIN
[Minor refactorings]
- added _restful_url() method to Elive::DAO. Inherited and
overridden by Elive::Entity::Group.
[README]
- Manual configuration instructions amended - only needed for LDAP