很棒的在线教学系统

源代码在线查看: sitemap.php

软件大小: 12697 K
上传用户: huanghuanl
关键词: 在线教学
下载地址: 免注册下载 普通下载 VIP

相关代码

												/*				    This plugin will create a sitemap rooted at the given location				    Written By: Jeffrey Engleman				*/								define("EWIKI_PAGE_SITEMAP", "SiteMap");				define("EWIKI_SITEMAP_DEPTH", 10);				$ewiki_t["en"]["INVALIDROOT"] = "You are not authorized to access the current root page so no sitemap can be created.";				$ewiki_t["en"]["SMFOR"] = "Site map for ";				$ewiki_t["en"]["VIEWSMFOR"] = "View site map for ";				$ewiki_plugins["page"][EWIKI_PAGE_SITEMAP]="ewiki_page_sitemap";				$ewiki_plugins["action"]['sitemap']="ewiki_page_sitemap";								if(!isset($ewiki_config["SiteMap"]["RootList"])){				  $ewiki_config["SiteMap"]["RootList"]=array(EWIKI_PAGE_INDEX);				}								/* 				  populates an array with all sites the current user is allowed to access				  calls the sitemap creation function.				  returns the sitemap to be displayed.				*/				function ewiki_page_sitemap($id=0, $data=0, $action=0){				  global $ewiki_config;								  //**code hijacked from page_pageindex.php**				  //creates a list of all of the valid wiki pages in the site				  $str_null=NULL;								  $a_validpages=ewiki_valid_pages(0,1);				  				  //**end of hijacked code**				  //$time_end=getmicrotime();								  //creates the title bar on top of page 				  if($id == EWIKI_PAGE_SITEMAP){				    $o = ewiki_make_title($id, $id, 2);  								    foreach($ewiki_config["SiteMap"]["RootList"] as $root){				      if(isset($a_validpages[$root])){				        $valid_root=TRUE;				        $str_rootid=$root;				        break;				      }				    }				    				  }else{				    $o = ewiki_make_title($id, ewiki_t("SMFOR")." ".$id, 2);    				    if(isset($a_validpages[$id])){				      $valid_root=TRUE;				      $str_rootid=$id;				    }    				  }								  $o .= "".ewiki_t("VIEWSMFOR")." ";								  foreach($ewiki_config["SiteMap"]["RootList"] as $root){				    if(isset($a_validpages[$root])){				      $o.=''.$root.' ';				    }				  }				  				  $o.="";								  //checks to see if the user is allowed to view the root page				  if(!isset($a_validpages[$str_rootid])){				    $o .= ewiki_t("INVALIDROOT");				    return $o;				  }				  				  //$timesitemap=getmicrotime();				  $a_sitemap=ewiki_sitemap_create($str_rootid, $a_validpages, EWIKI_SITEMAP_DEPTH);								  $timer=array();				  $level=-1;				  $fordump=0;				  $str_formatted="\n".$str_rootid."";				  $fin_level=format_sitemap($a_sitemap, $str_rootid, $str_formatted, $level, $timer, $fordump);				  $str_formatted.="".str_pad("", $fin_level*6, "\n");				  $o.=$str_formatted;				  				  //$timesitemap_end=getmicrotime();				  				  //$o.="GetAll: ".($time_end-$time)."\n";				  //$o.="SiteMap: ".($timesitemap_end-$timesitemap)."\n";				  //$o.="Total: ".($timesitemap_end-$time);				  				  				  return($o);				    				}								function ewiki_valid_pages($bool_allowimages=0, $virtual_pages=0){				  //$time=getmicrotime();				  global $ewiki_plugins;				  $result = ewiki_database("GETALL", array("flags", "refs", "meta"));				  while ($row = $result->get()) {				    if (EWIKI_PROTECTED_MODE && EWIKI_PROTECTED_MODE_HIDING && !ewiki_auth($row["id"], $str_null, "view")) {				      continue;				    }   				    				    $isbinary= ($row["meta"]["class"]=="image"||$row["meta"]["class"]=="file")?true:false;				    				    if (($row["flags"] & EWIKI_DB_F_TYPE) == EWIKI_DB_F_TEXT || ($bool_allowimages ? $isbinary : 0)) {				      $temp_refs=explode("\n",$row["refs"]);				      foreach($temp_refs as $key => $value) {				        if(empty($value)) {				          unset($temp_refs[$key]);				        }				      }				      if($isbinary){				        $a_validpages[$row["id"]]=$temp_array=array("refs" => $temp_refs, "type" => $row["meta"]["class"], "touched" => FALSE);				      } else {				        $a_validpages[$row["id"]]=$temp_array=array("refs" => $temp_refs, "type" => "page", "touched" => FALSE);				      }				      unset($temp_refs);				    }				  }								  if($virtual_pages){				    #-- include virtual pages to the sitemap.				    $virtual = array_keys($ewiki_plugins["page"]);				    foreach($virtual as $vp){				      if(!EWIKI_PROTECTED_MODE || !EWIKI_PROTECTED_MODE_HIDING || ewiki_auth($vp, $str_null, "view")){				        $a_validpages[$vp]=array("refs" => array(), "type" => "page", "touched" => FALSE);				      }				    }				  }				  return $a_validpages;				}								/*				  Adds each of the pages in the sitemap to an HTML list.  Each site is a clickable link.				*/				function format_sitemap($a_sitemap, $str_rootpage, &$str_formatted, &$prevlevel, &$timer, &$fordump){								  //get all children of the root format them and store in $str_formatted array				  $a_sitemap[$str_rootpage]["child"]= is_array($a_sitemap[$str_rootpage]["child"])?$a_sitemap[$str_rootpage]["child"]:array();				  if($a_sitemap[$str_rootpage]["child"]){				    while($str_child = current($a_sitemap[$str_rootpage]["child"])){				      $str_mark="";				      if($a_sitemap[$str_rootpage]["level"]>$prevlevel){				        $str_mark="\n";				      } 				      elseif ($a_sitemap[$str_rootpage]["level"]				        //markup length is 6 characters				        $str_mark=str_pad("", ($prevlevel-$a_sitemap[$str_rootpage]["level"])*6, "\n");				      }				      $prevlevel=$a_sitemap[$str_rootpage]["level"];				      if($fordump){				        $str_formatted.=($str_mark."".$str_child."\n");				      } else {				        $str_formatted.=($str_mark."".$str_child."\n");				      }				      array_shift($a_sitemap[$str_rootpage]["child"]);				      format_sitemap($a_sitemap, $str_child, $str_formatted, $prevlevel, $timer, $fordump);				    }				    return ($prevlevel+1);				  }				}												/*				  gets all children of the given root and stores them in the $a_children array				*/				function ewiki_page_listallchildren($str_root, &$a_children, &$a_sitemap, &$a_validpages, $i_level, $i_maxdepth, $i_flatmap){				  if(($i_level				    foreach($a_validpages[$str_root]["refs"] as $str_refs){				      if($str_refs){ //make sure $str_refs contains a value before doing anything				        if(isset($a_validpages[$str_refs])){ //test page validity				          if(!$a_validpages[$str_refs]["touched"]){ //check to see if page already exists				            if($i_flatmap){				              $a_sitemap[]=$str_refs;				            }				            $a_validpages[$str_refs]["touched"]=TRUE; //mark page as displayed				            $a_children[$str_refs]="";				            $a_currchildren[]=$str_refs;				          }				        }				      }				    }				    if(!$i_flatmap){				      if($a_currchildren){				        $a_sitemap[$str_root]=array("level" => $i_level, "child" => $a_currchildren);				      } else {				        $a_sitemap[$str_root]=array("level" => $i_level);				      }				    } 				  }				}   												/*				  Creates the sitemap. And sends the data to the format_sitemap function.				  Returns the HTML formatted sitemap.				*/				function ewiki_sitemap_create($str_rootid, $a_validpages, $i_maxdepth, $i_flatmap=0){				  //map starts out with a depth of 0				  $i_depth=0;				  $forcelevel=FALSE;								  //create entry for root in the sitemap array				  if(!$i_flatmap){				    $a_sitemap[$str_rootid]=array("parent" => "", "level" => $i_depth, "child" => $str_rootid);				  } else {				    $a_sitemap[]=$str_rootid;				  }				  //mark the root page as touched				  $a_validpages[$str_rootid]["touched"]=TRUE;				  //list all of the children of the root				  ewiki_page_listallchildren($str_rootid, $a_children, $a_sitemap, $a_validpages, $i_depth, $i_maxdepth, $i_flatmap);				  $i_depth++;    				    				  if($a_children){				    end($a_children);				    $str_nextlevel=key($a_children);				    reset($a_children);				    				    while($str_child = key($a_children)){				      //list all children of the current child				      ewiki_page_listallchildren($str_child, $a_children, $a_sitemap, $a_validpages, $i_depth, $i_maxdepth, $i_flatmap);				      				      //if the child is the next level marker...				      if($str_child==$str_nextlevel){				        //increment the level counter				        $i_depth++;				        //determine which child marks the end of this level				        end($a_children);				        $str_nextlevel=key($a_children);				        //reset the array counter to the beginning of the array				        reset($a_children);				        //we are done with this child...get rid of it 				      }				      array_shift($a_children);				    }				  }								  return $a_sitemap;				}				?>							

相关资源