function process_action_new_rel($focus, $action_array) { ///Build the relationship information using the Relationship handler $rel_handler = $focus->call_relationship_handler("module_dir", true); $rel_handler->set_rel_vardef_fields($action_array['rel_module'], $action_array['action_module']); //$rel_handler->base_bean = & $focus; $rel_handler->build_info(true); //get related bean $rel_list = $rel_handler->build_related_list("base"); if (!empty($_REQUEST['massupdate']) && $_REQUEST['massupdate'] == 'true') { $check_notify = false; } else { $check_notify = true; } //All, first, filter (FIRST) if (!empty($rel_list[0])) { $rel_list = process_rel_type("rel_module_type", "rel_filter", $rel_list, $action_array); foreach ($rel_list as $rel_object) { //Connect new module to the first related bean. $rel_handler2 = $rel_object->call_relationship_handler("module_dir", true); //$rel_handler->base_bean = & $rel_object; $rel_handler2->get_relationship_information($rel_handler->rel2_bean, true); //get_relationship_information($rel_handler->rel2_bean, $rel_object); $target_module =& $rel_handler->rel2_bean; foreach ($action_array['basic'] as $field => $new_value) { if (isset($target_module->field_defs[$field]['type']) && $target_module->field_defs[$field]['type'] === 'multienum') { $new_value = workflow_convert_multienum_value($new_value); } $target_module->{$field} = convert_bool($new_value, $target_module->field_defs[$field]['type']); if ($field == "email1") { $target_module->email1_set_in_workflow = $target_module->email1; } if ($field == "email2") { $target_module->email2_set_in_workflow = $target_module->email2; } //end foreach value } foreach ($action_array['basic_ext'] as $field => $new_value) { //Only here if there is a datetime. if ($new_value == 'Triggered Date') { $target_module->{$field} = get_expiry_date(get_field_type($target_module->field_defs[$field]), $action_array['basic'][$field], true); if ($target_module->field_defs[$field]['type'] == 'date' && !empty($target_module->field_defs[$field]['rel_field'])) { $rel_field = $target_module->field_defs[$field]['rel_field']; $target_module->{$rel_field} = get_expiry_date('time', $action_array['basic'][$field], true); } } } foreach ($action_array['advanced'] as $field => $meta_array) { $new_value = process_advanced_actions($focus, $field, $meta_array, $target_module); $target_module->{$field} = $new_value; } clean_save_data($target_module, $action_array); //BEGIN BRIDGING FOR MEETINGS/CALLS if (!empty($action_array['bridge_id']) && $action_array['bridge_id'] != "") { $target_module->bridge_id = $action_array['bridge_id']; $target_module->bridge_object = $focus; } //END BRIDGING FOR MEETINGS/CALLS if ($focus->object_name == $target_module->object_name) { $target_module->processed = true; } $target_module->in_workflow = true; $target_module->not_use_rel_in_req = true; $target_module->save($check_notify); //end for loop of all,first, filter } //end if a related record exists to connect this item too. } //end function_action_new_rel }
function reconstruct_target_body($focus, $target_body, $component_array, $notify_user_id = "", $alert_user_array = array()) { global $beanList; $replace_array = array(); foreach ($component_array as $module_name => $module_array) { if ($module_name == $focus->module_dir) { //base module foreach ($module_array as $field => $field_array) { if ($field_array['value_type'] == 'href_link') { //Create href link to target record $replacement_value = get_href_link($focus); } if ($field_array['value_type'] == 'invite_link') { //Create href link to target record $replacement_value = get_invite_link($focus, $notify_user_id); } if ($field_array['value_type'] == 'future') { $replacement_value = check_special_fields($field_array['name'], $focus, false, array()); } if ($field_array['value_type'] == 'past') { $replacement_value = check_special_fields($field_array['name'], $focus, true, array()); } $replace_array[$field_array['original']] = $replacement_value; //end foreach module_array } //end if base module array } else { //Confirm this is an actual module in the beanlist if (isset($beanList[$module_name]) || isset($focus->field_defs[$module_name])) { ///Build the relationship information using the Relationship handler $rel_handler = $focus->call_relationship_handler("module_dir", true); if (isset($focus->field_defs[$module_name])) { $rel_handler->rel1_relationship_name = $focus->field_defs[$module_name]['relationship']; $rel_module = get_rel_module_name($focus->module_dir, $rel_handler->rel1_relationship_name, $focus->db); $rel_handler->rel1_module = $rel_module; $rel_handler->rel1_bean = BeanFactory::getBean($rel_module); } else { $rel_handler->process_by_rel_bean($module_name); } foreach ($focus->field_defs as $field => $attribute_array) { if (!empty($attribute_array['relationship']) && $attribute_array['relationship'] == $rel_handler->rel1_relationship_name) { //$relationship_name = $field; $rel_handler->base_vardef_field = $field; break; } } //obtain the rel_module object $rel_list = $rel_handler->build_related_list("base"); foreach ($alert_user_array as $user_meta_array) { ////Filter the first related module $rel_list = process_rel_type("rel_module1_type", "rel1_filter", $rel_list, $user_meta_array); ////Filter using second filter if necessary if (!empty($user_meta_array['expression']) && $user_meta_array['rel_module2'] == "") { $rel_list = process_rel_type("filter", "expression", $rel_list, $user_meta_array, true); //end second filter if necessary } } //$rel_list = $focus->get_linked_beans($relationship_name, $bean_name); if (!empty($rel_list[0])) { $rel_object = $rel_list[0]; $rel_module_present = true; } else { $rel_module_present = false; } foreach ($module_array as $field => $field_array) { if ($rel_module_present == true) { if ($field_array['value_type'] == 'href_link') { //Create href link to target record $replacement_value = get_href_link($rel_object); } elseif ($field_array['value_type'] == 'invite_link') { //Create href link to target record $replacement_value = get_invite_link($rel_object, $notify_user_id); } else { //use future always for rel because fetched should always be the same $replacement_value = check_special_fields($field_array['name'], $rel_object, false, array()); } } else { $replacement_value = "Invalid Value"; } $replace_array[$field_array['original']] = $replacement_value; //end foreach module_array } //end check to see if this is an actual module in the beanlist } //end if else base or related module array } //end outside foreach } $parsed_target_body = replace_target_body_items($target_body, $replace_array); return $parsed_target_body; //end function reconstruct_target_body }