Elgg\Database\Plugins::setPriorities PHP Method

setPriorities() public method

Plugins not included in this array will be appended to the end.
public setPriorities ( array $order ) : boolean
$order array An array of plugin ids in the order to set them
return boolean
    function setPriorities(array $order)
    {
        $name = $this->namespacePrivateSetting('internal', 'priority');
        $plugins = $this->find('any');
        if (!$plugins) {
            return false;
        }
        $return = true;
        // reindex to get standard counting. no need to increment by 10.
        // though we do start with 1
        $order = array_values($order);
        $missing_plugins = array();
        /* @var \ElggPlugin[] $missing_plugins */
        foreach ($plugins as $plugin) {
            $plugin_id = $plugin->getID();
            if (!in_array($plugin_id, $order)) {
                $missing_plugins[] = $plugin;
                continue;
            }
            $priority = array_search($plugin_id, $order) + 1;
            if (!$plugin->setPrivateSetting($name, $priority)) {
                $return = false;
                break;
            }
        }
        // set the missing plugins' priorities
        if ($return && $missing_plugins) {
            if (!isset($priority)) {
                $priority = 0;
            }
            foreach ($missing_plugins as $plugin) {
                $priority++;
                if (!$plugin->setPrivateSetting($name, $priority)) {
                    $return = false;
                    break;
                }
            }
        }
        return $return;
    }