From 0cadc4e68340e02e6b51c29a672db7bb92386fa7 Mon Sep 17 00:00:00 2001 From: Dries Buytaert <dries@buytaert.net> Date: Sat, 23 Dec 2000 15:13:34 +0000 Subject: [PATCH] - intermediate commit: some bugfixes, changes and some drastic changes to block and module support --- .htaccess | 1 + admin.php | 69 ++++++++++++++++++++++---------------- cron.php | 21 ++++++++++-- includes/theme.inc | 1 + includes/widget.inc | 32 +++++++++--------- module.php | 4 +-- themes/marvin/marvin.theme | 9 ++--- 7 files changed, 83 insertions(+), 54 deletions(-) diff --git a/.htaccess b/.htaccess index 9ba609af759a..6a1c296c066c 100644 --- a/.htaccess +++ b/.htaccess @@ -32,4 +32,5 @@ ErrorDocument 500 /error.php php_value session.cookie_lifetime 2000000 php_value session.gc_maxlifetime 2000000 php_value session.cache_expire 200000 + php_value session.save_path /tmp/dropsessions </IfModule> diff --git a/admin.php b/admin.php index b20e98efdc17..7fb758535bda 100644 --- a/admin.php +++ b/admin.php @@ -1,39 +1,50 @@ <? -// temporary permission solution: +// validate user permission: if (!$user->id || ($user->permissions != 1 && $user->id > 1)) exit(); -include "includes/admin.inc"; -include "includes/cron.inc"; - -// display admin header: -admin_header(); - -// generate administrator menu: -$handle = opendir("modules"); -while ($file = readdir($handle)) { - if ($filename = substr($file, 0, strpos($file, ".module"))) { - if ($filename == $mod) { - $output .= "$filename | "; - } - else { - include_once "modules/$filename.module"; - if ($module["cron"] && !cron_get($filename)) cron_set($filename, 172800); - if ($module["admin"]) $output .= "<A HREF=\"admin.php?mod=$filename\">$filename</A> | "; - } +include_once "includes/theme.inc"; +include_once "includes/cron.inc"; + +function admin_page($mod) { + global $repository, $menu, $modules; + + function module($name, $module) { + global $menu, $modules; + if ($module["admin"]) $output .= "<A HREF=\"admin.php?mod=$name\">$name</A> | "; + $menu .= $output; } -} -closedir($handle); + + ?> + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> + <HTML> + <HEAD><TITLE><? echo $site_name; ?> administration center</TITLE></HEAD> + <STYLE> + body { font-family: helvetica, arial; } + h1 { font-size: 14pt; font-weight: bold; color: #990000; } + h2 { font-family: helvetica, arial; font-size: 12pt; font-weight: bold; } + h3 { font-family: helvetica, arial; font-size: 14pt; font-weight: bold; } + th { font-family: helvetica, arial; text-align: center; background-color: #CCCCCC; color: #995555; } + td { font-family: helvetica, arial; } + </STYLE> + <BODY BGCOLOR="#FFFFFF" LINK="#005599" VLINK="#004499" ALINK="#FF0000"> + <H1>Administration center</H1> + <? -print "<HR>$output <A HREF=\"\">home</A><HR>"; + module_iterate("module"); + + ?> + <HR><? echo $menu; ?><A HREF="">home</A><HR> + <? + + module_execute($mod, "admin"); -// display administrator body: -if ($mod) { - include "modules/$mod.module"; - if ($function = $module["admin"]) $function(); + ?> + </BODY> + </HTML> + <? } -// display admin footer: -admin_footer(); +admin_page($mod); -?> \ No newline at end of file +?> diff --git a/cron.php b/cron.php index 376792366bba..3cb6abfcb093 100644 --- a/cron.php +++ b/cron.php @@ -1,7 +1,24 @@ <? -include "includes/cron.inc"; +include "includes/theme.inc"; + +function cron_run($cron) { + global $repository; + + $time = time(); + + $result = db_query("SELECT * FROM crons WHERE $time - timestamp > scheduled"); + + while ($task = db_fetch_object($result)) { + if ($repository[$task->module]["cron"]) { + watchdog("message", "cron: executed '". $task->module ."_cron()'"); + $repository[$task->module]["cron"](); + } + } + + db_query("UPDATE crons SET timestamp = $time WHERE $time - timestamp > scheduled"); +} cron_run(); -?> +?> \ No newline at end of file diff --git a/includes/theme.inc b/includes/theme.inc index d1c3540e5551..583bc0044cbe 100644 --- a/includes/theme.inc +++ b/includes/theme.inc @@ -5,6 +5,7 @@ include_once "includes/watchdog.inc"; include_once "includes/function.inc"; include_once "includes/droplet.inc"; +include_once "includes/module.inc"; include_once "includes/widget.inc"; include_once "includes/user.inc"; diff --git a/includes/widget.inc b/includes/widget.inc index 2ea57a2469ed..96fe68ab4b0a 100644 --- a/includes/widget.inc +++ b/includes/widget.inc @@ -1,5 +1,21 @@ <? +function display_module_blocks() { + global $repository, $theme; + + function display_block($name, $module) { + global $theme; + + if ($blocks = module_execute($name, "block")) { + foreach ($blocks as $id=>$block) { + $theme->box($block["subject"], $block["content"]); + } + } + } + + module_iterate("display_block"); +} + function display_morelink($theme, $story) { return ($story->article) ? "[ <A HREF=\"discussion.php?id=$story->id\"><FONT COLOR=\"$theme->hlcolor2\"><B>read more</B></FONT></A> | ". strlen($story->article) ." bytes | <A HREF=\"discussion.php?id=$story->id\"><FONT COLOR=\"$theme->hlcolor2\">". format_plural($story->comments, "comment", "comments") ."</FONT></A> ]" : "[ <A HREF=\"discussion.php?id=$story->id\"><FONT COLOR=\"$theme->hlcolor2\">". format_plural($story->comments, "comment", "comments") ."</FONT></A> ]"; } @@ -72,20 +88,6 @@ function display_comment_moderation($id, $author, $score, $votes) { return $output; } -function display_new_diaries($theme, $num = 20) { - $result = db_query("SELECT u.userid, d.timestamp FROM diaries d LEFT JOIN users u ON d.author = u.id ORDER BY timestamp DESC LIMIT $num"); - - while ($diary = db_fetch_object($result)) { - if ($time != date("F jS", $diary->timestamp)) { - $content .= "<P><B>". date("l, M jS", $diary->timestamp) ."</B></P>\n"; - $time = date("F jS", $diary->timestamp); - } - $content .= "<LI><A HREF=\"module.php?mod=diary&op=view&name=$diary->userid\">$diary->userid</A></LI>\n"; - } - $content .= "<P ALIGN=\"right\">[ <A HREF=\"module.php?mod=diary\"><FONT COLOR=\"$theme->hlcolor2\">more</FONT></A> ]</P>"; - $theme->box("Recent diary entries", $content); -} - function display_new_headlines($theme, $num = 10) { global $user; @@ -115,7 +117,7 @@ function submission_number() { $content .= "<P>\n"; $content .= "<LI><A HREF=\"account.php?op=edit&topic=diary\">edit your diary</A></LI>\n"; $content .= "<LI><A HREF=\"account.php?op=edit&topic=user\">edit your information</A></LI>\n"; - $content .= "<LI><A HREF=\"account.php?op=edit&topic=page\">edit your settings</A></LI>\n"; + $content .= "<LI><A HREF=\"account.php?op=edit&topic=site\">edit your settings</A></LI>\n"; $content .= "<P>\n"; $content .= "<LI><A HREF=\"account.php?op=view&topic=diary\">view your diary</A></LI>\n"; $content .= "<LI><A HREF=\"account.php?op=view&topic=info\">view your information</A></LI>\n"; diff --git a/module.php b/module.php index c6ceacf0643a..f2246aae66aa 100644 --- a/module.php +++ b/module.php @@ -1,6 +1,6 @@ <? -include "modules/$mod.module"; -if ($function = $module["page"]) $function(); +include_once "includes/theme.inc"; +module_execute($mod, "page"); ?> diff --git a/themes/marvin/marvin.theme b/themes/marvin/marvin.theme index 076f0083a672..b8e6710838a4 100644 --- a/themes/marvin/marvin.theme +++ b/themes/marvin/marvin.theme @@ -256,14 +256,11 @@ function footer() { ### Display account: display_account($this); - ### Display calendar: + ### Display old headlines: display_old_headlines($this); - ### Display calendar: - $this->box("Browse archives", droplet_get("calendar")); - - ### Display new diary entries: - display_new_diaries($this); + ### Display module blocks: + display_module_blocks(); } elseif (strstr($PHP_SELF, "account.php")) { ### Display account: -- GitLab