- intermediate commit: some bugfixes, changes and some drastic
changes to block and module support3-00
							parent
							
								
									5976e2f85e
								
							
						
					
					
						commit
						0cadc4e683
					
				| 
						 | 
				
			
			@ -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>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										65
									
								
								admin.php
								
								
								
								
							
							
						
						
									
										65
									
								
								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";
 | 
			
		||||
include_once "includes/theme.inc";
 | 
			
		||||
include_once "includes/cron.inc";
 | 
			
		||||
 | 
			
		||||
// display admin header:
 | 
			
		||||
admin_header();
 | 
			
		||||
function admin_page($mod) {  
 | 
			
		||||
  global $repository, $menu, $modules;
 | 
			
		||||
 | 
			
		||||
// 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> | ";
 | 
			
		||||
    }
 | 
			
		||||
  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>
 | 
			
		||||
 <?
 | 
			
		||||
 | 
			
		||||
// display administrator body:
 | 
			
		||||
if ($mod) {
 | 
			
		||||
  include "modules/$mod.module";
 | 
			
		||||
  if ($function = $module["admin"]) $function();
 | 
			
		||||
  module_execute($mod, "admin");
 | 
			
		||||
 | 
			
		||||
 ?>
 | 
			
		||||
   </BODY>
 | 
			
		||||
  </HTML>
 | 
			
		||||
 <?
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// display admin footer:
 | 
			
		||||
admin_footer();
 | 
			
		||||
admin_page($mod);
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
?>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										21
									
								
								cron.php
								
								
								
								
							
							
						
						
									
										21
									
								
								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();
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
?>
 | 
			
		||||
| 
						 | 
				
			
			@ -5,6 +5,7 @@ include_once "includes/database.inc";
 | 
			
		|||
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";
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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 display_account($theme) {
 | 
			
		|||
    $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";
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
<?
 | 
			
		||||
 | 
			
		||||
include "modules/$mod.module"; 
 | 
			
		||||
if ($function = $module["page"]) $function();
 | 
			
		||||
include_once "includes/theme.inc";
 | 
			
		||||
module_execute($mod, "page");
 | 
			
		||||
 | 
			
		||||
?>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -256,14 +256,11 @@
 | 
			
		|||
           ### 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:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue