1 |
<?php |
2 |
// vim: ts=4 foldcolumn=4 foldmethod=marker |
3 |
/** |
4 |
* RF_Userdata_Controller class found here. |
5 |
* |
6 |
* This file is part of Reblog, |
7 |
* a derivative work of Feed On Feeds. |
8 |
* |
9 |
* Distributed under the Gnu Public License. |
10 |
* |
11 |
* @package Refeed |
12 |
* @license http://opensource.org/licenses/gpl-license.php GNU Public License |
13 |
* @author Michal Migurski <mike@stamen.com> |
14 |
* @author Michael Frumin <mfrumin@eyebeam.org> |
15 |
* @copyright ©2004 Michael Frumin, Michal Migurski |
16 |
* @link http://reblog.org Reblog |
17 |
* @link http://feedonfeeds.com Feed On Feeds |
18 |
* @version $Revision: 1.12 $ |
19 |
*/ |
20 |
|
21 |
/** |
22 |
* RF_Userdata_Controller is an interface for accessing feed & item |
23 |
* per-user data. |
24 |
* |
25 |
* Methods accessed from a client via JSON-RPC are looked-for |
26 |
* here first, so this class acts as a public API. |
27 |
* {@link call.php Call.php} is the JSON-RPC endpoint. |
28 |
*/ |
29 |
class RF_Userdata_Controller |
30 |
{ |
31 |
/** |
32 |
* Reference to operative controller object. |
33 |
* @var RF_Controller |
34 |
*/ |
35 |
var $controller; |
36 |
|
37 |
/** |
38 |
* Reference to operative user object. |
39 |
* @var RF_User |
40 |
*/ |
41 |
var $user; |
42 |
|
43 |
/** |
44 |
* @param RF_Controller $controller - |
45 |
* @param RF_User $user - |
46 |
* |
47 |
* @uses RF_Userdata_Controller::$controller Assigned on instantiation, from {@link RF_Controller $controller}. |
48 |
* @uses RF_Userdata_Controller::$user Assigned on instantiation, from {@link RF_User $user}. |
49 |
*/ |
50 |
function RF_Userdata_Controller(&$controller, &$user) |
51 |
{ |
52 |
if(strtolower(get_class($controller)) != strtolower('RF_Controller')) |
53 |
die("RF_Userdata_Controller must be instantiated with an RF_Controller."); |
54 |
|
55 |
$this->controller =& $controller; |
56 |
$this->user =& $user; |
57 |
} |
58 |
|
59 |
/** |
60 |
* Set an item's comment and tags |
61 |
* |
62 |
* @param RF_Item $item - |
63 |
* @param string $comment Comment text |
64 |
* @param array $tags Array of tags |
65 |
* @return boolean True |
66 |
* |
67 |
* @uses RF_Controller::setItemUserdata() |
68 |
* @uses RF_Userdata_Controller::setItemTags() |
69 |
* @uses RF_Controller::invokePlugin() "setItemCommentTags" event, |
70 |
* parameters: {@link RF_User $user}, {@link RF_Item $item}, $comment, array $tags. |
71 |
*/ |
72 |
function setItemCommentTags(&$item, $comment, $tags) |
73 |
{ |
74 |
$this->controller->setItemUserdata($item, $this->user, 'comment', $comment, 'long'); |
75 |
$this->setItemTags($item, $tags); |
76 |
|
77 |
$this->controller->invokePlugin('setItemCommentTags', array(&$this->user, &$item, &$comment, &$tags)); |
78 |
return true; |
79 |
} |
80 |
|
81 |
/** |
82 |
* Set an item's tags |
83 |
* |
84 |
* @param RF_Item $item - |
85 |
* @param array $tags Array of tags |
86 |
* @return boolean True |
87 |
* |
88 |
* @uses RF_Controller::setItemUserdata() |
89 |
* @uses RF_Controller::invokePlugin() "setItemTags" event, |
90 |
* parameters: {@link RF_User $user}, {@link RF_Item $item}, array $tags. |
91 |
*/ |
92 |
function setItemTags(&$item, $tags) |
93 |
{ |
94 |
foreach($tags as $t => $tag) |
95 |
if(empty($tag)) |
96 |
unset($tags[$t]); |
97 |
|
98 |
$tags = array_unique($tags); |
99 |
|
100 |
// set the tags in two ways: once as separate table rows in |
101 |
// a varchar field, for search, and again as one long |
102 |
// space-delimited string in a text field for lack of |
103 |
// GROUP_CONCAT() in MySQL 3 |
104 |
$this->controller->setItemUserdata($item, $this->user, 'tag', $tags, 'short'); |
105 |
$this->controller->setItemUserdata($item, $this->user, 'tags', join(' ', $tags), 'long'); |
106 |
|
107 |
$this->controller->invokePlugin('setItemTags', array(&$this->user, &$item, &$tags)); |
108 |
return true; |
109 |
} |
110 |
|
111 |
/** |
112 |
* Set a feed's tags |
113 |
* |
114 |
* @param RF_Feed $feed - |
115 |
* @param array $tags Array of tags |
116 |
* @return boolean True |
117 |
* |
118 |
* @uses RF_Controller::setFeedUserdata() |
119 |
* @uses RF_Controller::getUserItems() |
120 |
* @uses RF_Controller::getItemUserdata() |
121 |
* @uses RF_Userdata_Controller::setItemTags() |
122 |
* @uses RF_Controller::setItemUserdata() |
123 |
* @uses RF_Controller::invokePlugin() "setFeedTags" event, |
124 |
* parameters: {@link RF_User $user}, {@link RF_feed $feed}, array $tags. |
125 |
*/ |
126 |
function setFeedTags(&$feed, $tags) |
127 |
{ |
128 |
foreach($tags as $t => $tag) |
129 |
if(empty($tag)) |
130 |
unset($tags[$t]); |
131 |
|
132 |
$tags = array_unique($tags); |
133 |
|
134 |
// set the tags in two ways: once as separate table rows in |
135 |
// a varchar field, for search, and again as one long |
136 |
// space-delimited string in a text field for lack of |
137 |
// GROUP_CONCAT() in MySQL 3 |
138 |
$this->controller->setFeedUserdata($feed, $this->user, 'tag', $tags, 'short'); |
139 |
$this->controller->setFeedUserdata($feed, $this->user, 'tags', join(' ', $tags), 'long'); |
140 |
|
141 |
$this->controller->invokePlugin('setFeedTags', array(&$this->user, &$feed, &$tags)); |
142 |
return true; |
143 |
} |
144 |
|
145 |
/** |
146 |
* Set an item's title, link and content |
147 |
* |
148 |
* @param RF_Item $item - |
149 |
* @param string $title Title text |
150 |
* @param mixed $content Content text |
151 |
* @param mixed $link URL |
152 |
* @return boolean True |
153 |
* |
154 |
* @uses RF_Controller::setItemUserdata() |
155 |
* @uses RF_Controller::invokePlugin() "setItemTitleContentLink" event, |
156 |
* parameters: {@link RF_User $user}, {@link RF_Item $item}, $title, $content, $link. |
157 |
*/ |
158 |
function setItemTitleContentLink(&$item, $title, $content, $link) |
159 |
{ |
160 |
$this->controller->setItemUserdata($item, $this->user, 'title', $title, 'long'); |
161 |
$this->controller->setItemUserdata($item, $this->user, 'content', $content, 'long'); |
162 |
$this->controller->setItemUserdata($item, $this->user, 'link', $link, 'long'); |
163 |
|
164 |
$this->controller->invokePlugin('setItemTitleContentLink', array(&$this->user, &$item, &$title, &$content, &$link)); |
165 |
return true; |
166 |
} |
167 |
|
168 |
/** |
169 |
* Set an item's title and content |
170 |
* |
171 |
* @param RF_Item $item - |
172 |
* @param string $link URL of intended link |
173 |
* @return boolean True |
174 |
* |
175 |
* @uses RF_Controller::setItemUserdata() |
176 |
* @uses RF_Controller::invokePlugin() "setItemLink" event, |
177 |
* parameters: {@link RF_User $user}, {@link RF_Item $item}, $link. |
178 |
*/ |
179 |
function setItemLink(&$item, $link) |
180 |
{ |
181 |
$this->controller->setItemUserdata($item, $this->user, 'link', $link, 'long'); |
182 |
|
183 |
$this->controller->invokePlugin('setItemLink', array(&$this->user, &$item, &$link)); |
184 |
return true; |
185 |
} |
186 |
|
187 |
/** |
188 |
* Mark an item as read |
189 |
* |
190 |
* @param RF_Item $item - |
191 |
* @return boolean True |
192 |
* |
193 |
* @uses RF_Controller::setItemUserdata() |
194 |
* @uses RF_Controller::getUserItem() |
195 |
* @uses RF_Controller::freshenUserFeedUsage() |
196 |
* @uses RF_Controller::invokePlugin() "markedItemRead" event, |
197 |
* parameters: {@link RF_User $user}, {@link RF_Item $item}. |
198 |
*/ |
199 |
function markItemRead(&$item) |
200 |
{ |
201 |
$this->controller->setItemUserdata($item, $this->user, 'read', 1, 'numeric'); |
202 |
$item->read = 1; |
203 |
|
204 |
if(!is_object($item->feed)) |
205 |
$item = $this->controller->getUserItem($this->user, $item); |
206 |
|
207 |
$this->controller->freshenUserFeedUsage($this->user, $item->feed); |
208 |
|
209 |
$this->controller->invokePlugin('markedItemRead', array(&$this->user, &$item)); |
210 |
return true; |
211 |
} |
212 |
|
213 |
/** |
214 |
* Mark several items as read |
215 |
* |
216 |
* @param array $items Array of {@link RF_Item items} |
217 |
* @return boolean True |
218 |
* |
219 |
* @see RF_Item::RF_Item() |
220 |
* @uses RF_Controller::setItemsUserdata() |
221 |
* @uses RF_Controller::getUserItem() |
222 |
* @uses RF_Controller::freshenUserFeedUsage() |
223 |
* @uses RF_Controller::invokePlugin() "markedItemsRead" event, |
224 |
* parameters: {@link RF_User $user}, array {@link RF_Item $items}. |
225 |
*/ |
226 |
function markItemsRead($items) |
227 |
{ |
228 |
$this->controller->setItemsUserdata($items, $this->user, 'read', 1, 'numeric'); |
229 |
|
230 |
$feeds = array(); |
231 |
|
232 |
foreach($items as $i => $item) { |
233 |
$items[$i]->read = 1; |
234 |
|
235 |
if(!is_object($item->feed)) |
236 |
$item = $this->controller->getUserItem($this->user, $item); |
237 |
|
238 |
$feeds[$item->feed->getID()] = $item->feed; |
239 |
} |
240 |
|
241 |
foreach($feeds as $f => $feed) |
242 |
$this->controller->freshenUserFeedUsage($this->user, $feed); |
243 |
|
244 |
$this->controller->invokePlugin('markedItemsRead', array(&$this->user, &$items)); |
245 |
return true; |
246 |
} |
247 |
|
248 |
/** |
249 |
* Mark all items in a feed as read |
250 |
* |
251 |
* @param RF_Feed $feed - |
252 |
* @return boolean True |
253 |
* |
254 |
* @uses RF_Controller::getUserItems() |
255 |
* @uses RF_Controller::freshenUserFeedUsage() |
256 |
* @uses RF_Userdata_Controller::markItemsRead() |
257 |
*/ |
258 |
function markFeedRead(&$feed) |
259 |
{ |
260 |
if($items = $this->controller->getUserItems($this->user, array('feed' => $feed->getID()))) |
261 |
$this->markItemsRead($items); |
262 |
|
263 |
$this->controller->freshenUserFeedUsage($this->user, $feed); |
264 |
|
265 |
return true; |
266 |
} |
267 |
|
268 |
/** |
269 |
* Mark an item as unread |
270 |
* |
271 |
* @param RF_Item $item - |
272 |
* @return boolean True |
273 |
* |
274 |
* @uses RF_Controller::setItemUserdata() |
275 |
* @uses RF_Controller::getUserItem() |
276 |
* @uses RF_Controller::freshenUserFeedUsage() |
277 |
* @uses RF_Controller::invokePlugin() "markedItemUnread" event, |
278 |
* parameters: {@link RF_User $user}, {@link RF_Item $item}. |
279 |
*/ |
280 |
function markItemUnread(&$item) |
281 |
{ |
282 |
$this->controller->setItemUserdata($item, $this->user, 'read', 0, 'numeric'); |
283 |
$item->read = 0; |
284 |
|
285 |
if(!is_object($item->feed)) |
286 |
$item = $this->controller->getUserItem($this->user, $item); |
287 |
|
288 |
$this->controller->freshenUserFeedUsage($this->user, $item->feed); |
289 |
|
290 |
$this->controller->invokePlugin('markedItemUnread', array(&$this->user, &$item)); |
291 |
return true; |
292 |
} |
293 |
|
294 |
|
295 |
/** |
296 |
* Mark all items in a feed as unread |
297 |
* |
298 |
* @param RF_Feed $feed - |
299 |
* @return boolean True |
300 |
* |
301 |
* @uses RF_Controller::getUserItems() |
302 |
* @uses RF_Controller::freshenUserFeedUsage() |
303 |
* @uses RF_Userdata_Controller::markItemsRead() |
304 |
*/ |
305 |
function markFeedUnread(&$feed) |
306 |
{ |
307 |
if($items = $this->controller->getUserItems($this->user, array('feed' => $feed->getID()))) |
308 |
$this->markItemsUnread($items); |
309 |
|
310 |
$this->controller->freshenUserFeedUsage($this->user, $feed); |
311 |
|
312 |
return true; |
313 |
} |
314 |
|
315 |
/** |
316 |
* Mark several items as unread |
317 |
* |
318 |
* @param array $items Array of {@link RF_Item items} |
319 |
* @return boolean True |
320 |
* |
321 |
* @see RF_Item::RF_Item() |
322 |
* @uses RF_Controller::setItemsUserdata() |
323 |
* @uses RF_Controller::getUserItem() |
324 |
* @uses RF_Controller::freshenUserFeedUsage() |
325 |
* @uses RF_Controller::invokePlugin() "markedItemsUnread" event, |
326 |
* parameters: {@link RF_User $user}, array {@link RF_Item $items}. |
327 |
*/ |
328 |
function markItemsUnread($items) |
329 |
{ |
330 |
$this->controller->setItemsUserdata($items, $this->user, 'read', 0, 'numeric'); |
331 |
|
332 |
$feeds = array(); |
333 |
|
334 |
foreach($items as $i => $item) { |
335 |
$items[$i]->read = 0; |
336 |
|
337 |
if(!is_object($item->feed)) |
338 |
$item = $this->controller->getUserItem($this->user, $item); |
339 |
|
340 |
$feeds[$item->feed->getID()] = $item->feed; |
341 |
} |
342 |
|
343 |
foreach($feeds as $f => $feed) |
344 |
$this->controller->freshenUserFeedUsage($this->user, $feed); |
345 |
|
346 |
$this->controller->invokePlugin('markedItemsUnread', array(&$this->user, &$items)); |
347 |
return true; |
348 |
} |
349 |
|
350 |
/** |
351 |
* Mark an item as published |
352 |
* |
353 |
* @param RF_Item $item - |
354 |
* @return boolean True |
355 |
* |
356 |
* @uses RF_Controller::setItemUserdata() |
357 |
* @uses RF_Controller::getUserItem() |
358 |
* @uses RF_Controller::freshenUserFeedUsage() |
359 |
* @uses RF_Controller::invokePlugin() "markedItemPublished" event, |
360 |
* parameters: {@link RF_User $user}, {@link RF_Item $item}. |
361 |
*/ |
362 |
function markItemPublished(&$item) |
363 |
{ |
364 |
$this->controller->setItemUserdata($item, $this->user, 'published', 1, 'numeric'); |
365 |
$item->published = 1; |
366 |
|
367 |
if(!is_object($item->feed)) |
368 |
$item = $this->controller->getUserItem($this->user, $item); |
369 |
|
370 |
$this->controller->freshenUserFeedUsage($this->user, $item->feed); |
371 |
|
372 |
$this->controller->invokePlugin('markedItemPublished', array(&$this->user, &$item)); |
373 |
return true; |
374 |
} |
375 |
|
376 |
/** |
377 |
* Mark several items as published |
378 |
* |
379 |
* @param array $items Array of {@link RF_Item items} |
380 |
* @return boolean True |
381 |
* |
382 |
* @see RF_Item::RF_Item() |
383 |
* @uses RF_Controller::setItemsUserdata() |
384 |
* @uses RF_Controller::getUserItem() |
385 |
* @uses RF_Controller::freshenUserFeedUsage() |
386 |
* @uses RF_Controller::invokePlugin() "markedItemsPublished" event, |
387 |
* parameters: {@link RF_User $user}, array {@link RF_Item $items}. |
388 |
*/ |
389 |
function markItemsPublished($items) |
390 |
{ |
391 |
$this->controller->setItemsUserdata($items, $this->user, 'published', 1, 'numeric'); |
392 |
|
393 |
$feeds = array(); |
394 |
|
395 |
foreach($items as $i => $item) { |
396 |
$items[$i]->published = 1; |
397 |
|
398 |
if(!is_object($item->feed)) |
399 |
$item = $this->controller->getUserItem($this->user, $item); |
400 |
|
401 |
$feeds[$item->feed->getID()] = $item->feed; |
402 |
} |
403 |
|
404 |
foreach($feeds as $f => $feed) |
405 |
$this->controller->freshenUserFeedUsage($this->user, $feed); |
406 |
|
407 |
$this->controller->invokePlugin('markedItemsPublished', array(&$this->user, &$items)); |
408 |
return true; |
409 |
} |
410 |
|
411 |
/** |
412 |
* Mark an item as unpublished |
413 |
* |
414 |
* @param RF_Item $item - |
415 |
* @return boolean True |
416 |
* |
417 |
* @uses RF_Controller::setItemUserdata() |
418 |
* @uses RF_Controller::getUserItem() |
419 |
* @uses RF_Controller::freshenUserFeedUsage() |
420 |
* @uses RF_Controller::invokePlugin() "markedItemUnpublished" event, |
421 |
* parameters: {@link RF_User $user}, {@link RF_Item $item}. |
422 |
*/ |
423 |
function markItemUnpublished(&$item) |
424 |
{ |
425 |
$this->controller->setItemUserdata($item, $this->user, 'published', 0, 'numeric'); |
426 |
$item->published = 0; |
427 |
|
428 |
if(!is_object($item->feed)) |
429 |
$item = $this->controller->getUserItem($this->user, $item); |
430 |
|
431 |
$this->controller->freshenUserFeedUsage($this->user, $item->feed); |
432 |
|
433 |
$this->controller->invokePlugin('markedItemUnpublished', array(&$this->user, &$item)); |
434 |
return true; |
435 |
} |
436 |
|
437 |
/** |
438 |
* Mark a feed as published |
439 |
* |
440 |
* @param RF_Feed $feed - |
441 |
* @return boolean True |
442 |
* |
443 |
* @uses RF_Controller::setFeedUserdata() |
444 |
* @uses RF_Controller::freshenUserFeedUsage() |
445 |
* @uses RF_Controller::invokePlugin() "markedFeedPublished" event, |
446 |
* parameters: {@link RF_User $user}, {@link RF_Feed $feed}. |
447 |
*/ |
448 |
function markFeedPublished(&$feed) |
449 |
{ |
450 |
$this->controller->setFeedUserdata($feed, $this->user, 'published', 1, 'numeric'); |
451 |
$feed->published = 1; |
452 |
|
453 |
$this->controller->freshenUserFeedUsage($this->user, $feed); |
454 |
|
455 |
$this->controller->invokePlugin('markedFeedPublished', array(&$this->user, &$feed)); |
456 |
return true; |
457 |
} |
458 |
|
459 |
/** |
460 |
* Mark a feed as unpublished |
461 |
* |
462 |
* @param RF_Feed $feed - |
463 |
* @return boolean True |
464 |
* |
465 |
* @uses RF_Controller::setFeedUserdata() |
466 |
* @uses RF_Controller::freshenUserFeedUsage() |
467 |
* @uses RF_Controller::invokePlugin() "markedFeedUnpublished" event, |
468 |
* parameters: {@link RF_User $user}, {@link RF_Feed $feed}. |
469 |
*/ |
470 |
function markFeedUnpublished(&$feed) |
471 |
{ |
472 |
$this->controller->setFeedUserdata($feed, $this->user, 'published', 0, 'numeric'); |
473 |
$feed->published = 0; |
474 |
|
475 |
$this->controller->freshenUserFeedUsage($this->user, $feed); |
476 |
|
477 |
$this->controller->invokePlugin('markedFeedUnpublished', array(&$this->user, &$feed)); |
478 |
return true; |
479 |
} |
480 |
|
481 |
/** |
482 |
* Post a new item |
483 |
* |
484 |
* @param array $item_args Array of new item properties. |
485 |
* Possible keys: |
486 |
* - "title" - Title of new item, required. |
487 |
* - "link" - Link for new item, required. |
488 |
* - "content" - Content of new item, required. |
489 |
* - "tags" - Space-delimited list of item tags, optional. |
490 |
* - "feed_id" - numeric feed ID; leave this blank in almost all cases. |
491 |
* - "modified" - modification timestamp; leave blank for "now". |
492 |
* - "guid" - globally unique identifier; leave this blank in almost all cases. |
493 |
* @param array $user_data Optional array of metadata. |
494 |
* Each element should be an associative array of the form: |
495 |
* {'label': ..., 'value': ..., 'format': ...} |
496 |
* @return RF_Item Instance of RF_Item |
497 |
* |
498 |
* @uses RF_Item::RF_Item() |
499 |
* @uses RF_Feed::RF_Feed() |
500 |
* @uses RF_Controller::itemExistsWithGUID() |
501 |
* @uses RF_Controller::saveItem() |
502 |
* @uses RF_Userdata_Controller::markItemRead() |
503 |
* @uses RF_Userdata_Controller::markItemPublished() |
504 |
* @uses RF_Controller::setItemUserdata() |
505 |
* @uses RF_Controller::invokePlugin() "postedItem" event, |
506 |
* parameters: {@link RF_User $user}, {@link RF_Item $item}. |
507 |
* @uses RF_Userdata_Controller::setItemTags() |
508 |
*/ |
509 |
function postItem($item_args, $user_data=null) |
510 |
{ |
511 |
// zero is the conventional feed ID for these feedless items |
512 |
$item_args['feed_id'] = empty($item_args['feed_id']) |
513 |
? 0 |
514 |
: $item_args['feed_id']; |
515 |
|
516 |
// it's modified now |
517 |
$item_args['modified'] = empty($item_args['modified']) |
518 |
? time() |
519 |
: $item_args['modified']; |
520 |
|
521 |
// basing the inserted GUID on title, link and content should cover all sorts of uniqueness |
522 |
$item_args['guid'] = empty($item_args['guid']) |
523 |
? get_configured_guid_prefix().md5(join('-', array($item_args['title'], $item_args['link'], $item_args['content']))) |
524 |
: $item_args['guid']; |
525 |
|
526 |
$item = new RF_Item($item_args); |
527 |
$feed = new RF_Feed(array('id' => $item_args['feed_id'])); |
528 |
|
529 |
if($item_existing = $GLOBALS['REBLOG_CONTROLLER']->itemExistsWithGUID($feed, $item_args['guid'])) |
530 |
$item->setID($item_existing->getID()); |
531 |
|
532 |
$this->controller->saveItem($item); |
533 |
|
534 |
// they're old and published by default |
535 |
$this->markItemRead($item); |
536 |
$this->markItemPublished($item); |
537 |
|
538 |
$user_data = is_array($user_data) |
539 |
? $user_data |
540 |
: array(); |
541 |
|
542 |
// by default, there is one user datum needed here: self = 1 for self-published items. |
543 |
$user_data[] = array('label' => 'self', 'value' => 1, 'format' => 'numeric'); |
544 |
|
545 |
// other user data may be passed as arguments, in this form: |
546 |
// {'label': ..., 'value': ..., 'format': ...} |
547 |
foreach($user_data as $user_datum) |
548 |
$this->controller->setItemUserdata($item, $this->user, $user_datum['label'], $user_datum['value'], $user_datum['format']); |
549 |
|
550 |
$this->controller->invokePlugin('postedItem', array(&$this->user, &$item)); |
551 |
|
552 |
// tags may be set after the postedItem plugin is invoked because this invokes its own plugin action |
553 |
if(!empty($item_args['tags'])) |
554 |
$this->setItemTags($item, preg_split('/\s+/', $item_args['tags'])); |
555 |
|
556 |
return $item; |
557 |
} |
558 |
|
559 |
/** |
560 |
* Toggle keyboard usage flag. |
561 |
* |
562 |
* @param boolean $use Turn keyboard usage on (true) and off (false) |
563 |
* @return boolean True |
564 |
* |
565 |
* @uses RF_Controller::invokePlugin() "setKeyboardUse" event, |
566 |
* parameters: {@link RF_User $user}, $use. |
567 |
*/ |
568 |
function setKeyboardUse($use) |
569 |
{ |
570 |
$this->controller->invokePlugin('setKeyboardUse', array(&$this->user, &$use)); |
571 |
|
572 |
$this->user->keyboardActive($use); |
573 |
|
574 |
return true; |
575 |
} |
576 |
|
577 |
/** |
578 |
* Retrieve item body HTML |
579 |
* |
580 |
* @param RF_Item $item - |
581 |
* @return string String of HTML representing item's body as defined by template |
582 |
* |
583 |
* @uses RF_Controller::getUserItems() |
584 |
*/ |
585 |
function itemBodyHTML(&$item) |
586 |
{ |
587 |
$args = array('item' => $item->getID(), 'metadata' => $this->controller->prepareUserdataArguments(array())); |
588 |
$item = reset($this->controller->getUserItems($this->user, $args)); |
589 |
$GLOBALS['REBLOG_VIEW']->assign('item', $item); |
590 |
|
591 |
return $GLOBALS['REBLOG_VIEW']->fetch('fragment-item-body.tpl'); |
592 |
} |
593 |
|
594 |
/** |
595 |
* Retrieve item head HTML |
596 |
* |
597 |
* @param RF_Item $item - |
598 |
* @return string String of HTML representing item's head as defined by template |
599 |
* |
600 |
* @uses RF_Controller::getUserItems() |
601 |
*/ |
602 |
function itemHeadHTML(&$item) |
603 |
{ |
604 |
$args = array('item' => $item->getID(), 'metadata' => $this->controller->prepareUserdataArguments(array())); |
605 |
$item = reset($this->controller->getUserItems($this->user, $args)); |
606 |
$GLOBALS['REBLOG_VIEW']->assign('item', $item); |
607 |
|
608 |
return $GLOBALS['REBLOG_VIEW']->fetch('fragment-item-head.tpl'); |
609 |
} |
610 |
|
611 |
/** |
612 |
* Retrieve item edit form HTML |
613 |
* |
614 |
* @param RF_Item $item - |
615 |
* @return string String of HTML representing item's body as defined by template |
616 |
* |
617 |
* @uses ref_find_links() |
618 |
* @uses RF_Controller::getUserItems() |
619 |
* @uses RF_Controller::getItemUserdata() |
620 |
*/ |
621 |
function itemEditFormHTML(&$item) |
622 |
{ |
623 |
$args = array('item' => $item->getID(), 'metadata' => $this->controller->prepareUserdataArguments(array())); |
624 |
$item = reset($this->controller->getUserItems($this->user, $args)); |
625 |
|
626 |
$item->metadata['links'] = ref_find_links($item->content); |
627 |
$item->metadata['tags'] = join(', ', $this->controller->getItemUserdata($item, $this->user, 'tag', 'short')); |
628 |
|
629 |
$GLOBALS['REBLOG_VIEW']->assign('item', $item); |
630 |
|
631 |
return $GLOBALS['REBLOG_VIEW']->fetch('form-item-edit.tpl'); |
632 |
} |
633 |
|
634 |
/** |
635 |
* Retrieve item comment form HTML |
636 |
* |
637 |
* @param RF_Item $item - |
638 |
* @return string String of HTML representing item's body as defined by template |
639 |
* |
640 |
* @uses ref_find_links() |
641 |
* @uses RF_Controller::getUserItems() |
642 |
* @uses RF_Controller::getItemUserdata() |
643 |
*/ |
644 |
function itemCommentFormHTML(&$item) |
645 |
{ |
646 |
$args = array('item' => $item->getID(), 'metadata' => $this->controller->prepareUserdataArguments(array())); |
647 |
$item = reset($this->controller->getUserItems($this->user, $args)); |
648 |
|
649 |
$item->metadata['links'] = ref_find_links($item->content); |
650 |
$item->metadata['tags'] = $this->controller->getItemUserdata($item, $this->user, 'tag', 'short'); |
651 |
|
652 |
$GLOBALS['REBLOG_VIEW']->assign('item', $item); |
653 |
|
654 |
return $GLOBALS['REBLOG_VIEW']->fetch('form-item-comment.tpl'); |
655 |
} |
656 |
|
657 |
/** |
658 |
* Retrieve feed subscription form HTML |
659 |
* |
660 |
* @param RF_Feed $feed - |
661 |
* @return string String of HTML representing feed's body as defined by template |
662 |
* |
663 |
* @uses RF_Controller::getUserFeeds() |
664 |
*/ |
665 |
function feedSubscriptionFormHTML(&$feed) |
666 |
{ |
667 |
$feed = reset($this->controller->getUserFeeds($this->user, array('feed' => $feed->getID()))); |
668 |
|
669 |
$GLOBALS['REBLOG_VIEW']->assign('feed', $feed); |
670 |
|
671 |
return $GLOBALS['REBLOG_VIEW']->fetch('form-feed-subscription.tpl'); |
672 |
} |
673 |
|
674 |
/** |
675 |
* Retrieve feed tags form HTML |
676 |
* |
677 |
* @param RF_Feed $feed - |
678 |
* @return string String of HTML representing feed's body as defined by template |
679 |
* |
680 |
* @uses RF_Controller::getUserFeeds() |
681 |
*/ |
682 |
function feedTagsFormHTML(&$feed) |
683 |
{ |
684 |
$feed = reset($this->controller->getUserFeeds($this->user, array('feed' => $feed->getID()))); |
685 |
$feed->metadata['tags'] = $this->controller->getFeedUserdata($feed, $this->user, 'tag', 'short'); |
686 |
|
687 |
$GLOBALS['REBLOG_VIEW']->assign('feed', $feed); |
688 |
|
689 |
return $GLOBALS['REBLOG_VIEW']->fetch('form-feed-tags.tpl'); |
690 |
} |
691 |
|
692 |
/** |
693 |
* Retrieve feed publish form HTML |
694 |
* |
695 |
* @param RF_Feed $feed - |
696 |
* @return string String of HTML representing feed's body as defined by template |
697 |
* |
698 |
* @uses RF_Controller::getUserFeeds() |
699 |
*/ |
700 |
function feedPublishFormHTML(&$feed) |
701 |
{ |
702 |
$feed = reset($this->controller->getUserFeeds($this->user, array('feed' => $feed->getID()))); |
703 |
$feed->metadata['tags'] = $this->controller->getFeedUserdata($feed, $this->user, 'tag', 'short'); |
704 |
|
705 |
$GLOBALS['REBLOG_VIEW']->assign('feed', $feed); |
706 |
|
707 |
return $GLOBALS['REBLOG_VIEW']->fetch('form-feed-publish.tpl'); |
708 |
} |
709 |
} |
710 |
|
711 |
?> |