PageRenderTime 43ms CodeModel.GetById 15ms RepoModel.GetById 0ms app.codeStats 0ms

/register.php

https://github.com/whale2/users
PHP | 274 lines | 220 code | 42 blank | 12 comment | 20 complexity | 2930b0e76e7ca7284f665adf30a49849 MD5 | raw file
  1. <?php
  2. require_once(dirname(__FILE__).'/config.php');
  3. require_once(dirname(__FILE__).'/User.php');
  4. require_once(dirname(__FILE__).'/Invitation.php');
  5. $errors = array();
  6. $user_exists = false;
  7. if (UserConfig::$enableRegistration && array_key_exists('register', $_POST))
  8. {
  9. $module = AuthenticationModule::get($_GET['module']);
  10. if (is_null($module))
  11. {
  12. throw new Exception('Wrong module specified');
  13. }
  14. $invitation = null;
  15. if (UserConfig::$enableInvitations)
  16. {
  17. if (!array_key_exists('invite', $_GET))
  18. {
  19. throw new Exception('Invitation code is not submitted');
  20. }
  21. $invitation = Invitation::getByCode($_GET['invite']);
  22. if (is_null($invitation) || $invitation->getStatus())
  23. {
  24. throw new Exception('Invitation code is invalid');
  25. }
  26. }
  27. try
  28. {
  29. $remember = false;
  30. $user = $module->processRegistration($_POST, $remember);
  31. if (is_null($user))
  32. {
  33. header('Location: '.UserConfig::$USERSROOTURL.'/register.php?module='.$_GET['module'].'&error=failed');
  34. exit;
  35. }
  36. if (!is_null($invitation))
  37. {
  38. $invitation->setUser($user);
  39. $invitation->save();
  40. }
  41. $user->setSession($remember);
  42. $return = User::getReturn();
  43. User::clearReturn();
  44. if (!is_null($return))
  45. {
  46. header('Location: '.$return);
  47. }
  48. else
  49. {
  50. header('Location: '.UserConfig::$DEFAULTREGISTERRETURN);
  51. }
  52. exit;
  53. }
  54. catch(InputValidationException $ex)
  55. {
  56. $errors[$module->getID()] = $ex->getErrors();
  57. }
  58. catch(ExistingUserException $ex)
  59. {
  60. $user_exists = true;
  61. $errors[$module->getID()] = $ex->getErrors();
  62. }
  63. }
  64. require_once(UserConfig::$header);
  65. ?>
  66. <style>
  67. .userbase-errorbox {
  68. background: #f7dfb9;
  69. font: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
  70. padding: 0.4em 1em;
  71. margin: 1em 0;
  72. width: 465px;
  73. border: 4px solid #f77;
  74. border-radius: 7px;
  75. -moz-border-radius: 7px;
  76. -webkit-border-radius: 7px;
  77. font-size: 1.2em;
  78. color: #500;
  79. font-weight: bold;
  80. }
  81. .userbase-errorbox ul {
  82. margin: 0;
  83. padding-left: 1em;
  84. }
  85. #userbase-authlist {
  86. font: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
  87. background: white;
  88. padding: 0 1em;
  89. margin: 0 auto;
  90. width: 480px;
  91. }
  92. #userbase-authlist h2 {
  93. font-weight: bold;
  94. font-size: 2.5em;
  95. }
  96. #userbase-authlist h3 {
  97. font-weight: bold;
  98. font-size: 1.5em;
  99. }
  100. </style>
  101. <div id="userbase-authlist">
  102. <h2>Sign up</h2>
  103. <?php
  104. if (UserConfig::$enableRegistration)
  105. {
  106. $show_registration_form = true;
  107. $invitation_used = null;
  108. if (UserConfig::$enableInvitations)
  109. {
  110. $message = UserConfig::$invitationRequiredMessage;
  111. $show_registration_form = false;
  112. if (array_key_exists('invite', $_GET))
  113. {
  114. $invitation = Invitation::getByCode($_GET['invite']);
  115. if (is_null($invitation) || $invitation->getStatus())
  116. {
  117. $message = 'Invitation code you entered is not valid';
  118. }
  119. else
  120. {
  121. $invitation_used = $invitation;
  122. $show_registration_form = true;
  123. }
  124. }
  125. if (!$show_registration_form) {
  126. ?>
  127. <style>
  128. #userbase-invitation-form {
  129. font: "Lucida Sans Unicode", "Lucida Grande", sans-serif;
  130. padding: 0.4em 1em;
  131. margin: 0;
  132. width: 382px;
  133. border: 4px solid #ccc;
  134. border-radius: 7px;
  135. -moz-border-radius: 7px;
  136. -webkit-border-radius: 7px;
  137. }
  138. #userbase-invitation-form p {
  139. font-size: 1.2em;
  140. line-height: 1.5;
  141. clear: both;
  142. margin: 0 0 .75em;
  143. padding: 0;
  144. }
  145. #userbase-invitation-form fieldset {
  146. border: 0;
  147. padding: 0;
  148. margin: 0;
  149. }
  150. #userbase-invitation-form legend {
  151. border: 0;
  152. padding: 0;
  153. margin: 0;
  154. font-size: 1.8em;
  155. line-height: 1.8;
  156. padding-bottom: .6em;
  157. }
  158. #userbase-invitation-button {
  159. padding: 0.3em 25px;
  160. cursor: pointer;
  161. }
  162. #userbase-invitation-form input {
  163. background: #f6f6f6;
  164. border: 2px solid #888;
  165. border-radius: 2px;
  166. -moz-border-radius: 2px;
  167. -webkit-border-radius: 2px;
  168. padding: 4px;
  169. }
  170. #userbase-invitation-form input:focus {
  171. background: #fff;
  172. }
  173. #userbase-invitation-form abbr {
  174. cursor: help;
  175. font-style: normal;
  176. border: 0;
  177. color: red;
  178. font-size: 1.2em;
  179. font-weight: bold;
  180. }
  181. #userbase-invite-code {
  182. width: 290px;
  183. }
  184. </style>
  185. <form id="userbase-invitation-form" action="" method="GET">
  186. <fieldset>
  187. <legend><?php echo $message?></legend>
  188. <p>
  189. <input id="userbase-invite-code" name="invite" size="30" value="<?php echo UserTools::escape(array_key_exists('invite', $_GET) ? $_GET['invite'] : '')?>"/>
  190. <button id="userbase-invitation-button" type="submit">&gt;&gt;</button>
  191. </p>
  192. </fieldset>
  193. </form>
  194. <?php
  195. }
  196. }
  197. if ($show_registration_form)
  198. {
  199. foreach (UserConfig::$authentication_modules as $module)
  200. {
  201. $id = $module->getID();
  202. ?>
  203. <div style="margin-bottom: 2em">
  204. <h3 name="<?php echo $id?>"><?php echo $module->getTitle()?></h3>
  205. <?php
  206. if (array_key_exists($id, $errors) && is_array($errors[$id]) && count($errors[$id]) > 0)
  207. {
  208. ?><div class="userbase-errorbox"><ul><?php
  209. foreach ($errors[$id] as $field => $errorset)
  210. {
  211. foreach ($errorset as $error)
  212. {
  213. ?><li><?php echo $error?></li><?php
  214. }
  215. }
  216. ?></ul></div><?php
  217. }
  218. $module->renderRegistrationForm(true, "?module=$id&invite=".(is_null($invitation_used) ? '' : $invitation_used->getCode()), array_key_exists($id, $errors) ? $errors[$id] : array(), $_POST);
  219. ?></div>
  220. <?php
  221. }
  222. }
  223. }
  224. else
  225. {
  226. ?>
  227. <p><?php echo UserConfig::$registrationDisabledMessage?></p>
  228. <p>If you already have an account, you can <a href="<?php echo UserConfig::$USERSROOTURL?>/login.php">log in here</a>.</p>
  229. <?php
  230. }
  231. ?></div><?php
  232. require_once(UserConfig::$footer);