Subversion-Projekte lars-tiefland.em_wm

Revision

Revision 74 | Revision 81 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
3 lars 1
<?
66 lars 2
	$dir=dirname($_SERVER["PHP_SELF"]);
3
	$host="http://".$_SERVER["SERVER_NAME"];
4
	$url=$host.$dir;
5
	$pear_logger=&create_pear_logger();
6
	$php_logger=&create_php_logger();
7
	set_error_handler('errorHandler_PHP');
8
	PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, 'errorHandler');
9
	$u=null;
10
	$a=null;
44 lars 11
	$username=(isset($_POST["username"]))?$_POST["username"]:"";
66 lars 12
 
13
	function errorHandler_PHP($code, $message, $file, $line)
14
	{
15
		global $php_logger;
16
		/* Map the PHP error to a Log priority. */
17
		switch ($code) {
18
			case E_WARNING:
19
			case E_USER_WARNING:
20
				$priority = PEAR_LOG_WARNING;
21
				break;
22
			case E_NOTICE:
23
			case E_USER_NOTICE:
24
				$priority = PEAR_LOG_NOTICE;
25
				break;
26
			case E_ERROR:
27
			case E_USER_ERROR:
28
				$priority = PEAR_LOG_ERR;
29
				break;
30
			default:
31
				$priotity = PEAR_LOG_INFO;
32
		}
33
		$php_logger->log($message . ' in ' . $file . ' in Zeile ' . $line, $priority);
34
	}
35
 
36
	function errorHandler($error)
37
	{
38
		global $pear_logger;
39
 
40
		$message = $error->getUserInfo();
41
 
42
		if (!empty($error->backtrace[1]['file']))
43
		{
44
			$message .= ' (' . $error->backtrace[1]['file'];
45
			if (!empty($error->backtrace[1]['line']))
46
			{
47
				$message .= ' in Zeile ' . $error->backtrace[1]['line'];
48
			}
49
			$message .= ')';
50
		}
51
		$res=$pear_logger->log($message, PEAR_LOG_ERR);
52
	}
53
 
64 lars 54
	function create_logger()
55
	{
56
		global $db, $u;
57
		$params_log["db"]=$db;
58
		$params_log["u_id"]=$u->u_id;
59
		$logger=&Log::singleton("lt_sql","log","fifa",$params_log);
60
		return $logger;
61
	}
66 lars 62
 
63
	function create_php_logger()
64
	{
65
		global $url;
66
		$file_params["mode"]="666";
67
    		$file_params["lineFormat"] = '%1$s %2$s [%3$s] %4$s %5$s %6$s %7$s';
68
		$mail_params["from"]="Lars Tiefland <webmaster@lars-tiefland.de>";
69
		$mail_params["subject"]="PHP Fehler auf $url";
70
		$l1=&Log::singleton("file","php_errors.log","fifa_php",$file_params);
71
		$l2=&Log::singleton("mail","ltiefland@gmail.com","fifa_php",$mail_params);
72
		$l3=&Log::singleton("composite");
73
		$c1=$l3->addChild($l1);
74
		$c2=$l3->addChild($l2);
75
		return $l3;
76
	}
77
 
78
	function create_pear_logger()
79
	{
80
		global $url;
81
		$file_params["mode"]="666";
82
    		$file_params["lineFormat"] = '%1$s %2$s [%3$s] %4$s %5$s %6$s %7$s';
83
		$mail_params["from"]="Lars Tiefland <webmaster@lars-tiefland.de>";
84
		$mail_params["subject"]="PEAR Fehler auf $url";
85
		$l1=&Log::singleton("file","pear_errors.log","fifa_pear",$file_params);
86
		$l2=&Log::singleton("mail","ltiefland@gmail.com","fifa_pear",$mail_params);
87
		$l3=&Log::singleton("composite");
88
		$c1=$l3->addChild($l1);
89
		$c2=$l3->addChild($l2);
90
		return $l3;
91
	}
92
 
60 lars 93
	function send_email($art=0)
94
	{
71 lars 95
		global $u, $mail, $password, $common, $url, $u_key;
60 lars 96
		$to="$u->u_name <$u->u_email>";
97
		$from_addr="webmaster@lars-tiefland.de";
98
		$from_name="Lars Tiefland";
99
		$from="$from_name <$from_addr>";
100
		$art=intval($art);
101
		switch ($art)
102
		{
103
			case 0:
104
				$email_tpl="email/$u->u_lang/register.tpl";
71 lars 105
				$subject=$common["reg_subject"]." - Welcome to $url";
60 lars 106
				break;
107
			case 1:
108
				$email_tpl="email/$u->u_lang/changed.tpl";
71 lars 109
				$subject=$common["changed_subject"];
60 lars 110
				break;
111
			case 2:
61 lars 112
				$email_tpl="email/$u->u_lang/change.tpl";
71 lars 113
				$subject=$common["change_subject"];
60 lars 114
			default:
115
				return false;
116
				break;
117
		}
118
		if (file_exists($email_tpl))
119
		{
120
			$email=file_get_contents("$email_tpl");
71 lars 121
			$url_act=$url."activate.php";
122
			$email=sprintf($email, $u->u_name, $url, $u->u_name, $password, $url_act."?key=$u_key", $url_act, $u_key);
60 lars 123
			$headers["From"]=$from;
124
			$headers["To"]=$to;
125
			$headers["Subject"]=$subject;
126
			$ret=$mail->send($to,$headers,$email);
127
		}
128
		else
129
		{
130
			$ret=false;
131
		}
132
		return $ret;
133
	}
134
 
44 lars 135
	function login($username, $password)
136
	{
66 lars 137
		global $smarty, $username, $meld, $db_meld, $common,$a, $loc, $year, $type, $config;
138
		$type=$common["$config->type"];
64 lars 139
		$smarty->assign("meld", ($username||$meld)?$common["an_error_occured"]:$meld);
140
		$smarty->assign("db_meld", ($username)?$common["userinfo_incorrect"]:$db_meld);
54 lars 141
		$smarty->assign("error", ($username||$meld)?true: false);
62 lars 142
		$smarty->assign("title", $common["login"]);
44 lars 143
		$smarty->assign("user", $username);
66 lars 144
		$date=$loc->formatDateTime(time());
145
		$smarty->assign("date",$date);
146
		$smarty->assign("year", $year);
147
		$smarty->assign("L_TYPE", $type);
44 lars 148
		$smarty->display("login.tpl");
149
	}
150
 
151
	function User_Login($show=true)
152
	{
66 lars 153
		global $smarty, $db, $a, $config, $u, $common;
44 lars 154
		$params = array(
155
			"dsn" => $db,
156
			"table" => "auth_user",
157
			"usernamecol" => "u_name",
158
			"passwordcol" => "u_password"
159
		);
160
 
161
		$a = new Auth("DB", $params, "login",$show);
162
		$a->setSessionName($config->cookie_name);
163
		$a->setIdle($config->session_length,false);
164
		$a->setExpire(2*$config->session_length,false);
165
		$a->start();
166
		if ($a->getAuth())
167
		{
168
			$u=new User("","");
64 lars 169
			$u=$u->UserData($a->getUserName());
62 lars 170
			$smarty->assign("title",$common["login"]);
76 lars 171
				$smarty->assign("u_name", $u->u_name);
172
				$smarty->assign("u_type", $u->u_type);
173
				$disabled=($u->u_type==0)?"disabled=disabled":"";
174
				$smarty->assign("disabled", $disabled);
175
				$smarty->assign("disabled", "");
44 lars 176
		}
177
		return $a;
178
	}
179
 
180
	function User_logout()
181
	{
182
		global $a;
183
		$a->logout();
184
	}
39 lars 185
	// {{{ validate_email()
186
 
187
	/**
188
	 * Check to see if email address is valid or
189
	 * already present in the DB
190
	*/
3 lars 191
	function validate_email($email)
192
	{
193
		global $smarty;
194
		$meld="";
195
		$error=false;
196
		if ($email != '')
197
		{
198
			if (preg_match('/^[a-z0-9&\'\.\-_\+]+@[a-z0-9\-]+\.([a-z0-9\-]+\.)*?[a-z]+$/is', $email)&& $email!="your@address.com")
199
			{
200
					$error=false;
201
					$meld="";
202
					$db_meld="";
203
			}
204
			else
205
			{
206
				$error=true;
207
				$meld = "Email ungültig!";
208
				$db_meld="";
209
				$smarty->assign("email",$email);
210
			}
211
		}
212
		else
213
		{
214
			$error = true;
215
			$meld = "Email ungültig!";
216
			$db_meld="";
217
			$smarty->assign("email",$email);
218
		}
219
		if($error)
220
		{
221
			$smarty->assign("title","Ungültige E-Mail Adresse");
222
			$smarty->assign("error",$error);
223
			$smarty->assign("meld",$meld);
224
			$smarty->assign("db_meld",$db_meld);
225
		}
226
		else
227
		{
228
			$smarty->assign("meld","");
229
			$smarty->assign("db_meld","");
230
		}
231
		return !$error;
232
	}
39 lars 233
	// }}}
234
	// {{{ log_split()
3 lars 235
	function log_split($s)
236
	{
237
		global $k, $time0, $count_t;
238
		$r = Array();
239
		$p = 0;
240
		$l = strlen($s);
241
		while ($p < $l)
242
		{
243
			check_Time();
244
			while (($p < $l) && (strpos(" \r\t\n",$s[$p]) !== false))
245
			{
246
				$p++;
247
			}
248
			if ($s[$p] == '"')
249
			{
250
				$p++;
251
				$q = $p;
252
				while (($p < $l) && ($s[$p] != '"'))
253
				{
254
					if ($s[$p] == '\\')
255
					{
256
						$p+=2;
257
						continue;
258
					}
259
					$p++;
260
				}
261
				$r[] = stripslashes(substr($s, $q, $p-$q));
262
				$p++;
263
				while (($p < $l) && (strpos(" \r\t\n",$s[$p]) !== false))
264
				{
265
					$p++;
266
				}
267
				$p++;
268
			}
269
			else
270
			{
271
				if ($s[$p] == "'")
272
				{
273
					$p++;
274
					$q = $p;
275
					while (($p < $l) && ($s[$p] != "'"))
276
					{
277
						if ($s[$p] == '\\')
278
						{
279
							$p+=2;
280
								continue;
281
						}
282
					$p++;
283
					}
284
					$r[] = stripslashes(substr($s, $q, $p-$q));
285
					$p++;
286
					while (($p < $l) && (strpos(" \r\t\n",$s[$p]) !== false))
287
					{
288
						$p++;
289
					}
290
						$p++;
291
				}
292
				else
293
				{
294
					$q = $p;
295
					while (($p < $l) && (strpos(";",$s[$p]) === false))
296
					{
297
						$p++;
298
					}
299
					$r[] = stripslashes(trim(substr($s, $q, $p-$q)))
300
;
301
					while (($p < $l) && (strpos(" \r\t\n",$s[$p]) !== false))
302
					{
303
						$p++;
304
					}
305
					$p++;
306
				}
307
			}
308
		}
309
		$r2 = array(array());
310
		$i=0;
311
		$j=0;
312
		$ind=0;
313
		$anz=count($r);
314
		while ($i < $anz)
315
		{
316
			$wert=$r[$i];
317
			$l=strlen($wert)-1;
318
			$char=substr($wert,$l,1);
319
			if($char=='"' || $char=='"')
320
			{
321
				$wert=substr($wert,0,$l);
322
			}
323
			$r2[$j][$ind]=$wert;
324
			if ($ind == 2)
325
			{
326
				$ind=0;
327
				$j++;
328
			}
329
			else
330
			{
331
				$ind++;
332
			}
333
			$i++;
334
		}
335
		return $r2;
336
	}
39 lars 337
	// }}}
338
	// {{{ check_Time()
3 lars 339
	function check_Time()
340
	{
341
		global $time0;
342
		$count_t=0;
343
		$time1=time();
344
		if ($time1-$time0 >= 25)
345
		{
346
			$time0=$time1;
347
			$count_t++;
348
			set_time_limit(30);
349
		}
350
	}
39 lars 351
	// }}}
352
	// {{{ PMA_readFile()
353
 
3 lars 354
	//This function reads the file uploaded according to compression method
355
	function PMA_readFile($fname, $comp)
356
	{
357
		if (isset($fname))
358
		{
359
			check_Time();
360
			switch ($comp)
361
			{
362
				case 'self':
363
				$file = @fopen("$fname", 'rb');
364
				if (!$file)
365
				{
366
					return FALSE;
367
				}
368
				$test = fread($file, 3);
369
				fclose($file);
370
				if ($test[0] == chr(31) && $test[1] == chr(139))
371
				{
372
					return PMA_readFile($fname,"gzip");
373
				}
374
				else
375
				{
376
					if ($test == 'BZh')
377
					{
378
						return PMA_readFile($fname, 'bzip2');
379
					}
380
					else
381
					{
382
						return PMA_readFile($fname,'plain');
383
					}
384
				}
385
				break;
386
				case 'plain':
387
					$file = @fopen($fname, 'rb');
388
					if (!$file)
389
					{
390
						return FALSE;
391
					}
392
					$content = fread($file, filesize($fname));
393
					fclose($file);
394
				break;
395
				case 'gzip':
396
					if (@function_exists('gzopen'))
397
					{
398
						$file = @gzopen($path, 'rb');
399
						if (!$file)
400
						{
401
							return FALSE;
402
						}
403
						$content = '';
404
						while (!gzeof($file))
405
						{
406
							$content .= gzgetc($file);
407
						}
408
						gzclose($file);
409
					}
410
					else
411
					{
412
						return FALSE;
413
					}
414
					break;
415
				case 'bzip2':
416
					if (@function_exists('bzdecompress'))
417
					{
418
						$file = @fopen($fname, 'rb');
419
						if (!$file)
420
						{
421
							return FALSE;
422
						}
423
						$content = fread($file, filesize($fname));
424
						fclose($file);
425
						$content = bzdecompress($content);
426
					}
427
					else
428
					{
429
						return FALSE;
430
					}
431
					break;
432
				default:
433
					return FALSE;
434
			}
435
			check_Time();
436
			return $content;
437
		}
438
/*		else
439
		{
440
			require("import.php");
441
		}*/
442
	}
443
 
444
	function p_log($message)
445
	{
446
		global $u_id, $u_name, $pending, $email;
447
		$t_stamp=time();
448
		$sql="INSERT INTO log (user_id, datum, message) VALUES ($u_id, $t_stamp, '$message')";
449
		$res=mysql_query($sql);
450
		if($pending)
451
		{
452
			$body="User $u_name hat ".date('\u\m H:i:s \U\h\r')." folgende Akton durchgeführt: $message";
453
			$p="From: $email\r\nReply-To: $email\r\n";
454
			$p.="X-Mailer: PHP/" . phpversion();
455
			$res_m=@mail("info@gartencreart.de","Pflanzendatenank",$body,$p);
456
		}
457
		return $res;
458
	}
459
 
460
	function get_log_entries()
461
	{
462
		$sql="SELECT * FROM log";
463
		if($res=mysql_query($sql))
464
		{
465
			$anz=mysql_num_rows($res);
466
		}
467
		else
468
		{
469
			if (file_exists("../log/log.txt"))
470
			{
471
				$content=PMA_readFile("../log/log.txt","plain");
472
				$r=log_split($content);
473
				$anz=count($r[0]);
474
			}
475
		}
476
		return $anz;
477
	}
478
	function read_log($start)
479
	{
480
		$content="";
481
		global $max_anz;
482
		$sql="SELECT * FROM log LIMIT $start, $max_anz";
483
		if(mysql_num_rows($res=mysql_query($sql)))
484
		{
485
			while ($row_d=mysql_fetch_array($res))
486
			{
487
				$content.="'".$row_d["user_id"]."';'".$row_d["datum"]."';'".$row_d["message"]."'\r\n";
488
			}
489
			$row=log_split($content);
490
		}
491
		else
492
		{
493
			if (file_exists("../log/log.txt"))
494
			{
495
				$content=PMA_readFile("../log/log.txt","plain");
496
				$row=log_split($content);
497
				$row=array_splice($row,$start,$max_anz);
498
			}
499
			else
500
			{
501
				$row="";
502
			}
503
		}
504
		return $row;
505
	}
506
 
507
	//
508
	// Pagination routine, generates
509
	// page number sequence
510
	// taken from phpBB
511
 
512
	function generate_pagination($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = TRUE)
513
	{
514
		if (!$num_items)
515
		{
516
			return "";
517
		}
518
 
519
		$total_pages = ceil($num_items/$per_page);
520
 
521
		if ( $total_pages == 1 )
522
		{
523
			return '';
524
		}
525
 
526
		$on_page = floor($start_item / $per_page) + 1;
527
 
528
		$page_string = '';
529
		if ( $total_pages > 25 )
530
		{
531
			$init_page_max = ( $total_pages > 3 ) ? 3 : $total_pages;
532
 
533
			for($i = 1; $i < $init_page_max + 1; $i++)
534
			{
535
				$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) . '">' . $i . '</a>';
536
				if ( $i <  $init_page_max )
537
				{
538
					$page_string .= ", ";
539
				}
540
			}
541
 
542
			if ( $total_pages > 3 )
543
			{
544
				if ( $on_page > 1  && $on_page < $total_pages )
545
				{
546
					$page_string .= ( $on_page > 5 ) ? ' ... ' : ', ';
547
 
548
					$init_page_min = ( $on_page > 4 ) ? $on_page : 5;
549
					$init_page_max = ( $on_page < $total_pages - 4 ) ? $on_page : $total_pages - 4;
550
 
551
					for($i = $init_page_min - 1; $i < $init_page_max + 2; $i++)
552
					{
553
						$page_string .= ($i == $on_page) ? '<b>' . $i . '</b>' : '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) . '">' . $i . '</a>';
554
						if ( $i <  $init_page_max + 1 )
555
						{
556
							$page_string .= ', ';
557
						}
558
					}
559
 
560
					$page_string .= ( $on_page < $total_pages - 4 ) ? ' ... ' : ', ';
561
				}
562
				else
563
				{
564
					$page_string .= ' ... ';
565
				}
566
 
567
				for($i = $total_pages - 2; $i < $total_pages + 1; $i++)
568
				{
569
					$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>'  : '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) . '">' . $i . '</a>';
570
					if( $i <  $total_pages )
571
					{
572
						$page_string .= ", ";
573
					}
574
				}
575
			}
576
		}
577
		else
578
		{
579
			for($i = 1; $i < $total_pages + 1; $i++)
580
			{
581
				$page_string .= ( $i == $on_page ) ? '<b>' . $i . '</b>' : '<a href="' . $base_url . "?start=" . ( ( $i - 1 ) * $per_page ) . '">' . $i . '</a>';
582
				if ( $i <  $total_pages )
583
				{
584
					$page_string .= ', ';
585
				}
586
			}
587
		}
588
 
589
		if ( $add_prevnext_text )
590
		{
591
			if ( $on_page > 1 )
592
			{
593
				$page_string = ' <a href="' . $base_url . "?start=" . ( ( $on_page - 2 ) * $per_page ) . '">Zurück</a>&nbsp;&nbsp;' . $page_string;
594
			}
595
			else
596
			{
597
				$page_string = 'Zurück&nbsp;&nbsp;' . $page_string;
598
			}
599
			if ( $on_page < $total_pages )
600
			{
601
				$page_string .= '&nbsp;&nbsp;<a href="' . $base_url . "?start=" . ( $on_page * $per_page ) . '">Weiter</a>';
602
			}
603
			else
604
			{
605
				$page_string .= '&nbsp;&nbsp;Weiter';
606
			}
607
 
608
		}
609
 
610
		$page_string = 'Gehe zu Seite ' . $page_string;
611
 
612
		return $page_string;
613
	}
614
 
615
	function checkDir($dir)
616
	{
617
		if (empty($dir))
618
		{
619
			$dir="upload";
620
		}
621
		if (file_exists("$dir") )
622
		{
623
			$ftype=filetype("$dir");
624
			if ($ftype=="dir" || $ftype=="link")
625
			{
626
				if($ftype=="link")
627
				{
628
				$fname_l=readlink("$dir");
629
				$ftype_l=filetype($fname_l);
630
				if ($ftype_l == "dir")
631
				{
632
					$ret=is_writeable($fname_l);
633
				}
634
				else
635
				{
636
						if(unlink("$dir"))
637
						{
638
							$ret=mkdir("$dir");
639
						}
640
						else
641
						{
642
							$ret=FALSE;
643
						}
644
					}
645
				}
646
				else
647
				{
648
					$ret=TRUE;
649
				}
650
			}
651
			else
652
			{
653
				if(unlink("$dir"))
654
				{
655
					$ret=mkdir("$dir");
656
				}
657
				else
658
				{
659
					$ret=FALSE;
660
				}
661
			}
662
		}
663
		else
664
		{
665
			$ret=mkdir ("$dir");
666
		}
667
		return $ret;
668
	}
669
 
670
	function upload_pic($pic, &$meld, &$dst)
671
	{
672
		$fname="../images/$pic";
673
		$tmp=$_FILES['pic']['tmp_name'];
674
//		echo $_FILES["pic"]["type"];
675
		$img_info=getimagesize($tmp);
676
		$typ=$img_info[2];
677
		switch($typ)
678
		{
679
			case 1:		//GIF
680
			case 2:		//JPEG
681
			case 3:		//PNG
682
				if (checkDir("../images"))
683
				{
684
					if(!move_uploaded_file($tmp,$fname))
685
					{
686
						$meld="Konnte Datei nicht verschieben!";
687
						unlink($tmp);
688
						$ret=false;
689
					}
690
					else
691
					{
692
						if(!checkDir("../images/thumbs"))
693
						{
694
							$meld="Konnte Thumbnail nicht erstellen!";
695
							unlink($fname);
696
							$ret=false;
697
						}
698
						else
699
						{
700
							if (function_exists("gd_info"))
701
							{
702
								//GD Bibliothek steht zur Verfügung
703
								$gd_info=gd_info();
704
								$width=60;
705
								$height=round($img_info[1]/($img_info[0]/$width),0);
706
								$im_d=imagecreate($width, $height);
707
								switch($typ)
708
								{
709
									case 1:
710
										$im_s=imagecreatefromgif($fname);
711
										break;
712
									case 2:
713
										$im_s=imagecreatefromjpeg($fname);
714
										break;
715
									case 3:
716
										$im_s=imagecreatefrompng($fname);
717
										break;
718
								}
719
								imagepalettecopy($im_d,$im_s);
720
								imagecopyresized($im_d,$im_s,0,0,0,0,$width,$height,$img_info[0],$img_info[1]);
721
								$dst=$pic;
722
								if($gd_info["PNG Support"])
723
								{
724
									$dst=substr($dst,0,strlen($dst)-3);
725
									$dst.="png";
726
									if($typ!=3)
727
									{
728
										imagePNG($im_s,"../images/$dst");
729
									}
730
									$ret= imagePNG($im_d,"../images/thumbs/$dst");
731
								}
732
								else
733
								{
734
									if($gd_info("JPEG Support"))
735
									{
736
										$ret= imageJPEG($im_d,"../images/thumbs/$dst");
737
									}
738
									else
739
									{
740
										$ret= false;
741
									}
742
								}
743
								imagedestroy($im_s);
744
								imagedestroy($im_d);
745
								if(!$ret)
746
								{
747
									$meld="Konnte Thumbnail nicht erstellen!";
748
								}
749
							}
750
							else
751
							{
752
								//GD-Bibliothek steht NICHT zur Verfügung!
753
								$ret= copy($fname,$fname2);
754
								$dst=$fname2;
755
								if(!$ret)
756
								{
757
									$meld="Konnte Thumbnail nicht erstellen!";
758
								}
759
							}
760
						}
761
					}
762
				}
763
				else
764
				{
765
					$meld="Konnte Datei nicht verschieben!";
766
					$ret=false;
767
				}
768
				break;
769
			default:
770
				$meld="Das ist kein gültiges Bild!";
771
				$ret=false;
772
				break;
773
		}
774
		return $ret;
775
	}
776
	function generate_pagination2($base_url, $num_items, $per_page, $start_item, $add_prevnext_text = TRUE)
777
	{
62 lars 778
		global $mode, $common;
3 lars 779
		if (!$num_items)
780
		{
781
			return "";
782
		}
783
 
784
		$total_pages = ceil($num_items/$per_page);
785
 
786
		if ( $total_pages == 1 )
787
		{
62 lars 788
			return '<table align="center" class="navig"><tr><th>'.$common["page"]." 1 ".$common["of"].' 1</th></tr></table><br><br>';
3 lars 789
		}
790
 
791
		$on_page = floor($start_item / $per_page) + 1;
792
 
62 lars 793
		$page_string = '<table align="center" class="navig"><tr><th colspan="5">'.$common["page"].' '.$on_page.' '.$common["of"].' '.$total_pages.'</th></tr><tr>';
3 lars 794
 
795
		if ( $add_prevnext_text )
796
		{
797
			if ( $on_page > 1 )
798
			{
74 lars 799
				$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<<\" title=\"${common["first_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
3 lars 800
				$prev_v=($on_page - 2 ) * $per_page;
74 lars 801
				$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<\" title=\"${common["previous_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"$prev_v\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
3 lars 802
			}
803
			else
804
			{
66 lars 805
				$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<<\" disabled class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
806
				$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\"|<\" class=\"liteoption\" disabled><input type=\"hidden\" name=\"start\" value=\"0\"></form></td>";
3 lars 807
			}
808
		}
809
		if($total_pages >1)
810
		{
66 lars 811
			$page_opts="";
3 lars 812
			for ($i=0;$i<$total_pages;$i++)
813
			{
814
				$selected="";
815
				$j=$i+1;
816
				if($j==$on_page)
817
				{
818
					$selected="selected=\"selected\"";
819
				}
820
				$start=($i*$per_page);
821
				$page_opts.="<option value=$start $selected>$j</option>";
822
			}
74 lars 823
			$page_string.="<td width=\"100\"><form name=\"nav\" action=$base_url method=\"post\"><select name=\"start\">$page_opts</select>&nbsp;&nbsp;<input type=\"submit\" value=\"${common["go"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
3 lars 824
		}
825
 
826
		if ( $add_prevnext_text )
827
		{
828
			if ( $on_page < $total_pages )
829
			{
830
				$next_v=($on_page * $per_page);
74 lars 831
				$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">|\" title=\"${common["next_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"$next_v\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
3 lars 832
				$max_v=($total_pages -1)*$per_page;
74 lars 833
				$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">>|\" title=\"${common["last_page"]}\" class=\"liteoption\"><input type=\"hidden\" name=\"start\" value=\"$max_v\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
3 lars 834
			}
835
			else
836
			{
69 lars 837
				$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">|\" class=\"liteoption\" disabled><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
838
				$page_string .= "<td><form name=\"nav\" action=$base_url method=\"post\"><input type=\"submit\" value=\">>|\" disabled class=\"liteoption\" disabled><input type=\"hidden\" name=\"start\" value=\"0\"><input type=\"hidden\" name=\"mode\" value=\"$mode\"></form></td>";
3 lars 839
			}
840
 
841
		}
842
		$page_string.="</tr></table><br><br>";
843
 
844
		return $page_string;
845
	}
846
?>