Author: sevein
Date: Thu Jul 14 15:17:21 2011
New Revision: 9314

Log:
First approach to accession number field

Modified:
   trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php
   
trunk/plugins/qtAccessionPlugin/modules/accession/actions/editAction.class.php

Modified: trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php
==============================================================================
--- trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php        Thu Jul 
14 14:19:55 2011        (r9313)
+++ trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php        Thu Jul 
14 15:17:21 2011        (r9314)
@@ -33,4 +33,39 @@
 
     return parent::insert($connection);
   }
+
+  public static function getLatestAccession()
+  {
+    $criteria = new Criteria;
+    $criteria->addDescendingOrderByColumn(QubitObject::CREATED_AT);
+    $criteria->setLimit(1);
+
+    return QubitObject::get($criteria)->offsetGet(0);
+  }
+
+  public static function generateAccessionNumber()
+  {
+    return preg_replace_callback('/([#%])([A-z]+)/', function ($match)
+    {
+      if ('%' == $match[1])
+      {
+        return strftime('%'.$match[2]);
+      }
+      else if ('#' == $match[1])
+      {
+        switch($match[2])
+        {
+          case 'i':
+
+            $latest = QubitAccession::getLatestAccession();
+
+            return $latest->id;
+
+          default:
+
+            return $match[2];
+        }
+      }
+    }, sfConfig::get('app_accession_mask'));
+  }
 }

Modified: 
trunk/plugins/qtAccessionPlugin/modules/accession/actions/editAction.class.php
==============================================================================
--- 
trunk/plugins/qtAccessionPlugin/modules/accession/actions/editAction.class.php  
    Thu Jul 14 14:19:55 2011        (r9313)
+++ 
trunk/plugins/qtAccessionPlugin/modules/accession/actions/editAction.class.php  
    Thu Jul 14 15:17:21 2011        (r9314)
@@ -159,18 +159,34 @@
         break;
 
       case 'date':
-        // If it is a *new* accession, set current date as default
+        $this->form->setDefault('date', $this->resource['date']);
+
         if (!isset($this->resource->id))
         {
           $dt = new DateTime;
           $this->form->setDefault('date', $dt->format('Y-m-d'));
-          $this->form->setValidator('date', new sfValidatorString);
-          $this->form->setWidget('date', new sfWidgetFormInput);
-
-          break;
         }
+        
+        $this->form->setValidator('date', new sfValidatorString);
+        $this->form->setWidget('date', new sfWidgetFormInput);
+
+        break;
 
       case 'identifier':
+
+        $this->form->setDefault('identifier', $this->resource['identifier']);
+
+        if (!isset($this->resource->id))
+        {
+          $dt = new DateTime;
+          $this->form->setDefault('identifier', 
QubitAccession::generateAccessionNumber());
+        }
+
+        $this->form->setValidator('identifier', new sfValidatorString);
+        $this->form->setWidget('identifier', new sfWidgetFormInput);
+
+        break;
+
       case 'receivedExtentUnits':
       case 'title':
         $this->form->setDefault($name, $this->resource[$name]);

-- 
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