Ejemplo n.º 1
0
 /**
  * @PublicPage
  * @NoCSRFRequired
  *
  * @return TemplateResponse
  */
 public function show()
 {
     try {
         $user = $this->activityManager->getCurrentUserId();
         $userLang = $this->config->getUserValue($user, 'core', 'lang');
         // Overwrite user and language in the helper
         $this->l = $this->l10nFactory->get('activity', $userLang);
         $parser = new PlainTextParser($this->l);
         $this->helper->setL10n($this->l);
         $this->helper->setUser($user);
         $description = (string) $this->l->t('Personal activity feed for %s', $user);
         $response = $this->data->get($this->helper, $this->settings, $user, 0, self::DEFAULT_PAGE_SIZE, 'desc', 'all');
         $data = $response['data'];
         $activities = [];
         foreach ($data as $activity) {
             $activity['subject_prepared'] = $parser->parseMessage($activity['subject_prepared']);
             $activity['message_prepared'] = $parser->parseMessage($activity['message_prepared']);
             $activities[] = $activity;
         }
     } catch (\UnexpectedValueException $e) {
         $this->l = $this->l10nFactory->get('activity');
         $description = (string) $this->l->t('Your feed URL is invalid');
         $activities = [['activity_id' => -1, 'timestamp' => time(), 'subject' => true, 'subject_prepared' => $description]];
     }
     $response = new TemplateResponse('activity', 'rss', ['rssLang' => $this->l->getLanguageCode(), 'rssLink' => $this->urlGenerator->linkToRouteAbsolute('activity.Feed.show'), 'rssPubDate' => date('r'), 'description' => $description, 'activities' => $activities], '');
     if ($this->request->getHeader('accept') !== null && stristr($this->request->getHeader('accept'), 'application/rss+xml')) {
         $response->addHeader('Content-Type', 'application/rss+xml');
     } else {
         $response->addHeader('Content-Type', 'text/xml; charset=UTF-8');
     }
     return $response;
 }
Ejemplo n.º 2
0
 /**
  * @expectedException \OutOfBoundsException
  * @expectedExceptionMessage Invalid user
  * @expectedExceptionCode 1
  */
 public function testGetNoUser()
 {
     /** @var \OCA\Activity\GroupHelper|\PHPUnit_Framework_MockObject_MockObject $groupHelper */
     $groupHelper = $this->getMockBuilder('OCA\\Activity\\GroupHelper')->disableOriginalConstructor()->getMock();
     /** @var \OCA\Activity\UserSettings|\PHPUnit_Framework_MockObject_MockObject $settings */
     $settings = $this->getMockBuilder('OCA\\Activity\\UserSettings')->disableOriginalConstructor()->getMock();
     $this->data->get($groupHelper, $settings, '', 0, 0, 'asc', '');
 }
Ejemplo n.º 3
0
 /**
  * @param array $parameters
  * @return \OC_OCS_Result
  */
 protected function get(array $parameters)
 {
     try {
         $this->readParameters($parameters);
     } catch (InvalidFilterException $e) {
         return new \OC_OCS_Result(null, Http::STATUS_NOT_FOUND);
     } catch (\OutOfBoundsException $e) {
         return new \OC_OCS_Result(null, Http::STATUS_FORBIDDEN);
     }
     try {
         $response = $this->data->get($this->helper, $this->settings, $this->user, $this->since, $this->limit, $this->sort, $this->filter, $this->objectType, $this->objectId);
     } catch (\OutOfBoundsException $e) {
         // Invalid since argument
         return new \OC_OCS_Result(null, Http::STATUS_FORBIDDEN);
     } catch (\BadMethodCallException $e) {
         // No activity settings enabled
         return new \OC_OCS_Result(null, Http::STATUS_NO_CONTENT);
     }
     $headers = $this->generateHeaders($response['headers'], $response['has_more']);
     if (empty($response['data'])) {
         return new \OC_OCS_Result([], Http::STATUS_NOT_MODIFIED, null, $headers);
     }
     $preparedActivities = [];
     foreach ($response['data'] as $activity) {
         $activity['datetime'] = date('c', $activity['timestamp']);
         unset($activity['timestamp']);
         if ($this->loadPreviews) {
             $activity['previews'] = [];
             if ($activity['object_type'] === 'files' && !empty($activity['files'])) {
                 foreach ($activity['files'] as $objectId => $objectName) {
                     if ((int) $objectId === 0 || $objectName === '') {
                         // No file, no preview
                         continue;
                     }
                     $activity['previews'][] = $this->getPreview($activity['affecteduser'], (int) $objectId, $objectName);
                 }
             } else {
                 if ($activity['object_type'] === 'files' && $activity['object_id']) {
                     $activity['previews'][] = $this->getPreview($activity['affecteduser'], (int) $activity['object_id'], $activity['file']);
                 }
             }
         }
         $preparedActivities[] = $activity;
     }
     return new \OC_OCS_Result($preparedActivities, 100, null, $headers);
 }
Ejemplo n.º 4
0
 /**
  * @expectedException \BadMethodCallException
  * @expectedExceptionMessage No settings enabled
  * @expectedExceptionCode 3
  */
 public function testGetNoSettings()
 {
     /** @var \OCA\Activity\GroupHelper|\PHPUnit_Framework_MockObject_MockObject $groupHelper */
     $groupHelper = $this->getMockBuilder('OCA\\Activity\\GroupHelper')->disableOriginalConstructor()->getMock();
     $groupHelper->expects($this->once())->method('setUser')->with('user1');
     /** @var \OCA\Activity\UserSettings|\PHPUnit_Framework_MockObject_MockObject $settings */
     $settings = $this->getMockBuilder('OCA\\Activity\\UserSettings')->disableOriginalConstructor()->getMock();
     $settings->expects($this->once())->method('getNotificationTypes')->with('user1', 'stream')->willReturn(['settings']);
     /** @var ActivityManager|\PHPUnit_Framework_MockObject_MockObject $activityManager */
     $activityManager = $this->getMockBuilder('OCP\\Activity\\IManager')->disableOriginalConstructor()->getMock();
     $activityManager->expects($this->any())->method('filterNotificationTypes')->with(['settings'], 'filter1')->willReturn([]);
     $activityManager->expects($this->never())->method('getQueryForFilter');
     /** @var \OCA\Activity\Data|\PHPUnit_Framework_MockObject_MockObject $data */
     $data = new \OCA\Activity\Data($activityManager, \OC::$server->getDatabaseConnection(), $this->session);
     $data->get($groupHelper, $settings, 'user1', 0, 0, 'asc', 'filter1');
 }