File_thumbnail uses file_id as PRI

This commit is contained in:
Mikael Nordfeldth 2015-01-25 13:13:01 +01:00
parent 12058c30b4
commit 470971cf47
2 changed files with 16 additions and 7 deletions

View File

@ -323,7 +323,12 @@ abstract class Managed_DataObject extends Memcached_DataObject
// 'update' won't write key columns, so we have to do it ourselves.
// This also automatically calls "update" _before_ it sets the keys.
public function updateWithKeys(&$orig)
// FIXME: This only works with single-column primary keys so far! Beware!
/**
* @param DB_DataObject &$orig Must be "instanceof" $this
* @param string $pid Primary ID column (no escaping is done on column name!)
*/
public function updateWithKeys(&$orig, $pid='id')
{
if (!$orig instanceof $this) {
throw new ServerException('Tried updating a DataObject with a different class than itself.');
@ -346,14 +351,17 @@ abstract class Managed_DataObject extends Memcached_DataObject
$this->query('ROLLBACK');
throw new ServerException("Could not UPDATE non-keys for {$this->__table}");
}
$orig->decache();
$this->encache();
return true;
}
$toupdate = implode(', ', $parts);
$table = common_database_tablename($this->tableName());
$qry = 'UPDATE ' . $table . ' SET ' . $toupdate .
' WHERE id = ' . $this->getID();
$orig->decache();
$qry = sprintf('UPDATE %1$s SET %2$s WHERE %3$s = %4$s',
common_database_tablename($this->tableName()),
implode(', ', $parts),
$pid,
$this->_quote($this->$pid));
$result = $this->query($qry);
if ($result === false) {
common_log_db_error($this, 'UPDATE', __FILE__);
@ -371,6 +379,7 @@ abstract class Managed_DataObject extends Memcached_DataObject
$this->query('ROLLBACK');
throw new ServerException("Could not UPDATE non-keys for {$this->__table}");
}
$orig->decache();
$this->encache();
// commit our db transaction

View File

@ -289,7 +289,7 @@ class OembedPlugin extends Plugin
$thumbnail->width = $info[0]; // array indexes documented on php.net:
$thumbnail->height = $info[1]; // https://php.net/manual/en/function.getimagesize.php
// Throws exception on failure.
$thumbnail->updateWithKeys($orig);
$thumbnail->updateWithKeys($orig, 'file_id');
}
public function onPluginVersion(array &$versions)