Source for file functions.phpinc

Documentation is available at functions.phpinc

  1. <?php
  2. /**
  3.   * Menu functions
  4.   *
  5.   * NOTE:       it is planed to replace this file with a class
  6.   *
  7.   * @project    Open CSP-Management
  8.   * @author     Peter Krebs <p.krebs@lvus.at>
  9.   * @copyright  (c) 2002-2003 by Peter Krebs and Landesverlag Unternehmensservice
  10.   * @license    http://opensource.org/licenses/gpl-license.php GNU Public License
  11.   *
  12.   * @package    cms
  13.   * @category   menu
  14.   *
  15.   * @version    pk-03-10-17
  16.   ***/
  17.  
  18. // -------------------------------
  19. function MENU_getArray($DB,&$menArr,$parent=0,$project=0,$intend="",$level=0,$index="",$debug=FALSE{
  20. // -------------------------------
  21.  
  22.     $query ="SELECT * FROM T_CMS_MENU WHERE MEN_PARENT=".intval($parent)." AND PROJ_ID=".intval($project);
  23.     $query.=" ORDER BY MEN_SORTORDER";
  24.     if ($debugecho "<p>$query</p>";
  25.  
  26.     $i=1;
  27.     if ($cursor=$DB->query($query)) {
  28.         while($arr=$cursor->fetchArray()) {
  29.             $arr['_INTENDTITLE']=$inted.$arr['MEN_TITLE'];
  30.             $arr['_LEVEL']=$level;
  31.             $arr['_NUMBER']=$i++;
  32.             $arr['_INDEX']=$index.$arr['_NUMBER'];
  33.             $menArr[$arr['MEN_ID']]=$arr;
  34.             MENU_getArray($DB,$menArr,$arr['MEN_ID'],$project,($intend." "),($level+1),$arr['_INDEX'].".",$debug);
  35.         }
  36.         $cursor->free();
  37.     }
  38. }
  39.  
  40. /**
  41.   * generates the <a href ..>tag
  42.   *
  43.   * @version pk-03-12-14
  44.   *
  45.   ***/
  46. function MENU_getHref($row,$class,$href{
  47.     $ret="<a class=\"".$class."\" ";
  48.     switch($row['MEN_LINKTYPE']{
  49.         case 1:
  50.             //url
  51.             $ret.= "href=\"".$row['MEN_LINK'];
  52.             /* <pk-03-12-14>
  53.                     add MEN_ID= if not in link
  54.             */
  55.             if ((!strstr($ret,"MEN_ID")) && (!strstr($ret,"javascript:"))) {
  56.                 if (strstr($ret,"?")) {
  57.                     $ret.="&MEN_ID=".$row['MEN_ID'];
  58.                 else {
  59.                     $ret.="?MEN_ID=".$row['MEN_ID'];
  60.                 }
  61.             }
  62.             /* </pk-03-12-14> */
  63.             $ret.= "\" target=\"".$row['MEN_TARGET']."\">";
  64.             break;
  65.         case 3:
  66.             // productgroups
  67.             if (empty($GLOBALS['PROJECT']['PRODGRPURL'])) {
  68.                 $ret.= "href=\"/cms/prodgrp.php";
  69.             else {
  70.                 $ret.= "href=\"".$GLOBALS['PROJECT']['PRODGRPURL'];
  71.             }
  72.             $ret.= "?PROJ_ID=".$row['PROJ_ID'];
  73.             $ret.= "&MEN_ID=".$row['MEN_ID'];
  74.             $ret.= "&LANG_ID=".$row['LANG_ID'];
  75.             $ret.= "&PGP_ID=".$row['MEN_LINKFK'];
  76.             $ret.= "\" target=\"".$row['MEN_TARGET']."\">";
  77.             break;
  78.         case 4:
  79.             // mailto
  80.             $ret.= "href=\"mailto:".$row['MEN_LINK']."\">";
  81.             break;
  82.         case 5:
  83.             // home
  84.             $ret.= "href=\"http://".$_SERVER['SERVER_NAME']."\" target=\"_top\">";
  85.             break;
  86.         case 6:
  87.             // HTML-Code
  88.             return str_replace("\$*MENUCLASS\$","class=\"$class\"",$row['MEN_LINK']);
  89.         case 8:
  90.             // BASKET
  91.             if (is_array($_SESSION['BASKET']&& (sizeof($_SESSION['BASKET'0))) {
  92.                 $ret.="href=\"".$GLOBALS['PROJECT']['BASKETURL'];
  93.                 if (!strstr($GLOBALS['PROJECT']['BASKETURL'],"?")) $ret.="?";
  94.                 $ret.= "PROJ_ID=".$row['PROJ_ID'];
  95.                 $ret.= "&MEN_ID=".$row['MEN_ID'];
  96.                 $ret.= "&LANG_ID=".$row['LANG_ID'];
  97.                 $ret.= "\" target=\"".$row['MEN_TARGET']."\">";
  98.             else {
  99.                 $ret=NULL;
  100.             }
  101.             break;
  102.  
  103.         default:
  104.             $ret.= "href=\"".$href;
  105.             $ret.= "?PROJ_ID=".$row['PROJ_ID'];
  106.             $ret.= "&MEN_ID=".$row['MEN_ID'];
  107.             $ret.= "&MEN_PARENT=".$row['MEN_PARENT'];
  108.             $ret.= "&LANG_ID=".$row['LANG_ID'];
  109.             $ret.= "\" target=\"_self\">";
  110.     }
  111.  
  112.     return $ret;
  113. }
  114.  
  115. /**
  116.   * return the HTML code for a menu item row
  117.   *
  118.   * @param array    $row    menu (db)row values
  119.   * @param string   $class  css class of the <a> tag
  120.   * @param string   $href   cms main url
  121.   *
  122.   * @return string  HTML code for a menu item row
  123.   *
  124.   * @version pk-03-10-17
  125.   ***/
  126.   function MENU_writeItem($row,$class,$href{
  127.  
  128.     /* pk-03-10-17 */
  129.     if (!empty($row['MEN_SHOWQUERY'])) {
  130.         require_once $GLOBALS['PROJECT']['PHPINCPATH']."common/pcf_templates.phpinc";
  131.         $cmd=pcf_tmpl_parse($row['MEN_SHOWQUERY'],$row,$debug);
  132.         $query "SELECT ".$cmd;
  133.         if ($debugecho "<pre>checkShowNode(".$row['MEN_ID']."SHOWQUERY: \n$query</pre>";
  134.         if (!(intval($GLOBALS['USRDB']->quickQuery($query,0)))) return "";
  135.     }
  136.     /* /pk-03-10-17 */
  137.  
  138.     switch($row['MEN_LINKTYPE']{
  139.         case 6:
  140.             // no MEN_TITLE
  141.             $ret=MENU_getHref($row,$class,$href);
  142.             break;
  143.         case 8:
  144.             // only if Basket is not empty
  145.             if ($href=MENU_getHref($row,$class,$href)) {
  146.                 $ret="<tr><td align=\"left\" class=\"menuItem\">";
  147.                 $ret.= $href;
  148.                 $ret.= $row['MEN_TITLE'];
  149.                 $ret.= "</a></td></tr>\n";
  150.             }
  151.             break;
  152.         default:
  153.             $ret "<tr><td align=\"left\" class=\"menuItem\">";
  154.             $hrefMENU_getHref($row,$class,$href);
  155.             if (!empty($href)) {
  156.                 $ret.= $href;
  157.                 $ret.= $row['MEN_TITLE']."</a>";
  158.             }
  159.             $ret.= "</td></tr>\n";
  160.     }
  161.     return $ret;
  162. }
  163.  
  164. function MENU_writeTreeTill($DB,$menArr,$href="",$debug=FALSE{
  165.  
  166.     if ($debugecho "<pre>MENU_writeTreeTill ".$menArr['MEN_ID']." ".$menArr['MEN_TITLE']."/n</pre>";
  167.  
  168.     $query "SELECT * FROM T_CMS_MENU ";
  169.     $query.= " WHERE PROJ_ID=".intval($menArr['PROJ_ID']);
  170.     $query.= " AND LANG_ID=".intval($manArr['LANG_ID']);
  171.     $query.= " AND MEN_SHOW=1 ";
  172.     $query.= " AND MEN_SHOWFROM < ".DB_getNowValue();
  173.     $query.= " AND MEN_SHOWTILL > ".DB_getNowValue();
  174.  
  175.     $countTables=0;
  176.     if (empty($href)) $href=$_SERVER['SCRIPT_NAME'];
  177.  
  178.     if (intval($menArr['MEN_PARENT']0{
  179.         $where=" AND MEN_ID=".intval($menArr['MEN_PARENT']);
  180.  
  181.         if ($debug{echo "<pre>\n\nGOTO SUBLEVEL:\n$query\n"print_r($DB->quickQuery($query.$where))echo "</pre>";}
  182.  
  183.         $countTables MENU_writeTreeTill($DB,$DB->quickQuery($query.$where),$href,$debug);
  184.         $countTables++;
  185.         echo "<tr><td align=\"right\"><table width=\"90%\" align=\"right\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\">";
  186.     }
  187.  
  188.     $query.= " AND MEN_PARENT=".intval($menArr['MEN_PARENT']);
  189.     $query.= " AND MEN_SORTORDER < ".intval($menArr['MEN_SORTORDER']);
  190.     $query.= " ORDER BY MEN_SORTORDER ";
  191.  
  192.     if ($debug{echo "<pre>WRITE SAME LEVEL:\n\n$query\n</pre>";}
  193.  
  194.     if ($cursor=$DB->query($query)) {
  195.         while($row=$cursor->fetchArray()) {
  196.             if ($debug{echo "<pre>";print_r($row)echo "</pre>";}
  197.             echo MENU_writeItem($row,"menuItem",$href);
  198.         }
  199.         $cursor->free();
  200.     }
  201.  
  202.     echo MENU_writeItem($menArr,"menuItemOn",$href);
  203.  
  204.     return $countTables;
  205. }
  206.  
  207. function MENU_writeChildList($DB,$MEN_ID=0,$PROJ_ID=0,$LANG_ID=0,$href="",$debug=FALSE{
  208.     $query ="SELECT * FROM T_CMS_MENU WHERE MEN_PARENT=".intval($MEN_ID);
  209.     $query.=" AND PROJ_ID=".intval($PROJ_ID);
  210.     $query.=" AND LANG_ID=".intval($LANG_ID);
  211.     $query.=" AND MEN_SHOW=1 ";
  212.     $query.=" AND MEN_SHOWFROM < ".DB_getNowValue();
  213.     $query.=" AND MEN_SHOWTILL > ".DB_getNowValue();
  214.     $query.=" ORDER BY MEN_SORTORDER";
  215.     if ($debugecho "<p>$query</p>";
  216.  
  217.     if (empty($href)) $href=$_SERVER['SCRIPT_NAME'];
  218.  
  219.     $childTree="";
  220.     if ($cursor=$DB->query($query)) {
  221.         while($row=$cursor->fetchArray()) {
  222.             $childTree.= MENU_writeItem($row,"menuItem",$href);
  223.         }
  224.     }
  225.     if (!empty($childTree)) {
  226.         echo $childTree;
  227.     }
  228. }
  229.  
  230. function MENU_writeTreeFrom($DB,$menArr,$href="",$debug=FALSE{
  231.     $query "SELECT * FROM T_CMS_MENU ";
  232.     $query.= " WHERE PROJ_ID=".intval($menArr['PROJ_ID']);
  233.     $query.= " AND LANG_ID=".intval($manArr['LANG_ID']);
  234.     $where " AND MEN_PARENT=".intval($menArr['MEN_PARENT']);
  235.     $where.= " AND MEN_SORTORDER > ".intval($menArr['MEN_SORTORDER']);
  236.     $query.= " AND MEN_SHOW=1 ";
  237.     $query.= " AND MEN_SHOWFROM < ".DB_getNowValue();
  238.     $query.= " AND MEN_SHOWTILL > ".DB_getNowValue();
  239.     $where.= " ORDER BY MEN_SORTORDER ";
  240.  
  241.     if ($cursor=$DB->query($query.$where)) {
  242.         while($row=$cursor->fetchArray()) {
  243.             echo MENU_writeItem($row,"menuItem",$href);
  244.         }
  245.         $cursor->free();
  246.     }
  247.  
  248.     if (intval($menArr['MEN_PARENT']0{
  249.         echo "</table></td></tr>";
  250.         $where=" AND MEN_ID=".intval($menArr['MEN_PARENT']);
  251.         MENU_writeTreeFrom($DB,$DB->quickQuery($query.$where),$href,$debug);
  252.     }
  253. }
  254.  
  255. function MENU_getFirstLevel($DB,$menArr{
  256.     if (!is_array($menArr)) return FALSE;
  257.     if ($menArr['MEN_PARENT'== 0return $menArr;
  258.  
  259.     $query "SELECT * FROM T_CMS_MENU ";
  260.     $query.= " WHERE PROJ_ID=".intval($menArr['PROJ_ID']);
  261.     $query.= " AND LANG_ID=".intval($manArr['LANG_ID']);
  262.     $query.= " AND MEN_ID=".intval($menArr['MEN_PARENT']);
  263.  
  264.     return MENU_getFirstLevel($DB,$DB->quickQuery($query));
  265. }
  266.  
  267.  
  268. function MENU_getPath($DB,$menArr,$menPath=FALSE{
  269.     if (!is_array($menArr)) return FALSE;
  270.     if (!is_array($menPath)) $menPath=array();
  271.  
  272.     $menPath[]=$menArr;
  273.  
  274.     if ($menArr['MEN_PARENT'== 0{
  275.         return array_reverse($menPath);
  276.     }
  277.  
  278.     $query "SELECT * FROM T_CMS_MENU ";
  279.     $query.= " WHERE PROJ_ID=".intval($menArr['PROJ_ID']);
  280.     $query.= " AND LANG_ID=".intval($manArr['LANG_ID']);
  281.     $query.= " AND MEN_ID=".intval($menArr['MEN_PARENT']);
  282.  
  283.     return MENU_getPath($DB,$DB->quickQuery($query),$menPath);
  284. }
  285.  
  286. function MENU_populate($DB,$menId{
  287.     
  288.     $query ="SELECT * FROM T_CMS_MENU WHERE MEN_ID=".$menId;
  289.     $query.=" AND PROJ_ID=".intval($_GET['PROJ_ID']);
  290.     $query.=" AND LANG_ID=".intval($_GET['LANG_ID']);            
  291.  
  292.     if (!($menArr=$DB->quickQuery($query))) {
  293.         $menArr=array(
  294.             'MEN_TITLE'     =>"",
  295.             'MEN_ID'        =>0,
  296.             'MEN_PARENT'    =>0,
  297.             'MEN_SORTORDER' =>0
  298.         );
  299.  
  300.         $menArr['PROJ_ID']=intval($_GET['PROJ_ID']);
  301.         $menArr['LANG_ID']=intval($_GET['LANG_ID']);
  302.     }
  303.     
  304.     return $menArr;
  305. }
  306.  
  307. /**
  308.   * returns the sql query for the menu page
  309.   *
  310.   * @params int $projId
  311.   * @params int $menId
  312.   *
  313.   * @returns string
  314.   *
  315.   * @since pk-04-08-25
  316.   *
  317.   ***/
  318. function MENU_getPageQuery($projId=0,$menId=0,$langId=0{
  319.     $query ="SELECT * FROM T_CMS_PAGE ";
  320.     $query.=" WHERE MEN_ID=".intval($menId);
  321.     $query.=" AND PROJ_ID=".intval($projId);
  322.     $query.=" AND LANG_ID=".intval($langId);
  323.     $query.=" AND PAG_SHOWFROM <= ".$GLOBALS['USRDB']->qs_getNowStmt();
  324.     $query.=" AND PAG_SHOWTILL >= ".$GLOBALS['USRDB']->qs_getNowStmt();
  325.  
  326.     $query.=" AND PAG_STATE IN(";
  327.     $sep="";
  328.     foreach($GLOBALS['CMS']['PAGESTATE'as $sId => $sDesc{
  329.         if ($sDesc['SHOW']{
  330.             $query.=$sep.$sId;
  331.             $sep=",";
  332.         }
  333.     }
  334.     $query.=")";
  335.     $query.=" ORDER BY PAG_SORTORDER";
  336.     return $query;
  337. }
  338.  
  339. ?>

Documentation generated on Thu, 08 Jan 2009 17:44:18 +0100 by phpDocumentor 1.4.0a2