Advertisement
binizik

Untitled

Jul 24th, 2016
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.86 KB | None | 0 0
  1. ####  /modules/Contacts/Contacts.php
  2.  
  3.  
  4. //PINstudio copy from Accounts to handle Calls list
  5.     /**
  6.      * Function to handle the dependents list for the module.
  7.      * NOTE: UI type '10' is used to stored the references to other modules for a given record.
  8.      * These dependent records can be retrieved through this function.
  9.      * For eg: A trouble ticket can be related to an Account or a Contact.
  10.      * From a given Contact/Account if we need to fetch all such dependent trouble tickets, get_dependents_list function can be used.
  11.      */
  12.     function get_dependents_list($id, $cur_tab_id, $rel_tab_id, $actions = false) {
  13.  
  14.         global $currentModule, $app_strings, $singlepane_view, $current_user;
  15.  
  16.         $parenttab = getParentTab();
  17.  
  18.         $related_module = vtlib_getModuleNameById($rel_tab_id);
  19.         $other = CRMEntity::getInstance($related_module);
  20.  
  21.         // Some standard module class doesn't have required variables
  22.         // that are used in the query, they are defined in this generic API
  23.         vtlib_setup_modulevars($currentModule, $this);
  24.         vtlib_setup_modulevars($related_module, $other);
  25.  
  26.         $singular_modname = 'SINGLE_' . $related_module;
  27.         $button = '';
  28.  
  29.         // To make the edit or del link actions to return back to same view.
  30.         if ($singlepane_view == 'true')
  31.             $returnset = "&return_module=$currentModule&return_action=DetailView&return_id=$id";
  32.         else
  33.             $returnset = "&return_module=$currentModule&return_action=CallRelatedList&return_id=$id";
  34.  
  35.         $return_value = null;
  36.         $dependentFieldSql = $this->db->pquery("SELECT tabid, fieldname, columnname, tablename FROM vtiger_field WHERE uitype='10' AND" .
  37.                 " fieldid IN (SELECT fieldid FROM vtiger_fieldmodulerel WHERE relmodule=? AND module=?)", array($currentModule, $related_module));
  38.         $numOfFields = $this->db->num_rows($dependentFieldSql);
  39.  
  40.         if ($numOfFields > 0) {
  41.             $dependentColumn = $this->db->query_result($dependentFieldSql, 0, 'columnname');
  42.             $dependentField = $this->db->query_result($dependentFieldSql, 0, 'fieldname');
  43.             //PINstudio added
  44.             $dependentTable = $this->db->query_result($dependentFieldSql, 0, 'tablename');
  45.            
  46.             $button .= '<input type="hidden" name="' . $dependentColumn . '" id="' . $dependentColumn . '" value="' . $id . '">';
  47.             $button .= '<input type="hidden" name="' . $dependentColumn . '_type" id="' . $dependentColumn . '_type" value="' . $currentModule . '">';
  48.             if ($actions) {
  49.                 if (is_string($actions))
  50.                     $actions = explode(',', strtoupper($actions));
  51.                 if (in_array('ADD', $actions) && isPermitted($related_module, 1, '') == 'yes'
  52.                         && getFieldVisibilityPermission($related_module, $current_user->id, $dependentField, 'readwrite') == '0') {
  53.                     $button .= "<input title='" . getTranslatedString('LBL_ADD_NEW') . " " . getTranslatedString($singular_modname, $related_module) . "' class='crmbutton small create'" .
  54.                             " onclick='this.form.action.value=\"EditView\";this.form.module.value=\"$related_module\"' type='submit' name='button'" .
  55.                             " value='" . getTranslatedString('LBL_ADD_NEW') . " " . getTranslatedString($singular_modname, $related_module) . "'>&nbsp;";
  56.                 }
  57.             }
  58.  
  59.             $entityIds = $id;//$this->getRelatedContactsIds();
  60.             //array_push($entityIds, $id);
  61.             //$entityIds = implode(',', $entityIds);
  62.  
  63.             $userNameSql = getSqlForNameInDisplayFormat(array('first_name'=>'vtiger_users.first_name','last_name' => 'vtiger_users.last_name'), 'Users');
  64.  
  65.             $query = "SELECT vtiger_crmentity.*, $other->table_name.*";
  66.             $query .= ", CASE WHEN (vtiger_users.user_name NOT LIKE '') THEN $userNameSql ELSE vtiger_groups.groupname END AS user_name";
  67.  
  68.             $more_relation = '';
  69.             if (!empty($other->related_tables)) {
  70.                 foreach ($other->related_tables as $tname => $relmap) {
  71.                     $query .= ", $tname.*";
  72.  
  73.                     // Setup the default JOIN conditions if not specified
  74.                     if (empty($relmap[1]))
  75.                         $relmap[1] = $other->table_name;
  76.                     if (empty($relmap[2]))
  77.                         $relmap[2] = $relmap[0];
  78.                     $more_relation .= " LEFT JOIN $tname ON $tname.$relmap[0] = $relmap[1].$relmap[2]";
  79.                 }
  80.             }
  81.  
  82.             $query .= " FROM $other->table_name";
  83.             $query .= " INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = $other->table_name.$other->table_index";
  84.             $query .= $more_relation;
  85.             $query .= " LEFT JOIN vtiger_users ON vtiger_users.id = vtiger_crmentity.smownerid";
  86.             $query .= " LEFT JOIN vtiger_groups ON vtiger_groups.groupid = vtiger_crmentity.smownerid";
  87.             //$query .= " WHERE vtiger_crmentity.deleted = 0 AND $other->table_name.$dependentColumn IN (".$entityIds.")";
  88.  
  89.             $query .= " WHERE vtiger_crmentity.deleted = 0 AND $dependentTable.$dependentColumn IN (".$entityIds.")"; //PINSTUDIO added, to use right table to look for dependent field
  90.  
  91.             $return_value = GetRelatedList($currentModule, $related_module, $other, $query, $button, $returnset);
  92.         }
  93.         if ($return_value == null)
  94.             $return_value = Array();
  95.         $return_value['CUSTOM_BUTTON'] = $button;
  96.  
  97.         return $return_value;
  98.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement