2 /***********************************************************************/
4 /***********************************************************************/
5 /* Copyright (c) 2002-2010 */
6 /* Inclusive Design Institute */
9 /* This program is free software. You can redistribute it and/or */
10 /* modify it under the terms of the GNU General Public License */
11 /* as published by the Free Software Foundation. */
12 /***********************************************************************/
15 class ATutorActivityService extends ATutorService implements ActivityService {
16 public function getActivity($userId, $groupId, $appdId, $fields, $activityId, SecurityToken $token) {
17 $activities = $this->getActivities($userId, $groupId, $appdId, null, null, null, null, 0, 20, $fields, array($activityId), $token);
18 if ($activities instanceof RestFulCollection) {
19 $activities = $activities->getEntry();
20 foreach ($activities as $activity) {
21 if ($activity->getId() == $activityId) {
26 throw new SocialSpiException("Activity not found", ResponseError::$NOT_FOUND);
29 public function getActivities($userIds, $groupId, $appId, $sortBy, $filterBy, $filterOp, $filterValue, $startIndex, $count, $fields, $activityIds, $token) {
30 // public function getActivities($userIds, $groupId, $appId, $sortBy, $filterBy, $filterOp, $filterValue, $startIndex, $count, $fields, $token) {
31 $ids = $this->getIdSet($userIds, $groupId, $token);
32 $activities = ATutorDbFetcher::get()->getActivities($ids, $appId, $sortBy, $filterBy, $filterOp, $filterValue, $startIndex, $count, $fields, $activityIds);
33 // $activities = ATutorDbFetcher::get()->getActivities($ids, $appId, $sortBy, $filterBy, $filterOp, $filterValue, $startIndex, $count, $fields);
35 $totalResults = $activities['totalResults'];
36 $startIndex = $activities['startIndex'];
37 $count = $activities['count'];
38 unset($activities['totalResults']);
39 unset($activities['startIndex']);
40 unset($activities['count']);
41 $ret = new RestfulCollection($activities, $startIndex, $totalResults);
42 $ret->setItemsPerPage($count);
45 throw new SocialSpiException("Invalid activity specified", ResponseError::$NOT_FOUND);
49 public function createActivity($userId, $groupId, $appId, $fields, $activity, SecurityToken $token) {
51 if ($token->getOwnerId() != $token->getViewerId()) {
52 throw new SocialSpiException("unauthorized: Create activity permission denied.", ResponseError::$UNAUTHORIZED);
54 ATutorDbFetcher::get()->createActivity($userId->getUserId($token), $activity, $token->getAppId());
55 } catch (SocialSpiException $e) {
57 } catch (Exception $e) {
58 throw new SocialSpiException("Invalid create activity request: " . $e->getMessage(), ResponseError::$INTERNAL_ERROR);
65 * @param String userId = "@me"
66 * @param String groupId = "@self"
67 * @param String appId = auth.AppId
68 * @param String activityId
69 * @param AuthToken auth = HttpRequest.Authorization
72 * Check http://www.atutor.ca/atutor/mantis/view.php?id=4230 for details regarding to $activityId
74 public function deleteActivities($userId, $groupId, $appId, $activityIds, SecurityToken $token) {
75 $ids = $this->getIdSet($userId, $groupId, $token);
76 if (count($ids) < 1 || count($ids) > 1) {
77 throw new SocialSpiException("Invalid user id or count", ResponseError::$BAD_REQUEST);
79 if (! ATutorDbFetcher::get()->deleteActivities($ids[0], $appId, $activityIds)) {
80 throw new SocialSpiException("Invalid activity id(s)", ResponseError::$NOT_FOUND);
85 * Update Activities, based on Opensocial v8.1
86 * http://www.opensocial.org/Technical-Resources/opensocial-spec-v081/rpc-protocol.html
87 * @param String userId = "@me"
88 * @param String groupId = "@self"
89 * @param String appId = auth.AppId
90 * @param Object Activity activity
91 * @param AuthToken auth = HttpRequest.Authorization
92 * @return opensocial.Activity
96 * Note: Shindig 1.0 shindig/php/src/social/spi/ActivityService.php does not support this.
98 public function updateActivity($userId, $groupId, $appId, $activity, SecurityToken $token) {
99 throw new SocialSpiException("Not implemented", ResponseError::$NOT_IMPLEMENTED);