Skip to content

Instantly share code, notes, and snippets.

@iomarmochtar
Created November 17, 2019 15:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save iomarmochtar/7c2b7fc5ae11aeb0c683c52d8b25145c to your computer and use it in GitHub Desktop.
Save iomarmochtar/7c2b7fc5ae11aeb0c683c52d8b25145c to your computer and use it in GitHub Desktop.
A Simple of using zimbra api in yii2 webapp
<?php
// Author: Imam Omar Mochtar (iomarmochtar@gmail.com)
namespace app\models;
use Yii;
use Zimbra\Admin\AdminFactory;
use Zimbra\Admin\Request\CreateAccount;
use Zimbra\Struct\KeyValuePair;
use Zimbra\Struct\AccountSelector;
use Zimbra\Enum\AccountBy;
class ZimbraHelpers {
public static function getApi(){
$z = Yii::$app->params['zimbra'];
$url = 'https://'.$z['host'].':'.$z['port'].'/service/admin/soap';
$api = AdminFactory::instance($url);
$api->auth($z['username'], $z['password']);
return $api;
}
public static function convertKV($attrs){
$_attrs = [];
foreach($attrs as $k => $v){
$_attrs[] = new KeyValuePair($k, $v);
}
return $_attrs;
}
public static function createAccount($email, $password, $attrs=[]){
$api = self::getApi();
return $api->createAccount($email, $password, self::convertKV($attrs));
}
public static function getAccountId($api, $email){
$account = new AccountSelector(AccountBy::NAME(), $email);
$acts = $api->getAccount($account, null, ['zimbraId']);
return $acts->account->id;
}
public static function modifyAccount($email, $attrs){
$api = self::getApi();
$accountId = self::getAccountId($api, $email);
return $api->modifyAccount($accountId, self::convertKV($attrs));
}
public static function renameAccount($email, $newEmail){
$api = self::getApi();
$accountId = self::getAccountId($api, $email);
return $api->renameAccount($accountId, $newEmail);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment