Index: trunk/kernel/units/general/cat_dbitem.php =================================================================== diff -u -r3250 -r3253 --- trunk/kernel/units/general/cat_dbitem.php (.../cat_dbitem.php) (revision 3250) +++ trunk/kernel/units/general/cat_dbitem.php (.../cat_dbitem.php) (revision 3253) @@ -214,10 +214,19 @@ function checkAutoFilename($filename) { - if(!$filename || $this->GetID() == 0 ) return $filename; + if(!$filename || is_null( $this->GetID() ) ) return $filename; + // check temp table $sql = 'SELECT '.$this->IDField.' FROM '.$this->TableName.' WHERE Filename = '.$this->Conn->qstr($filename); $found_item_id = $this->Conn->GetOne($sql); + + if($found_item_id === false) + { + // check live table + $sql = 'SELECT '.$this->IDField.' FROM '.kTempTablesHandler::GetLiveName($this->TableName).' WHERE Filename = '.$this->Conn->qstr($filename); + $found_item_id = $this->Conn->GetOne($sql); + } + $has_page = preg_match('/(.*)_([\d]+)([a-z]*)$/', $filename, $rets); if( ($found_item_id != $this->GetID()) || $has_page ) // other category has same filename as ours OR we have filename, that ends with _number { @@ -228,13 +237,16 @@ $append = $rets[3] ? $rets[3] : 'a'; } - $sql = 'SELECT '.$this->IDField.' FROM '.$this->TableName.' WHERE (Filename = %s) AND ('.$this->IDField.' != '.$this->GetID().')'; - while ( $this->Conn->GetOne( sprintf($sql, $this->Conn->qstr($filename.$append)) ) > 0 ) + // check live & temp table + $sql_temp = 'SELECT '.$this->IDField.' FROM '.$this->TableName.' WHERE (Filename = %s) AND ('.$this->IDField.' != '.$this->GetID().')'; + $sql_live = 'SELECT '.$this->IDField.' FROM '.kTempTablesHandler::GetLiveName($this->TableName).' WHERE (Filename = %s) AND ('.$this->IDField.' != '.$this->GetID().')'; + while ( $this->Conn->GetOne( sprintf($sql_temp, $this->Conn->qstr($filename.$append)) ) > 0 || + $this->Conn->GetOne( sprintf($sql_live, $this->Conn->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; }