Merge branch 'route'

This commit is contained in:
friendica 2014-03-31 16:30:04 -07:00
commit 03c53502cb
5 changed files with 57 additions and 14 deletions

View File

@ -47,7 +47,7 @@ define ( 'RED_PLATFORM', 'Red Matrix' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R'); define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R');
define ( 'ZOT_REVISION', 1 ); define ( 'ZOT_REVISION', 1 );
define ( 'DB_UPDATE_VERSION', 1104 ); define ( 'DB_UPDATE_VERSION', 1105 );
define ( 'EOL', '<br />' . "\r\n" ); define ( 'EOL', '<br />' . "\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );

View File

@ -81,6 +81,19 @@ function collect_recipients($item,&$private) {
$recipients = check_list_permissions($item['uid'],$recipients,'view_stream'); $recipients = check_list_permissions($item['uid'],$recipients,'view_stream');
// remove any upstream recipients from our list.
// If it is ourself we'll add it back in a second.
// This should prevent complex delivery chains from getting overly complex by not
// sending to anybody who is on our list of those who sent it to us.
if($item['route']) {
$route = explode(',',$item['route']);
if(count($route)) {
$route = array_unique($route);
$recipients = array_diff($recipients,$route);
}
}
// add ourself just in case we have nomadic clones that need to get a copy. // add ourself just in case we have nomadic clones that need to get a copy.
$recipients[] = $item['author_xchan']; $recipients[] = $item['author_xchan'];
@ -141,6 +154,23 @@ function can_comment_on_post($observer_xchan,$item) {
} }
function add_source_route($iid,$hash) {
if((! $iid) || (! $route))
return;
$r = q("select route from item where id = %d limit 1",
intval($iid)
);
if($r) {
$new_route = (($r[0]['route']) ? $r[0]['route'] . ',' : '') . $hash;
q("update item set route = '%s' where id = %d limit 1",
(dbesc($new_route)),
intval($iid)
);
}
}
/** /**
* @function red_zrl_callback * @function red_zrl_callback
* preg_match function when fixing 'naked' links in mod item.php * preg_match function when fixing 'naked' links in mod item.php
@ -636,6 +666,7 @@ function get_item_elements($x) {
$arr['app'] = (($x['app']) ? htmlspecialchars($x['app'], ENT_COMPAT,'UTF-8',false) : ''); $arr['app'] = (($x['app']) ? htmlspecialchars($x['app'], ENT_COMPAT,'UTF-8',false) : '');
$arr['route'] = (($x['route']) ? htmlspecialchars($x['route'], ENT_COMPAT,'UTF-8',false) : '');
$arr['mid'] = (($x['message_id']) ? htmlspecialchars($x['message_id'], ENT_COMPAT,'UTF-8',false) : ''); $arr['mid'] = (($x['message_id']) ? htmlspecialchars($x['message_id'], ENT_COMPAT,'UTF-8',false) : '');
$arr['parent_mid'] = (($x['message_top']) ? htmlspecialchars($x['message_top'], ENT_COMPAT,'UTF-8',false) : ''); $arr['parent_mid'] = (($x['message_top']) ? htmlspecialchars($x['message_top'], ENT_COMPAT,'UTF-8',false) : '');
$arr['thr_parent'] = (($x['message_parent']) ? htmlspecialchars($x['message_parent'], ENT_COMPAT,'UTF-8',false) : ''); $arr['thr_parent'] = (($x['message_parent']) ? htmlspecialchars($x['message_parent'], ENT_COMPAT,'UTF-8',false) : '');
@ -647,7 +678,7 @@ function get_item_elements($x) {
$arr['mimetype'] = (($x['mimetype']) ? htmlspecialchars($x['mimetype'], ENT_COMPAT,'UTF-8',false) : ''); $arr['mimetype'] = (($x['mimetype']) ? htmlspecialchars($x['mimetype'], ENT_COMPAT,'UTF-8',false) : '');
$arr['obj_type'] = (($x['object_type']) ? htmlspecialchars($x['object_type'], ENT_COMPAT,'UTF-8',false) : ''); $arr['obj_type'] = (($x['object_type']) ? htmlspecialchars($x['object_type'], ENT_COMPAT,'UTF-8',false) : '');
$arr['tgt_type'] = (($x['target_type']) ? htmlspecialchars($x['target_type'], ENT_COMPAT,'UTF-8',false) : ''); $arr['tgt_type'] = (($x['target_type']) ? htmlspecialchars($x['target_type'], ENT_COMPAT,'UTF-8',false) : '');
$arr['comment_policy'] = (($x['comment_scope']) ? htmlspecialchars($x['comment_scope'], ENT_COMPAT,'UTF-8',false) : 'contacts'); $arr['comment_policy'] = (($x['comment_scope']) ? htmlspecialchars($x['comment_scope'], ENT_COMPAT,'UTF-8',false) : 'contacts');
$arr['sig'] = (($x['signature']) ? htmlspecialchars($x['signature'], ENT_COMPAT,'UTF-8',false) : ''); $arr['sig'] = (($x['signature']) ? htmlspecialchars($x['signature'], ENT_COMPAT,'UTF-8',false) : '');
@ -836,6 +867,7 @@ function encode_item($item) {
$x['location'] = $item['location']; $x['location'] = $item['location'];
$x['longlat'] = $item['coord']; $x['longlat'] = $item['coord'];
$x['signature'] = $item['sig']; $x['signature'] = $item['sig'];
$x['route'] = $item['route'];
$x['owner'] = encode_item_xchan($item['owner']); $x['owner'] = encode_item_xchan($item['owner']);
$x['author'] = encode_item_xchan($item['author']); $x['author'] = encode_item_xchan($item['author']);

View File

@ -1452,6 +1452,7 @@ function process_delivery($sender,$arr,$deliveries,$relay,$public = false) {
} }
$xyz = event_store($ev); $xyz = event_store($ev);
add_source_route($xyz,$sender['hash']);
$result = array($d['hash'],'event processed',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>'); $result = array($d['hash'],'event processed',$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>');
continue; continue;
@ -1476,6 +1477,8 @@ function process_delivery($sender,$arr,$deliveries,$relay,$public = false) {
$arr['uid'] = $channel['channel_id']; $arr['uid'] = $channel['channel_id'];
$item_result = item_store($arr); $item_result = item_store($arr);
$item_id = $item_result['item_id']; $item_id = $item_result['item_id'];
add_source_route($item_id,$sender['hash']);
$result[] = array($d['hash'],(($item_id) ? 'posted' : 'storage failed:' . $item_result['message']),$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>'); $result[] = array($d['hash'],(($item_id) ? 'posted' : 'storage failed:' . $item_result['message']),$channel['channel_name'] . ' <' . $channel['channel_address'] . '@' . get_app()->get_hostname() . '>');
} }

View File

@ -470,31 +470,32 @@ CREATE TABLE IF NOT EXISTS `item` (
`author_xchan` char(255) NOT NULL DEFAULT '', `author_xchan` char(255) NOT NULL DEFAULT '',
`source_xchan` char(255) NOT NULL DEFAULT '', `source_xchan` char(255) NOT NULL DEFAULT '',
`mimetype` char(255) NOT NULL DEFAULT '', `mimetype` char(255) NOT NULL DEFAULT '',
`title` text NOT NULL, `title` text NOT NULL DEFAULT '',
`body` mediumtext NOT NULL, `body` mediumtext NOT NULL DEFAULT '',
`app` char(255) NOT NULL DEFAULT '', `app` char(255) NOT NULL DEFAULT '',
`lang` char(64) NOT NULL DEFAULT '', `lang` char(64) NOT NULL DEFAULT '',
`revision` int(10) unsigned NOT NULL DEFAULT '0', `revision` int(10) unsigned NOT NULL DEFAULT '0',
`verb` char(255) NOT NULL DEFAULT '', `verb` char(255) NOT NULL DEFAULT '',
`obj_type` char(255) NOT NULL DEFAULT '', `obj_type` char(255) NOT NULL DEFAULT '',
`object` text NOT NULL, `object` text NOT NULL DEFAULT '',
`tgt_type` char(255) NOT NULL DEFAULT '', `tgt_type` char(255) NOT NULL DEFAULT '',
`target` text NOT NULL, `target` text NOT NULL DEFAULT '',
`layout_mid` char(255) NOT NULL DEFAULT '', `layout_mid` char(255) NOT NULL DEFAULT '',
`postopts` text NOT NULL, `postopts` text NOT NULL DEFAULT '',
`route` text NOT NULL DEFAULT '',
`llink` char(255) NOT NULL DEFAULT '', `llink` char(255) NOT NULL DEFAULT '',
`plink` char(255) NOT NULL DEFAULT '', `plink` char(255) NOT NULL DEFAULT '',
`resource_id` char(255) NOT NULL DEFAULT '', `resource_id` char(255) NOT NULL DEFAULT '',
`resource_type` char(16) NOT NULL DEFAULT '', `resource_type` char(16) NOT NULL DEFAULT '',
`attach` mediumtext NOT NULL, `attach` mediumtext NOT NULL DEFAULT '',
`sig` text NOT NULL, `sig` text NOT NULL DEFAULT '',
`location` char(255) NOT NULL DEFAULT '', `location` char(255) NOT NULL DEFAULT '',
`coord` char(255) NOT NULL DEFAULT '', `coord` char(255) NOT NULL DEFAULT '',
`comment_policy` char(255) NOT NULL DEFAULT '', `comment_policy` char(255) NOT NULL DEFAULT '',
`allow_cid` mediumtext NOT NULL, `allow_cid` mediumtext NOT NULL DEFAULT '',
`allow_gid` mediumtext NOT NULL, `allow_gid` mediumtext NOT NULL DEFAULT '',
`deny_cid` mediumtext NOT NULL, `deny_cid` mediumtext NOT NULL DEFAULT '',
`deny_gid` mediumtext NOT NULL, `deny_gid` mediumtext NOT NULL DEFAULT '',
`item_restrict` int(11) NOT NULL DEFAULT '0', `item_restrict` int(11) NOT NULL DEFAULT '0',
`item_flags` int(11) NOT NULL DEFAULT '0', `item_flags` int(11) NOT NULL DEFAULT '0',
`item_private` tinyint(4) NOT NULL DEFAULT '0', `item_private` tinyint(4) NOT NULL DEFAULT '0',

View File

@ -1,6 +1,6 @@
<?php <?php
define( 'UPDATE_VERSION' , 1104 ); define( 'UPDATE_VERSION' , 1105 );
/** /**
* *
@ -1166,3 +1166,10 @@ function update_r1103() {
set_config('system','curl_ssl_ciphers','ALL:!eNULL'); set_config('system','curl_ssl_ciphers','ALL:!eNULL');
return UPDATE_SUCCESS; return UPDATE_SUCCESS;
} }
function update_r1104() {
$r = q("ALTER TABLE `item` ADD `route` TEXT NOT NULL DEFAULT '' AFTER `postopts` ");
if($r)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}