diff -r 4ec5ab29f634 -r b785e54690ce inc/toolkit.inc.php --- a/inc/toolkit.inc.php Mon Jul 02 23:01:18 2007 +0000 +++ b/inc/toolkit.inc.php Tue Jul 10 21:24:06 2007 +0000 @@ -136,7 +136,20 @@ WHERE 1"; if((!level(5) || !$userid) && !level(10) && !level(5)) { - $sqlq .= " AND zones.owner=".$_SESSION["userid"]; + // First select the zones for which we have ownership on one or more records. + $query = 'SELECT records.domain_id FROM records, record_owners WHERE user_id = '.$_SESSION['userid'].' AND records.id = record_owners.record_id'; + $result = $db->query($query); + $zones = array(); + if (!PEAR::isError($result)) { + $zones = $result->fetchCol(); + } + + $sqlq .= " AND (zones.owner=".$_SESSION["userid"]; + if (count($zones) > 0) { + $sqlq .= ' OR zones.domain_id IN ('.implode(',', $zones).') '; + + } + $sqlq .= ')'; } $sqlq .= " AND substring(domains.name,1,1) REGEXP '^".$letter."' LIMIT 1"; $result = $db->query($sqlq);