Location: PHPKode > projects > Aratix > aratix/admin/inc/pages.inc.php
<?php
/*
** Aratix
** Version 0.1.0beta8 (Anubis)
**
** Autor: Manuel Burghammer
** E-Mail: hide@address.com
** Homepage: http://www.xitara.net
**
** File: pages.inc.php - Version 0.1.0 build 49
** Position: /admin/inc/
** Last Modified: 29.06.2006 - 00:43:39
*/

/* Wenn das Modul "pages" geladen
** wird, entsprechende Programmteile
** abarbeiten um dem Template die
** fertigen Daten zu übergeben
*/

/* Liste der installierten
** Module auslesen und an Smarty
** übergeben.
** Wird zum Anlegen und Editieren
** benötigt.
*/
if($action == "add" || $action == "edit"){
	$module_list = array();
	$modules = $db->read_array(TB_MODULES, "id, name, description", "active='true'", "name, description ASC");
	$debug->write(DEBUG, "Modulliste erstellen", __FILE__, __CLASS__, __METHOD__, __FUNCTION__, __LINE__);

	foreach($modules as $module){
		$debug->write(DEBUG, "Modulliste durchlaufen", __FILE__, __CLASS__, __METHOD__, __FUNCTION__, __LINE__);

		if(file_exists("../modules/module_" . $module['name'] . "/module_" . $module['name'] . ".php")){
			$debug->write(DEBUG, "Modulauswahl möglich: " . $module['name'], __FILE__, __CLASS__, __METHOD__, __FUNCTION__, __LINE__);
			$module_list[] = $module;
		}
	}
	if(empty($module_list))
		$module_list = "false";

	$content->assign("module_list", $module_list);
}

/* Feststellen, ob "overview"
** aufgerufen wird, dann Seitenübersicht
** ausgeben
*/
if($action == "overview"){

/* Erster Menüpunkt leer,
** damit smarty mit "iteration"
** arbeiten kann.
*/
	$counter = 1;

/* Array durchlaufen und für
** jede Seite Daten in die
** entsprechenden Arrays schreiben
**
** $counter
** Zähler für die Arrays
**
** $menupos_dropdown[]
** Dropdownbox der Menüpositionen
** Array mit allen Selectboxen
**
** $category_list[]
** Liste der Kategorien aus der Datenbank
**
** $group_list[]
** Liste der Gruppen aus der Datenbank
**
** $category_array[]
** Array mit allen Kategorien
** für diese Seite
**
** $group_array[]
** Array mit allen Gruppen
** für diese Seite
*/
	foreach($array as $page){ // Ausgeben von der Selectbox für die Menüreihenfolge
		$menupos_dropdown[$counter] = $class->get_menupos_dropdown($page['menu_pos'], $page['id']);
		$parent_dropdown[$counter] = $class->get_parent_dropdown($page['id']);
		$category_list = substr($page['category'], 1, strlen($page['category']) - 2);
		$group_list = substr($page['groups'], 1, strlen($page['groups']) - 2);
		$category_array[$counter] = explode("|", $category_list);
		$group_array[$counter++] = explode("|", $group_list);
	}

/* Alle Kategorien auslesen,
** die in der entprechenden
** Tabelle eingerichtet wurden
*/
	$categories = $db->read_array(TB_CATEGORY, "*", "", "name ASC");

/* Alle Gruppen auslesen, die
** nicht 1 (gesperrt) oder
** 99999 (admin) sind.
*/
	$groups = $db->read_array(TB_GROUPS, "*", "id > 2 AND id != 99999", "name ASC");

/* Parent der übergeordneten Seite
** auslesen
*/
	$parent = $db->read(TB_PAGES, "parent", "id=" . $array[0]['parent']);

	if($parent['parent'] == -1)
		$parent_ = 1;
	else
		$parent_ = $parent['parent'];

/* Daten an Smarty übergeben
*/
	$content->assign("categories", $categories);
	$content->assign("menupos_dropdown", $menupos_dropdown);
	$content->assign("parent_dropdown", $parent_dropdown);
	$content->assign("category_array", $category_array);
	$content->assign("group_array", $group_array);
	$content->assign("groups", $groups);
	$content->assign("id", get('id'));
	$content->assign("parent", $parent_);
}

/* Wenn Seite hinzugefügt
** werden soll, Daten verarbeiten
** und in die Datenbank eintragen
*/
if($action == "add" && get('submit')){ // ... wenn neue Seite gesendet wurde, auswerten

/* Spaltennamen in einen
** String schreiben
*/
	$set = "menu_text;;head_text;;splash_text;;content;;autor_id;;autor_date;;menu_pos;;parent;;category;;groups;;language;;module_name;;nice_text";

/* Die ID des Authors auslesen
** und diese ID als Author in
** die Seitendaten eintragen
*/
	$author = $db->read(TB_SESSION, "user_id", "user_md5='" . get('ident') . "' AND session='" . get('session') . "'");

/* String schreiben mit den
** Daten für die Seite
*/
	if(get('art') == "module")
		$act_module = get('module');
	else
		$act_module = "";

	$data = get('menutext') . ";;" . get('heading') . ";;" . get('splash') . ";;" . get('page_area') . ";;";
	$data .= $author['user_id'] . ";;NOW();;99999;;1;;|1|;;|2|;;" . $config->get('language') . ";;" . $act_module . ";;" . get('nicetext');

/* Daten in die Datenbank schreiben
*/
	$new_id = $db->write(TB_PAGES, $set, $data);

/* Und die Übersichtsseite
** aufrufen
*/
	echo "<script type=\"text/javascript\">\n";
	echo "location.href='index.php?" . $session_string . "module=pages&action=overview&id=" . $new_id . "';\n";
	echo "</script>";
}
if($action == "edit" && get('submit')){
	$set = "menu_text;;head_text;;splash_text;;content;;module_name;;nice_text";

	$autor = $db->read(TB_SESSION, "user_id", "user_md5='" . get('ident') . "' AND session='" . get('session') . "'");

/* Wenn ein Modul aktiviert wurde,
** wird der Modulname zusätzlich in
** die Datenbank geschrieben
*/
	if(get('art') == "module")
		$act_module = get('module_name');
	else
		$act_module = "";

/* Der Text selbst wird erhalten, um
** einen späteren Wechsel möglich zu
** machen. Dadurch ist z.B. möglich,
** eine Seite kurzfristig zu sperren
** oder bis zu einem Termin auf ein
** Modul zu legen.
*/
	$data = get('menutext') . ";;" . get('heading') . ";;" . get('splash') . ";;" . get('page_area') . ";;";
	$data .= $act_module . ";;" . get('nicetext');

	$db->update(TB_PAGES, $set, $data, "id='" . get('id') . "'");
	$parent = $db->read(TB_PAGES, "parent", "id='" . get('id') . "'");

	echo "<script type=\"text/javascript\">\n";
	echo "location.href='index.php?" . $session_string . "module=pages&action=overview&parent=" . $parent['parent'] . "&id=" . get('id') . "';\n";
	echo "</script>";
}
if($action == "delete"){
	echo "<script type=\"text/javascript\">\n";
	echo "location.href='index.php?" . $session_string . "module=pages&action=overview';\n";
	echo "</script>";
}
?>
Return current item: Aratix