Page MenuHomeIn-Portal Phabricator

D7.id261.diff
No OneTemporary

File Metadata

Created
Sat, Apr 19, 3:39 PM

D7.id261.diff

Index: core/kernel/db/cat_event_handler.php
===================================================================
--- core/kernel/db/cat_event_handler.php
+++ core/kernel/db/cat_event_handler.php
@@ -505,32 +505,33 @@
/* @var $p_item kCatDBItem */
$p_item->Load( (int)$id );
+ $related_ids = array();
- $p_resource_id = $p_item->GetDBField('ResourceId');
+ if ( $p_item->isLoaded() ) {
+ $p_resource_id = (int)$p_item->GetDBField('ResourceId');
+ $sql = 'SELECT SourceId, TargetId FROM ' . $rel_table . '
+ WHERE
+ (Enabled = 1)
+ AND (
+ (Type = 0 AND SourceId = ' . $p_resource_id . ' AND TargetType = ' . $item_type . ')
+ OR
+ (Type = 1
+ AND (
+ (SourceId = ' . $p_resource_id . ' AND TargetType = ' . $item_type . ')
+ OR
+ (TargetId = ' . $p_resource_id . ' AND SourceType = ' . $item_type . ')
+ )
+ )
+ )';
- $sql = 'SELECT SourceId, TargetId FROM '.$rel_table.'
- WHERE
- (Enabled = 1)
- AND (
- (Type = 0 AND SourceId = '.$p_resource_id.' AND TargetType = '.$item_type.')
- OR
- (Type = 1
- AND (
- (SourceId = '.$p_resource_id.' AND TargetType = '.$item_type.')
- OR
- (TargetId = '.$p_resource_id.' AND SourceType = '.$item_type.')
- )
- )
- )';
+ $related_ids_array = $this->Conn->Query($sql);
- $related_ids_array = $this->Conn->Query($sql);
- $related_ids = Array();
-
- foreach ($related_ids_array as $record) {
- $related_ids[] = $record[ $record['SourceId'] == $p_resource_id ? 'TargetId' : 'SourceId' ];
+ foreach ( $related_ids_array as $record ) {
+ $related_ids[] = $record[$record['SourceId'] == $p_resource_id ? 'TargetId' : 'SourceId'];
+ }
}
- if (count($related_ids) > 0) {
+ if ( $related_ids ) {
$type_clauses['related']['include'] = '%1$s.ResourceId IN ('.implode(',', $related_ids).') AND PrimaryCat = 1';
$type_clauses['related']['except'] = '%1$s.ResourceId NOT IN ('.implode(',', $related_ids).') AND PrimaryCat = 1';
}
@@ -538,6 +539,7 @@
$type_clauses['related']['include'] = '0';
$type_clauses['related']['except'] = '1';
}
+
$type_clauses['related']['having_filter'] = false;
}
Index: core/units/categories/categories_event_handler.php
===================================================================
--- core/units/categories/categories_event_handler.php
+++ core/units/categories/categories_event_handler.php
@@ -399,32 +399,34 @@
/* @var $p_item kCatDBItem */
$p_item->Load( (int)$id );
+ $related_ids = array();
- $p_resource_id = $p_item->GetDBField('ResourceId');
+ if ( $p_item->isLoaded() ) {
+ $p_resource_id = (int)$p_item->GetDBField('ResourceId');
- $sql = 'SELECT SourceId, TargetId FROM '.$rel_table.'
- WHERE
- (Enabled = 1)
- AND (
- (Type = 0 AND SourceId = '.$p_resource_id.' AND TargetType = '.$item_type.')
+ $sql = 'SELECT SourceId, TargetId FROM ' . $rel_table . '
+ WHERE
+ (Enabled = 1)
+ AND (
+ (Type = 0 AND SourceId = ' . $p_resource_id . ' AND TargetType = ' . $item_type . ')
OR
(Type = 1
AND (
- (SourceId = '.$p_resource_id.' AND TargetType = '.$item_type.')
+ (SourceId = ' . $p_resource_id . ' AND TargetType = ' . $item_type . ')
OR
- (TargetId = '.$p_resource_id.' AND SourceType = '.$item_type.')
+ (TargetId = ' . $p_resource_id . ' AND SourceType = ' . $item_type . ')
)
)
- )';
+ )';
- $related_ids_array = $this->Conn->Query($sql);
- $related_ids = Array();
+ $related_ids_array = $this->Conn->Query($sql);
- foreach ($related_ids_array as $key => $record) {
- $related_ids[] = $record[ $record['SourceId'] == $p_resource_id ? 'TargetId' : 'SourceId' ];
+ foreach ( $related_ids_array as $key => $record ) {
+ $related_ids[] = $record[$record['SourceId'] == $p_resource_id ? 'TargetId' : 'SourceId'];
+ }
}
- if (count($related_ids) > 0) {
+ if ( $related_ids ) {
$type_clauses['related']['include'] = '%1$s.ResourceId IN ('.implode(',', $related_ids).')';
$type_clauses['related']['except'] = '%1$s.ResourceId NOT IN ('.implode(',', $related_ids).')';
}

Event Timeline