connect(); if (!$connectionResult) { return "Check userName or Server URL"; } $aXmlArray = array(); $aXmlArray = $zimbra->getFolder($folderName); $sXmlArray = @G::json_decode(@G::json_encode($aXmlArray), 1); $serializeResult = serialize($sXmlArray); // serializing the Array for Returning. return $serializeResult; } /** * @method * * Get Contact List * * @name getZimbraContactList * @label Get Contact Lists from Zimbra Server * * @param string | $ServerUrl | Server name and port where Zimbra exists | http://localhost:7070/service/soap * @param string | $username| Valid username to connect to Zimbra server * @param string | $preAuthKey | Server Key for SSO authentication * * @return string | $result | Response * */ function getZimbraContactList($ServerUrl, $username, $preAuthKey) { $zimbra = new Zimbra($username, $ServerUrl, $preAuthKey); $connectionResult = $zimbra->connect(); if (!$connectionResult) { return "Check userName or Server URL"; } $sXmlArray = array(); $sXmlArray = $zimbra->getContacts(); $aXmlArray = @G::json_decode(@G::json_encode($sXmlArray), 1); $serializeResult = serialize($aXmlArray); // serializing the Array for Returning. return $serializeResult; } /** * @method * * Get Task List * * @name getZimbraTaskList * @label Get Task Lists from Zimbra Server * * @param string | $ServerUrl | Server name and port where Zimbra exists | http://localhost:7070/service/soap * @param string | $username| Valid username to connect to Zimbra server * @param string | $preAuthKey | Server Key for SSO authentication * * @return string | $result | Response * */ function getZimbraTaskList($ServerUrl, $username, $preAuthKey) { $xXmlArray = array(); $xXmlArray1 = array(); $zimbra = new Zimbra($username, $ServerUrl, $preAuthKey); $connectionResult = $zimbra->connect(); if (!$connectionResult) { return "Check userName or Server URL"; } $sXmlArray = array(); $sXmlArray = $zimbra->getTasks(); $aXmlArray = @G::json_decode(@G::json_encode($sXmlArray), 1); $serializeResult = serialize($aXmlArray); // serializing the Array for Returning. return $serializeResult; } /** * @method * * Get Appointment List * * @name getZimbraAppointmentList * @label Get Appointment Lists from Zimbra Server * * @param string | $ServerUrl | Server name and port where Zimbra exists | http://localhost:7070/service/soap * @param string | $username| Valid username to connect to Zimbra server * @param string | $preAuthKey | Server Key for SSO authentication * * @return string | $result | Response * */ function getZimbraAppointmentList($ServerUrl, $username, $preAuthKey) { $xXmlArray = array(); $xXmlArray1 = array(); $zimbra = new Zimbra($username, $ServerUrl, $preAuthKey); $connectionResult = $zimbra->connect(); if (!$connectionResult) { return "Check userName or Server URL"; } $sXmlArray = array(); $sXmlArray = $zimbra->getAppointments(); $aXmlArray = @G::json_decode(@G::json_encode($sXmlArray), 1); $serializeResult = serialize($aXmlArray); // serializing the Array for Returning. return $serializeResult; } /** * @method * * Create Folder Name and Attribute * * @name createZimbraFolder * @label Create Specified Folder with Attributes in Briefcase Tab * * @param string | $ServerUrl | Server name and port where Zimbra exists | http://localhost:7070/service/soap * @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 | $color | Color of Folder * * @return string | $result | Response * */ function createZimbraFolder($ServerUrl, $username, $preAuthKey, $folderName, $color) { $serializeOp = array(); $serializeOp = array('folderName' => $folderName, 'color' => $color); $serializeOp1 = serialize($serializeOp); $zimbra = new Zimbra($username, $ServerUrl, $preAuthKey); $connectionResult = $zimbra->connect(); if (!$connectionResult) { return "Check userName or Server URL"; } $sXmlArray = $zimbra->addFolder($serializeOp1); if ($sXmlArray) { return "Folder Created succesfully"; } else { return "A folder with name " . $folderName . " already exists."; } } /** * @method * * Create Contacts * * @name createZimbraContacts * @label Create Contacts in Address Book * * @param string | $ServerUrl | Server name and port where Zimbra exists | http://localhost:7070/service/soap * @param string | $username | Valid username to connect to Zimbra server * @param string | $preAuthKey | Server Key for SSO authentication * @param string | $firstName | First Name * @param string | $lastName | Last Name * @param string | $email | Email Address * @param string | $otherData | BirthDay/Anniversary/Custom * @param string | $otherDataValue | Corresponding Date or Value * * @return string | $result | Response * */ function createZimbraContacts($ServerUrl, $username, $preAuthKey, $firstName, $lastName, $email, $otherData, $otherDataValue) { $serializeOp = array(); $serializeOp = array('firstName' => $firstName, 'lastName' => $lastName, 'email' => $email, 'otherData' => $otherData, 'otherDataValue' => $otherDataValue); $serializeOp1 = serialize($serializeOp); $zimbra = new Zimbra($username, $ServerUrl, $preAuthKey); $connectionResult = $zimbra->connect(); if (!$connectionResult) { return "Check userName or Server URL"; } $sXmlArray = $zimbra->addContacts($serializeOp1); if ($sXmlArray) { return "Contacts Created succesfully"; } else { return "Some Error"; } } /** * @method * * Create Tasks * * @name createZimbraTask * @label Create Task * * @param string | $ServerUrl | Server name and port where Zimbra exists | http://localhost:7070/service/soap * @param string | $username | Valid username to connect to Zimbra server * @param string | $preAuthKey | Server Key for SSO authentication * @param string | $subject | Mail Subject * @param string | $taskName | Task Name * @param string | $friendlyName | Friendly Name of the User * @param string | $userEmail | Email Address of the User * @param string | $priority | Priority of the Task * @param string | $allDay | Is All Day Task * @param string | $class | Access Scope of the Class * @param string | $location | Location of the task * @param string | $dueDate | Due Date of the task * @param string | $status | Status of the task * @param string | $percent | Percentage of Task Completed * * @return string | $result | Response * */ function createZimbraTask($ServerUrl, $username, $preAuthKey, $subject, $taskName, $friendlyName, $userEmail, $priority, $allDay, $class, $location, $dueDate, $status, $percent) { $serializeOp = array(); $serializeOp = array('subject' => $subject, 'taskName' => $taskName, 'friendlyName' => $friendlyName, 'userEmail' => $userEmail, 'priority' => $priority, 'allDay' => $allDay, 'class' => $class, 'location' => $location, 'dueDate' => $dueDate, 'status' => $status, 'percent' => $percent); $serializeOp1 = serialize($serializeOp); $zimbra = new Zimbra($username, $ServerUrl, $preAuthKey); $connectionResult = $zimbra->connect(); if (!$connectionResult) { return "Check userName or Server URL"; } $sXmlArray = $zimbra->addTask($serializeOp1); if ($sXmlArray) { return "Task Created succesfully"; } else { return "Error in Creating Task"; } } /** * @method * * Create Appointment * * @name createZimbraAppointment * @label Create Appointment * * @param string | $ServerUrl | Server name and port where Zimbra exists | http://localhost:7070/service/soap * @param string | $username | Valid username to connect to Zimbra server * @param string | $preAuthKey | Server Key for SSO authentication * @param string | $subject | Mail Subject * @param string | $appointmentName | Appointment Name * @param string | $friendlyName | Organizer's Friendly Name * @param string | $userEmail | Email Address of the Attendee(s) seperated by ';' * @param string | $domainName | Domain Name * @param string | $schedule | Schedule of the Appointment * @param string | $cutype | Type of Calendar User * @param string | $allDay | Is All Day Appointment * @param string | $isOrg | Is Organizer * @param string | $rsvp | RSVP * @param string | $atFriendlyName | Friendly Name of Attendee(s) seperated by ';' * @param string | $role | Attendee's Role * @param string | $location | Location * @param string | $ptst | Paticipation Status of the user * @param string | $startDate | Start Date of the Appointment * @param string | $endDate | End Date of the Appointment * @param string | $tz | Time Zone * * @return string | $result | Response * */ function createZimbraAppointment($ServerUrl, $username, $preAuthKey, $subject, $appointmentName, $friendlyName, $userEmail, $domainName, $schedule, $cutype, $allDay, $isOrg, $rsvp, $atFriendlyName, $role, $location, $ptst, $startDate, $endDate, $tz='') { $serializeOp = array(); $serializeOp = array('username' => $username, 'subject' => $subject, 'appointmentName' => $appointmentName, 'friendlyName' => $friendlyName, 'userEmail' => $userEmail, 'domainName' => $domainName, 'schedule' => $schedule, 'cutype' => $cutype, 'allDay' => $allDay, 'isOrg' => $isOrg, 'rsvp' => $rsvp, 'atFriendlyName' => $atFriendlyName, 'role' => $role, 'location' => $location, 'ptst' => $ptst, 'startDate' => $startDate, 'endDate' => $endDate, 'tz' => $tz); $serializeOp1 = serialize($serializeOp); $zimbra = new Zimbra($username, $ServerUrl, $preAuthKey); $connectionResult = $zimbra->connect(); if (!$connectionResult) { return "Check userName or Server URL"; } $sXmlArray = $zimbra->addAppointment($serializeOp1); if ($sXmlArray) { return "Appointment Created succesfully"; } else { return "Error in Creating Appointment"; } } /** * @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 | http://localhost:7070/service/soap * @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"); $credentials = "root:solutions"; $options = array(headers => $header_array, httpauth => $credentials, httpauthtype => HTTP_AUTH_BASIC); //1. test without the credentials $file = $fileLocation; $oZimbraObj = new Zimbra($username, $ServerUrl, $preAuthKey); $connectResult = $oZimbraObj->connect(); $sAuthToken = $oZimbraObj->auth_token; $cookie = array('ZM_AUTH_TOKEN' => $sAuthToken, 'ZM_TEST' => true); $url = "http://$ServerUrl/service/upload?fmt=raw"; $request = new HttpRequest($url, HTTP_METH_POST); $request->setCookies($cookie); $request->addPostFile("uploadFile", $file); // 2. test without 1st parameter $request->addPostFields(array($options)); $sendResult = $request->send(); // gettin Upload ID $aResponce = (array) $sendResult; $counter = 0; foreach ($aResponce as $values) { $counter++; if ($counter == 2) { $sResponce = $values; } } $aString = array(); $aExplode = explode(",", $sResponce); $uploadID = substr($aExplode[2], 1, -2); // 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"; } }