/** * getCallerData * * returns caller data. wewt. * * @param string $caller Caller username or pidm or wp_id * @param array $person Person record * @return array */ function getCallerData($caller, $person = false) { $found_via = null; if ($person) { $found_via = 'function-args'; } if (!$caller) { return array(); } $config = \PSU\Config\Factory::get_config(); $overrides = $config->get_json('psuperson', 'overrides'); if (isset($overrides->{$caller})) { $caller = $overrides->{$caller}; } //has the caller data already been queried? if (is_scalar($caller) && $this->people[$caller]) { //aye! return it return $this->people[$caller]; } //end if // are we trying to query getCallerData based on an already-populated $caller? if (is_array($caller) && isset($caller['wp_id']) && isset($this->people[$caller['wp_id']])) { return $this->people[$caller['wp_id']]; } elseif (is_array($caller) && isset($caller['pidm']) && isset($this->people[$caller['pidm']])) { return $this->people[$caller['pidm']]; } //end elseif // // populate generic data // $caller_data = array('pidm' => 0, 'wp_id' => null, 'identifier' => 'generic', 'email' => $GLOBALS['HELPDESK_EMAIL'], 'name_first' => 'Generic Caller', 'name_last' => 'Help Desk'); switch ($caller) { case 'generic': $found_via = 'fake-user'; break; case 'kiosk': $caller_data['identifier'] = 'kiosk'; $caller_data['name_first'] = 'Kiosk'; $found_via = 'fake-user'; break; case 'clusteradm': $caller_data['identifier'] = 'clusteradm'; $caller_data['name_first'] = 'Cluster Call'; $found_via = 'fake-user'; break; } //end switch $caller_data['name_full'] = $caller_data['name_first'] . ' - ' . $caller_data['name_last']; // // done with generic user setup; try to populate real user // if (!$person && !$this->isFakeUser($caller)) { // looks like a real user. try and find him. $caller_person = new PSUPerson($caller); if ($caller_person->is_valid()) { $person = array(); $person['name_full'] = $caller_person->formatName('f l'); $person['wp_id'] = $caller_person->wp_id; $person['email'] = $caller_person->wp_email; $person['pidm'] = $caller_person->pidm ? $caller_person->pidm : null; $person['identifier'] = $caller_person->wp_email ? $caller_person->wp_id : $caller_person->pidm; $person['username'] = $caller_person->username ?: $caller_person->wp_id; $found_via = 'psuperson'; } } //end if //was a person record found? if (!empty($person)) { //Do some data cleansing $person['phone_number'] = $person['phone_of'] ? $person['phone_of'] : $person['phone_vm']; if ($person['pidm']) { $person['role'] = @implode(', ', PSU::get('idmobject')->getAllBannerRoles($person['identifier'])); } else { $person['role'] = 'No Roles: Family Portal Only'; } //end else if ($person['class'] == 'Alumni') { $person['class'] = strtolower($person['class']) . '.'; } //end if if ($person['pidm']) { //get address for location if ($addresses = current($GLOBALS['BannerGeneral']->getAddress($person['pidm'], 'RH'))) { $person['location'] = $addresses['r_street_line1'] . ' / ' . $person['msc']; } elseif ($addresses = current($GLOBALS['BannerGeneral']->getAddress($person['pidm'], 'OF'))) { $person['location'] = $addresses['r_street_line2'] . ' / ' . $person['msc']; } //end elseif $psu_person = new PSUPerson($person['pidm']); $person['phone_number'] = $this->getCallerPhone($psu_person); } //end if //set the caller data to the person record $caller_data = $person; } elseif (!$this->isFakeUser($caller)) { $person = new PSUPerson($caller); $caller_data = array('pidm' => $person->pidm, 'wp_id' => $person->wp_id, 'psu_id' => $person->id, 'username' => $person->username, 'identifier' => $person->username ? $person->username : $person->wp_id, 'email' => $person->wp_email ? $person->wp_email : ($person->email ? $person->email['CA'][0] : ''), 'name_last' => $person->last_name, 'name_first' => $person->first_name, 'name_full' => "{$person->first_name} {$person->last_name}", 'phone_number' => $this->getCallerPhone($person)); if (isset($caller_data['email']['CA']) && strpos($caller_data['email']['CA'], '@') !== false) { $caller_data['email'] = $caller_data['email']['CA'][0]; } elseif (count($caller_data['email'])) { if (is_array($caller_data['email'])) { $caller_data['email'] = array_shift(array_shift($caller_data['email'])); } else { $caller_data['email'] = $caller_data['email']; } } else { $caller_data['email'] = null; } } $caller_data['username'] = $caller_data['username'] ?: $caller_data['identifier']; if ($found_via == null) { return false; } //store the caller data so it isn't requeried a crap ton of times $this->people[$caller] = $caller_data; return $caller_data; }