getWidgetUniqueId() public static method

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
Ejemplo n.º 1
0
 /**
  * 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;
 }
Ejemplo n.º 2
0
 /**
  * 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);
 }