<?PHP
//
// functions to deal with page ids and their relationships
//

/*

    This file was written by Thorsten Gunkel <tgunkel@gmx.de> to create
    most pages of <url:http://www.tgunkel.de>.
    Copyright (C) 2003 Thorsten Gunkel

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation version 2 of the License.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

*/


require_once("page_ids.data.php");
require_once(
"main.inc.php");

// Is this a valid ID?
function get_is_valid_id($id)
{
  
$page_ids=get_data_page_ids();
  if (!isset(
$id) || ($id==""))
    { return 
false; }
  else
    { return (
array_key_exists($id,$page_ids)); }
}


// Is this a valid Group?
function get_is_valid_group($group)
{
  
$group_rel=get_data_group_rel();
  if (!isset(
$group) || ($group==""))
    { return 
false; }
  else
    { return (
array_key_exists($group,$group_rel)); }
}

// Is this a valid site?
function get_is_valid_site($site)
{
  
$sites=get_data_site_ids();
  if (!isset(
$site) || ($site==""))
    { return 
false; }
  else
    { return (
array_key_exists($site,$sites)); }
}


// Get Group from an id
function get_id_group($id)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      return 
$page_ids[$id]['group'];
    }
}


// Should id autobuild?
function get_id_autobuild($id)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      return 
$page_ids[$id]['autobuild'];
    }
}

// Get source directory for id
function get_id_dir_src($id)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      return 
"_page_build_src/".$page_ids[$id]['dir_src'];
    }
}

// Get destination directory for id
function get_id_dir_dst($id)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      return 
$page_ids[$id]['dir_dst'];
    }
}

// Get destination file name for id
function get_id_file_dst($id)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      
// FIXME work without file suffix in most cases
      
$tmpsuffix=get_id_suffix($id);
      return 
$page_ids[$id]['file_dst']; //.".".$tmpsuffix[0];
    
}
}

// Sould page with that id have an imprint
function get_id_do_impres($id)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      return 
$page_ids[$id]['do_impres'];
    }
}

// Does this page have some content or navigation only
function get_no_content($id)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      return 
$page_ids[$id]['no_content'];
    }
}

// List all suffix that are available for this id
function get_id_suffix($id)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      return 
$page_ids[$id]['suffix'];
    }
}

// List all langaguages for which the current id is avail.
function get_id_lang($id)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      return 
$page_ids[$id]['langs'];
    }
}

// Check if given language is supported for that id
function get_id_lang_included($id,$lang)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      
//return (in_array($lang,$page_ids[$id]['langs']));
      
return (in_array($lang,get_id_lang($id)));
    }
}

// returns the side to which the current id is connected to
function get_id_site($id)
{
  
$page_ids=get_data_page_ids();
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      
$site=$page_ids[$id]['site_id'];
      if (!
get_is_valid_site($site)) { exit("Unknow site!"); } else
        return 
$site;
    }
}

// returns url_pre for a given site
function get_site_url_pre($site)
{
  
$sites=get_data_site_ids();
  if (!
get_is_valid_site($site)) { exit("Unknow page site!"); } else
    {
      return 
$sites[$site]['url_pre'];
    }
}

// returns dir_pre for a given site
function get_site_dir_pre($site)
{
  
$sites=get_data_site_ids();
  if (!
get_is_valid_site($site)) { exit("Unknow page site!"); } else
    {
      return 
$sites[$site]['dir_pre'];
    }
}

// Get parent of a group
function get_group_parent($group)
{
  if (!
get_is_valid_group($group)) { exit("Invalid Group!"); } else
    {
      
$group_rel=get_data_group_rel();
      return 
$group_rel[$group]['parent'];
    }
}

// Get all groups that are childs of the group
function get_group_childs($group)
{
  if (!
get_is_valid_group($group)) { exit("Invalid Group!"); } else
    {
      
$group_rel=get_data_group_rel();
      
$ergb=array();
      foreach(
$group_rel as $cur_group_key => $cur_group )
    {
      if (
$cur_group['parent']==$group) { $ergb[]=$cur_group_key; }
    }
      return 
$ergb;
    }
}

// Is group a child (of a child) of 
function get_is_group_child_of_group($group_father,$group_candidat)
{
  if ((!
get_is_valid_group($group_father)) || (!get_is_valid_group($group_candidat)) ) { exit("Invalid Group!"); } else
    {  
      if (
$group_father==$group_candidat) return true;
      else
        {
          if (
$group_candidat=='head') return false;
          else
            {
              
$group_rel=get_data_group_rel();
              
$father=$group_rel[$group_candidat]['parent'];
              return 
get_is_group_child_of_group($group_father,$father);
            }
        }
    }
}

// How depth in the hirachie is this group?
function get_group_depth($group)
{
  if (!
get_is_valid_group($group)) { exit("Invalid Group!"); } else
    {
      
$group_rel=get_data_group_rel();
      
// Are we in the top group or do we have parents?
      
if ($group=="head")
    {
      return 
1;
    }
      else
    {
      return 
get_group_depth($group_rel[$group]['parent']);
    }
    }
}

// How depth in the hirachie is this id?
function get_id_depth($id)
{
  return 
get_group_depth(get_id_group($id));
}

// Get Description of a group
function get_group_desc($group,$lang,$viewer_id)
{
  if (!
get_is_valid_group($group)) { exit("Invalid Group!"); } else
    {
      
$group_rel=get_data_group_rel();
      foreach(
$group_rel as $cur_group_key => $cur_group )
    {
      if (
$cur_group_key==$group)
        {
          if (isset(
$cur_group['defaultpageid']))
            {
              
$tmp_id=$cur_group['defaultpageid'];
              return 
get_title($tmp_id,$lang,calc_backpfad(get_id_dir_dst($viewer_id),$lang));
            }
        }
    }
    }
}

// Get Members of a Group
function get_id_groupmembers($group)
{
  if (!
get_is_valid_group($group)) { exit("Invalid Group!"); } else
    {
      
$page_ids=get_data_page_ids();
      
$ergb=array();
      
// Alle Ids durchlaufen
      
foreach($page_ids as $cur_key_id => $cur_key)
    {
      
// Nach einer IDs mit der passenden Gruppe suchen
      
if ((get_id_group($cur_key_id)==$group))
        {
          
$ergb[]=$cur_key_id;
        }
    }
      return 
$ergb;
    }
}

// Get Members of a Group that have the same language
function get_id_groupmembers_withlang($group,$lang)
{
  if (!
get_is_valid_group($group)) { exit("Invalid Group!"); } else
    {
      
$page_ids=get_data_page_ids();
      
$ergb=array();
      
// Alle Ids durchlaufen
      
foreach($page_ids as $cur_key_id => $cur_key)
    {
      
// Nach einer IDs mit der passenden Gruppe und passenden Sprachen suchen
      
if ((get_id_group($cur_key_id)==$group) && (get_id_lang_included($cur_key_id,$lang)))
        {
          
$ergb[]=$cur_key_id;
        }
    }
      return 
$ergb;
    }
}

// Get the id which is the default id for this group
function get_default_id_for_group($group)
{
  if (!
get_is_valid_group($group)) { exit("Invalid Group!"); } else
    {
      
$group_rel=get_data_group_rel();
      
$default_id=$group_rel[$group]['defaultpageid'];
      if (!
get_is_valid_id($default_id)) { exit("Unknow page ID!"); } else
        {
          return 
$default_id;
        }
    }
}

// Is this id the default for a group?
function get_is_a_default_id_for_a_group($id)
{
  if (!
get_is_valid_id($id)) { exit("Unknow page ID!"); } else
    {
      
$group_rel=get_data_group_rel();
      foreach(
$group_rel as $cur_group_key => $cur_group )
        {
          if (
$cur_group['defaultpageid']==$id)
            {
              return 
true;
            }
        }
      return 
false;
    }
}

?>