Revision history for Elive

0.78    8th December 2010
        - Removed bogus dependency on IO::Prompt. Causing unneccessary
          build problems on Windows.

0.77    8th December 2010
        - Added tests on setting big meeting participant lists. Bug fixed
          in pending Elluminate 10.0.2 release.
        - Downgraded  Term::Readline::Perl dependency from required to
          recommended. alternatives include Term::Readline::TTYtter

0.76    10th November 2010
        work on elive_query:
        - added -adapter option. For impending integration with
          Elive::StandardV2. Added data_classes() method to Elive::DAO for
          discovery of entity classes.
        - IO::Interactive::is_interactive() dieing when executed from debian
          5 cron (error opening /dev/tty). Now evaled; assume non-interactive
          on eval error.

0.75    28th October 2010
        elive_query: Extended the range of data that can be selected for
        meetings. This includes data for meeting parameters and server
        parameters. Also now selectable are associated participants,
        recordings and preloads.

	    select name,participants,url from meeting where id = 1234567890123

        In particular, 'select ** from meeting' will retrieve all data from
        Meeting, MeetingParameters and ServerParameters. This involves 2
        secondary SOAP calls to retrieve associated data. Slow, but thorough.

0.74    18th October 2010

        Bug Fixes:
        - Elive::Entity::Preload - Make sure that the preload has an 'ownerId'
          defined. It seems to be required for preloads to function properly.

0.74_2  14th October 2010

        Support for LDAP groups in participant lists
        - Elive::Entity::ParticipantList has been significantly refactored.
          It now correctly interprets the 'type' property (introduced ~ ELM
          v3.0) and supports both 'user' and 'group' properties.
        - Group support also added to elive_raise_meeting - see pod

        Bug fixes:
        - Elive::Entity::Meeting: Added 'adapter' property. Interesting
          vlaues include: 'default' & 'standardv2'.

        Other Enhancements:
        - General support for credentials embedded in urls, E.g:
          http://user@host.org/inst

0.74_1  7th October 2010

        Essential changes to implement Elive::StandardV2 - A new companion
        CPAN module that implements bindings to ELM Standard API Bridge V2.

        The classes in this distribution that referenced by ELive::API are
        Elive::Connection::API, Elive::Array, Elive::DAO and
        Elive::DAO::Singleton.

        - Elive::Entity now only contains ELM specialisations. The generic
          portion has been moved to create a new base class, Elive::DAO.
	- Added new mixin class Elive::DAO::Singleton
        - Add subclasses Elive::Connection::SDK & Elive::Connection::API
        - Elive::_check_for_errors moved to Elive::Connection
        - Elive known_adapter() && check_adapter() methods replaced by
          known_command() and check_command() methods in Elive::Connection::SDK
          and Elive::Connection::API

0.73    3rd September 2010
        - Added script tests to manifest
        - Checked against Elluminate 10.0.1 - passed!
        - Starting investigation into extending this module to also support the 
          Elluminate V2 API, via the SOAP endpoint: http://site-name.com/instance/v2/webservice.event.

0.72    13th August 2010

        - Elive::Entity::Group: added implicit casting of user objects in
          member lists. The follow now works as you would expect:

  	      my $bob = Elive::Entity::User->get_by_loginName('bob');

	      my $group = Elive::Entity::Group->insert({
		    name => 'Elluminati',
		    members => [111111, 222222, 'alice', $bob ],
	      });

        - Added script tests (elive_query, elive_raise_meeting,
          elive_lint_config).

        - Elive::Struct Provided method aliases for existing entity
          level aliases. For example $meeting->private is now equivalent
          to $meeting->privateMeeting.

0.71    21st June 2010
        - Fixed elive_query (loading of Elive::Connection) from last
          change. Added a test for this.

0.70    21st June 2010
        Support for Elluminate 9.7 => 10.0
        - New Preload properties: isProtected and isDataAvailable.
        - New Recording properties: sessionInstanceId, startDate and endDate
        - Accommodated some newly introduced bugs/changes:

          -- User get_by_loginName() is no longer case insensitive

          -- Preloaded whiteboard files lost extension during insert/update
             (introduction.wdb => introduction).

             Note: attempted insert/update of files with no extension will
             crash the SOAP request with the error message:

                  'String index out of range: -1'

              (have put in a ticket to Elluminate help desk).

0.69    11th June 2010

        - Raised SOAP::Lite dependency 0.69 => 0.712. This eliminates some
          encoding failures under old perls (5.8.8-) and slightly older
          versions of SOAP::Lite. Encoding/decoding of HTML entities now
          properly handled. Thanks SOAP::Lite maintainers!

        - Minor refactorings to Elive codebase in order to pass
          Test::Perl::Critic severity level 4 tests (00c-critic.t).

          -- Most commonly, Atomic parsing of subroutine arguments. E.g.
             what was:

	        sub disconnect {
                    my $class = shift;
                    my %opt = @_;
                    # ...
                }

             After refactoring becomes:

                sub disconnect {
                    my ($class, %opt) = @_;
                    # ....
                }

	Second most common refactoring was adding explicit final 'return'
        to subroutines. For gory details, see svn commit of rev 377.

0.68    2nd June 2010
        - Added new entity class: Elive::Entity::Report.
        - Bug fix: Entity data was being returned with encoded
          entities. HTML::Entities::decode_entities is now used.

0.67    28th May 2010
        - Added Elive::Entity::Recording::upload() method.

0.66    22nd May 2010

        - Moved check of property checks from Elive::Entity to
          Elive::Struct. Made it a moose /mouse BUILDARGS method.

        - Added 'type' field to participants method. Newly discovered
          due to above BUILDARGS check.

        - Recordings do not have to be associated with a Meeting. Made
          RecordingId optional.

        - Implicit casting of objects to ids. For example, you can now
          write:

             Elive::Entity::Meeting->new({facilitatorId => $user,
                # ...
             });

           Instead of:

             Elive::Entity::Meeting->new({facilitatorId => $user->userId,
                # ...
             });

0.65    17th May 2010
        - Hide participants in elive_query script - not a retrievable entity.
        - pod tweaks.

0.64    11th March 2010
        - Elive::Entity::Group changed GroupId from Int to Str. Can be
          non-numeric when groups are configured for LDAP.

0.63    7th March 2010
        - Fixed usage/error messages in Elive::Entity '_readback' method.
        - RestrictedMeeting flag appears inoperative in Elm 9.7. Added a
	  test in 22-entity-meeting.t to catch this in 9.8 onwards.
        - Added -restricted option to elive_raise_meeting. Will require
          the above Elm fix to become effective.

0.62    16th February 2010
        Changes to README doco re troubleshooting and meeting pod.

0.61    26th January 2010
        elive_raise_meeting support for Elluminate 9.7 release
        - Modified user search/validation filter for Elm 3.2 compatibility.
        - Added 'quit' command. Also 'describe'; alias for 'show'.

0.60    25th January 2010
        - Added -occurs option to elive_raise_meeting script
        - Further tweaks to README

0.59    23rd January 2010
        - Updated README file to reflect Elluminate 9.5+ configuration.
        - Took out Elive->collections method. Easily derivable and only
          used in testing.

0.58    14th January 2010
        Support for Elluminate 9.7 release:
        - Added new field 'dn' to Elive::Entity::Group - LDAP domain name.
        - Added Elive::Entity::Group::_thaw(). This was required to handle
          modified output from Group DAO. We now get a single result with
          all members separated by ';', instead of a list of individual
          members.
        - Fix in Elive::Entity::_thaw(). It was modifying parts of the input
          struct. Now makes a copy on entry via Storable::dclone.
        - added 27-soap-group.t - group specific tests.

0.57    5th January 2010
        - Altered tests to pass Mouse 0.40 constraints, '+002' is not
          considered a valid 'Int'(?). Transient Mouse bug?
        - Elive::Entity - Added a warning for attempted use of is_changed on
          none database objects.

0.56    4th January 2010
        - Objects are now automatically stringified on all SOAP calls.
            For example:
             Elive::Entity::Meeting->insert({
                    facilitatorId => $user->userId,
	            # ...
	      });

            Can now be written:
             Elive::Entity::Meeting->insert({
                    facilitatorId => $user,
                    # ...
             });

        - Improved mock testing coverage. Now able to run much of
	  the meeting and recording tests offline.
        - Pod/doco improvements. In particular, show a meeting insert
          in the introductory example.
        - Removed some unreachable code from elive_raise_meeting.

0.55    21st December
        - Improved & corrected SOAP mock tests for 26-soap-user.t
        - Corrected handling of get_by_LoginName when user not found.
          fixed/added sanity checks on deleting login or admin users.

0.54    19th December
        - Elive::Entity::User - Fixed delete logic. In particular,
          fixed/added sanity checks on deleting login or admin users.

0.53_1  18th December
        This release introduces basic mock testing of elive Connections:
        - Added t::Elive::MockConnection and t::Elive::MockSOM:
        - The following tests can now run on mock or live connections:
          20-soap-connect.t, 21-soap-entities.t and 29-multi-connect.t
        - Added mock only user insert/update tests: 26-soap-user.t
        - Elive::Entity::User - Fixed password update bugs.

0.53    14th December
        Revised some tests failing test for mouse 0.43. Use strings for
        long numerics. E.g. '1256168907389', instead of 1256168907389.

0.52    1st December
        changed 'use UNIVERSAL' to 'require UNIVERSAL' to avoid calling
        UNIVERSAL::import method. Depreciated under perl 5.11.2+.

0.51    13th November
        Changes to support Elluminate Live 9.6#3:
        - Added 'sasId' property to Elive::Entity::Recording

0.50    10th November
        Changes to support Elluminate Live 9.6#2:
        - Elive::Entity::Preload: Added support for Elluminate Plan!
          preloads. Preload types are now: 'media', 'whiteboard', 'plan'.

0.49    6th November
        Changes to support Elluminate Live 9.6:
        - Ensure the SOAP request root is strictly formattted as:
          <request xmlns:m="http://www.soapware.org">...</request>
        - Altered Elive::check_for_errors() method to detect error
          messages passed as additional return parameters.

0.48_1  3rd November
        - Replaced body of t/00a-compile.t with Test::Strict.

0.48    29th October
        - Fix for t/00a-compile.t; was failing to load scripts.

0.47    29th October
        - Gave each script a namespace: 'Elive::script::elive_query', etc.
        - elive_query: Now explicitly loads each entity class:
          'use Elive::Entity::Group', etc.

0.46    28th October
        - Remove Mouse 'get_attribute_map()' usage. Depreciated and
          producing warnings under Mouse 0.40+.

0.45    26th October
        - Fixed syntax error in elive_raise_meeting.

0.44    22nd October
        - Fixed a bug that was causing erroneous read-back errors on
          ParticipantList inserts and updates.

0.43    21st October
        - Reinstated ParticipantList 'insert' method.

0.42    8th October
        - elive_raise_meeting: Added -invites flag for in session invitations.
        - Elive::Entity::update() - fixing handling of connection option.

0.41    12th September
        - elive_query: Fixed connection/reconnection logic.
        - Fixed passing through of connection on some utility retrieval
          methods, e.g. Elive::Entity::Meeting's 'parameters' method.

0.40    9th September
        Some minor changes for Elluminate Live 9.5.1 release:
        - Added displayName argument to buildJNLP method
        - Meeting deletion now just sets the deleted attribute on meetings.
          The meeting, server parameters, and meeting parameters remain
          retrieveable. Adjusted tests in t/22-meeting.t.

0.39    30th August
        - Fixed erroneuous readback error when saving untrimmed strings,
          e.g. $meeting->uppdate({name => 'abc '}).
        - Removed Elive::Entity::ParticipantList->insert() method for
          consistancy with meeting parameters and server_details. Please
          use 'retrieve" & 'update' instead.
        - Fixes to Elive::Entity::ParticipantList update logic.

0.38    22nd August
        - Elive::Entity::MeetingParameters. Recording status enumerations
          changed from from upper to lowercase. I.E. they are now: 'off',
          'on', 'remote'.
        - 'elive_raise_meeting': corrected '-recording' flag. Now
          accepts 'on', 'off', 'auto'.
        - 'elive_query': align output columns for readability. Also
          allow '*?' selection to supress output of empty columns.
        - Added tests to t/25-soap-recording.t

0.37    6th August
        - Added -permissions and -supervised options for 'elive_raise_meeting'
        - Tweaks to Elive::Util::string()

0.36    4th August
        - Added Elive Live 9.5 (ELM 3.0) support for serverdetails
          fields sessions, serverStatus and iNetAddress. These are
          currently only supported as references, not blessed objects.
        - Also added support for 'Ref' datatypes to handle the above.
        - Widthdrew $ELIVE_FORCE flag (introduced in 0.32).

0.35    3rd August
        - Made users handling case-insensitive - match LDAP policy.
          Altered entity fetch consistancy checks to be case insensitive
          to avoid spurious consistancy check failures.

0.34    28th July
        - fixes and amendments to pod doco and README file
        - fixed a potential problem with ParticipantList update

0.33    22nd July
        - added tests for freeze/thaw aliases. Fixed some potential
          problems with alias usage in Elive::Enity::_freeze & _thaw.

0.32    18th July
        Getting ready for Elluminate Live release 9.5.y (y > 0)
        - elive_lint_config now supports 9.5 configuration files
        - added Elive::Struct::_alias method to support data aliasing.
        - new meeting properties: allModerators restrictedMeeting
        - new serverParameters properties: enableTelephony, telephonyType,
          {moderator|participant|server}TelephonyAddress,
          {moderator|participant|server}TelephonyPIN, redirectURL
        - new meetingParameterProperties: followModerator, videoWindow,
          recordingObfuscation, recordingResolution, profile
        Note: elluminate release 9.5.0 is not yet supported in this version.
        If you want to try to run against it, set the environment variable
        $ELIVE_FORCE=9.5.0. Watch for upgrades, both for this module and
        for Elluminate.

0.31    2nd July
        - Some work on pod doco.
        - Moved Elive::_get_test_auth() to t::Elive::auth()

0.30    27th June
        - 'elive_raise_meeting' - checkall participants ae valid before
           attempting to created meeting

0.29    24th June
        - 'elive_raise_meeting' now converts dates via Date::Parse:str2time().
        - added pod for Elive::Connection 'url' and 'soap' methods. 

0.28    22nd June
        - Added Elive::Array::Participant
          -- Tweaked coercement rules in Elive::Entity::ParticipantList
          -- $participants->add(...) now works per pod doco.
        - Elive::Entity::update: changed $self->_readback to $class->_readback

0.27    20th June
        - Added 'participant_list' method to Elive::Entity::Meeting
        - Corrected Elive::Entity::ParticipantList insert of empty list.

0.26    13th June
        - Increased tolerance with dealing with out of bounds data on
          SOAP retrieval. In particular made 'recordingStatus' and media
          'type' properties case insensitive. These now produce warnings
          rather than carping.
        - Added 'parameters' and 'server_parameters' utility methods
          to Elive::Entity::Meeting.

0.25    4th June
        - added server version checks and warnings to 20-soap-connection.t
        - pod doco changes.

0.24    3rd June
        - Corrected 'elive_query' output for showing structure of
          entities with nested structure, E.g. 'show ParticipantList'.

0.23    29th May
        - Corrected handling of the 'userIP' argument to the
          'buildJNLP' method of Elive::Entity::Recording.
        - Added 'is_participant' and 'list_recordings' methods to
          Elive::Entity::Meeting

0.22    28th May
        - Proof read and refined pod doco.
        - Sort adapters in 'elive_lint_config' script.

0.21    25th May
        - Allow non-numeric Recording primary keys.

0.20    24th May
        - Added HiResDate type for Elluminate dates (meeting start and
          end times + recording time).

0.19    19th May
        - Added 'reset' method to Eive::Entity::ParticipantList
        - Treat an empty participant list as an implied reset, eg:
          $participant_list->update({participants => []});
        - Elive::Entity::Group now also accepts semicolon separated
          strings for group members, eg.
            Elive::Entity::Group->insert('my group','david;sue');
            Elive::Entity::Group->insert('my group',[qw(david sue)]);

0.18    15th May
        - Fixed problems with connecting to server from
          ActiveState/Win32 platforms.

0.17    14th May
        - Added 'buildJNLP' method to Elive::Entity::Recording
        - Widthdrew Elive::Entity '_insert_class' method.

0.16    12th May
        - Added 'buildJNLP' method to Elive::Entity::Meeting
        - Elive::Entity::User user ids can be non-numeric under LDAP!
          Changed schema, tests & doco to accomodate this.

0.15    9th May
        - Elive::Entity::ParticipantList constructors now accepts strings
          and arrays of strings as constructors, egs:
            Elive::Entity::ParticipantList->insert($mtg,'12345=2;456778');
            Elive::Entity::ParticipantList->insert($mtg,['12345=2',456778]);
        - Added a number of tests, in particular testing and debugging
          multiple connections.
        - Widthdrew redundant Elive::Entity 'retrieve_all' method.

0.14    6th May
        - Corrected elive_raise_meeting -private & -seats options

0.13    5th May
        - login & server_details now stored with connection handle. This
          is a prelude to allowing multiple active SOAP connections.
        - Added -use_preload option to elive_raise_meeting script.

0.12    2nd May
        - Added recording 'download' and 'web_url' methods
        - Omit null properties on retrieval. Avoids Mouse constraint errors.
        - Corrections to 'list_user_meetings_by_date' method

0.11    30th April
        - Moved 'list_meeting_preloads' method from meetings to preloads
        - Corrected 'check_preload' method for meetings

0.10    28th April
        - Added support for recurring meetings
        - Added Elive::Entity::ServerParameters (isa table for meetings)
        - Extra Parameters added to elive_raise_meeting script:
            -upload     -- upload a whiteboard/media file preload
            -import     -- import a server-side whiteboard/media file preload
            -max_talkers n -boundary m -recording on|off|auto

0.09    25nd April
        - Beefing up test suite. In particular added optional SOAP tests.

0.08    22nd April
        - Fixed read-back bug in entity updates

0.07    21st April
        - Added 'upload' and 'download' methods for Elive::Entity::Preload

0.06    18th April
        - several fixes to 'elive_raise_meeting' script

0.05    17th April
        - Removed Elive stringify overload for Elive objects
        - Added tests for unpack/freeze/thaw. Some resultant bug fixes.

0.04    16th April
        - Elive::Util::parse_type compatibility with Mouse 0.21+

0.03    15th April
        - Bug fixes and enhancements to Participant Lists
        - Enhancements to elive_query

0.02    14th April
        Added
        - Elive::Entity::Preload
        - elive_raise_meeting (script)
        - elive_lint_config (script)

0.01    16th March 2009
        First version.

