-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathboot.php
More file actions
123 lines (105 loc) · 5.32 KB
/
boot.php
File metadata and controls
123 lines (105 loc) · 5.32 KB
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
112
113
114
115
116
117
118
119
120
121
122
123
<?php
if (rex::isBackend() && is_object(rex::getUser())) {
rex_perm::register('notalone[]');
}
if ( rex::isBackend() && rex::getUser() ) {
rex_extension::register('META_NAVI', function (rex_extension_point $ep) {
// DELETE OLD ENTRYS OF SAME USER
$page = rex_be_controller::getCurrentPage();
// credits page ist used every 5 minutes for keepAliveInterval via ajax > so exclude this
if ($page !== 'credits') {
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setTable(rex::getTable('notalone'));
$sql->setWhere(['be_user' => rex::getUser()->getLogin()]);
$sql->delete();
}
// DELETE OLD ENTRYS OF OTHER USERS WITHOUT ACTIVE SESSION
$qry = "SELECT * FROM `rex_user` WHERE session_id=:session_id";
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setQuery($qry, [':session_id' => '']);
if ($results = $sql->getArray()) {
foreach ($results as $result) {
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setTable(rex::getTable('notalone'));
$sql->setWhere(['be_user' => $result['login']]);
$sql->delete();
}
}
}, \rex_extension::EARLY);
rex_extension::register('STRUCTURE_CONTENT_BEFORE_SLICES', function (rex_extension_point $ep) {
$params = $ep->getParams();
// Params: 'article_id', 'clang', 'slice_id', 'page', 'ctype', 'category_id', 'article_revision', 'slice_revision'
// CHECK IF EXISTS
$qry = "SELECT * FROM `rex_notalone` WHERE article_id=:article_id && category_id=:category_id && clang=:clang LIMIT 1";
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setQuery($qry, [':article_id' => $params['article_id'],':category_id' => $params['category_id'],':clang' => $params['clang']]);
if (1 == $sql->getRows())
{
// if not the same user: show warning
if (rex::getUser()->getLogin() !== $sql->getValue('be_user')) {
$time_passed = intval(date('i', time() - $sql->getValue('timestamp')));
$error = $this->i18n('notalone_hinweis_part1').' '.$sql->getValue('be_user').' '.$this->i18n('notalone_hinweis_part2').' '.$time_passed.' '.$this->i18n('notalone_hinweis_part3');
echo rex_view::error($error);
}
}
else {
// INSERT
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setTable(rex::getTable('notalone'));
$sql->setValue('timestamp', time());
$sql->setValue('be_user', rex::getUser()->getLogin());
$sql->setValue('article_id', $params['article_id']);
$sql->setValue('category_id', $params['category_id']);
$sql->setValue('clang', $params['clang']);
$sql->setValue('slice_id', $params['slice_id']);
try {
$sql->insert();
//echo rex_view::success('Seite gesperrt');
} catch (Exception $e) {
//echo rex_view::error('Fehler beim Sperren.');
}
}
}, \rex_extension::LATE);
rex_extension::register('YFORM_DATA_UPDATE', function (rex_extension_point $ep) {
//$params = $ep->getParams();
// Params: 'table', 'data_id', 'data'
$table = $ep->getParam('table')->getTableName();
$table_id = $ep->getParam('table')->getId();
$data_id = $ep->getParam('data_id');
// CHECK IF EXISTS
$qry = "SELECT * FROM `rex_notalone` WHERE table_id=:table_id && data_id=:data_id LIMIT 1";
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setQuery($qry, [':table_id' => $table_id,':data_id' => $data_id]);
if (1 == $sql->getRows())
{
// if not the same user: show warning
if (rex::getUser()->getLogin() !== $sql->getValue('be_user')) {
$time_passed = intval(date('i', time() - $sql->getValue('timestamp')));
$error = $this->i18n('notalone_hinweis_part1').' '.$sql->getValue('be_user').' '.$this->i18n('notalone_hinweis_part2').' '.$time_passed.' '.$this->i18n('notalone_hinweis_part3');
echo rex_view::error($error);
}
}
else {
// INSERT
$sql = rex_sql::factory();
$sql->setDebug(false);
$sql->setTable(rex::getTable('notalone'));
$sql->setValue('timestamp', time());
$sql->setValue('be_user', rex::getUser()->getLogin());
$sql->setValue('table_id', $table_id);
$sql->setValue('data_id', $data_id);
try {
$sql->insert();
//echo rex_view::success('Seite gesperrt');
} catch (Exception $e) {
//echo rex_view::error('Fehler beim Sperren.');
}
}
},\rex_extension::LATE);
}