/**
  * __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://';
 }
Exemplo n.º 2
0
/**
 * @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";
    }
}