|
|
@@ -37,6 +37,21 @@ require_once 'Zend/Gdata/Gapps/UserFeed.php';
|
|
|
require_once 'Zend/Gdata/Gapps/NicknameFeed.php';
|
|
|
|
|
|
/**
|
|
|
+ * @see Zend_Gdata_Gapps_GroupFeed
|
|
|
+ */
|
|
|
+require_once 'Zend/Gdata/Gapps/GroupFeed.php';
|
|
|
+
|
|
|
+/**
|
|
|
+ * @see Zend_Gdata_Gapps_MemberFeed
|
|
|
+ */
|
|
|
+require_once 'Zend/Gdata/Gapps/MemberFeed.php';
|
|
|
+
|
|
|
+/**
|
|
|
+ * @see Zend_Gdata_Gapps_OwnerFeed
|
|
|
+ */
|
|
|
+require_once 'Zend/Gdata/Gapps/OwnerFeed.php';
|
|
|
+
|
|
|
+/**
|
|
|
* @see Zend_Gdata_Gapps_EmailListFeed
|
|
|
*/
|
|
|
require_once 'Zend/Gdata/Gapps/EmailListFeed.php';
|
|
|
@@ -81,6 +96,11 @@ class Zend_Gdata_Gapps extends Zend_Gdata
|
|
|
const APPS_NICKNAME_PATH = '/nickname/2.0';
|
|
|
|
|
|
/**
|
|
|
+ * Path to group feeds on the Google Apps server.
|
|
|
+ */
|
|
|
+ const APPS_GROUP_PATH = '/group/2.0';
|
|
|
+
|
|
|
+ /**
|
|
|
* Path to email list feeds on the Google Apps server.
|
|
|
*/
|
|
|
const APPS_EMAIL_LIST_PATH = '/emailList/2.0';
|
|
|
@@ -372,6 +392,80 @@ class Zend_Gdata_Gapps extends Zend_Gdata
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Retreive GroupFeed object containing multiple GroupEntry
|
|
|
+ * objects.
|
|
|
+ *
|
|
|
+ * @param mixed $location (optional) The location for the feed, as a URL
|
|
|
+ * or Query.
|
|
|
+ * @return Zend_Gdata_Gapps_GroupFeed
|
|
|
+ * @throws Zend_Gdata_App_Exception
|
|
|
+ * @throws Zend_Gdata_App_HttpException
|
|
|
+ * @throws Zend_Gdata_Gapps_ServiceException
|
|
|
+ */
|
|
|
+ public function getGroupFeed($location = null)
|
|
|
+ {
|
|
|
+ if ($location === null) {
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain();
|
|
|
+ } else if ($location instanceof Zend_Gdata_Query) {
|
|
|
+ $uri = $location->getQueryUrl();
|
|
|
+ } else {
|
|
|
+ $uri = $location;
|
|
|
+ }
|
|
|
+ return parent::getFeed($uri, 'Zend_Gdata_Gapps_GroupFeed');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Retreive MemberFeed object containing multiple MemberEntry
|
|
|
+ * objects.
|
|
|
+ *
|
|
|
+ * @param mixed $location (optional) The location for the feed, as a URL
|
|
|
+ * or Query.
|
|
|
+ * @return Zend_Gdata_Gapps_MemberFeed
|
|
|
+ * @throws Zend_Gdata_App_Exception
|
|
|
+ * @throws Zend_Gdata_App_HttpException
|
|
|
+ * @throws Zend_Gdata_Gapps_ServiceException
|
|
|
+ */
|
|
|
+ public function getMemberFeed($location = null)
|
|
|
+ {
|
|
|
+ if ($location === null) {
|
|
|
+ require_once 'Zend/Gdata/App/InvalidArgumentException.php';
|
|
|
+ throw new Zend_Gdata_App_InvalidArgumentException(
|
|
|
+ 'Location must not be null');
|
|
|
+ } else if ($location instanceof Zend_Gdata_Query) {
|
|
|
+ $uri = $location->getQueryUrl();
|
|
|
+ } else {
|
|
|
+ $uri = $location;
|
|
|
+ }
|
|
|
+ return parent::getFeed($uri, 'Zend_Gdata_Gapps_MemberFeed');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Retreive OwnerFeed object containing multiple OwnerEntry
|
|
|
+ * objects.
|
|
|
+ *
|
|
|
+ * @param mixed $location (optional) The location for the feed, as a URL
|
|
|
+ * or Query.
|
|
|
+ * @return Zend_Gdata_Gapps_OwnerFeed
|
|
|
+ * @throws Zend_Gdata_App_Exception
|
|
|
+ * @throws Zend_Gdata_App_HttpException
|
|
|
+ * @throws Zend_Gdata_Gapps_ServiceException
|
|
|
+ */
|
|
|
+ public function getOwnerFeed($location = null)
|
|
|
+ {
|
|
|
+ if ($location === null) {
|
|
|
+ require_once 'Zend/Gdata/App/InvalidArgumentException.php';
|
|
|
+ throw new Zend_Gdata_App_InvalidArgumentException(
|
|
|
+ 'Location must not be null');
|
|
|
+ } else if ($location instanceof Zend_Gdata_Query) {
|
|
|
+ $uri = $location->getQueryUrl();
|
|
|
+ } else {
|
|
|
+ $uri = $location;
|
|
|
+ }
|
|
|
+ return parent::getFeed($uri, 'Zend_Gdata_Gapps_OwnerFeed');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Retreive EmailListFeed object containing multiple EmailListEntry
|
|
|
* objects.
|
|
|
*
|
|
|
@@ -465,6 +559,75 @@ class Zend_Gdata_Gapps extends Zend_Gdata
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Retreive a single GroupEntry object.
|
|
|
+ *
|
|
|
+ * @param mixed $location The location for the feed, as a URL or Query.
|
|
|
+ * @return Zend_Gdata_Gapps_GroupEntry
|
|
|
+ * @throws Zend_Gdata_App_Exception
|
|
|
+ * @throws Zend_Gdata_App_HttpException
|
|
|
+ * @throws Zend_Gdata_Gapps_ServiceException
|
|
|
+ */
|
|
|
+ public function getGroupEntry($location = null)
|
|
|
+ {
|
|
|
+ if ($location === null) {
|
|
|
+ require_once 'Zend/Gdata/App/InvalidArgumentException.php';
|
|
|
+ throw new Zend_Gdata_App_InvalidArgumentException(
|
|
|
+ 'Location must not be null');
|
|
|
+ } else if ($location instanceof Zend_Gdata_Query) {
|
|
|
+ $uri = $location->getQueryUrl();
|
|
|
+ } else {
|
|
|
+ $uri = $location;
|
|
|
+ }
|
|
|
+ return parent::getEntry($uri, 'Zend_Gdata_Gapps_GroupEntry');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Retreive a single MemberEntry object.
|
|
|
+ *
|
|
|
+ * @param mixed $location The location for the feed, as a URL or Query.
|
|
|
+ * @return Zend_Gdata_Gapps_MemberEntry
|
|
|
+ * @throws Zend_Gdata_App_Exception
|
|
|
+ * @throws Zend_Gdata_App_HttpException
|
|
|
+ * @throws Zend_Gdata_Gapps_ServiceException
|
|
|
+ */
|
|
|
+ public function getMemberEntry($location = null)
|
|
|
+ {
|
|
|
+ if ($location === null) {
|
|
|
+ require_once 'Zend/Gdata/App/InvalidArgumentException.php';
|
|
|
+ throw new Zend_Gdata_App_InvalidArgumentException(
|
|
|
+ 'Location must not be null');
|
|
|
+ } else if ($location instanceof Zend_Gdata_Query) {
|
|
|
+ $uri = $location->getQueryUrl();
|
|
|
+ } else {
|
|
|
+ $uri = $location;
|
|
|
+ }
|
|
|
+ return parent::getEntry($uri, 'Zend_Gdata_Gapps_MemberEntry');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Retreive a single OwnerEntry object.
|
|
|
+ *
|
|
|
+ * @param mixed $location The location for the feed, as a URL or Query.
|
|
|
+ * @return Zend_Gdata_Gapps_OwnerEntry
|
|
|
+ * @throws Zend_Gdata_App_Exception
|
|
|
+ * @throws Zend_Gdata_App_HttpException
|
|
|
+ * @throws Zend_Gdata_Gapps_ServiceException
|
|
|
+ */
|
|
|
+ public function getOwnerEntry($location = null)
|
|
|
+ {
|
|
|
+ if ($location === null) {
|
|
|
+ require_once 'Zend/Gdata/App/InvalidArgumentException.php';
|
|
|
+ throw new Zend_Gdata_App_InvalidArgumentException(
|
|
|
+ 'Location must not be null');
|
|
|
+ } else if ($location instanceof Zend_Gdata_Query) {
|
|
|
+ $uri = $location->getQueryUrl();
|
|
|
+ } else {
|
|
|
+ $uri = $location;
|
|
|
+ }
|
|
|
+ return parent::getEntry($uri, 'Zend_Gdata_Gapps_OwnerEntry');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Retreive a single EmailListEntry object.
|
|
|
*
|
|
|
* @param mixed $location The location for the feed, as a URL or Query.
|
|
|
@@ -556,6 +719,77 @@ class Zend_Gdata_Gapps extends Zend_Gdata
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Create a new group from a GroupEntry.
|
|
|
+ *
|
|
|
+ * @param Zend_Gdata_Gapps_GroupEntry $group The group entry to insert.
|
|
|
+ * @param string $uri (optional) The URI where the group should be
|
|
|
+ * uploaded to. If null, the default user creation URI for
|
|
|
+ * this domain will be used.
|
|
|
+ * @return Zend_Gdata_Gapps_GroupEntry The inserted group entry as
|
|
|
+ * returned by the server.
|
|
|
+ * @throws Zend_Gdata_App_Exception
|
|
|
+ * @throws Zend_Gdata_App_HttpException
|
|
|
+ * @throws Zend_Gdata_Gapps_ServiceException
|
|
|
+ */
|
|
|
+ public function insertGroup($group, $uri = null)
|
|
|
+ {
|
|
|
+ if ($uri === null) {
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain();
|
|
|
+ }
|
|
|
+ $newEntry = $this->insertEntry($group, $uri, 'Zend_Gdata_Gapps_GroupEntry');
|
|
|
+ return $newEntry;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Create a new member from a MemberEntry.
|
|
|
+ *
|
|
|
+ * @param Zend_Gdata_Gapps_MemberEntry $member The member entry to insert.
|
|
|
+ * @param string $uri (optional) The URI where the group should be
|
|
|
+ * uploaded to. If null, the default user creation URI for
|
|
|
+ * this domain will be used.
|
|
|
+ * @return Zend_Gdata_Gapps_MemberEntry The inserted member entry as
|
|
|
+ * returned by the server.
|
|
|
+ * @throws Zend_Gdata_App_Exception
|
|
|
+ * @throws Zend_Gdata_App_HttpException
|
|
|
+ * @throws Zend_Gdata_Gapps_ServiceException
|
|
|
+ */
|
|
|
+ public function insertMember($member, $uri = null)
|
|
|
+ {
|
|
|
+ if ($uri === null) {
|
|
|
+ require_once 'Zend/Gdata/App/InvalidArgumentException.php';
|
|
|
+ throw new Zend_Gdata_App_InvalidArgumentException(
|
|
|
+ 'URI must not be null');
|
|
|
+ }
|
|
|
+ $newEntry = $this->insertEntry($member, $uri, 'Zend_Gdata_Gapps_MemberEntry');
|
|
|
+ return $newEntry;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Create a new group from a OwnerEntry.
|
|
|
+ *
|
|
|
+ * @param Zend_Gdata_Gapps_OwnerEntry $owner The owner entry to insert.
|
|
|
+ * @param string $uri (optional) The URI where the owner should be
|
|
|
+ * uploaded to. If null, the default user creation URI for
|
|
|
+ * this domain will be used.
|
|
|
+ * @return Zend_Gdata_Gapps_OwnerEntry The inserted owner entry as
|
|
|
+ * returned by the server.
|
|
|
+ * @throws Zend_Gdata_App_Exception
|
|
|
+ * @throws Zend_Gdata_App_HttpException
|
|
|
+ * @throws Zend_Gdata_Gapps_ServiceException
|
|
|
+ */
|
|
|
+ public function insertOwner($owner, $uri = null)
|
|
|
+ {
|
|
|
+ if ($uri === null) {
|
|
|
+ require_once 'Zend/Gdata/App/InvalidArgumentException.php';
|
|
|
+ throw new Zend_Gdata_App_InvalidArgumentException(
|
|
|
+ 'URI must not be null');
|
|
|
+ }
|
|
|
+ $newEntry = $this->insertEntry($owner, $uri, 'Zend_Gdata_Gapps_OwnerEntry');
|
|
|
+ return $newEntry;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Create a new email list from an EmailListEntry.
|
|
|
*
|
|
|
* @param Zend_Gdata_Gapps_EmailListEntry $emailList The email list entry
|
|
|
@@ -932,6 +1166,358 @@ class Zend_Gdata_Gapps extends Zend_Gdata
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
+ * Create a new group.
|
|
|
+ *
|
|
|
+ * @param string $groupId A unique identifier for the group
|
|
|
+ * @param string $groupName The name of the group
|
|
|
+ * @param string $description A description of the group
|
|
|
+ * @param string $emailPermission The subscription permission of the group
|
|
|
+ * @return Zend_Gdata_Gapps_GroupEntry The group entry as created on the server.
|
|
|
+ */
|
|
|
+ public function createGroup($groupId, $groupName, $description = null, $emailPermission = null)
|
|
|
+ {
|
|
|
+ $i = 0;
|
|
|
+ $group = $this->newGroupEntry();
|
|
|
+
|
|
|
+ $properties[$i] = $this->newProperty();
|
|
|
+ $properties[$i]->name = 'groupId';
|
|
|
+ $properties[$i]->value = $groupId;
|
|
|
+ $i++;
|
|
|
+ $properties[$i] = $this->newProperty();
|
|
|
+ $properties[$i]->name = 'groupName';
|
|
|
+ $properties[$i]->value = $groupName;
|
|
|
+ $i++;
|
|
|
+
|
|
|
+ if($description != null) {
|
|
|
+ $properties[$i] = $this->newProperty();
|
|
|
+ $properties[$i]->name = 'description';
|
|
|
+ $properties[$i]->value = $description;
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($emailPermission != null) {
|
|
|
+ $properties[$i] = $this->newProperty();
|
|
|
+ $properties[$i]->name = 'emailPermission';
|
|
|
+ $properties[$i]->value = $emailPermission;
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ $group->property = $properties;
|
|
|
+
|
|
|
+ return $this->insertGroup($group);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Retrieves a group based on group id
|
|
|
+ *
|
|
|
+ * @param string $groupId The unique identifier for the group
|
|
|
+ * @return Zend_Gdata_Gapps_GroupEntry The group entry as returned by the server.
|
|
|
+ */
|
|
|
+ public function retrieveGroup($groupId)
|
|
|
+ {
|
|
|
+ $query = $this->newGroupQuery($groupId);
|
|
|
+ //$query->setGroupId($groupId);
|
|
|
+
|
|
|
+ try {
|
|
|
+ $group = $this->getGroupEntry($query);
|
|
|
+ } catch (Zend_Gdata_Gapps_ServiceException $e) {
|
|
|
+ // Set the group to null if not found
|
|
|
+ if ($e->hasError(Zend_Gdata_Gapps_Error::ENTITY_DOES_NOT_EXIST)) {
|
|
|
+ $group = null;
|
|
|
+ } else {
|
|
|
+ throw $e;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $group;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Retrieve all groups in the current domain. Be aware that
|
|
|
+ * calling this function on a domain with many groups will take a
|
|
|
+ * signifigant amount of time to complete. On larger domains this may
|
|
|
+ * may cause execution to timeout without proper precautions in place.
|
|
|
+ *
|
|
|
+ * @return Zend_Gdata_Gapps_GroupFeed Collection of Zend_Gdata_GroupEntry objects
|
|
|
+ * representing all groups apart of the domain.
|
|
|
+ */
|
|
|
+ public function retrieveAllGroups()
|
|
|
+ {
|
|
|
+ return $this->retrieveAllEntriesForFeed($this->retrievePageOfGroups());
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Delete a group
|
|
|
+ *
|
|
|
+ * @param string $groupId The unique identifier for the group
|
|
|
+ */
|
|
|
+ public function deleteGroup($groupId)
|
|
|
+ {
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain() . '/' . $groupId;
|
|
|
+
|
|
|
+ $this->delete($uri);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Check to see if a member id or group id is a member of group
|
|
|
+ *
|
|
|
+ * @param string $memberId Member id or group group id
|
|
|
+ * @param string $groupId Group to be checked for
|
|
|
+ * @return bool True, if given entity is a member
|
|
|
+ */
|
|
|
+ public function isMember($memberId, $groupId)
|
|
|
+ {
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain() . '/' . $groupId . '/member/' . $memberId;
|
|
|
+
|
|
|
+ //if the enitiy is not a member, an exception is thrown
|
|
|
+ try {
|
|
|
+ $results = $this->get($uri);
|
|
|
+ } catch (Exception $e) {
|
|
|
+ $results = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($results) {
|
|
|
+ return TRUE;
|
|
|
+ } else {
|
|
|
+ return FALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Add an email address to a group as a member
|
|
|
+ *
|
|
|
+ * @param string $recipientAddress Email address, member id, or group id
|
|
|
+ * @param string $groupId The unique id of the group
|
|
|
+ * @return Zend_Gdata_Gapps_MemberEntry The member entry returned by the server
|
|
|
+ */
|
|
|
+ public function addMemberToGroup($recipientAddress, $groupId)
|
|
|
+ {
|
|
|
+ $member = $this->newMemberEntry();
|
|
|
+
|
|
|
+ $properties[] = $this->newProperty();
|
|
|
+ $properties[0]->name = 'memberId';
|
|
|
+ $properties[0]->value = $recipientAddress;
|
|
|
+
|
|
|
+ $member->property = $properties;
|
|
|
+
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain() . '/' . $groupId . '/member';
|
|
|
+
|
|
|
+ return $this->insertMember($member, $uri);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Remove a member id from a group
|
|
|
+ *
|
|
|
+ * @param string $memberId Member id or group id
|
|
|
+ * @param string $groupId The unique id of the group
|
|
|
+ */
|
|
|
+ public function removeMemberFromGroup($memberId, $groupId)
|
|
|
+ {
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain() . '/' . $groupId . '/member/' . $memberId;
|
|
|
+
|
|
|
+ return $this->delete($uri);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Retrieves all the members of a group
|
|
|
+ *
|
|
|
+ * @param string $groupId The unique id of the group
|
|
|
+ * @return Zend_Gdata_Gapps_MemberFeed Collection of MemberEntry objects
|
|
|
+ * representing all members apart of the group.
|
|
|
+ */
|
|
|
+ public function retrieveAllMembers($groupId)
|
|
|
+ {
|
|
|
+ return $this->retrieveAllEntriesForFeed(
|
|
|
+ $this->retrievePageOfMembers($groupId));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Add an email as an owner of a group
|
|
|
+ *
|
|
|
+ * @param string $email Owner's email
|
|
|
+ * @param string $groupId Group ownership to be checked for
|
|
|
+ * @return Zend_Gdata_Gapps_OwnerEntry The OwnerEntry returned by the server
|
|
|
+ */
|
|
|
+ public function addOwnerToGroup($email, $groupId)
|
|
|
+ {
|
|
|
+ $owner = $this->newOwnerEntry();
|
|
|
+
|
|
|
+ $properties[] = $this->newProperty();
|
|
|
+ $properties[0]->name = 'email';
|
|
|
+ $properties[0]->value = $email;
|
|
|
+
|
|
|
+ $owner->property = $properties;
|
|
|
+
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain() . '/' . $groupId . '/owner';
|
|
|
+
|
|
|
+ return $this->insertOwner($owner, $uri);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Retrieves all the owners of a group
|
|
|
+ *
|
|
|
+ * @param string $groupId The unique identifier for the group
|
|
|
+ * @return Zend_Gdata_Gapps_OwnerFeed Collection of Zend_Gdata_OwnerEntry
|
|
|
+ * objects representing all owners apart of the group.
|
|
|
+ */
|
|
|
+ public function retrieveGroupOwners($groupId)
|
|
|
+ {
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain() . '/' . $groupId . '/owner';
|
|
|
+
|
|
|
+ return $this->getOwnerFeed($uri);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Checks to see if an email is an owner of a group
|
|
|
+ *
|
|
|
+ * @param string $email Owner's email
|
|
|
+ * @param string $groupId Group ownership to be checked for
|
|
|
+ * @return bool True, if given entity is an owner
|
|
|
+ */
|
|
|
+ public function isOwner($email, $groupId)
|
|
|
+ {
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain() . '/' . $groupId . '/owner/' . $email;
|
|
|
+
|
|
|
+ //if the enitiy is not an owner of the group, an exception is thrown
|
|
|
+ try {
|
|
|
+ $results = $this->get($uri);
|
|
|
+ } catch (Exception $e) {
|
|
|
+ $results = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($results) {
|
|
|
+ return TRUE;
|
|
|
+ } else {
|
|
|
+ return FALSE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Remove email as an owner of a group
|
|
|
+ *
|
|
|
+ * @param string $email Owner's email
|
|
|
+ * @param string $groupId The unique identifier for the group
|
|
|
+ */
|
|
|
+ public function removeOwnerFromGroup($email, $groupId)
|
|
|
+ {
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain() . '/' . $groupId . '/owner/' . $email;
|
|
|
+
|
|
|
+ return $this->delete($uri);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Update group properties with new values. any property not defined will not
|
|
|
+ * be updated
|
|
|
+ *
|
|
|
+ * @param string $groupId A unique identifier for the group
|
|
|
+ * @param string $groupName The name of the group
|
|
|
+ * @param string $description A description of the group
|
|
|
+ * @param string $emailPermission The subscription permission of the group
|
|
|
+ * @return Zend_Gdata_Gapps_GroupEntry The group entry as updated on the server.
|
|
|
+ */
|
|
|
+ public function updateGroup($groupId, $groupName = null, $description = null,
|
|
|
+ $emailPermission = null)
|
|
|
+ {
|
|
|
+ $i = 0;
|
|
|
+ $group = $this->newGroupEntry();
|
|
|
+
|
|
|
+ $properties[$i] = $this->newProperty();
|
|
|
+ $properties[$i]->name = 'groupId';
|
|
|
+ $properties[$i]->value = $groupId;
|
|
|
+ $i++;
|
|
|
+
|
|
|
+ if($groupName != null) {
|
|
|
+ $properties[$i] = $this->newProperty();
|
|
|
+ $properties[$i]->name = 'groupName';
|
|
|
+ $properties[$i]->value = $groupName;
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($description != null) {
|
|
|
+ $properties[$i] = $this->newProperty();
|
|
|
+ $properties[$i]->name = 'description';
|
|
|
+ $properties[$i]->value = $description;
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($emailPermission != null) {
|
|
|
+ $properties[$i] = $this->newProperty();
|
|
|
+ $properties[$i]->name = 'emailPermission';
|
|
|
+ $properties[$i]->value = $emailPermission;
|
|
|
+ $i++;
|
|
|
+ }
|
|
|
+
|
|
|
+ $group->property = $properties;
|
|
|
+
|
|
|
+ $uri = self::APPS_BASE_FEED_URI . self::APPS_GROUP_PATH . '/';
|
|
|
+ $uri .= $this->getDomain() . '/' . $groupId;
|
|
|
+
|
|
|
+ return $this->updateEntry($group, $uri, 'Zend_Gdata_Gapps_GroupEntry');
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Retrieve all of the groups that a user is a member of
|
|
|
+ *
|
|
|
+ * @param string $memberId Member username
|
|
|
+ * @param bool $directOnly (Optional) If true, members with direct association
|
|
|
+ * only will be considered
|
|
|
+ * @return Zend_Gdata_Gapps_GroupFeed Collection of Zend_Gdata_GroupEntry
|
|
|
+ * objects representing all groups member is apart of in the domain.
|
|
|
+ */
|
|
|
+ public function retrieveGroups($memberId, $directOnly = null)
|
|
|
+ {
|
|
|
+ $query = $this->newGroupQuery();
|
|
|
+ $query->setMember($memberId);
|
|
|
+ if($directOnly != null) {
|
|
|
+ $query->setDirectOnly($directOnly);
|
|
|
+ }
|
|
|
+ return $this->getGroupFeed($query);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Retrieve a page of groups in alphabetical order, starting with the
|
|
|
+ * provided group.
|
|
|
+ *
|
|
|
+ * @param string $startGroup (optional) The first group to
|
|
|
+ * retrieve. If null or not defined, the page will begin
|
|
|
+ * with the first group in the domain.
|
|
|
+ * @return Zend_Gdata_Gapps_GroupFeed Collection of Zend_Gdata_GroupEntry
|
|
|
+ * objects representing the groups in the domain.
|
|
|
+ * @throws Zend_Gdata_App_Exception
|
|
|
+ * @throws Zend_Gdata_App_HttpException
|
|
|
+ * @throws Zend_Gdata_Gapps_ServiceException
|
|
|
+ */
|
|
|
+ public function retrievePageOfGroups ($startGroup = null)
|
|
|
+ {
|
|
|
+ $query = $this->newGroupQuery();
|
|
|
+ $query->setStartGroupId($startGroup);
|
|
|
+ return $this->getGroupFeed($query);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Gets page of Members
|
|
|
+ *
|
|
|
+ * @param string $groupId The group id which should be searched.
|
|
|
+ * @param string $startMember (optinal) The address of the first member,
|
|
|
+ * or null to start with the first member in the list.
|
|
|
+ * @return Zend_Gdata_Gapps_MemberFeed Collection of Zend_Gdata_MemberEntry
|
|
|
+ * objects
|
|
|
+ */
|
|
|
+ public function retrievePageOfMembers($groupId, $startMember = null)
|
|
|
+ {
|
|
|
+ $query = $this->newMemberQuery($groupId);
|
|
|
+ $query->setStartMemberId($startMember);
|
|
|
+ return $this->getMemberFeed($query);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
* Create a new email list.
|
|
|
*
|
|
|
* @param string $emailList The name of the email list to be created.
|