Passed
Push — master ( 544106...3ee5a5 )
by Marcel
02:27
created

ShareMapper::getDatasetByToken()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 4
nc 1
nop 1
dl 0
loc 6
rs 10
c 1
b 0
f 0
1
<?php
2
/**
3
 * Data Analytics
4
 *
5
 * This file is licensed under the Affero General Public License version 3 or
6
 * later. See the LICENSE.md file.
7
 *
8
 * @author Marcel Scherello <[email protected]>
9
 * @copyright 2019 Marcel Scherello
10
 */
11
12
namespace OCA\Analytics\Db;
13
14
use OCP\IDbConnection;
15
use OCP\IL10N;
16
use OCP\ILogger;
17
18
class ShareMapper
19
{
20
    private $userId;
21
    private $l10n;
22
    private $db;
23
    private $logger;
24
25
    public function __construct(
26
        $userId,
27
        IL10N $l10n,
28
        IDbConnection $db,
29
        ILogger $logger
30
    )
31
    {
32
        $this->userId = $userId;
33
        $this->l10n = $l10n;
34
        $this->db = $db;
35
        $this->logger = $logger;
36
    }
37
38
    /**
39
     * get datasets
40
     * @param $token
41
     * @return
42
     */
43
    public function getDatasetByToken($token)
44
    {
45
        $SQL = 'SELECT DS.*, SH.password AS password FROM `*PREFIX*analytics_dataset` AS DS JOIN `*PREFIX*analytics_share` AS SH ON DS.id = SH.dataset WHERE SH.token = ?';
46
        $stmt = $this->db->prepare($SQL);
47
        $stmt->execute([$token]);
48
        return $stmt->fetch();
49
        //$this->logger->error($results['password']);
50
    }
51
52
    /**
53
     * get shared datasets
54
     * @return
55
     */
56
    public function getSharedDatasets()
57
    {
58
        $SQL = 'SELECT DS.id, DS.name, \'99\' as type, 0 as parent FROM `*PREFIX*analytics_dataset` AS DS JOIN `*PREFIX*analytics_share` AS SH ON DS.id = SH.dataset WHERE SH.uid_owner = ? ORDER BY DS.name ASC';
59
        //$this->logger->error($this->userId);
60
        $stmt = $this->db->prepare($SQL);
61
        $stmt->execute([$this->userId]);
62
        return $stmt->fetchAll();
63
    }
64
65
    /**
66
     * get shared datasets
67
     * @return
68
     */
69
    public function getSharedDataset($id)
70
    {
71
        $SQL = 'SELECT DS.* FROM `*PREFIX*analytics_dataset` AS DS JOIN `*PREFIX*analytics_share` AS SH ON DS.id = SH.dataset WHERE SH.uid_owner = ? AND DS.id = ?';
72
        //$this->logger->error($id);
73
        $stmt = $this->db->prepare($SQL);
74
        $stmt->execute([$this->userId, $id]);
75
        return $stmt->fetch();
76
    }
77
78
    public function createShare($datasetId, $type, $uid_owner, $token)
79
    {
80
        $SQL = 'INSERT INTO `*PREFIX*analytics_share` (`dataset`,`type`,`uid_owner`,`uid_initiator`,`token`) VALUES(?,?,?,?,?)';
81
        //$this->logger->error($datasetId, $type, $uid_owner, $token);
82
        $stmt = $this->db->prepare($SQL);
83
        $stmt->execute(array($datasetId, $type, $uid_owner, $this->userId, $token));
84
        return true;
85
    }
86
87
    public function getShares($datasetId)
88
    {
89
        $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 = ?';
90
        $stmt = $this->db->prepare($SQL);
91
        $stmt->execute([$this->userId, $datasetId]);
92
        return $stmt->fetchAll();
93
    }
94
95
    public function getSharedReceiver($datasetId)
96
    {
97
        $SQL = 'SELECT uid_owner FROM `*PREFIX*analytics_share` WHERE uid_initiator = ? AND dataset = ? AND type = 0';
98
        $stmt = $this->db->prepare($SQL);
99
        $stmt->execute([$this->userId, $datasetId]);
100
        return $stmt->fetchAll();
101
    }
102
103
    public function updateShare($shareId, $password)
104
    {
105
        $SQL = 'UPDATE `*PREFIX*analytics_share` SET `password`= ? WHERE `uid_initiator` = ? AND `id` = ?';
106
        //$this->logger->error($shareId. $password);
107
        $stmt = $this->db->prepare($SQL);
108
        $stmt->execute([$password, $this->userId, $shareId]);
109
        return true;
110
    }
111
112
    public function deleteShare($shareId)
113
    {
114
        $SQL = 'DELETE FROM `*PREFIX*analytics_share` WHERE `uid_initiator` = ? AND `id` = ?';
115
        $stmt = $this->db->prepare($SQL);
116
        $stmt->execute([$this->userId, $shareId]);
117
        return true;
118
    }
119
120
    public function deleteShareByDataset($datasetId)
121
    {
122
        $SQL = 'DELETE FROM `*PREFIX*analytics_share` WHERE `uid_initiator` = ? AND `dataset` = ?';
123
        $stmt = $this->db->prepare($SQL);
124
        $stmt->execute([$this->userId, $datasetId]);
125
        return true;
126
    }
127
}