* @param int $offset\r
* @param string $order_by Optional ordering.\r
* @param int $site_guid The site to get entities for. Leave as 0 (default) for the current site; -1 for all sites.\r
- * @param true|false $count If set to true, returns the total number of entities rather than a list. (Default: false)\r
+ * @param true|false $count If set to true, returns the total number of entities rather than a list. (Default: false)
+ * @param string $meta_array_operator Operator used for joining the metadata array together\r
* @return int|array List of ElggEntities, or the total number if count is set to false\r
*/\r
- function get_entities_from_metadata_multi($meta_array, $entity_type = "", $entity_subtype = "", $owner_guid = 0, $limit = 10, $offset = 0, $order_by = "", $site_guid = 0, $count = false)\r
+ function get_entities_from_metadata_multi($meta_array, $entity_type = "", $entity_subtype = "", $owner_guid = 0, $limit = 10, $offset = 0, $order_by = "", $site_guid = 0, $count = false, $meta_array_operator = 'and')\r
{\r
global $CONFIG;\r
\r
$where = array();\r
\r
$mindex = 1;\r
- $join = "";\r
+ $join = "";
+ $metawhere = array();
+ $meta_array_operator = sanitise_string($meta_array_operator);\r
foreach($meta_array as $meta_name => $meta_value) {\r
$meta_n = get_metastring_id($meta_name);\r
$meta_v = get_metastring_id($meta_value);\r
$join .= " JOIN {$CONFIG->dbprefix}metadata m{$mindex} on e.guid = m{$mindex}.entity_guid "; \r
- if ($meta_name!=="")\r
+ /*if ($meta_name!=="")\r
$where[] = "m{$mindex}.name_id='$meta_n'";\r
if ($meta_value!=="")\r
- $where[] = "m{$mindex}.value_id='$meta_v'";\r
+ $where[] = "m{$mindex}.value_id='$meta_v'";*/
+ $metawhere[] = "(m{$mindex}.name_id='$meta_n' AND m{$mindex}.value_id='$meta_v')";\r
$mindex++;\r
- }\r
+ }
+ $where[] = "(".implode($meta_array_operator, $metawhere).")";\r
\r
$entity_type = sanitise_string($entity_type);\r
$entity_subtype = get_subtype_id($entity_type, $entity_subtype);\r