예제 #1
0
 public function initForGlobalSearchByType($type, $value, $operator = 's')
 {
     $fieldList = $this->meta->getFieldNameListByType($type);
     if ($this->conditionInstanceCount <= 0) {
         $this->startGroup('');
     } else {
         $this->startGroup(self::$AND);
     }
     $nameFieldList = explode(',', $this->getModuleNameFields($this->module));
     foreach ($nameFieldList as $nameList) {
         $field = $this->meta->getFieldByColumnName($nameList);
         $this->fields[] = $field->getFieldName();
     }
     foreach ($fieldList as $index => $field) {
         $fieldName = $this->meta->getFieldByColumnName($field);
         $this->fields[] = $fieldName->getFieldName();
         if ($index > 0) {
             $this->addConditionGlue(self::$OR);
         }
         $this->addCondition($fieldName->getFieldName(), $value, $operator);
     }
     $this->endGroup();
     if (!in_array('id', $this->fields)) {
         $this->fields[] = 'id';
     }
 }
 public function retrieveMeta()
 {
     parent::retrieveMeta();
     $this->retrieveMetaForTables();
 }
예제 #3
0
파일: Emails.php 프로젝트: kduqi/corebos
/** Function to get the emailids for the given ids form the request parameters
 *  It returns an array which contains the mailids and the parentidlists
 */
function get_to_emailids($module)
{
    global $adb, $current_user, $log;
    require_once 'include/Webservices/Query.php';
    //$idlists1 = "";
    $mailds = '';
    if (empty($_REQUEST['field_lists'])) {
        switch ($module) {
            case 'Accounts':
                $_REQUEST["field_lists"] = 9;
                break;
            case 'Contacts':
                $_REQUEST["field_lists"] = 80;
                break;
            case 'Vendors':
                $_REQUEST["field_lists"] = 292;
                break;
        }
    }
    $fieldids = explode(":", vtlib_purify($_REQUEST['field_lists']));
    if ($_REQUEST['idlist'] == 'all' || $_REQUEST['idlist'] == 'relatedListSelectAll') {
        $idlist = getSelectedRecords($_REQUEST, vtlib_purify($_REQUEST['pmodule']), vtlib_purify($_REQUEST['idlist']), vtlib_purify($_REQUEST['excludedRecords']));
    } else {
        $idlist = explode(":", str_replace("undefined", "", vtlib_purify($_REQUEST['idlist'])));
    }
    $entityids = array();
    foreach ($idlist as $key => $id) {
        $entityids[] = vtws_getWebserviceEntityId($module, $id);
    }
    $vtwsObject = VtigerWebserviceObject::fromName($adb, $module);
    $vtwsCRMObjectMeta = new VtigerCRMObjectMeta($vtwsObject, $current_user);
    $emailFields = $vtwsCRMObjectMeta->getEmailFields();
    foreach ($emailFields as $key => $fieldname) {
        $fieldid = $vtwsCRMObjectMeta->getFieldIdFromFieldName($fieldname);
        if (!in_array($fieldid, $fieldids)) {
            unset($emailFields[$key]);
        }
    }
    if (empty($emailFields)) {
        return false;
    }
    if ($module == 'Leads') {
        $query = 'SELECT firstname,lastname,' . implode(",", $emailFields) . ',vtiger_leaddetails.leadid as id
				  FROM vtiger_leaddetails
				  INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_leaddetails.leadid
				  LEFT JOIN vtiger_leadscf ON vtiger_leaddetails.leadid = vtiger_leadscf.leadid
				  WHERE vtiger_crmentity.deleted=0 AND vtiger_leaddetails.leadid IN (' . generateQuestionMarks($idlist) . ')';
    } else {
        if ($module == 'Contacts') {
            $query = 'SELECT firstname,lastname,' . implode(",", $emailFields) . ',vtiger_contactdetails.contactid as id
				  FROM vtiger_contactdetails
				  INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_contactdetails.contactid
				  LEFT JOIN vtiger_contactscf ON vtiger_contactdetails.contactid = vtiger_contactscf.contactid
				  WHERE vtiger_crmentity.deleted=0 AND vtiger_contactdetails.contactid IN (' . generateQuestionMarks($idlist) . ') AND vtiger_contactdetails.emailoptout=0';
        } else {
            if ($module == 'Accounts') {
                $query = 'SELECT vtiger_account.accountname, ' . implode(",", $emailFields) . ',vtiger_account.accountid as id FROM vtiger_account
				   INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_account.accountid
				   LEFT JOIN vtiger_accountscf ON vtiger_accountscf.accountid= vtiger_account.accountid
				   WHERE vtiger_crmentity.deleted=0 AND vtiger_account.accountid IN (' . generateQuestionMarks($idlist) . ') AND vtiger_account.emailoptout=0';
            } else {
                if ($module == 'Project') {
                    $query = 'SELECT projectname,' . implode(",", $emailFields) . ',vtiger_project.projectid as id
				  FROM vtiger_project
				  INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_project.projectid
				  LEFT JOIN vtiger_projectcf ON vtiger_projectcf.projectid = vtiger_project.projectid
				  WHERE vtiger_crmentity.deleted=0 AND vtiger_project.projectid IN (' . generateQuestionMarks($idlist) . ')';
                } else {
                    if ($module == 'ProjectTask') {
                        $query = 'SELECT projecttaskname,' . implode(",", $emailFields) . ',vtiger_projecttask.projecttaskid as id
				  FROM vtiger_projecttask
				  INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_projecttask.projecttaskid
				  LEFT JOIN vtiger_projecttaskcf ON vtiger_projecttaskcf.projecttaskid = vtiger_projecttask.projecttaskid
				  WHERE vtiger_crmentity.deleted=0 AND vtiger_projecttask.projecttaskid IN (' . generateQuestionMarks($idlist) . ')';
                    } else {
                        if ($module == 'Potentials') {
                            $query = 'SELECT potentialname,' . implode(",", $emailFields) . ',vtiger_potential.potentialid as id
				  FROM vtiger_potential
				  INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_potential.potentialid
				  LEFT JOIN vtiger_potentialscf ON vtiger_potentialscf.potentialid = vtiger_potential.potentialid
				  WHERE vtiger_crmentity.deleted=0 AND vtiger_potential.potentialid IN (' . generateQuestionMarks($idlist) . ')';
                        } else {
                            if ($module == 'HelpDesk') {
                                $query = 'SELECT title,' . implode(",", $emailFields) . ',vtiger_troubletickets.ticketid as id
				  FROM vtiger_troubletickets
				  INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_troubletickets.ticketid
				  LEFT JOIN vtiger_ticketcf ON vtiger_ticketcf.ticketid = vtiger_troubletickets.ticketid
				  WHERE vtiger_crmentity.deleted=0 AND vtiger_troubletickets.ticketid IN (' . generateQuestionMarks($idlist) . ')';
                            } else {
                                // vendors
                                $query = 'SELECT vtiger_vendor.vendorname, ' . implode(",", $emailFields) . ',vtiger_vendor.vendorid as id FROM vtiger_vendor
				   INNER JOIN vtiger_crmentity ON vtiger_crmentity.crmid=vtiger_vendor.vendorid
				   LEFT JOIN vtiger_vendorcf ON vtiger_vendorcf.vendorid= vtiger_vendor.vendorid
				   WHERE vtiger_crmentity.deleted=0 AND vtiger_vendor.vendorid IN (' . generateQuestionMarks($idlist) . ')';
                            }
                        }
                    }
                }
            }
        }
    }
    $result = $adb->pquery($query, $idlist);
    if ($adb->num_rows($result) > 0) {
        while ($entityvalue = $adb->fetchByAssoc($result)) {
            $vtwsid = $entityvalue['id'];
            foreach ($emailFields as $i => $emailFieldName) {
                if ($entityvalue[$emailFieldName] != NULL || $entityvalue[$emailFieldName] != '') {
                    $idlists .= $vtwsid . '@' . $vtwsCRMObjectMeta->getFieldIdFromFieldName($emailFieldName) . '|';
                    if ($module == 'Leads' || $module == 'Contacts') {
                        $mailids .= $entityvalue['lastname'] . " " . $entityvalue['firstname'] . "<" . $entityvalue[$emailFieldName] . ">,";
                    } else {
                        if ($module == "Project") {
                            $mailids .= $entityvalue['projectname'] . "<" . $entityvalue[$emailFieldName] . ">,";
                        } else {
                            if ($module == "ProjectTask") {
                                $mailids .= $entityvalue['projecttaskname'] . "<" . $entityvalue[$emailFieldName] . ">,";
                            } else {
                                if ($module == "Potentials") {
                                    $mailids .= $entityvalue['potentialname'] . "<" . $entityvalue[$emailFieldName] . ">,";
                                } else {
                                    if ($module == "HelpDesk") {
                                        $mailids .= $entityvalue['title'] . "<" . $entityvalue[$emailFieldName] . ">,";
                                    } else {
                                        $mailids .= $entityvalue['accountname'] . "<" . $entityvalue[$emailFieldName] . ">,";
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    $return_data = array('idlists' => $idlists, 'mailds' => $mailids);
    return $return_data;
}
예제 #4
0
require_once 'modules/Leads/ConvertLeadUI.php';
$uiinfo = new ConvertLeadUI($_REQUEST['record'], $current_user);
if (isPermitted("Leads", "EditView", $_REQUEST['record']) == 'yes' && isPermitted("Leads", "ConvertLead") == 'yes' && (isPermitted("Accounts", "EditView") == 'yes' || isPermitted("Contacts", "EditView") == 'yes') && (vtlib_isModuleActive('Contacts') || vtlib_isModuleActive('Accounts')) && !isLeadConverted($focus->id) && ($uiinfo->getCompany() != null || $uiinfo->isModuleActive('Contacts') == true)) {
    $smarty->assign("CONVERTLEAD", "permitted");
}
$category = getParentTab();
$smarty->assign("CATEGORY", $category);
if (isPermitted("Leads", "Delete", $_REQUEST['record']) == 'yes') {
    $smarty->assign("DELETE", "permitted");
}
if (isPermitted("Emails", "EditView", '') == 'yes') {
    //Added to pass the parents list as hidden for Emails -- 09-11-2005
    $parent_email = getEmailParentsList('Leads', $_REQUEST['record'], $focus);
    $smarty->assign("HIDDEN_PARENTS_LIST", $parent_email);
    $vtwsObject = VtigerWebserviceObject::fromName($adb, $currentModule);
    $vtwsCRMObjectMeta = new VtigerCRMObjectMeta($vtwsObject, $current_user);
    $emailFields = $vtwsCRMObjectMeta->getEmailFields();
    $smarty->assign("SENDMAILBUTTON", "permitted");
    $emails = array();
    foreach ($emailFields as $key => $value) {
        $emails[] = $value;
    }
    $smarty->assign("EMAILS", $emails);
    $cond = "LTrim('%s') !=''";
    $condition = array();
    foreach ($emails as $key => $value) {
        $condition[] = sprintf($cond, $value);
    }
    $condition_str = implode("||", $condition);
    $js = "if(" . $condition_str . "){fnvshobj(this,'sendmail_cont');sendmail('" . $currentModule . "'," . $_REQUEST['record'] . ");}else{OpenCompose('','create');}";
    $smarty->assign('JS', $js);
예제 #5
0
 public function addUserSearchConditions($input)
 {
     global $log, $default_charset;
     if ($input['searchtype'] == 'advance') {
         $json = new Zend_Json();
         $advft_criteria = $_REQUEST['advft_criteria'];
         if (!empty($advft_criteria)) {
             $advft_criteria = $json->decode($advft_criteria);
         }
         $advft_criteria_groups = $_REQUEST['advft_criteria_groups'];
         if (!empty($advft_criteria_groups)) {
             $advft_criteria_groups = $json->decode($advft_criteria_groups);
         }
         if (empty($advft_criteria) || count($advft_criteria) <= 0) {
             return;
         }
         $advfilterlist = getAdvancedSearchCriteriaList($advft_criteria, $advft_criteria_groups);
         if (empty($advfilterlist) || count($advfilterlist) <= 0) {
             return;
         }
         if ($this->conditionInstanceCount > 0) {
             $this->startGroup(self::$AND);
         } else {
             $this->startGroup('');
         }
         foreach ($advfilterlist as $groupindex => $groupcolumns) {
             $filtercolumns = $groupcolumns['columns'];
             if (count($filtercolumns) > 0) {
                 $this->startGroup('');
                 foreach ($filtercolumns as $index => $filter) {
                     $name = explode(':', $filter['columnname']);
                     if (empty($name[2]) && $name[1] == 'crmid' && $name[0] == 'vtiger_crmentity') {
                         $name = $this->getSQLColumn('id');
                     } else {
                         $name = $name[2];
                     }
                     $this->addCondition($name, $filter['value'], $filter['comparator']);
                     $columncondition = $filter['column_condition'];
                     if (!empty($columncondition)) {
                         $this->addConditionGlue($columncondition);
                     }
                 }
                 $this->endGroup();
                 $groupConditionGlue = $groupcolumns['condition'];
                 if (!empty($groupConditionGlue)) {
                     $this->addConditionGlue($groupConditionGlue);
                 }
             }
         }
         $this->endGroup();
     } elseif ($input['type'] == 'dbrd') {
         if ($this->conditionInstanceCount > 0) {
             $this->startGroup(self::$AND);
         } else {
             $this->startGroup('');
         }
         $allConditionsList = $this->getDashBoardConditionList();
         $conditionList = $allConditionsList['conditions'];
         $relatedConditionList = $allConditionsList['relatedConditions'];
         $noOfConditions = count($conditionList);
         $noOfRelatedConditions = count($relatedConditionList);
         foreach ($conditionList as $index => $conditionInfo) {
             $this->addCondition($conditionInfo['fieldname'], $conditionInfo['value'], $conditionInfo['operator']);
             if ($index < $noOfConditions - 1 || $noOfRelatedConditions > 0) {
                 $this->addConditionGlue(self::$AND);
             }
         }
         foreach ($relatedConditionList as $index => $conditionInfo) {
             $this->addRelatedModuleCondition($conditionInfo['relatedModule'], $conditionInfo['conditionModule'], $conditionInfo['finalValue'], $conditionInfo['SQLOperator']);
             if ($index < $noOfRelatedConditions - 1) {
                 $this->addConditionGlue(self::$AND);
             }
         }
         $this->endGroup();
     } else {
         if (isset($input['search_field']) && $input['search_field'] != "") {
             $fieldName = vtlib_purify($input['search_field']);
         } else {
             return;
         }
         if ($this->conditionInstanceCount > 0) {
             $this->startGroup(self::$AND);
         } else {
             $this->startGroup('');
         }
         $moduleFields = $this->meta->getModuleFields();
         $field = $moduleFields[$fieldName];
         $type = $field->getFieldDataType();
         if (isset($input['search_text']) && $input['search_text'] != "") {
             // search other characters like "|, ?, ?" by jagi
             $value = $input['search_text'];
             $stringConvert = function_exists(iconv) ? @iconv("UTF-8", $default_charset, $value) : $value;
             if (!$this->isStringType($type)) {
                 $value = trim($stringConvert);
             }
             if ($type == 'picklist') {
                 global $mod_strings;
                 // Get all the keys for the for the Picklist value
                 $mod_keys = array_keys($mod_strings, $value);
                 if (sizeof($mod_keys) >= 1) {
                     // Iterate on the keys, to get the first key which doesn't start with LBL_      (assuming it is not used in PickList)
                     foreach ($mod_keys as $mod_idx => $mod_key) {
                         $stridx = strpos($mod_key, 'LBL_');
                         // Use strict type comparision, refer strpos for more details
                         if ($stridx !== 0) {
                             $value = $mod_key;
                             break;
                         }
                     }
                 }
             }
             if ($type == 'currency') {
                 // Some of the currency fields like Unit Price, Total, Sub-total etc of Inventory modules, do not need currency conversion
                 if ($field->getUIType() == '72') {
                     $value = CurrencyField::convertToDBFormat($value, null, true);
                 } else {
                     $currencyField = new CurrencyField($value);
                     if ($this->getModule() == 'Potentials' && $fieldName == 'amount') {
                         $currencyField->setNumberofDecimals(2);
                     }
                     $value = $currencyField->getDBInsertedValue();
                 }
             }
         }
         if (!empty($input['operator'])) {
             $operator = $input['operator'];
         } elseif (trim(strtolower($value)) == 'null') {
             $operator = 'e';
         } else {
             if (!$this->isNumericType($type) && !$this->isDateType($type)) {
                 $operator = 'c';
             } else {
                 $operator = 'h';
             }
         }
         $this->addCondition($fieldName, $value, $operator);
         $this->endGroup();
     }
 }
예제 #6
0
 public function addUserSearchConditions($input)
 {
     global $log, $default_charset;
     if ($input['searchtype'] == 'advance') {
         if (empty($input['search_cnt'])) {
             return;
         }
         $noOfConditions = vtlib_purify($input['search_cnt']);
         if ($input['matchtype'] == 'all') {
             $matchType = self::$AND;
         } else {
             $matchType = self::$OR;
         }
         if ($this->conditionInstanceCount > 0) {
             $this->startGroup(self::$AND);
         } else {
             $this->startGroup('');
         }
         for ($i = 0; $i < $noOfConditions; $i++) {
             $fieldInfo = 'Fields' . $i;
             $condition = 'Condition' . $i;
             $value = 'Srch_value' . $i;
             list($fieldName, $typeOfData) = split("::::", str_replace('\'', '', stripslashes($input[$fieldInfo])));
             $moduleFields = $this->meta->getModuleFields();
             $field = $moduleFields[$fieldName];
             $type = $field->getFieldDataType();
             $operator = str_replace('\'', '', stripslashes($input[$condition]));
             $searchValue = $input[$value];
             $searchValue = function_exists(iconv) ? @iconv("UTF-8", $default_charset, $searchValue) : $searchValue;
             if ($type == 'picklist') {
                 global $mod_strings;
                 // Get all the keys for the for the Picklist value
                 $mod_keys = array_keys($mod_strings, $searchValue);
                 if (sizeof($mod_keys) >= 1) {
                     // Iterate on the keys, to get the first key which doesn't start with LBL_      (assuming it is not used in PickList)
                     foreach ($mod_keys as $mod_idx => $mod_key) {
                         $stridx = strpos($mod_key, 'LBL_');
                         // Use strict type comparision, refer strpos for more details
                         if ($stridx !== 0) {
                             $searchValue = $mod_key;
                             break;
                         }
                     }
                 }
             }
             $this->addCondition($fieldName, $searchValue, $operator);
             if ($i + 1 < $noOfConditions) {
                 $this->addConditionGlue($matchType);
             }
         }
         $this->endGroup();
     } elseif ($input['type'] == 'dbrd') {
         if ($this->conditionInstanceCount > 0) {
             $this->startGroup(self::$AND);
         } else {
             $this->startGroup('');
         }
         $allConditionsList = $this->getDashBoardConditionList();
         $conditionList = $allConditionsList['conditions'];
         $relatedConditionList = $allConditionsList['relatedConditions'];
         $noOfConditions = count($conditionList);
         $noOfRelatedConditions = count($relatedConditionList);
         foreach ($conditionList as $index => $conditionInfo) {
             $this->addCondition($conditionInfo['fieldname'], $conditionInfo['value'], $conditionInfo['operator']);
             if ($index < $noOfConditions - 1 || $noOfRelatedConditions > 0) {
                 $this->addConditionGlue(self::$AND);
             }
         }
         foreach ($relatedConditionList as $index => $conditionInfo) {
             $this->addRelatedModuleCondition($conditionInfo['relatedModule'], $conditionInfo['conditionModule'], $conditionInfo['finalValue'], $conditionInfo['SQLOperator']);
             if ($index < $noOfRelatedConditions - 1) {
                 $this->addConditionGlue(self::$AND);
             }
         }
         $this->endGroup();
     } else {
         if (isset($input['search_field']) && $input['search_field'] != "") {
             $fieldName = vtlib_purify($input['search_field']);
         } else {
             return;
         }
         if ($this->conditionInstanceCount > 0) {
             $this->startGroup(self::$AND);
         } else {
             $this->startGroup('');
         }
         $moduleFields = $this->meta->getModuleFields();
         $field = $moduleFields[$fieldName];
         $type = $field->getFieldDataType();
         if (isset($input['search_text']) && $input['search_text'] != "") {
             // search other characters like "|, ?, ?" by jagi
             $value = $input['search_text'];
             $stringConvert = function_exists(iconv) ? @iconv("UTF-8", $default_charset, $value) : $value;
             if (!$this->isStringType($type)) {
                 $value = trim($stringConvert);
             }
             if ($type == 'picklist') {
                 global $mod_strings;
                 // Get all the keys for the for the Picklist value
                 $mod_keys = array_keys($mod_strings, $value);
                 if (sizeof($mod_keys) >= 1) {
                     // Iterate on the keys, to get the first key which doesn't start with LBL_      (assuming it is not used in PickList)
                     foreach ($mod_keys as $mod_idx => $mod_key) {
                         $stridx = strpos($mod_key, 'LBL_');
                         // Use strict type comparision, refer strpos for more details
                         if ($stridx !== 0) {
                             $value = $mod_key;
                             break;
                         }
                     }
                 }
             }
         }
         if (!empty($input['operator'])) {
             $operator = $input['operator'];
         } elseif (trim(strtolower($value)) == 'null') {
             $operator = 'e';
         } else {
             if (!$this->isNumericType($type) && !$this->isDateType($type)) {
                 $operator = 'c';
             } else {
                 $operator = 'h';
             }
         }
         $this->addCondition($fieldName, $value, $operator);
         $this->endGroup();
     }
 }