/
UserEntity.php
94 lines (82 loc) · 2.98 KB
/
UserEntity.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
namespace Concrete\Core\Permission\Access\Entity;
use Config;
use Loader;
use Concrete\Core\Permission\Access\Access as PermissionAccess;
use URL;
use Concrete\Core\User\UserInfo;
class UserEntity extends Entity
{
protected $uID;
public static function getAccessEntitiesForUser($user)
{
$entities = [];
$db = Loader::db();
if ($user->isRegistered()) {
// we find the peID for the current user, if one exists. This means that the user has special permissions set just for them.
$peID = $db->GetOne(
'SELECT peID FROM PermissionAccessEntityUsers WHERE uID = ?',
[$user->getUserID()]);
if ($peID > 0) {
$entity = \Concrete\Core\Permission\Access\Entity\Entity::getByID($peID);
if (is_object($entity)) {
$entities[] = $entity;
}
}
}
return $entities;
}
public static function getOrCreate(UserInfo $ui)
{
$db = Loader::db();
$petID = $db->GetOne('SELECT petID FROM PermissionAccessEntityTypes WHERE petHandle = \'user\'');
$peID = $db->GetOne(
'SELECT pae.peID FROM PermissionAccessEntities pae INNER JOIN PermissionAccessEntityUsers paeg ON pae.peID = paeg.peID WHERE petID = ? AND paeg.uID = ?',
[$petID, $ui->getUserID()]);
if (!$peID) {
$db->Execute('INSERT INTO PermissionAccessEntities (petID) VALUES(?)', [$petID]);
$peID = $db->Insert_ID();
Config::save('concrete.misc.access_entity_updated', time());
$db->Execute(
'INSERT INTO PermissionAccessEntityUsers (peID, uID) VALUES (?, ?)',
[$peID, $ui->getUserID()]);
}
return \Concrete\Core\Permission\Access\Entity\Entity::getByID($peID);
}
public function getAccessEntityUsers(PermissionAccess $pa)
{
$users = [];
$u = $this->getUserObject();
if (is_object($u)) {
$users[] = $u;
}
return $users;
}
public function getUserObject()
{
return \UserInfo::getByID($this->uID);
}
public function getAccessEntityTypeLinkHTML()
{
$html = '<a href="' . URL::to(
'/ccm/system/dialogs/user/search') . '" dialog-modal="false" dialog-width="90%" dialog-title="' . t(
'Add User') . '" class="dialog-launch" dialog-height="70%">' . tc(
'PermissionAccessEntityTypeName',
'User') . '</a>';
return $html;
}
public function load()
{
$db = Loader::db();
$uID = $db->GetOne('SELECT uID FROM PermissionAccessEntityUsers WHERE peID = ?', [$this->peID]);
if ($uID) {
$ui = \UserInfo::getByID($uID);
if (is_object($ui)) {
$this->uID = $uID;
$this->label = $ui->getUserName();
} else {
$this->label = t('(Deleted User)');
}
}
}
}