Index: trunk/kernel/include/category.php =================================================================== diff -u -N -r3237 -r3250 --- trunk/kernel/include/category.php (.../category.php) (revision 3237) +++ trunk/kernel/include/category.php (.../category.php) (revision 3250) @@ -57,37 +57,27 @@ if(!$filename || $this->UniqueId() == 0 ) return $filename; $db =& GetADODBConnection(); - - $sql = 'SELECT Filename FROM '.$this->tablename.' WHERE CategoryId = '.$this->UniqueId(); - $db_filename = $db->GetOne($sql); - - $check = true; -// $check = $db_filename != $filename; - if($check) + $sql = 'SELECT CategoryId FROM '.$this->tablename.' WHERE (Filename = '.$db->qstr($filename).') AND (ParentId = '.$m_var_list['cat'].')'; + $category_id = $db->GetOne($sql); + $has_page = preg_match('/(.*)_([\d]+)([a-z]*)$/', $filename, $rets); + if( ($category_id != $this->UniqueId()) || $has_page ) // other category has same filename as ours OR we have filename, that ends with _number { - // 2. filename was changed (manually or automatically) - $sql = 'SELECT CategoryId FROM '.$this->tablename.' WHERE (Filename = '.$db->qstr($filename).') AND (ParentId = '.$m_var_list['cat'].')'; - $category_id = $db->GetOne($sql); - $has_page = preg_match('/(.*)_([\d]+)([a-z]*)$/', $filename, $rets); - if( ($category_id != $this->UniqueId()) || $has_page ) // other category has same filename as ours OR we have filename, that ends with _number + $append = $category_id ? 'a' : ''; + if($has_page) { - $append = $category_id ? 'a' : ''; - if($has_page) - { - $filename = $rets[1].'_'.$rets[2]; - $append = $rets[3] ? $rets[3] : 'a'; - } - - $sql = 'SELECT CategoryId FROM '.$this->tablename.' WHERE (Filename = %s) AND (CategoryId != '.$this->UniqueId().') AND (ParentId = '.$m_var_list['cat'].')'; - while ( $db->GetOne( sprintf($sql, $db->qstr($filename.$append)) ) > 0 ) - { - if (substr($append, -1) == 'z') $append .= 'a'; - $append = substr($append, 0, strlen($append) - 1) . chr( ord( substr($append, -1) ) + 1 ); - } - - return $filename.$append; + $filename = $rets[1].'_'.$rets[2]; + $append = $rets[3] ? $rets[3] : 'a'; } + + $sql = 'SELECT CategoryId FROM '.$this->tablename.' WHERE (Filename = %s) AND (CategoryId != '.$this->UniqueId().') AND (ParentId = '.$m_var_list['cat'].')'; + while ( $db->GetOne( sprintf($sql, $db->qstr($filename.$append)) ) > 0 ) + { + if (substr($append, -1) == 'z') $append .= 'a'; + $append = substr($append, 0, strlen($append) - 1) . chr( ord( substr($append, -1) ) + 1 ); + } + + return $filename.$append; } return $filename;