getHref() public method

Get the URL of the menu item
public getHref ( ) : string
return string
Esempio n. 1
0
/**
 * Render a menu item (usually as a link)
 *
 * @param ElggMenuItem $item The menu item
 * @param array        $vars Options to pass to output/url if a link
 * @return string
 * @since 1.9.0
 */
function elgg_view_menu_item(ElggMenuItem $item, array $vars = array())
{
    if (!isset($vars['class'])) {
        $vars['class'] = 'elgg-menu-content';
    }
    $vars = array_merge($item->getValues(), $vars);
    if ($item->getLinkClass()) {
        $vars['class'] .= ' ' . $item->getLinkClass();
    }
    if ($item->getHref() === false) {
        $text = $item->getText();
        // if contains elements, don't wrap
        if (preg_match('~<[a-z]~', $text)) {
            return $text;
        } else {
            return elgg_format_element('span', array('class' => 'elgg-non-link'), $text);
        }
    }
    if (!isset($vars['rel']) && !isset($vars['is_trusted'])) {
        $vars['is_trusted'] = true;
    }
    if ($item->getConfirmText()) {
        $vars['confirm'] = $item->getConfirmText();
        return elgg_view('output/confirmlink', $vars);
    } else {
        unset($vars['confirm']);
    }
    return elgg_view('output/url', $vars);
}
Esempio n. 2
0
/**
 * Set up the site menu
 *
 * Handles default, featured, and custom menu items
 *
 * @access private
 */
function _elgg_site_menu_setup($hook, $type, $return, $params)
{
    $featured_menu_names = elgg_get_config('site_featured_menu_names');
    $custom_menu_items = elgg_get_config('site_custom_menu_items');
    if ($featured_menu_names || $custom_menu_items) {
        // we have featured or custom menu items
        $registered = $return['default'];
        /* @var \ElggMenuItem[] $registered */
        // set up featured menu items
        $featured = array();
        foreach ($featured_menu_names as $name) {
            foreach ($registered as $index => $item) {
                if ($item->getName() == $name) {
                    $featured[] = $item;
                    unset($registered[$index]);
                }
            }
        }
        // add custom menu items
        $n = 1;
        foreach ($custom_menu_items as $title => $url) {
            $item = new \ElggMenuItem("custom{$n}", $title, $url);
            $featured[] = $item;
            $n++;
        }
        $return['default'] = $featured;
        if (count($registered) > 0) {
            $return['more'] = $registered;
        }
    } else {
        // no featured menu items set
        $max_display_items = 5;
        // the first n are shown, rest added to more list
        // if only one item on more menu, stick it with the rest
        $num_menu_items = count($return['default']);
        if ($num_menu_items > $max_display_items + 1) {
            $return['more'] = array_splice($return['default'], $max_display_items);
        }
    }
    // check if we have anything selected
    $selected = false;
    foreach ($return as $section) {
        /* @var \ElggMenuItem[] $section */
        foreach ($section as $item) {
            if ($item->getSelected()) {
                $selected = true;
                break 2;
            }
        }
    }
    if (!$selected) {
        // nothing selected, match name to context or match url
        $current_url = current_page_url();
        foreach ($return as $section_name => $section) {
            foreach ($section as $key => $item) {
                // only highlight internal links
                if (strpos($item->getHref(), elgg_get_site_url()) === 0) {
                    if ($item->getName() == elgg_get_context()) {
                        $return[$section_name][$key]->setSelected(true);
                        break 2;
                    }
                    if ($item->getHref() == $current_url) {
                        $return[$section_name][$key]->setSelected(true);
                        break 2;
                    }
                }
            }
        }
    }
    return $return;
}
Esempio n. 3
0
 public function testConstructorUrlNormalization()
 {
     $item = new \ElggMenuItem('name', 'text', 'url');
     $url = elgg_normalize_url('url');
     $this->assertEquals($url, $item->getHref());
 }