Visman пре 7 година
родитељ
комит
8d98116825
2 измењених фајлова са 53 додато и 7 уклоњено
  1. 3 6
      app/Models/Group/Delete.php
  2. 50 1
      app/Models/Group/Perm.php

+ 3 - 6
app/Models/Group/Delete.php

@@ -10,7 +10,7 @@ use RuntimeException;
 class Delete extends Action
 class Delete extends Action
 {
 {
     /**
     /**
-     * Удаляет тему(ы) 
+     * Удаляет группу
      *
      *
      * @param Group $group
      * @param Group $group
      * @param Group $new
      * @param Group $new
@@ -20,15 +20,12 @@ class Delete extends Action
      */
      */
     public function delete(Group $group, Group $new = null)
     public function delete(Group $group, Group $new = null)
     {
     {
-        //????
-#       if (! $arg->parent instanceof Forum) {
-#           throw new RuntimeException('Parent unavailable');
-#       }
-
         if (null !== $new) {
         if (null !== $new) {
             $this->c->users->promote($group, $new);
             $this->c->users->promote($group, $new);
         }
         }
 
 
+        $this->manager->Perm->delete($group);
+
         $vars = [
         $vars = [
             ':gid' => $group->g_id,
             ':gid' => $group->g_id,
         ];
         ];

+ 50 - 1
app/Models/Group/Perm.php

@@ -115,7 +115,7 @@ class Perm extends Action
     }
     }
 
 
     /**
     /**
-     * Обновление разрешений для раздела
+     * Сброс разрешений для раздела
      *
      *
      * @param Forum $forum
      * @param Forum $forum
      * 
      * 
@@ -134,4 +134,53 @@ class Perm extends Action
                 WHERE forum_id=?i:fid';
                 WHERE forum_id=?i:fid';
         $this->c->DB->exec($sql, $vars);
         $this->c->DB->exec($sql, $vars);
     }
     }
+
+    /**
+     * Удаление разрешений для группы
+     *
+     * @param Group $group
+     * 
+     * @throws RuntimeException
+     */
+    public function delete(Group $group)
+    {
+        if ($group->g_id < 1) {
+            throw new RuntimeException('The group does not have ID');
+        }
+
+        $vars = [
+            ':gid' => $group->g_id,
+        ];
+        $sql = 'DELETE FROM ::forum_perms 
+                WHERE group_id=?i:gid';
+        $this->c->DB->exec($sql, $vars);
+    }
+
+    /**
+     * Копирование разрешений первой группы во вторую
+     *
+     * @param Group $from
+     * @param Group $to
+     * 
+     * @throws RuntimeException
+     */
+    public function copy(Group $from, Group $to)
+    {
+        if ($from->g_id < 1 || $to->g_id < 1) {
+            throw new RuntimeException('The group does not have ID');
+        }
+
+        $this->delete($to);
+
+        $vars = [
+            ':old' => $from->g_id,
+            ':new' => $to->g_id,
+        ];
+        $sql = 'INSERT INTO ::forum_perms (group_id, forum_id, read_forum, post_replies, post_topics) 
+                SELECT ?i:new, forum_id, read_forum, post_replies, post_topics 
+                FROM ::forum_perms 
+                WHERE group_id=?i:old';
+
+        $this->c->DB->exec($sql, $vars);
+    }
 }
 }