| Total Complexity | 15 |
| Total Lines | 267 |
| Duplicated Lines | 0 % |
| Changes | 3 | ||
| Bugs | 0 | Features | 0 |
| 1 | <?php |
||
| 20 | class ShareMapper |
||
| 21 | { |
||
| 22 | /** @var IUserSession */ |
||
| 23 | private $userSession; |
||
| 24 | private $l10n; |
||
| 25 | private $db; |
||
| 26 | private $logger; |
||
| 27 | const TABLE_NAME = 'analytics_share'; |
||
| 28 | const TABLE_NAME_REPORT = 'analytics_report'; |
||
| 29 | |||
| 30 | public function __construct( |
||
| 43 | } |
||
| 44 | |||
| 45 | /** |
||
| 46 | * get all shared reports by token |
||
| 47 | * uses for public pages |
||
| 48 | * @param $token |
||
| 49 | * @return array |
||
| 50 | */ |
||
| 51 | public function getReportByToken($token) |
||
| 52 | { |
||
| 53 | $sql = $this->db->getQueryBuilder(); |
||
| 54 | $sql->from(self::TABLE_NAME_REPORT, 'DS') |
||
| 55 | ->leftJoin('DS', self::TABLE_NAME, 'SH', $sql->expr()->eq('DS.id', 'SH.repot')) |
||
| 56 | ->select('DS.*') |
||
| 57 | ->addSelect('SH.permissions') |
||
| 58 | ->selectAlias('SH.password', 'password') |
||
| 59 | ->where($sql->expr()->eq('SH.token', $sql->createNamedParameter($token))); |
||
| 60 | $statement = $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 61 | $result = $statement->fetch(); |
||
| 62 | $statement->closeCursor(); |
||
| 63 | return $result; |
||
| 64 | } |
||
| 65 | |||
| 66 | /** |
||
| 67 | * get shared reports for current user |
||
| 68 | * @return array |
||
| 69 | */ |
||
| 70 | public function getSharedReports() |
||
| 71 | { |
||
| 72 | $sql = $this->db->getQueryBuilder(); |
||
| 73 | $sql->from(self::TABLE_NAME_REPORT, 'DS') |
||
| 74 | ->leftJoin('DS', self::TABLE_NAME, 'SH', $sql->expr()->eq('DS.id', 'SH.report')) |
||
| 75 | ->select('DS.id', 'DS.name') |
||
| 76 | ->selectAlias('SH.id', 'shareId') |
||
| 77 | ->where($sql->expr()->eq('SH.uid_owner', $sql->createNamedParameter($this->userSession->getUser()->getUID()))) |
||
| 78 | ->andWhere($sql->expr()->neq('SH.type', $sql->createNamedParameter(1))); // don´t find groups with the same name |
||
| 79 | $statement = $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 80 | $result = $statement->fetchAll(); |
||
| 81 | $statement->closeCursor(); |
||
| 82 | return $result; |
||
| 83 | } |
||
| 84 | |||
| 85 | /** |
||
| 86 | * get single shared report for current user |
||
| 87 | * @param $id |
||
| 88 | * @return array |
||
| 89 | */ |
||
| 90 | public function getSharedReport($id) |
||
| 91 | { |
||
| 92 | $sql = $this->db->getQueryBuilder(); |
||
| 93 | $sql->from(self::TABLE_NAME_REPORT, 'DS') |
||
| 94 | ->leftJoin('DS', self::TABLE_NAME, 'SH', $sql->expr()->eq('DS.id', 'SH.report')) |
||
| 95 | ->select('DS.*') |
||
| 96 | ->addSelect('SH.permissions') |
||
| 97 | ->selectAlias($sql->createNamedParameter(true, IQueryBuilder::PARAM_BOOL), 'isShare') |
||
| 98 | ->where($sql->expr()->eq('SH.uid_owner', $sql->createNamedParameter($this->userSession->getUser()->getUID()))) |
||
| 99 | ->andWhere($sql->expr()->eq('DS.id', $sql->createNamedParameter($id))); |
||
| 100 | $statement = $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 101 | $result = $statement->fetch(); |
||
| 102 | $statement->closeCursor(); |
||
| 103 | return $result; |
||
| 104 | } |
||
| 105 | |||
| 106 | /** |
||
| 107 | * Create a new share |
||
| 108 | * @param $reportId |
||
| 109 | * @param $type |
||
| 110 | * @param $uid_owner |
||
| 111 | * @param $token |
||
| 112 | * @param $parent |
||
| 113 | * @return bool |
||
| 114 | * @throws \OCP\DB\Exception |
||
| 115 | */ |
||
| 116 | public function createShare($reportId, $type, $uid_owner, $token, $parent = null) |
||
| 117 | { |
||
| 118 | $sql = $this->db->getQueryBuilder(); |
||
| 119 | $sql->from(self::TABLE_NAME) |
||
| 120 | ->Select('id') |
||
| 121 | ->where($sql->expr()->eq('report', $sql->createNamedParameter($reportId))) |
||
| 122 | ->andWhere($sql->expr()->eq('type', $sql->createNamedParameter($type))) |
||
| 123 | ->andWhere($sql->expr()->eq('uid_owner', $sql->createNamedParameter($uid_owner))) |
||
| 124 | ->andWhere($sql->expr()->eq('uid_initiator', $sql->createNamedParameter($this->userSession->getUser()->getUID()))); |
||
| 125 | $statement = $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 126 | $result = $statement->fetchAll(); |
||
| 127 | $statement->closeCursor(); |
||
| 128 | |||
| 129 | if ($result && ($type !== 3)) { |
||
| 130 | // don´t create double shares |
||
| 131 | // multiple link shares (3) are possible |
||
| 132 | return false; |
||
| 133 | } else { |
||
| 134 | $sql = $this->db->getQueryBuilder(); |
||
| 135 | $sql->insert(self::TABLE_NAME) |
||
| 136 | ->values([ |
||
| 137 | 'report' => $sql->createNamedParameter($reportId), |
||
| 138 | 'type' => $sql->createNamedParameter($type), |
||
| 139 | 'uid_owner' => $sql->createNamedParameter($uid_owner), |
||
| 140 | 'uid_initiator' => $sql->createNamedParameter($this->userSession->getUser()->getUID()), |
||
| 141 | 'token' => $sql->createNamedParameter($token), |
||
| 142 | 'parent' => $sql->createNamedParameter($parent), |
||
| 143 | ]); |
||
| 144 | $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 145 | } |
||
| 146 | return $sql->getLastInsertId(); |
||
| 147 | } |
||
| 148 | |||
| 149 | /** |
||
| 150 | * Get single shares metadata |
||
| 151 | * @param $shareId |
||
| 152 | * @return array |
||
| 153 | */ |
||
| 154 | public function getShare($shareId) |
||
| 155 | { |
||
| 156 | $sql = $this->db->getQueryBuilder(); |
||
| 157 | $sql->from(self::TABLE_NAME) |
||
| 158 | ->select('id', 'type', 'parent') |
||
| 159 | ->where($sql->expr()->eq('id', $sql->createNamedParameter($shareId))); |
||
| 160 | $statement = $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 161 | $result = $statement->fetch(); |
||
| 162 | $statement->closeCursor(); |
||
| 163 | return $result; |
||
| 164 | } |
||
| 165 | |||
| 166 | /** |
||
| 167 | * Get all shares of a report |
||
| 168 | * @param $reportId |
||
| 169 | * @return array |
||
| 170 | */ |
||
| 171 | public function getShares($reportId) |
||
| 172 | { |
||
| 173 | $sql = $this->db->getQueryBuilder(); |
||
| 174 | $sql->from(self::TABLE_NAME) |
||
| 175 | ->select('id', 'type', 'uid_owner', 'token', 'permissions') |
||
| 176 | ->selectAlias('password', 'pass') |
||
| 177 | ->where($sql->expr()->eq('uid_initiator', $sql->createNamedParameter($this->userSession->getUser()->getUID()))) |
||
| 178 | ->andWhere($sql->expr()->eq('report', $sql->createNamedParameter($reportId))) |
||
| 179 | ->andWhere($sql->expr()->neq('type', $sql->createNamedParameter(2))); |
||
| 180 | $statement = $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 181 | $result = $statement->fetchAll(); |
||
| 182 | $statement->closeCursor(); |
||
| 183 | return $result; |
||
| 184 | } |
||
| 185 | |||
| 186 | /** |
||
| 187 | * Get the all receivers of shares of a report |
||
| 188 | * Used to derive who has to receive activities when a report changes |
||
| 189 | * @param $reportId |
||
| 190 | * @return array |
||
| 191 | */ |
||
| 192 | public function getSharedReceiver($reportId) |
||
| 193 | { |
||
| 194 | $sql = $this->db->getQueryBuilder(); |
||
| 195 | $sql->from(self::TABLE_NAME) |
||
| 196 | ->select('uid_owner') |
||
| 197 | ->where($sql->expr()->eq('report', $sql->createNamedParameter($reportId))) |
||
| 198 | ->andWhere($sql->expr()->eq('type', $sql->createNamedParameter(0))); |
||
| 199 | $statement = $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 200 | $result = $statement->fetchAll(); |
||
| 201 | $statement->closeCursor(); |
||
| 202 | return $result; |
||
| 203 | } |
||
| 204 | |||
| 205 | /** |
||
| 206 | * Update the password of a share |
||
| 207 | * @param $shareId |
||
| 208 | * @param $password |
||
| 209 | * @return bool |
||
| 210 | */ |
||
| 211 | public function updateSharePassword($shareId, $password) |
||
| 220 | } |
||
| 221 | |||
| 222 | /** |
||
| 223 | * Update the permissions of a share |
||
| 224 | * @param $shareId |
||
| 225 | * @param $password |
||
| 226 | * @return bool |
||
| 227 | */ |
||
| 228 | public function updateSharePermissions($shareId, $permissions) |
||
| 229 | { |
||
| 230 | $sql = $this->db->getQueryBuilder(); |
||
| 231 | $sql->update(self::TABLE_NAME) |
||
| 232 | ->set('permissions', $sql->createNamedParameter($permissions)) |
||
| 233 | ->where($sql->expr()->eq('uid_initiator', $sql->createNamedParameter($this->userSession->getUser()->getUID()))) |
||
| 234 | ->andWhere($sql->expr()->eq('id', $sql->createNamedParameter($shareId))); |
||
| 235 | $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 236 | return true; |
||
| 237 | } |
||
| 238 | |||
| 239 | /** |
||
| 240 | * Delete a share |
||
| 241 | * @param $shareId |
||
| 242 | * @return bool |
||
| 243 | * @throws \OCP\DB\Exception |
||
| 244 | */ |
||
| 245 | public function deleteShare($shareId) |
||
| 246 | { |
||
| 247 | $sql = $this->db->getQueryBuilder(); |
||
| 248 | $sql->delete(self::TABLE_NAME) |
||
| 249 | ->where($sql->expr()->eq('id', $sql->createNamedParameter($shareId))) |
||
| 250 | ->andWhere($sql->expr()->orX( |
||
| 251 | $sql->expr()->eq('uid_initiator', $sql->createNamedParameter($this->userSession->getUser()->getUID())), |
||
| 252 | $sql->expr()->eq('uid_owner', $sql->createNamedParameter($this->userSession->getUser()->getUID())) |
||
| 253 | )); |
||
| 254 | $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 255 | return true; |
||
| 256 | } |
||
| 257 | |||
| 258 | /** |
||
| 259 | * Delete all shares by parent ID (users of a group share) |
||
| 260 | * @param $parent |
||
| 261 | * @return bool |
||
| 262 | */ |
||
| 263 | public function deleteShareByParent($parent) |
||
| 264 | { |
||
| 265 | $sql = $this->db->getQueryBuilder(); |
||
| 266 | $sql->delete(self::TABLE_NAME) |
||
| 267 | ->where($sql->expr()->eq('uid_initiator', $sql->createNamedParameter($this->userSession->getUser()->getUID()))) |
||
| 268 | ->andWhere($sql->expr()->eq('parent', $sql->createNamedParameter($parent))); |
||
| 269 | $sql->execute(); |
||
|
1 ignored issue
–
show
|
|||
| 270 | return true; |
||
| 271 | } |
||
| 272 | |||
| 273 | /** |
||
| 274 | * Delete all shares of a report |
||
| 275 | * Used during report deletion |
||
| 276 | * @param $reportId |
||
| 277 | * @return bool |
||
| 278 | */ |
||
| 279 | public function deleteShareByReport($reportId) |
||
| 287 | } |
||
| 288 | } |
This function has been deprecated. The supplier of the function has supplied an explanatory message.
The explanatory message should give you some clue as to whether and when the function will be removed and what other function to use instead.