'preferences', 'name' => 'Preferences'),
);
function do_main() {
$this->oPage->setBreadcrumbDetails("Your Preferences");
$this->oPage->title = "Dashboard"; // FIXME should this be a mutator?
$oUser =& $this->oUser;
$edit_fields = array();
$edit_fields[] = new KTStringWidget('Name','Your full name. This is shown in reports and listings. e.g. John Smith', 'name', $oUser->getName(), $this->oPage, true);
$edit_fields[] = new KTStringWidget('Email Address','Your email address. Notifications and alerts are mailed to this address if email notifications is set below. e.g. jsmith@acme.com', 'email_address', $oUser->getEmail(), $this->oPage, false);
$edit_fields[] = new KTCheckboxWidget('Email Notifications','If this is specified then the you will receive certain notifications. If it isn\'t set, then you will only see notifications on the Dashboard', 'email_notifications', $oUser->getEmailNotification(), $this->oPage, false);
$edit_fields[] = new KTStringWidget('Mobile Number','Your mobile phone number. If the system is configured to send notifications to cellphones, then this number will be SMS\'d with notifications. e.g. +27 99 999 9999', 'mobile_number', $oUser->getMobile(), $this->oPage, false);
$oTemplating = new KTTemplating;
$oTemplate = $oTemplating->loadTemplate("ktcore/principals/preferences");
$aTemplateData = array(
"context" => $this,
'edit_fields' => $edit_fields,
);
return $oTemplate->render($aTemplateData);
}
function do_setPassword() {
$this->oPage->setBreadcrumbDetails("Your Password");
$this->oPage->title = "Dashboard"; // FIXME should this be a mutator?
$oUser =& $this->oUser;
$edit_fields = array();
$edit_fields[] = new KTPasswordWidget('Password','Specify your new password..', 'password', null, $this->oPage, true);
$edit_fields[] = new KTPasswordWidget('Confirm Password','Confirm the password specified above.', 'confirm_password', null, $this->oPage, true);
$oTemplating = new KTTemplating;
$oTemplate = $oTemplating->loadTemplate("ktcore/principals/password");
$aTemplateData = array(
"context" => $this,
'edit_fields' => $edit_fields,
);
return $oTemplate->render($aTemplateData);
}
function do_updatePassword() {
$password = KTUtil::arrayGet($_REQUEST, 'password');
$confirm_password = KTUtil::arrayGet($_REQUEST, 'confirm_password');
if (empty($password)) {
$this->errorRedirectToMain("You must specify a password for the user.");
} else if ($password !== $confirm_password) {
$this->errorRedirectToMain("The passwords you specified do not match.");
}
// FIXME more validation would be useful.
// validated and ready..
$this->startTransaction();
$oUser =& $this->oUser;
// FIXME this almost certainly has side-effects. do we _really_ want
$oUser->setPassword(md5($password)); //
$res = $oUser->update();
//$res = $oUser->doLimitedUpdate(); // ignores a fix blacklist of items.
if (PEAR::isError($res) || ($res == false)) {
$this->errorRedirectoToMain('Failed to update user.');
}
$this->commitTransaction();
$this->successRedirectToMain('Your password has been changed.');
}
function do_saveUser() {
$oUser =& $this->oUser;
$name = KTUtil::arrayGet($_REQUEST, 'name');
if (empty($name)) {
$this->errorRedirectToMain('You must specify your name.');
}
$email_address = KTUtil::arrayGet($_REQUEST, 'email_address');
$email_notifications = KTUtil::arrayGet($_REQUEST, 'email_notifications', false);
if ($email_notifications !== false) $email_notifications = true;
$mobile_number = KTUtil::arrayGet($_REQUEST, 'mobile_number');
$this->startTransaction();
$oUser->setName($name);
$oUser->setEmail($email_address);
$oUser->setEmailNotification($email_notifications);
$oUser->setMobile($mobile_number);
// old system used the very evil store.php.
// here we need to _force_ a limited update of the object, via a db statement.
//
// $res = $oUser->update();
$res = $oUser->doLimitedUpdate(); // ignores a fix blacklist of items.
if (PEAR::isError($res) || ($res == false)) {
$this->errorRedirectoToMain('Failed to update your details.');
}
$this->commitTransaction();
$this->successRedirectToMain('Your details have been updated.');
}
}
$oDispatcher = new DashboardDispatcher();
$oDispatcher->dispatch();
?>