Changeset 7399
- Timestamp:
- Oct 26, 2010, 10:48:08 AM (14 years ago)
- Location:
- extensions/AMetaData
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/AMetaData/JpegMetaData/JpegMetaData.class.php
r6986 r7399 68 68 * | | | 69 69 * | | | * mantis bug:1859 70 * | | | . JpegMetadata class can't manage multiple IPTC keywords70 * | | | . JpegMetadata class can't manage multiple IPTC 71 71 * | | | keywords 72 72 * | | | … … 75 75 * | | | 'Magic' metadata 76 76 * | | | 77 * | | | 78 * | | | 79 * | | | 80 * | | | 77 * | 1.1.3 | 2010-09-30 | * mantis bug:1894 78 * | | | . Error when filling the metadata repository 79 * | | | 80 * | | | * mantis bug:1898 81 * | | | . Warning "division by zero" on Canon images 82 * | | | 83 * | | | * mantis bug:1911 84 * | | | . Unable to read Jpeg file if there is extradata 85 * | | | after the EOI marker 86 * | | | 87 * | | | * mantis bug:1863 88 * | | | . Except "keywords" meta, all IPTC meta declared 89 * | | | as "repeatable" are not managed 90 * | | | 91 * | | | * mantis bug:1955 92 * | | | . Incorrect mapping for IPTC File format 93 * | | | 94 * | | | * mantis bug:1956 95 * | | | . IPTC "Subject Reference" is not implemented 81 96 * | | | 82 97 * | | | … … 420 435 */ 421 436 if($data->getNbIFDs()>0 and 422 ($this->options['magic'] or $this->options['exif'] or $this->options['maker']))437 ($this->options['magic'] or $this->options['exif'])) 423 438 { 424 439 $this->loadIfdTags($data->getIFD(0), Schemas::EXIF_TIFF); -
extensions/AMetaData/JpegMetaData/Readers/CanonReader.class.php
r6729 r7399 141 141 * null terminated strings 142 142 */ 143 print_r($values); 143 144 $returned=ConvertData::toStrings($values); 144 145 break; … … 233 234 { 234 235 $focalUnit=(array_key_exists(25, $values))?$values[25]:1; 235 $FocalShort=(array_key_exists(24, $values) )?$values[24]/$focalUnit:0;236 $FocalLong=(array_key_exists(23, $values) )?$values[23]/$focalUnit:0;236 $FocalShort=(array_key_exists(24, $values) && ($focalUnit!=0))?$values[24]/$focalUnit:0; 237 $FocalLong=(array_key_exists(23, $values) && ($focalUnit!=0))?$values[23]/$focalUnit:0; 237 238 $focal=(($FocalShort==$FocalLong or $FocalLong==0)?$FocalShort:$FocalShort."-".$FocalLong)."mm"; 238 239 -
extensions/AMetaData/JpegMetaData/Readers/IptcReader.class.php
r6949 r7399 217 217 /* for each entries, convert value to human readable tag value 218 218 * 219 * build a special 'keywords' tag made as an array from all iptc 'keywords' (0x0219) tags found 219 * repeatable values are stored in arrays 220 * 221 * for Subject Reference tags (0x020C), made derived tags (0x020Cnn) 220 222 */ 221 $ keywordsTag=null;223 $repeatableTags=array(); 222 224 foreach($this->entries as $key => $tag) 223 225 { 224 226 $this->setTagProperties($tag); 225 if($tag->getId()==0x0219) 226 { 227 if(is_null($keywordsTag)) 228 { 229 $keywordsTag=new Tag( 230 0x0219, 231 array($tag->getValue()), 232 $tag->getName(), 233 array($tag->getLabel()), 234 "", 235 $tag->isKnown(), 236 $tag->isImplemented(), 237 $tag->isTranslatable(), 238 $tag->getSchema() 239 ); 240 } 241 else 242 { 243 $keywordsTag->setValue(array_merge($keywordsTag->getValue(), array($tag->getValue()))); 244 $keywordsTag->setLabel(array_merge($keywordsTag->getLabel(), array($tag->getLabel()))); 245 } 246 } 247 } 248 if(!is_null($keywordsTag)) 227 228 $list=array(); 229 230 if($tag->getId()==0x020C) 231 { 232 $tmpValues=explode(':', $tag->getValue()); 233 $tmpLabels=explode(':', $tag->getLabel()); 234 235 $list=array( 236 array( 237 'id' => 0x020C, 238 'value' => $tag->getValue(), 239 'label' => $tag->getLabel(), 240 ), 241 array( 242 'id' => 0x020C00, 243 'value' => isset($tmpValues[0])?$tmpValues[0]:'', 244 'label' => isset($tmpLabels[0])?$tmpLabels[0]:'', 245 ), 246 array( 247 'id' => 0x020C01, 248 'value' => isset($tmpValues[1])?$tmpValues[1]:'', 249 'label' => isset($tmpLabels[1])?$tmpLabels[1]:'', 250 ), 251 array( 252 'id' => 0x020C02, 253 'value' => isset($tmpValues[2])?$tmpValues[2]:'', 254 'label' => isset($tmpLabels[2])?$tmpLabels[2]:'', 255 ), 256 array( 257 'id' => 0x020C03, 258 'value' => isset($tmpValues[3])?$tmpValues[3]:'', 259 'label' => isset($tmpLabels[3])?$tmpLabels[3]:'', 260 ), 261 array( 262 'id' => 0x020C04, 263 'value' => isset($tmpValues[4])?$tmpValues[4]:'', 264 'label' => isset($tmpLabels[4])?$tmpLabels[4]:'', 265 ) 266 ); 267 } 268 else 269 { 270 $list=array( 271 array( 272 'id' => $tag->getId(), 273 'value' => $tag->getValue(), 274 'label' => $tag->getLabel(), 275 ) 276 ); 277 } 278 279 280 foreach($list as $tagItem) 281 { 282 $tagDef=$this->tagDef->getTagById($tagItem['id']); 283 284 if($tagDef['repeatable']) 285 { 286 if(!array_key_exists($tagItem['id'], $repeatableTags)) 287 { 288 $repeatableTags[$tagItem['id']]=new Tag( 289 $tagItem['id'], 290 array($tagItem['value']), 291 $tagDef['tagName'], 292 array($tagItem['label']), 293 "", 294 $tag->isKnown(), 295 $tagDef['implemented'], 296 $tagDef['translatable'], 297 $tag->getSchema() 298 ); 299 } 300 else 301 { 302 $repeatableTags[$tagItem['id']]->setValue(array_merge($repeatableTags[$tagItem['id']]->getValue(), array($tagItem['value']))); 303 $repeatableTags[$tagItem['id']]->setLabel(array_merge($repeatableTags[$tagItem['id']]->getLabel(), array($tagItem['label']))); 304 } 305 } 306 unset($tagDef); 307 } 308 unset($tagId); 309 } 310 foreach($repeatableTags as $key => $tag) 249 311 { 250 312 /* 251 313 * IPTC 'keywords' is stored like XMP 'xmp.dc:subject' (as a 'seq') 252 314 */ 253 $ keywordsTag->setValue(315 $repeatableTags[$key]->setValue( 254 316 array( 255 317 'type' => 'seq', 256 'values' => $ keywordsTag->getValue()318 'values' => $repeatableTags[$key]->getValue() 257 319 ) 258 320 ); 259 321 260 $ keywordsTag->setLabel(322 $repeatableTags[$key]->setLabel( 261 323 array( 262 324 'type' => 'seq', 263 'values' => $ keywordsTag->getLabel()325 'values' => $repeatableTags[$key]->getLabel() 264 326 ) 265 327 ); 266 $this->entries[]=$keywordsTag; 267 unset($keywordsTag); 268 } 328 $this->entries[]=$repeatableTags[$key]; 329 unset($repeatableTags[$key]); 330 } 331 unset($repeatableTags); 269 332 } 270 333 … … 330 393 case 0x0205: // 2:05 - Title 331 394 case 0x0207: // 2:07 - Edit Status 395 case 0x020C: // 2:12 - Subject Reference 332 396 case 0x020F: // 2:15 - Category 333 397 case 0x0214: // 2:20 - Supplemental Category … … 359 423 case 0x0114: // 1:20 - File Format 360 424 $tag=$this->tagDef->getTagById(0x0114); 361 $returned=$tag['tagValues.special'][ConvertData::toUShort($values, BYTE_ORDER_BIG_ENDIAN)]; 425 $tmpValue=ConvertData::toUShort($values, BYTE_ORDER_BIG_ENDIAN); 426 if(array_key_exists($tmpValue, $tag['tagValues.special'])) 427 { 428 $returned=$tag['tagValues.special'][$tmpValue]; 429 } 430 else 431 { 432 $returned='Unknown file format : '.ConvertData::toHexDump($tmpValue, ByteType::USHORT); 433 } 362 434 unset($tag); 363 435 break; -
extensions/AMetaData/JpegMetaData/Readers/JpegReader.class.php
r4972 r7399 85 85 */ 86 86 const JPEG_EOI = 0xFFD9; 87 /** 88 * start of scan tag 89 */ 90 const JPEG_SOS = 0xFFDA; 87 91 88 92 … … 174 178 fseek($this->fileHandler, -2, SEEK_END); 175 179 $header=fread($this->fileHandler, 2); 176 if(ConvertData::toUShort($header, BYTE_ORDER_BIG_ENDIAN) == self::JPEG_EOI) 177 { 178 /* 179 * the file ends with the good marker 180 */ 181 fseek($this->fileHandler, 0); 182 $header=fread($this->fileHandler, 2); 183 if(ConvertData::toUShort($header, BYTE_ORDER_BIG_ENDIAN) == self::JPEG_SOI) 184 { 185 return(true); 180 $haveEOI=(ConvertData::toUShort($header, BYTE_ORDER_BIG_ENDIAN) == self::JPEG_EOI); 181 182 // look if 2 first bytes of file are SOI 183 fseek($this->fileHandler, 0); 184 $header=fread($this->fileHandler, 2); 185 if(ConvertData::toUShort($header, BYTE_ORDER_BIG_ENDIAN) == self::JPEG_SOI) 186 { 187 //if file have EOI, it seems to be a valid JPEG file 188 if($haveEOI) return(true); 189 190 // otherwise, try to find SOS 191 while(!feof($this->fileHandler)) 192 { 193 $header=ConvertData::toUShort(fread($this->fileHandler, 2), BYTE_ORDER_BIG_ENDIAN); 194 195 if($header==self::JPEG_EOI or $header==self::JPEG_SOS ) 196 { 197 //seems to be a valid JPEG file 198 return(true); 199 } 200 elseif($header>>8==0xFF) 201 { 202 //seems to be a valid marker, jump to next marker... 203 $sizeBlock=ConvertData::toUShort(fread($this->fileHandler, 2), BYTE_ORDER_BIG_ENDIAN); 204 fseek($this->fileHandler, $sizeBlock-2, SEEK_CUR); 205 } 206 else 207 { 208 // not a marker, not e JPEG file 209 return(false); 210 } 186 211 } 187 212 } -
extensions/AMetaData/JpegMetaData/TagDefinitions/IptcTags.class.php
r5222 r7399 58 58 'implemented' => false, 59 59 'translatable' => false, 60 'repeatable' => false, 60 61 ), 61 62 … … 64 65 'implemented' => true, 65 66 'translatable' => false, 67 'repeatable' => true, 66 68 ), 67 69 … … 81 83 0x0008 => "IPTC Unstructured Character Oriented File Format (UCOFF)", 82 84 0x0009 => "United Press International ANPA 1312 variant", 83 0x00 10=> "United Press International Down-Load Message",84 0x00 11=> "JPEG File Interchange (JFIF)",85 0x00 12=> "Photo-CD Image-Pac (Eastman Kodak)",86 0x00 13=> "Microsoft Bit Mapped Graphics File [*.BMP]",87 0x00 14=> "Digital Audio File [*.WAV] (Microsoft & Creative Labs)",88 0x00 15=> "Audio plus Moving Video [*.AVI] (Microsoft)",89 0x001 6=> "PC DOS/Windows Executable Files [*.COM][*.EXE]",90 0x001 7=> "Compressed Binary File [*.ZIP] (PKWare Inc)",91 0x001 8=> "Audio Interchange File Format AIFF (Apple Computer Inc)",92 0x001 9=> "RIFF Wave (Microsoft Corporation)",93 0x00 20=> "Freehand (Macromedia/Aldus)",94 0x00 21=> "Hypertext Markup Language 'HTML' (The Internet Society)",95 0x00 22=> "MPEG 2 Audio Layer 2 (Musicom), ISO/IEC",96 0x00 23=> "MPEG 2 Audio Layer 3, ISO/IEC",97 0x00 24=> "Portable Document File (*.PDF) Adobe",98 0x00 25=> "News Industry Text Format (NITF)",99 0x00 26=> "Tape Archive (*.TAR)",100 0x00 27=> "Tidningarnas Telegrambyrå NITF version (TTNITF DTD)",101 0x00 28=> "Ritzaus Bureau NITF version (RBNITF DTD)",102 0x00 29=> "Corel Draw [*.CDR]",85 0x000A => "United Press International Down-Load Message", 86 0x000B => "JPEG File Interchange (JFIF)", 87 0x000C => "Photo-CD Image-Pac (Eastman Kodak)", 88 0x000D => "Microsoft Bit Mapped Graphics File [*.BMP]", 89 0x000E => "Digital Audio File [*.WAV] (Microsoft & Creative Labs)", 90 0x000F => "Audio plus Moving Video [*.AVI] (Microsoft)", 91 0x0010 => "PC DOS/Windows Executable Files [*.COM][*.EXE]", 92 0x0011 => "Compressed Binary File [*.ZIP] (PKWare Inc)", 93 0x0012 => "Audio Interchange File Format AIFF (Apple Computer Inc)", 94 0x0013 => "RIFF Wave (Microsoft Corporation)", 95 0x0014 => "Freehand (Macromedia/Aldus)", 96 0x0015 => "Hypertext Markup Language 'HTML' (The Internet Society)", 97 0x0016 => "MPEG 2 Audio Layer 2 (Musicom), ISO/IEC", 98 0x0017 => "MPEG 2 Audio Layer 3, ISO/IEC", 99 0x0018 => "Portable Document File (*.PDF) Adobe", 100 0x0019 => "News Industry Text Format (NITF)", 101 0x001A => "Tape Archive (*.TAR)", 102 0x001B => "Tidningarnas Telegrambyrå NITF version (TTNITF DTD)", 103 0x001C => "Ritzaus Bureau NITF version (RBNITF DTD)", 104 0x001D => "Corel Draw [*.CDR]", 103 105 ), 106 'repeatable' => false, 104 107 ), 105 108 … … 108 111 'implemented' => false, 109 112 'translatable' => false, 113 'repeatable' => false, 110 114 ), 111 115 … … 114 118 'implemented' => true, 115 119 'translatable' => false, 120 'repeatable' => false, 116 121 ), 117 122 … … 121 126 'implemented' => true, 122 127 'translatable' => false, 128 'repeatable' => false, 123 129 ), 124 130 … … 127 133 'implemented' => true, 128 134 'translatable' => false, 135 'repeatable' => true, 129 136 ), 130 137 … … 133 140 'implemented' => true, 134 141 'translatable' => true, 142 'repeatable' => false, 135 143 'tagValues' => Array( 136 144 '0' => 'none', … … 150 158 'implemented' => true, 151 159 'translatable' => false, 160 'repeatable' => false, 152 161 ), 153 162 … … 156 165 'implemented' => true, 157 166 'translatable' => false, 167 'repeatable' => false, 158 168 ), 159 169 … … 162 172 'implemented' => false, 163 173 'translatable' => false, 174 'repeatable' => false, 164 175 ), 165 176 … … 168 179 'implemented' => false, 169 180 'translatable' => false, 181 'repeatable' => false, 170 182 ), 171 183 … … 174 186 'implemented' => false, 175 187 'translatable' => false, 188 'repeatable' => false, 176 189 ), 177 190 … … 180 193 'implemented' => false, 181 194 'translatable' => false, 195 'repeatable' => false, 182 196 ), 183 197 … … 186 200 'implemented' => false, 187 201 'translatable' => false, 202 'repeatable' => false, 188 203 ), 189 204 … … 192 207 'implemented' => true, 193 208 'translatable' => false, 209 'repeatable' => false, 194 210 ), 195 211 … … 198 214 'implemented' => true, 199 215 'translatable' => false, 216 'repeatable' => true, 200 217 ), 201 218 … … 204 221 'implemented' => true, 205 222 'translatable' => false, 223 'repeatable' => false, 206 224 ), 207 225 … … 210 228 'implemented' => true, 211 229 'translatable' => false, 230 'repeatable' => false, 212 231 ), 213 232 … … 216 235 'implemented' => false, 217 236 'translatable' => false, 237 'repeatable' => false, 218 238 ), 219 239 … … 222 242 'implemented' => true, 223 243 'translatable' => true, 244 'repeatable' => false, 224 245 'tagValues' => Array( 225 246 '0' => 'none', … … 238 259 0x020C => Array( //2:12 239 260 'tagName' => "Subject Reference", 240 'implemented' => false, 241 'translatable' => false, 242 ), 261 'implemented' => true, 262 'translatable' => false, 263 'repeatable' => true, 264 ), 265 266 0x020C00 => Array( //2:12:00 --> fake code, not in IPTC Spec. 267 'tagName' => "Subject Reference[IPR]", 268 'implemented' => true, 269 'translatable' => false, 270 'repeatable' => true, 271 ), 272 0x020C01 => Array( //2:12:01 --> fake code, not in IPTC Spec. 273 'tagName' => "Subject Reference[Number]", 274 'implemented' => true, 275 'translatable' => false, 276 'repeatable' => true, 277 ), 278 0x020C02 => Array( //2:12:02 --> fake code, not in IPTC Spec. 279 'tagName' => "Subject Reference[Name]", 280 'implemented' => true, 281 'translatable' => false, 282 'repeatable' => true, 283 ), 284 0x020C03 => Array( //2:12:03 --> fake code, not in IPTC Spec. 285 'tagName' => "Subject Reference[Matter Name]", 286 'implemented' => true, 287 'translatable' => false, 288 'repeatable' => true, 289 ), 290 0x020C04 => Array( //2:12:04 --> fake code, not in IPTC Spec. 291 'tagName' => "Subject Reference[Detail Name]", 292 'implemented' => true, 293 'translatable' => false, 294 'repeatable' => true, 295 ), 296 243 297 244 298 0x020F => Array( //2:15 … … 246 300 'implemented' => true, 247 301 'translatable' => false, 302 'repeatable' => false, 248 303 ), 249 304 … … 252 307 'implemented' => true, 253 308 'translatable' => false, 309 'repeatable' => true, 254 310 ), 255 311 … … 258 314 'implemented' => true, 259 315 'translatable' => false, 316 'repeatable' => false, 260 317 ), 261 318 … … 264 321 'implemented' => true, 265 322 'translatable' => false, 323 'repeatable' => true, 266 324 ), 267 325 … … 270 328 'implemented' => true, 271 329 'translatable' => false, 330 'repeatable' => true, 272 331 ), 273 332 … … 276 335 'implemented' => true, 277 336 'translatable' => false, 337 'repeatable' => true, 278 338 ), 279 339 … … 282 342 'implemented' => true, 283 343 'translatable' => false, 344 'repeatable' => false, 284 345 ), 285 346 … … 288 349 'implemented' => true, 289 350 'translatable' => false, 351 'repeatable' => false, 290 352 ), 291 353 … … 294 356 'implemented' => true, 295 357 'translatable' => false, 358 'repeatable' => false, 296 359 ), 297 360 … … 300 363 'implemented' => true, 301 364 'translatable' => false, 365 'repeatable' => false, 302 366 ), 303 367 … … 306 370 'implemented' => true, 307 371 'translatable' => false, 372 'repeatable' => false, 308 373 ), 309 374 … … 312 377 'implemented' => false, 313 378 'translatable' => false, 379 'repeatable' => false, 314 380 ), 315 381 … … 318 384 'implemented' => false, 319 385 'translatable' => false, 386 'repeatable' => false, 320 387 ), 321 388 … … 324 391 'implemented' => false, 325 392 'translatable' => false, 393 'repeatable' => true, 326 394 ), 327 395 … … 330 398 'implemented' => false, 331 399 'translatable' => false, 400 'repeatable' => true, 332 401 ), 333 402 … … 336 405 'implemented' => true, 337 406 'translatable' => false, 407 'repeatable' => false, 338 408 ), 339 409 … … 342 412 'implemented' => true, 343 413 'translatable' => false, 414 'repeatable' => false, 344 415 ), 345 416 … … 348 419 'implemented' => true, 349 420 'translatable' => false, 421 'repeatable' => false, 350 422 ), 351 423 … … 354 426 'implemented' => true, 355 427 'translatable' => false, 428 'repeatable' => false, 356 429 ), 357 430 … … 360 433 'implemented' => true, 361 434 'translatable' => false, 435 'repeatable' => false, 362 436 ), 363 437 … … 366 440 'implemented' => true, 367 441 'translatable' => false, 442 'repeatable' => false, 368 443 ), 369 444 … … 372 447 'implemented' => true, 373 448 'translatable' => true, 449 'repeatable' => false, 374 450 'tagValues' => Array( 375 451 'a' => "morning", … … 383 459 'implemented' => true, 384 460 'translatable' => false, 461 'repeatable' => true, 385 462 ), 386 463 … … 389 466 'implemented' => true, 390 467 'translatable' => false, 468 'repeatable' => true, 391 469 ), 392 470 … … 395 473 'implemented' => true, 396 474 'translatable' => false, 475 'repeatable' => false, 397 476 ), 398 477 … … 401 480 'implemented' => true, 402 481 'translatable' => false, 482 'repeatable' => false, 403 483 ), 404 484 … … 407 487 'implemented' => true, 408 488 'translatable' => false, 489 'repeatable' => false, 409 490 ), 410 491 … … 413 494 'implemented' => true, 414 495 'translatable' => false, 496 'repeatable' => false, 415 497 ), 416 498 … … 419 501 'implemented' => true, 420 502 'translatable' => false, 503 'repeatable' => false, 421 504 ), 422 505 … … 425 508 'implemented' => true, 426 509 'translatable' => false, 510 'repeatable' => false, 427 511 ), 428 512 … … 431 515 'implemented' => true, 432 516 'translatable' => false, 517 'repeatable' => false, 433 518 ), 434 519 … … 437 522 'implemented' => true, 438 523 'translatable' => false, 524 'repeatable' => false, 439 525 ), 440 526 … … 443 529 'implemented' => true, 444 530 'translatable' => false, 531 'repeatable' => false, 445 532 ), 446 533 … … 449 536 'implemented' => true, 450 537 'translatable' => false, 538 'repeatable' => false, 451 539 ), 452 540 … … 455 543 'implemented' => true, 456 544 'translatable' => false, 545 'repeatable' => true, 457 546 ), 458 547 … … 461 550 'implemented' => true, 462 551 'translatable' => false, 552 'repeatable' => false, 463 553 ), 464 554 … … 467 557 'implemented' => true, 468 558 'translatable' => false, 559 'repeatable' => true, 469 560 ), 470 561 … … 473 564 'implemented' => false, 474 565 'translatable' => false, 566 'repeatable' => false, 475 567 ), 476 568 … … 479 571 'implemented' => false, 480 572 'translatable' => false, 573 'repeatable' => false, 481 574 'tagValues.special' => Array( 482 575 0 => Array( … … 510 603 'implemented' => true, 511 604 'translatable' => true, 605 'repeatable' => false, 512 606 'tagValues' => Array( 513 607 'P' => "portrait", … … 521 615 'implemented' => true, 522 616 'translatable' => false, 617 'repeatable' => false, 523 618 ), 524 619 … … 527 622 'implemented' => false, 528 623 'translatable' => false, 624 'repeatable' => false, 529 625 ), 530 626 … … 533 629 'implemented' => false, 534 630 'translatable' => false, 631 'repeatable' => false, 535 632 ), 536 633 … … 539 636 'implemented' => false, 540 637 'translatable' => false, 638 'repeatable' => false, 541 639 ), 542 640 … … 545 643 'implemented' => false, 546 644 'translatable' => false, 645 'repeatable' => false, 547 646 ), 548 647 … … 552 651 'implemented' => false, 553 652 'translatable' => false, 653 'repeatable' => false, 554 654 ), 555 655 … … 558 658 'implemented' => false, 559 659 'translatable' => false, 660 'repeatable' => false, 560 661 ), 561 662 … … 564 665 'implemented' => false, 565 666 'translatable' => false, 667 'repeatable' => false, 566 668 ), 567 669 … … 570 672 'implemented' => false, 571 673 'translatable' => false, 674 'repeatable' => false, 572 675 ), 573 676 … … 576 679 'implemented' => false, 577 680 'translatable' => false, 681 'repeatable' => false, 578 682 ), 579 683 … … 582 686 'implemented' => false, 583 687 'translatable' => false, 688 'repeatable' => false, 584 689 ), 585 690 … … 588 693 'implemented' => false, 589 694 'translatable' => false, 695 'repeatable' => false, 590 696 ), 591 697 … … 594 700 'implemented' => false, 595 701 'translatable' => false, 702 'repeatable' => false, 596 703 ), 597 704 … … 600 707 'implemented' => false, 601 708 'translatable' => false, 709 'repeatable' => true, 602 710 ), 603 711 … … 606 714 'implemented' => false, 607 715 'translatable' => false, 716 'repeatable' => false, 608 717 ), 609 718 ); -
extensions/AMetaData/admin/amd_metadata_display_groupEdit.tpl
r4905 r7399 23 23 {if isset($datasLang.language_list) and count($datasLang.language_list)} 24 24 {foreach from=$datasLang.language_list key=name item=language_row} 25 <input type='hidden' id='iName_{$name}' value='{$language_row.name}' >25 <input type='hidden' id='iName_{$name}' value='{$language_row.name}' size=60 maxlength =80> 26 26 {/foreach} 27 27 {/if} -
extensions/AMetaData/admin/amd_metadata_personnal.tpl
r6950 r7399 81 81 .bind('dialogopen', function () 82 82 { 83 if(options. id!='')83 if(options.numId!='') 84 84 { 85 85 displayProcessing(true); -
extensions/AMetaData/amd_aip_install.class.inc.php
r6950 r7399 230 230 'iptc.Source', 231 231 'iptc.Special Instructions', 232 'iptc.Subject Reference', 233 'iptc.Subject Reference[Detail Name]', 234 'iptc.Subject Reference[IPR]', 235 'iptc.Subject Reference[Matter Name]', 236 'iptc.Subject Reference[Name]', 237 'iptc.Subject Reference[Number]', 232 238 'iptc.Sublocation', 233 239 'iptc.Supplemental Category', -
extensions/AMetaData/amd_install.class.inc.php
r6977 r7399 123 123 $tablesInsert=array( 124 124 "INSERT INTO `".$this->tables['groups']."` VALUES(1, 0)", 125 "INSERT INTO `".$this->tables['groups_names']."` VALUES(1, '".$user['language']."', '".$lang['g003_default_group_name']."')",125 $this->buildDefaultGroup(), 126 126 "INSERT INTO `".$this->tables['selected_tags']."` VALUES 127 127 ('magic.Camera.Make', 0, 1), … … 292 292 } 293 293 294 private function buildDefaultGroup() 295 { 296 $sql=array(); 297 $languages=get_languages(); 298 foreach($languages as $key => $val) 299 { 300 load_language('plugin.lang', AMD_PATH, array('language' => $key, 'no_fallback'=>true)); 301 $sql[]="(1, '".$key."', '".l10n('g003_default_group_name')."')"; 302 } 303 304 //reload default user language 305 load_language('plugin.lang', AMD_PATH); 306 return("INSERT INTO `".$this->tables['groups_names']."` VALUES ".implode(',', $sql)); 307 } 308 294 309 } //class 295 310 -
extensions/AMetaData/amd_rb_callback.class.inc.php
r6891 r7399 52 52 static public function getSelect($param="") 53 53 { 54 return(" pait.value AS amdValue, paut.name AS amdName");54 return(" pait.value AS amdValue, paut.name AS amdName "); 55 55 } 56 56 -
extensions/AMetaData/main.inc.php
r7036 r7399 126 126 | | | new package 127 127 | | | 128 | 0.x.y | 2010/09/30 | * mantis bug:1894 129 | | | . Error when filling the metadata repository 130 | | | 131 | | | * mantis bug:1898 132 | | | . Warning "division by zero" on Canon images 133 | | | 134 | | | * mantis bug:1911 135 | | | . Unable to read Jpeg file if there is extradata 136 | | | after the EOI marker 137 | | | 138 | | | * mantis bug:1863 139 | | | . Except "keywords" meta, all IPTC meta declared 140 | | | as "repeatable" are not managed 141 | | | 142 | | | * mantis bug:1955 143 | | | . Incorrect mapping for IPTC File format 144 | | | 145 | | | * mantis bug:1956 146 | | | . IPTC "Subject Reference" is not implemented 147 | | | 148 | | | * mantis bug:1925 149 | | | . default selected tags works only for the french 150 | | | user 128 151 | | | 129 152 | | |
Note: See TracChangeset
for help on using the changeset viewer.