_get_column_select($layout_def) . " NOT LIKE " ; $query = array(); foreach ($layout_def['input_name0'] as $val) { $query[] = $col_name . $this->reporter->db->quoted('%' . $this->encodeMultienumCustom($layout_def, $val) . '%'); } return '('. implode(' AND ', $query) .')'; } public function queryFilterone_of(&$layout_def) { $col_name = $this->_get_column_select($layout_def) . " LIKE " ; $query = array(); foreach ($layout_def['input_name0'] as $val) { $query[] = $col_name . $this->reporter->db->quoted('%' . $this->encodeMultienumCustom($layout_def, $val) . '%'); } return '('. implode(' OR ', $query) .')'; } public function queryFilteris($layout_def) { $input_name0 = $layout_def['input_name0']; if (is_array($layout_def['input_name0'])) { $input_name0 = $layout_def['input_name0'][0]; } // Bug 40022 // IS filter doesn't add the carets (^) to multienum custom field values $input_name0 = $this->encodeMultienumCustom($layout_def, $input_name0); return $this->_get_column_select($layout_def)." = ".$this->reporter->db->quoted($input_name0)."\n"; } public function queryFilteris_not($layout_def) { $input_name0 = $layout_def['input_name0']; if (is_array($layout_def['input_name0'])) { $input_name0 = $layout_def['input_name0'][0]; } // Bug 50549 // IS NOT filter doesn't add the carets (^) to multienum custom field values $input_name0 = $this->encodeMultienumCustom($layout_def, $input_name0); return $this->_get_column_select($layout_def)." <> ".$this->reporter->db->quoted($input_name0)."\n"; } /** * Returns an OrderBy query for multi-select. We treat multi-select the same as a normal field because * the values stored in the database are in the format ^A^,^B^,^C^ though not necessarily in that order. * @param $layout_def * @return string */ public function queryOrderBy($layout_def) { return SugarWidgetReportField::queryOrderBy($layout_def); } /** * Function checks if the multienum field is custom, and escapes it with carets (^) if it is * @param array $layout_def field layout definition * @param string $value value to be escaped * @return string */ private function encodeMultienumCustom($layout_def, $value) { $field_def = $this->reporter->getFieldDefFromLayoutDef($layout_def); // Check if it is a custom field if (!empty($field_def['source']) && ($field_def['source'] == 'custom_fields' || ($field_def['source'] == 'non-db' && !empty($field_def['ext2']) && !empty($field_def['id']))) && !empty($field_def['real_table'])) { $value = encodeMultienumValue(array($value)); } return $value; } } ?>