/** * Migrates old (pre MenuBuilder 2.0) menu entities to json * * @return void */ public static function migrateEntitiesToJSON() { $ia = elgg_set_ignore_access(true); $menu = new \ColdTrick\MenuBuilder\Menu('site'); $menu->save(); $options = ['type' => 'object', 'subtype' => 'menu_builder_menu_item', 'limit' => false]; $entities = elgg_get_entities($options); if (empty($entities)) { elgg_set_ignore_access($ia); return; } foreach ($entities as $menu_item) { $parent_name = null; $parent_guid = $menu_item->parent_guid; if ($parent_guid) { $parent = get_entity($parent_guid); if ($parent) { $parent_name = "menu_name_{$parent_guid}"; } } $menu->addMenuItem(['name' => "menu_name_{$menu_item->guid}", 'text' => $menu_item->title, 'href' => $menu_item->url, 'target' => $menu_item->target, 'is_action' => $menu_item->is_action, 'access_id' => $menu_item->access_id, 'priority' => $menu_item->order, 'parent_name' => $parent_name]); } // delete entities need to do it afterwards as parents are not always available otherwise foreach ($entities as $menu_item) { $menu_item->delete(); } elgg_set_ignore_access($ia); }
/** * Loads initially the site menu into the menu_builder config. * * @param string $hook name of the hook * @param string $type type of the hook * @param unknown $return return value * @param unknown $params hook parameters * * @return array */ public static function prepareSiteMenu($hook, $type, $return, $params) { if (elgg_get_plugin_setting('menu_builder_default_imported', 'menu_builder', false)) { return; } $menu = new \ColdTrick\MenuBuilder\Menu('site'); if (!empty($menu->getMenuConfig())) { // found an already existing menu config... do not import elgg_set_plugin_setting('menu_builder_default_imported', time(), 'menu_builder'); return; } $menu->save(); // remove potential existing menu items elgg_unset_plugin_setting('menu_site_config', 'menu_builder'); $priority = 10; foreach ($return as $section => $items) { $parent_name = null; if ($section !== 'default') { $menu->addMenuItem(['name' => $section, 'text' => elgg_echo($section), 'href' => '#', 'priority' => $priority]); $parent_name = $section; $priority += 10; } foreach ($items as $item) { $menu->addMenuItem(['name' => $item->getName(), 'text' => $item->getText(), 'href' => str_replace(elgg_get_site_url(), '', $item->getHref()), 'priority' => $priority, 'parent_name' => $parent_name]); $priority += 10; } } elgg_set_plugin_setting('menu_builder_default_imported', time(), 'menu_builder'); }
<?php $menu_name = get_input('menu_name'); // @todo check for valid menu name if ($menu_name) { $menu = new \ColdTrick\MenuBuilder\Menu($menu_name); $menu->save(); forward('admin/appearance/menu_items?menu_name=' . $menu_name); }