add item validation function

This commit is contained in:
redmatrix 2015-08-13 19:35:57 -07:00
parent 50a1e0c618
commit d140620008
2 changed files with 34 additions and 19 deletions

View file

@ -495,6 +495,32 @@ function post_activity_item($arr) {
return $ret;
}
function validate_item_elements($message,$arr) {
$result = array('success' => false);
if(! array_key_exists('created',$arr))
$result['message'] = 'missing created, possible author/owner lookup failure';
if((! $arr['mid']) || (! $arr['parent_mid']))
$result['message'] = 'missing message-id or parent message-id';
if(array_key_exists('flags',$message) && in_array('relay',$message['flags']) && $arr['mid'] === $arr['parent_mid'])
$result['message'] = 'relay set on top level post';
if(! $result['message'])
$result['success'] = true;
return $result;
}
/**
* @brief Generate an Atom feed.
*

View file

@ -1178,8 +1178,10 @@ function zot_import($arr, $sender_url) {
if($i['message']['type'] === 'activity') {
$arr = get_item_elements($i['message']);
if(! array_key_exists('created',$arr)) {
logger('Activity rejected: probable failure to lookup author/owner. ' . print_r($i['message'],true));
$v = validate_item_elements($i['message'],$arr);
if(! $v['success']) {
logger('Activity rejected: ' . $v['message'] . ' ' . print_r($i['message'],true));
continue;
}
@ -1538,24 +1540,11 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
$tag_delivery = tgroup_check($channel['channel_id'],$arr);
$perm = (($arr['mid'] == $arr['parent_mid']) ? 'send_stream' : 'post_comments');
// checkin 36b5f6ac - multiple issues, not yet ready for prime time
// currently this is mostly fixed except for what to do if the post is in a second delivery chain
// if ($arr['mid'] == $arr['parent_mid']){
// $perm = 'send_stream';
// }
// else{
// $perm = 'post_comments';
//
// $r = q("select owner_xchan from item where item.mid = '%s' and uid = %d limit 1",
// dbesc($arr['parent_mid']),
// intval($channel['channel_id'])
// );
// if(($r) && $channel['channel_hash'] !== $r[0]['owner_xchan'])
// $perm = 'send_stream';
// }
// $perm = (($arr['mid'] == $arr['parent_mid']) ? 'send_stream' : 'post_comments');
$perm = 'send_stream';
if(($arr['mid'] !== $arr['parent_mid']) && ($relay))
$perm = 'post_comments';
// This is our own post, possibly coming from a channel clone