Project

General

Profile

« Previous | Next » 

Revision 859

Added by Matthias about 16 years ago

updated show_menu2 to version 4.7

View differences:

include.php
1 1
<?php
2

  
3
// $Id$
4

  
5 2
/*
6 3
    show_menu2: show_menu replacement for Website Baker 
7 4
    Copyright (C) 2006-2008, Brodie Thiesfield
......
22 19
    02110-1301, USA.
23 20

  
24 21
    ***********************************************
25
    ** Version 4.6: see README for documentation **
22
    ** Version 4.7: see README for documentation **
26 23
    ***********************************************
27 24
*/
28 25

  
......
406 403
    $aMenu          = 0,
407 404
    $aStart         = SM2_ROOT,
408 405
    $aMaxLevel      = -1999, // SM2_CURR+1
409
    $aFlags         = SM2_TRIM,
406
    $aOptions       = SM2_TRIM,
410 407
    $aItemOpen      = false,
411 408
    $aItemClose     = false,
412 409
    $aMenuOpen      = false,
......
417 414
{
418 415
    global $wb;
419 416

  
417
    // extract the flags and set $aOptions to an array
418
    $flags = 0;
419
    if (is_int($aOptions)) {
420
        $flags = $aOptions;
421
        $aOptions = array();
422
    }
423
    else if (isset($aOptions['flags'])) {
424
        $flags = $aOptions['flags'];
425
    }
426
    else {
427
        $flags = SM2_TRIM;
428
        $aOptions = array();
429
        error_log('show_menu2 error: $aOptions is invalid. No flags supplied!');
430
    }
431
    
420 432
    // ensure we have our group 1 flag, we don't check for the "exactly 1" part, but 
421 433
    // we do ensure that they provide at least one.
422
    if (0 == ($aFlags & _SM2_GROUP_1)) {
423
        error_log("show_menu2 error: no flags from group 1 supplied! Exactly one flag is required!");
424
        $aFlags |= SM2_TRIM; // default to TRIM
434
    if (0 == ($flags & _SM2_GROUP_1)) {
435
        error_log('show_menu2 error: $aOptions is invalid. No flags from group 1 supplied!');
436
        $flags |= SM2_TRIM; // default to TRIM
425 437
    }
426 438
    
427 439
    // search page results don't have any of the page data loaded by WB, so we load it 
......
469 481
    // multiple calls to show_menu2 in a single page with only a single call to 
470 482
    // the database. If this variable exists, then we have already retrieved all
471 483
    // of the information and processed it, so we don't need to do it again.
472
    if (($aFlags & SM2_NOCACHE) != 0
484
    if (($flags & SM2_NOCACHE) != 0
473 485
        || !array_key_exists('show_menu2_data', $GLOBALS) 
474 486
        || !array_key_exists($aMenu, $GLOBALS['show_menu2_data'])) 
475 487
    {
......
497 509
        if (version_compare(WB_VERSION, '2.7', '>=')) { // WB 2.7+
498 510
            $fields .= ',viewing_users';
499 511
        }
500
        if ($aFlags & SM2_ALLINFO) {
512
        if ($flags & SM2_ALLINFO) {
501 513
            $fields = '*';
502 514
        }
503 515
        
......
640 652
                $sm2formatter = new SM2_Formatter;
641 653
            }
642 654
            $formatter = $sm2formatter;
643
            $formatter->set($aFlags, $aItemOpen, $aItemClose, 
655
            $formatter->set($flags, $aItemOpen, $aItemClose, 
644 656
                $aMenuOpen, $aMenuClose, $aTopItemOpen, $aTopMenuOpen);
645 657
        }
646 658
        
659
        // adjust the level until we show everything and ignore the SM2_TRIM flag.
660
        // Usually this will be less than the start level to disable it.
661
        $showAllLevel = $aStartLevel - 1;
662
        if (isset($aOptions['notrim'])) {
663
            $showAllLevel = $aStartLevel + $aOptions['notrim'];
664
        }
665
        
647 666
        // display the menu
648 667
        $formatter->initialize();
649 668
        sm2_recurse(
650 669
            $GLOBALS['show_menu2_data'][$aMenu],
651 670
            $aStart,    // parent id to start displaying sub-menus
652
            $aStartLevel, $aMaxLevel, $aFlags, 
671
            $aStartLevel, $showAllLevel, $aMaxLevel, $flags, 
653 672
            $formatter);
654 673
        $formatter->finalize();
655 674
        
656 675
        // if we are returning something, get the data
657
        if (($aFlags & SM2_BUFFER) != 0) {
676
        if (($flags & SM2_BUFFER) != 0) {
658 677
            $retval = $formatter->getOutput();
659 678
        }
660 679
    }
661 680

  
662 681
    // clear the data if we aren't caching it
663
    if (($aFlags & SM2_NOCACHE) != 0) {
682
    if (($flags & SM2_NOCACHE) != 0) {
664 683
        unset($GLOBALS['show_menu2_data'][$aMenu]);
665 684
    }
666 685
    
......
681 700

  
682 701
function sm2_recurse(
683 702
    &$rgParent, $aStart, 
684
    $aStartLevel, $aMaxLevel, $aFlags, 
703
    $aStartLevel, $aShowAllLevel, $aMaxLevel, $aFlags, 
685 704
    &$aFormatter
686 705
    )
687 706
{
......
725 744
        }
726 745
        else if ($aFlags & SM2_TRIM) {
727 746
            // parents and siblings of parents
728
            if (!array_key_exists('sm2_on_curr_path', $page)    // not set if false, so existence = true
747
            if ($pageLevel > $aShowAllLevel  // permit all levels to be shown
748
                && !array_key_exists('sm2_on_curr_path', $page)    // not set if false, so existence = true
729 749
                && !array_key_exists('sm2_path_sibling', $page)) {  // not set if false, so existence = true
730 750
                continue;
731 751
            }
......
765 785
            && array_key_exists('sm2_has_child', $page)) {  // not set if false, so existence = true
766 786
            sm2_recurse(
767 787
                $rgParent, $nextParent, // parent id to start displaying sub-menus
768
                $aStartLevel, $aMaxLevel, $aFlags, 
788
                $aStartLevel, $aShowAllLevel, $aMaxLevel, $aFlags, 
769 789
                $aFormatter);
770 790
        }
771 791
        

Also available in: Unified diff