When adding a new address to a profile, tick the "can receive mail" checkbox by default
[platal.git] / modules / profile / addresses.inc.php
index 27c2362..ed3e195 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /***************************************************************************
- *  Copyright (C) 2003-2010 Polytechnique.org                              *
+ *  Copyright (C) 2003-2014 Polytechnique.org                              *
  *  http://opensource.polytechnique.org/                                   *
  *                                                                         *
  *  This program is free software; you can redistribute it and/or modify   *
 
 class ProfileSettingAddresses implements ProfileSetting
 {
-    public function value(ProfilePage &$page, $field, $value, &$success)
+    public function value(ProfilePage $page, $field, $value, &$success)
     {
         $success = true;
         $addresses = array();
 
         if (is_null($value)) {
-            $it = Address::iterate(array($page->pid()), array(Address::LINK_PROFILE), array(0));
+            $it = Address::iterate(array($page->pid()), array(Address::LINK_PROFILE), array(0), Visibility::get(Visibility::VIEW_ADMIN));
             while ($address = $it->next()) {
                 $addresses[] = $address->toFormArray();
             }
             if (count($addresses) == 0) {
-                $address = new Address();
+                $address = new Address(array('mail' => 1));
                 $addresses[] = $address->toFormArray();
             }
             return $addresses;
@@ -41,11 +41,17 @@ class ProfileSettingAddresses implements ProfileSetting
         return Address::formatFormArray($value, $success);
     }
 
-    public function save(ProfilePage &$page, $field, $value)
+    public function save(ProfilePage $page, $field, $value)
     {
-        Phone::deletePhones($page->pid(), Phone::LINK_ADDRESS);
-        Address::delete($page->pid(), Address::LINK_PROFILE);
-        Address::saveFromArray($value, $page->pid(), Address::LINK_PROFILE);
+        $deletePrivate = S::user()->isMe($page->owner) || S::admin();
+
+        Phone::deletePhones($page->pid(), Phone::LINK_ADDRESS, null, $deletePrivate);
+        Address::deleteAddresses($page->pid(), Address::LINK_PROFILE, null, null, $deletePrivate);
+        AddressReq::purge_requests($page->pid(), 0, 0, Address::LINK_PROFILE);
+        Address::saveFromArray($value, $page->pid(), Address::LINK_PROFILE, null, $deletePrivate);
+        if (S::user()->isMe($page->owner) && count($value) > 1) {
+            Platal::page()->trigWarning('Attention, tu as plusieurs adresses sur ton profil. Pense à supprimer celles qui sont obsolètes.');
+        }
     }
 
     public function getText($value)
@@ -58,13 +64,14 @@ class ProfilePageAddresses extends ProfilePage
 {
     protected $pg_template = 'profile/adresses.tpl';
 
-    public function __construct(PlWizard &$wiz)
+    public function __construct(PlWizard $wiz)
     {
         parent::__construct($wiz);
         $this->settings['addresses'] = new ProfileSettingAddresses();
         $this->watched['addresses']  = true;
+        Platal::page()->assign('geocoding_removal', true);
     }
 }
 
-// vim:set et sw=4 sts=4 sws=4 foldmethod=marker enc=utf-8:
+// vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
 ?>