Exemplo n.º 1
0
 /**
  *
  */
 public function groupWalker(&$item, $key, $mparent = null)
 {
     if (is_array($item)) {
         $parent = Group::find()->disableAccessCheck()->where(['name' => $key])->one();
         if (empty($parent)) {
             $parent = new Group();
             //$parent->disableAcl();
             $parent->name = $key;
             $parent->system = preg_replace('/ /', '_', strtolower($parent->name));
             $parent->level = $this->getGroupLevel($key);
             if (!$parent->save()) {
                 $this->errors[] = "Failed to create group {$key}!";
                 return false;
             }
             if (!empty($mparent)) {
                 $r = new Relation();
                 $r->parent_object_id = $mparent;
                 $r->child_object_id = $parent->id;
                 $r->active = 1;
                 if (!$r->save()) {
                     $this->errors[] = "Failed to create group relationship {$key}!";
                     return false;
                 }
             }
         }
         $item = array_walk($item, [$this, 'groupWalker'], $parent->id);
     } else {
         $sitem = Group::find()->disableAccessCheck()->where(['name' => $item])->one();
         if (empty($sitem)) {
             $sitem = new Group();
             //$sitem->disableAcl();
             $sitem->name = $item;
             $sitem->system = preg_replace('/ /', '_', strtolower($sitem->name));
             $sitem->level = $this->getGroupLevel($item);
             if (!$sitem->save()) {
                 $this->errors[] = "Failed to create group {$item}!";
                 return false;
             }
             if (!empty($mparent)) {
                 $r = new Relation();
                 $r->parent_object_id = $mparent;
                 $r->child_object_id = $sitem->id;
                 $r->active = 1;
                 if (!$r->save()) {
                     $this->errors[] = "Failed to create group relationship {$key}!";
                     return false;
                 }
             }
         }
         $setup->registry['Group'][$item] = $sitem->id;
     }
 }