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;
}