/** * Add like condition to where clause for column which can be translated with language overlay. * @param DataMapper $object model object which will be using this function. * @param string $column column name in table. * @param string $value search text. * @param string $wrap wraping constant, can be 'both', 'before', 'after'. * @param bool $strip_html if set to TRUE it will strip html tags from column. * @param string $lang_idiom language idiom, default is NULL = current language idion set in language object. * @return DataMapper returns object for method chaining. */ public function like_with_overlay($object, $column, $value, $wrap = 'both', $strip_html = FALSE, $lang_idiom = NULL) { $CI =& get_instance(); if (is_null($lang_idiom)) { $lang_idiom = $CI->lang->get_current_idiom(); } $like = $wrap == 'before' ? '%' . $object->db->escape_like_str($value) : ($wrap == 'after' ? $object->db->escape_like_str($value) . '%' : '%' . $object->db->escape_like_str($value) . '%'); $subquery = ($strip_html === TRUE ? 'fnStripTags(' : '') . '(SELECT `text` AS `like_text` FROM `lang_overlays` WHERE `table` = "' . $object->db->escape_str($object->table) . '" AND `table_id` = ' . $object->db->protect_identifiers($object->table) . '.`id` AND `column` = "' . $object->db->escape_str($column) . '" AND `idiom` = "' . $object->db->escape_str($lang_idiom) . '" UNION SELECT ' . $object->db->protect_identifiers($object->table) . '.' . $object->db->protect_identifiers($column) . ' AS `like_text` LIMIT 1)' . ($strip_html === TRUE ? ') COLLATE ' . $object->db->dbcollat : '') . ' LIKE "' . $like . '"'; $object->where($subquery); return $object; }