Returns the unique id of an widget with the given parameters
public static getWidgetUniqueId ( $controllerName, $controllerAction, array $customParameters = [] ) : string | ||
$controllerName | ||
$controllerAction | ||
$customParameters | array | |
return | string |
/** * Replaces widgets on the given dashboard layout with other ones * * It uses the given widget definitions to find the old and to create the new widgets * Each widget is defined with an array containing the following information * array ( * 'module' => string * 'action' => string * 'params' => array() * ) * * if $newWidget does not contain a widget definition at the current position, * the old widget will simply be removed * * @param array $oldWidgets array containing widget definitions * @param array $newWidgets array containing widget definitions */ public static function replaceDashboardWidgets($dashboardLayout, $oldWidgets, $newWidgets) { if (empty($dashboardLayout) || !isset($dashboardLayout->columns)) { return $dashboardLayout; } $newColumns = array(); foreach ($dashboardLayout->columns as $id => $column) { $newColumn = array(); foreach ($column as $widget) { foreach ($oldWidgets as $pos => $oldWidgetData) { $oldWidgetId = WidgetsList::getWidgetUniqueId($oldWidgetData['module'], $oldWidgetData['action'], $oldWidgetData['params']); if (empty($newWidgets[$pos])) { continue 2; } $newWidget = $newWidgets[$pos]; if ($widget->uniqueId == $oldWidgetId) { if (!empty($newWidget['uniqueId'])) { $newWidgetId = $newWidget['uniqueId']; } else { $newWidgetId = WidgetsList::getWidgetUniqueId($newWidget['module'], $newWidget['action'], $newWidget['params']); } // is new widget already is on dashboard just remove the old one if (self::layoutContainsWidget($dashboardLayout, $newWidgetId)) { continue 2; } $widget->uniqueId = $newWidgetId; $widget->parameters->module = $newWidget['module']; $widget->parameters->action = $newWidget['action']; foreach ($newWidget['params'] as $key => $value) { $widget->parameters->{$key} = $value; } } } $newColumn[] = $widget; } $newColumns[] = $newColumn; } $dashboardLayout->columns = $newColumns; return $dashboardLayout; }
/** * Returns the unique id of an widget based on module, action and the set parameters. * * @return string */ public function getUniqueId() { $parameters = $this->getParameters(); unset($parameters['module']); unset($parameters['action']); return WidgetsList::getWidgetUniqueId($this->getModule(), $this->getAction(), $parameters); }