Exemplo n.º 1
0
 function get($key, $default = null)
 {
     if (!isset($this->_cached_values[$key])) {
         if (!class_exists('SugarArray', true)) {
             require 'include/utils/array_utils.php';
         }
         $this->_cached_values[$key] = isset($GLOBALS['sugar_config']) ? SugarArray::staticGet($GLOBALS['sugar_config'], $key, $default) : $default;
     }
     return $this->_cached_values[$key];
 }
Exemplo n.º 2
0
 private function getFieldValue($bean, $result, $source_field)
 {
     $def = $this->getModuleFieldDef($bean->module_dir, $source_field);
     $out_field = $source_field;
     if (!empty($def['output'])) {
         $out_field = $def['output'];
     }
     $value = SugarArray::staticGet($result, $out_field);
     if (is_array($def)) {
         if (!empty($def['function'])) {
             $function = $def['function'];
             if (is_array($function) && isset($function['name'])) {
                 $function = $def['function']['name'];
                 if (!empty($def['function']['include'])) {
                     require_once $def['function']['include'];
                 }
             }
             $value = $function($bean, $out_field, $value);
         }
     }
     return $value;
 }
Exemplo n.º 3
0
 /**
  * createQuickSearchCode
  * This function creates the $sqs_objects array that will be used by the quicksearch Javascript
  * code.  The $sqs_objects array is wrapped in a $json->encode call.
  *
  * @param array $def The vardefs.php definitions
  * @param array $defs2 The Meta-Data file definitions
  * @param string $view
  * @param strign $module
  * @return string
  */
 public function createQuickSearchCode($defs, $defs2, $view = '', $module = '')
 {
     $sqs_objects = array();
     require_once 'include/QuickSearchDefaults.php';
     if (isset($this) && $this instanceof TemplateHandler) {
         $qsd = QuickSearchDefaults::getQuickSearchDefaults($this->getQSDLookup());
     } else {
         $qsd = QuickSearchDefaults::getQuickSearchDefaults(array());
     }
     $qsd->setFormName($view);
     if (preg_match('/^SearchForm_.+/', $view)) {
         if (strpos($view, 'popup_query_form')) {
             $qsd->setFormName('popup_query_form');
             $parsedView = 'advanced';
         } else {
             $qsd->setFormName('search_form');
             $parsedView = preg_replace("/^SearchForm_/", "", $view);
         }
         //Loop through the Meta-Data fields to see which ones need quick search support
         foreach ($defs as $f) {
             $field = $f;
             $name = $qsd->form_name . '_' . $field['name'];
             if ($field['type'] == 'relate' && isset($field['module']) && preg_match('/_name$|_c$/si', $name)) {
                 if (preg_match('/^(Campaigns|Teams|Users|Contacts|Accounts)$/si', $field['module'], $matches)) {
                     if ($matches[0] == 'Campaigns') {
                         $sqs_objects[$name . '_' . $parsedView] = $qsd->loadQSObject('Campaigns', 'Campaign', $field['name'], $field['id_name'], $field['id_name']);
                     } else {
                         if ($matches[0] == 'Users') {
                             if (!empty($f['name']) && !empty($f['id_name'])) {
                                 $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSUser($f['name'], $f['id_name']);
                             } else {
                                 $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSUser();
                             }
                         } else {
                             if ($matches[0] == 'Campaigns') {
                                 $sqs_objects[$name . '_' . $parsedView] = $qsd->loadQSObject('Campaigns', 'Campaign', $field['name'], $field['id_name'], $field['id_name']);
                             } else {
                                 if ($matches[0] == 'Accounts') {
                                     $nameKey = $name;
                                     $idKey = isset($field['id_name']) ? $field['id_name'] : 'account_id';
                                     //There are billingKey, shippingKey and additionalFields entries you can define in editviewdefs.php
                                     //entry to allow quick search to autocomplete fields with a suffix value of the
                                     //billing/shippingKey value (i.e. 'billingKey' => 'primary' in Contacts will populate
                                     //primary_XXX fields with the Account's billing address values).
                                     //addtionalFields are key/value pair of fields to fill from Accounts(key) to Contacts(value)
                                     $billingKey = isset($f['displayParams']['billingKey']) ? $f['displayParams']['billingKey'] : null;
                                     $shippingKey = isset($f['displayParams']['shippingKey']) ? $f['displayParams']['shippingKey'] : null;
                                     $additionalFields = isset($f['displayParams']['additionalFields']) ? $f['displayParams']['additionalFields'] : null;
                                     $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSAccount($nameKey, $idKey, $billingKey, $shippingKey, $additionalFields);
                                 } else {
                                     if ($matches[0] == 'Contacts') {
                                         $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSContact($field['name'], $field['id_name']);
                                     }
                                 }
                             }
                         }
                     }
                 } else {
                     $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSParent($field['module']);
                     if (!isset($field['field_list']) && !isset($field['populate_list'])) {
                         $sqs_objects[$name . '_' . $parsedView]['populate_list'] = array($field['name'], $field['id_name']);
                         $sqs_objects[$name . '_' . $parsedView]['field_list'] = array('name', 'id');
                     } else {
                         $sqs_objects[$name . '_' . $parsedView]['populate_list'] = $field['field_list'];
                         $sqs_objects[$name . '_' . $parsedView]['field_list'] = $field['populate_list'];
                     }
                 }
             } else {
                 if ($field['type'] == 'parent') {
                     $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSParent();
                 }
             }
             //if-else
         }
         //foreach
         foreach ($sqs_objects as $name => $field) {
             foreach ($field['populate_list'] as $key => $fieldname) {
                 $sqs_objects[$name]['populate_list'][$key] = $sqs_objects[$name]['populate_list'][$key] . '_' . $parsedView;
             }
         }
     } else {
         //Loop through the Meta-Data fields to see which ones need quick search support
         foreach ($defs2 as $f) {
             if (!isset($defs[$f['name']])) {
                 continue;
             }
             $field = $defs[$f['name']];
             if ($view == "ConvertLead") {
                 $field['name'] = $module . $field['name'];
                 if (isset($field['module']) && isset($field['id_name']) && substr($field['id_name'], -4) == "_ida") {
                     $lc_module = strtolower($field['module']);
                     $ida_suffix = "_" . $lc_module . $lc_module . "_ida";
                     if (preg_match('/' . $ida_suffix . '$/', $field['id_name']) > 0) {
                         $field['id_name'] = $module . $field['id_name'];
                     } else {
                         $field['id_name'] = $field['name'] . "_" . $field['id_name'];
                     }
                 } else {
                     if (!empty($field['id_name'])) {
                         $field['id_name'] = $field['name'] . "_" . $field['id_name'];
                     }
                 }
             }
             $name = $qsd->form_name . '_' . $field['name'];
             if ($field['type'] == 'relate' && isset($field['module']) && (preg_match('/_name$|_c$/si', $name) || !empty($field['quicksearch']))) {
                 if (!preg_match('/_c$/si', $name) && (!isset($field['id_name']) || !preg_match('/_c$/si', $field['id_name'])) && preg_match('/^(Campaigns|Teams|Users|Contacts|Accounts)$/si', $field['module'], $matches)) {
                     if ($matches[0] == 'Campaigns') {
                         $sqs_objects[$name] = $qsd->loadQSObject('Campaigns', 'Campaign', $field['name'], $field['id_name'], $field['id_name']);
                     } else {
                         if ($matches[0] == 'Users') {
                             if ($field['name'] == 'reports_to_name') {
                                 $sqs_objects[$name] = $qsd->getQSUser('reports_to_name', 'reports_to_id');
                                 // Bug #52994 : QuickSearch for a 1-M User relationship changes assigned to user
                             } elseif ($field['name'] == 'assigned_user_name') {
                                 $sqs_objects[$name] = $qsd->getQSUser('assigned_user_name', 'assigned_user_id');
                             } else {
                                 $sqs_objects[$name] = $qsd->getQSUser($field['name'], $field['id_name']);
                             }
                         } else {
                             if ($matches[0] == 'Campaigns') {
                                 $sqs_objects[$name] = $qsd->loadQSObject('Campaigns', 'Campaign', $field['name'], $field['id_name'], $field['id_name']);
                             } else {
                                 if ($matches[0] == 'Accounts') {
                                     $nameKey = $name;
                                     $idKey = isset($field['id_name']) ? $field['id_name'] : 'account_id';
                                     //There are billingKey, shippingKey and additionalFields entries you can define in editviewdefs.php
                                     //entry to allow quick search to autocomplete fields with a suffix value of the
                                     //billing/shippingKey value (i.e. 'billingKey' => 'primary' in Contacts will populate
                                     //primary_XXX fields with the Account's billing address values).
                                     //addtionalFields are key/value pair of fields to fill from Accounts(key) to Contacts(value)
                                     $billingKey = SugarArray::staticGet($f, 'displayParams.billingKey');
                                     $shippingKey = SugarArray::staticGet($f, 'displayParams.shippingKey');
                                     $additionalFields = SugarArray::staticGet($f, 'displayParams.additionalFields');
                                     $sqs_objects[$name] = $qsd->getQSAccount($nameKey, $idKey, $billingKey, $shippingKey, $additionalFields);
                                 } else {
                                     if ($matches[0] == 'Contacts') {
                                         $sqs_objects[$name] = $qsd->getQSContact($field['name'], $field['id_name']);
                                         if (preg_match('/_c$/si', $name) || !empty($field['quicksearch'])) {
                                             $sqs_objects[$name]['field_list'] = array('salutation', 'first_name', 'last_name', 'id');
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 } else {
                     $sqs_objects[$name] = $qsd->getQSParent($field['module']);
                     if (!isset($field['field_list']) && !isset($field['populate_list'])) {
                         $sqs_objects[$name]['populate_list'] = array($field['name'], $field['id_name']);
                         // now handle quicksearches where the column to match is not 'name' but rather specified in 'rname'
                         if (!isset($field['rname'])) {
                             $sqs_objects[$name]['field_list'] = array('name', 'id');
                         } else {
                             $sqs_objects[$name]['field_list'] = array($field['rname'], 'id');
                             $sqs_objects[$name]['order'] = $field['rname'];
                             $sqs_objects[$name]['conditions'] = array(array('name' => $field['rname'], 'op' => 'like_custom', 'end' => '%', 'value' => ''));
                         }
                     } else {
                         $sqs_objects[$name]['populate_list'] = $field['field_list'];
                         $sqs_objects[$name]['field_list'] = $field['populate_list'];
                     }
                 }
             } else {
                 if ($field['type'] == 'parent') {
                     $sqs_objects[$name] = $qsd->getQSParent();
                 }
             }
             //if-else
             // Bug 53949 - Captivea (sve) - Partial fix : Append metadata fields that are not already included in $sqs_objects array
             // (for example with hardcoded modules before, metadata arrays are not taken into account in 6.4.x 6.5.x)
             // As QuickSearchDefault methods are called at other places, this will not fix the SQS problem for everywhere, but it fixes it on Editview
             //merge populate_list && field_list with vardef
             if (!empty($field['field_list']) && !empty($field['populate_list'])) {
                 for ($j = 0; $j < count($field['field_list']); $j++) {
                     //search for the same couple (field_list_item,populate_field_item)
                     $field_list_item = $field['field_list'][$j];
                     $field_list_item_alternate = $qsd->form_name . '_' . $field['field_list'][$j];
                     $populate_list_item = $field['populate_list'][$j];
                     $found = false;
                     for ($k = 0; $k < count($sqs_objects[$name]['field_list']); $k++) {
                         if (($field_list_item == $sqs_objects[$name]['populate_list'][$k] || $field_list_item_alternate == $sqs_objects[$name]['populate_list'][$k]) && $populate_list_item == $sqs_objects[$name]['field_list'][$k]) {
                             $found = true;
                             break;
                         }
                     }
                     if (!$found) {
                         $sqs_objects[$name]['field_list'][] = $field['populate_list'][$j];
                         // as in lines 462 and 463
                         $sqs_objects[$name]['populate_list'][] = $field['field_list'][$j];
                     }
                 }
             }
         }
         //foreach
     }
     //Implement QuickSearch for the field
     if (!empty($sqs_objects) && count($sqs_objects) > 0) {
         $quicksearch_js = '<script language="javascript">';
         $quicksearch_js .= 'if(typeof sqs_objects == \'undefined\'){var sqs_objects = new Array;}';
         $json = getJSONobj();
         foreach ($sqs_objects as $sqsfield => $sqsfieldArray) {
             $quicksearch_js .= "sqs_objects['{$sqsfield}']={$json->encode($sqsfieldArray)};";
         }
         return $quicksearch_js . '</script>';
     }
     return '';
 }
Exemplo n.º 4
0
 public function testStaticMethodCanReturnDefaultOnUnknownValue()
 {
     $random = rand(100, 200);
     $this->assertEquals(SugarArray::staticGet(array(123, 321), 'unknown', $random), $random);
 }
Exemplo n.º 5
0
 /**
  * createQuickSearchCode
  * This function creates the $sqs_objects array that will be used by the quicksearch Javascript
  * code.  The $sqs_objects array is wrapped in a $json->encode call.
  *
  * @param array $def The vardefs.php definitions
  * @param array $defs2 The Meta-Data file definitions
  * @param string $view
  * @param strign $module
  * @return string
  */
 public function createQuickSearchCode($defs, $defs2, $view = '', $module = '')
 {
     $sqs_objects = array();
     require_once 'include/QuickSearchDefaults.php';
     if (isset($this) && $this instanceof TemplateHandler) {
         $qsd = QuickSearchDefaults::getQuickSearchDefaults($this->getQSDLookup());
     } else {
         $qsd = QuickSearchDefaults::getQuickSearchDefaults(array());
     }
     $qsd->setFormName($view);
     if (preg_match('/^SearchForm_.+/', $view)) {
         if (strpos($view, 'popup_query_form')) {
             $qsd->setFormName('popup_query_form');
             $parsedView = 'advanced';
         } else {
             $qsd->setFormName('search_form');
             $parsedView = preg_replace("/^SearchForm_/", "", $view);
         }
         //Loop through the Meta-Data fields to see which ones need quick search support
         foreach ($defs as $f) {
             $field = $f;
             $name = $qsd->form_name . '_' . $field['name'];
             if ($field['type'] == 'relate' && isset($field['module']) && preg_match('/_name$|_c$/si', $name)) {
                 if (preg_match('/^(Campaigns|Teams|Users|Contacts|Accounts)$/si', $field['module'], $matches)) {
                     if ($matches[0] == 'Campaigns') {
                         $sqs_objects[$name . '_' . $parsedView] = $qsd->loadQSObject('Campaigns', 'Campaign', $field['name'], $field['id_name'], $field['id_name']);
                     } else {
                         if ($matches[0] == 'Users') {
                             if (!empty($f['name']) && !empty($f['id_name'])) {
                                 $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSUser($f['name'], $f['id_name']);
                             } else {
                                 $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSUser();
                             }
                         } else {
                             if ($matches[0] == 'Campaigns') {
                                 $sqs_objects[$name . '_' . $parsedView] = $qsd->loadQSObject('Campaigns', 'Campaign', $field['name'], $field['id_name'], $field['id_name']);
                             } else {
                                 if ($matches[0] == 'Accounts') {
                                     $nameKey = $name;
                                     $idKey = isset($field['id_name']) ? $field['id_name'] : 'account_id';
                                     //There are billingKey, shippingKey and additionalFields entries you can define in editviewdefs.php
                                     //entry to allow quick search to autocomplete fields with a suffix value of the
                                     //billing/shippingKey value (i.e. 'billingKey' => 'primary' in Contacts will populate
                                     //primary_XXX fields with the Account's billing address values).
                                     //addtionalFields are key/value pair of fields to fill from Accounts(key) to Contacts(value)
                                     $billingKey = isset($f['displayParams']['billingKey']) ? $f['displayParams']['billingKey'] : null;
                                     $shippingKey = isset($f['displayParams']['shippingKey']) ? $f['displayParams']['shippingKey'] : null;
                                     $additionalFields = isset($f['displayParams']['additionalFields']) ? $f['displayParams']['additionalFields'] : null;
                                     $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSAccount($nameKey, $idKey, $billingKey, $shippingKey, $additionalFields);
                                 } else {
                                     if ($matches[0] == 'Contacts') {
                                         $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSContact($field['name'], $field['id_name']);
                                     }
                                 }
                             }
                         }
                     }
                 } else {
                     $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSParent($field['module']);
                     if (!isset($field['field_list']) && !isset($field['populate_list'])) {
                         $sqs_objects[$name . '_' . $parsedView]['populate_list'] = array($field['name'], $field['id_name']);
                         $sqs_objects[$name . '_' . $parsedView]['field_list'] = array('name', 'id');
                     } else {
                         $sqs_objects[$name . '_' . $parsedView]['populate_list'] = $field['field_list'];
                         $sqs_objects[$name . '_' . $parsedView]['field_list'] = $field['populate_list'];
                     }
                 }
             } else {
                 if ($field['type'] == 'parent') {
                     $sqs_objects[$name . '_' . $parsedView] = $qsd->getQSParent();
                 }
             }
             //if-else
         }
         //foreach
         foreach ($sqs_objects as $name => $field) {
             foreach ($field['populate_list'] as $key => $fieldname) {
                 $sqs_objects[$name]['populate_list'][$key] = $sqs_objects[$name]['populate_list'][$key] . '_' . $parsedView;
             }
         }
     } else {
         //Loop through the Meta-Data fields to see which ones need quick search support
         foreach ($defs2 as $f) {
             if (!isset($defs[$f['name']])) {
                 continue;
             }
             $field = $defs[$f['name']];
             if ($view == "ConvertLead") {
                 $field['name'] = $module . $field['name'];
                 if (!empty($field['id_name'])) {
                     $field['id_name'] = $field['name'] . "_" . $field['id_name'];
                 }
             }
             $name = $qsd->form_name . '_' . $field['name'];
             if ($field['type'] == 'relate' && isset($field['module']) && (preg_match('/_name$|_c$/si', $name) || !empty($field['quicksearch']))) {
                 if (!preg_match('/_c$/si', $name) && (!isset($field['id_name']) || !preg_match('/_c$/si', $field['id_name'])) && preg_match('/^(Campaigns|Teams|Users|Contacts|Accounts)$/si', $field['module'], $matches)) {
                     if ($matches[0] == 'Campaigns') {
                         $sqs_objects[$name] = $qsd->loadQSObject('Campaigns', 'Campaign', $field['name'], $field['id_name'], $field['id_name']);
                     } else {
                         if ($matches[0] == 'Users') {
                             if ($field['name'] == 'reports_to_name') {
                                 $sqs_objects[$name] = $qsd->getQSUser('reports_to_name', 'reports_to_id');
                             } else {
                                 if ($view == "ConvertLead" || $field['name'] == 'created_by_name' || $field['name'] == 'modified_by_name') {
                                     $sqs_objects[$name] = $qsd->getQSUser($field['name'], $field['id_name']);
                                 } else {
                                     $sqs_objects[$name] = $qsd->getQSUser();
                                 }
                             }
                         } else {
                             if ($matches[0] == 'Campaigns') {
                                 $sqs_objects[$name] = $qsd->loadQSObject('Campaigns', 'Campaign', $field['name'], $field['id_name'], $field['id_name']);
                             } else {
                                 if ($matches[0] == 'Accounts') {
                                     $nameKey = $name;
                                     $idKey = isset($field['id_name']) ? $field['id_name'] : 'account_id';
                                     //There are billingKey, shippingKey and additionalFields entries you can define in editviewdefs.php
                                     //entry to allow quick search to autocomplete fields with a suffix value of the
                                     //billing/shippingKey value (i.e. 'billingKey' => 'primary' in Contacts will populate
                                     //primary_XXX fields with the Account's billing address values).
                                     //addtionalFields are key/value pair of fields to fill from Accounts(key) to Contacts(value)
                                     $billingKey = SugarArray::staticGet($f, 'displayParams.billingKey');
                                     $shippingKey = SugarArray::staticGet($f, 'displayParams.shippingKey');
                                     $additionalFields = SugarArray::staticGet($f, 'displayParams.additionalFields');
                                     $sqs_objects[$name] = $qsd->getQSAccount($nameKey, $idKey, $billingKey, $shippingKey, $additionalFields);
                                 } else {
                                     if ($matches[0] == 'Contacts') {
                                         $sqs_objects[$name] = $qsd->getQSContact($field['name'], $field['id_name']);
                                         if (preg_match('/_c$/si', $name) || !empty($field['quicksearch'])) {
                                             $sqs_objects[$name]['field_list'] = array('salutation', 'first_name', 'last_name', 'id');
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 } else {
                     $sqs_objects[$name] = $qsd->getQSParent($field['module']);
                     if (!isset($field['field_list']) && !isset($field['populate_list'])) {
                         $sqs_objects[$name]['populate_list'] = array($field['name'], $field['id_name']);
                         // now handle quicksearches where the column to match is not 'name' but rather specified in 'rname'
                         if (!isset($field['rname'])) {
                             $sqs_objects[$name]['field_list'] = array('name', 'id');
                         } else {
                             $sqs_objects[$name]['field_list'] = array($field['rname'], 'id');
                             $sqs_objects[$name]['order'] = $field['rname'];
                             $sqs_objects[$name]['conditions'] = array(array('name' => $field['rname'], 'op' => 'like_custom', 'end' => '%', 'value' => ''));
                         }
                     } else {
                         $sqs_objects[$name]['populate_list'] = $field['field_list'];
                         $sqs_objects[$name]['field_list'] = $field['populate_list'];
                     }
                 }
             } else {
                 if ($field['type'] == 'parent') {
                     $sqs_objects[$name] = $qsd->getQSParent();
                 }
             }
             //if-else
         }
         //foreach
     }
     //Implement QuickSearch for the field
     if (!empty($sqs_objects) && count($sqs_objects) > 0) {
         $quicksearch_js = '<script language="javascript">';
         $quicksearch_js .= 'if(typeof sqs_objects == \'undefined\'){var sqs_objects = new Array;}';
         $json = getJSONobj();
         foreach ($sqs_objects as $sqsfield => $sqsfieldArray) {
             $quicksearch_js .= "sqs_objects['{$sqsfield}']={$json->encode($sqsfieldArray)};";
         }
         return $quicksearch_js . '</script>';
     }
     return '';
 }
Exemplo n.º 6
0
 /**
  * Go through each of the team_sets_modules and find sets that are no longer in use
  *
  */
 public static function cleanUp()
 {
     $teamSetModule = BeanFactory::getBean('TeamSetModules');
     //maintain a list of the team set ids we would like to remove
     $setsToRemove = array();
     $setsToRemain = array();
     $tsmResult = $teamSetModule->db->query('SELECT team_sets_modules.*  FROM team_sets_modules  where team_sets_modules.deleted=0', true, "Error retrieving TeamSetModule list: ");
     while ($tsmRow = $teamSetModule->db->fetchByAssoc($tsmResult)) {
         //pull off the team_set_id and module and run a query to see if we find if the module is still using this team_set
         //of course we have to be careful not to remove a set before we have gone through all of the modules containing that
         //set otherwise.
         $module_table_name = $tsmRow['module_table_name'];
         $team_set_id = $tsmRow['team_set_id'];
         //if we have a user_preferences table then we do not need to check the db.
         $pos = strpos($module_table_name, 'user_preferences');
         if ($pos !== false) {
             $tokens = explode('-', $module_table_name);
             if (count($tokens) >= 3) {
                 //we did find that this team_set was going to be removed from user_preferences
                 $userPrefResult = $GLOBALS['db']->query("SELECT contents FROM user_preferences WHERE category = '" . $tokens[1] . "' AND deleted = 0", false, 'Failed to load user preferences');
                 while ($userPrefRow = $teamSetModule->db->fetchByAssoc($userPrefResult)) {
                     $prefs = unserialize(base64_decode($userPrefRow['contents']));
                     $team_set_id = SugarArray::staticGet($prefs, implode('.', array_slice($tokens, 2)));
                     if (!empty($team_set_id)) {
                         //this is the team set id that is being used in user preferences we have to be sure to not remove it.
                         $setsToRemain[$team_set_id] = true;
                     }
                 }
                 //end while
             }
             //fi
         } else {
             $query = "SELECT count(*) count FROM {$module_table_name} WHERE" . " team_set_id = '{$team_set_id}' AND deleted = 0";
             $result = $teamSetModule->db->query($query);
             if ($row = $teamSetModule->db->fetchByAssoc($result)) {
                 if (empty($row['count'])) {
                     $setsToRemove[$team_set_id] = true;
                 } else {
                     $setsToRemain[$team_set_id] = true;
                 }
             }
         }
     }
     //compute the difference between the sets that have been designated to remain and those set to remove
     $arrayDiff = array_diff_key($setsToRemove, $setsToRemain);
     //now we have our list of team_set_ids we would like to remove, let's go ahead and do it and remember
     //to update the TeamSetModule table.
     foreach ($arrayDiff as $team_set_id => $key) {
         //1) remove from team_sets_teams
         $query1 = "DELETE FROM team_sets_teams WHERE team_set_id = '{$team_set_id}'";
         $teamSetModule->db->query($query1);
         //2) remove from team_sets
         $query2 = "DELETE FROM team_sets WHERE id = '{$team_set_id}'";
         $teamSetModule->db->query($query2);
         //3) remove from team_sets_modules
         $query3 = "DELETE FROM {$teamSetModule->table_name} WHERE team_set_id = '{$team_set_id}'";
         $teamSetModule->db->query($query3);
     }
     //clear out the cache
     self::flushBackendCache();
 }
Exemplo n.º 7
0
 public function teststaticGet()
 {
     //execute the method and test if it returns expected values
     //test for a top level key
     $haystack = array('key1' => array('key2' => 'value2', 'key3' => 'value3'), 'key4' => 'value4');
     $expected = 'value4';
     $actual = SugarArray::staticGet($haystack, 'key4');
     $this->assertSame($expected, $actual);
     //test for a child level key with dot notation
     $haystack = array('key1' => array('key2' => 'value2', 'key3' => 'value3'), 'key4' => 'value4');
     $expected = 'value3';
     $actual = SugarArray::staticGet($haystack, 'key1.key3');
     $this->assertSame($expected, $actual);
 }