Index: trunk/core/units/general/cat_event_handler.php =================================================================== diff -u -N -r8422 -r8428 --- trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 8422) +++ trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 8428) @@ -180,7 +180,11 @@ function getTypeClauses(&$event) { $types = $event->getEventParam('types'); + $types = $types ? explode(',', $types) : Array (); + $except_types = $event->getEventParam('except'); + $except_types = $except_types ? explode(',', $except_types) : Array (); + $type_clauses = Array(); $user_id = $this->Application->RecallVar('user_id'); @@ -215,7 +219,7 @@ } $type_clauses['displayed']['having_filter'] = false; - if (strpos($types, 'search') !== false || strpos($except_types, 'search') !== false) { + if (in_array('search', $types) || in_array('search', $except_types)) { $event_mapping = Array( 'simple' => 'OnSimpleSearch', 'subsearch' => 'OnSubSearch', @@ -253,7 +257,7 @@ $type_clauses['search']['having_filter'] = false; } - if (strpos($types, 'related') !== false || strpos($except_types, 'related') !== false) { + if (in_array('related', $types) || in_array('related', $except_types)) { $related_to = $event->getEventParam('related_to'); if (!$related_to) { @@ -307,6 +311,22 @@ $type_clauses['related']['having_filter'] = false; } + if (in_array('favorites', $types) || in_array('favorites', $except_types)) { + $sql = 'SELECT ResourceId + FROM '.$this->Application->getUnitOption('fav', 'TableName').' + WHERE PortalUserId = '.$this->Application->RecallVar('user_id'); + $favorite_ids = $this->Conn->GetCol($sql); + if ($favorite_ids) { + $type_clauses['favorites']['include'] = '%1$s.ResourceId IN ('.implode(',', $favorite_ids).') AND PrimaryCat = 1'; + $type_clauses['favorites']['except'] = '%1$s.ResourceId NOT IN ('.implode(',', $favorite_ids).') AND PrimaryCat = 1'; + } + else { + $type_clauses['favorites']['include'] = 0; + $type_clauses['favorites']['except'] = 1; + } + $type_clauses['favorites']['having_filter'] = false; + } + return $type_clauses; }