about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--central/trunk/activate.php81
-rw-r--r--central/trunk/index.php24
-rw-r--r--central/trunk/template.php160
-rw-r--r--central/trunk/theme/activate.tpl62
-rw-r--r--central/trunk/theme/activated.tpl14
-rw-r--r--central/trunk/theme/index.tpl19
6 files changed, 288 insertions, 72 deletions
diff --git a/central/trunk/activate.php b/central/trunk/activate.php index c8d4aa0..7b319b5 100644 --- a/central/trunk/activate.php +++ b/central/trunk/activate.php
@@ -3,6 +3,7 @@
3/* InstaDisc Server - A Four Island Project */ 3/* InstaDisc Server - A Four Island Project */
4 4
5include('instadisc.php'); 5include('instadisc.php');
6include('template.php');
6 7
7if (!isset($_GET['submit'])) 8if (!isset($_GET['submit']))
8{ 9{
@@ -27,21 +28,9 @@ if (!isset($_GET['submit']))
27 { 28 {
28 if (instaDisc_activateAccount($_POST['username'], $_POST['code'])) 29 if (instaDisc_activateAccount($_POST['username'], $_POST['code']))
29 { 30 {
30?> 31 $template = new FITemplate('activated');
31<HTML> 32 $template->add('SITENAME', instaDisc_getConfig('siteName'));
32 <HEAD> 33 $template->display();
33 <TITLE><?php echo(instaDisc_getConfig('siteName')); ?> InstaDisc Central Server</TITLE>
34 </HEAD>
35 <BODY>
36 <CENTER>
37 <H1>InstaDisc Activation</H1>
38
39 <P>Thank you for activating! You've now been signed up for the InstaDisc service.
40 You will recieve an email with the information to input into your InstaDisc client.
41 </CENTER>
42 </BODY>
43</HTML>
44<?php
45 } else { 34 } else {
46 addError($numOfErrors, $errors, '', 'The email could not be sent'); 35 addError($numOfErrors, $errors, '', 'The email could not be sent');
47 showForm($_POST['username'], $_POST['code'], $errors); 36 showForm($_POST['username'], $_POST['code'], $errors);
@@ -54,46 +43,30 @@ if (!isset($_GET['submit']))
54 43
55function showForm($username, $code, $errors) 44function showForm($username, $code, $errors)
56{ 45{
57?> 46 $template = new FITemplate('activate');
58<HTML> 47 $template->add('SITENAME', instaDisc_getConfig('siteName'));
59 <HEAD> 48
60 <TITLE><?php echo(instaDisc_getConfig('siteName')); ?> InstaDisc Central Server</TITLE>
61 <LINK REL="stylesheet" TYPE="text/css" HREF="uniform.css">
62 </HEAD>
63 <BODY>
64 <CENTER>
65 <H1>InstaDisc Activation</H1>
66
67 <P>If you've already registered and an activation email has been sent to your address, please fill in the form below.
68 </CENTER>
69
70 <FORM CLASS="uniform" ACTION="./activate.php?submit=" METHOD="POST">
71<?php
72 if (isset($errors[1])) 49 if (isset($errors[1]))
73 { 50 {
74?><DIV ID="errorMsg">Uh oh! Validation errors!<P> 51 $template->adds('ERROR', array('ex'=>'1'));
75<OL><?php 52
76 foreach ($errors as $name => $value) 53 foreach ($errors as $name => $value)
77 { 54 {
78?><LI><A HREF="#error<?php echo($name); ?>"><?php echo($value['msg']); ?></A></LI><?php 55 $template->adds('ERRORS', array( 'NAME' => $name,
56 'MSG' => $value['msg']));
79 } 57 }
80?></OL></DIV><?php
81 } 58 }
82?> 59
83<FIELDSET CLASS="inlineLabels"><LEGEND>User Details</LEGEND> 60 $template->add('USERNAME_ERR', ifErrors($errors, 'username'));
84<DIV CLASS="ctrlHolder<?php ifErrors($errors, 'username'); ?>"> 61 $template->add('CODE_ERR', ifErrors($errors, 'code'));
85<?php doErrors($errors, 'username'); ?> <LABEL FOR="username"><EM>*</EM> Username: </LABEL> 62
86 <INPUT TYPE="text" ID="username" NAME="username" CLASS="textInput" VALUE="<?php echo($username); ?>"> 63 doErrors($template, $errors, 'username');
87</DIV> 64 doErrors($template, $errors, 'code');
88<DIV CLASS="ctrlHolder<?php ifErrors($errors, 'code'); ?>"> 65
89<?php doErrors($errors, 'code'); ?> <LABEL FOR="code"><EM>*</EM> Activation Code: </LABEL> 66 $template->add('USERNAME', $username);
90 <INPUT TYPE="text" ID="code" NAME="code" CLASS="textInput" VALUE="<?php echo($code); ?>"> 67 $template->add('CODE', $code);
91</DIV> 68
92</FIELDSET> 69 $template->display();
93<DIV CLASS="buttonHolder">
94 <INPUT TYPE="submit" NAME="submit" VALUE="Verify">
95 <INPUT TYPE="submit" NAME="submit" VALUE="Delete">
96</DIV></FORM><?php
97} 70}
98 71
99function ifErrors($errors, $id) 72function ifErrors($errors, $id)
@@ -102,19 +75,21 @@ function ifErrors($errors, $id)
102 { 75 {
103 if ($value['field'] == $id) 76 if ($value['field'] == $id)
104 { 77 {
105 echo(' error'); 78 return ' error';
106 return;
107 } 79 }
108 } 80 }
81
82 return '';
109} 83}
110 84
111function doErrors($errors, $id) 85function doErrors($template, $errors, $id)
112{ 86{
113 foreach ($errors as $name => $value) 87 foreach ($errors as $name => $value)
114 { 88 {
115 if ($value['field'] == $id) 89 if ($value['field'] == $id)
116 { 90 {
117?> <P ID="error<?php echo($name); ?>" CLASS="errorField"><EM>*</EM> <?php echo($value['msg']); ?></P><?php echo("\n"); 91 $template->adds(strtoupper($id) . '_ERRS', array( 'NAME' => $name,
92 'VALUE' => $value['msg']));
118 } 93 }
119 } 94 }
120} 95}
diff --git a/central/trunk/index.php b/central/trunk/index.php index ce71def..1ef9c9d 100644 --- a/central/trunk/index.php +++ b/central/trunk/index.php
@@ -3,24 +3,10 @@
3/* InstaDisc Server - A Four Island Project */ 3/* InstaDisc Server - A Four Island Project */
4 4
5include('instadisc.php'); 5include('instadisc.php');
6include('template.php');
6 7
7?> 8$template = new FITemplate('index');
8<HTML> 9$template->add('SITENAME', instaDisc_getConfig('siteName'));
9 <HEAD> 10$template->display();
10 <TITLE>Four Island InstaDisc Central Server</TITLE>
11 </HEAD>
12 <BODY>
13 <CENTER>
14 <H1><?php echo(instaDisc_getConfig('siteName')); ?> InstaDisc</H1>
15 11
16 <P>Welcome to <?php instaDisc_getConfig('siteName')); ?>'s InstaDisc Central Server! 12?>
17 <P>InstaDisc is a wonderful productivity-increasing notification program. For more information about the project itself, see
18 <A HREF="http://fourisland.com/projects/instadisc/">its project site</A>.<P>An InstaDisc "Central Server" is where you can
19 register for the InstaDisc service. There are many Central Servers around the world, you generally pick the one that is
20 closest to you. If you would like to choose <?php echo(instaDisc_getConfig('siteName')); ?>'s, why not register now?
21 <P><A HREF="register.php">Register</A>
22 <BR><A HREF="login.php">Login</A>
23 <BR><A HREF="activate.php">Activation page</A>
24 </CENTER>
25 </BODY>
26</HTML>
diff --git a/central/trunk/template.php b/central/trunk/template.php new file mode 100644 index 0000000..b4ec16b --- /dev/null +++ b/central/trunk/template.php
@@ -0,0 +1,160 @@
1<?php
2/*
3 444444444
4 4::::::::4
5 4:::::::::4
6 4::::44::::4
7 4::::4 4::::4 Four Island
8 4::::4 4::::4
9 4::::4 4::::4 Written and maintained by Starla Insigna
104::::444444::::444
114::::::::::::::::4 includes/template.php
124444444444:::::444
13 4::::4 Please do not use, reproduce or steal the
14 4::::4 contents of this file without explicit
15 4::::4 permission from Hatkirby.
16 44::::::44
17 4::::::::4
18 4444444444
19*/
20
21class FITemplate
22{
23
24 var $file;
25 var $tags;
26 var $blocks;
27 var $refs;
28
29 function FITemplate($filename)
30 {
31 $tfn = 'theme/' . $filename . '.tpl';
32 if (file_exists($tfn))
33 {
34 $this->file = $tfn;
35 } else {
36 throw new Exception($tfn . ' does not exist');
37 }
38 }
39
40 function add($name, $value)
41 {
42 $this->tags[$name] = $value;
43 }
44
45 function adds($tagarr)
46 {
47 foreach ($tagarr as $name => $value)
48 {
49 $this->add($name,$value);
50 }
51 }
52
53 function adds_block($block, $tagarr)
54 {
55 if (!isset($this->blocks[$block]))
56 {
57 $this->blocks[$block] = array('count' => 1);
58 }
59 foreach ($tagarr as $name => $value)
60 {
61 $this->blocks[$block][$this->blocks[$block]['count']][$name] = $value;
62 }
63 $this->blocks[$block]['count']++;
64 }
65
66 function add_ref($id, $block, $tagarr)
67 {
68 $this->adds_block($block,$tagarr);
69 $this->refs[$id] = &$this->blocks[$block][$this->blocks[$block]['count']-1];//'$this->blocks[\'' . $block . '\'][' . ($this->blocks[$block]['count']-1) . ']';
70 }
71
72 function adds_ref($id, $tagarr)
73 {
74 foreach ($tagarr as $name => $value)
75 {
76 $this->refs[$id][$name] = $value;
77 }
78 }
79
80 function adds_ref_sub($id, $block, $tagarr)
81 {
82 if (!isset($this->refs[$id][$block]))
83 {
84 $this->refs[$id][$block] = array('count' => 1);
85 }
86 foreach ($tagarr as $name => $value)
87 {
88 $this->refs[$id][$block][$this->refs[$id][$block]['count']][$name] = $value;
89 }
90 $this->refs[$id][$block]['count']++;
91 }
92
93 function display()
94 {
95 $template = file_get_contents($this->file);
96 while (preg_match('/<!--INCLUDE ([^>]*)-->/',$template) == 1)
97 {
98 preg_match('/<!--INCLUDE ([^>]*)-->/',$template,$mat);
99 $fname = $mat[1];
100 $itmp = new FITemplate($fname);
101 $template = str_replace('<!--INCLUDE ' . $fname . '-->',file_get_contents($itmp->file),$template);
102 }
103 if (isset($this->tags))
104 {
105 foreach ($this->tags as $name => $value)
106 {
107 $template = str_replace('<!--' . $name . '-->',$value,$template);
108 }
109 }
110 if (isset($this->blocks))
111 {
112 foreach ($this->blocks as $bname => $block)
113 {
114 $this->parseBlock($template, $bname, $block);
115 }
116 }
117 while (preg_match('/<!--BEGIN ([^>]*)-->/',$template) == 1)
118 {
119 preg_match('/<!--BEGIN ([^>]*)-->/',$template,$mat);
120 $bname = $mat[1];
121 $start = strpos($template,'<!--BEGIN ' . $bname . '-->');
122 $end = strpos($template,'<!--END ' . $bname . '-->');
123 $template = str_replace(substr($template,$start,$end-$start+strlen($bname)+11),'',$template);
124 }
125 $template = preg_replace('/<!--([^>]*)-->/','',$template);
126 echo($template);
127 }
128
129 function parseBlock(&$template, $bname, $block)
130 {
131 while (strpos($template,'<!--BEGIN ' . $bname . '-->') !== FALSE)
132 {
133 $start = strpos($template,'<!--BEGIN ' . $bname . '-->');
134 $end = strpos($template,'<!--END ' . $bname . '-->');
135 $gencont = substr($template,$start+strlen($bname)+13,$end-$start-strlen($bname)-13);
136 $blockcont = '';
137 foreach ($block as $lname => $blocktags)
138 {
139 if ($lname != 'count')
140 {
141 $scrcont = $gencont;
142 foreach ($blocktags as $name => $value)
143 {
144 if (!is_array($value))
145 {
146 $scrcont = str_replace('<!--' . $bname . '.' . $name . '-->',$value,$scrcont);
147 } else {
148 $this->parseBlock($scrcont, $bname . '.' . $name, $value);
149 }
150 }
151 $blockcont .= $scrcont;
152 }
153 }
154 $template = str_replace(substr($template,$start,$end-$start+strlen($bname)+11),$blockcont,$template);
155 }
156 }
157
158}
159
160?>
diff --git a/central/trunk/theme/activate.tpl b/central/trunk/theme/activate.tpl new file mode 100644 index 0000000..caf8da6 --- /dev/null +++ b/central/trunk/theme/activate.tpl
@@ -0,0 +1,62 @@
1<HTML>
2 <HEAD>
3 <TITLE><!--SITENAME--> InstaDisc Central Server</TITLE>
4 <LINK REL="stylesheet" TYPE="text/css" HREF="uniform.css">
5 </HEAD>
6
7 <BODY>
8 <CENTER>
9 <H1>InstaDisc Activation</H1>
10
11 <P>If you've already registered and an activation email has been sent to your address, please fill in the form below.
12 </CENTER>
13
14 <FORM CLASS="uniform" ACTION="./activate.php?submit=" METHOD="POST">
15
16 <!--BEGIN ERROR-->
17 <DIV ID="errorMsg">Uh oh! Validation errors!<P>
18 <OL>
19 <!--END ERROR-->
20
21 <!--BEGIN ERRORS-->
22 <LI><A HREF="#error<!--ERRORS.NAME-->"><!--ERRORS.MSG--></A></LI>
23 <!--END ERRORS-->
24
25 <!--BEGIN ERROR-->
26 </OL>
27 </DIV>
28 <!--END ERROR-->
29
30 <FIELDSET CLASS="inlineLabels">
31 <LEGEND>User Details</LEGEND>
32
33 <DIV CLASS="ctrlHolder<!--USERNAME_ERR-->">
34 <!--BEGIN USERNAME_ERRS-->
35 <P ID="error<!--USERNAME_ERRS.NAME-->" CLASS="errorField"><EM>*</EM>
36 <!--USERNAME_ERRS.MSG-->
37 </P>
38 <!--END USERNAME_ERRS-->
39
40 <LABEL FOR="username"><EM>*</EM> Username: </LABEL>
41 <INPUT TYPE="text" ID="username" NAME="username" CLASS="textInput" VALUE="<!--USERNAME-->">
42 </DIV>
43
44 <DIV CLASS="ctrlHolder<!--CODE_ERR-->">
45 <!--BEGIN CODE_ERRS-->
46 <P ID="error<!--CODE_ERRS.NAME-->" CLASS="errorField"><EM>*</EM>
47 <!--CODE_ERRS.MSG-->
48 </P>
49 <!--END CODE_ERRS-->
50
51 <LABEL FOR="code"><EM>*</EM> Activation Code: </LABEL>
52 <INPUT TYPE="text" ID="code" NAME="code" CLASS="textInput" VALUE="<!--CODE-->">
53 </DIV>
54 </FIELDSET>
55
56 <DIV CLASS="buttonHolder">
57 <INPUT TYPE="submit" NAME="submit" VALUE="Verify">
58 <INPUT TYPE="submit" NAME="submit" VALUE="Delete">
59 </DIV>
60 </FORM>
61 </BODY>
62</HTML>
diff --git a/central/trunk/theme/activated.tpl b/central/trunk/theme/activated.tpl new file mode 100644 index 0000000..43c716f --- /dev/null +++ b/central/trunk/theme/activated.tpl
@@ -0,0 +1,14 @@
1<HTML>
2 <HEAD>
3 <TITLE><!--SITENAME--> InstaDisc Central Server</TITLE>
4 </HEAD>
5 <BODY>
6 <CENTER>
7 <H1>InstaDisc Activation</H1>
8
9 <P>Thank you for activating! You've now been signed up for the InstaDisc service.
10 You will recieve an email with the information to input into your InstaDisc client.
11 </CENTER>
12 </BODY>
13</HTML>
14
diff --git a/central/trunk/theme/index.tpl b/central/trunk/theme/index.tpl new file mode 100644 index 0000000..789928b --- /dev/null +++ b/central/trunk/theme/index.tpl
@@ -0,0 +1,19 @@
1<HTML>
2 <HEAD>
3 <TITLE><!--SITENAME--> InstaDisc Central Server</TITLE>
4 </HEAD>
5 <BODY>
6 <CENTER>
7 <H1><!--SITENAME--> InstaDisc</H1>
8
9 <P>Welcome to <!--SITENAME-->'s InstaDisc Central Server!
10 <P>InstaDisc is a wonderful productivity-increasing notification program. For more information about the project itself, see
11 <A HREF="http://fourisland.com/projects/instadisc/">its project site</A>.<P>An InstaDisc "Central Server" is where you can
12 register for the InstaDisc service. There are many Central Servers around the world, you generally pick the one that is
13 closest to you. If you would like to choose <!--SITENAME-->'s, why not register now?
14 <P><A HREF="register.php">Register</A>
15 <BR><A HREF="login.php">Login</A>
16 <BR><A HREF="activate.php">Activation page</A>
17 </CENTER>
18 </BODY>
19</HTML>