forked from Wavyzz/dolibarr
168 lines
14 KiB
HTML
168 lines
14 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
|
<title>dolibarr: htdocs/lib/vcard/vcard.class.php Source File</title>
|
|
<link href="doxygen.css" rel="stylesheet" type="text/css">
|
|
</head><body>
|
|
<!-- Généré par Doxygen 1.3.7 -->
|
|
<div class="qindex"><a class="qindex" href="index.html">Page principale</a> | <a class="qindex" href="classes.html">Liste alphabétique</a> | <a class="qindex" href="annotated.html">Liste des classes</a> | <a class="qindex" href="files.html">Liste des fichiers</a> | <a class="qindex" href="functions.html">Membres de classe</a> | <a class="qindex" href="globals.html">Membres de fichier</a></div>
|
|
<h1>htdocs/lib/vcard/vcard.class.php</h1><a href="vcard_8class_8php.html">Aller à la documentation de ce fichier.</a><pre class="fragment"><div>00001 <?PHP
|
|
00002 <span class="comment">/***************************************************************************</span>
|
|
00003 <span class="comment"></span>
|
|
00004 <span class="comment">PHP vCard class v2.0</span>
|
|
00005 <span class="comment">(c) Kai Blankenhorn</span>
|
|
00006 <span class="comment">www.bitfolge.de/en</span>
|
|
00007 <span class="comment">kaib@bitfolge.de</span>
|
|
00008 <span class="comment"></span>
|
|
00009 <span class="comment"></span>
|
|
00010 <span class="comment">This program is free software; you can redistribute it and/or</span>
|
|
00011 <span class="comment">modify it under the terms of the GNU General Public License</span>
|
|
00012 <span class="comment">as published by the Free Software Foundation; either version 2</span>
|
|
00013 <span class="comment">of the License, or (at your option) any later version.</span>
|
|
00014 <span class="comment"></span>
|
|
00015 <span class="comment">This program is distributed in the hope that it will be useful,</span>
|
|
00016 <span class="comment">but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
|
|
00017 <span class="comment">MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span>
|
|
00018 <span class="comment">GNU General Public License for more details.</span>
|
|
00019 <span class="comment"></span>
|
|
00020 <span class="comment">You should have received a copy of the GNU General Public License</span>
|
|
00021 <span class="comment">along with this program; if not, write to the Free Software</span>
|
|
00022 <span class="comment">Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</span>
|
|
00023 <span class="comment"></span>
|
|
00024 <span class="comment">***************************************************************************/</span>
|
|
00025
|
|
00035 function encode($string) {
|
|
00036 <span class="keywordflow">return</span> escape(quoted_printable_encode($string));
|
|
00037 }
|
|
00038
|
|
00039 function escape($string) {
|
|
00040 <span class="keywordflow">return</span> str_replace(<span class="stringliteral">";"</span>,<span class="stringliteral">"\;"</span>,$string);
|
|
00041 }
|
|
00042
|
|
00043 <span class="comment">// taken from PHP documentation comments</span>
|
|
00044 function quoted_printable_encode($input, $line_max = 76) {
|
|
00045 $hex = array(<span class="charliteral">'0'</span>,<span class="charliteral">'1'</span>,<span class="charliteral">'2'</span>,<span class="charliteral">'3'</span>,<span class="charliteral">'4'</span>,<span class="charliteral">'5'</span>,<span class="charliteral">'6'</span>,<span class="charliteral">'7'</span>,<span class="charliteral">'8'</span>,<span class="charliteral">'9'</span>,<span class="charliteral">'A'</span>,<span class="charliteral">'B'</span>,<span class="charliteral">'C'</span>,<span class="charliteral">'D'</span>,<span class="charliteral">'E'</span>,<span class="charliteral">'F'</span>);
|
|
00046 $lines = preg_split(<span class="stringliteral">"/(?:\r\n|\r|\n)/"</span>, $input);
|
|
00047 $eol = <span class="stringliteral">"\r\n"</span>;
|
|
00048 $linebreak = <span class="stringliteral">"=0D=0A"</span>;
|
|
00049 $escape = <span class="stringliteral">"="</span>;
|
|
00050 $output = <span class="stringliteral">""</span>;
|
|
00051
|
|
00052 <span class="keywordflow">for</span> ($j=0;$j<count($lines);$j++) {
|
|
00053 $line = $lines[$j];
|
|
00054 $linlen = strlen($line);
|
|
00055 $newline = <span class="stringliteral">""</span>;
|
|
00056 <span class="keywordflow">for</span>($i = 0; $i < $linlen; $i++) {
|
|
00057 $c = substr($line, $i, 1);
|
|
00058 $dec = ord($c);
|
|
00059 <span class="keywordflow">if</span> ( ($dec == 32) && ($i == ($linlen - 1)) ) { <span class="comment">// convert space at eol only</span>
|
|
00060 $c = <span class="stringliteral">"=20"</span>;
|
|
00061 } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { <span class="comment">// always encode "\t", which is *not* required</span>
|
|
00062 $h2 = floor($dec/16); $h1 = floor($dec%16);
|
|
00063 $c = $escape.$hex[<span class="stringliteral">"$h2"</span>].$hex[<span class="stringliteral">"$h1"</span>];
|
|
00064 }
|
|
00065 <span class="keywordflow">if</span> ( (strlen($newline) + strlen($c)) >= $line_max ) { <span class="comment">// CRLF is not counted</span>
|
|
00066 $output .= $newline.$escape.$eol; <span class="comment">// soft line break; " =\r\n" is okay</span>
|
|
00067 $newline = <span class="stringliteral">" "</span>;
|
|
00068 }
|
|
00069 $newline .= $c;
|
|
00070 } <span class="comment">// end of for</span>
|
|
00071 $output .= $newline;
|
|
00072 <span class="keywordflow">if</span> ($j<count($lines)-1) $output .= $linebreak;
|
|
00073 }
|
|
00074 <span class="keywordflow">return</span> trim($output);
|
|
00075 }
|
|
00076
|
|
<a name="l00083"></a><a class="code" href="classvCard.html">00083</a> <span class="keyword">class </span><a class="code" href="classvCard.html">vCard</a> {
|
|
00084 var $properties;
|
|
00085 var $filename;
|
|
00086
|
|
<a name="l00093"></a><a class="code" href="classvCard.html#a0">00093</a> function <a class="code" href="classvCard.html#a0">setPhoneNumber</a>($number, $type=<span class="stringliteral">""</span>) {
|
|
00094 <span class="comment">// type may be PREF | WORK | HOME | VOICE | FAX | MSG | CELL | PAGER | BBS | CAR | MODEM | ISDN | VIDEO or any senseful combination, e.g. "PREF;WORK;VOICE"</span>
|
|
00095 $key = <span class="stringliteral">"TEL"</span>;
|
|
00096 <span class="keywordflow">if</span> ($type!=<span class="stringliteral">""</span>) $key .= <span class="stringliteral">";"</span>.$type;
|
|
00097 $key.= <span class="stringliteral">";ENCODING=QUOTED-PRINTABLE"</span>;
|
|
00098 $this->properties[$key] = quoted_printable_encode($number);
|
|
00099 }
|
|
00100
|
|
00108 <span class="comment">// UNTESTED !!!</span>
|
|
<a name="l00109"></a><a class="code" href="classvCard.html#a1">00109</a> function <a class="code" href="classvCard.html#a1">setPhoto</a>($type, $photo) { <span class="comment">// $type = "GIF" | "JPEG"</span>
|
|
00110 $this->properties[<span class="stringliteral">"PHOTO;TYPE=$type;ENCODING=BASE64"</span>] = base64_encode($photo);
|
|
00111 }
|
|
00112
|
|
<a name="l00118"></a><a class="code" href="classvCard.html#a2">00118</a> function <a class="code" href="classvCard.html#a2">setFormattedName</a>($name) {
|
|
00119 $this->properties[<span class="stringliteral">"FN"</span>] = quoted_printable_encode($name);
|
|
00120 }
|
|
00121
|
|
<a name="l00131"></a><a class="code" href="classvCard.html#a3">00131</a> function <a class="code" href="classvCard.html#a3">setName</a>($family=<span class="stringliteral">""</span>, $first=<span class="stringliteral">""</span>, $additional=<span class="stringliteral">""</span>, $prefix=<span class="stringliteral">""</span>, $suffix=<span class="stringliteral">""</span>) {
|
|
00132 $this->properties[<span class="stringliteral">"N"</span>] = <span class="stringliteral">"$family;$first;$additional;$prefix;$suffix"</span>;
|
|
00133 $this->filename = <span class="stringliteral">"$first%20$family.vcf"</span>;
|
|
00134 <span class="keywordflow">if</span> ($this->properties[<span class="stringliteral">"FN"</span>]==<span class="stringliteral">""</span>) $this->setFormattedName(trim(<span class="stringliteral">"$prefix $first $additional $family $suffix"</span>));
|
|
00135 }
|
|
00136
|
|
<a name="l00142"></a><a class="code" href="classvCard.html#a4">00142</a> function <a class="code" href="classvCard.html#a4">setBirthday</a>($date) { <span class="comment">// $date format is YYYY-MM-DD</span>
|
|
00143 $this->properties[<span class="stringliteral">"BDAY"</span>] = $date;
|
|
00144 }
|
|
00145
|
|
<a name="l00158"></a><a class="code" href="classvCard.html#a5">00158</a> function <a class="code" href="classvCard.html#a5">setAddress</a>($postoffice=<span class="stringliteral">""</span>, $extended=<span class="stringliteral">""</span>, $street=<span class="stringliteral">""</span>, $city=<span class="stringliteral">""</span>, $region=<span class="stringliteral">""</span>, $zip=<span class="stringliteral">""</span>, $country=<span class="stringliteral">""</span>, $type=<span class="stringliteral">"HOME;POSTAL"</span>) {
|
|
00159 <span class="comment">// $type may be DOM | INTL | POSTAL | PARCEL | HOME | WORK or any combination of these: e.g. "WORK;PARCEL;POSTAL"</span>
|
|
00160 $key = <span class="stringliteral">"ADR"</span>;
|
|
00161 <span class="keywordflow">if</span> ($type!=<span class="stringliteral">""</span>) $key.= <span class="stringliteral">";$type"</span>;
|
|
00162 $key.= <span class="stringliteral">";ENCODING=QUOTED-PRINTABLE"</span>;
|
|
00163 $this->properties[$key] = encode($name).<span class="stringliteral">";"</span>.encode($extended).<span class="stringliteral">";"</span>.encode($street).<span class="stringliteral">";"</span>.encode($city).<span class="stringliteral">";"</span>.encode($region).<span class="stringliteral">";"</span>.encode($zip).<span class="stringliteral">";"</span>.encode($country);
|
|
00164
|
|
00165 <span class="keywordflow">if</span> ($this->properties[<span class="stringliteral">"LABEL;$type;ENCODING=QUOTED-PRINTABLE"</span>] == <span class="stringliteral">""</span>) {
|
|
00166 <span class="comment">//$this->setLabel($postoffice, $extended, $street, $city, $region, $zip, $country, $type);</span>
|
|
00167 }
|
|
00168 }
|
|
00169
|
|
<a name="l00182"></a><a class="code" href="classvCard.html#a6">00182</a> function <a class="code" href="classvCard.html#a6">setLabel</a>($postoffice=<span class="stringliteral">""</span>, $extended=<span class="stringliteral">""</span>, $street=<span class="stringliteral">""</span>, $city=<span class="stringliteral">""</span>, $region=<span class="stringliteral">""</span>, $zip=<span class="stringliteral">""</span>, $country=<span class="stringliteral">""</span>, $type=<span class="stringliteral">"HOME;POSTAL"</span>) {
|
|
00183 $label = <span class="stringliteral">""</span>;
|
|
00184 <span class="keywordflow">if</span> ($postoffice!=<span class="stringliteral">""</span>) $label.= <span class="stringliteral">"$postoffice\r\n"</span>;
|
|
00185 <span class="keywordflow">if</span> ($extended!=<span class="stringliteral">""</span>) $label.= <span class="stringliteral">"$extended\r\n"</span>;
|
|
00186 <span class="keywordflow">if</span> ($street!=<span class="stringliteral">""</span>) $label.= <span class="stringliteral">"$street\r\n"</span>;
|
|
00187 <span class="keywordflow">if</span> ($zip!=<span class="stringliteral">""</span>) $label.= <span class="stringliteral">"$zip "</span>;
|
|
00188 <span class="keywordflow">if</span> ($city!=<span class="stringliteral">""</span>) $label.= <span class="stringliteral">"$city\r\n"</span>;
|
|
00189 <span class="keywordflow">if</span> ($region!=<span class="stringliteral">""</span>) $label.= <span class="stringliteral">"$region\r\n"</span>;
|
|
00190 <span class="keywordflow">if</span> ($country!=<span class="stringliteral">""</span>) $country.= <span class="stringliteral">"$country\r\n"</span>;
|
|
00191
|
|
00192 $this->properties[<span class="stringliteral">"LABEL;$type;ENCODING=QUOTED-PRINTABLE"</span>] = quoted_printable_encode($label);
|
|
00193 }
|
|
00194
|
|
<a name="l00200"></a><a class="code" href="classvCard.html#a7">00200</a> function <a class="code" href="classvCard.html#a7">setEmail</a>($address) {
|
|
00201 $this->properties[<span class="stringliteral">"EMAIL;INTERNET"</span>] = $address;
|
|
00202 }
|
|
00203
|
|
<a name="l00209"></a><a class="code" href="classvCard.html#a8">00209</a> function <a class="code" href="classvCard.html#a8">setNote</a>($note) {
|
|
00210 $this->properties[<span class="stringliteral">"NOTE;ENCODING=QUOTED-PRINTABLE"</span>] = quoted_printable_encode($note);
|
|
00211 }
|
|
00212
|
|
<a name="l00219"></a><a class="code" href="classvCard.html#a9">00219</a> function <a class="code" href="classvCard.html#a9">setURL</a>($url, $type=<span class="stringliteral">""</span>) {
|
|
00220 <span class="comment">// $type may be WORK | HOME</span>
|
|
00221 $key = <span class="stringliteral">"URL"</span>;
|
|
00222 <span class="keywordflow">if</span> ($type!=<span class="stringliteral">""</span>) $key.= <span class="stringliteral">";$type"</span>;
|
|
00223 $this->properties[$key] = $url;
|
|
00224 }
|
|
00225
|
|
<a name="l00230"></a><a class="code" href="classvCard.html#a10">00230</a> function <a class="code" href="classvCard.html#a10">getVCard</a>() {
|
|
00231 $text = <span class="stringliteral">"BEGIN:VCARD\r\n"</span>;
|
|
00232 $text.= <span class="stringliteral">"VERSION:2.1\r\n"</span>;
|
|
00233 foreach($this->properties as $key => $value) {
|
|
00234 $text.= <span class="stringliteral">"$key:$value\r\n"</span>;
|
|
00235 }
|
|
00236 $text.= <span class="stringliteral">"REV:"</span>.date(<span class="stringliteral">"Y-m-d"</span>).<span class="stringliteral">"T"</span>.date(<span class="stringliteral">"H:i:s"</span>).<span class="stringliteral">"Z\r\n"</span>;
|
|
00237 $text.= <span class="stringliteral">"MAILER:PHP vCard class by Kai Blankenhorn\r\n"</span>;
|
|
00238 $text.= <span class="stringliteral">"END:VCARD\r\n"</span>;
|
|
00239 <span class="keywordflow">return</span> $text;
|
|
00240 }
|
|
00241
|
|
<a name="l00246"></a><a class="code" href="classvCard.html#a11">00246</a> function <a class="code" href="classvCard.html#a11">getFileName</a>() {
|
|
00247 <span class="keywordflow">return</span> $this->filename;
|
|
00248 }
|
|
00249 }
|
|
00250 ?>
|
|
</div></pre><hr size="1"><address style="align: right;"><small>Généré le Fri Jul 16 08:51:52 2004 pour dolibarr par
|
|
<a href="http://www.doxygen.org/index.html">
|
|
<img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.7 </small></address>
|
|
</body>
|
|
</html>
|