Exemplo n.º 1
0
 public function Send()
 {
     $o_purifier = new HTMLPurifier();
     # --- check for errors
     $va_errors = array();
     if ($this->config->get("check_security")) {
         $ps_security = $this->request->getParameter("security", pString);
         if (!$ps_security) {
             $va_errors["security"] = true;
         } else {
             if ($ps_security != $_REQUEST["sum"]) {
                 $va_errors["security"] = true;
             }
         }
         if ($va_errors["security"]) {
             $va_errors["display_errors"]["security_error"] = _t("Please answer the security question");
         }
     }
     $va_fields = $this->config->get("contact_form_elements");
     $this->view->setVar("contact_form_elements", $va_fields);
     if (is_array($va_fields) && sizeof($va_fields)) {
         foreach ($va_fields as $vs_element_name => $va_options) {
             $vs_element_value = $o_purifier->purify($this->request->getParameter($vs_element_name, pString));
             if ($va_options["required"] && !$vs_element_value) {
                 $va_errors[$vs_element_name] = true;
                 $va_errors["display_errors"]["required_error"] = _t("Please enter the required information in the highlighted fields");
             }
             if ($va_options["email_address"]) {
                 # --- check if entered value is valid email address
                 if (!caCheckEmailAddress($vs_element_value)) {
                     $va_errors["display_errors"]["email_address_error"] = _t("Please enter a valid e-mail address");
                     $va_errors[$vs_element_name] = true;
                 }
             }
             $this->view->setVar($vs_element_name, $vs_element_value);
         }
     }
     if (sizeof($va_errors) == 0) {
         # --- send email
         $o_view = new View($this->request, array($this->request->getViewsDirectoryPath()));
         $o_view->setVar("contact_form_elements", $va_fields);
         # -- generate email subject line from template
         $vs_subject_line = $o_view->render("mailTemplates/contact_subject.tpl");
         # -- generate mail text from template - get both the text and the html versions
         $vs_mail_message_text = $o_view->render("mailTemplates/contact.tpl");
         $vs_mail_message_html = $o_view->render("mailTemplates/contact_html.tpl");
         if (caSendmail($this->config->get("contact_email"), $this->request->config->get("ca_admin_email"), $vs_subject_line, $vs_mail_message_text, $vs_mail_message_html)) {
             $this->render("Contact/success_html.php");
         } else {
             $va_errors["display_errors"]["send_error"] = _t("Your email could not be sent");
             $this->view->setVar("errors", $va_errors);
             $this->form();
         }
     } else {
         $this->view->setVar("errors", $va_errors);
         $this->form();
     }
 }
Exemplo n.º 2
0
 /**
  * Saves changes to user record. You must make sure all required user fields are set before calling this method. If errors occur you can use the standard Table class error handling methods to figure out what went wrong.
  *
  * Required fields are user_name, password, fname and lname.
  *
  * If you do not call this method at the end of your request changed user vars will not be saved! If you are also using the Auth class, the Auth->close() method will call this for you.
  *
  * @access public
  * @return bool Returns true if no error, false if error occurred
  */
 public function update($pa_options = null)
 {
     $this->clearErrors();
     if ($this->changed('email')) {
         if (!caCheckEmailAddress($this->get('email'))) {
             $this->postError(922, _t("Invalid email address"), 'ca_users->update()');
             return false;
         }
     }
     if ($this->changed('password')) {
         try {
             $vs_backend_password = AuthenticationManager::updatePassword($this->get('user_name'), $this->get('password'));
             $this->set('password', $vs_backend_password);
             $this->removePendingPasswordReset(true);
         } catch (AuthClassFeatureException $e) {
             $this->postError(922, $e->getMessage(), 'ca_users->update()');
             return false;
             // maybe don't barf here?
         }
     }
     # set user vars (the set() method automatically serializes the vars array)
     if ($this->opa_user_vars_have_changed) {
         $this->set("vars", $this->opa_user_vars);
     }
     if ($this->opa_volatile_user_vars_have_changed) {
         $this->set("volatile_vars", $this->opa_volatile_user_vars);
     }
     unset(ca_users::$s_user_role_cache[$this->getPrimaryKey()]);
     unset(ca_users::$s_group_role_cache[$this->getPrimaryKey()]);
     return parent::update();
 }
Exemplo n.º 3
0
 function Save()
 {
     $t_user = $this->request->user;
     # --- process incoming registration attempt
     $ps_email = strip_tags($this->request->getParameter("email", pString));
     $ps_fname = strip_tags($this->request->getParameter("fname", pString));
     $ps_lname = strip_tags($this->request->getParameter("lname", pString));
     $ps_password = strip_tags($this->request->getParameter("password", pString));
     $ps_password_confirm = strip_tags($this->request->getParameter("password_confirm", pString));
     if (!caCheckEmailAddress($ps_email)) {
         $va_errors["email"] = _t("E-mail address is not valid.");
     } else {
         $t_user->set("email", $ps_email);
     }
     if (!$ps_fname) {
         $va_errors["fname"] = _t("Please enter your first name");
     } else {
         $t_user->set("fname", $ps_fname);
     }
     if (!$ps_lname) {
         $va_errors["lname"] = _t("Please enter your last name");
     } else {
         $t_user->set("lname", $ps_lname);
     }
     if ($ps_password && $ps_password != $ps_password_confirm) {
         $va_errors["password_confirm"] = _t("Please confirm your password");
         $va_errors["password"] = _t("Please re-enter your password");
     }
     // Check user profile responses
     $va_profile_prefs = $t_user->getValidPreferences('profile');
     if (is_array($va_profile_prefs) && sizeof($va_profile_prefs)) {
         foreach ($va_profile_prefs as $vs_pref) {
             $vs_pref_value = $this->request->getParameter('pref_' . $vs_pref, pString);
             if (!$t_user->isValidPreferenceValue($vs_pref, $vs_pref_value, true)) {
                 $va_errors[$vs_pref] = join("; ", $t_user->getErrors());
                 $t_user->clearErrors();
             }
         }
     }
     # get names of form fields
     $va_fields = $t_user->getFormFields();
     # loop through fields
     foreach ($va_fields as $vs_f => $va_attr) {
         switch ($vs_f) {
             case "user_name":
             case "active":
             case "userclass":
                 # noop
                 break;
                 # -------------
             # -------------
             case "password":
                 if (!$va_errors[$vs_f] && $_REQUEST[$vs_f]) {
                     $t_user->set($vs_f, $_REQUEST[$vs_f]);
                     # set field values
                     if ($t_user->numErrors() > 0) {
                         $va_errors[$vs_f] = join("; ", $t_user->getErrors());
                     }
                 }
                 break;
                 # -------------
             # -------------
             default:
                 if (!$va_errors[$vs_f]) {
                     $t_user->set($vs_f, $_REQUEST[$vs_f]);
                     # set field values
                     if ($t_user->numErrors() > 0) {
                         $va_errors[$vs_f] = join("; ", $t_user->getErrors());
                     }
                 }
                 break;
                 # -------------
         }
     }
     // Save user profile responses
     if (is_array($va_profile_prefs) && sizeof($va_profile_prefs)) {
         foreach ($va_profile_prefs as $vs_pref) {
             $t_user->setPreference($vs_pref, $this->request->getParameter('pref_' . $vs_pref, pString));
         }
     }
     if (sizeof($va_errors) == 0) {
         $t_user->setMode(ACCESS_WRITE);
         $t_user->update();
         if ($t_user->numErrors()) {
             $va_errors["register"] = join("; ", $t_user->getErrors());
             print $va_errors["register"];
         } else {
             $this->notification->addNotification(_t('Your profile has been updated.'), __NOTIFICATION_TYPE_INFO__);
         }
     }
     $this->view->setVar('errors', $va_errors);
     $this->Edit();
 }
Exemplo n.º 4
0
 /**
  *
  */
 public function SendShare()
 {
     $va_errors = array();
     $ps_tablename = $this->request->getParameter('tablename', pString);
     $pn_item_id = $this->request->getParameter('item_id', pInteger);
     if (!($t_item = $this->opo_datamodel->getInstanceByTableName($ps_tablename, true))) {
         die("Invalid table name " . $ps_tablename . " for detail");
         // shouldn't happen
     }
     if (!$t_item->load($pn_item_id)) {
         $this->view->setVar("message", _t("ID does not exist"));
         $this->render("Form/reload_html.php");
         return;
     }
     $o_purifier = new HTMLPurifier();
     $ps_to_email = $o_purifier->purify($this->request->getParameter('to_email', pString));
     $ps_from_email = $o_purifier->purify($this->request->getParameter('from_email', pString));
     $ps_from_name = $o_purifier->purify($this->request->getParameter('from_name', pString));
     $ps_subject = $o_purifier->purify($this->request->getParameter('subject', pString));
     $ps_message = $o_purifier->purify($this->request->getParameter('message', pString));
     $pn_security = $this->request->getParameter('security', pInteger);
     $pn_sum = $this->request->getParameter('sum', pInteger);
     # --- check vars are set and email addresses are valid
     $va_to_email = array();
     $va_to_email_process = array();
     if (!$ps_to_email) {
         $va_errors["to_email"] = _t("Please enter a valid email address or multiple addresses separated by commas");
     } else {
         # --- explode on commas to support multiple addresses - then check each one
         $va_to_email_process = explode(",", $ps_to_email);
         foreach ($va_to_email_process as $vs_email_to_verify) {
             $vs_email_to_verify = trim($vs_email_to_verify);
             if (caCheckEmailAddress($vs_email_to_verify)) {
                 $va_to_email[$vs_email_to_verify] = "";
             } else {
                 $ps_to_email = "";
                 $va_errors["to_email"] = _t("Please enter a valid email address or multiple addresses separated by commas");
             }
         }
     }
     if (!$ps_from_email || !caCheckEmailAddress($ps_from_email)) {
         $ps_from_email = "";
         $va_errors["from_email"] = _t("Please enter a valid email address");
     }
     if (!$ps_from_name) {
         $va_errors["from_name"] = _t("Please enter your name");
     }
     if (!$ps_subject) {
         $va_errors["subject"] = _t("Please enter a subject");
     }
     if (!$ps_message) {
         $va_errors["message"] = _t("Please enter a message");
     }
     if (!$this->request->isLoggedIn()) {
         # --- check for security answer if not logged in
         if (!$pn_security) {
             $va_errors["security"] = _t("Please answer the security question.");
         } else {
             if ($pn_security != $pn_sum) {
                 $va_errors["security"] = _t("Your answer was incorrect, please try again");
             }
         }
     }
     $this->view->setVar('t_item', $t_item);
     $this->view->setVar('item_id', $pn_item_id);
     $this->view->setVar('tablename', $ps_tablename);
     if (sizeof($va_errors) == 0) {
         $o_view = new View($this->request, array($this->request->getViewsDirectoryPath()));
         $o_view->setVar("item", $t_item);
         $o_view->setVar("item_id", $pn_item_id);
         $o_view->setVar("from_name", $ps_from_name);
         $o_view->setVar("message", $ps_message);
         $o_view->setVar("detailConfig", $this->config);
         # -- generate mail text from template - get both html and text versions
         if ($ps_tablename == "ca_objects") {
             $vs_mail_message_text = $o_view->render("mailTemplates/share_object_email_text.tpl");
         } else {
             $vs_mail_message_text = $o_view->render("mailTemplates/share_email_text.tpl");
         }
         if ($ps_tablename == "ca_objects") {
             $vs_mail_message_html = $o_view->render("/mailTemplates/share_object_email_html.tpl");
         } else {
             $vs_mail_message_html = $o_view->render("/mailTemplates/share_email_html.tpl");
         }
         $va_media = null;
         if ($ps_tablename == "ca_objects") {
             # --- get media for attachment
             $vs_media_version = "";
             # Media representation to email
             # --- version is set in media_display.conf.
             if (method_exists($t_item, 'getPrimaryRepresentationInstance')) {
                 if ($t_primary_rep = $t_item->getPrimaryRepresentationInstance()) {
                     if (!sizeof($this->opa_access_values) || in_array($t_primary_rep->get('access'), $this->opa_access_values)) {
                         // check rep access
                         $va_media = array();
                         $va_rep_display_info = caGetMediaDisplayInfo('email', $t_primary_rep->getMediaInfo('media', 'INPUT', 'MIMETYPE'));
                         $vs_media_version = $va_rep_display_info['display_version'];
                         $va_media['path'] = $t_primary_rep->getMediaPath('media', $vs_media_version);
                         $va_media_info = $t_primary_rep->getFileInfo('media', $vs_media_version);
                         if (!($va_media['name'] = $va_media_info['ORIGINAL_FILENAME'])) {
                             $va_media['name'] = $va_media_info[$vs_media_version]['FILENAME'];
                         }
                         # --- this is the mimetype of the version being downloaded
                         $va_media["mimetype"] = $va_media_info[$vs_media_version]['MIMETYPE'];
                     }
                 }
             }
         }
         if (caSendmail($va_to_email, array($ps_from_email => $ps_from_name), $ps_subject, $vs_mail_message_text, $vs_mail_message_html, null, null, $va_media)) {
             $this->view->setVar("message", _t("Your email was sent"));
             $this->render("Form/reload_html.php");
             return;
         } else {
             $va_errors["general"] = _t("Your email could not be sent");
         }
     }
     if (sizeof($va_errors)) {
         # --- there were errors in the form data, so reload form with errors displayed - pass params to preload form
         $this->view->setVar('to_email', $ps_to_email);
         $this->view->setVar('from_email', $ps_from_email);
         $this->view->setVar('from_name', $ps_from_name);
         $this->view->setVar('subject', $ps_subject);
         $this->view->setVar('message', $ps_message);
         $this->view->setVar('errors', $va_errors);
         $va_errors["general"] = _t("There were errors in your form");
         $this->ShareForm();
     } else {
         $this->view->setVar("message", _t("Your message was sent"));
         $this->render("Form/reload_html.php");
         return;
     }
 }
Exemplo n.º 5
0
 function resetSend()
 {
     MetaTagManager::setWindowTitle($this->request->config->get("app_display_name") . ": " . _t("Reset Password"));
     $t_user = new ca_users();
     $vs_message = "";
     $va_errors = array();
     $ps_email = $this->request->getParameter('reset_email', pString);
     if (!caCheckEmailAddress($ps_email)) {
         $this->view->setVar("message", _t("E-mail address is not valid"));
         $this->resetForm();
     } else {
         $t_user->setErrorOutput(0);
         if (!$t_user->load(array("user_name" => $ps_email))) {
             $t_user->load(array("email" => $ps_email));
         }
         # verify user exists with this e-mail address
         if ($t_user->getPrimaryKey()) {
             # user with e-mail does exists...
             if (sizeof($va_errors) == 0) {
                 $o_view = new View($this->request, array($this->request->getViewsDirectoryPath()));
                 $vs_reset_key = md5($t_user->get("user_id") . '/' . $t_user->get("password"));
                 # --- get the subject of the email from template
                 $vs_subject_line = $o_view->render('mailTemplates/instructions_subject.tpl');
                 # -- generate mail text from template - get both the text and html versions
                 $vs_password_reset_url = $this->request->config->get("site_host") . caNavUrl($this->request, '', 'LoginReg', 'resetSave', array('key' => $vs_reset_key));
                 $o_view->setVar("password_reset_url", $vs_password_reset_url);
                 $vs_mail_message_text = $o_view->render('mailTemplates/instructions.tpl');
                 $vs_mail_message_html = $o_view->render('mailTemplates/instructions_html.tpl');
                 caSendmail($t_user->get('email'), $this->request->config->get("ca_admin_email"), $vs_subject_line, $vs_mail_message_text, $vs_mail_message_html);
                 $this->view->setVar("email", $this->request->config->get("ca_admin_email"));
                 $this->view->setVar("action", "send");
                 $this->render('LoginReg/form_reset_html.php');
             }
         } else {
             $this->view->setVar("message", _t("There is no registered user with the email address you provided"));
             $this->resetForm();
         }
     }
 }
Exemplo n.º 6
0
 public function emailSet()
 {
     if (!$this->request->isLoggedIn()) {
         $this->response->setRedirect(caNavUrl($this->request, '', 'LoginReg', 'form'));
         return;
     }
     global $g_ui_locale_id;
     // current locale_id for user
     $va_errors_email_set = array();
     $t_set = new ca_sets();
     $pn_set_id = $this->request->getParameter('set_id', pInteger);
     $t_set->load($pn_set_id);
     $ps_to_email = $this->request->getParameter('to_email', pString);
     $ps_from_email = $this->request->getParameter('from_email', pString);
     $ps_from_name = $this->request->getParameter('from_name', pString);
     $ps_subject = $this->request->getParameter('subject', pString);
     $ps_message = $this->request->getParameter('email_message', pString);
     $o_purifier = new HTMLPurifier();
     $ps_message = $o_purifier->purify($ps_message);
     $ps_to_email = $o_purifier->purify($ps_to_email);
     $ps_from_email = $o_purifier->purify($ps_from_email);
     $ps_from_name = $o_purifier->purify($ps_from_name);
     $ps_subject = $o_purifier->purify($ps_subject);
     # --- check vars are set and email addresses are valid
     $va_to_email = array();
     $va_to_email_process = array();
     if (!$ps_to_email) {
         $va_errors_email_set["to_email"] = _t("Please enter a valid email address or multiple addresses separated by commas");
     } else {
         # --- explode on commas to support multiple addresses - then check each one
         $va_to_email_process = explode(",", $ps_to_email);
         foreach ($va_to_email_process as $vs_email_to_verify) {
             $vs_email_to_verify = trim($vs_email_to_verify);
             if (caCheckEmailAddress($vs_email_to_verify)) {
                 $va_to_email[$vs_email_to_verify] = "";
             } else {
                 $ps_to_email = "";
                 $va_errors_email_set["to_email"] = _t("Please enter a valid email address or multiple addresses separated by commas");
             }
         }
     }
     if (!$ps_subject) {
         $va_errors_email_set["subject"] = _t("Please enter a subject");
     }
     if (!$ps_from_email || !caCheckEmailAddress($ps_from_email)) {
         $ps_from_email = "";
         $va_errors_email_set["from_email"] = _t("Please enter a valid email address");
     }
     if (!$ps_from_name) {
         $va_errors_email_set["from_name"] = _t("Please enter your name");
     }
     if (sizeof($va_errors_email_set) == 0) {
         # -- generate mail text from template - get both html and text versions
         ob_start();
         require $this->request->getViewsDirectoryPath() . "/Sets/mailTemplates/share_email_text.tpl";
         $vs_mail_message_text = ob_get_contents();
         ob_end_clean();
         ob_start();
         require $this->request->getViewsDirectoryPath() . "/Sets/mailTemplates/share_email_html.tpl";
         $vs_mail_message_html = ob_get_contents();
         ob_end_clean();
         if (caSendmail($va_to_email, array($ps_from_email => $ps_from_name), $ps_subject, $vs_mail_message_text, $vs_mail_message_html, null, null, $va_media)) {
             $this->notification->addNotification(_t("Your email was sent"), "message");
         } else {
             $this->notification->addNotification(_t("Your email could not be sent"), "message");
             $va_errors_email_set["email"] = 1;
         }
     }
     if (sizeof($va_errors_email_set)) {
         # --- there were errors in the form data, so reload form with errors displayed - pass params to preload form
         $this->view->setVar('to_email', $ps_to_email);
         $this->view->setVar('from_email', $ps_from_email);
         $this->view->setVar('from_name', $ps_from_name);
         $this->view->setVar('subject', $ps_subject);
         $this->view->setVar('email_message', $ps_message);
         $this->notification->addNotification(_t("There were errors in your form"), "message");
     }
     $this->view->setVar('errors_email_set', $va_errors_email_set);
     $this->index();
 }
Exemplo n.º 7
0
 function resetSend()
 {
     $t_user = new ca_users();
     $vs_message = "";
     $va_errors = array();
     $ps_email = $this->request->getParameter('reset_email', pString);
     if (!caCheckEmailAddress($ps_email)) {
         $this->view->setVar("reset_email_error", _t("E-mail address is not valid"));
         $this->view->setVar("resetFormOpen", 1);
         $this->form($t_user);
     } else {
         $t_user->setErrorOutput(0);
         $t_user->load(array("user_name" => $ps_email));
         # verify user exists with this e-mail address
         if ($t_user->getPrimaryKey()) {
             # user with e-mail does exists...
             if (sizeof($va_errors) == 0) {
                 $vs_reset_key = md5($t_user->get("user_id") . '/' . $t_user->get("password"));
                 # -- generate mail text from template
                 ob_start();
                 #$vs_password_reset_url = $this->request->config->get("site_host")."/exhibit/index.php/LoginReg/resetSave/action/reset/key/".$vs_reset_key."/";
                 $vs_action = "reset";
                 $vs_password_reset_url = $this->request->config->get("site_host") . caNavUrl($this->request, '', 'LoginReg', 'resetSave', array('key' => $vs_reset_key));
                 require $this->request->getViewsDirectoryPath() . "/mailTemplates/instructions.tpl";
                 $vs_mail_message = ob_get_contents();
                 ob_end_clean();
                 caSendmail($t_user->get('email'), $this->request->config->get("ca_admin_email"), "[" . $this->request->config->get("app_display_name") . "] " . _t("Resetting your site password"), $vs_mail_message);
                 $this->view->setVar("email", $this->request->config->get("ca_admin_email"));
                 $this->view->setVar("action", "send");
                 $this->render('LoginReg/resetpw_html.php');
             }
         } else {
             $this->view->setVar("reset_email_error", _t("E-mail address is not valid"));
             $this->view->setVar("resetFormOpen", 1);
             $this->form($t_user);
         }
     }
 }