forked from GNUsocial/gnu-social
		
	Conversation entries where id==0 would screw up the "re-auto-increment" sequencing
This commit is contained in:
		@@ -34,7 +34,7 @@ if (!defined('GNUSOCIAL')) { exit(1); }
 | 
			
		||||
class Conversation extends Managed_DataObject
 | 
			
		||||
{
 | 
			
		||||
    public $__table = 'conversation';        // table name
 | 
			
		||||
    public $id;                              // int(4)  primary_key not_null
 | 
			
		||||
    public $id;                              // int(4)  primary_key not_null auto_increment
 | 
			
		||||
    public $uri;                             // varchar(191)  unique_key   not 255 because utf8mb4 takes more space
 | 
			
		||||
    public $created;                         // datetime   not_null
 | 
			
		||||
    public $modified;                        // timestamp   not_null default_CURRENT_TIMESTAMP
 | 
			
		||||
@@ -55,6 +55,32 @@ class Conversation extends Managed_DataObject
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static public function beforeSchemaUpdate()
 | 
			
		||||
    {
 | 
			
		||||
        $table = strtolower(get_called_class());
 | 
			
		||||
        $schema = Schema::get();
 | 
			
		||||
        $schemadef = $schema->getTableDef($table);
 | 
			
		||||
 | 
			
		||||
        // 2016-01-06 We have to make sure there is no conversation with id==0 since it will screw up auto increment resequencing
 | 
			
		||||
        if ($schemadef['fields']['id']['auto_increment']) {
 | 
			
		||||
            // since we already have auto incrementing ('serial') we can continue
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // The conversation will be recreated in upgrade.php, which will
 | 
			
		||||
        // generate a new URI, but that's collateral damage for you.
 | 
			
		||||
        $conv = new Conversation();
 | 
			
		||||
        $conv->id = 0;
 | 
			
		||||
        if ($conv->find()) {
 | 
			
		||||
            while ($conv->fetch()) {
 | 
			
		||||
                // Since we have filtered on 0 this only deletes such entries
 | 
			
		||||
                // which I have been afraid wouldn't work, but apparently does!
 | 
			
		||||
                // (I thought it would act as null or something and find _all_ conversation entries)
 | 
			
		||||
                $conv->delete();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Factory method for creating a new conversation.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user