Skip to content

Commit 30a1ab6

Browse files
authored
Merge pull request #6 from AndyMac2508/master
added functionality to allow retrieval of multiple ids base upon role
2 parents 9199224 + 838abe8 commit 30a1ab6

File tree

7 files changed

+83
-7
lines changed

7 files changed

+83
-7
lines changed

src/DatabaseDrivers/EloquentDatabaseDriver.php

100644100755
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,22 @@ protected function setRoles($className, $foreignId, $roles)
6565
$role->save();
6666
}
6767

68+
public function getAllByRole($className,$role)
69+
{
70+
$rows = array();
71+
$getRows = Role::where('class_name', $className)->where('role','LIKE ', '%'.$role.'%')->get();
72+
foreach($getRows as $row)
73+
{
74+
$rows[] = $row->foreign_id;
75+
}
76+
77+
78+
79+
80+
return $rows;
81+
82+
}
83+
84+
85+
6886
}

src/DatabaseDrivers/PDODatabaseDriver.php

100644100755
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,4 +96,22 @@ protected function setRoles($className, $foreignId, $roles)
9696
$stmt->execute([$roles, $className, $foreignId]);
9797
}
9898

99+
public function getAllByRole($className,$role)
100+
{
101+
$rows = array();
102+
$sql = 'select foreign_id from '.$this->table.' where class_name = ? and roles like ?';
103+
104+
$connection = $this->getConnection();
105+
106+
$stmt = $connection->prepare($sql);
107+
$stmt->execute([$className, '%'.$role.'%']);
108+
while($row = $stmt->fetchObject())
109+
{
110+
$rows[] = $row->foreign_id;
111+
}
112+
113+
return $rows;
114+
115+
}
116+
99117
}

src/DatabaseHelper.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?
2+
namespace DivineOmega\ThisIsHowIRole;
3+
4+
use DivineOmega\ThisIsHowIRole\DatabaseDrivers\PDODatabaseDriver;
5+
use DivineOmega\ThisIsHowIRole\DatabaseDrivers\EloquentDatabaseDriver;
6+
7+
abstract class DatabaseHelper
8+
{
9+
public static function getDatabaseDriver()
10+
{
11+
if (class_exists('Illuminate\Database\Eloquent\Model')) {
12+
return new EloquentDatabaseDriver();
13+
} else {
14+
return new PDODatabaseDriver();
15+
}
16+
}
17+
}

src/Example.php

100644100755
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
/* Test User class */
1616

1717
use DivineOmega\ThisIsHowIRole\RolesTrait as Roles;
18+
use DivineOmega\ThisIsHowIRole\Utils;
1819

1920
class User
2021
{
@@ -28,10 +29,18 @@ class User
2829

2930
$user = new User;
3031

32+
$roles = $user->roles->all();
33+
34+
35+
36+
37+
38+
3139
$user->roles->add('can_eat_cake');
3240
$user->roles->add('can_eat_cookies');
3341
$user->roles->remove('can_eat_cookies');
3442

43+
3544
echo 'This user can ';
3645

3746
if ($user->roles->has('can_eat_cake')) {
@@ -42,4 +51,6 @@ class User
4251
echo 'eat cookies... ';
4352
}
4453

54+
$users = Utils::getIdsByRole('User',' can_eat_cake');
55+
4556
echo "\n";

src/Interfaces/DatabaseDriverInterface.php

100644100755
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ interface DatabaseDriverInterface
77
public function add($className, $foreignId, $role);
88
public function remove($className, $foreignId, $role);
99
public function all($className, $foreignId);
10+
public function getAllByRole($className,$role);
1011

1112
}

src/RolesManager.php

100644100755
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
namespace DivineOmega\ThisIsHowIRole;
44

5-
use DivineOmega\ThisIsHowIRole\DatabaseDrivers\PDODatabaseDriver;
6-
use DivineOmega\ThisIsHowIRole\DatabaseDrivers\EloquentDatabaseDriver;
5+
6+
use DivineOmega\ThisIsHowIRole\DatabaseHelper;
77

88
class RolesManager
99
{
@@ -22,11 +22,9 @@ public function __construct($object)
2222

2323
$this->object = $object;
2424

25-
if (class_exists('Illuminate\Database\Eloquent\Model')) {
26-
$this->database = new EloquentDatabaseDriver();
27-
} else {
28-
$this->database = new PDODatabaseDriver();
29-
}
25+
26+
$this->database = DatabaseHelper::getDatabaseDriver();
27+
3028

3129
$this->database->setupCache();
3230
}
@@ -50,4 +48,5 @@ public function all()
5048
{
5149
return $this->database->all(get_class($this->object), $this->object->id);
5250
}
51+
5352
}

src/Utils.php

100644100755
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
namespace DivineOmega\ThisIsHowIRole;
44

5+
use DivineOmega\ThisIsHowIRole\DatabaseHelper;
6+
7+
58
abstract class Utils
69
{
710
private static $testMode = null;
@@ -20,4 +23,13 @@ public static function testModeActive()
2023
{
2124
return self::$testMode;
2225
}
26+
27+
public static function getIdsByRole($className,$role)
28+
{
29+
$database = DatabaseHelper::getDatabaseDriver();
30+
31+
$ids = $database->getAllByRole($className,$role);
32+
33+
return $ids;
34+
}
2335
}

0 commit comments

Comments
 (0)