Author: sevein
Date: Tue Jul 24 17:00:48 2012
New Revision: 11975

Log:
More fixes in SQL upgrades

Modified:
   trunk/lib/task/migrate/arUpgrader110.class.php
   trunk/lib/task/migrate/arUpgrader120.class.php

Modified: trunk/lib/task/migrate/arUpgrader110.class.php
==============================================================================
--- trunk/lib/task/migrate/arUpgrader110.class.php      Tue Jul 24 15:05:04 
2012        (r11974)
+++ trunk/lib/task/migrate/arUpgrader110.class.php      Tue Jul 24 17:00:48 
2012        (r11975)
@@ -30,7 +30,7 @@
     MILESTONE = '1.1',
     INIT_VERSION = 62;
 
-  public function up($version, $configuration)
+  public function up($version, $configuration, $options)
   {
     // This upgrader class is a port of QubitMigrate110
     // updateSchema() introduces the SQL schema changes that did not
@@ -40,6 +40,11 @@
       $this->updateSchema($configuration);
     }
 
+    if (isset($options['verbose']))
+    {
+      echo "up($version)\n";
+    }
+
     switch ($version)
     {
       // Add accession module menu entry, internal taxonomies,
@@ -462,7 +467,7 @@
       case 64:
         $sql  = 'UPDATE '.QubitDigitalObject::TABLE_NAME;
         $sql .= ' SET '.QubitDigitalObject::CHECKSUM_TYPE.' = "md5"';
-        $sql .= ' WHERE CHAR_LENGTH(checksum_type) > 0';
+        $sql .= ' WHERE CHAR_LENGTH(checksum) > 0';
         QubitPdo::modify($sql);
 
         break;
@@ -547,20 +552,20 @@
         break;
 
       // Move digital objects to repository specific paths like r9503
-      case 70: echo "TODO case 70 NEEDS TESTING\n";
+      case 70:
         if (!file_exists(sfConfig::get('sf_upload_dir').'/r'))
         {
           mkdir(sfConfig::get('sf_upload_dir').'/r', 0775);
         }
 
         $criteria = new Criteria;
-        $criteria->add(QubitDigitalObject::INFORMATION_OBJECT_ID, 
Criteria::ISNOTNULL);
+        $criteria->add(QubitDigitalObject::INFORMATION_OBJECT_ID, null, 
Criteria::ISNOTNULL);
         foreach (QubitDigitalObject::get($criteria) as $item)
         {
           $io = QubitInformationObject::getById($item->informationObjectId);
 
           // Build repository dirname
-          if (null !== $repository = $io->getRepository)
+          if (null !== $repository = $io->getRepository(array('inherit' => 
true)))
           {
             if (!isset($repository->slug))
             {
@@ -582,8 +587,16 @@
             $repoName = 'null';
           }
 
-          foreach ($io->getDescendants()->andSelf() as $digitalObject)
+          // Update digital object and derivatives paths
+          $criteria = new Criteria;
+          $c1 = $criteria->getNewCriterion(QubitDigitalObject::PARENT_ID, 
$item->id);
+          $c2 = $criteria->getNewCriterion(QubitDigitalObject::ID, $item->id);
+          $c1->addOr($c2);
+          $criteria->add($c1);
+          $criteria->addAscendingOrderByColumn(QubitDigitalObject::USAGE_ID);
+          foreach (QubitDigitalObject::get($criteria) as $digitalObject)
           {
+            // Don't try to move remote assets
             if (QubitTerm::EXTERNAL_URI_ID == $digitalObject->usageId)
             {
               continue;
@@ -748,12 +761,16 @@
   public function updateSchema($configuration)
   {
     // Add ON DELETE CASCADE in slug.object_id
+    $connection = Propel::getConnection();
+    $connection->exec('SET FOREIGN_KEY_CHECKS = 0');
     $sql = "ALTER TABLE `slug`
               DROP FOREIGN KEY `slug_FK_1`,
               ADD FOREIGN KEY (`object_id`)
                 REFERENCES  `qubit`.`object` (`id`)
-                ON DELETE CASCADE ON UPDATE RESTRICT;";
-    QubitPdo::modify($sql);
+                ON DELETE CASCADE
+                ON UPDATE RESTRICT;";
+    $connection->exec($sql);
+    $connection->exec('SET FOREIGN_KEY_CHECKS = 1');
 
     // Drop parent_id, lft and rgt columns from table note
     QubitMigrate::dropColumn(QubitNote::TABLE_NAME, 'parent_id');
@@ -773,7 +790,7 @@
     // Add repository.upload_limit
     QubitMigrate::addColumn(QubitRepository::TABLE_NAME, 'upload_limit FLOAT', 
array('after' => 'desc_identifier'));
 
-    // Drop column digita_object.checksum_type_id
+    // Drop column digital_object.checksum_type_id
     QubitMigrate::dropColumn(QubitDigitalObject::TABLE_NAME, 
'checksum_type_id');
 
     // Add column digital_object.checksumn_type

Modified: trunk/lib/task/migrate/arUpgrader120.class.php
==============================================================================
--- trunk/lib/task/migrate/arUpgrader120.class.php      Tue Jul 24 15:05:04 
2012        (r11974)
+++ trunk/lib/task/migrate/arUpgrader120.class.php      Tue Jul 24 17:00:48 
2012        (r11975)
@@ -30,8 +30,13 @@
     MILESTONE = '1.2',
     INIT_VERSION = 75;
 
-  public function up($version, $configuration)
+  public function up($version, $configuration, $options)
   {
+    if (isset($options['verbose']))
+    {
+      echo "up($version)\n";
+    }
+
     switch ($version)
     {
       // Add setting for job_scheduling

-- 
You received this message because you are subscribed to the Google Groups 
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/qubit-commits?hl=en.

Reply via email to