GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Passed
Push — master ( 4d21df...50705d )
by Jens
03:00
created
carddav2fb.php 2 patches
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -615,7 +615,7 @@  discard block
 block discarded – undo
615 615
             print "  Added photo: " . basename($photo_file) . PHP_EOL;
616 616
           }
617 617
           else
618
-           print "  WARNING: Only jpg contact photos are currently supported." . PHP_EOL;
618
+            print "  WARNING: Only jpg contact photos are currently supported." . PHP_EOL;
619 619
         }
620 620
         elseif(substr($entry['photo_data'][0], 0, 4) == 'http')
621 621
         {
@@ -804,10 +804,10 @@  discard block
 block discarded – undo
804 804
       );
805 805
 
806 806
       $filefileds = array('PhonebookImportFile' => array(
807
-       'type' => 'text/xml',
808
-       'filename' => 'updatepb.xml',
809
-       'content' => $this->fbxml,
810
-       )
807
+        'type' => 'text/xml',
808
+        'filename' => 'updatepb.xml',
809
+        'content' => $this->fbxml,
810
+        )
811 811
       );
812 812
 
813 813
       $raw_result =  $fritz->doPostFile($formfields, $filefileds);   // send the command
Please login to merge, or discard this patch.
Braces   +208 added lines, -91 removed lines patch added patch discarded remove patch
@@ -38,9 +38,12 @@  discard block
 block discarded – undo
38 38
 require_once('lib/fritzbox_api_php/fritzbox_api.class.php');
39 39
 
40 40
 if($argc == 2)
41
+{
41 42
   $config_file_name = $argv[1];
42
-else
43
+}
44
+else {
43 45
   $config_file_name = __DIR__ . '/config.php';
46
+}
44 47
 
45 48
 // default/fallback config options
46 49
 $config['tmp_dir'] = sys_get_temp_dir();
@@ -60,7 +63,9 @@  discard block
 block discarded – undo
60 63
 $config['quickdial_keyword'] = 'Quickdial:';
61 64
 
62 65
 if(is_file($config_file_name))
66
+{
63 67
   require($config_file_name);
68
+}
64 69
 else
65 70
 {
66 71
   print 'ERROR: No ' . $config_file_name . ' found, please take a look at config.example.php and create a ' . $config_file_name . ' file!' . PHP_EOL;
@@ -122,7 +127,9 @@  discard block
 block discarded – undo
122 127
   public function mktemp($dir, $prefix = '', $mode = 0700)
123 128
   {
124 129
     if(substr($dir, -1) != '/')
125
-      $dir .= '/';
130
+    {
131
+          $dir .= '/';
132
+    }
126 133
 
127 134
     do
128 135
     {
@@ -143,7 +150,12 @@  discard block
 block discarded – undo
143 150
         if($object != "." && $object != "..")
144 151
         {
145 152
           if(filetype($dir . "/" . $object) == "dir")
146
-            rrmdir($dir . "/" . $object); else unlink($dir . "/" . $object);
153
+          {
154
+                      rrmdir($dir . "/" . $object);
155
+          }
156
+          else {
157
+              unlink($dir . "/" . $object);
158
+            }
147 159
         }
148 160
       }
149 161
       reset($objects);
@@ -157,18 +169,25 @@  discard block
 block discarded – undo
157 169
     {
158 170
       // Check if there are valid base64 characters
159 171
       if(!preg_match('/^[a-zA-Z0-9\/\r\n+]*={0,2}$/', $str))
160
-        return false;
172
+      {
173
+              return false;
174
+      }
161 175
 
162 176
       // Decode the string in strict mode and check the results
163 177
       $decoded = base64_decode($str, true);
164 178
       if($decoded === false)
165
-        return false;
179
+      {
180
+              return false;
181
+      }
166 182
 
167 183
       // Encode the string again
168 184
       if(base64_encode($decoded) === $str)
169
-        return true;
170
-      else
171
-        return false;
185
+      {
186
+              return true;
187
+      }
188
+      else {
189
+              return false;
190
+      }
172 191
     }
173 192
     catch(Exception $e)
174 193
     {
@@ -210,7 +229,9 @@  discard block
 block discarded – undo
210 229
         // set the vcard extension in case the user
211 230
         // defined it in the config
212 231
         if(isset($conf['extension']))
213
-          $carddav->setVcardExtension($conf['extension']);
232
+        {
233
+                  $carddav->setVcardExtension($conf['extension']);
234
+        }
214 235
 
215 236
         // retrieve data from the CardDAV server now
216 237
         $xmldata = $carddav->get();
@@ -219,7 +240,9 @@  discard block
 block discarded – undo
219 240
         // CardDAV server and if not reencode it since the FRITZ!Box
220 241
         // requires UTF-8 encoded data
221 242
         if(iconv('utf-8', 'utf-8//IGNORE', $xmldata) != $xmldata)
222
-          $xmldata = utf8_encode($xmldata);
243
+        {
244
+                  $xmldata = utf8_encode($xmldata);
245
+        }
223 246
 
224 247
         // read raw_vcard data from xml response
225 248
         $raw_vcards = array();
@@ -241,10 +264,14 @@  discard block
 block discarded – undo
241 264
           $vcard_obj = new vCard(false, $v);
242 265
           $name_arr = null;
243 266
           if(isset($vcard_obj->n[0]))
244
-            $name_arr = $vcard_obj->n[0];
267
+          {
268
+                      $name_arr = $vcard_obj->n[0];
269
+          }
245 270
           $org_arr = null;
246 271
           if(isset($vcard_obj->org[0]))
247
-            $org_arr = $vcard_obj->org[0];
272
+          {
273
+                      $org_arr = $vcard_obj->org[0];
274
+          }
248 275
           $addnames = '';
249 276
           $prefix = '';
250 277
           $suffix = '';
@@ -252,16 +279,24 @@  discard block
 block discarded – undo
252 279
 
253 280
           // Build name Parts if existing ans switch to true in config
254 281
           if(isset($name_arr['prefixes']) and $this->config['prefix'])
255
-            $prefix = trim($name_arr['prefixes']);
282
+          {
283
+                      $prefix = trim($name_arr['prefixes']);
284
+          }
256 285
 
257 286
           if(isset($name_arr['suffixes']) and $this->config['suffix'])
258
-            $suffix = trim($name_arr['suffixes']);
287
+          {
288
+                      $suffix = trim($name_arr['suffixes']);
289
+          }
259 290
 
260 291
           if(isset($name_arr['additionalnames']) and $this->config['addnames'])
261
-            $addnames = trim($name_arr['additionalnames']);
292
+          {
293
+                      $addnames = trim($name_arr['additionalnames']);
294
+          }
262 295
 
263 296
           if(isset($org_arr['name']) and $this->config['orgname'])
264
-            $orgname = trim($org_arr['name']);
297
+          {
298
+                      $orgname = trim($org_arr['name']);
299
+          }
265 300
 
266 301
           $firstname = trim($name_arr['firstname']);
267 302
           $lastname = trim($name_arr['lastname']);
@@ -281,71 +316,97 @@  discard block
 block discarded – undo
281 316
 
282 317
           // Prefix
283 318
           if(!empty($prefix))
284
-            $name .= $prefix;
319
+          {
320
+                      $name .= $prefix;
321
+          }
285 322
 
286 323
           if($format == 0)
287 324
           {
288 325
             // Lastname
289 326
             if(!empty($name) and !empty($lastname))
290
-              $name .= ' ' . $lastname;
291
-            else
292
-              $name .= $lastname;
327
+            {
328
+                          $name .= ' ' . $lastname;
329
+            }
330
+            else {
331
+                          $name .= $lastname;
332
+            }
293 333
           }
294 334
           else
295 335
           {
296 336
             // Firstname
297 337
             if(!empty($name) and !empty($firstname))
298
-              $name .= ' ' . $firstname;
299
-            else
300
-              $name .= $firstname;
338
+            {
339
+                          $name .= ' ' . $firstname;
340
+            }
341
+            else {
342
+                          $name .= $firstname;
343
+            }
301 344
           }
302 345
 
303 346
           if($format == 2)
304 347
           {
305 348
             // AdditionalNames
306 349
             if(!empty($name) and !empty($addnames))
307
-              $name .= ' ' . $addnames;
308
-            else
309
-              $name .= $addnames;
350
+            {
351
+                          $name .= ' ' . $addnames;
352
+            }
353
+            else {
354
+                          $name .= $addnames;
355
+            }
310 356
           }
311 357
 
312 358
           if($format == 0)
313 359
           {
314 360
             // Firstname
315 361
             if(!empty($name) and !empty($firstname))
316
-              $name .= ', ' . $firstname;
317
-            else
318
-              $name .= $firstname;
362
+            {
363
+                          $name .= ', ' . $firstname;
364
+            }
365
+            else {
366
+                          $name .= $firstname;
367
+            }
319 368
           }
320 369
           else
321 370
           {
322 371
             // Lastname
323 372
             if(!empty($name) and !empty($lastname))
324
-              $name .= ' ' . $lastname;
325
-            else
326
-              $name .= $lastname;
373
+            {
374
+                          $name .= ' ' . $lastname;
375
+            }
376
+            else {
377
+                          $name .= $lastname;
378
+            }
327 379
           }
328 380
 
329 381
           if($format != 2)
330 382
           {
331 383
             // AdditionalNames
332 384
             if(!empty($name) and !empty($addnames))
333
-              $name .= ' ' . $addnames;
334
-            else
335
-              $name .= $addnames;
385
+            {
386
+                          $name .= ' ' . $addnames;
387
+            }
388
+            else {
389
+                          $name .= $addnames;
390
+            }
336 391
           }
337 392
 
338 393
           // Suffix
339 394
           if(!empty($name) and !empty($suffix))
340
-            $name .= ' ' . $suffix;
341
-          else
342
-            $name .= $suffix;
395
+          {
396
+                      $name .= ' ' . $suffix;
397
+          }
398
+          else {
399
+                      $name .= $suffix;
400
+          }
343 401
 
344 402
           // OrgName
345 403
           if(!empty($name) and !empty($orgname))
346
-            $name .= ' (' . $orgname . ')';
347
-          else
348
-            $name .= $orgname;
404
+          {
405
+                      $name .= ' (' . $orgname . ')';
406
+          }
407
+          else {
408
+                      $name .= $orgname;
409
+          }
349 410
 
350 411
           // make sure to trim whitespaces and double spaces
351 412
           $name = trim(str_replace('  ', ' ', $name));
@@ -370,15 +431,19 @@  discard block
 block discarded – undo
370 431
               array('', '_', '_', '_', 'ae', 'oe', 'ue', 'Ae', 'Oe', 'Ue', 'ss', 'a', 'a', 'o', 'o', 'u', 'u', 'i', 'oe'), $name);
371 432
             }
372 433
           }
373
-          else
374
-            $photo = '';
434
+          else {
435
+                      $photo = '';
436
+          }
375 437
 
376 438
           // phone
377 439
           $phone_no = array();
378 440
           if($vcard_obj->categories)
379
-            $categories = $vcard_obj->categories[0];
380
-          else
381
-            $categories = array();
441
+          {
442
+                      $categories = $vcard_obj->categories[0];
443
+          }
444
+          else {
445
+                      $categories = array();
446
+          }
382 447
 
383 448
           // check for quickdial entry
384 449
           if(isset($vcard_obj->note[0]))
@@ -413,9 +478,10 @@  discard block
 block discarded – undo
413 478
                 break;
414 479
               }
415 480
             }
416
-          } 
417
-          else
418
-            $add_entry = 1;
481
+          }
482
+          else {
483
+                      $add_entry = 1;
484
+          }
419 485
 
420 486
           if($add_entry == 1)
421 487
           {
@@ -440,9 +506,13 @@  discard block
 block discarded – undo
440 506
                   {
441 507
                     //Set quickdial
442 508
                     if($value == 1)
443
-                      print "\nWARNING: Quickdial value 1 (**701) is not possible but used! \n";
509
+                    {
510
+                                          print "\nWARNING: Quickdial value 1 (**701) is not possible but used! \n";
511
+                    }
444 512
                     elseif($value >= 100)
445
-                      print "\nWARNING: Quickdial value bigger than 99 (**799) is not possible but used! \n";
513
+                    {
514
+                                          print "\nWARNING: Quickdial value bigger than 99 (**799) is not possible but used! \n";
515
+                    }
446 516
 
447 517
                     $quickdial = $value;
448 518
                   }
@@ -452,23 +522,38 @@  discard block
 block discarded – undo
452 522
 
453 523
                 // find out priority
454 524
                 if(in_array("pref", $typearr_lower))
455
-                  $prio = 1;
525
+                {
526
+                                  $prio = 1;
527
+                }
456 528
 
457 529
                 // set the proper type
458 530
                 if(in_array("cell", $typearr_lower))
459
-                  $type = "mobile";
531
+                {
532
+                                  $type = "mobile";
533
+                }
460 534
                 elseif(in_array("home", $typearr_lower))
461
-                  $type = "home";
535
+                {
536
+                                  $type = "home";
537
+                }
462 538
                 elseif(in_array("fax", $typearr_lower))
463
-                  $type = "fax_work";
539
+                {
540
+                                  $type = "fax_work";
541
+                }
464 542
                 elseif(in_array("work", $typearr_lower))
465
-                  $type = "work";
543
+                {
544
+                                  $type = "work";
545
+                }
466 546
                 elseif(in_array("other", $typearr_lower))
467
-                  $type = "other";
547
+                {
548
+                                  $type = "other";
549
+                }
468 550
                 elseif(in_array("dom", $typearr_lower))
469
-                  $type = "other";
470
-                else
471
-                  continue;
551
+                {
552
+                                  $type = "other";
553
+                }
554
+                else {
555
+                                  continue;
556
+                }
472 557
               }
473 558
               $phone_no[] = array("type"=>$type, "prio"=>$prio, "quickdial"=>$quickdial, "value" => $this->_clear_phone_number($phone_number));
474 559
             }
@@ -488,13 +573,20 @@  discard block
 block discarded – undo
488 573
                   $email = $e['value'];
489 574
                   $typearr_lower = unserialize(strtolower(serialize($e['type'])));
490 575
                   if(in_array("work", $typearr_lower))
491
-                    $type_email = "work";
576
+                  {
577
+                                      $type_email = "work";
578
+                  }
492 579
                   elseif(in_array("home", $typearr_lower))
493
-                    $type_email = "home";
580
+                  {
581
+                                      $type_email = "home";
582
+                  }
494 583
                   elseif(in_array("other", $typearr_lower))
495
-                    $type_email = "other";
496
-                  else
497
-                    continue;
584
+                  {
585
+                                      $type_email = "other";
586
+                  }
587
+                  else {
588
+                                      continue;
589
+                  }
498 590
                 }
499 591
 
500 592
                 // DEBUG: print out the email address on the console
@@ -522,7 +614,9 @@  discard block
 block discarded – undo
522 614
   public function build_fb_xml()
523 615
   {
524 616
     if(empty($this->entries))
525
-      throw new Exception('No entries available! Call get_carddav_entries or set $this->entries manually!');
617
+    {
618
+          throw new Exception('No entries available! Call get_carddav_entries or set $this->entries manually!');
619
+    }
526 620
 
527 621
     // create FB XML in utf-8 format
528 622
     $root = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><phonebooks><phonebook></phonebook></phonebooks>');
@@ -561,7 +655,9 @@  discard block
 block discarded – undo
561 655
 
562 656
       // output a warning if no telephone number was found
563 657
       if($id == 0)
564
-        print "  WARNING: no phone entry found. VCard will be ignored." . PHP_EOL;
658
+      {
659
+              print "  WARNING: no phone entry found. VCard will be ignored." . PHP_EOL;
660
+      }
565 661
 
566 662
       // email: put the email addresses into the fritzbox xml file
567 663
       $email = $contact->addChild("services");
@@ -611,8 +707,9 @@  discard block
 block discarded – undo
611 707
 
612 708
             print "  Added photo: " . basename($photo_file) . PHP_EOL;
613 709
           }
614
-          else
615
-           print "  WARNING: Only jpg contact photos are currently supported." . PHP_EOL;
710
+          else {
711
+                     print "  WARNING: Only jpg contact photos are currently supported." . PHP_EOL;
712
+          }
616 713
         }
617 714
         elseif(substr($entry['photo_data'][0], 0, 4) == 'http')
618 715
         {
@@ -621,8 +718,9 @@  discard block
 block discarded – undo
621 718
 
622 719
           print "  Added photo: " . $entry['photo_data'][0] . PHP_EOL;
623 720
         }
624
-        else
625
-          print "  WARNING: Only VCard embedded photo data or a reference URL is currently supported." . PHP_EOL;
721
+        else {
722
+                  print "  WARNING: Only VCard embedded photo data or a reference URL is currently supported." . PHP_EOL;
723
+        }
626 724
       }
627 725
 
628 726
       $contact->addChild("services");
@@ -631,7 +729,9 @@  discard block
 block discarded – undo
631 729
     }
632 730
 
633 731
     if($root->asXML() != false)
634
-      $this->fbxml = $root->asXML();
732
+    {
733
+          $this->fbxml = $root->asXML();
734
+    }
635 735
     else
636 736
     {
637 737
       print "  ERROR: created XML data isn't well-formed." . PHP_EOL;
@@ -648,19 +748,27 @@  discard block
 block discarded – undo
648 748
   public function _concat($text1, $text2)
649 749
   {
650 750
     if($text1 == '')
651
-      return $text2;
751
+    {
752
+          return $text2;
753
+    }
652 754
     elseif($text2 == '')
653
-      return $text1;
654
-    else
655
-      return $text1 . ", " . $text2;
755
+    {
756
+          return $text1;
757
+    }
758
+    else {
759
+          return $text1 . ", " . $text2;
760
+    }
656 761
   }
657 762
 
658 763
   public function _parse_fb_result($text)
659 764
   {
660 765
     if(preg_match("/\<h2\>([^\<]+)\<\/h2\>/", $text, $matches) == 1 && !empty($matches))
661
-      return $matches[1];
662
-    else
663
-      return "Error while uploading xml to fritzbox";
766
+    {
767
+          return $matches[1];
768
+    }
769
+    else {
770
+          return "Error while uploading xml to fritzbox";
771
+    }
664 772
   }
665 773
 
666 774
   public function upload_to_fb()
@@ -746,12 +854,16 @@  discard block
 block discarded – undo
746 854
 
747 855
                   ftp_pasv($conn_id, true);
748 856
                   if(!ftp_put($conn_id, $remote_path . "/" . $file, $fileinfo->getPathname(), FTP_BINARY))
749
-                    print " ERROR: while uploading file " . $fileinfo->getFilename() . PHP_EOL;
750
-                  else
751
-                    print " ok." . PHP_EOL;
857
+                  {
858
+                                      print " ERROR: while uploading file " . $fileinfo->getFilename() . PHP_EOL;
859
+                  }
860
+                  else {
861
+                                      print " ok." . PHP_EOL;
862
+                  }
863
+                }
864
+                else {
865
+                                  print " ok." . PHP_EOL;
752 866
                 }
753
-                else
754
-                  print " ok." . PHP_EOL;
755 867
 
756 868
                 // cleanup old files
757 869
                 foreach($all_existing_files as $existing_file)
@@ -763,20 +875,23 @@  discard block
 block discarded – undo
763 875
                   }
764 876
                 }
765 877
               }
766
-              else
767
-                print " already exists." . PHP_EOL;
878
+              else {
879
+                              print " already exists." . PHP_EOL;
880
+              }
768 881
             }
769 882
           }
770 883
         }
771 884
       }
772
-      else
773
-        print " ERROR: couldn't login to FTP-server '" . $ftp_server . "' with provided username/password settings." . PHP_EOL;
885
+      else {
886
+              print " ERROR: couldn't login to FTP-server '" . $ftp_server . "' with provided username/password settings." . PHP_EOL;
887
+      }
774 888
 
775 889
       // close ftp connection
776 890
       ftp_close($conn_id);
777 891
     }
778
-    else
779
-      print " ERROR: couldn't connect to FTP server '" . $ftp_server . "'." . PHP_EOL;
892
+    else {
893
+          print " ERROR: couldn't connect to FTP server '" . $ftp_server . "'." . PHP_EOL;
894
+    }
780 895
 
781 896
     // in case numeric IP is given, try to resolve to hostname. Otherwise Fritzbox may decline login, because it is determine to be (prohibited) remote access
782 897
     $hostname = $this->config['fritzbox_ip'];
@@ -784,7 +899,9 @@  discard block
 block discarded – undo
784 899
     {
785 900
       $hostname = gethostbyaddr($hostname);
786 901
       if($hostname == $this->config['fritzbox_ip'])
787
-        print " WARNING: Unable to get hostname for IP address (" . $this->config['fritzbox_ip'] . ") <" . $hostname . "<" . PHP_EOL;
902
+      {
903
+              print " WARNING: Unable to get hostname for IP address (" . $this->config['fritzbox_ip'] . ") <" . $hostname . "<" . PHP_EOL;
904
+      }
788 905
       else
789 906
       {
790 907
         print " INFO: Given IP address (" . $this->config['fritzbox_ip'] . ") has hostname " . $hostname . "." . PHP_EOL;
Please login to merge, or discard this patch.
lib/fritzbox_api_php/fritzbox_guestlan_on_off.php 1 patch
Indentation   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -94,7 +94,7 @@
 block discarded – undo
94 94
   preg_match('@name="guest_enabled"[^>]+(checked)[^>]*@', $output, $matches);
95 95
   if ( isset($matches[1]) && $mode == true )
96 96
   {
97
-		$message .= 'LAN4 guest access is now active.';
97
+    $message .= 'LAN4 guest access is now active.';
98 98
   }
99 99
   else if ( !isset($matches[1]) && $mode == false )
100 100
   {
Please login to merge, or discard this patch.
lib/fritzbox_api_php/fritzbox_api.class.php 2 patches
Indentation   +145 added lines, -145 removed lines patch added patch discarded remove patch
@@ -48,70 +48,70 @@  discard block
 block discarded – undo
48 48
  */
49 49
 class fritzbox_api {
50 50
   /**
51
-    * @var  object  config object
52
-    */
51
+   * @var  object  config object
52
+   */
53 53
   public $config = array();
54 54
   
55 55
   /**
56
-    * @var  string  the session ID, set by method initSID() after login
57
-    */
56
+   * @var  string  the session ID, set by method initSID() after login
57
+   */
58 58
   protected $sid = '0000000000000000';
59 59
   
60 60
   
61 61
   /**
62
-    * the constructor, initializes the object and calls the login method
63
-    * 
64
-    * @access public
65
-    */
62
+   * the constructor, initializes the object and calls the login method
63
+   * 
64
+   * @access public
65
+   */
66 66
   public function __construct($password = false,$user_name = false,$fritzbox_ip = 'fritz.box',$force_local_login = false)
67 67
   {
68
-	// init the config object
69
-	$this->config = new fritzbox_api_config();
68
+  // init the config object
69
+  $this->config = new fritzbox_api_config();
70 70
     
71
-	// try autoloading the config
72
-	if (file_exists(__DIR__ . '/fritzbox_user.conf.php') && is_readable(__DIR__ . '/fritzbox_user.conf.php') ) {
73
-		require_once(__DIR__ . '/fritzbox_user.conf.php');
74
-	}
71
+  // try autoloading the config
72
+  if (file_exists(__DIR__ . '/fritzbox_user.conf.php') && is_readable(__DIR__ . '/fritzbox_user.conf.php') ) {
73
+    require_once(__DIR__ . '/fritzbox_user.conf.php');
74
+  }
75 75
 
76
-	// set FRITZ!Box-IP and URL
77
-	$this->config->setItem('fritzbox_ip',$fritzbox_ip);
76
+  // set FRITZ!Box-IP and URL
77
+  $this->config->setItem('fritzbox_ip',$fritzbox_ip);
78 78
 
79
-	// check if login on local network (fritz.box) or via a dynamic DNS-host
80
-	if ($fritzbox_ip != 'fritz.box' && !$force_local_login) {
81
-		$this->config->setItem('enable_remote_config',true);
82
-		$this->config->setItem('remote_config_user',$user_name);
83
-		$this->config->setItem('remote_config_password',$password);
84
-		$this->config->setItem('fritzbox_url', 'https://'.$this->config->getItem('fritzbox_ip'));
85
-	} else {
86
-		$this->config->setItem('enable_remote_config',false);
87
-		if($user_name != false){
88
-			$this->config->setItem('username',$user_name);
89
-		}
90
-		if($password != false){
91
-			$this->config->setItem('password',$password);
92
-		}
93
-		$this->config->setItem('fritzbox_url', 'http://' . $this->config->getItem('fritzbox_ip'));
94
-	}
79
+  // check if login on local network (fritz.box) or via a dynamic DNS-host
80
+  if ($fritzbox_ip != 'fritz.box' && !$force_local_login) {
81
+    $this->config->setItem('enable_remote_config',true);
82
+    $this->config->setItem('remote_config_user',$user_name);
83
+    $this->config->setItem('remote_config_password',$password);
84
+    $this->config->setItem('fritzbox_url', 'https://'.$this->config->getItem('fritzbox_ip'));
85
+  } else {
86
+    $this->config->setItem('enable_remote_config',false);
87
+    if($user_name != false){
88
+      $this->config->setItem('username',$user_name);
89
+    }
90
+    if($password != false){
91
+      $this->config->setItem('password',$password);
92
+    }
93
+    $this->config->setItem('fritzbox_url', 'http://' . $this->config->getItem('fritzbox_ip'));
94
+  }
95 95
 
96
-	// make some config consistency checks
97
-	if ( $this->config->getItem('enable_remote_config') === true ){
98
-		if ( !$this->config->getItem('remote_config_user') || !$this->config->getItem('remote_config_password') ){
99
-		  $this->error('ERROR: Remote config mode enabled, but no username or no password provided');
100
-		}
101
-	}
102
-	else {
103
-		$this->config->setItem('old_remote_config_user', null);
104
-		$this->config->setItem('old_remote_config_password', null);
105
-	}
106
-	$this->sid = $this->initSID();
96
+  // make some config consistency checks
97
+  if ( $this->config->getItem('enable_remote_config') === true ){
98
+    if ( !$this->config->getItem('remote_config_user') || !$this->config->getItem('remote_config_password') ){
99
+      $this->error('ERROR: Remote config mode enabled, but no username or no password provided');
100
+    }
101
+  }
102
+  else {
103
+    $this->config->setItem('old_remote_config_user', null);
104
+    $this->config->setItem('old_remote_config_password', null);
105
+  }
106
+  $this->sid = $this->initSID();
107 107
   }
108 108
   
109 109
   
110 110
   /**
111
-    * the destructor just calls the logout method
112
-    * 
113
-    * @access public
114
-    */
111
+   * the destructor just calls the logout method
112
+   * 
113
+   * @access public
114
+   */
115 115
   public function __destruct()
116 116
   {
117 117
     $this->logout();
@@ -119,12 +119,12 @@  discard block
 block discarded – undo
119 119
   
120 120
   
121 121
   /**
122
-    * do a POST request on the box
123
-    * the main cURL wrapper handles the command
124
-    * 
125
-    * @param  array  $formfields    an associative array with the POST fields to pass
126
-    * @return string                the raw HTML code returned by the Fritz!Box
127
-    */
122
+   * do a POST request on the box
123
+   * the main cURL wrapper handles the command
124
+   * 
125
+   * @param  array  $formfields    an associative array with the POST fields to pass
126
+   * @return string                the raw HTML code returned by the Fritz!Box
127
+   */
128 128
   public function doPostForm($formfields = array())
129 129
   {
130 130
     $ch = curl_init();
@@ -147,24 +147,24 @@  discard block
 block discarded – undo
147 147
     curl_setopt($ch, CURLOPT_POST, 1);
148 148
     if ( $this->config->getItem('enable_remote_config') == true )
149 149
     {
150
-		// set name of SSL-certificate (must be same as remote-hostname (dynDNS) of FRITZ!Box) and remove port in address if alternate port is given
151
-		if (strpos($this->config->getItem('fritzbox_ip'),":")){
152
-			$ssl_cert_fritzbox = explode(":", $this->config->getItem('fritzbox_ip'));
153
-			$ssl_cert_fritzbox = $ssl_cert_fritzbox[0];
154
-		} else {
155
-			$ssl_cert_fritzbox = $this->config->getItem('fritzbox_ip');
156
-		}
150
+    // set name of SSL-certificate (must be same as remote-hostname (dynDNS) of FRITZ!Box) and remove port in address if alternate port is given
151
+    if (strpos($this->config->getItem('fritzbox_ip'),":")){
152
+      $ssl_cert_fritzbox = explode(":", $this->config->getItem('fritzbox_ip'));
153
+      $ssl_cert_fritzbox = $ssl_cert_fritzbox[0];
154
+    } else {
155
+      $ssl_cert_fritzbox = $this->config->getItem('fritzbox_ip');
156
+    }
157 157
 
158
-		// set SSL-options and path to certificate
159
-		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 2);
160
-		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
161
-		curl_setopt($ch, CURLOPT_CAINFO, '/etc/ssl/certs/'.$ssl_cert_fritzbox.'.pem');
162
-		curl_setopt($ch, CURLOPT_CAPATH, '/etc/ssl/certs');
158
+    // set SSL-options and path to certificate
159
+    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 2);
160
+    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
161
+    curl_setopt($ch, CURLOPT_CAINFO, '/etc/ssl/certs/'.$ssl_cert_fritzbox.'.pem');
162
+    curl_setopt($ch, CURLOPT_CAPATH, '/etc/ssl/certs');
163 163
 
164
-		// support for pre FRITZ!OS 5.50 remote config
165
-		if (!$this->config->getItem('use_lua_login_method')){
166
-		curl_setopt($ch, CURLOPT_USERPWD, $this->config->getItem('remote_config_user') . ':' . $this->config->getItem('remote_config_password'));
167
-		}
164
+    // support for pre FRITZ!OS 5.50 remote config
165
+    if (!$this->config->getItem('use_lua_login_method')){
166
+    curl_setopt($ch, CURLOPT_USERPWD, $this->config->getItem('remote_config_user') . ':' . $this->config->getItem('remote_config_password'));
167
+    }
168 168
     }
169 169
     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($formfields));
170 170
     $output = curl_exec($ch);
@@ -179,10 +179,10 @@  discard block
 block discarded – undo
179 179
     // add the sid, if it is already set
180 180
     if ($this->sid != '0000000000000000')
181 181
     {
182
-		// 'sid' MUST be the first POST variable!!! (otherwise it will not work!!)
183
-		// therfore we use array_merge to ensuere the foreach outputs 'sid' fist
184
-		$formfields = array_merge(array('sid' => $this->sid), $formfields);
185
-		//$formfields['sid'] = $this->sid;
182
+    // 'sid' MUST be the first POST variable!!! (otherwise it will not work!!)
183
+    // therfore we use array_merge to ensuere the foreach outputs 'sid' fist
184
+    $formfields = array_merge(array('sid' => $this->sid), $formfields);
185
+    //$formfields['sid'] = $this->sid;
186 186
     }   
187 187
     curl_setopt($ch, CURLOPT_URL, $this->config->getItem('fritzbox_url') . '/cgi-bin/firmwarecfg'); 
188 188
     curl_setopt($ch, CURLOPT_POST, 1);
@@ -193,30 +193,30 @@  discard block
 block discarded – undo
193 193
     
194 194
     // if filefileds not specified ('@/path/to/file.xml;type=text/xml' works fine)
195 195
     if(empty( $filefileds )) {
196
-		curl_setopt($ch, CURLOPT_POSTFIELDS, $formfields); // http_build_query
197
-	} 
198
-	// post calculated raw data
199
-	else {
200
-		$header = $this->_create_custom_file_post_header($formfields, $filefileds);
201
-		curl_setopt($ch, CURLOPT_HTTPHEADER , array(
202
-			'Content-Type: multipart/form-data; boundary=' . $header['delimiter'], 'Content-Length: ' . strlen($header['data']) )
203
-			);
196
+    curl_setopt($ch, CURLOPT_POSTFIELDS, $formfields); // http_build_query
197
+  } 
198
+  // post calculated raw data
199
+  else {
200
+    $header = $this->_create_custom_file_post_header($formfields, $filefileds);
201
+    curl_setopt($ch, CURLOPT_HTTPHEADER , array(
202
+      'Content-Type: multipart/form-data; boundary=' . $header['delimiter'], 'Content-Length: ' . strlen($header['data']) )
203
+      );
204 204
 			
205
-		curl_setopt($ch, CURLOPT_POSTFIELDS, $header['data']);		
206
-	}
205
+    curl_setopt($ch, CURLOPT_POSTFIELDS, $header['data']);		
206
+  }
207 207
 	
208 208
     $output = curl_exec($ch);
209 209
 
210
-	// curl error
211
-	if(curl_errno($ch)) {
212
-		$this->error(curl_error($ch)." (".curl_errno($ch).")");
213
-	}
210
+  // curl error
211
+  if(curl_errno($ch)) {
212
+    $this->error(curl_error($ch)." (".curl_errno($ch).")");
213
+  }
214 214
 
215 215
     // finger out an error message, if given
216 216
     preg_match('@<p class="ErrorMsg">(.*?)</p>@is', $output, $matches);
217 217
     if (isset($matches[1]))
218 218
     {
219
-		$this->error(str_replace('&nbsp;', ' ', $matches[1]));
219
+    $this->error(str_replace('&nbsp;', ' ', $matches[1]));
220 220
     }
221 221
 
222 222
     curl_close($ch);
@@ -224,10 +224,10 @@  discard block
 block discarded – undo
224 224
   }
225 225
 
226 226
   private function _create_custom_file_post_header($postFields, $fileFields) {
227
-		// form field separator
228
-		$delimiter = '-------------' . uniqid();
227
+    // form field separator
228
+    $delimiter = '-------------' . uniqid();
229 229
 		
230
-		/*
230
+    /*
231 231
 		// file upload fields: name => array(type=>'mime/type',content=>'raw data')
232 232
 		$fileFields = array(
233 233
 			'file1' => array(
@@ -242,44 +242,44 @@  discard block
 block discarded – undo
242 242
 		);
243 243
 		*/
244 244
 		
245
-		$data = '';
245
+    $data = '';
246 246
 
247
-		// populate normal fields first (simpler)
248
-		foreach ($postFields as $name => $content) {
249
-		   $data .= "--" . $delimiter . "\r\n";
250
-			$data .= 'Content-Disposition: form-data; name="' . urlencode($name) . '"';
251
-			$data .= "\r\n\r\n";
252
-			$data .= $content;
253
-			$data .= "\r\n";
254
-		}
255
-		// populate file fields
256
-		foreach ($fileFields as $name => $file) {
257
-			$data .= "--" . $delimiter . "\r\n";
258
-			// "filename" attribute is not essential; server-side scripts may use it
259
-			$data .= 'Content-Disposition: form-data; name="' . urlencode($name) . '";' .
260
-					 ' filename="' . $file['filename'] . '"' . "\r\n";
247
+    // populate normal fields first (simpler)
248
+    foreach ($postFields as $name => $content) {
249
+        $data .= "--" . $delimiter . "\r\n";
250
+      $data .= 'Content-Disposition: form-data; name="' . urlencode($name) . '"';
251
+      $data .= "\r\n\r\n";
252
+      $data .= $content;
253
+      $data .= "\r\n";
254
+    }
255
+    // populate file fields
256
+    foreach ($fileFields as $name => $file) {
257
+      $data .= "--" . $delimiter . "\r\n";
258
+      // "filename" attribute is not essential; server-side scripts may use it
259
+      $data .= 'Content-Disposition: form-data; name="' . urlencode($name) . '";' .
260
+            ' filename="' . $file['filename'] . '"' . "\r\n";
261 261
 					 
262
-			//$data .= 'Content-Transfer-Encoding: binary'."\r\n";
263
-			// this is, again, informative only; good practice to include though
264
-			$data .= 'Content-Type: ' . $file['type'] . "\r\n";
265
-			// this endline must be here to indicate end of headers
266
-			$data .= "\r\n";
267
-			// the file itself (note: there's no encoding of any kind)
268
-			$data .= $file['content'] . "\r\n";
269
-		}
270
-		// last delimiter
271
-		$data .= "--" . $delimiter . "--\r\n";
262
+      //$data .= 'Content-Transfer-Encoding: binary'."\r\n";
263
+      // this is, again, informative only; good practice to include though
264
+      $data .= 'Content-Type: ' . $file['type'] . "\r\n";
265
+      // this endline must be here to indicate end of headers
266
+      $data .= "\r\n";
267
+      // the file itself (note: there's no encoding of any kind)
268
+      $data .= $file['content'] . "\r\n";
269
+    }
270
+    // last delimiter
271
+    $data .= "--" . $delimiter . "--\r\n";
272 272
 	
273
-		return array('delimiter' => $delimiter, 'data' => $data);
274
-	}
273
+    return array('delimiter' => $delimiter, 'data' => $data);
274
+  }
275 275
   
276 276
   /**
277
-    * do a GET request on the box
278
-    * the main cURL wrapper handles the command
279
-    * 
280
-    * @param  array  $params    an associative array with the GET params to pass
281
-    * @return string            the raw HTML code returned by the Fritz!Box
282
-    */
277
+   * do a GET request on the box
278
+   * the main cURL wrapper handles the command
279
+   * 
280
+   * @param  array  $params    an associative array with the GET params to pass
281
+   * @return string            the raw HTML code returned by the Fritz!Box
282
+   */
283 283
   public function doGetRequest($params = array())
284 284
   {
285 285
     // add the sid, if it is already set
@@ -319,12 +319,12 @@  discard block
 block discarded – undo
319 319
   
320 320
   
321 321
   /**
322
-    * the login method, handles the secured login-process
323
-    * newer firmwares (xx.04.74 and newer) need a challenge-response mechanism to prevent Cross-Site Request Forgery attacks
324
-    * see http://www.avm.de/de/Extern/Technical_Note_Session_ID.pdf for details
325
-    * 
326
-    * @return string                a valid SID, if the login was successful, otherwise throws an Exception with an error message
327
-    */
322
+   * the login method, handles the secured login-process
323
+   * newer firmwares (xx.04.74 and newer) need a challenge-response mechanism to prevent Cross-Site Request Forgery attacks
324
+   * see http://www.avm.de/de/Extern/Technical_Note_Session_ID.pdf for details
325
+   * 
326
+   * @return string                a valid SID, if the login was successful, otherwise throws an Exception with an error message
327
+   */
328 328
   protected function initSID()
329 329
   {
330 330
     // determine, wich login type we have to use
@@ -404,9 +404,9 @@  discard block
 block discarded – undo
404 404
   
405 405
   
406 406
   /**
407
-    * the logout method just sends a logout command to the Fritz!Box
408
-    * 
409
-    */
407
+   * the logout method just sends a logout command to the Fritz!Box
408
+   * 
409
+   */
410 410
   protected function logout()
411 411
   {
412 412
     if ( $this->config->getItem('use_lua_login_method') == true )
@@ -425,10 +425,10 @@  discard block
 block discarded – undo
425 425
   
426 426
   
427 427
   /**
428
-    * the error method just throws an Exception
429
-    * 
430
-    * @param  string   $message     an error message for the Exception
431
-    */
428
+   * the error method just throws an Exception
429
+   * 
430
+   * @param  string   $message     an error message for the Exception
431
+   */
432 432
   public function error($message = null)
433 433
   {
434 434
     throw new Exception($message);
@@ -436,20 +436,20 @@  discard block
 block discarded – undo
436 436
   
437 437
   
438 438
   /**
439
-    * a getter for the session ID
440
-    * 
441
-    * @return string                $this->sid
442
-    */
439
+   * a getter for the session ID
440
+   * 
441
+   * @return string                $this->sid
442
+   */
443 443
   public function getSID()
444 444
   {
445 445
     return $this->sid;
446 446
   }
447 447
   
448 448
   /**
449
-    * log a message
450
-    * 
451
-    * @param  $message  string  the message to log
452
-    */
449
+   * log a message
450
+   * 
451
+   * @param  $message  string  the message to log
452
+   */
453 453
   public function logMessage($message)
454 454
   {
455 455
     if ( $this->config->getItem('newline') == false )
Please login to merge, or discard this patch.
Braces   +41 added lines, -20 removed lines patch added patch discarded remove patch
@@ -46,7 +46,8 @@  discard block
 block discarded – undo
46 46
  * the main Fritz!Box API class
47 47
  *
48 48
  */
49
-class fritzbox_api {
49
+class fritzbox_api
50
+{
50 51
   /**
51 52
     * @var  object  config object
52 53
     */
@@ -69,7 +70,8 @@  discard block
 block discarded – undo
69 70
 	$this->config = new fritzbox_api_config();
70 71
     
71 72
 	// try autoloading the config
72
-	if (file_exists(__DIR__ . '/fritzbox_user.conf.php') && is_readable(__DIR__ . '/fritzbox_user.conf.php') ) {
73
+	if (file_exists(__DIR__ . '/fritzbox_user.conf.php') && is_readable(__DIR__ . '/fritzbox_user.conf.php') )
74
+	{
73 75
 		require_once(__DIR__ . '/fritzbox_user.conf.php');
74 76
 	}
75 77
 
@@ -77,29 +79,37 @@  discard block
 block discarded – undo
77 79
 	$this->config->setItem('fritzbox_ip',$fritzbox_ip);
78 80
 
79 81
 	// check if login on local network (fritz.box) or via a dynamic DNS-host
80
-	if ($fritzbox_ip != 'fritz.box' && !$force_local_login) {
82
+	if ($fritzbox_ip != 'fritz.box' && !$force_local_login)
83
+	{
81 84
 		$this->config->setItem('enable_remote_config',true);
82 85
 		$this->config->setItem('remote_config_user',$user_name);
83 86
 		$this->config->setItem('remote_config_password',$password);
84 87
 		$this->config->setItem('fritzbox_url', 'https://'.$this->config->getItem('fritzbox_ip'));
85
-	} else {
88
+	}
89
+	else
90
+	{
86 91
 		$this->config->setItem('enable_remote_config',false);
87
-		if($user_name != false){
92
+		if($user_name != false)
93
+		{
88 94
 			$this->config->setItem('username',$user_name);
89 95
 		}
90
-		if($password != false){
96
+		if($password != false)
97
+		{
91 98
 			$this->config->setItem('password',$password);
92 99
 		}
93 100
 		$this->config->setItem('fritzbox_url', 'http://' . $this->config->getItem('fritzbox_ip'));
94 101
 	}
95 102
 
96 103
 	// make some config consistency checks
97
-	if ( $this->config->getItem('enable_remote_config') === true ){
98
-		if ( !$this->config->getItem('remote_config_user') || !$this->config->getItem('remote_config_password') ){
104
+	if ( $this->config->getItem('enable_remote_config') === true )
105
+	{
106
+		if ( !$this->config->getItem('remote_config_user') || !$this->config->getItem('remote_config_password') )
107
+		{
99 108
 		  $this->error('ERROR: Remote config mode enabled, but no username or no password provided');
100 109
 		}
101 110
 	}
102
-	else {
111
+	else
112
+	{
103 113
 		$this->config->setItem('old_remote_config_user', null);
104 114
 		$this->config->setItem('old_remote_config_password', null);
105 115
 	}
@@ -148,10 +158,13 @@  discard block
 block discarded – undo
148 158
     if ( $this->config->getItem('enable_remote_config') == true )
149 159
     {
150 160
 		// set name of SSL-certificate (must be same as remote-hostname (dynDNS) of FRITZ!Box) and remove port in address if alternate port is given
151
-		if (strpos($this->config->getItem('fritzbox_ip'),":")){
161
+		if (strpos($this->config->getItem('fritzbox_ip'),":"))
162
+		{
152 163
 			$ssl_cert_fritzbox = explode(":", $this->config->getItem('fritzbox_ip'));
153 164
 			$ssl_cert_fritzbox = $ssl_cert_fritzbox[0];
154
-		} else {
165
+		}
166
+		else
167
+		{
155 168
 			$ssl_cert_fritzbox = $this->config->getItem('fritzbox_ip');
156 169
 		}
157 170
 
@@ -162,7 +175,8 @@  discard block
 block discarded – undo
162 175
 		curl_setopt($ch, CURLOPT_CAPATH, '/etc/ssl/certs');
163 176
 
164 177
 		// support for pre FRITZ!OS 5.50 remote config
165
-		if (!$this->config->getItem('use_lua_login_method')){
178
+		if (!$this->config->getItem('use_lua_login_method'))
179
+		{
166 180
 		curl_setopt($ch, CURLOPT_USERPWD, $this->config->getItem('remote_config_user') . ':' . $this->config->getItem('remote_config_password'));
167 181
 		}
168 182
     }
@@ -173,7 +187,7 @@  discard block
 block discarded – undo
173 187
   }
174 188
 
175 189
   public function doPostFile($formfields = array(), $filefileds = array())
176
-  {  
190
+  {
177 191
     $ch = curl_init();
178 192
    
179 193
     // add the sid, if it is already set
@@ -192,11 +206,13 @@  discard block
 block discarded – undo
192 206
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
193 207
     
194 208
     // if filefileds not specified ('@/path/to/file.xml;type=text/xml' works fine)
195
-    if(empty( $filefileds )) {
209
+    if(empty( $filefileds ))
210
+    {
196 211
 		curl_setopt($ch, CURLOPT_POSTFIELDS, $formfields); // http_build_query
197 212
 	} 
198 213
 	// post calculated raw data
199
-	else {
214
+	else
215
+	{
200 216
 		$header = $this->_create_custom_file_post_header($formfields, $filefileds);
201 217
 		curl_setopt($ch, CURLOPT_HTTPHEADER , array(
202 218
 			'Content-Type: multipart/form-data; boundary=' . $header['delimiter'], 'Content-Length: ' . strlen($header['data']) )
@@ -208,7 +224,8 @@  discard block
 block discarded – undo
208 224
     $output = curl_exec($ch);
209 225
 
210 226
 	// curl error
211
-	if(curl_errno($ch)) {
227
+	if(curl_errno($ch))
228
+	{
212 229
 		$this->error(curl_error($ch)." (".curl_errno($ch).")");
213 230
 	}
214 231
 
@@ -223,7 +240,8 @@  discard block
 block discarded – undo
223 240
     return $output;
224 241
   }
225 242
 
226
-  private function _create_custom_file_post_header($postFields, $fileFields) {
243
+  private function _create_custom_file_post_header($postFields, $fileFields)
244
+  {
227 245
 		// form field separator
228 246
 		$delimiter = '-------------' . uniqid();
229 247
 		
@@ -245,7 +263,8 @@  discard block
 block discarded – undo
245 263
 		$data = '';
246 264
 
247 265
 		// populate normal fields first (simpler)
248
-		foreach ($postFields as $name => $content) {
266
+		foreach ($postFields as $name => $content)
267
+		{
249 268
 		   $data .= "--" . $delimiter . "\r\n";
250 269
 			$data .= 'Content-Disposition: form-data; name="' . urlencode($name) . '"';
251 270
 			$data .= "\r\n\r\n";
@@ -253,7 +272,8 @@  discard block
 block discarded – undo
253 272
 			$data .= "\r\n";
254 273
 		}
255 274
 		// populate file fields
256
-		foreach ($fileFields as $name => $file) {
275
+		foreach ($fileFields as $name => $file)
276
+		{
257 277
 			$data .= "--" . $delimiter . "\r\n";
258 278
 			// "filename" attribute is not essential; server-side scripts may use it
259 279
 			$data .= 'Content-Disposition: form-data; name="' . urlencode($name) . '";' .
@@ -479,7 +499,8 @@  discard block
 block discarded – undo
479 499
   }
480 500
 }
481 501
 
482
-class fritzbox_api_config {
502
+class fritzbox_api_config
503
+{
483 504
   protected $config = array();
484 505
 
485 506
   public function __construct()
Please login to merge, or discard this patch.
lib/fritzbox_api_php/fritzbox_delete_foncallslist.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -21,11 +21,11 @@
 block discarded – undo
21 21
   
22 22
   // delete calllist form fields
23 23
   $formfields = array(
24
-	'getpage'	=> '/fon_num/foncalls_list.lua',
25
-	'usejournal' 	=> '1',
26
-	'callstab' 	=> 'all',
27
-	'submit'	=> 'clear',
28
-	'clear'	=> '1',
24
+  'getpage'	=> '/fon_num/foncalls_list.lua',
25
+  'usejournal' 	=> '1',
26
+  'callstab' 	=> 'all',
27
+  'submit'	=> 'clear',
28
+  'clear'	=> '1',
29 29
   );
30 30
   
31 31
   $fritz->doPostForm($formfields);
Please login to merge, or discard this patch.
lib/fritzbox_api_php/fritzbox_guestwlan_on_off.php 1 patch
Indentation   +5 added lines, -5 removed lines patch added patch discarded remove patch
@@ -106,11 +106,11 @@
 block discarded – undo
106 106
   preg_match('@name="activate_guest_access"[^>]+(checked)[^>]*@', $output, $matches);
107 107
   if ( isset($matches[1]) && $mode == true )
108 108
   {
109
-		preg_match('@name="wpa_key"[^>]+value="([^"]*)"[^>]*@', $output, $matches);
110
-		if ( isset($matches[1]) )
111
-		{
112
-			$message .= 'WLAN guest access is now active. WPA-Key is "' . $matches[1] . '"';
113
-		}
109
+    preg_match('@name="wpa_key"[^>]+value="([^"]*)"[^>]*@', $output, $matches);
110
+    if ( isset($matches[1]) )
111
+    {
112
+      $message .= 'WLAN guest access is now active. WPA-Key is "' . $matches[1] . '"';
113
+    }
114 114
   }
115 115
   else if ( !isset($matches[1]) && $mode == false )
116 116
   {
Please login to merge, or discard this patch.
lib/vCard-parser/vCard.php 2 patches
Indentation   +682 added lines, -682 removed lines patch added patch discarded remove patch
@@ -7,686 +7,686 @@
 block discarded – undo
7 7
  * @see RFC 2426, RFC 2425
8 8
  * @version 0.4.8
9 9
 */
10
-	class vCard implements Countable, Iterator
11
-	{
12
-		const MODE_ERROR = 'error';
13
-		const MODE_SINGLE = 'single';
14
-		const MODE_MULTIPLE = 'multiple';
15
-
16
-		const endl = "\n";
17
-
18
-		/**
19
-		 * @var string Current object mode - error, single or multiple (for a single vCard within a file and multiple combined vCards)
20
-		 */
21
-		private $Mode;  //single, multiple, error
22
-
23
-		private $Path = '';
24
-		private $RawData = '';
25
-
26
-		/**
27
-		 * @var array Internal options container. Options:
28
-		 *	bool Collapse: If true, elements that can have multiple values but have only a single value are returned as that value instead of an array
29
-		 *		If false, an array is returned even if it has only one value.
30
-		 */
31
-		private $Options = array(
32
-			'Collapse' => false
33
-		);
34
-
35
-		/**
36
-		 * @var array Internal data container. Contains vCard objects for multiple vCards and just the data for single vCards.
37
-		 */
38
-		private $Data = array();
39
-
40
-		/**
41
-		 * @static Parts of structured elements according to the spec.
42
-		 */
43
-		private static $Spec_StructuredElements = array(
44
-			'n' => array('lastname', 'firstname', 'additionalnames', 'prefixes', 'suffixes'),
45
-			'adr' => array('pobox', 'extendedaddress', 'streetaddress', 'locality', 'region', 'postalcode', 'country'),
46
-			'geo' => array('latitude', 'longitude'),
47
-			'org' => array('name', 'unit1', 'unit2')
48
-		);
49
-		private static $Spec_MultipleValueElements = array('nickname', 'categories');
50
-
51
-		private static $Spec_ElementTypes = array(
52
-			'email' => array('internet', 'x400', 'pref', 'home', 'work'),
53
-			'adr' => array('dom', 'intl', 'postal', 'parcel', 'home', 'work', 'pref'),
54
-			'label' => array('dom', 'intl', 'postal', 'parcel', 'home', 'work', 'pref'),
55
-			'tel' => array('home', 'msg', 'work', 'pref', 'voice', 'fax', 'cell', 'video', 'pager', 'bbs', 'modem', 'car', 'isdn', 'pcs'),
56
-			'impp' => array('personal', 'business', 'home', 'work', 'mobile', 'pref')
57
-		);
58
-
59
-		private static $Spec_FileElements = array('photo', 'logo', 'sound');
60
-
61
-		/**
62
-		 * vCard constructor
63
-		 *
64
-		 * @param string Path to file, optional.
65
-		 * @param string Raw data, optional.
66
-		 * @param array Additional options, optional. Currently supported options:
67
-		 *	bool Collapse: If true, elements that can have multiple values but have only a single value are returned as that value instead of an array
68
-		 *		If false, an array is returned even if it has only one value.
69
-		 *
70
-		 * One of these parameters must be provided, otherwise an exception is thrown.
71
-		 */
72
-		public function __construct($Path = false, $RawData = false, array $Options = null)
73
-		{
74
-			// Checking preconditions for the parser.
75
-			// If path is given, the file should be accessible.
76
-			// If raw data is given, it is taken as it is.
77
-			// In both cases the real content is put in $this -> RawData
78
-			if ($Path)
79
-			{
80
-				if (!is_readable($Path))
81
-				{
82
-					throw new Exception('vCard: Path not accessible ('.$Path.')');
83
-				}
84
-
85
-				$this -> Path = $Path;
86
-				$this -> RawData = file_get_contents($this -> Path);
87
-			}
88
-			elseif ($RawData)
89
-			{
90
-				$this -> RawData = $RawData;
91
-			}
92
-			else
93
-			{
94
-				//throw new Exception('vCard: No content provided');
95
-				// Not necessary anymore as possibility to create vCards is added
96
-			}
97
-
98
-			if (!$this -> Path && !$this -> RawData)
99
-			{
100
-				return true;
101
-			}
102
-
103
-			if ($Options)
104
-			{
105
-				$this -> Options = array_merge($this -> Options, $Options);
106
-			}
107
-
108
-			// Counting the begin/end separators. If there aren't any or the count doesn't match, there is a problem with the file.
109
-			// If there is only one, this is a single vCard, if more, multiple vCards are combined.
110
-			$Matches = array();
111
-			$vCardBeginCount = preg_match_all('{^BEGIN\:VCARD}miS', $this -> RawData, $Matches);
112
-			$vCardEndCount = preg_match_all('{^END\:VCARD}miS', $this -> RawData, $Matches);
113
-
114
-			if (($vCardBeginCount != $vCardEndCount) || !$vCardBeginCount)
115
-			{
116
-				$this -> Mode = vCard::MODE_ERROR;
117
-				throw new Exception('vCard: invalid vCard');
118
-			}
119
-
120
-			$this -> Mode = $vCardBeginCount == 1 ? vCard::MODE_SINGLE : vCard::MODE_MULTIPLE;
121
-
122
-			// Removing/changing inappropriate newlines, i.e., all CRs or multiple newlines are changed to a single newline
123
-			$this -> RawData = str_replace("\r", "\n", $this -> RawData);
124
-			$this -> RawData = preg_replace('{(\n+)}', "\n", $this -> RawData);
125
-
126
-			// In multiple card mode the raw text is split at card beginning markers and each
127
-			//	fragment is parsed in a separate vCard object.
128
-			if ($this -> Mode == self::MODE_MULTIPLE)
129
-			{
130
-				$this -> RawData = explode('BEGIN:VCARD', $this -> RawData);
131
-				$this -> RawData = array_filter($this -> RawData);
132
-
133
-				foreach ($this -> RawData as $SinglevCardRawData)
134
-				{
135
-					// Prepending "BEGIN:VCARD" to the raw string because we exploded on that one.
136
-					// If there won't be the BEGIN marker in the new object, it will fail.
137
-					$SinglevCardRawData = 'BEGIN:VCARD'."\n".$SinglevCardRawData;
138
-
139
-					$ClassName = get_class($this);
140
-					$this -> Data[] = new $ClassName(false, $SinglevCardRawData);
141
-				}
142
-			}
143
-			else
144
-			{
145
-				// Protect the BASE64 final = sign (detected by the line beginning with whitespace), otherwise the next replace will get rid of it
146
-				$this -> RawData = preg_replace('{(\n\s.+)=(\n)}', '$1-base64=-$2', $this -> RawData);
147
-
148
-				// Joining multiple lines that are split with a hard wrap and indicated by an equals sign at the end of line
149
-				// (quoted-printable-encoded values in v2.1 vCards)
150
-				$this -> RawData = str_replace("=\n", '', $this -> RawData);
151
-
152
-				// Joining multiple lines that are split with a soft wrap (space or tab on the beginning of the next line
153
-				$this -> RawData = str_replace(array("\n ", "\n\t"), '-wrap-', $this -> RawData);
154
-
155
-				// Restoring the BASE64 final equals sign (see a few lines above)
156
-				$this -> RawData = str_replace("-base64=-\n", "=\n", $this -> RawData);
157
-
158
-				$Lines = explode("\n", $this -> RawData);
159
-
160
-				foreach ($Lines as $Line)
161
-				{
162
-					// Lines without colons are skipped because, most likely, they contain no data.
163
-					if (strpos($Line, ':') === false)
164
-					{
165
-						continue;
166
-					}
167
-
168
-					// Each line is split into two parts. The key contains the element name and additional parameters, if present,
169
-					//	value is just the value
170
-					list($Key, $Value) = explode(':', $Line, 2);
171
-
172
-					// Key is transformed to lowercase because, even though the element and parameter names are written in uppercase,
173
-					//	it is quite possible that they will be in lower- or mixed case.
174
-					// The key is trimmed to allow for non-significant WSP characters as allowed by v2.1
175
-					$Key = strtolower(trim(self::Unescape($Key)));
176
-
177
-					// These two lines can be skipped as they aren't necessary at all.
178
-					if ($Key == 'begin' || $Key == 'end')
179
-					{
180
-						continue;
181
-					}
182
-
183
-					if ((strpos($Key, 'agent') === 0) && (stripos($Value, 'begin:vcard') !== false))
184
-					{
185
-						$ClassName = get_class($this);
186
-						$Value = new $ClassName(false, str_replace('-wrap-', "\n", $Value));
187
-						if (!isset($this -> Data[$Key]))
188
-						{
189
-							$this -> Data[$Key] = array();
190
-						}
191
-						$this -> Data[$Key][] = $Value;
192
-						continue;
193
-					}
194
-					else
195
-					{
196
-						$Value = str_replace('-wrap-', '', $Value);
197
-					}
198
-
199
-					$Value = trim(self::Unescape($Value));
200
-					$Type = array();
201
-
202
-					// Here additional parameters are parsed
203
-					$KeyParts = explode(';', $Key);
204
-					$Key = $KeyParts[0];
205
-					$Encoding = false;
206
-
207
-					if (strpos($Key, 'item') === 0)
208
-					{
209
-						$TmpKey = explode('.', $Key, 2);
210
-						$Key = $TmpKey[1];
211
-						$ItemIndex = (int)str_ireplace('item', '', $TmpKey[0]);
212
-					}
213
-
214
-					if (count($KeyParts) > 1)
215
-					{
216
-						$Parameters = self::ParseParameters($Key, array_slice($KeyParts, 1));
217
-
218
-						foreach ($Parameters as $ParamKey => $ParamValue)
219
-						{
220
-							switch ($ParamKey)
221
-							{
222
-								case 'encoding':
223
-									$Encoding = $ParamValue;
224
-									if (in_array($ParamValue, array('b', 'base64')))
225
-									{
226
-										//$Value = base64_decode($Value);
227
-									}
228
-									elseif ($ParamValue == 'quoted-printable') // v2.1
229
-									{
230
-										$Value = quoted_printable_decode($Value);
231
-									}
232
-									break;
233
-								case 'charset': // v2.1
234
-									if ($ParamValue != 'utf-8' && $ParamValue != 'utf8')
235
-									{
236
-										$Value = mb_convert_encoding($Value, 'UTF-8', $ParamValue);
237
-									}
238
-									break;
239
-								case 'type':
240
-									$Type = $ParamValue;
241
-									break;
242
-							}
243
-						}
244
-					}
245
-
246
-					// Checking files for colon-separated additional parameters (Apple's Address Book does this), for example, "X-ABCROP-RECTANGLE" for photos
247
-					if (in_array($Key, self::$Spec_FileElements) && isset($Parameters['encoding']) && in_array($Parameters['encoding'], array('b', 'base64')))
248
-					{
249
-						// If colon is present in the value, it must contain Address Book parameters
250
-						//	(colon is an invalid character for base64 so it shouldn't appear in valid files)
251
-						if (strpos($Value, ':') !== false)
252
-						{
253
-							$Value = explode(':', $Value);
254
-							$Value = array_pop($Value);
255
-						}
256
-					}
257
-
258
-					// Values are parsed according to their type
259
-					if (isset(self::$Spec_StructuredElements[$Key]))
260
-					{
261
-						$Value = self::ParseStructuredValue($Value, $Key);
262
-						if ($Type)
263
-						{
264
-							$Value['type'] = $Type;
265
-						}
266
-					}
267
-					else
268
-					{
269
-						if (in_array($Key, self::$Spec_MultipleValueElements))
270
-						{
271
-							$Value = self::ParseMultipleTextValue($Value, $Key);
272
-						}
273
-
274
-						if ($Type)
275
-						{
276
-							$Value = array(
277
-								'value' => $Value,
278
-								'type' => $Type
279
-							);
280
-						}
281
-					}
282
-
283
-					if (is_array($Value) && $Encoding)
284
-					{
285
-						$Value['encoding'] = $Encoding;
286
-					}
287
-
288
-					if (!isset($this -> Data[$Key]))
289
-					{
290
-						$this -> Data[$Key] = array();
291
-					}
292
-
293
-					$this -> Data[$Key][] = $Value;
294
-				}
295
-			}
296
-		}
297
-
298
-		/**
299
-		 * Magic method to get the various vCard values as object members, e.g.
300
-		 *	a call to $vCard -> N gets the "N" value
301
-		 *
302
-		 * @param string Key
303
-		 *
304
-		 * @return mixed Value
305
-		 */
306
-		public function __get($Key)
307
-		{
308
-			$Key = strtolower($Key);
309
-			if (isset($this -> Data[$Key]))
310
-			{
311
-				if ($Key == 'agent')
312
-				{
313
-					return $this -> Data[$Key];
314
-				}
315
-				elseif (in_array($Key, self::$Spec_FileElements))
316
-				{
317
-					$Value = $this -> Data[$Key];
318
-					foreach ($Value as $K => $V)
319
-					{
320
-						if (stripos($V['value'], 'uri:') === 0)
321
-						{
322
-							$Value[$K]['value'] = substr($V, 4);
323
-							$Value[$K]['encoding'] = 'uri';
324
-						}
325
-					}
326
-					return $Value;
327
-				}
328
-
329
-				if ($this -> Options['Collapse'] && is_array($this -> Data[$Key]) && (count($this -> Data[$Key]) == 1))
330
-				{
331
-					return $this -> Data[$Key][0];
332
-				}
333
-				return $this -> Data[$Key];
334
-			}
335
-			elseif ($Key == 'Mode')
336
-			{
337
-				return $this -> Mode;
338
-			}
339
-			return array();
340
-		}
341
-
342
-		/**
343
-		 * Saves an embedded file
344
-		 *
345
-		 * @param string Key
346
-		 * @param int Index of the file, defaults to 0
347
-		 * @param string Target path where the file should be saved, including the filename
348
-		 *
349
-		 * @return bool Operation status
350
-		 */
351
-		public function SaveFile($Key, $Index = 0, $TargetPath = '')
352
-		{
353
-			if (!isset($this -> Data[$Key]))
354
-			{
355
-				return false;
356
-			}
357
-			if (!isset($this -> Data[$Key][$Index]))
358
-			{
359
-				return false;
360
-			}
361
-
362
-			// Returing false if it is an image URL
363
-			if (stripos($this -> Data[$Key][$Index]['value'], 'uri:') === 0)
364
-			{
365
-				return false;
366
-			}
367
-
368
-			if (is_writable($TargetPath) || (!file_exists($TargetPath) && is_writable(dirname($TargetPath))))
369
-			{
370
-				$RawContent = $this -> Data[$Key][$Index]['value'];
371
-				if (isset($this -> Data[$Key][$Index]['encoding']) && $this -> Data[$Key][$Index]['encoding'] == 'b')
372
-				{
373
-					$RawContent = base64_decode($RawContent);
374
-				}
375
-				$Status = file_put_contents($TargetPath, $RawContent);
376
-				return (bool)$Status;
377
-			}
378
-			else
379
-			{
380
-				throw new Exception('vCard: Cannot save file ('.$Key.'), target path not writable ('.$TargetPath.')');
381
-			}
382
-			return false;
383
-		}
384
-
385
-		/**
386
-		 * Magic method for adding data to the vCard
387
-		 *
388
-		 * @param string Key
389
-		 * @param string Method call arguments. First element is value.
390
-		 *
391
-		 * @return vCard Current object for method chaining
392
-		 */
393
-		public function __call($Key, $Arguments)
394
-		{
395
-			$Key = strtolower($Key);
396
-
397
-			if (!isset($this -> Data[$Key]))
398
-			{
399
-				$this -> Data[$Key] = array();
400
-			}
401
-
402
-			$Value = isset($Arguments[0]) ? $Arguments[0] : false;
403
-
404
-			if (count($Arguments) > 1)
405
-			{
406
-				$Types = array_map('strtolower', array_values(array_slice($Arguments, 1)));
407
-
408
-				if (isset(self::$Spec_StructuredElements[$Key]) &&
409
-					in_array(strtolower($Arguments[1]), self::$Spec_StructuredElements[$Key])
410
-				)
411
-				{
412
-					$LastElementIndex = 0;
413
-
414
-					if (count($this -> Data[$Key]))
415
-					{
416
-						$LastElementIndex = count($this -> Data[$Key]) - 1;
417
-					}
418
-
419
-					if (isset($this -> Data[$Key][$LastElementIndex]))
420
-					{
421
-						if (empty($this -> Data[$Key][$LastElementIndex][$Types[0]]))
422
-						{
423
-							$this -> Data[$Key][$LastElementIndex][$Types[0]] = $Value;
424
-						}
425
-						else
426
-						{
427
-							$LastElementIndex++;
428
-						}
429
-					}
430
-
431
-					if (!isset($this -> Data[$Key][$LastElementIndex]))
432
-					{
433
-						$this -> Data[$Key][$LastElementIndex] = array(
434
-							$Types[0] => $Value
435
-						);
436
-					}
437
-				}
438
-				elseif (isset(self::$Spec_ElementTypes[$Key]))
439
-				{
440
-					$this -> Data[$Key][] = array(
441
-						'value' => $Value,
442
-						'type' => $Types
443
-					);
444
-				}
445
-			}
446
-			elseif ($Value)
447
-			{
448
-				$this -> Data[$Key][] = $Value;
449
-			}
450
-
451
-			return $this;
452
-		}
453
-
454
-		/**
455
-		 * Magic method for getting vCard content out
456
-		 *
457
-		 * @return string Raw vCard content
458
-		 */
459
-		public function __toString()
460
-		{
461
-			$Text = 'BEGIN:VCARD'.self::endl;
462
-			$Text .= 'VERSION:3.0'.self::endl;
463
-
464
-			foreach ($this -> Data as $Key => $Values)
465
-			{
466
-				$KeyUC = strtoupper($Key);
467
-				$Key = strtolower($Key);
468
-
469
-				if (in_array($KeyUC, array('PHOTO', 'VERSION')))
470
-				{
471
-					continue;
472
-				}
473
-
474
-				foreach ($Values as $Index => $Value)
475
-				{
476
-					$Text .= $KeyUC;
477
-					if (is_array($Value) && isset($Value['type']))
478
-					{
479
-						$Text .= ';TYPE='.self::PrepareTypeStrForOutput($Value['type']);
480
-					}
481
-					$Text .= ':';
482
-
483
-					if (isset(self::$Spec_StructuredElements[$Key]))
484
-					{
485
-						$PartArray = array();
486
-						foreach (self::$Spec_StructuredElements[$Key] as $Part)
487
-						{
488
-							$PartArray[] = isset($Value[$Part]) ? $Value[$Part] : '';
489
-						}
490
-						$Text .= implode(';', $PartArray);
491
-					}
492
-					elseif (is_array($Value) && isset(self::$Spec_ElementTypes[$Key]))
493
-					{
494
-						$Text .= $Value['value'];
495
-					}
496
-					else
497
-					{
498
-						$Text .= $Value;
499
-					}
500
-
501
-					$Text .= self::endl;
502
-				}
503
-			}
504
-
505
-			$Text .= 'END:VCARD'.self::endl;
506
-			return $Text;
507
-		}
508
-
509
-		// !Helper methods
510
-
511
-		private static function PrepareTypeStrForOutput($Type)
512
-		{
513
-			return implode(',', array_map('strtoupper', $Type));
514
-		}
515
-
516
-	 	/**
517
-		 * Removes the escaping slashes from the text.
518
-		 *
519
-		 * @access private
520
-		 *
521
-		 * @param string Text to prepare.
522
-		 *
523
-		 * @return string Resulting text.
524
-		 */
525
-		private static function Unescape($Text)
526
-		{
527
-			return str_replace(array('\:', '\;', '\,', "\n"), array(':', ';', ',', ''), $Text);
528
-		}
529
-
530
-		/**
531
-		 * Separates the various parts of a structured value according to the spec.
532
-		 *
533
-		 * @access private
534
-		 *
535
-		 * @param string Raw text string
536
-		 * @param string Key (e.g., N, ADR, ORG, etc.)
537
-		 *
538
-		 * @return array Parts in an associative array.
539
-		 */
540
-		private static function ParseStructuredValue($Text, $Key)
541
-		{
542
-			$Text = array_map('trim', explode(';', $Text));
543
-
544
-			$Result = array();
545
-			$Ctr = 0;
546
-
547
-			foreach (self::$Spec_StructuredElements[$Key] as $Index => $StructurePart)
548
-			{
549
-				$Result[$StructurePart] = isset($Text[$Index]) ? $Text[$Index] : null;
550
-			}
551
-			return $Result;
552
-		}
553
-
554
-		/**
555
-		 * @access private
556
-		 */
557
-		private static function ParseMultipleTextValue($Text)
558
-		{
559
-			return explode(',', $Text);
560
-		}
561
-
562
-		/**
563
-		 * @access private
564
-		 */
565
-		private static function ParseParameters($Key, array $RawParams = null)
566
-		{
567
-			if (!$RawParams)
568
-			{
569
-				return array();
570
-			}
571
-
572
-			// Parameters are split into (key, value) pairs
573
-			$Parameters = array();
574
-			foreach ($RawParams as $Item)
575
-			{
576
-				$Parameters[] = explode('=', strtolower($Item));
577
-			}
578
-
579
-			$Type = array();
580
-			$Result = array();
581
-
582
-			// And each parameter is checked whether anything can/should be done because of it
583
-			foreach ($Parameters as $Index => $Parameter)
584
-			{
585
-				// Skipping empty elements
586
-				if (!$Parameter)
587
-				{
588
-					continue;
589
-				}
590
-
591
-				// Handling type parameters without the explicit TYPE parameter name (2.1 valid)
592
-				if (count($Parameter) == 1)
593
-				{
594
-					// Checks if the type value is allowed for the specific element
595
-					// The second part of the "if" statement means that email elements can have non-standard types (see the spec)
596
-					if (
597
-						(isset(self::$Spec_ElementTypes[$Key]) && in_array($Parameter[0], self::$Spec_ElementTypes[$Key])) ||
598
-						($Key == 'email' && is_scalar($Parameter[0]))
599
-					)
600
-					{
601
-						$Type[] = $Parameter[0];
602
-					}
603
-				}
604
-				elseif (count($Parameter) > 2)
605
-				{
606
-					if(count(explode(',', $RawParams[$Index], -1)) > 0)
607
-					{
608
-						$TempTypeParams = self::ParseParameters($Key, explode(',', $RawParams[$Index]));
609
-						if ($TempTypeParams['type'])
610
-						{
611
-							$Type = array_merge($Type, $TempTypeParams['type']);
612
-						}
613
-					}
614
-				}
615
-				else
616
-				{
617
-					switch ($Parameter[0])
618
-					{
619
-						case 'encoding':
620
-							if (in_array($Parameter[1], array('quoted-printable', 'b', 'base64')))
621
-							{
622
-								$Result['encoding'] = $Parameter[1] == 'base64' ? 'b' : $Parameter[1];
623
-							}
624
-							break;
625
-						case 'charset':
626
-							$Result['charset'] = $Parameter[1];
627
-							break;
628
-						case 'type':
629
-							$Type = array_merge($Type, explode(',', $Parameter[1]));
630
-							break;
631
-						case 'value':
632
-							if (strtolower($Parameter[1]) == 'url')
633
-							{
634
-								$Result['encoding'] = 'uri';
635
-							}
636
-							break;
637
-					}
638
-				}
639
-			}
640
-
641
-			$Result['type'] = $Type;
642
-
643
-			return $Result;
644
-		}
645
-
646
-		// !Interface methods
647
-
648
-		// Countable interface
649
-		public function count()
650
-		{
651
-			switch ($this -> Mode)
652
-			{
653
-				case self::MODE_ERROR:
654
-					return 0;
655
-					break;
656
-				case self::MODE_SINGLE:
657
-					return 1;
658
-					break;
659
-				case self::MODE_MULTIPLE:
660
-					return count($this -> Data);
661
-					break;
662
-			}
663
-			return 0;
664
-		}
665
-
666
-		// Iterator interface
667
-		public function rewind()
668
-		{
669
-			reset($this -> Data);
670
-		}
671
-
672
-		public function current()
673
-		{
674
-			return current($this -> Data);
675
-		}
676
-
677
-		public function next()
678
-		{
679
-			return next($this -> Data);
680
-		}
681
-
682
-		public function valid()
683
-		{
684
-			return ($this -> current() !== false);
685
-		}
686
-
687
-		public function key()
688
-		{
689
-			return key($this -> Data);
690
-		}
691
-	}
10
+  class vCard implements Countable, Iterator
11
+  {
12
+    const MODE_ERROR = 'error';
13
+    const MODE_SINGLE = 'single';
14
+    const MODE_MULTIPLE = 'multiple';
15
+
16
+    const endl = "\n";
17
+
18
+    /**
19
+     * @var string Current object mode - error, single or multiple (for a single vCard within a file and multiple combined vCards)
20
+     */
21
+    private $Mode;  //single, multiple, error
22
+
23
+    private $Path = '';
24
+    private $RawData = '';
25
+
26
+    /**
27
+     * @var array Internal options container. Options:
28
+     *	bool Collapse: If true, elements that can have multiple values but have only a single value are returned as that value instead of an array
29
+     *		If false, an array is returned even if it has only one value.
30
+     */
31
+    private $Options = array(
32
+      'Collapse' => false
33
+    );
34
+
35
+    /**
36
+     * @var array Internal data container. Contains vCard objects for multiple vCards and just the data for single vCards.
37
+     */
38
+    private $Data = array();
39
+
40
+    /**
41
+     * @static Parts of structured elements according to the spec.
42
+     */
43
+    private static $Spec_StructuredElements = array(
44
+      'n' => array('lastname', 'firstname', 'additionalnames', 'prefixes', 'suffixes'),
45
+      'adr' => array('pobox', 'extendedaddress', 'streetaddress', 'locality', 'region', 'postalcode', 'country'),
46
+      'geo' => array('latitude', 'longitude'),
47
+      'org' => array('name', 'unit1', 'unit2')
48
+    );
49
+    private static $Spec_MultipleValueElements = array('nickname', 'categories');
50
+
51
+    private static $Spec_ElementTypes = array(
52
+      'email' => array('internet', 'x400', 'pref', 'home', 'work'),
53
+      'adr' => array('dom', 'intl', 'postal', 'parcel', 'home', 'work', 'pref'),
54
+      'label' => array('dom', 'intl', 'postal', 'parcel', 'home', 'work', 'pref'),
55
+      'tel' => array('home', 'msg', 'work', 'pref', 'voice', 'fax', 'cell', 'video', 'pager', 'bbs', 'modem', 'car', 'isdn', 'pcs'),
56
+      'impp' => array('personal', 'business', 'home', 'work', 'mobile', 'pref')
57
+    );
58
+
59
+    private static $Spec_FileElements = array('photo', 'logo', 'sound');
60
+
61
+    /**
62
+     * vCard constructor
63
+     *
64
+     * @param string Path to file, optional.
65
+     * @param string Raw data, optional.
66
+     * @param array Additional options, optional. Currently supported options:
67
+     *	bool Collapse: If true, elements that can have multiple values but have only a single value are returned as that value instead of an array
68
+     *		If false, an array is returned even if it has only one value.
69
+     *
70
+     * One of these parameters must be provided, otherwise an exception is thrown.
71
+     */
72
+    public function __construct($Path = false, $RawData = false, array $Options = null)
73
+    {
74
+      // Checking preconditions for the parser.
75
+      // If path is given, the file should be accessible.
76
+      // If raw data is given, it is taken as it is.
77
+      // In both cases the real content is put in $this -> RawData
78
+      if ($Path)
79
+      {
80
+        if (!is_readable($Path))
81
+        {
82
+          throw new Exception('vCard: Path not accessible ('.$Path.')');
83
+        }
84
+
85
+        $this -> Path = $Path;
86
+        $this -> RawData = file_get_contents($this -> Path);
87
+      }
88
+      elseif ($RawData)
89
+      {
90
+        $this -> RawData = $RawData;
91
+      }
92
+      else
93
+      {
94
+        //throw new Exception('vCard: No content provided');
95
+        // Not necessary anymore as possibility to create vCards is added
96
+      }
97
+
98
+      if (!$this -> Path && !$this -> RawData)
99
+      {
100
+        return true;
101
+      }
102
+
103
+      if ($Options)
104
+      {
105
+        $this -> Options = array_merge($this -> Options, $Options);
106
+      }
107
+
108
+      // Counting the begin/end separators. If there aren't any or the count doesn't match, there is a problem with the file.
109
+      // If there is only one, this is a single vCard, if more, multiple vCards are combined.
110
+      $Matches = array();
111
+      $vCardBeginCount = preg_match_all('{^BEGIN\:VCARD}miS', $this -> RawData, $Matches);
112
+      $vCardEndCount = preg_match_all('{^END\:VCARD}miS', $this -> RawData, $Matches);
113
+
114
+      if (($vCardBeginCount != $vCardEndCount) || !$vCardBeginCount)
115
+      {
116
+        $this -> Mode = vCard::MODE_ERROR;
117
+        throw new Exception('vCard: invalid vCard');
118
+      }
119
+
120
+      $this -> Mode = $vCardBeginCount == 1 ? vCard::MODE_SINGLE : vCard::MODE_MULTIPLE;
121
+
122
+      // Removing/changing inappropriate newlines, i.e., all CRs or multiple newlines are changed to a single newline
123
+      $this -> RawData = str_replace("\r", "\n", $this -> RawData);
124
+      $this -> RawData = preg_replace('{(\n+)}', "\n", $this -> RawData);
125
+
126
+      // In multiple card mode the raw text is split at card beginning markers and each
127
+      //	fragment is parsed in a separate vCard object.
128
+      if ($this -> Mode == self::MODE_MULTIPLE)
129
+      {
130
+        $this -> RawData = explode('BEGIN:VCARD', $this -> RawData);
131
+        $this -> RawData = array_filter($this -> RawData);
132
+
133
+        foreach ($this -> RawData as $SinglevCardRawData)
134
+        {
135
+          // Prepending "BEGIN:VCARD" to the raw string because we exploded on that one.
136
+          // If there won't be the BEGIN marker in the new object, it will fail.
137
+          $SinglevCardRawData = 'BEGIN:VCARD'."\n".$SinglevCardRawData;
138
+
139
+          $ClassName = get_class($this);
140
+          $this -> Data[] = new $ClassName(false, $SinglevCardRawData);
141
+        }
142
+      }
143
+      else
144
+      {
145
+        // Protect the BASE64 final = sign (detected by the line beginning with whitespace), otherwise the next replace will get rid of it
146
+        $this -> RawData = preg_replace('{(\n\s.+)=(\n)}', '$1-base64=-$2', $this -> RawData);
147
+
148
+        // Joining multiple lines that are split with a hard wrap and indicated by an equals sign at the end of line
149
+        // (quoted-printable-encoded values in v2.1 vCards)
150
+        $this -> RawData = str_replace("=\n", '', $this -> RawData);
151
+
152
+        // Joining multiple lines that are split with a soft wrap (space or tab on the beginning of the next line
153
+        $this -> RawData = str_replace(array("\n ", "\n\t"), '-wrap-', $this -> RawData);
154
+
155
+        // Restoring the BASE64 final equals sign (see a few lines above)
156
+        $this -> RawData = str_replace("-base64=-\n", "=\n", $this -> RawData);
157
+
158
+        $Lines = explode("\n", $this -> RawData);
159
+
160
+        foreach ($Lines as $Line)
161
+        {
162
+          // Lines without colons are skipped because, most likely, they contain no data.
163
+          if (strpos($Line, ':') === false)
164
+          {
165
+            continue;
166
+          }
167
+
168
+          // Each line is split into two parts. The key contains the element name and additional parameters, if present,
169
+          //	value is just the value
170
+          list($Key, $Value) = explode(':', $Line, 2);
171
+
172
+          // Key is transformed to lowercase because, even though the element and parameter names are written in uppercase,
173
+          //	it is quite possible that they will be in lower- or mixed case.
174
+          // The key is trimmed to allow for non-significant WSP characters as allowed by v2.1
175
+          $Key = strtolower(trim(self::Unescape($Key)));
176
+
177
+          // These two lines can be skipped as they aren't necessary at all.
178
+          if ($Key == 'begin' || $Key == 'end')
179
+          {
180
+            continue;
181
+          }
182
+
183
+          if ((strpos($Key, 'agent') === 0) && (stripos($Value, 'begin:vcard') !== false))
184
+          {
185
+            $ClassName = get_class($this);
186
+            $Value = new $ClassName(false, str_replace('-wrap-', "\n", $Value));
187
+            if (!isset($this -> Data[$Key]))
188
+            {
189
+              $this -> Data[$Key] = array();
190
+            }
191
+            $this -> Data[$Key][] = $Value;
192
+            continue;
193
+          }
194
+          else
195
+          {
196
+            $Value = str_replace('-wrap-', '', $Value);
197
+          }
198
+
199
+          $Value = trim(self::Unescape($Value));
200
+          $Type = array();
201
+
202
+          // Here additional parameters are parsed
203
+          $KeyParts = explode(';', $Key);
204
+          $Key = $KeyParts[0];
205
+          $Encoding = false;
206
+
207
+          if (strpos($Key, 'item') === 0)
208
+          {
209
+            $TmpKey = explode('.', $Key, 2);
210
+            $Key = $TmpKey[1];
211
+            $ItemIndex = (int)str_ireplace('item', '', $TmpKey[0]);
212
+          }
213
+
214
+          if (count($KeyParts) > 1)
215
+          {
216
+            $Parameters = self::ParseParameters($Key, array_slice($KeyParts, 1));
217
+
218
+            foreach ($Parameters as $ParamKey => $ParamValue)
219
+            {
220
+              switch ($ParamKey)
221
+              {
222
+                case 'encoding':
223
+                  $Encoding = $ParamValue;
224
+                  if (in_array($ParamValue, array('b', 'base64')))
225
+                  {
226
+                    //$Value = base64_decode($Value);
227
+                  }
228
+                  elseif ($ParamValue == 'quoted-printable') // v2.1
229
+                  {
230
+                    $Value = quoted_printable_decode($Value);
231
+                  }
232
+                  break;
233
+                case 'charset': // v2.1
234
+                  if ($ParamValue != 'utf-8' && $ParamValue != 'utf8')
235
+                  {
236
+                    $Value = mb_convert_encoding($Value, 'UTF-8', $ParamValue);
237
+                  }
238
+                  break;
239
+                case 'type':
240
+                  $Type = $ParamValue;
241
+                  break;
242
+              }
243
+            }
244
+          }
245
+
246
+          // Checking files for colon-separated additional parameters (Apple's Address Book does this), for example, "X-ABCROP-RECTANGLE" for photos
247
+          if (in_array($Key, self::$Spec_FileElements) && isset($Parameters['encoding']) && in_array($Parameters['encoding'], array('b', 'base64')))
248
+          {
249
+            // If colon is present in the value, it must contain Address Book parameters
250
+            //	(colon is an invalid character for base64 so it shouldn't appear in valid files)
251
+            if (strpos($Value, ':') !== false)
252
+            {
253
+              $Value = explode(':', $Value);
254
+              $Value = array_pop($Value);
255
+            }
256
+          }
257
+
258
+          // Values are parsed according to their type
259
+          if (isset(self::$Spec_StructuredElements[$Key]))
260
+          {
261
+            $Value = self::ParseStructuredValue($Value, $Key);
262
+            if ($Type)
263
+            {
264
+              $Value['type'] = $Type;
265
+            }
266
+          }
267
+          else
268
+          {
269
+            if (in_array($Key, self::$Spec_MultipleValueElements))
270
+            {
271
+              $Value = self::ParseMultipleTextValue($Value, $Key);
272
+            }
273
+
274
+            if ($Type)
275
+            {
276
+              $Value = array(
277
+                'value' => $Value,
278
+                'type' => $Type
279
+              );
280
+            }
281
+          }
282
+
283
+          if (is_array($Value) && $Encoding)
284
+          {
285
+            $Value['encoding'] = $Encoding;
286
+          }
287
+
288
+          if (!isset($this -> Data[$Key]))
289
+          {
290
+            $this -> Data[$Key] = array();
291
+          }
292
+
293
+          $this -> Data[$Key][] = $Value;
294
+        }
295
+      }
296
+    }
297
+
298
+    /**
299
+     * Magic method to get the various vCard values as object members, e.g.
300
+     *	a call to $vCard -> N gets the "N" value
301
+     *
302
+     * @param string Key
303
+     *
304
+     * @return mixed Value
305
+     */
306
+    public function __get($Key)
307
+    {
308
+      $Key = strtolower($Key);
309
+      if (isset($this -> Data[$Key]))
310
+      {
311
+        if ($Key == 'agent')
312
+        {
313
+          return $this -> Data[$Key];
314
+        }
315
+        elseif (in_array($Key, self::$Spec_FileElements))
316
+        {
317
+          $Value = $this -> Data[$Key];
318
+          foreach ($Value as $K => $V)
319
+          {
320
+            if (stripos($V['value'], 'uri:') === 0)
321
+            {
322
+              $Value[$K]['value'] = substr($V, 4);
323
+              $Value[$K]['encoding'] = 'uri';
324
+            }
325
+          }
326
+          return $Value;
327
+        }
328
+
329
+        if ($this -> Options['Collapse'] && is_array($this -> Data[$Key]) && (count($this -> Data[$Key]) == 1))
330
+        {
331
+          return $this -> Data[$Key][0];
332
+        }
333
+        return $this -> Data[$Key];
334
+      }
335
+      elseif ($Key == 'Mode')
336
+      {
337
+        return $this -> Mode;
338
+      }
339
+      return array();
340
+    }
341
+
342
+    /**
343
+     * Saves an embedded file
344
+     *
345
+     * @param string Key
346
+     * @param int Index of the file, defaults to 0
347
+     * @param string Target path where the file should be saved, including the filename
348
+     *
349
+     * @return bool Operation status
350
+     */
351
+    public function SaveFile($Key, $Index = 0, $TargetPath = '')
352
+    {
353
+      if (!isset($this -> Data[$Key]))
354
+      {
355
+        return false;
356
+      }
357
+      if (!isset($this -> Data[$Key][$Index]))
358
+      {
359
+        return false;
360
+      }
361
+
362
+      // Returing false if it is an image URL
363
+      if (stripos($this -> Data[$Key][$Index]['value'], 'uri:') === 0)
364
+      {
365
+        return false;
366
+      }
367
+
368
+      if (is_writable($TargetPath) || (!file_exists($TargetPath) && is_writable(dirname($TargetPath))))
369
+      {
370
+        $RawContent = $this -> Data[$Key][$Index]['value'];
371
+        if (isset($this -> Data[$Key][$Index]['encoding']) && $this -> Data[$Key][$Index]['encoding'] == 'b')
372
+        {
373
+          $RawContent = base64_decode($RawContent);
374
+        }
375
+        $Status = file_put_contents($TargetPath, $RawContent);
376
+        return (bool)$Status;
377
+      }
378
+      else
379
+      {
380
+        throw new Exception('vCard: Cannot save file ('.$Key.'), target path not writable ('.$TargetPath.')');
381
+      }
382
+      return false;
383
+    }
384
+
385
+    /**
386
+     * Magic method for adding data to the vCard
387
+     *
388
+     * @param string Key
389
+     * @param string Method call arguments. First element is value.
390
+     *
391
+     * @return vCard Current object for method chaining
392
+     */
393
+    public function __call($Key, $Arguments)
394
+    {
395
+      $Key = strtolower($Key);
396
+
397
+      if (!isset($this -> Data[$Key]))
398
+      {
399
+        $this -> Data[$Key] = array();
400
+      }
401
+
402
+      $Value = isset($Arguments[0]) ? $Arguments[0] : false;
403
+
404
+      if (count($Arguments) > 1)
405
+      {
406
+        $Types = array_map('strtolower', array_values(array_slice($Arguments, 1)));
407
+
408
+        if (isset(self::$Spec_StructuredElements[$Key]) &&
409
+          in_array(strtolower($Arguments[1]), self::$Spec_StructuredElements[$Key])
410
+        )
411
+        {
412
+          $LastElementIndex = 0;
413
+
414
+          if (count($this -> Data[$Key]))
415
+          {
416
+            $LastElementIndex = count($this -> Data[$Key]) - 1;
417
+          }
418
+
419
+          if (isset($this -> Data[$Key][$LastElementIndex]))
420
+          {
421
+            if (empty($this -> Data[$Key][$LastElementIndex][$Types[0]]))
422
+            {
423
+              $this -> Data[$Key][$LastElementIndex][$Types[0]] = $Value;
424
+            }
425
+            else
426
+            {
427
+              $LastElementIndex++;
428
+            }
429
+          }
430
+
431
+          if (!isset($this -> Data[$Key][$LastElementIndex]))
432
+          {
433
+            $this -> Data[$Key][$LastElementIndex] = array(
434
+              $Types[0] => $Value
435
+            );
436
+          }
437
+        }
438
+        elseif (isset(self::$Spec_ElementTypes[$Key]))
439
+        {
440
+          $this -> Data[$Key][] = array(
441
+            'value' => $Value,
442
+            'type' => $Types
443
+          );
444
+        }
445
+      }
446
+      elseif ($Value)
447
+      {
448
+        $this -> Data[$Key][] = $Value;
449
+      }
450
+
451
+      return $this;
452
+    }
453
+
454
+    /**
455
+     * Magic method for getting vCard content out
456
+     *
457
+     * @return string Raw vCard content
458
+     */
459
+    public function __toString()
460
+    {
461
+      $Text = 'BEGIN:VCARD'.self::endl;
462
+      $Text .= 'VERSION:3.0'.self::endl;
463
+
464
+      foreach ($this -> Data as $Key => $Values)
465
+      {
466
+        $KeyUC = strtoupper($Key);
467
+        $Key = strtolower($Key);
468
+
469
+        if (in_array($KeyUC, array('PHOTO', 'VERSION')))
470
+        {
471
+          continue;
472
+        }
473
+
474
+        foreach ($Values as $Index => $Value)
475
+        {
476
+          $Text .= $KeyUC;
477
+          if (is_array($Value) && isset($Value['type']))
478
+          {
479
+            $Text .= ';TYPE='.self::PrepareTypeStrForOutput($Value['type']);
480
+          }
481
+          $Text .= ':';
482
+
483
+          if (isset(self::$Spec_StructuredElements[$Key]))
484
+          {
485
+            $PartArray = array();
486
+            foreach (self::$Spec_StructuredElements[$Key] as $Part)
487
+            {
488
+              $PartArray[] = isset($Value[$Part]) ? $Value[$Part] : '';
489
+            }
490
+            $Text .= implode(';', $PartArray);
491
+          }
492
+          elseif (is_array($Value) && isset(self::$Spec_ElementTypes[$Key]))
493
+          {
494
+            $Text .= $Value['value'];
495
+          }
496
+          else
497
+          {
498
+            $Text .= $Value;
499
+          }
500
+
501
+          $Text .= self::endl;
502
+        }
503
+      }
504
+
505
+      $Text .= 'END:VCARD'.self::endl;
506
+      return $Text;
507
+    }
508
+
509
+    // !Helper methods
510
+
511
+    private static function PrepareTypeStrForOutput($Type)
512
+    {
513
+      return implode(',', array_map('strtoupper', $Type));
514
+    }
515
+
516
+      /**
517
+       * Removes the escaping slashes from the text.
518
+       *
519
+       * @access private
520
+       *
521
+       * @param string Text to prepare.
522
+       *
523
+       * @return string Resulting text.
524
+       */
525
+    private static function Unescape($Text)
526
+    {
527
+      return str_replace(array('\:', '\;', '\,', "\n"), array(':', ';', ',', ''), $Text);
528
+    }
529
+
530
+    /**
531
+     * Separates the various parts of a structured value according to the spec.
532
+     *
533
+     * @access private
534
+     *
535
+     * @param string Raw text string
536
+     * @param string Key (e.g., N, ADR, ORG, etc.)
537
+     *
538
+     * @return array Parts in an associative array.
539
+     */
540
+    private static function ParseStructuredValue($Text, $Key)
541
+    {
542
+      $Text = array_map('trim', explode(';', $Text));
543
+
544
+      $Result = array();
545
+      $Ctr = 0;
546
+
547
+      foreach (self::$Spec_StructuredElements[$Key] as $Index => $StructurePart)
548
+      {
549
+        $Result[$StructurePart] = isset($Text[$Index]) ? $Text[$Index] : null;
550
+      }
551
+      return $Result;
552
+    }
553
+
554
+    /**
555
+     * @access private
556
+     */
557
+    private static function ParseMultipleTextValue($Text)
558
+    {
559
+      return explode(',', $Text);
560
+    }
561
+
562
+    /**
563
+     * @access private
564
+     */
565
+    private static function ParseParameters($Key, array $RawParams = null)
566
+    {
567
+      if (!$RawParams)
568
+      {
569
+        return array();
570
+      }
571
+
572
+      // Parameters are split into (key, value) pairs
573
+      $Parameters = array();
574
+      foreach ($RawParams as $Item)
575
+      {
576
+        $Parameters[] = explode('=', strtolower($Item));
577
+      }
578
+
579
+      $Type = array();
580
+      $Result = array();
581
+
582
+      // And each parameter is checked whether anything can/should be done because of it
583
+      foreach ($Parameters as $Index => $Parameter)
584
+      {
585
+        // Skipping empty elements
586
+        if (!$Parameter)
587
+        {
588
+          continue;
589
+        }
590
+
591
+        // Handling type parameters without the explicit TYPE parameter name (2.1 valid)
592
+        if (count($Parameter) == 1)
593
+        {
594
+          // Checks if the type value is allowed for the specific element
595
+          // The second part of the "if" statement means that email elements can have non-standard types (see the spec)
596
+          if (
597
+            (isset(self::$Spec_ElementTypes[$Key]) && in_array($Parameter[0], self::$Spec_ElementTypes[$Key])) ||
598
+            ($Key == 'email' && is_scalar($Parameter[0]))
599
+          )
600
+          {
601
+            $Type[] = $Parameter[0];
602
+          }
603
+        }
604
+        elseif (count($Parameter) > 2)
605
+        {
606
+          if(count(explode(',', $RawParams[$Index], -1)) > 0)
607
+          {
608
+            $TempTypeParams = self::ParseParameters($Key, explode(',', $RawParams[$Index]));
609
+            if ($TempTypeParams['type'])
610
+            {
611
+              $Type = array_merge($Type, $TempTypeParams['type']);
612
+            }
613
+          }
614
+        }
615
+        else
616
+        {
617
+          switch ($Parameter[0])
618
+          {
619
+            case 'encoding':
620
+              if (in_array($Parameter[1], array('quoted-printable', 'b', 'base64')))
621
+              {
622
+                $Result['encoding'] = $Parameter[1] == 'base64' ? 'b' : $Parameter[1];
623
+              }
624
+              break;
625
+            case 'charset':
626
+              $Result['charset'] = $Parameter[1];
627
+              break;
628
+            case 'type':
629
+              $Type = array_merge($Type, explode(',', $Parameter[1]));
630
+              break;
631
+            case 'value':
632
+              if (strtolower($Parameter[1]) == 'url')
633
+              {
634
+                $Result['encoding'] = 'uri';
635
+              }
636
+              break;
637
+          }
638
+        }
639
+      }
640
+
641
+      $Result['type'] = $Type;
642
+
643
+      return $Result;
644
+    }
645
+
646
+    // !Interface methods
647
+
648
+    // Countable interface
649
+    public function count()
650
+    {
651
+      switch ($this -> Mode)
652
+      {
653
+        case self::MODE_ERROR:
654
+          return 0;
655
+          break;
656
+        case self::MODE_SINGLE:
657
+          return 1;
658
+          break;
659
+        case self::MODE_MULTIPLE:
660
+          return count($this -> Data);
661
+          break;
662
+      }
663
+      return 0;
664
+    }
665
+
666
+    // Iterator interface
667
+    public function rewind()
668
+    {
669
+      reset($this -> Data);
670
+    }
671
+
672
+    public function current()
673
+    {
674
+      return current($this -> Data);
675
+    }
676
+
677
+    public function next()
678
+    {
679
+      return next($this -> Data);
680
+    }
681
+
682
+    public function valid()
683
+    {
684
+      return ($this -> current() !== false);
685
+    }
686
+
687
+    public function key()
688
+    {
689
+      return key($this -> Data);
690
+    }
691
+  }
692 692
 ?>
Please login to merge, or discard this patch.
Braces   +6 added lines, -5 removed lines patch added patch discarded remove patch
@@ -225,10 +225,13 @@  discard block
 block discarded – undo
225 225
 									{
226 226
 										//$Value = base64_decode($Value);
227 227
 									}
228
-									elseif ($ParamValue == 'quoted-printable') // v2.1
228
+									elseif ($ParamValue == 'quoted-printable')
229
+									{
230
+									  // v2.1
229 231
 									{
230 232
 										$Value = quoted_printable_decode($Value);
231 233
 									}
234
+									}
232 235
 									break;
233 236
 								case 'charset': // v2.1
234 237
 									if ($ParamValue != 'utf-8' && $ParamValue != 'utf8')
@@ -407,8 +410,7 @@  discard block
 block discarded – undo
407 410
 
408 411
 				if (isset(self::$Spec_StructuredElements[$Key]) &&
409 412
 					in_array(strtolower($Arguments[1]), self::$Spec_StructuredElements[$Key])
410
-				)
411
-				{
413
+				) {
412 414
 					$LastElementIndex = 0;
413 415
 
414 416
 					if (count($this -> Data[$Key]))
@@ -596,8 +598,7 @@  discard block
 block discarded – undo
596 598
 					if (
597 599
 						(isset(self::$Spec_ElementTypes[$Key]) && in_array($Parameter[0], self::$Spec_ElementTypes[$Key])) ||
598 600
 						($Key == 'email' && is_scalar($Parameter[0]))
599
-					)
600
-					{
601
+					) {
601 602
 						$Type[] = $Parameter[0];
602 603
 					}
603 604
 				}
Please login to merge, or discard this patch.
lib/vCard-parser/write-test.php 1 patch
Indentation   +15 added lines, -15 removed lines patch added patch discarded remove patch
@@ -1,20 +1,20 @@
 block discarded – undo
1 1
 <?php
2
-	require_once('vCard.php');
2
+  require_once('vCard.php');
3 3
 
4
-	$vCard = new vCard;
5
-	$vCard -> n('John', 'FirstName');
6
-	$vCard -> n('Doe', 'LastName');
7
-	$vCard -> tel('555-1111');
8
-	$vCard -> tel('555-1234', 'Work');
9
-	$vCard -> adr('', 'POBox');
10
-	$vCard -> adr('', 'ExtendedAddress');
11
-	$vCard -> adr('42 Plantation St.', 'StreetAddress');
12
-	$vCard -> adr('Baytown', 'Locality');
13
-	$vCard -> adr('LA', 'Region');
14
-	$vCard -> adr('30314', 'PostalCode');
15
-	$vCard -> adr('USA', 'Country');
4
+  $vCard = new vCard;
5
+  $vCard -> n('John', 'FirstName');
6
+  $vCard -> n('Doe', 'LastName');
7
+  $vCard -> tel('555-1111');
8
+  $vCard -> tel('555-1234', 'Work');
9
+  $vCard -> adr('', 'POBox');
10
+  $vCard -> adr('', 'ExtendedAddress');
11
+  $vCard -> adr('42 Plantation St.', 'StreetAddress');
12
+  $vCard -> adr('Baytown', 'Locality');
13
+  $vCard -> adr('LA', 'Region');
14
+  $vCard -> adr('30314', 'PostalCode');
15
+  $vCard -> adr('USA', 'Country');
16 16
 
17
-	//$vCard = new vCard('Example3.0.vcf');
17
+  //$vCard = new vCard('Example3.0.vcf');
18 18
 
19
-	echo '<pre>'.$vCard.'</pre>';
19
+  echo '<pre>'.$vCard.'</pre>';
20 20
 ?>
21 21
\ No newline at end of file
Please login to merge, or discard this patch.
lib/vCard-parser/test.php 1 patch
Indentation   +158 added lines, -158 removed lines patch added patch discarded remove patch
@@ -26,30 +26,30 @@  discard block
 block discarded – undo
26 26
 <body>
27 27
 
28 28
 <?php
29
-	require_once('vCard.php');
29
+  require_once('vCard.php');
30 30
 
31
-	/**
32
-	 * Test function for vCard content output
33
-	 * @param vCard vCard object
34
-	 */
35
-	function OutputvCard(vCard $vCard)
36
-	{
37
-		echo '<h2>'.$vCard -> FN[0].'</h2>';
31
+  /**
32
+   * Test function for vCard content output
33
+   * @param vCard vCard object
34
+   */
35
+  function OutputvCard(vCard $vCard)
36
+  {
37
+    echo '<h2>'.$vCard -> FN[0].'</h2>';
38 38
 
39
-		if ($vCard -> PHOTO)
40
-		{
41
-			foreach ($vCard -> PHOTO as $Photo)
42
-			{
43
-				if ($Photo['encoding'] == 'b')
44
-				{
45
-					echo '<img src="data:image/'.$Photo['type'][0].';base64,'.$Photo['value'].'" /><br />';
46
-				}
47
-				else
48
-				{
49
-					echo '<img src="'.$Photo['value'].'" /><br />';
50
-				}
39
+    if ($vCard -> PHOTO)
40
+    {
41
+      foreach ($vCard -> PHOTO as $Photo)
42
+      {
43
+        if ($Photo['encoding'] == 'b')
44
+        {
45
+          echo '<img src="data:image/'.$Photo['type'][0].';base64,'.$Photo['value'].'" /><br />';
46
+        }
47
+        else
48
+        {
49
+          echo '<img src="'.$Photo['value'].'" /><br />';
50
+        }
51 51
 
52
-				/*
52
+        /*
53 53
 				// It can also be saved to a file
54 54
 				try
55 55
 				{
@@ -64,153 +64,153 @@  discard block
 block discarded – undo
64 64
 					// Target path not writable
65 65
 				}
66 66
 				*/
67
-			}
68
-		}
67
+      }
68
+    }
69 69
 
70
-		foreach ($vCard -> N as $Name)
71
-		{
72
-			echo '<h3>Name: '.$Name['firstname'].' '.$Name['lastname'].'</h3>';
73
-		}
70
+    foreach ($vCard -> N as $Name)
71
+    {
72
+      echo '<h3>Name: '.$Name['firstname'].' '.$Name['lastname'].'</h3>';
73
+    }
74 74
 
75
-		foreach ($vCard -> ORG as $Organization)
76
-		{
77
-			echo '<h3>Organization: '.$Organization['name'].
78
-				($Organization['unit1'] || $Organization['unit2'] ?
79
-					' ('.implode(', ', array($Organization['unit1'], $Organization['unit2'])).')' :
80
-					''
81
-				).'</h3>';
82
-		}
75
+    foreach ($vCard -> ORG as $Organization)
76
+    {
77
+      echo '<h3>Organization: '.$Organization['name'].
78
+        ($Organization['unit1'] || $Organization['unit2'] ?
79
+          ' ('.implode(', ', array($Organization['unit1'], $Organization['unit2'])).')' :
80
+          ''
81
+        ).'</h3>';
82
+    }
83 83
 
84
-		if ($vCard -> TEL)
85
-		{
86
-			echo '<p><h4>Phone</h4>';
87
-			foreach ($vCard -> TEL as $Tel)
88
-			{
89
-				if (is_scalar($Tel))
90
-				{
91
-					echo $Tel.'<br />';
92
-				}
93
-				else
94
-				{
95
-					echo $Tel['value'].' ('.implode(', ', $Tel['type']).')<br />';
96
-				}
97
-			}
98
-			echo '</p>';
99
-		}
84
+    if ($vCard -> TEL)
85
+    {
86
+      echo '<p><h4>Phone</h4>';
87
+      foreach ($vCard -> TEL as $Tel)
88
+      {
89
+        if (is_scalar($Tel))
90
+        {
91
+          echo $Tel.'<br />';
92
+        }
93
+        else
94
+        {
95
+          echo $Tel['value'].' ('.implode(', ', $Tel['type']).')<br />';
96
+        }
97
+      }
98
+      echo '</p>';
99
+    }
100 100
 
101
-		if ($vCard -> EMAIL)
102
-		{
103
-			echo '<p><h4>Email</h4>';
104
-			foreach ($vCard -> EMAIL as $Email)
105
-			{
106
-				if (is_scalar($Email))
107
-				{
108
-					echo $Email;
109
-				}
110
-				else
111
-				{
112
-					echo $Email['value'].' ('.implode(', ', $Email['type']).')<br />';
113
-				}
114
-			}
115
-			echo '</p>';
116
-		}
101
+    if ($vCard -> EMAIL)
102
+    {
103
+      echo '<p><h4>Email</h4>';
104
+      foreach ($vCard -> EMAIL as $Email)
105
+      {
106
+        if (is_scalar($Email))
107
+        {
108
+          echo $Email;
109
+        }
110
+        else
111
+        {
112
+          echo $Email['value'].' ('.implode(', ', $Email['type']).')<br />';
113
+        }
114
+      }
115
+      echo '</p>';
116
+    }
117 117
 
118
-		if ($vCard -> URL)
119
-		{
120
-			echo '<p><h4>URL</h4>';
121
-			foreach ($vCard -> URL as $URL)
122
-			{
123
-				if (is_scalar($URL))
124
-				{
125
-					echo $URL.'<br />';
126
-				}
127
-				else
128
-				{
129
-					echo $URL['value'].'<br />';
130
-				}
131
-			}
132
-			echo '</p>';
133
-		}
118
+    if ($vCard -> URL)
119
+    {
120
+      echo '<p><h4>URL</h4>';
121
+      foreach ($vCard -> URL as $URL)
122
+      {
123
+        if (is_scalar($URL))
124
+        {
125
+          echo $URL.'<br />';
126
+        }
127
+        else
128
+        {
129
+          echo $URL['value'].'<br />';
130
+        }
131
+      }
132
+      echo '</p>';
133
+    }
134 134
 
135
-		if ($vCard -> IMPP)
136
-		{
137
-			echo '<p><h4>Instant messaging</h4>';
138
-			foreach ($vCard -> IMPP as $IMPP)
139
-			{
140
-				if (is_scalar($IMPP))
141
-				{
142
-					echo $IMPP.'<br />';
143
-				}
144
-				else
145
-				{
146
-					echo $IMPP['value'].'<br/ >';
147
-				}
148
-			}
149
-			echo '</p>';
150
-		}
135
+    if ($vCard -> IMPP)
136
+    {
137
+      echo '<p><h4>Instant messaging</h4>';
138
+      foreach ($vCard -> IMPP as $IMPP)
139
+      {
140
+        if (is_scalar($IMPP))
141
+        {
142
+          echo $IMPP.'<br />';
143
+        }
144
+        else
145
+        {
146
+          echo $IMPP['value'].'<br/ >';
147
+        }
148
+      }
149
+      echo '</p>';
150
+    }
151 151
 
152
-		if ($vCard -> ADR)
153
-		{
154
-			foreach ($vCard -> ADR as $Address)
155
-			{
156
-				echo '<p><h4>Address ('.implode(', ', $Address['type']).')</h4>';
157
-				echo 'Street address: <strong>'.($Address['streetaddress'] ? $Address['streetaddress'] : '-').'</strong><br />'.
158
-					'PO Box: <strong>'.($Address['pobox'] ? $Address['pobox'] : '-').'</strong><br />'.
159
-					'Extended address: <strong>'.($Address['extendedaddress'] ? $Address['extendedaddress'] : '-').'</strong><br />'.
160
-					'Locality: <strong>'.($Address['locality'] ? $Address['locality'] : '-').'</strong><br />'.
161
-					'Region: <strong>'.($Address['region'] ? $Address['region'] : '-').'</strong><br />'.
162
-					'ZIP/Post code: <strong>'.($Address['postalcode'] ? $Address['postalcode'] : '-').'</strong><br />'.
163
-					'Country: <strong>'.($Address['country'] ? $Address['country'] : '-').'</strong>';
164
-			}
165
-			echo '</p>';
166
-		}
152
+    if ($vCard -> ADR)
153
+    {
154
+      foreach ($vCard -> ADR as $Address)
155
+      {
156
+        echo '<p><h4>Address ('.implode(', ', $Address['type']).')</h4>';
157
+        echo 'Street address: <strong>'.($Address['streetaddress'] ? $Address['streetaddress'] : '-').'</strong><br />'.
158
+          'PO Box: <strong>'.($Address['pobox'] ? $Address['pobox'] : '-').'</strong><br />'.
159
+          'Extended address: <strong>'.($Address['extendedaddress'] ? $Address['extendedaddress'] : '-').'</strong><br />'.
160
+          'Locality: <strong>'.($Address['locality'] ? $Address['locality'] : '-').'</strong><br />'.
161
+          'Region: <strong>'.($Address['region'] ? $Address['region'] : '-').'</strong><br />'.
162
+          'ZIP/Post code: <strong>'.($Address['postalcode'] ? $Address['postalcode'] : '-').'</strong><br />'.
163
+          'Country: <strong>'.($Address['country'] ? $Address['country'] : '-').'</strong>';
164
+      }
165
+      echo '</p>';
166
+    }
167 167
 
168
-		if ($vCard -> AGENT)
169
-		{
170
-			echo '<h4>Agents</h4>';
171
-			foreach ($vCard -> AGENT as $Agent)
172
-			{
173
-				if (is_scalar($Agent))
174
-				{
175
-					echo '<div class="Agent">'.$Agent.'</div>';
176
-				}
177
-				elseif (is_a($Agent, 'vCard'))
178
-				{
179
-					echo '<div class="Agent">';
180
-					OutputvCard($Agent);
181
-					echo '</div>';
182
-				}
183
-			}
184
-		}
185
-	}
168
+    if ($vCard -> AGENT)
169
+    {
170
+      echo '<h4>Agents</h4>';
171
+      foreach ($vCard -> AGENT as $Agent)
172
+      {
173
+        if (is_scalar($Agent))
174
+        {
175
+          echo '<div class="Agent">'.$Agent.'</div>';
176
+        }
177
+        elseif (is_a($Agent, 'vCard'))
178
+        {
179
+          echo '<div class="Agent">';
180
+          OutputvCard($Agent);
181
+          echo '</div>';
182
+        }
183
+      }
184
+    }
185
+  }
186 186
 
187
-	$vCard = new vCard(
188
-		'Example3.0.vcf', // Path to vCard file
189
-		false, // Raw vCard text, can be used instead of a file
190
-		array( // Option array
191
-			// This lets you get single values for elements that could contain multiple values but have only one value.
192
-			//	This defaults to false so every value that could have multiple values is returned as array.
193
-			'Collapse' => false
194
-		)
195
-	);
187
+  $vCard = new vCard(
188
+    'Example3.0.vcf', // Path to vCard file
189
+    false, // Raw vCard text, can be used instead of a file
190
+    array( // Option array
191
+      // This lets you get single values for elements that could contain multiple values but have only one value.
192
+      //	This defaults to false so every value that could have multiple values is returned as array.
193
+      'Collapse' => false
194
+    )
195
+  );
196 196
 
197
-	if (count($vCard) == 0)
198
-	{
199
-		throw new Exception('vCard test: empty vCard!');
200
-	}
201
-	// if the file contains a single vCard, it is accessible directly.
202
-	elseif (count($vCard) == 1)
203
-	{
204
-		OutputvCard($vCard);
205
-	}
206
-	// if the file contains multiple vCards, they are accessible as elements of an array
207
-	else
208
-	{
209
-		foreach ($vCard as $Index => $vCardPart)
210
-		{
211
-			OutputvCard($vCardPart);
212
-		}
213
-	}
197
+  if (count($vCard) == 0)
198
+  {
199
+    throw new Exception('vCard test: empty vCard!');
200
+  }
201
+  // if the file contains a single vCard, it is accessible directly.
202
+  elseif (count($vCard) == 1)
203
+  {
204
+    OutputvCard($vCard);
205
+  }
206
+  // if the file contains multiple vCards, they are accessible as elements of an array
207
+  else
208
+  {
209
+    foreach ($vCard as $Index => $vCardPart)
210
+    {
211
+      OutputvCard($vCardPart);
212
+    }
213
+  }
214 214
 ?>
215 215
 </body>
216 216
 </html>
Please login to merge, or discard this patch.
lib/CardDAV-PHP/carddav.php 2 patches
Indentation   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -143,17 +143,17 @@  discard block
 block discarded – undo
143 143
     private $auth = null;
144 144
 
145 145
     /**
146
-    * Authentication: username
147
-    *
148
-    * @var  string
149
-    */
146
+     * Authentication: username
147
+     *
148
+     * @var  string
149
+     */
150 150
     private $username = null;
151 151
 
152 152
     /**
153
-    * Authentication: password
154
-    *
155
-    * @var  string
156
-    */
153
+     * Authentication: password
154
+     *
155
+     * @var  string
156
+     */
157 157
     private $password = null;
158 158
 
159 159
     /**
@@ -236,11 +236,11 @@  discard block
 block discarded – undo
236 236
     }
237 237
 
238 238
     /**
239
-    * Sets the CardDAV server url
240
-    *
241
-    * @param    string  $url    CardDAV server url
242
-    * @return   void
243
-    */
239
+     * Sets the CardDAV server url
240
+     *
241
+     * @param    string  $url    CardDAV server url
242
+     * @return   void
243
+     */
244 244
     public function setUrl($url)
245 245
     {
246 246
         $this->url = $url;
@@ -354,11 +354,11 @@  discard block
 block discarded – undo
354 354
     }
355 355
 
356 356
     /**
357
-    * Gets a clean vCard from the CardDAV server
358
-    *
359
-    * @param    string  $vcard_id   vCard id on the CardDAV server
360
-    * @return   string              vCard (text/vcard)
361
-    */
357
+     * Gets a clean vCard from the CardDAV server
358
+     *
359
+     * @param    string  $vcard_id   vCard id on the CardDAV server
360
+     * @return   string              vCard (text/vcard)
361
+     */
362 362
     public function getVcard($vcard_id)
363 363
     {
364 364
         $vcard_id   = str_replace($this->url_vcard_extension, null, $vcard_id);
@@ -367,29 +367,29 @@  discard block
 block discarded – undo
367 367
         // DEBUG: print the response of the carddav-server
368 368
         // print_r($result);
369 369
 
370
-	switch ($result['http_code'])
370
+  switch ($result['http_code'])
371 371
         {
372
-		case 404:
373
-			$altResult  = $this->query($this->url . $vcard_id , 'GET');
374
-		        // DEBUG: print the response of the carddav-server
375
-		        // print_r($altResult);
376
-	                switch ($altResult['http_code'])
377
-        	        {
378
-                	        case 200:
379
-	                        case 207:
380
-					print "Ignoring given Vcard Extension (".$this->url_vcard_extension.")" . PHP_EOL. ".";
381
-					$this->setVcardExtension("");
382
-        	                        return $altResult['response'];
383
-	                }
384
-		        throw new \Exception(
385
-		            "Woops, something's gone wrong! The CardDAV server returned the http status code {$result['http_code']}:{$result['response']}:{$vcard_id}.",
386
-		            self::EXCEPTION_WRONG_HTTP_STATUS_CODE_GET_VCARD
387
-		        );
388
-
389
-		case 200:
390
-		case 207:
391
-			print ".";
392
-			return $result['response'];
372
+    case 404:
373
+      $altResult  = $this->query($this->url . $vcard_id , 'GET');
374
+            // DEBUG: print the response of the carddav-server
375
+            // print_r($altResult);
376
+                  switch ($altResult['http_code'])
377
+                  {
378
+                          case 200:
379
+                          case 207:
380
+          print "Ignoring given Vcard Extension (".$this->url_vcard_extension.")" . PHP_EOL. ".";
381
+          $this->setVcardExtension("");
382
+                                  return $altResult['response'];
383
+                  }
384
+            throw new \Exception(
385
+                "Woops, something's gone wrong! The CardDAV server returned the http status code {$result['http_code']}:{$result['response']}:{$vcard_id}.",
386
+                self::EXCEPTION_WRONG_HTTP_STATUS_CODE_GET_VCARD
387
+            );
388
+
389
+    case 200:
390
+    case 207:
391
+      print ".";
392
+      return $result['response'];
393 393
         }
394 394
 
395 395
         throw new \Exception(
@@ -450,10 +450,10 @@  discard block
 block discarded – undo
450 450
     }
451 451
 
452 452
     /**
453
-    * Checks if the CardDAV server is reachable
454
-    *
455
-    * @return   boolean
456
-    */
453
+     * Checks if the CardDAV server is reachable
454
+     *
455
+     * @return   boolean
456
+     */
457 457
     public function checkConnection()
458 458
     {
459 459
         $result = $this->query($this->url, 'OPTIONS');
Please login to merge, or discard this patch.
Braces   +86 added lines, -38 removed lines patch added patch discarded remove patch
@@ -219,7 +219,8 @@  discard block
 block discarded – undo
219 219
      */
220 220
     public function __construct($url = null)
221 221
     {
222
-        if ($url !== null) {
222
+        if ($url !== null)
223
+        {
223 224
             $this->setUrl($url);
224 225
         }
225 226
     }
@@ -245,7 +246,8 @@  discard block
 block discarded – undo
245 246
     {
246 247
         $this->url = $url;
247 248
 
248
-        if (substr($this->url, -1, 1) !== '/') {
249
+        if (substr($this->url, -1, 1) !== '/')
250
+        {
249 251
             $this->url = $this->url . '/';
250 252
         }
251 253
 
@@ -339,9 +341,12 @@  discard block
 block discarded – undo
339 341
         {
340 342
             case 200:
341 343
             case 207:
342
-                if ($raw === true) {
344
+                if ($raw === true)
345
+                {
343 346
                     return $result['response'];
344
-                } else {
347
+                }
348
+                else
349
+                {
345 350
                     return $this->simplify($result['response'], $include_vcards);
346 351
                 }
347 352
         }
@@ -368,13 +373,13 @@  discard block
 block discarded – undo
368 373
         // print_r($result);
369 374
 
370 375
 	switch ($result['http_code'])
371
-        {
376
+	{
372 377
 		case 404:
373 378
 			$altResult  = $this->query($this->url . $vcard_id , 'GET');
374 379
 		        // DEBUG: print the response of the carddav-server
375 380
 		        // print_r($altResult);
376 381
 	                switch ($altResult['http_code'])
377
-        	        {
382
+	                {
378 383
                 	        case 200:
379 384
 	                        case 207:
380 385
 					print "Ignoring given Vcard Extension (".$this->url_vcard_extension.")" . PHP_EOL. ".";
@@ -458,9 +463,12 @@  discard block
 block discarded – undo
458 463
     {
459 464
         $result = $this->query($this->url, 'OPTIONS');
460 465
 
461
-        if ($result['http_code'] === 200) {
466
+        if ($result['http_code'] === 200)
467
+        {
462 468
             return true;
463
-        } else {
469
+        }
470
+        else
471
+        {
464 472
             return false;
465 473
         }
466 474
     }
@@ -509,7 +517,8 @@  discard block
 block discarded – undo
509 517
      */
510 518
     public function add($vcard, $vcard_id = null)
511 519
     {
512
-        if ($vcard_id === null) {
520
+        if ($vcard_id === null)
521
+        {
513 522
             $vcard_id   = $this->generateVcardId();
514 523
         }
515 524
         $vcard  = $this->cleanVcard($vcard);
@@ -536,9 +545,12 @@  discard block
 block discarded – undo
536 545
      */
537 546
     public function update($vcard, $vcard_id)
538 547
     {
539
-        try {
548
+        try
549
+        {
540 550
             return $this->add($vcard, $vcard_id);
541
-        } catch (Exception $e) {
551
+        }
552
+        catch (Exception $e)
553
+        {
542 554
             throw new \Exception($e->getMessage(), self::EXCEPTION_WRONG_HTTP_STATUS_CODE_UPDATE);
543 555
         }
544 556
     }
@@ -554,9 +566,12 @@  discard block
 block discarded – undo
554 566
     {
555 567
         $response = $this->cleanResponse($response);
556 568
 
557
-        try {
569
+        try
570
+        {
558 571
             $xml = new \SimpleXMLElement($response);
559
-        } catch (Exception $e) {
572
+        }
573
+        catch (Exception $e)
574
+        {
560 575
             throw new \Exception(
561 576
                 "The XML response seems to be malformed and can't be simplified!",
562 577
                 self::EXCEPTION_MALFORMED_XML_RESPONSE,
@@ -571,35 +586,50 @@  discard block
 block discarded – undo
571 586
         $simplified_xml->startDocument('1.0', 'utf-8');
572 587
             $simplified_xml->startElement('response');
573 588
 
574
-        if (!empty($xml->response)) {
575
-            foreach ($xml->response as $response) {
589
+        if (!empty($xml->response))
590
+        {
591
+            foreach ($xml->response as $response)
592
+            {
576 593
               if ((preg_match('/vcard/', $response->propstat->prop->getcontenttype) || preg_match('/vcf/', $response->href)) &&
577
-                  !$response->propstat->prop->resourcetype->collection) {
594
+                  !$response->propstat->prop->resourcetype->collection)
595
+              {
578 596
                     $id = basename($response->href);
579 597
                     $id = str_replace($this->url_vcard_extension, null, $id);
580 598
 
581
-                    try {
599
+                    try
600
+                    {
582 601
                         $vcardData = $this->getVcard($id);
583
-                        if (!empty($id)) {
602
+                        if (!empty($id))
603
+                        {
584 604
                             $simplified_xml->startElement('element');
585 605
                                 $simplified_xml->writeElement('id', $id);
586 606
                                 $simplified_xml->writeElement('etag', str_replace('"', null, $response->propstat->prop->getetag));
587 607
                                 $simplified_xml->writeElement('last_modified', $response->propstat->prop->getlastmodified);
588 608
 
589
-                            if ($include_vcards === true) {
609
+                            if ($include_vcards === true)
610
+                            {
590 611
                                 $simplified_xml->writeElement('vcard', $vcardData);
591 612
                             }
592 613
                             $simplified_xml->endElement();
593 614
                         }
594
-                    } catch (\Exception $e) {
615
+                    }
616
+                    catch (\Exception $e)
617
+                    {
595 618
                         print("Error fetching vCard: {$id}: {$e->getMessage()}\n");
596 619
                     }
597
-                } elseif (preg_match('/unix-directory/', $response->propstat->prop->getcontenttype)) {
598
-                    if (isset($response->propstat->prop->href)) {
620
+                }
621
+                elseif (preg_match('/unix-directory/', $response->propstat->prop->getcontenttype))
622
+                {
623
+                    if (isset($response->propstat->prop->href))
624
+                    {
599 625
                         $href = $response->propstat->prop->href;
600
-                    } elseif (isset($response->href)) {
626
+                    }
627
+                    elseif (isset($response->href))
628
+                    {
601 629
                         $href = $response->href;
602
-                    } else {
630
+                    }
631
+                    else
632
+                    {
603 633
                         $href = null;
604 634
                     }
605 635
 
@@ -643,7 +673,8 @@  discard block
 block discarded – undo
643 673
      */
644 674
     public function curlInit()
645 675
     {
646
-        if (empty($this->curl)) {
676
+        if (empty($this->curl))
677
+        {
647 678
             $this->curl = curl_init();
648 679
             curl_setopt($this->curl, CURLOPT_HEADER, true);
649 680
             curl_setopt($this->curl, CURLOPT_SSL_VERIFYHOST, false);
@@ -651,7 +682,8 @@  discard block
 block discarded – undo
651 682
             curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
652 683
             curl_setopt($this->curl, CURLOPT_USERAGENT, self::USERAGENT.self::VERSION);
653 684
 
654
-            if ($this->auth !== null) {
685
+            if ($this->auth !== null)
686
+            {
655 687
                 curl_setopt($this->curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
656 688
                 curl_setopt($this->curl, CURLOPT_USERPWD, $this->auth);
657 689
             }
@@ -681,17 +713,23 @@  discard block
 block discarded – undo
681 713
         curl_setopt($this->curl, CURLOPT_URL, $url);
682 714
         curl_setopt($this->curl, CURLOPT_CUSTOMREQUEST, $method);
683 715
 
684
-        if ($content !== null) {
716
+        if ($content !== null)
717
+        {
685 718
             curl_setopt($this->curl, CURLOPT_POST, true);
686 719
             curl_setopt($this->curl, CURLOPT_POSTFIELDS, $content);
687
-        } else {
720
+        }
721
+        else
722
+        {
688 723
             curl_setopt($this->curl, CURLOPT_POST, false);
689 724
             curl_setopt($this->curl, CURLOPT_POSTFIELDS, null);
690 725
         }
691 726
 
692
-        if ($content_type !== null) {
727
+        if ($content_type !== null)
728
+        {
693 729
             curl_setopt($this->curl, CURLOPT_HTTPHEADER, array('Content-type: '.$content_type, 'Depth: 1'));
694
-        } else {
730
+        }
731
+        else
732
+        {
695 733
             curl_setopt($this->curl, CURLOPT_HTTPHEADER, array('Depth: 1'));
696 734
         }
697 735
 
@@ -706,7 +744,8 @@  discard block
 block discarded – undo
706 744
             'http_code'         => $http_code
707 745
         );
708 746
 
709
-        if ($this->debug === true) {
747
+        if ($this->debug === true)
748
+        {
710 749
             $debug = $return;
711 750
             $debug['url']           = $url;
712 751
             $debug['method']        = $method;
@@ -728,26 +767,34 @@  discard block
 block discarded – undo
728 767
     {
729 768
         $vcard_id = null;
730 769
 
731
-        for ($number = 0; $number <= 25; $number ++) {
732
-            if ($number == 8 || $number == 17) {
770
+        for ($number = 0; $number <= 25; $number ++)
771
+        {
772
+            if ($number == 8 || $number == 17)
773
+            {
733 774
                 $vcard_id .= '-';
734
-            } else {
775
+            }
776
+            else
777
+            {
735 778
                 $vcard_id .= $this->vcard_id_chars[mt_rand(0, (count($this->vcard_id_chars) - 1))];
736 779
             }
737 780
         }
738 781
 
739
-        try {
782
+        try
783
+        {
740 784
             $carddav = new CardDavBackend($this->url);
741 785
             $carddav->setAuth($this->username, $this->password);
742 786
 
743 787
             $result = $carddav->query($this->url . $vcard_id . $this->url_vcard_extension, 'GET');
744 788
 
745
-            if ($result['http_code'] !== 404) {
789
+            if ($result['http_code'] !== 404)
790
+            {
746 791
                 $vcard_id = $this->generateVcardId();
747 792
             }
748 793
 
749 794
             return $vcard_id;
750
-        } catch (Exception $e) {
795
+        }
796
+        catch (Exception $e)
797
+        {
751 798
             throw new \Exception($e->getMessage(), self::EXCEPTION_COULD_NOT_GENERATE_NEW_VCARD_ID);
752 799
         }
753 800
     }
@@ -760,7 +807,8 @@  discard block
 block discarded – undo
760 807
      */
761 808
     public function __destruct()
762 809
     {
763
-        if (!empty($this->curl)) {
810
+        if (!empty($this->curl))
811
+        {
764 812
             curl_close($this->curl);
765 813
         }
766 814
     }
Please login to merge, or discard this patch.