Author: sevein
Date: Mon Jul 18 17:47:09 2011
New Revision: 9321

Log:
Add padding and accession_counter support

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

Modified: trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php
==============================================================================
--- trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php        Mon Jul 
18 17:46:04 2011        (r9320)
+++ trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php        Mon Jul 
18 17:47:09 2011        (r9321)
@@ -26,26 +26,34 @@
 
   protected function insert($connection = null)
   {
+    $this->identifier = self::generateAccessionIdentifier(true);
+
     if (!isset($this->slug))
     {
       $this->slug = QubitSlug::slugify($this->__get('identifier', 
array('sourceCulture' => true)));
     }
 
-    return parent::insert($connection);
+    parent::insert($connection);
   }
 
-  public static function getLatestAccession()
+  public static function getAccessionNumber($incrementCounter)
   {
-    $criteria = new Criteria;
-    $criteria->addDescendingOrderByColumn(QubitObject::CREATED_AT);
-    $criteria->setLimit(1);
+    $setting = QubitSetting::getSettingByName('accession_counter');
+
+    if ($incrementCounter)
+    {
+      $setting->value = $setting->getValue(array('sourceCulture' => true)) + 1;
+      $setting->save();
+
+      return $setting->getValue(array('sourceCulture' => true));
+    }
 
-    return QubitObject::get($criteria)->offsetGet(0);
+    return $setting->getValue(array('sourceCulture' => true)) + 1;
   }
 
-  public static function generateAccessionNumber()
+  public static function generateAccessionIdentifier($incrementCounter = false)
   {
-    return preg_replace_callback('/([#%])([A-z]+)/', function ($match)
+    return preg_replace_callback('/([#%])([A-z]+)/', function($match) use 
($incrementCounter)
     {
       if ('%' == $match[1])
       {
@@ -53,17 +61,17 @@
       }
       else if ('#' == $match[1])
       {
-        switch($match[2])
+        if (0 < preg_match('/^i+$/', $match[2], $matches))
         {
-          case 'i':
+          $pad = strlen($matches[0]);
+          $number = QubitAccession::getAccessionNumber($incrementCounter);
 
-            $latest = QubitAccession::getLatestAccession();
-
-            return $latest->id;
-
-          default:
-
-            return $match[2];
+          return str_pad($number, $pad, 0, STR_PAD_LEFT);
+          // return sprintf('%0' . $pad . 'd', $number);
+        }
+        else
+        {
+          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  
    Mon Jul 18 17:46:04 2011        (r9320)
+++ 
trunk/plugins/qtAccessionPlugin/modules/accession/actions/editAction.class.php  
    Mon Jul 18 17:47:09 2011        (r9321)
@@ -166,7 +166,7 @@
           $dt = new DateTime;
           $this->form->setDefault('date', $dt->format('Y-m-d'));
         }
-        
+
         $this->form->setValidator('date', new sfValidatorString);
         $this->form->setWidget('date', new sfWidgetFormInput);
 
@@ -179,11 +179,11 @@
         if (!isset($this->resource->id))
         {
           $dt = new DateTime;
-          $this->form->setDefault('identifier', 
QubitAccession::generateAccessionNumber());
+          $this->form->setDefault('identifier', 
QubitAccession::generateAccessionIdentifier());
         }
 
         $this->form->setValidator('identifier', new sfValidatorString);
-        $this->form->setWidget('identifier', new sfWidgetFormInput);
+        $this->form->setWidget('identifier', new sfWidgetFormInput(array(), 
array('disabled' => 'disabled')));
 
         break;
 
@@ -264,6 +264,9 @@
 
         break;
 
+      case 'identifier':
+        break;
+
       default:
         return parent::processField($field);
     }

Modified: 
trunk/plugins/qtAccessionPlugin/modules/accession/templates/editSuccess.php
==============================================================================
--- trunk/plugins/qtAccessionPlugin/modules/accession/templates/editSuccess.php 
Mon Jul 18 17:46:04 2011        (r9320)
+++ trunk/plugins/qtAccessionPlugin/modules/accession/templates/editSuccess.php 
Mon Jul 18 17:47:09 2011        (r9321)
@@ -15,7 +15,7 @@
   <?php echo $form->identifier
     ->label(__('Accession number').' <span class="form-required" 
title="'.__('This is a mandatory element.').'">*</span>')
     ->renderRow() ?>
-    
+
   <?php echo $form->date
     ->label(__('Acquisition date').' <span class="form-required" 
title="'.__('This is a mandatory element.').'">*</span>')
     ->renderRow(array('class' => 'date-widget', 'icon' => 
image_path('calendar.png'))) ?>

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