+ private function getGroup(PlPage $page, $group)
+ {
+ $groupid = XDB::fetchOneCell("SELECT id
+ FROM groups
+ WHERE (nom = {?} OR diminutif = {?}) AND NOT FIND_IN_SET('private', pub)",
+ $group, $group);
+ if (is_null($groupid)) {
+ $search = XDB::formatWildcards(XDB::WILDCARD_CONTAINS, $group);
+ $res = XDB::query('SELECT id
+ FROM groups
+ WHERE (nom ' . $search . ' OR diminutif ' . $search . ") AND NOT FIND_IN_SET('private', pub)",
+ $search, $search);
+ if ($res->numRows() == 1) {
+ $groupid = $res->fetchOneCell();
+ }
+ }
+ return $groupid;
+ }
+
+ private function addGroup(PlPage $page, $group)
+ {
+ $groupid = $this->getGroup($page, $group);
+ if (is_null($groupid)) {
+ return;
+ }
+ XDB::execute('INSERT IGNORE INTO watch_group (uid, groupid)
+ VALUES ({?}, {?})',
+ S::i('uid'), $groupid);
+ S::user()->invalidWatchCache();
+ Platal::session()->updateNbNotifs();
+ }
+
+ private function delGroup(PlPage $page, $group)
+ {
+ $groupid = $this->getGroup($page, $group);
+ if (is_null($groupid)) {
+ return;
+ }
+ XDB::execute('DELETE FROM watch_group
+ WHERE uid = {?} AND groupid = {?}',
+ S::i('uid'), $groupid);
+ S::user()->invalidWatchCache();
+ Platal::session()->updateNbNotifs();
+ }
+