diff --git a/modules/Accounts/models/Module.php b/modules/Accounts/models/Module.php index 82e31bcd5fde52aa825c50092f50cd521c7efaee..874073fcc08c70a72245f48483f378471f0cc2af 100644 --- a/modules/Accounts/models/Module.php +++ b/modules/Accounts/models/Module.php @@ -157,7 +157,6 @@ class Accounts_Module_Model extends Vtiger_Module_Model { $focus = CRMEntity::getInstance($this->getName()); $focus->id = $recordId; $entityIds = $focus->getRelatedContactsIds(); - $entityIds = implode(',', $entityIds); $params = array(); $query = "SELECT DISTINCT vtiger_crmentity.crmid, (CASE WHEN (crmentity2.crmid not like '') THEN crmentity2.crmid ELSE crmentity3.crmid END) AS parent_id, @@ -199,7 +198,7 @@ class Accounts_Module_Model extends Vtiger_Module_Model { array_push($params, $recordId); if ($entityIds) { $query .= " OR vtiger_cntactivityrel.contactid IN (" . generateQuestionMarks($entityIds) . "))"; - array_push($params, $entityIds); + $params = array_merge($params, $entityIds); } else { $query .= ")"; } diff --git a/modules/Settings/Picklist/actions/SaveAjax.php b/modules/Settings/Picklist/actions/SaveAjax.php index 2388760f1102325af112098d802132c9d519d780..da391e3f88ddcc1b719884b86bb3465e770fdb21 100644 --- a/modules/Settings/Picklist/actions/SaveAjax.php +++ b/modules/Settings/Picklist/actions/SaveAjax.php @@ -40,20 +40,23 @@ class Settings_Picklist_SaveAjax_Action extends Settings_Vtiger_Basic_Action { $defaultFieldName = 'defaultactivitytype'; else $defaultFieldName = 'defaulteventstatus'; - $queryToGetId = 'SELECT id FROM vtiger_users WHERE '.$defaultFieldName.' IN ('; + $queryToGetId = "SELECT id FROM vtiger_users WHERE ".$defaultFieldName." IN ("; + $params = array(); if(is_array($oldValue)) { for($i=0;$i<count($oldValue);$i++) { - $queryToGetId .= '"'.$oldValue[$i].'"'; + $queryToGetId .= "?"; + array_push($params, $oldValue[$i]); if($i<(count($oldValue)-1)) { - $queryToGetId .= ','; + $queryToGetId .= ","; } } - $queryToGetId .= ')'; + $queryToGetId .= ")"; } else { - $queryToGetId .= '"'.$oldValue.'")'; + $queryToGetId .= "?)"; + array_push($params, $oldValue); } - $result = $db->pquery($queryToGetId, array()); + $result = $db->pquery($queryToGetId, $params); $rowCount = $db->num_rows($result); for($i=0; $i<$rowCount; $i++) { $recordId = $db->query_result_rowdata($result, $i); diff --git a/modules/Settings/Picklist/models/Field.php b/modules/Settings/Picklist/models/Field.php index f7b64bd6b702fb1320bf7560e9b2737157b88028..1af6edee6cfd3dc87c8431049901f9a0d64ecdff 100644 --- a/modules/Settings/Picklist/models/Field.php +++ b/modules/Settings/Picklist/models/Field.php @@ -39,7 +39,7 @@ class Settings_Picklist_Field_Model extends Vtiger_Field_Model { return Vtiger_Cache::get('PicklistRoleBasedValues',$this->getName().implode('_', $roleIdList)); } $db = PearDatabase::getInstance(); - $fieldName = $this->getName(); + $fieldName = Vtiger_Util_Helper::validateStringForSql($this->getName()); $tableName = 'vtiger_'.$fieldName; $idColName = $fieldName.'id'; $query = 'SELECT '.$fieldName; @@ -103,6 +103,7 @@ class Settings_Picklist_Field_Model extends Vtiger_Field_Model { * @return type -- array of values */ public function getEditablePicklistValues($fieldName){ + $fieldName = Vtiger_Util_Helper::validateStringForSql($fieldName); $cache = Vtiger_Cache::getInstance(); $EditablePicklistValues = $cache->get('EditablePicklistValues', $fieldName); if($EditablePicklistValues) { @@ -129,6 +130,7 @@ class Settings_Picklist_Field_Model extends Vtiger_Field_Model { * @return type -- array of values */ public static function getNonEditablePicklistValues($fieldName){ + $fieldName = Vtiger_Util_Helper::validateStringForSql($fieldName); $cache = Vtiger_Cache::getInstance(); $NonEditablePicklistValues = $cache->get('NonEditablePicklistValues', $fieldName); if($NonEditablePicklistValues) { diff --git a/modules/Settings/Picklist/models/Module.php b/modules/Settings/Picklist/models/Module.php index 325c0e467f8ae264814901ecf84e23dfe2fac031..344aa6f651e720296115871efb6599922fb2bbfc 100644 --- a/modules/Settings/Picklist/models/Module.php +++ b/modules/Settings/Picklist/models/Module.php @@ -74,6 +74,7 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { public function renamePickListValues($pickListFieldName, $oldValue, $newValue, $moduleName, $id, $rolesList = false, $color = '') { $db = PearDatabase::getInstance(); + $pickListFieldName = Vtiger_Util_Helper::validateStringForSql($pickListFieldName); $query = 'SELECT tablename, fieldid, columnname FROM vtiger_field WHERE fieldname=? and presence IN (0,2)'; $result = $db->pquery($query, array($pickListFieldName)); $num_rows = $db->num_rows($result); @@ -128,6 +129,7 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { if(!is_array($valueToDeleteId)) { $valueToDeleteId = array($valueToDeleteId); } + $pickListFieldName = Vtiger_Util_Helper::validateStringForSql($pickListFieldName); $primaryKey = Vtiger_Util_Helper::getPickListId($pickListFieldName); $pickListValues = array(); @@ -224,6 +226,7 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { $dieOnErrorOldValue = $db->dieOnError; $db->dieOnError = false; + $picklistFieldName = Vtiger_Util_Helper::validateStringForSql($picklistFieldName); $sql = "select picklistid from vtiger_picklist where name=?"; $result = $db->pquery($sql, array($picklistFieldName)); $picklistid = $db->query_result($result,0,"picklistid"); @@ -272,8 +275,8 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { $deleteValueList[] = ' ( roleid = "'.$roleId.'" AND '.'picklistvalueid = "'.$pickListValueId.'") '; } } - $query = 'INSERT IGNORE INTO vtiger_role2picklist (roleid,picklistvalueid,picklistid) VALUES '.implode(',',$insertValueList); - $result = $db->pquery($query,array()); + $query = 'INSERT IGNORE INTO vtiger_role2picklist (roleid,picklistvalueid,picklistid) VALUES '. generateQuestionMarks($insertValueList); + $result = $db->pquery($query, $insertValueList); $deleteQuery = 'DELETE FROM vtiger_role2picklist WHERE '.implode(' OR ',$deleteValueList); @@ -307,9 +310,9 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { $query = "SELECT distinct vtiger_tab.tablabel, vtiger_tab.name as tabname FROM vtiger_tab inner join vtiger_field on vtiger_tab.tabid=vtiger_field.tabid - WHERE uitype IN (15,33,16,114) and vtiger_field.tabid NOT IN (". implode(',', $unsupportedModuleIds) .") and vtiger_tab.presence != 1 and vtiger_field.presence in (0,2) + WHERE uitype IN (15,33,16,114) and vtiger_field.tabid NOT IN (". generateQuestionMarks($unsupportedModuleIds) .") and vtiger_tab.presence != 1 and vtiger_field.presence in (0,2) ORDER BY vtiger_tab.tabid ASC"; - $result = $db->pquery($query, array()); + $result = $db->pquery($query, $unsupportedModuleIds); $modulesModelsList = array(); while($row = $db->fetch_array($result)){ @@ -430,6 +433,7 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { $primaryKey = Vtiger_Util_Helper::getPickListId($pickListFieldName); $pickListDeleteValue = array(); + $pickListFieldName = Vtiger_Util_Helper::validateStringForSql($pickListFieldName); $getPickListValueQuery = "SELECT $pickListFieldName FROM " . $this->getPickListTableName($pickListFieldName) . " WHERE $primaryKey IN (" . generateQuestionMarks($valueToDeleteID) . ")"; $result = $db->pquery($getPickListValueQuery, array($valueToDeleteID)); $num_rows = $db->num_rows($result); @@ -447,6 +451,7 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { */ public static function getPicklistColor($pickListFieldName, $pickListId) { $db = PearDatabase::getInstance(); + $pickListFieldName = Vtiger_Util_Helper::validateStringForSql($pickListFieldName); $primaryKey = Vtiger_Util_Helper::getPickListId($pickListFieldName); $colums = $db->getColumnNames("vtiger_$pickListFieldName"); if(in_array('color',$colums)) { @@ -484,11 +489,12 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { */ public static function getPicklistColorMap($fieldName, $key = false) { $db = PearDatabase::getInstance(); + $fieldName = Vtiger_Util_Helper::validateStringForSql($fieldName); $primaryKey = Vtiger_Util_Helper::getPickListId($fieldName); $colums = $db->getColumnNames("vtiger_$fieldName"); if(in_array('color',$colums)) { $query = 'SELECT '.$primaryKey.',color,'.$fieldName.' FROM vtiger_'.$fieldName; - $result = $db->pquery($query); + $result = $db->pquery($query, array()); $pickListColorMap = array(); $isRoleBasedPicklist = vtws_isRoleBasedPicklist($fieldName); $accessablePicklistValues = self::getAccessiblePicklistValues($fieldName); @@ -524,6 +530,7 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { */ public static function getPicklistColorByValue($fieldName, $fieldValue) { $db = PearDatabase::getInstance(); + $fieldName = Vtiger_Util_Helper::validateStringForSql($fieldName); $tableName = "vtiger_$fieldName"; if(Vtiger_Utils::CheckTable($tableName)) { $colums = $db->getColumnNames($tableName); @@ -554,6 +561,7 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { //As older look utf8 characters are pushed as html-entities,and in new utf8 characters are pushed to database //so we are checking for both the values + $pickListFieldName = Vtiger_Util_Helper::validateStringForSql($pickListFieldName); $primaryKey = Vtiger_Util_Helper::getPickListId($pickListFieldName); if(!empty($color)) { $query = 'UPDATE ' . $this->getPickListTableName($pickListFieldName) . ' SET color = ? WHERE '.$primaryKey.' = ?'; diff --git a/modules/Settings/Potentials/models/Mapping.php b/modules/Settings/Potentials/models/Mapping.php index df33a0a4c06b97c3d6d5f61f9f92e99ce33563a3..6770bc66b8a54ac195260405839c81b3b70d6dd9 100644 --- a/modules/Settings/Potentials/models/Mapping.php +++ b/modules/Settings/Potentials/models/Mapping.php @@ -121,14 +121,16 @@ class Settings_Potentials_Mapping_Model extends Settings_Leads_Mapping_Model { $insertQuery = 'INSERT INTO vtiger_convertpotentialmapping(potentialfid, projectfid) VALUES '; $count = count($createMappingsList); + $params = array(); for ($i=0; $i<$count; $i++) { $mappingDetails = $createMappingsList[$i]; - $insertQuery .= '('. $mappingDetails['potential'] .', '. $mappingDetails['project'] .')'; + $insertQuery .= '(?, ?)'; + array_push($params, $mappingDetails['potential'], $mappingDetails['project']); if ($i !== $count-1) { $insertQuery .= ', '; } } - $db->pquery($insertQuery, array()); + $db->pquery($insertQuery, $params); } if ($updateMappingsList) { diff --git a/modules/Settings/Profiles/models/Record.php b/modules/Settings/Profiles/models/Record.php index 899389d13509aded0d655577966678f62f7028ec..dcba26e06511c3114cb9c61d48fc72358da6e916 100644 --- a/modules/Settings/Profiles/models/Record.php +++ b/modules/Settings/Profiles/models/Record.php @@ -571,11 +571,13 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model { //Standard permissions $i = 0; $count = count($actionsIdsList); + $params = array(); $actionsInsertQuery .= 'INSERT INTO vtiger_profile2standardpermissions(profileid, tabid, operation, permissions) VALUES '; foreach ($actionsIdsList as $actionId => $permission) { $actionEnabled = true; $permissionValue = $this->tranformInputPermissionValue($permission); - $actionsInsertQuery .= "($profileId, $tabId, $actionId, $permissionValue)"; + $actionsInsertQuery .= "(?, ?, ?, ?)"; + array_push($params, $profileId, $tabId, $actionId, $permissionValue); if ($i !== $count-1) { $actionsInsertQuery .= ', '; @@ -589,10 +591,12 @@ class Settings_Profiles_Record_Model extends Settings_Vtiger_Record_Model { //Utility permissions $i = 0; $count = count($utilityIdsList); + $params = array(); $utilityInsertQuery .= 'INSERT INTO vtiger_profile2utility(profileid, tabid, activityid, permission) VALUES '; foreach($utilityIdsList as $actionId => $permission) { $permissionValue = $this->tranformInputPermissionValue($permission); - $utilityInsertQuery .= "($profileId, $tabId, $actionId, $permissionValue)"; + $utilityInsertQuery .= "(?, ?, ?, ?)"; + array_push($params, $profileId, $tabId, $actionId, $permissionValue); if ($i !== $count-1) { $utilityInsertQuery .= ', '; diff --git a/modules/Settings/Roles/models/Record.php b/modules/Settings/Roles/models/Record.php index 41ebbfe890a541b19c13888f3d727a19b30d9648..f1990bc93c9068455279b10fd5f50f0acf320050 100644 --- a/modules/Settings/Roles/models/Record.php +++ b/modules/Settings/Roles/models/Record.php @@ -283,7 +283,7 @@ class Settings_Roles_Record_Model extends Settings_Vtiger_Record_Model { */ public function save() { $db = PearDatabase::getInstance(); - $roleId = $this->getId(); + $roleId = Vtiger_Util_Helper::validateStringForSql($this->getId()); $mode = 'edit'; if(empty($roleId)) { diff --git a/modules/Settings/Workflows/models/ListView.php b/modules/Settings/Workflows/models/ListView.php index 439468289f10c79e5a20b254c7a1fe95e1715493..e3f704f74b5d0f16ca357759df735539700fdebd 100644 --- a/modules/Settings/Workflows/models/ListView.php +++ b/modules/Settings/Workflows/models/ListView.php @@ -52,7 +52,8 @@ class Settings_Workflows_ListView_Model extends Settings_Vtiger_ListView_Model { } if(!empty($search_value)) { - $listQuery .= ' AND workflowname like "%'.$search_value.'%"'; + $listQuery .= ' AND workflowname like ?'; + array_push($params, "%$search_value%"); } $startIndex = $pagingModel->getStartIndex(); @@ -136,6 +137,7 @@ class Settings_Workflows_ListView_Model extends Settings_Vtiger_ListView_Model { $db = PearDatabase::getInstance(); $module = $this->getModule(); + $params = array(); $listQuery = 'SELECT count(*) AS count FROM ' . $module->baseTable . ' INNER JOIN vtiger_tab ON vtiger_tab.name = '. $module->baseTable .'.module_name AND vtiger_tab.presence IN (0,2)'; @@ -143,13 +145,15 @@ class Settings_Workflows_ListView_Model extends Settings_Vtiger_ListView_Model { $sourceModule = $this->get('sourceModule'); if($sourceModule) { $listQuery .= " WHERE module_name = '$sourceModule'"; + array_push($params, $sourceModule); } $search_value = $this->get('search_value'); if(!empty($search_value)) { - $listQuery .= ' AND workflowname like "%'.$search_value.'%"'; + $listQuery .= ' AND workflowname like ?'; + array_push($params, "%$search_value%"); } - $listResult = $db->pquery($listQuery, array()); + $listResult = $db->pquery($listQuery, $params); return $db->query_result($listResult, 0, 'count'); } } \ No newline at end of file