Newer
Older
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
class AddActivities extends Migration
{
public function description()
{
return 'add table for activities';
}
public function up()
{
$db = DBManager::get();
$db->exec("CREATE TABLE `activities` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`object_id` varchar(255) NOT NULL,
`context` enum('system','course','institute','user') NOT NULL,
`context_id` varchar(32) NOT NULL,
`provider` varchar(255) NOT NULL,
`actor_type` varchar(255) NOT NULL,
`actor_id` varchar(255) NOT NULL,
`verb` enum('answered','attempted','attended','completed','created','deleted','edited','experienced','failed','imported','interacted','passed','shared','sent','voided') NOT NULL DEFAULT 'experienced',
`content` text NULL,
`object_type` varchar(255) NOT NULL,
`mkdate` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `context_id` (`context_id`),
KEY `mkdate` (`mkdate`)
) ENGINE = InnoDB ROW_FORMAT=DYNAMIC");
//CHECK IF API IS ENABLED
if (!Config::get()->API_ENABLED) {
$db->exec("UPDATE `config` SET `value` = '1' WHERE `field` = 'API_ENABLED'");
}
//SET PERMISSION FOR ROUTE
$permissions = RESTAPI\ConsumerPermissions::get('global');
$permissions->set('/user/:user_id/activitystream','get', true, true);
$permissions->store();
//CHECK IF OLD ACTIVITY-FEED-PLUGIN IS ACTIVE
$old_id = $db->query("SELECT pluginid FROM plugins
WHERE pluginclassname = 'ActivityFeed'
AND pluginpath NOT LIKE '%core%'")->fetchColumn();
if ($old_id !== false) {
$stmt = $db->prepare("DELETE FROM plugins WHERE pluginid = ?");
$stmt->execute([$old_id]);
$stmt = $db->prepare("DELETE FROM plugins_activated WHERE pluginid = ?");
$stmt->execute([$old_id]);
$stmt = $db->prepare("DELETE FROM plugins_default_activations WHERE pluginid = ?");
$stmt->execute([$old_id]);
$stmt = $db->prepare("DELETE FROM roles_plugins WHERE pluginid = ?");
$stmt->execute([$old_id]);
}
// Activate Widget
$classname = "ActivityFeed";
$navpos = $db->query("SELECT navigationpos FROM plugins
ORDER BY navigationpos DESC")->fetchColumn() + 1;
// insert plugin into db
$stmt = $db->prepare("INSERT INTO plugins
(pluginclassname, pluginpath, pluginname, plugintype, enabled, navigationpos)
VALUES (?, ?, ?, 'PortalPlugin', 'yes', ?)");
$stmt->execute([$classname, 'core/'.$classname, $classname, $navpos]);
// get id of newly created plugin (
$plugin_id = $db->query("SELECT pluginid FROM plugins
WHERE pluginclassname = '$classname'")->fetchColumn();
// set all default roles for the plugin
$stmt = $db->prepare("INSERT INTO roles_plugins
(roleid, pluginid) VALUES (?, ?)");
foreach (range(1, 6) as $role_id) {
$stmt->execute([$role_id, $plugin_id]);
}
}
public function down()
{
//DEACTIVATE ROUTE
$permissions = RESTAPI\ConsumerPermissions::get('global');
$permissions->set('/user/:user_id/activitystream','get', false, true);
$permissions->store();
$db = DBManager::get();
//REMOVE WIDGET
$widget_id = $db->query("SELECT pluginid FROM plugins
WHERE pluginclassname = 'ActivityFeed'")->fetchColumn();
$stmt = $db->prepare("DELETE FROM plugins WHERE pluginid = ?");
$stmt->execute([$widget_id]);
$stmt = $db->prepare("DELETE FROM widget_default WHERE pluginid = ?");
$stmt->execute([$widget_id]);
$stmt = $db->prepare("DELETE FROM widget_user WHERE pluginid = ?");
$stmt->execute([$widget_id]);
$stmt = $db->prepare("DELETE FROM roles_plugins WHERE pluginid = ?");
$stmt->execute([$widget_id]);
$db->exec("DROP TABLE `activities`");
}
}