Moving to GitHub.
[platal.git] / include / partnersharing.inc.php
1 <?php
2 /***************************************************************************
3 * Copyright (C) 2003-2014 Polytechnique.org *
4 * http://opensource.polytechnique.org/ *
5 * *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 2 of the License, or *
9 * (at your option) any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the Free Software *
18 * Foundation, Inc., *
19 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
20 ***************************************************************************/
21
22 // {{{ class PartnerSharing
23 // Holds data about a "directory partner".
24 class PartnerSharing
25 {
26 public $id;
27 public $shortname;
28 public $name;
29 public $url;
30 public $has_directory = false;
31 public $has_bulkmail = false;
32 public $default_sharing_level = Visibility::VIEW_NONE;
33 protected $api_uid = null;
34
35 protected function __construct(array $data)
36 {
37 foreach ($data as $key => $val) {
38 $this->$key = $val;
39 }
40 }
41
42 public function apiUser()
43 {
44 return User::getSilentWithUID($this->api_uid);
45 }
46
47 public static function fetchByAPIUser(User $user)
48 {
49 $res = XDB::fetchOneAssoc('SELECT id, shortname, name, url,
50 has_directory, has_bulkmail,
51 default_sharing_level, api_uid
52 FROM profile_partnersharing_enum
53 WHERE api_uid = {?}', $user->uid);
54 if ($res == null) {
55 return null;
56 } else {
57 return new PartnerSharing($res);
58 }
59 }
60
61 public static function fetchById($id)
62 {
63 $res = XDB::fetchOneAssoc('SELECT id, shortname, name, url,
64 has_directory, has_bulkmail,
65 default_sharing_level, api_uid
66 FROM profile_partnersharing_enum
67 WHERE id = {?}', $id);
68 if ($res == null) {
69 return null;
70 } else {
71 return new PartnerSharing($res);
72 }
73 }
74 }
75 // }}}
76 // {{{ class PartnerSettings
77 class PartnerSettings
78 {
79 public $exposed_uid;
80 public $sharing_level;
81 public $allow_email = false;
82 protected $partner_id;
83 public $partner = null;
84
85 public function __construct(array $data)
86 {
87 foreach ($data as $key => $val) {
88 $this->$key = $val;
89 }
90 $this->partner = PartnerSharing::fetchById($this->partner_id);
91 $this->sharing_visibility = Visibility::get($this->sharing_level);
92 }
93
94 public static function getEmpty($partner_id)
95 {
96 $data = array(
97 'partner_id' => $partner_id,
98 'exposed_uid' => 0,
99 'sharing_level' => Visibility::VIEW_NONE,
100 'allow_email' => false,
101 );
102 return new PartnerSettings($data);
103 }
104 }
105 // }}}
106
107 // vim:set et sw=4 sts=4 sws=4 foldmethod=marker fenc=utf-8:
108 ?>