Your IP : 172.28.240.42


Current Path : /var/www/html/clients/kampol.e-nk.ru/OLD/modules/
Upload File :
Current File : /var/www/html/clients/kampol.e-nk.ru/OLD/modules/mod_mainmenu.php

<?php
/**
* @version $Id: mod_mainmenu.php 5941 2006-12-06 13:23:38Z predator $
* @package Joomla
* @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/

// no direct access
defined( '_VALID_MOS' ) or die( 'Äîñòóï çàïðåùåí' );

if (!defined( '_MOS_MAINMENU_MODULE' )) {
        /** ensure that functions are declared only once */
        define( '_MOS_MAINMENU_MODULE', 1 );

        /**
        * Utility function for writing a menu link
        */
        function mosGetMenuLink( $mitem, $level=0, &$params, $open=null ) {
                global $Itemid, $mosConfig_live_site, $mainframe;

                $txt = '';

                switch ($mitem->type) {
                        case 'separator':
                        case 'component_item_link':
                                break;

                        case 'url':
                                if ( eregi( 'index.php\?', $mitem->link ) && !eregi( 'http', $mitem->link ) && !eregi( 'https', $mitem->link ) ) {
                                        if ( !eregi( 'Itemid=', $mitem->link ) ) {
                                                $mitem->link .= '&Itemid='. $mitem->id;
                                        }
                                }
                                break;

                        case 'content_item_link':
                        case 'content_typed':
                                // load menu params
                                $menuparams = new mosParameters( $mitem->params, $mainframe->getPath( 'menu_xml', $mitem->type ), 'menu' );

                                $unique_itemid = $menuparams->get( 'unique_itemid', 1 );

                                if ( $unique_itemid ) {
                                        $mitem->link .= '&Itemid='. $mitem->id;
                                } else {
                                        $temp = split('&task=view&id=', $mitem->link);

                                        if ( $mitem->type == 'content_typed' ) {
                                                $mitem->link .= '&Itemid='. $mainframe->getItemid($temp[1], 1, 0);
                                        } else {
                                                $mitem->link .= '&Itemid='. $mainframe->getItemid($temp[1], 0, 1);
                                        }
                                }
                                break;

                        default:
                                $mitem->link .= '&Itemid='. $mitem->id;
                                break;
                }

                // Active Menu highlighting
                $current_itemid = $Itemid;
                if ( !$current_itemid ) {
                        $id = '';
                } else if ( $current_itemid == $mitem->id ) {
                        $id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';
                } else if( $params->get( 'activate_parent' ) && isset( $open ) && in_array( $mitem->id, $open ) )  {
                        $id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';
                } else {
                        $id = '';
                }

                if ( $params->get( 'full_active_id' ) ) {
                        // support for `active_menu` of 'Link - Component Item'
                        if ( $id == '' && $mitem->type == 'component_item_link' ) {
                                parse_str( $mitem->link, $url );
                                if ( $url['Itemid'] == $current_itemid ) {
                                        $id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';
                                }
                        }

                        // support for `active_menu` of 'Link - Url' if link is relative
                        if ( $id == '' && $mitem->type == 'url' && strpos( 'http', $mitem->link ) === false) {
                                parse_str( $mitem->link, $url );
                                if ( isset( $url['Itemid'] ) ) {
                                        if ( $url['Itemid'] == $current_itemid ) {
                                                $id = 'id="active_menu'. $params->get( 'class_sfx' ) .'"';
                                        }
                                }
                        }
                }

                // replace & with amp; for xhtml compliance
                $mitem->link = ampReplace( $mitem->link );

                // run through SEF convertor
                $mitem->link = sefRelToAbs( $mitem->link );

                $menuclass = 'mainlevel'. $params->get( 'class_sfx' );
                if ($level > 0) {
                        $menuclass = 'sublevel'. $params->get( 'class_sfx');
                }

                // replace & with amp; for xhtml compliance
                // remove slashes from excaped characters
                $mitem->name = stripslashes( ampReplace($mitem->name) );

                switch ($mitem->browserNav)
                {
                        // cases are slightly different
                        case 1:
                                // open in a new window
                                $txt = '<a href="'. $mitem->link .'" target="_blank" class="'. $menuclass .'" '. $id .'>'. $mitem->name .'</a><br>';
                                break;

                        case 2:
                                // open in a popup window
                                $txt = "<a href=\"#\" onclick=\"javascript: window.open('". $mitem->link ."', '', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=780,height=550'); return false\" class=\"$menuclass\" ". $id .">". $mitem->name ."</a>\n";
                                break;

                        case 3:
                                // don't link it
                                $txt = '<span class="'. $menuclass .'" '. $id .'>'. $mitem->name .'</span>';
                                break;

                        default:
                                // open in parent window
                                $txt = '<a href="'. $mitem->link .'" '. $id .'>'. $mitem->name .'</a>';
                                break;
                }
                if ( $params->get( 'menu_images' ) ) {
                        $menu_params         = new stdClass();
                        $menu_params         = new mosParameters( $mitem->params );
                        $menu_image         = $menu_params->def( 'menu_image', -1 );
                        if ( ( $menu_image != '-1' ) && $menu_image ) {
                                $image = '<img src="'. $mosConfig_live_site .'/images/stories/'. $menu_image .'" border="0" alt="'. $mitem->name .'"/>';
                                if ( $params->get( 'menu_images_align' ) ) {
                                        $txt = $txt .' '. $image;
                                } else {
                                        $txt = $image .' '. $txt;
                                }
                        }
                }

                return $txt;
        }

        /**
        * Vertically Indented Menu
        */
        function mosShowVIMenu(  &$params ) {
                global $database, $my, $cur_template, $Itemid;
                global $mosConfig_absolute_path, $mosConfig_live_site, $mosConfig_shownoauth;

                /* If a user has signed in, get their user type */
                $intUserType = 0;
                if($my->gid){
                        switch ($my->usertype) {
                                case 'Super Administrator':
                                        $intUserType = 0;
                                        break;

                                case 'Administrator':
                                        $intUserType = 1;
                                        break;

                                case 'Editor':
                                        $intUserType = 2;
                                        break;

                                case 'Registered':
                                        $intUserType = 3;
                                        break;

                                case 'Author':
                                        $intUserType = 4;
                                        break;

                                case 'Publisher':
                                        $intUserType = 5;
                                        break;

                                case 'Manager':
                                        $intUserType = 6;
                                        break;
                        }
                } else {
                        /* user isn't logged in so make their usertype 0 */
                        $intUserType = 0;
                }

                $and = '';
                if ( !$mosConfig_shownoauth ) {
                        $and = "\n AND access <= " . (int) $my->gid;
                }
                $sql = "SELECT m.*"
                . "\n FROM #__menu AS m"
                . "\n WHERE menutype = " . $database->Quote( $params->get( 'menutype' ) )
                . "\n AND published = 1"
                . $and
                . "\n ORDER BY parent, ordering";
                $database->setQuery( $sql );
                $rows = $database->loadObjectList( 'id' );

                // indent icons
                switch ( $params->get( 'indent_image' ) ) {
                        case '1':
                                // Default images
                                $imgpath = $mosConfig_live_site .'/images/M_images';
                                for ( $i = 1; $i < 7; $i++ ) {
                                        $img[$i] = '<img src="'. $imgpath .'/indent'. $i .'.png" alt="" />';
                                }
                                break;

                        case '2':
                                // Use Params
                                $imgpath = $mosConfig_live_site .'/images/M_images';
                                for ( $i = 1; $i < 7; $i++ ) {
                                        if ( $params->get( 'indent_image'. $i ) == '-1' ) {
                                                $img[$i] = NULL;
                                        } else {
                                                $img[$i] = '<img src="'. $imgpath .'/'. $params->get( 'indent_image'. $i ) .'" alt="" />';
                                        }
                                }
                                break;

                        case '3':
                                // None
                                for ( $i = 1; $i < 7; $i++ ) {
                                        $img[$i] = NULL;
                                }
                                break;

                        default:
                                // Template
                                $imgpath = $mosConfig_live_site .'/templates/'. $cur_template .'/images';
                                for ( $i = 1; $i < 7; $i++ ) {
                                        $img[$i] = '<img src="'. $imgpath .'/indent'. $i .'.png" alt="" />';
                                }
                                break;
                }

                $indents = array(
                        // block prefix / item prefix / item suffix / block suffix
                      // ñòàðîå ìåíþ:   array( '<table width="100%" border="0" cellpadding="0" cellspacing="0">', '<tr align="left"><td>' , '</td></tr>', '</table>' ),

                        array( '<div id="button"><ul class="menu">', '<li class="menu">' , '</li>', '</ul></div>' ),
                        array( '', '<div style="padding-left: 4px">'. $img[1] , '</div>', '' ),
                        array( '', '<div style="padding-left: 8px">'. $img[2] , '</div>', '' ),
                        array( '', '<div style="padding-left: 12px">'. $img[3] , '</div>', '' ),
                        array( '', '<div style="padding-left: 16px">'. $img[4] , '</div>', '' ),
                        array( '', '<div style="padding-left: 20px">'. $img[5] , '</div>', '' ),
                        array( '', '<div style="padding-left: 24px">'. $img[6] , '</div>', '' ),
                );

                // establish the hierarchy of the menu
                $children = array();
                // first pass - collect children
                foreach ($rows as $v ) {
                        $pt         = $v->parent;
                        $list         = @$children[$pt] ? $children[$pt] : array();
                        array_push( $list, $v );
                        $children[$pt] = $list;
                }

                // second pass - collect 'open' menus
                $open         = array( $Itemid );
                $count         = 20; // maximum levels - to prevent runaway loop
                $id         = $Itemid;

                while (--$count) {
                        if (isset($rows[$id]) && $rows[$id]->parent > 0) {
                                $id = $rows[$id]->parent;
                                $open[] = $id;
                        } else {
                                break;
                        }
                }
                mosRecurseVIMenu( 0, 0, $children, $open, $indents, $params );

        }

        /**
        * Utility function to recursively work through a vertically indented
        * hierarchial menu
        */
        function mosRecurseVIMenu( $id, $level, &$children, &$open, &$indents, &$params ) {
                if (@$children[$id]) {
                        $n = min( $level, count( $indents )-1 );

                        echo "\n".$indents[$n][0];
                        foreach ($children[$id] as $row) {

                                echo "\n".$indents[$n][1];

                                echo mosGetMenuLink( $row, $level, $params, $open );

                                // show menu with menu expanded - submenus visible
                                if ( !$params->get( 'expand_menu' ) ) {
                                        if ( in_array( $row->id, $open )) {
                                                mosRecurseVIMenu( $row->id, $level+1, $children, $open, $indents, $params );
                                        }
                                } else {
                                        mosRecurseVIMenu( $row->id, $level+1, $children, $open, $indents, $params );
                                }
                                echo $indents[$n][2];
                        }
                        echo "\n".$indents[$n][3];
                }
        }

        /**
        * Draws a horizontal 'flat' style menu (very simple case)
        */
        function mosShowHFMenu(  &$params, $style=0 ) {
                global $database, $my, $cur_template, $Itemid;
                global $mosConfig_absolute_path, $mosConfig_shownoauth;

                $and = '';
                if ( !$mosConfig_shownoauth ) {
                        $and = "\n AND access <= " . (int) $my->gid;
                }
                $sql = "SELECT m.*"
                . "\n FROM #__menu AS m"
                . "\n WHERE menutype = " . $database->Quote( $params->get( 'menutype' ) )
                . "\n AND published = 1"
                . $and
                . "\n AND parent = 0"
                . "\n ORDER BY ordering"
                ;
                $database->setQuery( $sql );
                $rows = $database->loadObjectList( 'id' );

                $links = array();
                foreach ($rows as $row) {
                        $links[] = mosGetMenuLink( $row, 0, $params );
                }

                $menuclass = 'mainlevel'. $params->get( 'class_sfx' );
                if (count( $links )) {
                        switch ($style) {
                                case 0: # ïðàâîå ìåíþ

                                        foreach ($links as $link) {
                                                echo $link . '<br>';
                                        }
                                        break;

                                case 1:
                                        # âåðõíåå ìåíþ
                                        echo '&nbsp; | &nbsp;';
                                        foreach ($links as $link) {
                                                echo $link . '&nbsp; | &nbsp;';
                                        }
                                        break;
                                default:
                                        $spacer_start         = $params->get( 'spacer' );
                                        $spacer_end         = $params->get( 'end_spacer' );



                                                        if ( $spacer_end )
                                                        {
                                                                echo '<span class="'. $menuclass .'"> '. $spacer_end .' </span>';
                                                        }

                                                        if ( $spacer_start ) {
                                                                $html = '<span class="'. $menuclass .'"> '. $spacer_start .' </span>';
                                                                echo implode( $html, $links );
                                                        } else {
                                                                echo implode( '', $links );
                                                        }

                                                        if ( $spacer_end ) {
                                                                echo '<span class="'. $menuclass .'"> '. $spacer_end .' </span>';
                                                        }

                                        break;
                        }
                }
        }
}

$params->def('menutype',                         'mainmenu');
$params->def('class_sfx',                         '');
$params->def('menu_images',                 0);
$params->def('menu_images_align',         0);
$params->def('expand_menu',                 0);
$params->def('activate_parent',         0);
$params->def('indent_image',                 0);
$params->def('indent_image1',                 'indent1.png');
$params->def('indent_image2',                 'indent2.png');
$params->def('indent_image3',                 'indent3.png');
$params->def('indent_image4',                 'indent4.png');
$params->def('indent_image5',                 'indent5.png');
$params->def('indent_image6',                 'indent.png');
$params->def('spacer',                                 '');
$params->def('end_spacer',                         '');
$params->def('full_active_id',                 0);

switch ( $params->get( 'menu_style', 'vert_indent' ) ) {
        case 'list_flat':
                mosShowHFMenu( $params, 1 );
                break;

        case 'horiz_flat':
                mosShowHFMenu( $params, 0 );
                break;

        default:
                mosShowVIMenu( $params );
                break;
}
?>