Esempio n. 1
0
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
}
Esempio n. 2
0
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
}