Index: /extensions/AMetaData/JpegMetaData/JpegMetaData.class.php
===================================================================
--- /extensions/AMetaData/JpegMetaData/JpegMetaData.class.php	(revision 7398)
+++ /extensions/AMetaData/JpegMetaData/JpegMetaData.class.php	(revision 7399)
@@ -68,5 +68,5 @@
  * |         |            |
  * |         |            | * mantis bug:1859
- * |         |            |   . JpegMetadata class can't manage multiple IPTC keywords
+ * |         |            |   . JpegMetadata class can't manage multiple IPTC
  * |         |            |     keywords
  * |         |            |
@@ -75,8 +75,23 @@
  * |         |            |     'Magic' metadata
  * |         |            |
- * |         |            |
- * |         |            |
- * |         |            |
- * |         |            |
+ * | 1.1.3   | 2010-09-30 | * mantis bug:1894
+ * |         |            |   . Error when filling the metadata repository
+ * |         |            |
+ * |         |            | * mantis bug:1898
+ * |         |            |   . Warning "division by zero" on Canon images
+ * |         |            |
+ * |         |            | * mantis bug:1911
+ * |         |            |   . Unable to read Jpeg file if there is extradata
+ * |         |            |     after the EOI marker
+ * |         |            |
+ * |         |            | * mantis bug:1863
+ * |         |            |   . Except "keywords" meta, all IPTC meta declared
+ * |         |            |     as "repeatable" are not managed
+ * |         |            |
+ * |         |            | * mantis bug:1955
+ * |         |            |   . Incorrect mapping for IPTC File format
+ * |         |            |
+ * |         |            | * mantis bug:1956
+ * |         |            |   . IPTC "Subject Reference" is not implemented
  * |         |            |
  * |         |            |
@@ -420,5 +435,5 @@
                */
               if($data->getNbIFDs()>0 and
-                 ($this->options['magic'] or $this->options['exif'] or $this->options['maker']))
+                 ($this->options['magic'] or $this->options['exif']))
               {
                 $this->loadIfdTags($data->getIFD(0), Schemas::EXIF_TIFF);
Index: /extensions/AMetaData/JpegMetaData/Readers/CanonReader.class.php
===================================================================
--- /extensions/AMetaData/JpegMetaData/Readers/CanonReader.class.php	(revision 7398)
+++ /extensions/AMetaData/JpegMetaData/Readers/CanonReader.class.php	(revision 7399)
@@ -141,4 +141,5 @@
            * null terminated strings
            */
+          print_r($values);
           $returned=ConvertData::toStrings($values);
           break;
@@ -233,6 +234,6 @@
                   {
                     $focalUnit=(array_key_exists(25, $values))?$values[25]:1;
-                    $FocalShort=(array_key_exists(24, $values))?$values[24]/$focalUnit:0;
-                    $FocalLong=(array_key_exists(23, $values))?$values[23]/$focalUnit:0;
+                    $FocalShort=(array_key_exists(24, $values) && ($focalUnit!=0))?$values[24]/$focalUnit:0;
+                    $FocalLong=(array_key_exists(23, $values) && ($focalUnit!=0))?$values[23]/$focalUnit:0;
                     $focal=(($FocalShort==$FocalLong or $FocalLong==0)?$FocalShort:$FocalShort."-".$FocalLong)."mm";
 
Index: /extensions/AMetaData/JpegMetaData/Readers/IptcReader.class.php
===================================================================
--- /extensions/AMetaData/JpegMetaData/Readers/IptcReader.class.php	(revision 7398)
+++ /extensions/AMetaData/JpegMetaData/Readers/IptcReader.class.php	(revision 7399)
@@ -217,54 +217,117 @@
       /* for each entries, convert value to human readable tag value
        *
-       * build a special 'keywords' tag made as an array from all iptc 'keywords' (0x0219) tags found
+       * repeatable values are stored in arrays
+       *
+       * for Subject Reference tags (0x020C), made derived tags (0x020Cnn)
        */
-      $keywordsTag=null;
+      $repeatableTags=array();
       foreach($this->entries as $key => $tag)
       {
         $this->setTagProperties($tag);
-        if($tag->getId()==0x0219)
-        {
-          if(is_null($keywordsTag))
-          {
-            $keywordsTag=new Tag(
-              0x0219,
-              array($tag->getValue()),
-              $tag->getName(),
-              array($tag->getLabel()),
-              "",
-              $tag->isKnown(),
-              $tag->isImplemented(),
-              $tag->isTranslatable(),
-              $tag->getSchema()
-            );
-          }
-          else
-          {
-            $keywordsTag->setValue(array_merge($keywordsTag->getValue(), array($tag->getValue())));
-            $keywordsTag->setLabel(array_merge($keywordsTag->getLabel(), array($tag->getLabel())));
-          }
-        }
-      }
-      if(!is_null($keywordsTag))
+
+        $list=array();
+
+        if($tag->getId()==0x020C)
+        {
+          $tmpValues=explode(':', $tag->getValue());
+          $tmpLabels=explode(':', $tag->getLabel());
+
+          $list=array(
+            array(
+              'id' => 0x020C,
+              'value' => $tag->getValue(),
+              'label' => $tag->getLabel(),
+            ),
+            array(
+              'id' => 0x020C00,
+              'value' => isset($tmpValues[0])?$tmpValues[0]:'',
+              'label' => isset($tmpLabels[0])?$tmpLabels[0]:'',
+            ),
+            array(
+              'id' => 0x020C01,
+              'value' => isset($tmpValues[1])?$tmpValues[1]:'',
+              'label' => isset($tmpLabels[1])?$tmpLabels[1]:'',
+            ),
+            array(
+              'id' => 0x020C02,
+              'value' => isset($tmpValues[2])?$tmpValues[2]:'',
+              'label' => isset($tmpLabels[2])?$tmpLabels[2]:'',
+            ),
+            array(
+              'id' => 0x020C03,
+              'value' => isset($tmpValues[3])?$tmpValues[3]:'',
+              'label' => isset($tmpLabels[3])?$tmpLabels[3]:'',
+            ),
+            array(
+              'id' => 0x020C04,
+              'value' => isset($tmpValues[4])?$tmpValues[4]:'',
+              'label' => isset($tmpLabels[4])?$tmpLabels[4]:'',
+            )
+          );
+        }
+        else
+        {
+          $list=array(
+            array(
+              'id' => $tag->getId(),
+              'value' => $tag->getValue(),
+              'label' => $tag->getLabel(),
+            )
+          );
+        }
+
+
+        foreach($list as $tagItem)
+        {
+          $tagDef=$this->tagDef->getTagById($tagItem['id']);
+
+          if($tagDef['repeatable'])
+          {
+            if(!array_key_exists($tagItem['id'], $repeatableTags))
+            {
+              $repeatableTags[$tagItem['id']]=new Tag(
+                $tagItem['id'],
+                array($tagItem['value']),
+                $tagDef['tagName'],
+                array($tagItem['label']),
+                "",
+                $tag->isKnown(),
+                $tagDef['implemented'],
+                $tagDef['translatable'],
+                $tag->getSchema()
+              );
+            }
+            else
+            {
+              $repeatableTags[$tagItem['id']]->setValue(array_merge($repeatableTags[$tagItem['id']]->getValue(), array($tagItem['value'])));
+              $repeatableTags[$tagItem['id']]->setLabel(array_merge($repeatableTags[$tagItem['id']]->getLabel(), array($tagItem['label'])));
+            }
+          }
+          unset($tagDef);
+        }
+        unset($tagId);
+      }
+      foreach($repeatableTags as $key => $tag)
       {
         /*
          * IPTC 'keywords' is stored like XMP 'xmp.dc:subject' (as a 'seq')
          */
-        $keywordsTag->setValue(
+        $repeatableTags[$key]->setValue(
           array(
             'type' => 'seq',
-            'values' => $keywordsTag->getValue()
+            'values' => $repeatableTags[$key]->getValue()
           )
         );
 
-        $keywordsTag->setLabel(
+        $repeatableTags[$key]->setLabel(
           array(
             'type' => 'seq',
-            'values' => $keywordsTag->getLabel()
+            'values' => $repeatableTags[$key]->getLabel()
           )
         );
-        $this->entries[]=$keywordsTag;
-        unset($keywordsTag);
-      }
+        $this->entries[]=$repeatableTags[$key];
+        unset($repeatableTags[$key]);
+      }
+      unset($repeatableTags);
     }
 
@@ -330,4 +393,5 @@
         case 0x0205: // 2:05  - Title
         case 0x0207: // 2:07  - Edit Status
+        case 0x020C: // 2:12 - Subject Reference
         case 0x020F: // 2:15  - Category
         case 0x0214: // 2:20  - Supplemental Category
@@ -359,5 +423,13 @@
         case 0x0114: // 1:20  - File Format
           $tag=$this->tagDef->getTagById(0x0114);
-          $returned=$tag['tagValues.special'][ConvertData::toUShort($values, BYTE_ORDER_BIG_ENDIAN)];
+          $tmpValue=ConvertData::toUShort($values, BYTE_ORDER_BIG_ENDIAN);
+          if(array_key_exists($tmpValue, $tag['tagValues.special']))
+          {
+            $returned=$tag['tagValues.special'][$tmpValue];
+          }
+          else
+          {
+            $returned='Unknown file format : '.ConvertData::toHexDump($tmpValue, ByteType::USHORT);
+          }
           unset($tag);
           break;
Index: /extensions/AMetaData/JpegMetaData/Readers/JpegReader.class.php
===================================================================
--- /extensions/AMetaData/JpegMetaData/Readers/JpegReader.class.php	(revision 7398)
+++ /extensions/AMetaData/JpegMetaData/Readers/JpegReader.class.php	(revision 7399)
@@ -85,4 +85,8 @@
      */
     const JPEG_EOI = 0xFFD9;
+    /**
+     * start of scan tag
+     */
+    const JPEG_SOS = 0xFFDA;
 
 
@@ -174,14 +178,35 @@
       fseek($this->fileHandler, -2, SEEK_END);
       $header=fread($this->fileHandler, 2);
-      if(ConvertData::toUShort($header, BYTE_ORDER_BIG_ENDIAN) == self::JPEG_EOI)
-      {
-        /*
-         * the file ends with the good marker
-         */
-        fseek($this->fileHandler, 0);
-        $header=fread($this->fileHandler, 2);
-        if(ConvertData::toUShort($header, BYTE_ORDER_BIG_ENDIAN) == self::JPEG_SOI)
-        {
-          return(true);
+      $haveEOI=(ConvertData::toUShort($header, BYTE_ORDER_BIG_ENDIAN) == self::JPEG_EOI);
+
+      // look if 2 first bytes of file are SOI
+      fseek($this->fileHandler, 0);
+      $header=fread($this->fileHandler, 2);
+      if(ConvertData::toUShort($header, BYTE_ORDER_BIG_ENDIAN) == self::JPEG_SOI)
+      {
+        //if file have EOI, it seems to be a valid JPEG file
+        if($haveEOI) return(true);
+
+        // otherwise, try to find SOS
+        while(!feof($this->fileHandler))
+        {
+          $header=ConvertData::toUShort(fread($this->fileHandler, 2), BYTE_ORDER_BIG_ENDIAN);
+
+          if($header==self::JPEG_EOI or $header==self::JPEG_SOS )
+          {
+            //seems to be a valid JPEG file
+            return(true);
+          }
+          elseif($header>>8==0xFF)
+          {
+            //seems to be a valid marker, jump to next marker...
+            $sizeBlock=ConvertData::toUShort(fread($this->fileHandler, 2), BYTE_ORDER_BIG_ENDIAN);
+            fseek($this->fileHandler, $sizeBlock-2, SEEK_CUR);
+          }
+          else
+          {
+            // not a marker, not e JPEG file
+            return(false);
+          }
         }
       }
Index: /extensions/AMetaData/JpegMetaData/TagDefinitions/IptcTags.class.php
===================================================================
--- /extensions/AMetaData/JpegMetaData/TagDefinitions/IptcTags.class.php	(revision 7398)
+++ /extensions/AMetaData/JpegMetaData/TagDefinitions/IptcTags.class.php	(revision 7399)
@@ -58,4 +58,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -64,4 +65,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -81,25 +83,26 @@
           0x0008 => "IPTC Unstructured Character Oriented File Format (UCOFF)",
           0x0009 => "United Press International ANPA 1312 variant",
-          0x0010 => "United Press International Down-Load Message",
-          0x0011 => "JPEG File Interchange (JFIF)",
-          0x0012 => "Photo-CD Image-Pac (Eastman Kodak)",
-          0x0013 => "Microsoft Bit Mapped Graphics File [*.BMP]",
-          0x0014 => "Digital Audio File [*.WAV] (Microsoft & Creative Labs)",
-          0x0015 => "Audio plus Moving Video [*.AVI] (Microsoft)",
-          0x0016 => "PC DOS/Windows Executable Files [*.COM][*.EXE]",
-          0x0017 => "Compressed Binary File [*.ZIP] (PKWare Inc)",
-          0x0018 => "Audio Interchange File Format AIFF (Apple Computer Inc)",
-          0x0019 => "RIFF Wave (Microsoft Corporation)",
-          0x0020 => "Freehand (Macromedia/Aldus)",
-          0x0021 => "Hypertext Markup Language 'HTML' (The Internet Society)",
-          0x0022 => "MPEG 2 Audio Layer 2 (Musicom), ISO/IEC",
-          0x0023 => "MPEG 2 Audio Layer 3, ISO/IEC",
-          0x0024 => "Portable Document File (*.PDF) Adobe",
-          0x0025 => "News Industry Text Format (NITF)",
-          0x0026 => "Tape Archive (*.TAR)",
-          0x0027 => "Tidningarnas Telegrambyrå NITF version (TTNITF DTD)",
-          0x0028 => "Ritzaus Bureau NITF version (RBNITF DTD)",
-          0x0029 => "Corel Draw [*.CDR]",
+          0x000A => "United Press International Down-Load Message",
+          0x000B => "JPEG File Interchange (JFIF)",
+          0x000C => "Photo-CD Image-Pac (Eastman Kodak)",
+          0x000D => "Microsoft Bit Mapped Graphics File [*.BMP]",
+          0x000E => "Digital Audio File [*.WAV] (Microsoft & Creative Labs)",
+          0x000F => "Audio plus Moving Video [*.AVI] (Microsoft)",
+          0x0010 => "PC DOS/Windows Executable Files [*.COM][*.EXE]",
+          0x0011 => "Compressed Binary File [*.ZIP] (PKWare Inc)",
+          0x0012 => "Audio Interchange File Format AIFF (Apple Computer Inc)",
+          0x0013 => "RIFF Wave (Microsoft Corporation)",
+          0x0014 => "Freehand (Macromedia/Aldus)",
+          0x0015 => "Hypertext Markup Language 'HTML' (The Internet Society)",
+          0x0016 => "MPEG 2 Audio Layer 2 (Musicom), ISO/IEC",
+          0x0017 => "MPEG 2 Audio Layer 3, ISO/IEC",
+          0x0018 => "Portable Document File (*.PDF) Adobe",
+          0x0019 => "News Industry Text Format (NITF)",
+          0x001A => "Tape Archive (*.TAR)",
+          0x001B => "Tidningarnas Telegrambyrå NITF version (TTNITF DTD)",
+          0x001C => "Ritzaus Bureau NITF version (RBNITF DTD)",
+          0x001D => "Corel Draw [*.CDR]",
         ),
+        'repeatable' => false,
       ),
 
@@ -108,4 +111,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -114,4 +118,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -121,4 +126,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -127,4 +133,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -133,4 +140,5 @@
         'implemented'  => true,
         'translatable' => true,
+        'repeatable' => false,
         'tagValues'    => Array(
            '0' => 'none',
@@ -150,4 +158,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -156,4 +165,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -162,4 +172,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -168,4 +179,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -174,4 +186,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -180,4 +193,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -186,4 +200,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -192,4 +207,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -198,4 +214,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -204,4 +221,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -210,4 +228,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -216,4 +235,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -222,4 +242,5 @@
         'implemented'  => true,
         'translatable' => true,
+        'repeatable' => false,
         'tagValues'    => Array(
            '0' => 'none',
@@ -238,7 +259,40 @@
       0x020C => Array( //2:12
         'tagName'      => "Subject Reference",
-        'implemented'  => false,
-        'translatable' => false,
-      ),
+        'implemented'  => true,
+        'translatable' => false,
+        'repeatable' => true,
+      ),
+
+      0x020C00 => Array( //2:12:00 --> fake code, not in IPTC Spec.
+        'tagName'      => "Subject Reference[IPR]",
+        'implemented'  => true,
+        'translatable' => false,
+        'repeatable' => true,
+      ),
+      0x020C01 => Array( //2:12:01 --> fake code, not in IPTC Spec.
+        'tagName'      => "Subject Reference[Number]",
+        'implemented'  => true,
+        'translatable' => false,
+        'repeatable' => true,
+      ),
+      0x020C02 => Array( //2:12:02 --> fake code, not in IPTC Spec.
+        'tagName'      => "Subject Reference[Name]",
+        'implemented'  => true,
+        'translatable' => false,
+        'repeatable' => true,
+      ),
+      0x020C03 => Array( //2:12:03 --> fake code, not in IPTC Spec.
+        'tagName'      => "Subject Reference[Matter Name]",
+        'implemented'  => true,
+        'translatable' => false,
+        'repeatable' => true,
+      ),
+      0x020C04 => Array( //2:12:04 --> fake code, not in IPTC Spec.
+        'tagName'      => "Subject Reference[Detail Name]",
+        'implemented'  => true,
+        'translatable' => false,
+        'repeatable' => true,
+      ),
+
 
       0x020F => Array( //2:15
@@ -246,4 +300,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -252,4 +307,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -258,4 +314,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -264,4 +321,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -270,4 +328,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -276,4 +335,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -282,4 +342,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -288,4 +349,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -294,4 +356,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -300,4 +363,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -306,4 +370,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -312,4 +377,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -318,4 +384,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -324,4 +391,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -330,4 +398,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -336,4 +405,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -342,4 +412,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -348,4 +419,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -354,4 +426,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -360,4 +433,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -366,4 +440,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -372,4 +447,5 @@
         'implemented'  => true,
         'translatable' => true,
+        'repeatable' => false,
         'tagValues'    => Array(
           'a' => "morning",
@@ -383,4 +459,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -389,4 +466,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -395,4 +473,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -401,4 +480,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -407,4 +487,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -413,4 +494,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -419,4 +501,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -425,4 +508,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -431,4 +515,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -437,4 +522,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -443,4 +529,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -449,4 +536,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -455,4 +543,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -461,4 +550,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -467,4 +557,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -473,4 +564,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -479,4 +571,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
         'tagValues.special' => Array(
          0 => Array(
@@ -510,4 +603,5 @@
         'implemented'  => true,
         'translatable' => true,
+        'repeatable' => false,
         'tagValues'    => Array(
           'P' => "portrait",
@@ -521,4 +615,5 @@
         'implemented'  => true,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -527,4 +622,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -533,4 +629,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -539,4 +636,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -545,4 +643,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -552,4 +651,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -558,4 +658,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -564,4 +665,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -570,4 +672,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -576,4 +679,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -582,4 +686,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -588,4 +693,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -594,4 +700,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
 
@@ -600,4 +707,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => true,
       ),
 
@@ -606,4 +714,5 @@
         'implemented'  => false,
         'translatable' => false,
+        'repeatable' => false,
       ),
     );
Index: /extensions/AMetaData/admin/amd_metadata_display_groupEdit.tpl
===================================================================
--- /extensions/AMetaData/admin/amd_metadata_display_groupEdit.tpl	(revision 7398)
+++ /extensions/AMetaData/admin/amd_metadata_display_groupEdit.tpl	(revision 7399)
@@ -23,5 +23,5 @@
     {if isset($datasLang.language_list) and count($datasLang.language_list)}
       {foreach from=$datasLang.language_list key=name item=language_row}
-        <input type='hidden' id='iName_{$name}' value='{$language_row.name}'>
+        <input type='hidden' id='iName_{$name}' value='{$language_row.name}' size=60 maxlength =80>
       {/foreach}
     {/if}
Index: /extensions/AMetaData/admin/amd_metadata_personnal.tpl
===================================================================
--- /extensions/AMetaData/admin/amd_metadata_personnal.tpl	(revision 7398)
+++ /extensions/AMetaData/admin/amd_metadata_personnal.tpl	(revision 7399)
@@ -81,5 +81,5 @@
         .bind('dialogopen', function ()
           {
-            if(options.id!='')
+            if(options.numId!='')
             {
               displayProcessing(true);
Index: /extensions/AMetaData/amd_aip_install.class.inc.php
===================================================================
--- /extensions/AMetaData/amd_aip_install.class.inc.php	(revision 7398)
+++ /extensions/AMetaData/amd_aip_install.class.inc.php	(revision 7399)
@@ -230,4 +230,10 @@
       'iptc.Source',
       'iptc.Special Instructions',
+      'iptc.Subject Reference',
+      'iptc.Subject Reference[Detail Name]',
+      'iptc.Subject Reference[IPR]',
+      'iptc.Subject Reference[Matter Name]',
+      'iptc.Subject Reference[Name]',
+      'iptc.Subject Reference[Number]',
       'iptc.Sublocation',
       'iptc.Supplemental Category',
Index: /extensions/AMetaData/amd_install.class.inc.php
===================================================================
--- /extensions/AMetaData/amd_install.class.inc.php	(revision 7398)
+++ /extensions/AMetaData/amd_install.class.inc.php	(revision 7399)
@@ -123,5 +123,5 @@
       $tablesInsert=array(
 "INSERT INTO `".$this->tables['groups']."` VALUES(1, 0)",
-"INSERT INTO `".$this->tables['groups_names']."` VALUES(1, '".$user['language']."', '".$lang['g003_default_group_name']."')",
+$this->buildDefaultGroup(),
 "INSERT INTO `".$this->tables['selected_tags']."` VALUES
     ('magic.Camera.Make', 0, 1),
@@ -292,4 +292,19 @@
     }
 
+    private function buildDefaultGroup()
+    {
+      $sql=array();
+      $languages=get_languages();
+      foreach($languages as $key => $val)
+      {
+        load_language('plugin.lang', AMD_PATH, array('language' => $key, 'no_fallback'=>true));
+        $sql[]="(1, '".$key."', '".l10n('g003_default_group_name')."')";
+      }
+
+      //reload default user language
+      load_language('plugin.lang', AMD_PATH);
+      return("INSERT INTO `".$this->tables['groups_names']."` VALUES ".implode(',', $sql));
+    }
+
   } //class
 
Index: /extensions/AMetaData/amd_rb_callback.class.inc.php
===================================================================
--- /extensions/AMetaData/amd_rb_callback.class.inc.php	(revision 7398)
+++ /extensions/AMetaData/amd_rb_callback.class.inc.php	(revision 7399)
@@ -52,5 +52,5 @@
   static public function getSelect($param="")
   {
-    return("pait.value AS amdValue, paut.name AS amdName");
+    return(" pait.value AS amdValue, paut.name AS amdName ");
   }
 
Index: /extensions/AMetaData/main.inc.php
===================================================================
--- /extensions/AMetaData/main.inc.php	(revision 7398)
+++ /extensions/AMetaData/main.inc.php	(revision 7399)
@@ -126,4 +126,27 @@
 |         |            |   new package
 |         |            |
+| 0.x.y   | 2010/09/30 | * mantis bug:1894
+|         |            |   . Error when filling the metadata repository
+|         |            |
+|         |            | * mantis bug:1898
+|         |            |   . Warning "division by zero" on Canon images
+|         |            |
+|         |            | * mantis bug:1911
+|         |            |   . Unable to read Jpeg file if there is extradata
+|         |            |     after the EOI marker
+|         |            |
+|         |            | * mantis bug:1863
+|         |            |   . Except "keywords" meta, all IPTC meta declared
+|         |            |     as "repeatable" are not managed
+|         |            |
+|         |            | * mantis bug:1955
+|         |            |   . Incorrect mapping for IPTC File format
+|         |            |
+|         |            | * mantis bug:1956
+|         |            |   . IPTC "Subject Reference" is not implemented
+|         |            |
+|         |            | * mantis bug:1925
+|         |            |   . default selected tags works only for the french
+|         |            |     user
 |         |            |
 |         |            |
