public function PUT_action()
 {
     // call the checkin function
     $RepositoryService = new RepositoryService();
     $VersioningService = new VersioningService(KT_cmis_atom_service_helper::getKt());
     $repositories = $RepositoryService->getRepositories();
     $repositoryId = $repositories[0]['repositoryId'];
     $response = $VersioningService->checkIn($repositoryId, $this->params[0]);
     if (PEAR::isError($response)) {
         $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_SERVER_ERROR, $response->getMessage());
         //Expose the responseFeed
         $this->responseFeed = $feed;
         return null;
     }
     $this->setStatus(self::STATUS_NO_CONTENT);
     $this->responseFeed = null;
 }
Beispiel #2
0
 /**
  * Saves an issue to the database
  *
  * @param array|Issue $params
  */
 public function saveIssue($params, $doNotify = true)
 {
     $issue = null;
     $sendNotification = false;
     if (is_array($params)) {
         $existingId = ifset($params, 'id');
     } else {
         $existingId = $params->id;
     }
     if (!$existingId) {
         $sendNotification = true;
     }
     $oldIssue = null;
     // If there's an existing one, save it in the history
     if ($existingId) {
         $oldIssue = $this->getIssue($existingId);
         $this->versioningService->createVersion($oldIssue);
     }
     // If saving a new one, we want to
     $issue = $this->dbService->saveObject($params, 'Issue');
     // Okay, now check if it's on a project or not
     $project = null;
     if (!$issue->projectid) {
         // Get the project
         $client = $this->clientService->getClient($issue->clientid);
         if (!$client) {
             throw new Exception("No client exists with ID {$issue->clientid}");
         }
         $project = $this->clientService->getClientSupportProject($client);
         if (!$project) {
             throw new Exception("Missing client details for request {$issue->title}");
         }
         $issue->projectid = $project->id;
         $this->dbService->updateObject($issue);
     } else {
         $project = $this->projectService->getProject($issue->projectid);
     }
     // make sure it's assigned to someone
     if (!mb_strlen($issue->userid)) {
         if (!$project) {
             $project = $this->projectService->getProject($issue->projectid);
         }
         $issue->userid = $project->manager;
         $this->dbService->updateObject($issue);
     }
     // Check to see if the assignee has a watch, if not, add one
     $assignedTo = $this->userService->getByName($issue->userid);
     if ($assignedTo) {
         $existing = $this->notificationService->getWatch($assignedTo, $issue->id, 'Issue');
         if (!$existing) {
             $this->notificationService->createWatch($assignedTo, $issue->id, 'Issue');
         }
     }
     $this->log->debug("Saving request, notify {$issue->userid} = " . $sendNotification);
     $this->trackerService->track('create-issue', $issue->id);
     // now send a notification to those users in the
     // group assigned to the project the issue was just saved against.
     if ($sendNotification && $doNotify) {
         // create and assign a task to whoever was assigned to the issue
         // by default
         if ($assignedTo && false) {
             // Create the task
             $task = new Task();
             $task->projectid = $issue->projectid;
             $task->userid = array($assignedTo->username);
             $task->title = 'Respond to request "' . $issue->title . '"';
             $task->description = "Please investigate this request:\r\n\r\n" . $issue->description;
             $task->category = 'Support';
             $task->due = date('Y-m-d H:i:s', strtotime('+2 days'));
             // $task = $this->projectService->saveTask($task, false, true);
             // $this->itemLinkService->linkItems($issue, $task);
         }
         $this->log->debug("Notifying users about new request {$issue->title}");
         $this->notifyOfNewIssue($issue);
         // Add a watch for the current user. Note that it might be null if
         // this issue is created from an email
         $user = za()->getUser();
         if ($user) {
             $this->notificationService->createWatch($user, $issue->id, 'Issue');
         }
     }
     if ($issue->status == Issue::STATUS_CLOSED) {
         // remove notifications
         $subscribers = $this->notificationService->getSubscribers($issue);
         foreach ($subscribers as $username => $item) {
             $user = $this->userService->getUserByField('username', $username);
             if ($user) {
                 $this->notificationService->removeWatch($user, $issue->id, 'Issue');
             }
         }
     }
     // See if the status has changed and notify the creator
     if ($oldIssue != null && $oldIssue->status != $issue->status && $doNotify) {
         try {
             $this->notifyOfUpdatedIssue($oldIssue, $issue);
         } catch (Exception $e) {
             $this->log->warn("Failed to notify of request update");
         }
     }
     return $issue;
 }
 public function POST_action()
 {
     $repositoryId = KT_cmis_atom_service_helper::getRepositoryId($RepositoryService);
     $VersioningService = new VersioningService(KT_cmis_atom_service_helper::getKt());
     $ObjectService = new ObjectService(KT_cmis_atom_service_helper::getKt());
     $cmisObjectProperties = KT_cmis_atom_service_helper::getCmisProperties($this->parsedXMLContent['@children']);
     // check for existing object id as property of submitted object data
     if (empty($cmisObjectProperties['ObjectId'])) {
         $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_SERVER_ERROR, 'No object was specified for checkout');
         // Expose the responseFeed
         $this->responseFeed = $feed;
         return null;
     }
     $response = $VersioningService->checkOut($repositoryId, $cmisObjectProperties['ObjectId']);
     if (PEAR::isError($response)) {
         $feed = KT_cmis_atom_service_helper::getErrorFeed($this, self::STATUS_SERVER_ERROR, 'No object was specified for checkout');
         // Expose the responseFeed
         $this->responseFeed = $feed;
         return null;
     }
     $this->setStatus(self::STATUS_CREATED);
     $feed = KT_cmis_atom_service_helper::getObjectFeed($this, $ObjectService, $repositoryId, $cmisObjectProperties['ObjectId'], 'POST');
     // Expose the responseFeed
     $this->responseFeed = $feed;
 }