Subversion-Projekte lars-tiefland.openvz_admin

Revision

Revision 69 | Revision 162 | Zur aktuellen Revision | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

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