예제 #1
0
 /**
  * Main function for generate report (generate value of fields for current record).
  * Return values of all fields in $fields_name array
  * @param SugarBean $bean
  * 	bean class for get value fields
  * @param array $fields_name
  *  array with name of fields (supported format ModuleName::FieldName or simple FieldName)
  * @return string[]
  *  array with keys - name of fields, values - value of this fields
  */
 public static function define_fields_value($bean, $fields_name)
 {
     global $beanList;
     $fields = array();
     if (empty($bean->id)) {
         return $fields;
     }
     foreach ($fields_name as $key) {
         // in template can be reused variable, don't generate value again
         if (isset($fields[$key])) {
             continue;
         }
         /** it's value of related field */
         if (strpos($key, '.') !== FALSE) {
             list($module_name, $field_name) = explode('.', $key, 2);
             if (!isset($beanList[$module_name])) {
                 continue;
             }
             if (!isset($fields[$module_name])) {
                 $fields[$module_name] = array();
             }
             require_once 'modules/Relationships/RelationshipHandler.php';
             $rel_handler = new RelationshipHandler($bean->db, $bean->module_dir);
             $rel_handler->base_bean =& $bean;
             $rel_handler->process_by_rel_bean($module_name);
             foreach ($bean->field_defs as $field => $attribute_array) {
                 if (!empty($attribute_array['relationship']) && $attribute_array['relationship'] == $rel_handler->rel1_relationship_name) {
                     $rel_handler->base_vardef_field = $field;
                     break;
                 }
             }
             $rel_list = $rel_handler->build_related_list("base");
             if (empty($rel_list)) {
                 $rel_list = self::searchOneToManyInOneModule($rel_handler);
             }
             if (!empty($rel_list[0])) {
                 foreach ($rel_list as $seed) {
                     $value = self::getValueBean($seed, $field_name);
                     if (!isset($fields[$module_name][$seed->id])) {
                         $fields[$module_name][$seed->id] = array();
                     }
                     $fields[$module_name][$seed->id][$field_name] = $value;
                 }
             } else {
                 $fields[$module_name][0][$field_name] = '';
             }
         } else {
             $value = self::getValueBean($bean, $key);
             $fields[$key] = $value;
         }
     }
     return $fields;
 }
예제 #2
0
 /** To get the link name used to call load_relationship */
 function getLinkName($this_module, $rel_module)
 {
     $GLOBALS['log']->debug("SecurityGroup->getLinkName this_module: {$this_module} rel_module: {$rel_module}");
     include_once 'modules/Relationships/RelationshipHandler.php';
     $rh = new RelationshipHandler($GLOBALS['db'], $this_module);
     $rh->process_by_rel_bean($rel_module);
     $rh->build_info();
     $rh->get_rel1_vardef_field_base($rh->base_bean->field_defs);
     return $rh->rel1_vardef_field_base;
 }
예제 #3
0
 /** To get the link name used to call load_relationship */
 function getLinkName($this_module, $rel_module)
 {
     include_once 'modules/Relationships/RelationshipHandler.php';
     $rh = new RelationshipHandler($GLOBALS['db'], $this_module);
     $rh->process_by_rel_bean($rel_module);
     $rh->build_info();
     $rh->get_rel1_vardef_field_base($rh->base_bean->field_defs);
     return $rh->rel1_vardef_field_base;
 }