########################################################################################################################
                              PHP Client Library for Mediasite External Data Access (EDAS)

########################################################################################################################
Installation
########################################################################################################################
Unzip files to a location on your server. No configuration is necessary; everything is determined at runtime from the
contents of the requests.

The SOAP client and proxy are located in http://yourserver.tld/folder/EdasPHPClient. Include this folder in your PHP
    Edas application, and require edasproxy_client.php, which will handle all other required files

See http://yourserver.tld/folder/EdasPHPDocumentation for the documentation (still a work in progress).

See http://yourserver.tld/folder/EdasPHPClientSamples.php for brief examples of a few of the available methods.

The Edas PHP Client Library assumes that SoapClient [http://php.net/manual/en/class.soapclient.php] is installed.

########################################################################################################################
Usage Notes
########################################################################################################################
* The overall model is to instantiate ExternalAccessClient providing the EDAS service url for your mediasite installation
    and an optional user ticket from the Login method and an optional username of a user to impersonate. The ticket and
    impersonation user will be cached in this instance of the client and may be cached by your application and supplied
    to new instances of the client.
* Once the client is created, simply call the appropriate methods of the client; the client and proxy will generate the
    appropriate classes to send to the SoapClient.
* For authentication purposes you must first retrieve a user ticket from the Login method. On Login the client will
    cache the resulting ticket (and Impersonation Username, if provided) Any following calls to client methods made on
    that instance of the client will use the cached user ticket if one is not provided.
* After the initial request's client instance goes out of scope, you can re-authenticate by instantiating a new client
    using a previously retrieved user ticket, which will be cached in that client instance for the duration of the
    request.
* User tickets are valid for 2 hours by default and can be renewed by calling QueryIdentityTicketProperties, supplying
    the ticket to renew and passing true to the RenewTicket parameter with an appropriate MinutesToLive value. Any
    authenticated request should verify that the user ticket is unexpired and appropriately handle cases where this is
    not the case
* Alternatively you can provide a user ticket on each subsequent method call. This ticket will not be cached.
* When Login is processed you may provide a user to impersonate. That name will be cached for the duration of this
    request, and can also be provided as a parameter for most method calls. The Impersonation User's permissions
    are used for all requests where an ImpersonationUsername is provided or where the client has cached that value.
* The documentation is not complete, and many calls are documented as requiring all parameters while in many cases this
    is not strictly true. When in doubt, the EDASDocumentation chm file available at [] may provide more insight.
* When relying on default values for optional parameters (including null), keep in mind that PHP's SoapClient passes an
    empty string instead of null. This will cause problems when the datatype is an Enumeration or a non-string
* Regarding Enumerations: The members of the SonicFoundry.Mediasite.Edas.PHPProxy Enumerations package/subpackage (see
    http://yourserver.tld/folder/Docs/SonicFoundry-Mediasite-Edas-PHPProxy/Enumerations/_edasproxy_enumerations.php.html)
    are helper classes designed to ensure that only valid values are passed to the corresponding methods. When
    parameters of those types are required, always pass them statically, i.e. WeekDay::Monday or
    array(WeekDay::Monday, WeekDay::Tuesday) to guarantee that your using an appropriate enumeration value.
* Regarding MediasiteIds: most entities within Mediasite are uniquely identified by a GUID id, and this property is a
    required parameter of many EDAS API calls. In most cases, EDAS will accept either GUID-formatted ids (with hyphens)
    or string-formatted ids (without hyphens). Neither format may contain braces.  The notable exception to this is
    where Role Ids are required - those are not MediasiteIds and must be provided in GUID form.

########################################################################################################################
Version History
########################################################################################################################
* 6.0.2     New PHP Proxy for Mediasite External Data Access Service (Edas)
* 6.0.6     Additional Samples
            Address impersonation issue first found in Mediasite >= 6.0.3
* 6.1.3     New methods for Mediasite 6.1.3:
                *   DeleteFolder
                *   CheckJobStatus
                *   CreateTemplateLike
                *   AddTagsToMediasiteObject and QueryTagsByMediasiteId
                *   Create, Update, Delete, and Query MediasiteKeyValues (several signatures)
                *   Create, Update, and Query User Profiles (several signatures)
            Update documentation
            Integration test suite
* 6.1.5     New methods:
                *   UpdatePresentationContentDetails
                *   DeletePresentationContent
                *   QueryPresentationUsageById
                *   QueryUserProfileDetailsByCriteria
                *   QueryUserProfileDetailsById
                *   QueryMediasiteKeyValuesByCriteria
                *   CreatePresentationExternalLink
                *   CreatePresentationForMediaUpload
                *   CreateMediaUpload
* 6.1.7     New method: RefreshReportData
            Add capacity to create shared subfolders
* 6.1.11    New methods:
                *   CreateRegistration 
                *   DisableRegistration 
                *   AddRegistrantsToResource 
                *   RemoveRegistrantsFromResource 
                *   QueryResourceRegistrants 
                *   CreateMp3Content 
                *   CreateMediaImportProject 
                *   QueryContentImportProjectProgress 
* 6.1.13    New methods:
                *   QueryUserViews
                *   QueryUserPresentationViews
                *   QueryUserIpAddressViews
                *   QueryPresentationIpAddressDetails
                *   QueryUserPresentationDetails
