-
Welcome to Donor Services Online!
This quick tour is designed to help you find your way around the site.
-
Navigation
You can click on a top-level navigation item (such as "Help" to go directly to that section OR roll over it to see sub-sections. Navigation items with sub-sections have a small triangle next to them.
-
My Grants
The Grant section features improved search results to simplify choosing an organization.
-
Messages
View confirmations and other communications from Donor Services in the Message Center.
-
Mobile Friendly
The site has also been optimized for mobile. Try it out on your iPhone or Android device.
RBAppCommand($parentMod);/** Dont remove this line */
$this->_mapFromRBAConfig();/** Dont remove this line */
/** Additional Constructor Code */
$this->_requiresLogin = true;
}
/**
* Return an instance of this object.
*/
public function &getInstance(RBAppModule &$parentMod) {
$instance = new DisplayAccountInfo($parentMod);
return $instance;
}
/**
* This function is defined by the build file based on
* rba_config.xml which should be in the root directory
* of the application.
*
* NOTE: this function should not be changed, it will be
* continuously changed automatically by the build process.
*/
final protected function _mapFromRBAConfig() {
$this->_cmdKey = "display_account_info";
}
/**
* This function can be whatever processing is required to be
* done on the arguments submitted.
*
* NOTE_1: Both _parseArgs and _procArgs are forcibly defined
* so that they can then be used in execute. They CAN be defined
* as empty and DONT NEED to be used but it is RECOMMENDED for
* separation of functionality and neatness.
* Also, this prevents this function from growing too large.
*
* NOTE_2: Where required, this function can use the reference to
* the parent module (_cmdParentMod) to call the displayView method.
*/
public function execute(&$args) {
// GET User fund info
$curruser = unserialize($_SESSION['RBA_CURRENT_USER']);
// VIEW-ONLY LOCKDOWN (Giving Portal transition): block profile/account/address
// edits for non-admins. This form self-posts (action=updateuser/updateaddress),
// so the central RBApp guard can't catch it. Reversible via VIEW_ONLY_MODE.
if ( defined('VIEW_ONLY_MODE') && VIEW_ONLY_MODE && ! $curruser->isAdmin() ) {
unset($args['action']);
}
$fund = $curruser->getCurrentFund();
$viewonly_user = $fund['viewonly_yn'];
//echo "
", print_r($fund), "
";
$out = array();
$out["feedback"] = false;
$user = new Users();
$user->setId($curruser->getId());
$user->load();
// FUND info +
$fund = unserialize($_SESSION['RBA_CURRENT_FUND']);
$fund_number = $fund->getId();
$fund_name = $fund->getFundName();
$access = $fund->getModCommands();
$u2f = new User2fund();
$u2f->setFundNumber($fund_number);
$u2f->setId($user->getId());
$u2f->load();
$out['currentfund'] = $fund_number;
$out['currentfund_name'] = $fund_name;
$out['access'] = $access;
$out['viewonly_user'] = $viewonly_user;
// echo "
", print_r($access), "
";
// FUND info -
$out['setting_mail_pref'] = false;
$out['token'] = $_SESSION["csrf_token"];
if (in_array('SETTING_MAIL_PREF', $access)) {
$out['setting_mail_pref'] = true;
}
$update = false;
if (isset($args["action"]) && $args['action'] == 'updateuser' && isset($args["token"]) && $args["token"] == $_SESSION["csrf_pre_token"]) {
$args['updated'] = '';
if ($args["username_new"] != $user->getUsername())
if ($user->checkUsername($args["username_new"]))
$out["errors"] .= "
Username " . $args["username_new"] . " is not available";
else {
$out["feedback"] .= "Your username has been updated to " . $args["username_new"] . ".
";
$args['updated'] .= "Username updated from " . $user->getUsername() . " to " . $args["username_new"] . ".\n";
$user->setUsername($args["username_new"]);
$update = true;
}
if ($args["email"] != $user->getUserEmail()) {
$out["feedback"] .= "Your email address has been updated to " . $args["email"] . ".
";
$args['updated'] .= "Email updated from " . $user->getUserEmail() . " to " . $args["email"] . ".\n";
$user->setUserEmail($args["email"]);
$update = true;
}
if ($args["phone"] != $user->getUserPhone()) {
$out["feedback"] .= "Your phone number has been updated to " . $args["phone"] . ".
";
$args['updated'] .= "Phone updated from " . $user->getUserPhone() . " to " . $args["phone"] . ".\n";
$user->setUserPhone($args["phone"]);
$update = true;
}
if ($args["fax"] != $user->getUserFax()) {
$out["feedback"] .= "Your fax number has been updated to " . $args["fax"] . ".
";
$args['updated'] .= "Fax updated from " . $user->getUserFax() . " to " . $args["fax"] . ".\n";
$user->setUserFax($args["fax"]);
$update = true;
}
if (isset($args['statement_mode']) && $args['statement_mode'] != $u2f->getStatementMode()) {
$out["feedback"] .= "Your statement delivery method has been updated to: " . $args['statement_mode'] . ".
";
$args['updated'] .= "Statement delivery method updated to: " . $args["statement_mode"] . ".\n";
$u2f->setStatementMode($args["statement_mode"]);
$u2f->save();
$update = true;
}
if ( isset($args["password"]) && $args["password"] && $args["password"] != $user->getUserpass()) {
$passIsOkay = true;
if (strlen($args['password']) < 12 || strlen($args['password']) > 64 || strlen(preg_replace('/\D/', '', $args['password'])) < 1 || strlen(preg_replace('/[^a-z]/', '', $args['password'])) < 1 || strlen(preg_replace('/[^A-Z]/', '', $args['password'])) < 1 ) {
$passIsOkay = false;
$out["errors"] .= "
Your password must be at least 12 characters and less than 65 characters in length and contain at least 1 number, 1 lowercase letter and 1 uppercase letter";
}
if ( $args["password"] != $args["password_verify"] ) {
$passIsOkay = false;
$out["errors"] .= "Your password did not match the verify field";
}
if ($passIsOkay) {
$user->setUserpass($args["password"]);
$out["feedback"] .= "Your password has been updated.
";
$args['updated'] .= "Password updated.\n";
$update = true;
}
} else {
$user->setUserpass(NULL);
}
if ($update) {
$user->save();
$args['updated'] = "The following information has been updated:\n\n" . $args['updated'];
$args['sendto'] = $curruser->getUserEmail();
$args['fund_name'] = $fund_name;
$args['fund_number'] = $fund_number;
$notify = $this->_cmdParentMod->_getCommandInstance("notify_update");
$notify->execute($args);
//$user->login($user->getUsername(), $user->getUserpass());
}
}
if (isset($args["action"]) && $args['action'] == 'updateaddress' &&
$args['save'] == 'Update') {
$orig = new Address();
$orig->setId($args['contact_id']);
$orig->load();
if ($orig->getAddressName() != $args['address_name'] ||
$orig->getAddressAddress() != $args['address_address'] ||
$orig->getAddressCity() != $args['address_city'] ||
$orig->getAddressState() != $args['address_state'] ||
$orig->getAddressZip() != $args['address_zip']) {
$address1 = $orig->getAddressName() . "\n" . $orig->getAddressAddress() . "\n" . $orig->getAddressCity() . " " . $orig->getAddressState() . " " . $orig->getAddressZip();
$args["connection_id"] = $fund->getFundNumber();
$args['address_type'] = 'fund';
$args['active_yn'] = 1;
$address = $this->_cmdParentMod->_getCommandInstance("address_save");
$address->execute($args);
$out["feedback"] .= "Your address has been updated.";
$address2 = $args['address_name'] . "\n" . $args['address_address'] . "\n" . $args['address_city'] . " " . $args['address_state'] . " " . $args['address_zip'];
$args['updated'] = "Original:\n" . $address1 . "\n\n" . "Updated:\n" . $address2;
$args['sendto'] = $curruser->getUserEmail();
$args['fund_name'] = $fund_name;
$args['fund_number'] = $fund_number;
$notify = $this->_cmdParentMod->_getCommandInstance("notify_update");
$notify->execute($args);
} else {
$out["errors"] .= "You clicked 'update' without changing your address.
";
}
}
if (isset($args["action"]) && $args['action'] == 'updateaddress' &&
$args['save'] == 'Remove') {
$orig = new Address();
$orig->setId($args['contact_id']);
$orig->load();
$orig->setActiveYN(0);
$orig->save();
$address1 = $orig->getAddressName() . "\n" . $orig->getAddressAddress() . "\n" . $orig->getAddressCity() . " " . $orig->getAddressState() . " " . $orig->getAddressZip();
$out["feedback"] .= "Your address has been removed.
";
$args['updated'] = "The following address has been removed:\n" . $address1 . "\n\n";
$args['sendto'] = $curruser->getUserEmail();
$args['fund_name'] = $fund_name;
$args['fund_number'] = $fund_number;
$notify = $this->_cmdParentMod->_getCommandInstance("notify_update");
$notify->execute($args);
}
$out["useremail"] = $user->getUserEmail();
$out["username"] = $user->getUsername();
$out["userpass"] = $user->getUserpass();
$out["phone"] = $user->getUserPhone();
$out["fax"] = $user->getUserFax();
$out["statement_mode"] = $u2f->getStatementMode();
$args['hideAlert'] = TRUE;
$args["currCmd"] = $this->_cmdKey;
$cmd = $this->_cmdParentMod->_getCommandInstance("display_header");
$cmd->execute($args);
$address = new AddressPgSet(null, 1, 99);
$address->addRange('connection_id', 'EQ', $fund_number);
$address->addStringMatch('address_type', 'EQ', 'fund');
$address->addRange('active_yn', 'EQ', 1);
$address->addSort('address_name');
$address->init();
$addresses = array();
while ($row = $address->get())
array_push($addresses, $row);
$out['address'] = $addresses;
$out['currentFund'] = $fund_number;
$this->_cmdParentMod->displayView("display_account_info", $out);
$out['sidebar'] = $args['sidebar'];
$this->_cmdParentMod->displayView("display_footer_active", $out);
session_write_close();
}
/**
* In order to enforce code organization just a little bit,
* this function needs to be defined to make sure the parameters
* passed into this commands are valid.
*/
protected function _parseArgs(&$args) {
/*
*
* ENTER CODE TO PARSE ARGUMENTS CODE HERE
*
*/
}
/**
* The function should take care of database interactions,
* Business rules and other model-type functionality.
*/
protected function _procArgs(&$args) {
/*
* ENTER CODE TO PROCESS ARGUMENTS
*/
}
}