The Red Matrix
 All Classes Namespaces Files Functions Variables Pages
items.php File Reference

Functions

 collect_recipients ($item, &$private)
 
 can_comment_on_post ($observer_xchan, $item)
 
 add_source_route ($iid, $hash)
 
 red_zrl_callback ($matches)
 
 red_escape_zrl_callback ($matches)
 
 red_escape_codeblock ($m)
 
 red_unescape_codeblock ($m)
 
 post_activity_item ($arr)
 
 get_public_feed ($channel, $params)
 
 get_feed_for ($channel, $observer_hash, $params)
 
 construct_verb ($item)
 
 construct_activity_object ($item)
 
 construct_activity_target ($item)
 
 limit_body_size ($body)
 
 title_is_body ($title, $body)
 
 get_item_elements ($x)
 
 import_author_xchan ($x)
 
 import_author_rss ($x)
 
 encode_item ($item)
 
 map_scope ($scope)
 
 encode_item_xchan ($xchan)
 
 encode_item_terms ($terms)
 
 termtype ($t)
 
 decode_tags ($t)
 
 activity_sanitise ($arr)
 
 array_sanitise ($arr)
 
 encode_item_flags ($item)
 
 encode_mail ($item)
 
 get_mail_elements ($x)
 
 get_profile_elements ($x)
 
 get_atom_elements ($feed, $item)
 
 encode_rel_links ($links)
 
 item_store ($arr, $allow_exec=false)
 
 item_store_update ($arr, $allow_exec=false)
 
 send_status_notifications ($post_id, $item)
 
 get_item_contact ($item, $contacts)
 
 tag_deliver ($uid, $item_id)
 
 tgroup_check ($uid, $item)
 
 check_item_source ($uid, $item)
 
 mail_store ($arr)
 
 consume_feed ($xml, $importer, &$contact, &$hub, $datedir=0, $pass=0)
 
 atom_author ($tag, $name, $uri, $h, $w, $type, $photo)
 
 atom_entry ($item, $type, $author, $owner, $comment=false, $cid=0)
 
 fix_private_photos ($s, $uid, $item=null, $cid=0)
 
 has_permissions ($obj)
 
 compare_permissions ($obj1, $obj2)
 
 enumerate_permissions ($obj)
 
 item_getfeedtags ($item)
 
 item_getfeedattach ($item)
 
 item_expire ($uid, $days)
 
 retain_item ($id)
 
 drop_items ($items)
 
 drop_item ($id, $interactive=true, $stage=DROPITEM_NORMAL)
 
 delete_item_lowlevel ($item, $stage=DROPITEM_NORMAL)
 
 first_post_date ($uid, $wall=false)
 
 list_post_dates ($uid, $wall)
 
 posted_dates ($uid, $wall)
 
 fetch_post_tags ($items, $link=false)
 
 zot_feed ($uid, $observer_xchan, $mindate)
 
 items_fetch ($arr, $channel=null, $observer_hash=null, $client_mode=CLIENT_MODE_NORMAL, $module= 'network')
 
 update_remote_id ($channel, $post_id, $webpage, $pagetitle, $namespace, $remote_id, $mid)
 

Function Documentation

activity_sanitise (   $arr)
add_source_route (   $iid,
  $hash 
)

add_source_route($iid,$hash) Adds $hash to the item source route specified by $iid

Parameters
integer$iiditem['id'] of target item
string$hashxchan_hash of the channel that sent the item Modifies item pointed to by $iid

$item['route'] contains a comma-separated list of xchans that sent the current message, somewhat analogous to the * Received: header line in email. We can use this to perform loop detection and to avoid sending a particular item to any "upstream" sender (they already have a copy because they sent it to us).

Referenced by process_delivery().

array_sanitise (   $arr)

Referenced by get_profile_elements().

atom_author (   $tag,
  $name,
  $uri,
  $h,
  $w,
  $type,
  $photo 
)

Referenced by atom_entry().

atom_entry (   $item,
  $type,
  $author,
  $owner,
  $comment = false,
  $cid = 0 
)

Referenced by get_feed_for().

can_comment_on_post (   $observer_xchan,
  $item 
)

can_comment_on_post($observer_xchan,$item);

This function examines the comment_policy attached to an item and decides if the current observer has sufficient privileges to comment. This will normally be called on a remote site where perm_is_allowed() will not be suitable because the post owner does not have a local channel_id. Generally we should look at the item - in particular the author['book_flags'] and see if ABOOK_FLAG_SELF is set. If it is, you should be able to use perm_is_allowed( ... 'post_comments'), and if it isn't you need to call can_comment_on_post()

Referenced by Conversation\add_thread(), and item_post().

check_item_source (   $uid,
  $item 
)

check_item_source($uid,$item)

Parameters
$uid
$itemChecks to see if this item owner is referenced as a source for this channel and if the post matches the rules for inclusion in this channel. Returns true if we should create a second delivery chain and false if none of the rules apply, or if the item is private.

Referenced by tag_deliver().

collect_recipients (   $item,
$private 
)

Referenced by notifier_run().

compare_permissions (   $obj1,
  $obj2 
)

Referenced by fix_private_photos().

construct_activity_object (   $item)

Referenced by atom_entry().

construct_activity_target (   $item)

Referenced by atom_entry().

construct_verb (   $item)

Referenced by atom_entry().

consume_feed (   $xml,
  $importer,
$contact,
$hub,
  $datedir = 0,
  $pass = 0 
)

consume_feed - process atom feed and update anything/everything we might need to update

$xml = the (atom) feed to consume - RSS isn't as fully supported but may work for simple feeds.

$importer = the contact_record (joined to user_record) of the local user who owns this relationship. It is this person's stuff that is going to be updated. $contact = the person who is sending us stuff. If not set, we MAY be processing a "follow" activity from an external network and MAY create an appropriate contact record. Otherwise, we MUST have a contact record. $hub = should we find a hub declation in the feed, pass it back to our calling process, who might (or might not) try and subscribe to it. $datedir sorts in reverse order $pass - by default ($pass = 0) we cannot guarantee that a parent item has been imported prior to its children being seen in the stream unless we are certain of how the feed is arranged/ordered. With $pass = 1, we only pull parent items out of the stream. With $pass = 2, we only pull children (comments/likes).

So running this twice, first with pass 1 and then with pass 2 will do the right thing regardless of feed ordering. This won't be adequate in a fully-threaded model where comments can have sub-threads. That would require some massive sorting to get all the feed items into a mostly linear ordering, and might still require recursion.

decode_tags (   $t)

Referenced by get_item_elements().

delete_item_lowlevel (   $item,
  $stage = DROPITEM_NORMAL 
)

Referenced by drop_item().

drop_items (   $items)

Referenced by item_post().

encode_item (   $item)

Referenced by notifier_run(), and zot_feed().

encode_item_flags (   $item)

Referenced by encode_item().

encode_item_terms (   $terms)

Referenced by encode_item().

encode_item_xchan (   $xchan)

Referenced by encode_item(), and encode_mail().

encode_mail (   $item)

Referenced by notifier_run().

encode_rel_links (   $links)

Referenced by get_atom_elements().

enumerate_permissions (   $obj)
first_post_date (   $uid,
  $wall = false 
)

Referenced by list_post_dates(), and posted_dates().

fix_private_photos (   $s,
  $uid,
  $item = null,
  $cid = 0 
)

Referenced by atom_entry().

get_atom_elements (   $feed,
  $item 
)

If there's a copy of the body content which is guaranteed to have survived mangling in transit, use it.

Referenced by consume_feed().

get_feed_for (   $channel,
  $observer_hash,
  $params 
)

Referenced by get_public_feed().

get_item_contact (   $item,
  $contacts 
)
get_item_elements (   $x)
get_mail_elements (   $x)

Referenced by zot_import().

get_profile_elements (   $x)

Referenced by zot_import().

get_public_feed (   $channel,
  $params 
)

get_public_feed($channel,$params) generate an Atom feed

Referenced by feed_init().

has_permissions (   $obj)

Referenced by fix_private_photos().

import_author_rss (   $x)

Referenced by import_author_xchan().

import_author_xchan (   $x)
item_expire (   $uid,
  $days 
)

Referenced by expire_run().

item_getfeedattach (   $item)
item_getfeedtags (   $item)
item_store_update (   $arr,
  $allow_exec = false 
)
items_fetch (   $arr,
  $channel = null,
  $observer_hash = null,
  $client_mode = CLIENT_MODE_NORMAL,
  $module = 'network' 
)
limit_body_size (   $body)

Referenced by get_atom_elements().

list_post_dates (   $uid,
  $wall 
)

modified posted_dates() {below} to arrange the list in years, which we'll eventually use to make a menu of years with collapsible sub-menus for the months instead of the current flat list of all representative dates.

Referenced by widget_archive().

mail_store (   $arr)

Referenced by process_mail_delivery().

map_scope (   $scope)
post_activity_item (   $arr)

post_activity_item($arr)

post an activity
Parameters
array$arrIn its simplest form one needs only to set $arr['body'] to post a note to the logged in channel's wall. Much more complex activities can be created. Permissions are checked. No filtering, tag expansion or other processing is performed.
Returns
array 'success' => true or false 'activity' => the resulting activity if successful

Referenced by api_channel_stream(), poke_init(), tagger_content(), and thing_init().

posted_dates (   $uid,
  $wall 
)
red_escape_codeblock (   $m)
red_escape_zrl_callback (   $matches)
red_unescape_codeblock (   $m)
red_zrl_callback (   $matches)

red_zrl_callback preg_match function when fixing 'naked' links in mod item.php Check if we've got a hubloc for the site and use a zrl if we do, a url if we don't. Remove any existing zid= param which may have been pasted by mistake - and will have the author's credentials. zid's are dynamic and can't really be passed around like that.

retain_item (   $id)

Referenced by item_expire().

send_status_notifications (   $post_id,
  $item 
)

Referenced by item_store(), and item_store_update().

tag_deliver (   $uid,
  $item_id 
)
termtype (   $t)

Referenced by encode_item_terms().

tgroup_check (   $uid,
  $item 
)

Referenced by consume_feed(), and process_delivery().

title_is_body (   $title,
  $body 
)

Referenced by get_atom_elements().

update_remote_id (   $channel,
  $post_id,
  $webpage,
  $pagetitle,
  $namespace,
  $remote_id,
  $mid 
)

Referenced by item_post().

zot_feed (   $uid,
  $observer_xchan,
  $mindate 
)

Referenced by zotfeed_init().