Skip to content

Commit

Permalink
Enable Activity Integration #2
Browse files Browse the repository at this point in the history
  • Loading branch information
Rello committed Nov 17, 2019
1 parent 49f96d3 commit 13c2ad9
Show file tree
Hide file tree
Showing 8 changed files with 83 additions and 63 deletions.
2 changes: 1 addition & 1 deletion js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ if (!OCA.Data) {
TYPE_INTERNAL_DB: 2,
TYPE_GIT: 3,
TYPE_SHARED: 99,
SHARE_USER: 0,
SHARE_TYPE_USER: 0,
SHARE_TYPE_LINK: 3
};
}
Expand Down
2 changes: 1 addition & 1 deletion js/sidebar.js
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ OCA.Data.Sidebar.Share = {
if (parseInt(share.type) === OCA.Data.SHARE_TYPE_LINK) {
let li = OCA.Data.Sidebar.Share.buildShareLinkRow(share.id, share.token, false, share.pass);
shareWithList.appendChild(li);
} else if (parseInt(share.type) === OCA.Data.SHARE_USER) {
} else if (parseInt(share.type) === OCA.Data.SHARE_TYPE_USER) {
let li = OCA.Data.Sidebar.Share.buildShareeRow(share.id, share.uid_owner);
shareWithList_sharee.appendChild(li);
}
Expand Down
50 changes: 19 additions & 31 deletions lib/Activity/ActivityManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,39 +11,41 @@

namespace OCA\Analytics\Activity;

use OCA\Analytics\Service\DatasetService;
use OCA\Analytics\Controller\DbController;
use OCP\Activity\IEvent;
use OCP\Activity\IManager;
use OCP\IL10N;
use OCP\IUser;

use OCP\ILogger;

class ActivityManager
{

const OBJECT_DATASET = 'analytics_dataset';
const OBJECT_DATA = 'analytics_data';
const SUBJECT_DATASET_ADD = 'dataset_add';
const SUBJECT_DATASET_DELETE = 'dataset_delete';
const SUBJECT_DATASET_SHARE = 'dataset_share';
const SUBJECT_DATA_ADD = 'data_add';
const SUBJECT_DATA_ADD_API = 'data_add_api';

private $manager;
private $l10n;
private $userId;
private $DatasetService;
private $DBController;
private $logger;

public function __construct(
IManager $manager,
IL10N $l10n,
DatasetService $DatasetService,
$userId
DbController $DBController,
$userId,
ILogger $logger
)
{
$this->manager = $manager;
$this->l10n = $l10n;
$this->userId = $userId;
$this->DatasetService = $DatasetService;
$this->DBController = $DBController;
$this->logger = $logger;
}

public function triggerEvent($datasetId, $eventType, $eventSubject)
Expand All @@ -60,45 +62,31 @@ public function triggerEvent($datasetId, $eventType, $eventSubject)

private function createEvent($datasetId, $eventType, $eventSubject, $ownActivity = true, $author = null)
{

$dataset = $this->DatasetService->getOwnDataset($datasetId);
$datasetName = $datasetId !== 0 ? $this->DBController->getOwnDataset($datasetId)['name'] : '';
$event = $this->manager->generateEvent();
$event->setApp('analytics')
->setType($eventType)
->setAuthor($this->userId)
->setObject('report', (int)$datasetId, $dataset['name'])
->setObject('report', (int)$datasetId, $datasetName)
->setSubject($eventSubject, ['author' => $this->userId])
->setTimestamp(time());
return $event;
}

/**
* Publish activity to all users that are part of the board of a given object
* Publish activity to all users that are part of the dataset
*
* @param IEvent $event
*/
private function sendToUsers(IEvent $event)
{
$event->setAffectedUser('admin');
$this->manager->publish($event);


switch ($event->getObjectType()) {
case self::DECK_OBJECT_BOARD:
$mapper = $this->boardMapper;
break;
case self::DECK_OBJECT_CARD:
$mapper = $this->cardMapper;
break;
}
$boardId = $mapper->findBoardId($event->getObjectId());
/** @var IUser $user */
foreach ($this->permissionService->findUsers($boardId) as $user) {
$event->setAffectedUser($user->getUID());
/** @noinspection DisconnectedForeachInstructionInspection */
$users = $this->DBController->getSharedReceiver($event->getObjectId());
//$this->logger->error($users);
foreach ($users as $user) {
$event->setAffectedUser($user['uid_owner']);
$this->manager->publish($event);
}


$event->setAffectedUser('admin');
$this->manager->publish($event);
}
}
4 changes: 2 additions & 2 deletions lib/Activity/Provider.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,10 @@ public function parse($language, IEvent $event, IEvent $previousEvent = null)

switch ($event->getSubject()) {
case ActivityManager::SUBJECT_DATASET_ADD:
$parsedSubject = $this->l10n->t('You have created a new report {report}');
$parsedSubject = $this->l10n->t('You created a new report');
break;
case ActivityManager::SUBJECT_DATASET_DELETE:
$parsedSubject = $this->l10n->t('You have deleted the report {report}');
$parsedSubject = $this->l10n->t('You deleted report {report}');
break;
case ActivityManager::SUBJECT_DATASET_SHARE:
if ($ownActivity) {
Expand Down
2 changes: 1 addition & 1 deletion lib/Activity/SettingData.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ public function canChangeStream()
*/
public function isDefaultEnabledStream()
{
return true;
return false;
}

/**
Expand Down
10 changes: 9 additions & 1 deletion lib/Controller/DbController.php
Original file line number Diff line number Diff line change
Expand Up @@ -268,14 +268,22 @@ public function createShare($datasetId, $type, $uid_owner, $token)
return true;
}

public function getShare($datasetId)
public function getShares($datasetId)
{
$SQL = 'SELECT id, type, uid_owner, token, (CASE WHEN password IS NOT NULL THEN true ELSE false END) AS pass FROM `*PREFIX*analytics_share` WHERE uid_initiator = ? AND dataset = ?';
$stmt = $this->db->prepare($SQL);
$stmt->execute([$this->userId, $datasetId]);
return $stmt->fetchAll();
}

public function getSharedReceiver($datasetId)
{
$SQL = 'SELECT uid_owner FROM `*PREFIX*analytics_share` WHERE uid_initiator = ? AND dataset = ? AND type = 0';
$stmt = $this->db->prepare($SQL);
$stmt->execute([$this->userId, $datasetId]);
return $stmt->fetchAll();
}

public function updateShare($shareId, $password)
{
$SQL = 'UPDATE `*PREFIX*analytics_share` SET `password`= ? WHERE `uid_initiator` = ? AND `id` = ?';
Expand Down
67 changes: 43 additions & 24 deletions lib/Controller/ShareController.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

namespace OCA\Analytics\Controller;

use OCA\Analytics\Activity\ActivityManager;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http\DataResponse;
use OCP\ILogger;
Expand All @@ -19,36 +20,49 @@

class ShareController extends Controller
{
const SHARE_TYPE_USER = 0;
const SHARE_TYPE_LINK = 3;

private $logger;
private $DBController;
private $secureRandom;
private $ActivityManager;

public function __construct(
$appName,
IRequest $request,
ILogger $logger,
DbController $DBController,
ActivityManager $ActivityManager,
ISecureRandom $secureRandom
)
{
parent::__construct($appName, $request);
$this->logger = $logger;
$this->DBController = $DBController;
$this->secureRandom = $secureRandom;
$this->ActivityManager = $ActivityManager;
}

/**
* get all datasets
* get all dataset by token
*
* @NoAdminRequired
* @param $token
* @return array
*/
public function getDatasetByToken($token)
{
return $this->DBController->getDatasetByToken($token);
}

/**
* get all datasets
* verify password hahes
*
* @NoAdminRequired
* @param $password
* @param $sharePassword
* @return bool
*/
public function verifyPassword($password, $sharePassword)
{
Expand All @@ -57,6 +71,7 @@ public function verifyPassword($password, $sharePassword)

/**
* get all datasets shared with user
*
* @NoAdminRequired
*/
public function getSharedDatasets()
Expand All @@ -65,63 +80,67 @@ public function getSharedDatasets()
}

/**
* get all datasets shared with user
* get metadata of a dataset, shared with current user
*
* @NoAdminRequired
* @param $id
* @return
* @return array
*/
public function getSharedDataset($id)
{
return $this->DBController->getSharedDataset($id);
}

/**
* get all datasets shared with user
* create a new share
*
* @NoAdminRequired
* @param $id
* @return
* @param $datasetId
* @param $type
* @return DataResponse
*/
public function create($datasetId, $type)
{
if ($type === '3') { // Link Share
$token = $this->generateToken();
}
$this->logger->error($type . $token);

$token = $this->generateToken();
//$this->logger->error($type . $token);
$this->ActivityManager->triggerEvent($datasetId, ActivityManager::OBJECT_DATASET, ActivityManager::SUBJECT_DATASET_SHARE);
return new DataResponse($this->DBController->createShare($datasetId, $type, null, $token));
}

/**
* get all datasets shared with user
* get all shares for a dataset
*
* @NoAdminRequired
* @param $id
* @return
* @param $datasetId
* @return DataResponse
*/
public function read($datasetId)
{
return new DataResponse($this->DBController->getShare($datasetId));
return new DataResponse($this->DBController->getShares($datasetId));
}

/**
* get all datasets shared with user
* update/set share password
*
* @NoAdminRequired
* @param $id
* @return
* @param $shareId
* @param $password
* @return DataResponse
*/
public function update($shareId, $password)
{
$this->logger->error($shareId . $password);
//$this->logger->error($shareId . $password);
if ($password !== '') $password = password_hash($password, PASSWORD_DEFAULT);
else $password = null;
$this->logger->error($shareId . $password);
return new DataResponse($this->DBController->updateShare($shareId, $password));
}

/**
* get all datasets shared with user
* delete a share
*
* @NoAdminRequired
* @param $id
* @return
* @param $shareId
* @return DataResponse
*/
public function delete($shareId)
{
Expand Down
9 changes: 7 additions & 2 deletions lib/Service/DatasetService.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,25 @@

namespace OCA\Analytics\Service;

use OCA\Analytics\Activity\ActivityManager;
use OCA\Analytics\Controller\DbController;
use OCP\ILogger;

class DatasetService
{
private $logger;
private $DBController;
private $activityManager;
private $ActivityManager;

public function __construct(
ILogger $logger,
DbController $DBController
DbController $DBController,
ActivityManager $ActivityManager
)
{
$this->logger = $logger;
$this->DBController = $DBController;
$this->ActivityManager = $ActivityManager;
}

/**
Expand All @@ -53,6 +56,7 @@ public function getOwnDataset($id)
*/
public function create()
{
$this->ActivityManager->triggerEvent(0, ActivityManager::OBJECT_DATASET, ActivityManager::SUBJECT_DATASET_ADD);
return $this->DBController->createDataset();
}

Expand All @@ -63,6 +67,7 @@ public function create()
*/
public function delete($id)
{
$this->ActivityManager->triggerEvent($id, ActivityManager::OBJECT_DATASET, ActivityManager::SUBJECT_DATASET_DELETE);
return $this->DBController->deleteDataset($id);
}

Expand Down

0 comments on commit 13c2ad9

Please sign in to comment.