Esempio n. 1
0
 /**
  * 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;
 }