Example #1
0
 /**
  * Merge Sub Menu
  *
  * @param   Menu $menu
  *
  * @return  static
  */
 public function mergeSubMenu(Menu $menu)
 {
     $name = $menu->getId();
     if (array_key_exists($name, $this->subMenus)) {
         /** @var $current Menu */
         $current = $this->subMenus[$name];
         if ($current->conflictsWith($menu)) {
             while (array_key_exists($name, $this->subMenus)) {
                 if (preg_match('/_(\\d+)$/', $name, $m)) {
                     $name = preg_replace('/_\\d+$/', $m[1]++, $name);
                 } else {
                     $name .= '_2';
                 }
             }
             $menu->setId($name);
             $this->subMenus[$name] = $menu;
         } else {
             $current->setProperties($menu->getProperties());
             foreach ($menu->subMenus as $child) {
                 $current->mergeSubMenu($child);
             }
         }
     } else {
         $this->subMenus[$name] = $menu;
     }
     return $this->subMenus[$name];
 }