コード例 #1
0
 public function testget_other_module()
 {
     //unset and reconnect Db to resolve mysqli fetch exeception
     global $db;
     unset($db->database);
     $db->checkConnection();
     $relationship = new Relationship();
     //test with invalid relationship
     $result = $relationship->get_other_module('test_test', 'test', $db);
     $this->assertEquals(false, $result);
     //test with valid relationship
     $result = $relationship->get_other_module('roles_users', 'Roles', $db);
     $this->assertEquals('Users', $result);
 }
コード例 #2
0
 /**
  * That method decode the event criteria string and insert into an array when
  * the expType is MODULE for evaluate purpose.
  * @param string eventCriteria
  * @param object event
  * @return array
  * @codeCoverageIgnore
  */
 private function processEventCriteria($eventCriteria, $event)
 {
     $criteria = json_decode($eventCriteria);
     $resultArray = array();
     if (is_array($criteria)) {
         foreach ($criteria as $token) {
             if ($token->expType == 'MODULE') {
                 $tmpObj = new stdClass();
                 $tmpObj->pro_id = $event->pro_id;
                 $tmpBean = BeanFactory::getBean('pmse_BpmProcessDefinition');
                 //$this->beanFactory->getBean('BpmProcessDefinition');
                 $tmpBean->retrieve_by_string_fields(array('id' => $tmpObj->pro_id));
                 $tmpObj->rel_process_module = $tmpBean->pro_module;
                 $tmpObj->rel_element_id = $event->evn_id;
                 $tmpObj->rel_element_type = $event->evn_type . '_EVENT';
                 $tmpObj->rel_element_relationship = $token->expModule;
                 if ($tmpObj->rel_process_module == $token->expModule) {
                     $tmpObj->rel_element_module = $token->expModule;
                 } else {
                     // @codeCoverageIgnoreStart
                     $relBean = new Relationship();
                     $tmpObj->rel_element_module = $relBean->get_other_module($token->expModule, $tmpObj->rel_process_module, $this->db);
                     // @codeCoverageIgnoreEnd
                 }
                 $resultArray[] = $tmpObj;
             }
         }
     }
     return $resultArray;
 }
コード例 #3
0
 function inherit_parent(&$focus, $isUpdate)
 {
     global $sugar_config;
     //new record or if update from soap api for cases or bugs
     //TEST FOR PORTAL NOTES
     //if((!$isUpdate || ($isUpdate && !empty($focus->note_id) && ($focus->object_name == "Case" || $focus->object_name == "Bug")))
     if (!$isUpdate && isset($sugar_config['securitysuite_inherit_parent']) && $sugar_config['securitysuite_inherit_parent'] == true) {
         $focus_module_dir = $focus->module_dir;
         $focus_id = $focus->id;
         //inherit only for those that support Security Groups
         $groupFocus = new SecurityGroup();
         $security_modules = $groupFocus->getSecurityModules();
         //if(!in_array($focus_module_dir,$security_modules)) {
         if (!in_array($focus_module_dir, array_keys($security_modules))) {
             //rost fix2
             return;
             //don't inherit for this module
         }
         //from subpanel
         //PHP Notice error fix
         $parent_type = "";
         $parent_id = "";
         if (isset($_REQUEST['relate_to']) && isset($_REQUEST['relate_id'])) {
             //relate_to is not guaranteed to be a module name anymore.
             //if it isn't load the relationship and find the module name that way
             if (!in_array($_REQUEST['relate_to'], array_keys($security_modules))) {
                 //check to see if relate_to is the relationship name
                 require_once 'modules/Relationships/Relationship.php';
                 $rel_module = Relationship::get_other_module($_REQUEST['relate_to'], $focus_module_dir, $focus->db);
                 if (isset($rel)) {
                     $parent_type = $rel_module;
                     $parent_id = $_REQUEST['relate_id'];
                 }
             } else {
                 $parent_type = $_REQUEST['relate_to'];
                 $parent_id = $_REQUEST['relate_id'];
             }
         }
         if (isset($_SESSION['portal_id'])) {
             $parent_id = $_SESSION['user_id'];
             //soap stores contact id in user_id field
             $parent_type = "Contacts";
         }
         //from activity type creation
         if ((empty($parent_type) || empty($parent_id)) && isset($_REQUEST['parent_type']) && isset($_REQUEST['parent_id'])) {
             $parent_type = $_REQUEST['parent_type'];
             $parent_id = $_REQUEST['parent_id'];
         }
         //full form from subpanel
         if ((empty($parent_type) || empty($parent_id)) && isset($_REQUEST['return_module']) && isset($_REQUEST['return_id'])) {
             $parent_type = $_REQUEST['return_module'];
             $parent_id = $_REQUEST['return_id'];
         }
         /** need to find relate fields...for example for Cases look to see if account_id is set */
         //allow inheritance for all relate field types....iterate through and inherit each related field
         //if(empty($parent_type) || empty($parent_id)) {
         foreach ($focus->field_name_map as $name => $def) {
             if ($def['type'] == 'relate' && isset($def['id_name']) && isset($def['module']) && strtolower($def['module']) != "users") {
                 if (isset($_REQUEST[$def['id_name']])) {
                     $relate_parent_id = $_REQUEST[$def['id_name']];
                     $relate_parent_type = $def['module'];
                     SecurityGroup::inherit_parentQuery($focus, $relate_parent_type, $relate_parent_id, $focus_id, $focus_module_dir);
                 } else {
                     if (isset($_SESSION['portal_id']) && isset($_SESSION[$def['id_name']])) {
                         //catch soap account
                         $relate_parent_id = $_SESSION[$def['id_name']];
                         $relate_parent_type = $def['module'];
                         SecurityGroup::inherit_parentQuery($focus, $relate_parent_type, $relate_parent_id, $focus_id, $focus_module_dir);
                     }
                 }
             }
         }
         //}
         if (!empty($parent_type) && !empty($parent_id)) {
             // && $parent_type != "Emails" && $parent_type != "Meetings") {
             SecurityGroup::inherit_parentQuery($focus, $parent_type, $parent_id, $focus_id, $focus_module_dir);
         }
         //end if parent type/id
     }
     //end if new record
 }