Exemple #1
0
	static function getCurrentUserEntityFieldNameDisplay($module, $fieldsName, $fieldValues) {
		global $current_user;
		if(!is_array($fieldsName)) {
			return $fieldValues[$fieldsName];
		} else {
			$accessibleFieldNames = array();
			foreach($fieldsName as $field) {
				if($module == 'Users' || getColumnVisibilityPermission($current_user->id, $field, $module) == '0') {
					$accessibleFieldNames[] = $fieldValues[$field];
				}
			}
			if(count($accessibleFieldNames) > 0) {
				return implode(' ', $accessibleFieldNames);
			}
		}
		return '';
	}
Exemple #2
0
function get_project_tickets($id, $module, $customerid, $sessionid)
{
    require_once 'modules/HelpDesk/HelpDesk.php';
    require_once 'include/utils/UserInfoUtil.php';
    $adb = PearDatabase::getInstance();
    $log = vglobal('log');
    $log->debug("Entering customer portal function get_project_tickets ..");
    $check = checkModuleActive($module);
    if ($check == false) {
        return array("#MODULE INACTIVE#");
    }
    if (!validateSession($customerid, $sessionid)) {
        return null;
    }
    $user = new Users();
    $userid = getPortalUserid();
    $current_user = $user->retrieveCurrentUserInfoFromFile($userid);
    $focus = new HelpDesk();
    $focus->filterInactiveFields('HelpDesk');
    $TicketsfieldVisibilityByColumn = array();
    $fields_list = array();
    foreach ($focus->list_fields as $fieldlabel => $values) {
        foreach ($values as $table => $fieldname) {
            $fields_list[$fieldlabel] = $fieldname;
            $TicketsfieldVisibilityByColumn[$fieldname] = getColumnVisibilityPermission($current_user->id, $fieldname, 'HelpDesk');
        }
    }
    $query = "SELECT vtiger_troubletickets.*, vtiger_crmentity.smownerid FROM vtiger_troubletickets\n\t\tINNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_troubletickets.ticketid\n\t\tINNER JOIN vtiger_crmentityrel ON (vtiger_crmentityrel.relcrmid = vtiger_crmentity.crmid OR vtiger_crmentityrel.crmid = vtiger_crmentity.crmid)\n\t\tWHERE vtiger_crmentity.deleted = 0 AND (vtiger_crmentityrel.crmid = ? OR vtiger_crmentityrel.relcrmid = ?)";
    $params = array($id, $id);
    $res = $adb->pquery($query, $params);
    $noofdata = $adb->num_rows($res);
    for ($j = 0; $j < $noofdata; $j++) {
        $i = 0;
        foreach ($fields_list as $fieldlabel => $fieldname) {
            $fieldper = $TicketsfieldVisibilityByColumn[$fieldname];
            //in troubletickets the list_fields has columns so we call this API
            if ($fieldper == '1') {
                continue;
            }
            $output[0][$module]['head'][0][$i]['fielddata'] = Vtiger_Language_Handler::getTranslatedString($fieldlabel, 'HelpDesk', vglobal('default_language'));
            $fieldvalue = $adb->query_result($res, $j, $fieldname);
            $ticketid = $adb->query_result($res, $j, 'ticketid');
            if ($fieldname == 'title') {
                $fieldvalue = '<a href="index.php?module=HelpDesk&action=index&fun=detail&ticketid=' . $ticketid . '">' . $fieldvalue . '</a>';
            }
            if ($fieldname == 'parent_id' || $fieldname == 'contact_id') {
                $crmid = $fieldvalue;
                $entitymodule = getSalesEntityType($crmid);
                if ($crmid != '' && $entitymodule != '') {
                    $fieldvalues = getEntityName($entitymodule, array($crmid));
                    if ($entitymodule == 'Contacts') {
                        $fieldvalue = '<a href="index.php?module=Contacts&action=index&id=' . $crmid . '">' . $fieldvalues[$crmid] . '</a>';
                    } elseif ($entitymodule == 'Accounts') {
                        $fieldvalue = '<a href="index.php?module=Accounts&action=index&id=' . $crmid . '">' . $fieldvalues[$crmid] . '</a>';
                    }
                } else {
                    $fieldvalue = '';
                }
            }
            if ($fieldname == 'smownerid') {
                $fieldvalue = getOwnerName($fieldvalue);
            }
            if ($fieldlabel == 'Status') {
                $fieldvalue = Vtiger_Language_Handler::getTranslatedString($fieldvalue, 'HelpDesk', vglobal('default_language'));
            }
            $output[1][$module]['data'][$j][$i]['fielddata'] = $fieldvalue;
            $i++;
        }
    }
    $log->debug("Exiting customerportal function  get_project_tickets ..");
    return $output;
}
/**
 * Get PriceBook list
 * 
 * @param array $input_array    input data
 * @return array                resulted data
 */
function get_pricebooks_list($input_array)
{
    require_once 'modules/PriceBooks/PriceBooks.php';
    require_once 'include/utils/UserInfoUtil.php';
    global $adb, $log;
    global $current_user;
    require_once 'modules/Users/Users.php';
    $log->debug("Entering customer portal function get_pricebooks_list");
    $user = new Users();
    $userid = getPortalUserid();
    $show_all = show_all('PriceBooks');
    $current_user = $user->retrieveCurrentUserInfoFromFile($userid);
    $id = $input_array['id'];
    $only_mine = $input_array['onlymine'];
    $only_base = $input_array['onlybase'];
    $sessionid = $input_array['sessionid'];
    if (!validateSession($id, $sessionid)) {
        return null;
    }
    $entity_ids_list = array();
    if ($only_mine == 'true') {
        array_push($entity_ids_list, $id);
    } else {
        // TODO
    }
    $focus = new PriceBooks();
    $focus->filterInactiveFields('PriceBooks');
    foreach ($focus->list_fields as $fieldlabel => $values) {
        foreach ($values as $table => $fieldname) {
            $fields_list[$fieldlabel] = $fieldname;
        }
    }
    $FieldVisibilityByColumn = array();
    foreach ($fields_list as $fieldlabel => $fieldname) {
        $FieldVisibilityByColumn[$fieldname] = getColumnVisibilityPermission($current_user->id, $fieldname, 'PriceBooks');
    }
    // PriceBooks items selection
    $query = "SELECT * FROM vtiger_pricebook " . "INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_pricebook.pricebookid AND vtiger_crmentity.deleted = 0 " . "WHERE active = 1 ";
    if (count($entity_ids_list) > 0) {
        $query .= "AND owner_id IN (" . generateQuestionMarks($entity_ids_list) . ")";
    }
    $params = array($entity_ids_list);
    $res = $adb->pquery($query, $params);
    $noofdata = $adb->num_rows($res);
    for ($j = 0; $j < $noofdata; $j++) {
        $i = 0;
        foreach ($fields_list as $fieldlabel => $fieldname) {
            if (strcmp($fieldname, 'active') == 0) {
                continue;
            }
            $fieldper = $FieldVisibilityByColumn[$fieldname];
            if ($fieldper == '1') {
                continue;
            }
            $output[0]['head'][0][$i]['fielddata'] = $fieldlabel;
            $fieldvalue = $adb->query_result($res, $j, $fieldname);
            $pricebookid = $adb->query_result($res, $j, 'pricebookid');
            if ($fieldname == 'bookname') {
                $fieldvalue = '<a href="index.php?module=PriceBooks&action=index&fun=detail&pricebookid=' . $pricebookid . '">' . $fieldvalue . '</a>';
            }
            if ($fieldname == 'owner_id') {
                // TODO
            }
            $output[1]['data'][$j][$i]['fielddata'] = $fieldvalue;
            $i++;
        }
    }
    $log->debug("Exiting customer portal function get_pricebooks_list");
    return $output;
}
 private function getColumnVisibilityPerm($column_str = "")
 {
     $return = 0;
     $adb = PearDatabase::getInstance();
     $die_columns = array();
     $user_privileges_path = 'user_privileges/user_privileges_' . $this->current_user->id . '.php';
     if (file_exists($user_privileges_path)) {
         require $user_privileges_path;
     }
     if (file_exists($user_privileges_path) && ($is_admin == true || $profileGlobalPermission[1] == 0 || $profileGlobalPermission[2] == 0)) {
         return $return;
     } else {
         if ($column_str != "") {
             $current_user_id = $this->current_user->id;
             $column_array = explode(":", $column_str);
             $calculation_type_tmp = $column_array[count($column_array) - 1];
             $calculation_type = strtolower($calculation_type_tmp);
             if (!in_array($calculation_type, $this->calculation_type_array)) {
                 $calculation_type = "";
             }
             if ($calculation_type == "count") {
                 $return = 0;
             } else {
                 $column_name = $column_array[1];
                 if (!in_array($column_name, self::$intentory_fields)) {
                     $module_array = explode("_", $column_array[2]);
                     $module_name = $module_array[0];
                     if ($module_name == "Calendar") {
                         $f_p_sql = "SELECT tabid FROM vtiger_field WHERE columnname=?";
                         $f_p_result = $adb->pquery($f_p_sql, array($column_name));
                         if ($adb->num_rows($f_p_result) > 0) {
                             $f_p_row = $adb->fetchByAssoc($f_p_result);
                             $f_p_tabid = $f_p_row["tabid"];
                             $module_name = vtlib_getModuleNameById($f_p_tabid);
                         }
                     }
                     $return = getColumnVisibilityPermission($current_user_id, $column_name, $module_name);
                     /* if($return==1){
                        $die_columns[] = $column_name;
                        } */
                 }
             }
         }
         if ($return == 1) {
             $this->DieDuePermission("columns", $die_columns);
         }
     }
     return $return;
 }
/**	function used to get the Quotes/Invoice List
 *	@param int $id - id -Contactid
 *	return string $output - Quotes/Invoice list Array
 */
function get_list_values($id, $module, $sessionid, $only_mine = 'true')
{
    require_once 'modules/' . $module . '/' . $module . '.php';
    require_once 'include/utils/UserInfoUtil.php';
    require_once 'modules/Users/Users.php';
    global $adb, $log, $current_user;
    $log->debug("Entering customer portal function get_list_values");
    $check = checkModuleActive($module);
    if ($check == false) {
        return array("#MODULE INACTIVE#");
    }
    $user = new Users();
    $userid = getPortalUserid();
    $current_user = $user->retrieveCurrentUserInfoFromFile($userid);
    $focus = new $module();
    $focus->filterInactiveFields($module);
    foreach ($focus->list_fields as $fieldlabel => $values) {
        foreach ($values as $table => $fieldname) {
            $fields_list[$fieldlabel] = $fieldname;
        }
    }
    if (!validateSession($id, $sessionid)) {
        return null;
    }
    $entity_ids_list = array();
    $show_all = show_all($module);
    if ($only_mine == 'true' || $show_all == 'false') {
        array_push($entity_ids_list, $id);
    } else {
        $contactquery = "SELECT contactid, accountid FROM vtiger_contactdetails " . " INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid = vtiger_contactdetails.contactid" . " AND vtiger_crmentity.deleted = 0 " . " WHERE (accountid = (SELECT accountid FROM vtiger_contactdetails WHERE contactid = ?)  AND accountid != 0) OR contactid = ?";
        $contactres = $adb->pquery($contactquery, array($id, $id));
        $no_of_cont = $adb->num_rows($contactres);
        for ($i = 0; $i < $no_of_cont; $i++) {
            $cont_id = $adb->query_result($contactres, $i, 'contactid');
            $acc_id = $adb->query_result($contactres, $i, 'accountid');
            if (!in_array($cont_id, $entity_ids_list)) {
                $entity_ids_list[] = $cont_id;
            }
            if (!in_array($acc_id, $entity_ids_list) && $acc_id != '0') {
                $entity_ids_list[] = $acc_id;
            }
        }
    }
    if ($module == 'Quotes') {
        $query = "select distinct vtiger_quotes.*,vtiger_crmentity.smownerid,\n\t\tcase when vtiger_quotes.contactid is not null then vtiger_quotes.contactid else vtiger_quotes.accountid end as entityid,\n\t\tcase when vtiger_quotes.contactid is not null then 'Contacts' else 'Accounts' end as setype,\n\t\tvtiger_potential.potentialname,vtiger_account.accountid \n\t\tfrom vtiger_quotes left join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_quotes.quoteid \n\t\tLEFT OUTER JOIN vtiger_account\n\t\tON vtiger_account.accountid = vtiger_quotes.accountid\n\t\tLEFT OUTER JOIN vtiger_potential\n\t\tON vtiger_potential.potentialid = vtiger_quotes.potentialid \n\t\twhere vtiger_crmentity.deleted=0 and (vtiger_quotes.accountid in  (" . generateQuestionMarks($entity_ids_list) . ") or contactid in (" . generateQuestionMarks($entity_ids_list) . "))";
        $params = array($entity_ids_list, $entity_ids_list);
        $fields_list['Related To'] = 'entityid';
    } else {
        if ($module == 'Invoice') {
            $query = "select distinct vtiger_invoice.*,vtiger_crmentity.smownerid,\n\t\tcase when vtiger_invoice.contactid !=0 then vtiger_invoice.contactid else vtiger_invoice.accountid end as entityid,\n\t\tcase when vtiger_invoice.contactid !=0 then 'Contacts' else 'Accounts' end as setype\n\t\tfrom vtiger_invoice \n\t\tleft join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_invoice.invoiceid \n\t\twhere vtiger_crmentity.deleted=0 and (accountid in (" . generateQuestionMarks($entity_ids_list) . ") or contactid in  (" . generateQuestionMarks($entity_ids_list) . "))";
            $params = array($entity_ids_list, $entity_ids_list);
            $fields_list['Related To'] = 'entityid';
        } else {
            if ($module == 'Documents') {
                $query = "select vtiger_notes.*, vtiger_crmentity.*, vtiger_senotesrel.crmid as entityid, '' as setype,vtiger_attachmentsfolder.foldername from vtiger_notes " . "inner join vtiger_crmentity on vtiger_crmentity.crmid = vtiger_notes.notesid " . "left join vtiger_senotesrel on vtiger_senotesrel.notesid=vtiger_notes.notesid " . "LEFT JOIN vtiger_attachmentsfolder ON vtiger_attachmentsfolder.folderid = vtiger_notes.folderid " . "where vtiger_crmentity.deleted = 0 and  vtiger_senotesrel.crmid in (" . generateQuestionMarks($entity_ids_list) . ")";
                $params = array($entity_ids_list);
                $fields_list['Related To'] = 'entityid';
            } else {
                if ($module == 'Contacts') {
                    $query = "select vtiger_contactdetails.*,vtiger_crmentity.smownerid from vtiger_contactdetails\n\t\t inner join vtiger_crmentity on vtiger_crmentity.crmid=vtiger_contactdetails.contactid\n\t\t where vtiger_crmentity.deleted = 0 and contactid IN (" . generateQuestionMarks($entity_ids_list) . ")";
                    $params = array($entity_ids_list);
                }
            }
        }
    }
    $res = $adb->pquery($query, $params);
    $noofdata = $adb->num_rows($res);
    $columnVisibilityByFieldnameInfo = array();
    if ($noofdata) {
        foreach ($fields_list as $fieldlabel => $fieldname) {
            $columnVisibilityByFieldnameInfo[$fieldname] = getColumnVisibilityPermission($current_user->id, $fieldname, $module);
        }
    }
    for ($j = 0; $j < $noofdata; $j++) {
        $i = 0;
        foreach ($fields_list as $fieldlabel => $fieldname) {
            $fieldper = $columnVisibilityByFieldnameInfo[$fieldname];
            if ($fieldper == '1' && $fieldname != 'entityid') {
                continue;
            }
            $fieldlabel = getTranslatedString($fieldlabel, $module);
            $output[0][$module]['head'][0][$i]['fielddata'] = $fieldlabel;
            $fieldvalue = $adb->query_result($res, $j, $fieldname);
            if ($module == 'Quotes') {
                if ($fieldname == 'subject') {
                    $fieldid = $adb->query_result($res, $j, 'quoteid');
                    $filename = $fieldid . '_Quotes.pdf';
                    $fieldvalue = '<a href="index.php?&module=Quotes&action=index&id=' . $fieldid . '">' . $fieldvalue . '</a>';
                }
                if ($fieldname == 'total') {
                    $sym = getCurrencySymbol($res, $j, 'currency_id');
                    $fieldvalue = $sym . $fieldvalue;
                }
            }
            if ($module == 'Invoice') {
                if ($fieldname == 'subject') {
                    $fieldid = $adb->query_result($res, $j, 'invoiceid');
                    $filename = $fieldid . '_Invoice.pdf';
                    $fieldvalue = '<a href="index.php?&module=Invoice&action=index&status=true&id=' . $fieldid . '">' . $fieldvalue . '</a>';
                }
                if ($fieldname == 'total') {
                    $sym = getCurrencySymbol($res, $j, 'currency_id');
                    $fieldvalue = $sym . $fieldvalue;
                }
            }
            if ($module == 'Documents') {
                if ($fieldname == 'title') {
                    $fieldid = $adb->query_result($res, $j, 'notesid');
                    $fieldvalue = '<a href="index.php?&module=Documents&action=index&id=' . $fieldid . '">' . $fieldvalue . '</a>';
                }
                if ($fieldname == 'filename') {
                    $fieldid = $adb->query_result($res, $j, 'notesid');
                    $filename = $fieldvalue;
                    $folderid = $adb->query_result($res, $j, 'folderid');
                    $filename = $adb->query_result($res, $j, 'filename');
                    $fileactive = $adb->query_result($res, $j, 'filestatus');
                    $filetype = $adb->query_result($res, $j, 'filelocationtype');
                    if ($fileactive == 1) {
                        if ($filetype == 'I') {
                            $fieldvalue = '<a href="index.php?&downloadfile=true&folderid=' . $folderid . '&filename=' . $filename . '&module=Documents&action=index&id=' . $fieldid . '">' . $fieldvalue . '</a>';
                        } elseif ($filetype == 'E') {
                            $fieldvalue = '<a target="_blank" href="' . $filename . '" onclick = "updateCount(' . $fieldid . ');">' . $filename . '</a>';
                        }
                    } else {
                        $fieldvalue = $filename;
                    }
                }
                if ($fieldname == 'folderid') {
                    $fieldvalue = $adb->query_result($res, $j, 'foldername');
                }
            }
            if ($module == 'Invoice' && $fieldname == 'salesorderid') {
                if ($fieldvalue != '') {
                    $fieldvalue = get_salesorder_name($fieldvalue);
                }
            }
            if ($module == 'Services') {
                if ($fieldname == 'servicename') {
                    $fieldid = $adb->query_result($res, $j, 'serviceid');
                    $fieldvalue = '<a href="index.php?module=Services&action=index&id=' . $fieldid . '">' . $fieldvalue . '</a>';
                }
                if ($fieldname == 'discontinued') {
                    if ($fieldvalue == 1) {
                        $fieldvalue = 'Yes';
                    } else {
                        $fieldvalue = 'No';
                    }
                }
                if ($fieldname == 'unit_price') {
                    $sym = getCurrencySymbol($res, $j, 'currency_id');
                    $fieldvalue = $sym . $fieldvalue;
                }
            }
            if ($module == 'Contacts') {
                if ($fieldname == 'lastname' || $fieldname == 'firstname') {
                    $fieldid = $adb->query_result($res, $j, 'contactid');
                    $fieldvalue = '<a href="index.php?module=Contacts&action=index&id=' . $fieldid . '">' . $fieldvalue . '</a>';
                }
            }
            if ($fieldname == 'entityid' || $fieldname == 'contactid' || $fieldname == 'accountid' || $fieldname == 'potentialid') {
                $crmid = $fieldvalue;
                $modulename = getSalesEntityType($crmid);
                if ($crmid != '' && $modulename != '') {
                    $fieldvalues = getEntityName($modulename, array($crmid));
                    if ($modulename == 'Contacts') {
                        $fieldvalue = '<a href="index.php?module=Contacts&action=index&id=' . $crmid . '">' . $fieldvalues[$crmid] . '</a>';
                    } elseif ($modulename == 'Accounts') {
                        $fieldvalue = '<a href="index.php?module=Accounts&action=index&id=' . $crmid . '">' . $fieldvalues[$crmid] . '</a>';
                    } elseif ($modulename == 'Potentials') {
                        $fieldvalue = $adb->query_result($res, $j, 'potentialname');
                    }
                } else {
                    $fieldvalue = '';
                }
            }
            if ($fieldname == 'smownerid') {
                $fieldvalue = getOwnerName($fieldvalue);
            }
            $output[1][$module]['data'][$j][$i]['fielddata'] = $fieldvalue;
            $i++;
        }
    }
    $log->debug("Exiting customer portal function get_list_values");
    return $output;
}