* @link http://status.net/
*/
-if (!defined('STATUSNET')) {
- exit(1);
-}
+if (!defined('GNUSOCIAL')) { exit(1); }
class SchemaUpdater
{
*/
public function register($tableName, array $tableDef)
{
+ // Check if the table we're registering is related to a Managed_DataObject
+ if (is_a(ucfirst($tableName), 'Managed_DataObject', true)) {
+ call_user_func("{$tableName}::beforeSchemaUpdate");
+ }
+
$this->tables[$tableName] = $tableDef;
}
{
$checksums = array();
- $sv = new Schema_version();
- $sv->find();
- while ($sv->fetch()) {
- $checksums[$sv->table_name] = $sv->checksum;
+ PEAR::pushErrorHandling(PEAR_ERROR_EXCEPTION);
+ try {
+ $sv = new Schema_version();
+ $sv->find();
+ while ($sv->fetch()) {
+ $checksums[$sv->table_name] = $sv->checksum;
+ }
+
+ return $checksums;
+ } catch (Exception $e) {
+ // no dice!
+ common_log(LOG_DEBUG, "Possibly schema_version table doesn't exist yet.");
}
+ PEAR::popErrorHandling();
return $checksums;
}
*/
protected function saveChecksum($table, $checksum)
{
- $sv = new Schema_version();
- $sv->table_name = $table;
- $sv->checksum = $checksum;
- $sv->modified = common_sql_now();
- if (isset($this->checksums[$table])) {
- $sv->update();
- } else {
- $sv->insert();
+ PEAR::pushErrorHandling(PEAR_ERROR_EXCEPTION);
+ try {
+ $sv = new Schema_version();
+ $sv->table_name = $table;
+ $sv->checksum = $checksum;
+ $sv->modified = common_sql_now();
+ if (isset($this->checksums[$table])) {
+ $sv->update();
+ } else {
+ $sv->insert();
+ }
+ } catch (Exception $e) {
+ // no dice!
+ common_log(LOG_DEBUG, "Possibly schema_version table doesn't exist yet.");
}
+ PEAR::popErrorHandling();
$this->checksums[$table] = $checksum;
}
}