コード例 #1
0
 private function getEmailFromParams(SugarBean $bean, $params)
 {
     if (!array_key_exists('email_target_type', $params)) {
         return '';
     }
     switch ($params['email_target_type']) {
         case 'Email Address':
             return array_key_exists('email', $params) ? $params['email'] : '';
         case 'Specify User':
             $user = new User();
             $user->retrieve($params['email_user_id']);
             return $user->emailAddress->getPrimaryAddress($user);
             break;
         case 'Related Field':
             $emailTarget = $params['email_target'];
             $relatedFields = $bean->get_related_fields();
             $field = $relatedFields[$emailTarget];
             $linkedBeans = $bean->get_linked_beans($field['link'], $field['module']);
             if ($linkedBeans) {
                 $linkedBean = $linkedBeans[0];
                 return $linkedBean->emailAddress->getPrimaryAddress($linkedBean);
             }
             break;
         case 'Record Email':
             return $bean->emailAddress->getPrimaryAddress($bean);
             break;
         default:
             return '';
     }
     return "";
 }
コード例 #2
0
 private function getEmailsFromParams(SugarBean $bean, $params)
 {
     $emails = array();
     //backward compatible
     if (isset($params['email_target_type']) && !is_array($params['email_target_type'])) {
         $email = '';
         switch ($params['email_target_type']) {
             case 'Email Address':
                 $params['email'] = array($params['email']);
                 break;
             case 'Specify User':
                 $params['email'] = array($params['email_user_id']);
                 break;
             case 'Related Field':
                 $params['email'] = array($params['email_target']);
                 break;
         }
         $params['email_target_type'] = array($params['email_target_type']);
         $params['email_to_type'] = array('to');
     }
     //end backward compatible
     if (isset($params['email_target_type'])) {
         foreach ($params['email_target_type'] as $key => $field) {
             switch ($field) {
                 case 'Email Address':
                     if (trim($params['email'][$key]) != '') {
                         $emails[$params['email_to_type'][$key]][] = $params['email'][$key];
                     }
                     break;
                 case 'Specify User':
                     $user = new User();
                     $user->retrieve($params['email'][$key]);
                     $user_email = $user->emailAddress->getPrimaryAddress($user);
                     if (trim($user_email) != '') {
                         $emails[$params['email_to_type'][$key]][] = $user_email;
                         $emails['template_override'][$user_email] = array('Users' => $user->id);
                     }
                     break;
                 case 'Users':
                     $users = array();
                     switch ($params['email'][$key][0]) {
                         case 'security_group':
                             if (file_exists('modules/SecurityGroups/SecurityGroup.php')) {
                                 require_once 'modules/SecurityGroups/SecurityGroup.php';
                                 $security_group = new SecurityGroup();
                                 $security_group->retrieve($params['email'][$key][1]);
                                 $users = $security_group->get_linked_beans('users', 'User');
                                 $r_users = array();
                                 if ($params['email'][$key][2] != '') {
                                     require_once 'modules/ACLRoles/ACLRole.php';
                                     $role = new ACLRole();
                                     $role->retrieve($params['email'][$key][2]);
                                     $role_users = $role->get_linked_beans('users', 'User');
                                     foreach ($role_users as $role_user) {
                                         $r_users[$role_user->id] = $role_user->name;
                                     }
                                 }
                                 foreach ($users as $user_id => $user) {
                                     if ($params['email'][$key][2] != '' && !isset($r_users[$user->id])) {
                                         unset($users[$user_id]);
                                     }
                                 }
                                 break;
                             }
                             //No Security Group module found - fall through.
                         //No Security Group module found - fall through.
                         case 'role':
                             require_once 'modules/ACLRoles/ACLRole.php';
                             $role = new ACLRole();
                             $role->retrieve($params['email'][$key][2]);
                             $users = $role->get_linked_beans('users', 'User');
                             break;
                         case 'all':
                         default:
                             global $db;
                             $sql = "SELECT id from users WHERE status='Active' AND portal_only=0 ";
                             $result = $db->query($sql);
                             while ($row = $db->fetchByAssoc($result)) {
                                 $user = new User();
                                 $user->retrieve($row['id']);
                                 $users[$user->id] = $user;
                             }
                             break;
                     }
                     foreach ($users as $user) {
                         $user_email = $user->emailAddress->getPrimaryAddress($user);
                         if (trim($user_email) != '') {
                             $emails[$params['email_to_type'][$key]][] = $user_email;
                             $emails['template_override'][$user_email] = array('Users' => $user->id);
                         }
                     }
                     break;
                 case 'Related Field':
                     $emailTarget = $params['email'][$key];
                     $relatedFields = array_merge($bean->get_related_fields(), $bean->get_linked_fields());
                     $field = $relatedFields[$emailTarget];
                     if ($field['type'] == 'relate') {
                         $linkedBeans = array();
                         $idName = $field['id_name'];
                         $id = $bean->{$idName};
                         $linkedBeans[] = BeanFactory::getBean($field['module'], $id);
                     } else {
                         if ($field['type'] == 'link') {
                             $relField = $field['name'];
                             if (isset($field['module']) && $field['module'] != '') {
                                 $rel_module = $field['module'];
                             } else {
                                 if ($bean->load_relationship($relField)) {
                                     $rel_module = $bean->{$relField}->getRelatedModuleName();
                                 }
                             }
                             $linkedBeans = $bean->get_linked_beans($relField, $rel_module);
                         } else {
                             $linkedBeans = $bean->get_linked_beans($field['link'], $field['module']);
                         }
                     }
                     if ($linkedBeans) {
                         foreach ($linkedBeans as $linkedBean) {
                             $rel_email = $linkedBean->emailAddress->getPrimaryAddress($linkedBean);
                             if (trim($rel_email) != '') {
                                 $emails[$params['email_to_type'][$key]][] = $rel_email;
                                 $emails['template_override'][$rel_email] = array($linkedBean->module_dir => $linkedBean->id);
                             }
                         }
                     }
                     break;
                 case 'Record Email':
                     $recordEmail = $bean->emailAddress->getPrimaryAddress($bean);
                     if ($recordEmail == '' && isset($bean->email1)) {
                         $recordEmail = $bean->email1;
                     }
                     if (trim($recordEmail) != '') {
                         $emails[$params['email_to_type'][$key]][] = $recordEmail;
                     }
                     break;
             }
         }
     }
     return $emails;
 }