/** * __construct * * constructor for ZimbraAdmin API * * @since version 1.0 * @access public * @param string $username username to use in the construction of object * @param string $which type to construct, defaults to prod */ public function __construct($username = '******', $which = 'prod') { $file = "other/zimbra" . ($which == 'prod' ? '' : '_dev'); $credentials = PSUDatabase::connect($file, 'return'); $this->_admin_username = $credentials['username']; $this->_admin_password = $credentials['password']; parent::__construct($username, $which); $this->_protocol = 'https://'; }
/** * @method * * Upload File/Document to Zimbra Server * * @name uploadZimbraFile * @label Upload File/Document to Zimbra Server * * @param string | $ServerUrl | Server name and port where Zimbra exists | zimbra.server:port * @param string | $username | Valid username to connect to Zimbra server * @param string | $preAuthKey | Server Key for SSO authentication * @param string | $folderName | Folder Name * @param string | $fileLocation | Absolute path of the File to be uploaded. * * @return string | $result | Response * */ function uploadZimbraFile($ServerUrl, $username, $preAuthKey, $folderName, $fileLocation) { $header_array = array("ENCTYPE" => "multipart/form-data"); $file = $fileLocation; $oZimbraObj = new Zimbra($username, $ServerUrl, $preAuthKey); $connectResult = $oZimbraObj->connect(); $sAuthToken = $oZimbraObj->auth_token; $cookie = array('ZM_AUTH_TOKEN' => $sAuthToken, 'ZM_TEST' => true); $cookie = 'ZM_AUTH_TOKEN=' . $sAuthToken . '; ZM_TEST=' . true; $url = "http://{$ServerUrl}/service/upload?fmt=raw"; $params = array('uploadFile' => "@{$file}"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); //curl_setopt($ch, CURLOPT_VERBOSE, 1); curl_setopt($ch, CURLOPT_COOKIE, $cookie); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $params); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_BINARYTRANSFER, true); curl_setopt($ch, CURLOPT_COOKIESESSION, true); curl_setopt($ch, CURLOPT_FRESH_CONNECT, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOPROGRESS, false); curl_setopt($ch, CURLOPT_VERBOSE, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $header_array); //Apply proxy settings $sysConf = System::getSystemConfiguration(); if ($sysConf['proxy_host'] != '') { curl_setopt($ch, CURLOPT_PROXY, $sysConf['proxy_host'] . ($sysConf['proxy_port'] != '' ? ':' . $sysConf['proxy_port'] : '')); if ($sysConf['proxy_port'] != '') { curl_setopt($ch, CURLOPT_PROXYPORT, $sysConf['proxy_port']); } if ($sysConf['proxy_user'] != '') { curl_setopt($ch, CURLOPT_PROXYUSERPWD, $sysConf['proxy_user'] . ($sysConf['proxy_pass'] != '' ? ':' . $sysConf['proxy_pass'] : '')); } curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:')); } if (!($response = curl_exec($ch))) { return "Upload error. Connection Error"; } //G::pr($response); $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $result['header'] = substr($response, 0, $header_size); $result['body'] = substr($response, $header_size); $result['http_code'] = curl_getinfo($ch, CURLINFO_HTTP_CODE); $result['last_url'] = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL); $aString = array(); $aExplode = explode(",", $result['body']); $uploadID = substr($aExplode[2], 1, -2); curl_close($ch); // gettin FOlder ID $FolderResult = $oZimbraObj->getFolder($folderName); if (isset($FolderResult['id'])) { $sFolderID = $FolderResult['id']; } else { $sFolderID = $FolderResult['folder_attribute_id']['0']; } $fileNamePath = $fileLocation; $fileName = basename($fileNamePath); $docDetails = $oZimbraObj->getDocId($sFolderID, $fileName); if ($docDetails) { $docId = $docDetails['doc_attribute_id'][0]; $docVersion = $docDetails['doc_attribute_ver'][0]; } $uploadResult = $oZimbraObj->upload($sFolderID, $uploadID, $docVersion, $docId); if (isset($uploadResult['error'])) { return $uploadResult['error']; } else { return "The file has been uploaded Successfully"; } }