protected function manageItems()
    {
        foreach ($this->_items as $item) {

            if ($item instanceof Rule) {
                $item_exist = $this->_auth->getRule($item->name);
            } elseif ($item instanceof Role) {
                $item_exist = $this->_auth->getRole($item->name);
            } elseif ($item instanceof Permission) {
                $item_exist = $this->_auth->getPermission($item->name);
            } else {
                throw new InvalidParamException('Adding unsupported object type.');
            }

            if ($item_exist) {
                if ($item_exist instanceof __PHP_Incomplete_Class) {
                    $need_update = true;
                } else if ($item_exist instanceof Rule) {
                    $item->updatedAt = $item_exist->updatedAt;
                    $need_update = serialize($item_exist) != serialize($item);
                } else {
                    $need_update = $item_exist->description != $item->description || $item_exist->ruleName != $item->ruleName || $item_exist->data != $item->data;
                }

                if ($need_update) {
                    Console::stdout("Updating $item->name item data.\n");
                    $this->_auth->update($item->name, $item);
                }

            } else {
                Console::stdout("New item added: $item->name\n");
                $this->_auth->add($item);
            }
        }

        /** @var Role|Permission|Rule $items */
        $items = ArrayHelper::merge($this->_auth->getRules(), $this->_auth->getRules(), $this->_auth->getPermissions());

        foreach ($items as $existing_item) {
            if (!isset($this->_items[$existing_item->name])) {
                Console::stdout(Console::ansiFormat('Item removed: ' . $existing_item->name . "\n", [Console::FG_RED]));
                $this->_auth->remove($existing_item);
            }
        }
    }
protected function manageItems()
    {
        foreach ($this->_items as $item) {

            if ($item instanceof Rule) {
                $item_exist = $this->_auth->getRule($item->name);
            } elseif ($item instanceof Role) {
                $item_exist = $this->_auth->getRole($item->name);
            } elseif ($item instanceof Permission) {
                $item_exist = $this->_auth->getPermission($item->name);
            } else {
                throw new InvalidParamException('Adding unsupported object type.');
            }

            if ($item_exist) {
                if ($item_exist instanceof __PHP_Incomplete_Class) {
                    $need_update = true;
                } else if ($item_exist instanceof Rule) {
                    $item->updatedAt = $item_exist->updatedAt;
                    $need_update = serialize($item_exist) != serialize($item);
                } else {
                    $need_update = $item_exist->description != $item->description || $item_exist->ruleName != $item->ruleName || $item_exist->data != $item->data;
                }

                if ($need_update) {
                    Console::stdout("Updating $item->name item data.\n");
                    $this->_auth->update($item->name, $item);
                }

            } else {
                Console::stdout("New item added: $item->name\n");
                $this->_auth->add($item);
            }
        }

        /** @var Role|Permission|Rule $items */
        $items = ArrayHelper::merge($this->_auth->getRules(), $this->_auth->getRules(), $this->_auth->getPermissions());

        foreach ($items as $existing_item) {
            if (!isset($this->_items[$existing_item->name])) {
                Console::stdout(Console::ansiFormat('Item removed: ' . $existing_item->name . "\n", [Console::FG_RED]));
                $this->_auth->remove($existing_item);
            }
        }
    }
protected function manageItems ( ) { foreach ( $ this -> _items as $ item ) { if ( $ item instanceof Rule ) { $ item_exist = $ this -> _auth -> getRule ( $ item -> name ) ; } elseif ( $ item instanceof Role ) { $ item_exist = $ this -> _auth -> getRole ( $ item -> name ) ; } elseif ( $ item instanceof Permission ) { $ item_exist = $ this -> _auth -> getPermission ( $ item -> name ) ; } else { throw new InvalidParamException ( 'Adding unsupported object type.' ) ; } if ( $ item_exist ) { if ( $ item_exist instanceof __PHP_Incomplete_Class ) { $ need_update = true ; } else if ( $ item_exist instanceof Rule ) { $ item -> updatedAt = $ item_exist -> updatedAt ; $ need_update = serialize ( $ item_exist ) != serialize ( $ item ) ; } else { $ need_update = $ item_exist -> description != $ item -> description || $ item_exist -> ruleName != $ item -> ruleName || $ item_exist -> data != $ item -> data ; } if ( $ need_update ) { Console :: stdout ( "Updating $item->name item data.\n" ) ; $ this -> _auth -> update ( $ item -> name , $ item ) ; } } else { Console :: stdout ( "New item added: $item->name\n" ) ; $ this -> _auth -> add ( $ item ) ; } } /** @var Role|Permission|Rule $items */ $ items = ArrayHelper :: merge ( $ this -> _auth -> getRules ( ) , $ this -> _auth -> getRules ( ) , $ this -> _auth -> getPermissions ( ) ) ; foreach ( $ items as $ existing_item ) { if ( ! isset ( $ this -> _items [ $ existing_item -> name ] ) ) { Console :: stdout ( Console :: ansiFormat ( 'Item removed: ' . $ existing_item -> name . "\n" , [ Console :: FG_RED ] ) ) ; $ this -> _auth -> remove ( $ existing_item ) ; } } }
Adding or deleting items if needed
Adding or deleting items if needed