diff -r 5b37998e522e -r 162c1de6545a web/lib/Zend/Service/LiveDocx.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/lib/Zend/Service/LiveDocx.php Fri Mar 11 15:05:35 2011 +0100 @@ -0,0 +1,415 @@ + 'myUsername', + * 'password' => 'myPassword', + * 'soapClient' => new Zend_Soap_Client('https://api.example.com/path/mailmerge.asmx?WSDL') + * ) + * ); + * {code} + * + * Replace the URI of the WSDL in the constructor of Zend_Soap_Client with + * that of your dedicated or licensed LiveDocx server. + * + * If you are using the public LiveDocx server, simply pass 'username' and + * 'password'. For example: + * + * {code} + * $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge( + * array ( + * 'username' => 'myUsername', + * 'password' => 'myPassword' + * ) + * ); + * {code} + * + * If you prefer to not pass the username and password through the + * constructor, you can also call the following methods: + * + * {code} + * $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge(); + * + * $phpLiveDocx->setUsername('myUsername') + * ->setPassword('myPassword'); + * {/code} + * + * Or, if you want to specify your own SoapClient: + * + * {code} + * $phpLiveDocx = new Zend_Service_LiveDocx_MailMerge(); + * + * $phpLiveDocx->setUsername('myUsername') + * ->setPassword('myPassword'); + * + * $phpLiveDocx->setSoapClient( + * new Zend_Soap_Client('https://api.example.com/path/mailmerge.asmx?WSDL') + * ); + * {/code} + * + * @param array|Zend_Config $options + * @return void + * @throws Zend_Service_LiveDocx_Exception + * @since LiveDocx 1.0 + */ + public function __construct($options = null) + { + $this->_credentials = array(); + $this->_loggedIn = false; + + if ($options instanceof Zend_Config) { + $options = $options->toArray(); + } + + if (is_array($options)) { + $this->setOptions($options); + } + } + + /** + * Set options + * One or more of username, password, soapClient + * + * @param $options + * @return Zend_Service_LiveDocx + * @since LiveDocx 1.2 + */ + public function setOptions(array $options) + { + foreach ($options as $key => $value) { + $method = 'set' . $key; + if (method_exists($this, $method)) { + $this->$method($value); + } + } + + return $this; + } + + /** + * Clean up and log out of LiveDocx service + * + * @return boolean + * @since LiveDocx 1.0 + */ + public function __destruct() + { + return $this->logOut(); + } + + /** + * Init Soap client - connect to SOAP service + * + * @param string $endpoint + * @throws Zend_Service_LiveDocx_Exception + * @return void + * @since LiveDocx 1.2 + */ + protected function _initSoapClient($endpoint) + { + try { + require_once 'Zend/Soap/Client.php'; + $this->_soapClient = new Zend_Soap_Client(); + $this->_soapClient->setWsdl($endpoint); + } catch (Zend_Soap_Client_Exception $e) { + require_once 'Zend/Service/LiveDocx/Exception.php'; + throw new Zend_Service_LiveDocx_Exception('Cannot connect to LiveDocx service at ' . $endpoint, 0, $e); + } + } + + /** + * Get SOAP client + * + * @return Zend_Soap_Client + * @since LiveDocx 1.2 + */ + public function getSoapClient() + { + return $this->_soapClient; + } + + /** + * Set SOAP client + * + * @param Zend_Soap_Client $soapClient + * @return Zend_Service_LiveDocx + * @since LiveDocx 1.2 + */ + public function setSoapClient(Zend_Soap_Client $soapClient) + { + $this->_soapClient = $soapClient; + return $this; + } + + /** + * Log in to LiveDocx service + * + * @param string $username + * @param string $password + * + * @throws Zend_Service_LiveDocx_Exception + * @return boolean + * @since LiveDocx 1.2 + */ + public function logIn() + { + if (!$this->isLoggedIn()) { + if (null === $this->getUsername()) { + require_once 'Zend/Service/LiveDocx/Exception.php'; + throw new Zend_Service_LiveDocx_Exception( + 'Username has not been set. To set username specify the options array in the constructor or call setUsername($username) after instantiation' + ); + } + + if (null === $this->getPassword()) { + require_once 'Zend/Service/LiveDocx/Exception.php'; + throw new Zend_Service_LiveDocx_Exception( + 'Password has not been set. To set password specify the options array in the constructor or call setPassword($password) after instantiation' + ); + } + + if (null === $this->getSoapClient()) { + $this->_initSoapClient($this->_wsdl); + } + + try { + $this->getSoapClient()->LogIn(array( + 'username' => $this->getUsername(), + 'password' => $this->getPassword(), + )); + $this->_loggedIn = true; + } catch (Exception $e) { + require_once 'Zend/Service/LiveDocx/Exception.php'; + throw new Zend_Service_LiveDocx_Exception( + 'Cannot login into LiveDocx service - username and/or password are invalid', 0, $e + ); + } + } + + return $this->_loggedIn; + } + + /** + * Log out of the LiveDocx service + * + * @throws Zend_Service_LiveDocx_Exception + * @return boolean + * @since LiveDocx 1.2 + */ + public function logOut() + { + if ($this->isLoggedIn()) { + try { + $this->getSoapClient()->LogOut(); + $this->_loggedIn = false; + } catch (Exception $e) { + require_once 'Zend/Service/LiveDocx/Exception.php'; + throw new Zend_Service_LiveDocx_Exception( + 'Cannot log out of LiveDocx service', 0, $e + ); + } + } + + return $this->_loggedIn; + } + + /** + * Return true, if session is currently logged into the backend server + * + * @return boolean + * @since LiveDocx 1.2 + */ + public function isLoggedIn() + { + return $this->_loggedIn; + } + + /** + * Set username + * + * @return Zend_Service_LiveDocx + * @since LiveDocx 1.0 + */ + public function setUsername($username) + { + $this->_credentials['username'] = $username; + return $this; + } + + /** + * Set password + * + * @return Zend_Service_LiveDocx + * @since LiveDocx 1.0 + */ + public function setPassword($password) + { + $this->_credentials['password'] = $password; + return $this; + } + + /** + * Set WSDL of LiveDocx web service + * + * @return Zend_Service_LiveDocx + * @since LiveDocx 1.0 + */ + public function setWsdl($wsdl) + { + $this->_wsdl = $wsdl; + return $this; + } + + /** + * Return current username + * + * @return string|null + * @since LiveDocx 1.0 + */ + public function getUsername() + { + if (isset($this->_credentials['username'])) { + return $this->_credentials['username']; + } + + return null; + } + + /** + * Return current password + * + * @return string|null + * @since LiveDocx 1.0 + */ + public function getPassword() + { + if (isset($this->_credentials['password'])) { + return $this->_credentials['password']; + } + + return null; + } + + /** + * Return WSDL of LiveDocx web service + * + * @return Zend_Service_LiveDocx + * @since LiveDocx 1.0 + */ + public function getWsdl() + { + return $this->_wsdl; + } + + /** + * Return the document format (extension) of a filename + * + * @param string $filename + * @return string + * @since LiveDocx 1.0 + */ + public function getFormat($filename) + { + return strtolower(substr(strrchr($filename, '.'), 1)); + } + + /** + * Return the current API version + * + * @return string + * @since LiveDocx 1.0 + */ + public function getVersion() + { + return self::VERSION; + } + + /** + * Compare the current API version with another version + * + * @param string $version (STRING NOT FLOAT) + * @return int -1 (version is less than API version), 0 (versions are equal), or 1 (version is greater than API version) + * @since LiveDocx 1.0 + */ + public function compareVersion($version) + { + return version_compare($version, $this->getVersion()); + } +} \ No newline at end of file