source: extensions/iptc_from_mac/main.inc.php @ 10451

Last change on this file since 10451 was 9005, checked in by plg, 14 years ago

initial version

File size: 5.1 KB
Line 
1<?php
2/*
3Plugin Name: IPTC from Mac
4Version: auto
5Description: Convert IPTC written in MacRoman encoding into UTF8
6Plugin URI: http://piwigo.org/ext/extension_view.php?eid=
7Author: plg
8Author URI: http://piwigo.wordpress.com
9*/
10
11if (!defined('PHPWG_ROOT_PATH'))
12{
13  die('Hacking attempt!');
14}
15
16add_event_handler('clean_iptc_value', 'MacRoman_to_utf8');
17function MacRoman_to_utf8($str, $break_ligatures='none')
18{
19  // $break_ligatures : 'none' | 'fifl' | 'all'
20  // 'none' : don't break any MacRoman ligatures, transform them into their utf-8 counterparts
21  // 'fifl' : break only fi ("\xDE" => "fi") and fl ("\xDF"=>"fl")
22  // 'all' : break fi, fl and also AE ("\xAE"=>"AE"), ae ("\xBE"=>"ae"), OE ("\xCE"=>"OE") and oe ("\xCF"=>"oe")
23 
24  if($break_ligatures == 'fifl')
25  {
26    $str = strtr($str, array("\xDE"=>"fi", "\xDF"=>"fl"));
27  }
28
29  if($break_ligatures == 'all')
30  {
31    $str = strtr($str, array("\xDE"=>"fi", "\xDF"=>"fl", "\xAE"=>"AE", "\xBE"=>"ae", "\xCE"=>"OE", "\xCF"=>"oe"));
32  }
33
34  $str = strtr(
35    $str,
36    array(
37      "\x7F"=>"\x20",
38      "\x80"=>"\xC3\x84",
39      "\x81"=>"\xC3\x85",
40      "\x82"=>"\xC3\x87",
41      "\x83"=>"\xC3\x89",
42      "\x84"=>"\xC3\x91",
43      "\x85"=>"\xC3\x96",
44      "\x86"=>"\xC3\x9C",
45      "\x87"=>"\xC3\xA1",
46      "\x88"=>"\xC3\xA0",
47      "\x89"=>"\xC3\xA2",
48      "\x8A"=>"\xC3\xA4",
49      "\x8B"=>"\xC3\xA3",
50      "\x8C"=>"\xC3\xA5",
51      "\x8D"=>"\xC3\xA7",
52      "\x8E"=>"\xC3\xA9",
53      "\x8F"=>"\xC3\xA8",
54      "\x90"=>"\xC3\xAA",
55      "\x91"=>"\xC3\xAB",
56      "\x92"=>"\xC3\xAD",
57      "\x93"=>"\xC3\xAC",
58      "\x94"=>"\xC3\xAE",
59      "\x95"=>"\xC3\xAF",
60      "\x96"=>"\xC3\xB1",
61      "\x97"=>"\xC3\xB3",
62      "\x98"=>"\xC3\xB2",
63      "\x99"=>"\xC3\xB4",
64      "\x9A"=>"\xC3\xB6",
65      "\x9B"=>"\xC3\xB5",
66      "\x9C"=>"\xC3\xBA",
67      "\x9D"=>"\xC3\xB9",
68      "\x9E"=>"\xC3\xBB",
69      "\x9F"=>"\xC3\xBC",
70      "\xA0"=>"\xE2\x80\xA0",
71      "\xA1"=>"\xC2\xB0",
72      "\xA2"=>"\xC2\xA2",
73      "\xA3"=>"\xC2\xA3",
74      "\xA4"=>"\xC2\xA7",
75      "\xA5"=>"\xE2\x80\xA2",
76      "\xA6"=>"\xC2\xB6",
77      "\xA7"=>"\xC3\x9F",
78      "\xA8"=>"\xC2\xAE",
79      "\xA9"=>"\xC2\xA9",
80      "\xAA"=>"\xE2\x84\xA2",
81      "\xAB"=>"\xC2\xB4",
82      "\xAC"=>"\xC2\xA8",
83      "\xAD"=>"\xE2\x89\xA0",
84      "\xAE"=>"\xC3\x86",
85      "\xAF"=>"\xC3\x98",
86      "\xB0"=>"\xE2\x88\x9E",
87      "\xB1"=>"\xC2\xB1",
88      "\xB2"=>"\xE2\x89\xA4",
89      "\xB3"=>"\xE2\x89\xA5",
90      "\xB4"=>"\xC2\xA5",
91      "\xB5"=>"\xC2\xB5",
92      "\xB6"=>"\xE2\x88\x82",
93      "\xB7"=>"\xE2\x88\x91",
94      "\xB8"=>"\xE2\x88\x8F",
95      "\xB9"=>"\xCF\x80",
96      "\xBA"=>"\xE2\x88\xAB",
97      "\xBB"=>"\xC2\xAA",
98      "\xBC"=>"\xC2\xBA",
99      "\xBD"=>"\xCE\xA9",
100      "\xBE"=>"\xE6",
101      "\xBF"=>"\xC3\xB8",
102      "\xC0"=>"\xC2\xBF",
103      "\xC1"=>"\xC2\xA1",
104      "\xC2"=>"\xC2\xAC",
105      "\xC3"=>"\xE2\x88\x9A",
106      "\xC4"=>"\xC6\x92",
107      "\xC5"=>"\xE2\x89\x88",
108      "\xC6"=>"\xE2\x88\x86",
109      "\xC7"=>"\xC2\xAB",
110      "\xC8"=>"\xC2\xBB",
111      "\xC9"=>"\xE2\x80\xA6",
112      "\xCA"=>"\xC2\xA0",
113      "\xCB"=>"\xC3\x80",
114      "\xCC"=>"\xC3\x83",
115      "\xCD"=>"\xC3\x95",
116      "\xCE"=>"\xC5\x92",
117      "\xCF"=>"\xC5\x93",
118      "\xD0"=>"\xE2\x80\x93",
119      "\xD1"=>"\xE2\x80\x94",
120      "\xD2"=>"\xE2\x80\x9C",
121      "\xD3"=>"\xE2\x80\x9D",
122      "\xD4"=>"\xE2\x80\x98",
123      "\xD5"=>"\xE2\x80\x99",
124      "\xD6"=>"\xC3\xB7",
125      "\xD7"=>"\xE2\x97\x8A",
126      "\xD8"=>"\xC3\xBF",
127      "\xD9"=>"\xC5\xB8",
128      "\xDA"=>"\xE2\x81\x84",
129      "\xDB"=>"\xE2\x82\xAC",
130      "\xDC"=>"\xE2\x80\xB9",
131      "\xDD"=>"\xE2\x80\xBA",
132      "\xDE"=>"\xEF\xAC\x81",
133      "\xDF"=>"\xEF\xAC\x82",
134      "\xE0"=>"\xE2\x80\xA1",
135      "\xE1"=>"\xC2\xB7",
136      "\xE2"=>"\xE2\x80\x9A",
137      "\xE3"=>"\xE2\x80\x9E",
138      "\xE4"=>"\xE2\x80\xB0",
139      "\xE5"=>"\xC3\x82",
140      "\xE6"=>"\xC3\x8A",
141      "\xE7"=>"\xC3\x81",
142      "\xE8"=>"\xC3\x8B",
143      "\xE9"=>"\xC3\x88",
144      "\xEA"=>"\xC3\x8D",
145      "\xEB"=>"\xC3\x8E",
146      "\xEC"=>"\xC3\x8F",
147      "\xED"=>"\xC3\x8C",
148      "\xEE"=>"\xC3\x93",
149      "\xEF"=>"\xC3\x94",
150      "\xF0"=>"\xEF\xA3\xBF",
151      "\xF1"=>"\xC3\x92",
152      "\xF2"=>"\xC3\x9A",
153      "\xF3"=>"\xC3\x9B",
154      "\xF4"=>"\xC3\x99",
155      "\xF5"=>"\xC4\xB1",
156      "\xF6"=>"\xCB\x86",
157      "\xF7"=>"\xCB\x9C",
158      "\xF8"=>"\xC2\xAF",
159      "\xF9"=>"\xCB\x98",
160      "\xFA"=>"\xCB\x99",
161      "\xFB"=>"\xCB\x9A",
162      "\xFC"=>"\xC2\xB8",
163      "\xFD"=>"\xCB\x9D",
164      "\xFE"=>"\xCB\x9B",
165      "\xFF"=>"\xCB\x87",
166      "\x00"=>"\x20",
167      "\x01"=>"\x20",
168      "\x02"=>"\x20",
169      "\x03"=>"\x20",
170      "\x04"=>"\x20",
171      "\x05"=>"\x20",
172      "\x06"=>"\x20",
173      "\x07"=>"\x20",
174      "\x08"=>"\x20",
175      "\x0B"=>"\x20",
176      "\x0C"=>"\x20",
177      "\x0E"=>"\x20",
178      "\x0F"=>"\x20",
179      "\x10"=>"\x20",
180      "\x11"=>"\x20",
181      "\x12"=>"\x20",
182      "\x13"=>"\x20",
183      "\x14"=>"\x20",
184      "\x15"=>"\x20",
185      "\x16"=>"\x20",
186      "\x17"=>"\x20",
187      "\x18"=>"\x20",
188      "\x19"=>"\x20",
189      "\x1A"=>"\x20",
190      "\x1B"=>"\x20",
191      "\x1C"=>"\x20",
192      "\1D"=>"\x20",
193      "\x1E"=>"\x20",
194      "\x1F"=>"\x20",
195      "\xF0"=>""
196      )
197    );
198
199  return $str;
200}
201?>
Note: See TracBrowser for help on using the repository browser.