summaryrefslogtreecommitdiff
path: root/apps/um/plugins
diff options
context:
space:
mode:
authorLuke Shumaker <LukeShu@sbcglobal.net>2012-01-07 08:21:00 -0800
committerLuke Shumaker <LukeShu@sbcglobal.net>2012-01-07 10:22:21 -0800
commit83e460cdc3fc09867a3adb48c3d0894579dd3050 (patch)
tree0771bd935b30971bf2c244b6f158ed7496b644e5 /apps/um/plugins
parent3d64793a1ee45857856be1cd71c3a0a040a3e869 (diff)
Refactor to separate the framework from the app; drop message stuff, this app is just user management. Add a json view for individual users
Diffstat (limited to 'apps/um/plugins')
-rw-r--r--apps/um/plugins/InformationPlugin.class.php62
-rw-r--r--apps/um/plugins/ReCaptcha.class.php47
2 files changed, 109 insertions, 0 deletions
diff --git a/apps/um/plugins/InformationPlugin.class.php b/apps/um/plugins/InformationPlugin.class.php
new file mode 100644
index 0000000..70ec8ac
--- /dev/null
+++ b/apps/um/plugins/InformationPlugin.class.php
@@ -0,0 +1,62 @@
+<?php
+
+require_once('Plugin.class.php');
+
+class InformationPlugin extends Plugin {
+ public static function configList() { return array(); }
+ public function init() {}
+ public static function description() {
+ return "Get information about the user.";
+ }
+ public function userConfig(&$arr) {
+ $group = 'Information';
+ $this->addConfigGroup($arr, $group);
+ $arr[$group][] = array('firstname','First Name','text');
+ $arr[$group][] = array('lastname','Last Name','text');
+ $arr[$group][] = array('school','Home School','text');
+ $arr[$group][] = array('hsclass','Highschool Class of','text');
+
+ $group = 'New Member Questions';
+ $this->addConfigGroup($arr, $group);
+ $arr[$group][] = array('q_why_team',
+ 'Why do you want to be a part of the robotics team?',
+ 'textarea');
+ $arr[$group][] = array('q_strengths',
+ 'What strengths do you have that can contribute to the robotics team?',
+ 'textarea');
+ $arr[$group][] = array('q_other_activities',
+ 'Other after school activities--sports, performing arts, extracurricular activities. (January through March)',
+ 'textarea');
+ $arr[$group][] = array('q_other_commitments',
+ 'After school/weekend work commitments. (January through March)',
+ 'textarea');
+ // TODO: Top 3 subteams
+ $arr[$group][] = array('q_who_you_know',
+ 'Who do you know that could possibly help our team this year? '.
+ 'This includes material resources, supplying or preparing food '.
+ 'for work nights/competitions, corporate sponsorship, travel, '.
+ 'engineers, computer programmers, web developers, and fundraisers.',
+ 'textarea');
+ $arr[$group][] = array('x_bogus_recommend',
+ "List two teachers who we could contact for your recommendation to be a member of this year's team.",
+ 'paragraph');
+ $arr[$group][] = array('q_teacher_recommend1', 'Teacher 1', 'text');
+ $arr[$group][] = array('q_teacher_recommend2', 'Teacher 2', 'text');
+ $arr[$group][] = array('x_bogus_agreement',
+ "I understand that if I am chosen to participate ".
+ "in the robotics project, I will represent my ".
+ "school in a positive manner. If I fail to do so, ".
+ "I may be removed from the team at any time. In ".
+ "addition, if I do not have good attendance ".
+ "during this project, I will not be allowed to ".
+ "travel with the team to the competitions. I also ".
+ "understand that all of the school rules will be ".
+ "in effect at all times.",
+ 'paragraph');
+ $arr[$group][] = array('q_i_agree',
+ "I agree",
+ 'checkbox');
+ }
+ public function sendPrivate($to, $id, $subject, $body) {}
+ public function sendBroadcast($id, $subject, $body) {}
+}
diff --git a/apps/um/plugins/ReCaptcha.class.php b/apps/um/plugins/ReCaptcha.class.php
new file mode 100644
index 0000000..165493b
--- /dev/null
+++ b/apps/um/plugins/ReCaptcha.class.php
@@ -0,0 +1,47 @@
+<?php
+// We only include the recaptchalib.php file when we use it because we don't
+// want it polluting the global namespace thing.
+
+class ReCaptcha extends Plugin {
+ protected $config = array('public_key'=>'',
+ 'private_key'=>'');
+ public static function description() {
+ return 'Add a reCaptcha to keep out spam users.';
+ }
+ public static function configList() {
+ return array('public_key'=>'text',
+ 'private_key'=>'text');
+ }
+ public function init() {}
+
+ private $resp = null;
+ private function getResp() {
+ if ($this->resp===null) {
+ require_once('recaptchalib.php');
+ @$response = $_POST['recaptcha_response_field'];
+ @$challenge = $_POST['recaptcha_challenge_field'];
+ $this->resp = recaptcha_check_answer($this->config['private_key'],
+ $_SERVER['REMOTE_ADDR'],
+ $challenge,
+ $response);
+ }
+ return $this->resp;
+ }
+
+ private function getError() {
+ if ($_POST["recaptcha_response_field"] && !$this->antispam_verify()) {
+ return $this->getResp()->error;
+ } else {
+ return false;
+ }
+ }
+
+ public function antispam_verify() {
+ return $this->getResp()->is_valid;
+ }
+
+ public function antispam_html() {
+ require_once('recaptchalib.php');
+ return recaptcha_get_html($this->config['public_key'], $this->getError());
+ }
+}