~ubuntu-branches/ubuntu/trusty/ejabberd/trusty-proposed

« back to all changes in this revision

Viewing changes to src/mod_pubsub/node_buddy.erl

  • Committer: Bazaar Package Importer
  • Author(s): Gerfried Fuchs, Konstantin Khomoutov, Gerfried Fuchs
  • Date: 2009-12-04 18:22:49 UTC
  • mfrom: (1.1.11 upstream)
  • Revision ID: james.westby@ubuntu.com-20091204182249-6jfmdz8878h7oaos
Tags: 2.1.0-1
[ Konstantin Khomoutov ]
* New upstream release (Closes: #519858).
  This also adds support for LDAPS upstream (Closes: #526145).
* Do not depend on cdbs anymore, port debian/rules to dh+quilt,
  remove build dependency on patchutils, use erlang-depends.
* Bump debhelper version to 7, standards base to 3.8.3
* Depend on erlang R13B.
* Recommend imagemagick (for captcha support).
* Remove deprecated patches (ssl.patch patch, dynamic_compile_loglevel.patch,
  ldaps.patch, update.patch, proxy.patch, caps.patch, convert.patch,
  s2s.patch).
* Replace mod_ctlextra with mod_admin_extra.
* Use upstream inetrc file.
* Bring debian/ejabberd.cfg and ejabberdctl in sync with upstream.
* Update ejabberdctl manual page.
* Provide NEWS file.
* Rework README.Debian:
  * Group all information into sections.
  * Describe issues with epam binary (Closes: #502791).
  * Discuss how to use DBMS backends (Closes: #540915, #507144).
  * Discuss upgrading from 2.0.x series.
* Implement PID file management (Closes: #519858).
* Make logrotate process all files matching "*.log".
* Improve init script:
  * Make init script LSB-compliant.
  * Implement "live" target which allows to run ejabberd in foreground.
* Make captcha.sh use bash explicitly.
* Rework node-generation for ejabberdctl to fix ejabberd's atom table
  overflows while preserving the possibility to run several versions
  of ejabberdctl concurrently as before.
* Add webadmin patch restoring compatibility with Erlang/OTP <= R12B-4.
* Integrate upstream patch for EJAB-1106.
* Add upstream patch for EJAB-1098.
* Add upstream patch for EJAB-1045.
* Add Konstantin Khomoutov to uploaders.
* Add Japanese debconf translation (thanks to Hideki Yamane)
  (Closes: #558071).

[ Gerfried Fuchs ]
* Build-Depend on po-debconf so po2debconf can be called.

Show diffs side-by-side

added added

removed removed

Lines of Context:
36
36
%%   it's possible not to define some function at all
37
37
%%   in that case, warning will be generated at compilation
38
38
%%   and function call will fail,
39
 
%%   then mod_pubsub will call function from node_default
 
39
%%   then mod_pubsub will call function from node_hometree
40
40
%%   (this makes code cleaner, but execution a little bit longer)
41
41
 
42
42
%% API definition
43
43
-export([init/3, terminate/2,
44
44
         options/0, features/0,
45
45
         create_node_permission/6,
46
 
         create_node/3,
47
 
         delete_node/2,
48
 
         purge_node/3,
 
46
         create_node/2,
 
47
         delete_node/1,
 
48
         purge_node/2,
49
49
         subscribe_node/8,
50
 
         unsubscribe_node/5,
51
 
         publish_item/7,
 
50
         unsubscribe_node/4,
 
51
         publish_item/6,
52
52
         delete_item/4,
53
 
         remove_extra_items/4,
 
53
         remove_extra_items/3,
54
54
         get_entity_affiliations/2,
55
 
         get_node_affiliations/2,
56
 
         get_affiliation/3,
57
 
         set_affiliation/4,
 
55
         get_node_affiliations/1,
 
56
         get_affiliation/2,
 
57
         set_affiliation/3,
58
58
         get_entity_subscriptions/2,
59
 
         get_node_subscriptions/2,
60
 
         get_subscription/3,
61
 
         set_subscription/4,
62
 
         get_states/2,
63
 
         get_state/3,
 
59
         get_node_subscriptions/1,
 
60
         get_subscriptions/2,
 
61
         set_subscriptions/4,
 
62
         get_pending_nodes/2,
 
63
         get_states/1,
 
64
         get_state/2,
64
65
         set_state/1,
65
 
         get_items/7,
 
66
         get_items/6,
66
67
         get_items/2,
67
 
         get_item/8,
68
 
         get_item/3,
69
 
         set_item/1
 
68
         get_item/7,
 
69
         get_item/2,
 
70
         set_item/1,
 
71
         get_item_name/3,
 
72
         node_to_path/1,
 
73
         path_to_node/1
70
74
        ]).
71
75
 
72
76
 
73
77
init(Host, ServerHost, Opts) ->
74
 
    node_default:init(Host, ServerHost, Opts).
 
78
    node_hometree:init(Host, ServerHost, Opts).
75
79
 
76
80
terminate(Host, ServerHost) ->
77
 
    node_default:terminate(Host, ServerHost).
 
81
    node_hometree:terminate(Host, ServerHost).
78
82
 
79
83
options() ->
80
 
    [{node_type, buddy},
81
 
     {deliver_payloads, true},
 
84
    [{deliver_payloads, true},
82
85
     {notify_config, false},
83
86
     {notify_delete, false},
84
87
     {notify_retract, true},
85
88
     {persist_items, true},
86
 
     {max_items, ?MAXITEMS div 2},
 
89
     {max_items, ?MAXITEMS},
87
90
     {subscribe, true},
88
91
     {access_model, presence},
89
92
     {roster_groups_allowed, []},
90
93
     {publish_model, publishers},
 
94
     {notification_type, headline},
91
95
     {max_payload_size, ?MAX_PAYLOAD_SIZE},
92
96
     {send_last_published_item, never},
93
97
     {deliver_notifications, true},
96
100
features() ->
97
101
    ["create-nodes",
98
102
     "delete-nodes",
 
103
     "delete-items",
99
104
     "instant-nodes",
 
105
     "item-ids",
100
106
     "outcast-affiliation",
101
107
     "persistent-items",
102
108
     "publish",
110
116
    ].
111
117
 
112
118
create_node_permission(Host, ServerHost, Node, ParentNode, Owner, Access) ->
113
 
    node_default:create_node_permission(Host, ServerHost, Node, ParentNode, Owner, Access).
114
 
 
115
 
create_node(Host, Node, Owner) ->
116
 
    node_default:create_node(Host, Node, Owner).
117
 
 
118
 
delete_node(Host, Removed) ->
119
 
    node_default:delete_node(Host, Removed).
120
 
 
121
 
subscribe_node(Host, Node, Sender, Subscriber, AccessModel, SendLast, PresenceSubscription, RosterGroup) ->
122
 
    node_default:subscribe_node(Host, Node, Sender, Subscriber, AccessModel, SendLast, PresenceSubscription, RosterGroup).
123
 
 
124
 
unsubscribe_node(Host, Node, Sender, Subscriber, SubID) ->
125
 
    node_default:unsubscribe_node(Host, Node, Sender, Subscriber, SubID).
126
 
 
127
 
publish_item(Host, Node, Publisher, Model, MaxItems, ItemId, Payload) ->
128
 
    node_default:publish_item(Host, Node, Publisher, Model, MaxItems, ItemId, Payload).
129
 
 
130
 
remove_extra_items(Host, Node, MaxItems, ItemIds) ->
131
 
    node_default:remove_extra_items(Host, Node, MaxItems, ItemIds).
132
 
 
133
 
delete_item(Host, Node, JID, ItemId) ->
134
 
    node_default:delete_item(Host, Node, JID, ItemId).
135
 
 
136
 
purge_node(Host, Node, Owner) ->
137
 
    node_default:purge_node(Host, Node, Owner).
 
119
    node_hometree:create_node_permission(Host, ServerHost, Node, ParentNode, Owner, Access).
 
120
 
 
121
create_node(NodeId, Owner) ->
 
122
    node_hometree:create_node(NodeId, Owner).
 
123
 
 
124
delete_node(Removed) ->
 
125
    node_hometree:delete_node(Removed).
 
126
 
 
127
subscribe_node(NodeId, Sender, Subscriber, AccessModel, SendLast, PresenceSubscription, RosterGroup, Options) ->
 
128
    node_hometree:subscribe_node(NodeId, Sender, Subscriber, AccessModel, SendLast, PresenceSubscription, RosterGroup, Options).
 
129
 
 
130
unsubscribe_node(NodeId, Sender, Subscriber, SubID) ->
 
131
    node_hometree:unsubscribe_node(NodeId, Sender, Subscriber, SubID).
 
132
 
 
133
publish_item(NodeId, Publisher, Model, MaxItems, ItemId, Payload) ->
 
134
    node_hometree:publish_item(NodeId, Publisher, Model, MaxItems, ItemId, Payload).
 
135
 
 
136
remove_extra_items(NodeId, MaxItems, ItemIds) ->
 
137
    node_hometree:remove_extra_items(NodeId, MaxItems, ItemIds).
 
138
 
 
139
delete_item(NodeId, Publisher, PublishModel, ItemId) ->
 
140
    node_hometree:delete_item(NodeId, Publisher, PublishModel, ItemId).
 
141
 
 
142
purge_node(NodeId, Owner) ->
 
143
    node_hometree:purge_node(NodeId, Owner).
138
144
 
139
145
get_entity_affiliations(Host, Owner) ->
140
 
    node_default:get_entity_affiliations(Host, Owner).
141
 
 
142
 
get_node_affiliations(Host, Node) ->
143
 
    node_default:get_node_affiliations(Host, Node).
144
 
 
145
 
get_affiliation(Host, Node, Owner) ->
146
 
    node_default:get_affiliation(Host, Node, Owner).
147
 
 
148
 
set_affiliation(Host, Node, Owner, Affiliation) ->
149
 
    node_default:set_affiliation(Host, Node, Owner, Affiliation).
 
146
    node_hometree:get_entity_affiliations(Host, Owner).
 
147
 
 
148
get_node_affiliations(NodeId) ->
 
149
    node_hometree:get_node_affiliations(NodeId).
 
150
 
 
151
get_affiliation(NodeId, Owner) ->
 
152
    node_hometree:get_affiliation(NodeId, Owner).
 
153
 
 
154
set_affiliation(NodeId, Owner, Affiliation) ->
 
155
    node_hometree:set_affiliation(NodeId, Owner, Affiliation).
150
156
 
151
157
get_entity_subscriptions(Host, Owner) ->
152
 
    node_default:get_entity_subscriptions(Host, Owner).
153
 
 
154
 
get_node_subscriptions(Host, Node) ->
155
 
    node_default:get_node_subscriptions(Host, Node).
156
 
 
157
 
get_subscription(Host, Node, Owner) ->
158
 
    node_default:get_subscription(Host, Node, Owner).
159
 
 
160
 
set_subscription(Host, Node, Owner, Subscription) ->
161
 
    node_default:set_subscription(Host, Node, Owner, Subscription).
162
 
 
163
 
get_states(Host, Node) ->
164
 
    node_default:get_states(Host, Node).
165
 
 
166
 
get_state(Host, Node, JID) ->
167
 
    node_default:get_state(Host, Node, JID).
 
158
    node_hometree:get_entity_subscriptions(Host, Owner).
 
159
 
 
160
get_node_subscriptions(NodeId) ->
 
161
    node_hometree:get_node_subscriptions(NodeId).
 
162
 
 
163
get_subscriptions(NodeId, Owner) ->
 
164
    node_hometree:get_subscriptions(NodeId, Owner).
 
165
 
 
166
set_subscriptions(NodeId, Owner, Subscription, SubId) ->
 
167
    node_hometree:set_subscriptions(NodeId, Owner, Subscription, SubId).
 
168
 
 
169
get_pending_nodes(Host, Owner) ->
 
170
    node_hometree:get_pending_nodes(Host, Owner).
 
171
 
 
172
get_states(NodeId) ->
 
173
    node_hometree:get_states(NodeId).
 
174
 
 
175
get_state(NodeId, JID) ->
 
176
    node_hometree:get_state(NodeId, JID).
168
177
 
169
178
set_state(State) ->
170
 
    node_default:set_state(State).
171
 
 
172
 
get_items(Host, Node) ->
173
 
    node_default:get_items(Host, Node).
174
 
 
175
 
get_items(Host, Node, JID, AccessModel, PresenceSubscription, RosterGroup, SubId) ->
176
 
    node_default:get_items(Host, Node, JID, AccessModel, PresenceSubscription, RosterGroup, SubId).
177
 
    
178
 
get_item(Host, Node, ItemId) ->
179
 
    node_default:get_item(Host, Node, ItemId).
180
 
 
181
 
get_item(Host, Node, ItemId, JID, AccessModel, PresenceSubscription, RosterGroup, SubId) ->
182
 
    node_default:get_item(Host, Node, ItemId, JID, AccessModel, PresenceSubscription, RosterGroup, SubId).
 
179
    node_hometree:set_state(State).
 
180
 
 
181
get_items(NodeId, From) ->
 
182
    node_hometree:get_items(NodeId, From).
 
183
 
 
184
get_items(NodeId, JID, AccessModel, PresenceSubscription, RosterGroup, SubId) ->
 
185
    node_hometree:get_items(NodeId, JID, AccessModel, PresenceSubscription, RosterGroup, SubId).
 
186
 
 
187
get_item(NodeId, ItemId) ->
 
188
    node_hometree:get_item(NodeId, ItemId).
 
189
 
 
190
get_item(NodeId, ItemId, JID, AccessModel, PresenceSubscription, RosterGroup, SubId) ->
 
191
    node_hometree:get_item(NodeId, ItemId, JID, AccessModel, PresenceSubscription, RosterGroup, SubId).
183
192
 
184
193
set_item(Item) ->
185
 
    node_default:set_item(Item).
 
194
    node_hometree:set_item(Item).
 
195
 
 
196
get_item_name(Host, Node, Id) ->
 
197
    node_hometree:get_item_name(Host, Node, Id).
 
198
 
 
199
node_to_path(Node) ->
 
200
    node_flat:node_to_path(Node).
 
201
 
 
202
path_to_node(Path) ->
 
203
    node_flat:path_to_node(Path).
 
204