mirror of
https://codeberg.org/streams/streams.git
synced 2024-09-20 02:35:12 +00:00
basic backend work for creating consensus items
This commit is contained in:
parent
b018b39e64
commit
0259051a87
5 changed files with 84 additions and 27 deletions
4
boot.php
4
boot.php
|
@ -481,6 +481,10 @@ define ( 'NAMESPACE_YMEDIA', 'http://search.yahoo.com/mrss/' );
|
||||||
|
|
||||||
define ( 'ACTIVITY_LIKE', NAMESPACE_ACTIVITY_SCHEMA . 'like' );
|
define ( 'ACTIVITY_LIKE', NAMESPACE_ACTIVITY_SCHEMA . 'like' );
|
||||||
define ( 'ACTIVITY_DISLIKE', NAMESPACE_ZOT . '/activity/dislike' );
|
define ( 'ACTIVITY_DISLIKE', NAMESPACE_ZOT . '/activity/dislike' );
|
||||||
|
define ( 'ACTIVITY_AGREE', NAMESPACE_ZOT . '/activity/agree' );
|
||||||
|
define ( 'ACTIVITY_DISAGREE', NAMESPACE_ZOT . '/activity/disagree' );
|
||||||
|
define ( 'ACTIVITY_ABSTAIN', NAMESPACE_ZOT . '/activity/abstain' );
|
||||||
|
|
||||||
define ( 'ACTIVITY_OBJ_HEART', NAMESPACE_ZOT . '/activity/heart' );
|
define ( 'ACTIVITY_OBJ_HEART', NAMESPACE_ZOT . '/activity/heart' );
|
||||||
|
|
||||||
define ( 'ACTIVITY_FRIEND', NAMESPACE_ACTIVITY_SCHEMA . 'make-friend' );
|
define ( 'ACTIVITY_FRIEND', NAMESPACE_ACTIVITY_SCHEMA . 'make-friend' );
|
||||||
|
|
|
@ -197,7 +197,7 @@ class Conversation extends BaseObject {
|
||||||
* _ The data requested on success
|
* _ The data requested on success
|
||||||
* _ false on failure
|
* _ false on failure
|
||||||
*/
|
*/
|
||||||
public function get_template_data($alike, $dlike) {
|
public function get_template_data($conv_responses) {
|
||||||
$result = array();
|
$result = array();
|
||||||
|
|
||||||
foreach($this->threads as $item) {
|
foreach($this->threads as $item) {
|
||||||
|
@ -206,7 +206,7 @@ class Conversation extends BaseObject {
|
||||||
$item_data = $this->prepared_item;
|
$item_data = $this->prepared_item;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$item_data = $item->get_template_data($alike, $dlike);
|
$item_data = $item->get_template_data($conv_responses);
|
||||||
}
|
}
|
||||||
if(!$item_data) {
|
if(!$item_data) {
|
||||||
logger('[ERROR] Conversation::get_template_data : Failed to get item template data ('. $item->get_id() .').', LOGGER_DEBUG);
|
logger('[ERROR] Conversation::get_template_data : Failed to get item template data ('. $item->get_id() .').', LOGGER_DEBUG);
|
||||||
|
|
|
@ -63,7 +63,7 @@ class Item extends BaseObject {
|
||||||
* _ false on failure
|
* _ false on failure
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function get_template_data($alike, $dlike, $thread_level=1) {
|
public function get_template_data($conv_responses, $thread_level=1) {
|
||||||
|
|
||||||
$result = array();
|
$result = array();
|
||||||
|
|
||||||
|
@ -135,8 +135,8 @@ class Item extends BaseObject {
|
||||||
|
|
||||||
$location = format_location($item);
|
$location = format_location($item);
|
||||||
|
|
||||||
$like_count = ((x($alike,$item['mid'])) ? $alike[$item['mid']] : '');
|
$like_count = ((x($conv_responses['like'],$item['mid'])) ? $conv_responses['like'][$item['mid']] : '');
|
||||||
$like_list = ((x($alike,$item['mid'])) ? $alike[$item['mid'] . '-l'] : '');
|
$like_list = ((x($conv_responses['like'],$item['mid'])) ? $conv_responses['like'][$item['mid'] . '-l'] : '');
|
||||||
if (count($like_list) > MAX_LIKERS) {
|
if (count($like_list) > MAX_LIKERS) {
|
||||||
$like_list_part = array_slice($like_list, 0, MAX_LIKERS);
|
$like_list_part = array_slice($like_list, 0, MAX_LIKERS);
|
||||||
array_push($like_list_part, '<a href="#" data-toggle="modal" data-target="#likeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
|
array_push($like_list_part, '<a href="#" data-toggle="modal" data-target="#likeModal-' . $this->get_id() . '"><b>' . t('View all') . '</b></a>');
|
||||||
|
@ -146,8 +146,8 @@ class Item extends BaseObject {
|
||||||
$like_button_label = tt('Like','Likes',$like_count,'noun');
|
$like_button_label = tt('Like','Likes',$like_count,'noun');
|
||||||
|
|
||||||
if (feature_enabled($conv->get_profile_owner(),'dislike')) {
|
if (feature_enabled($conv->get_profile_owner(),'dislike')) {
|
||||||
$dislike_count = ((x($dlike,$item['mid'])) ? $dlike[$item['mid']] : '');
|
$dislike_count = ((x($conv_responses['dislike'],$item['mid'])) ? $conv_responses['dislike'][$item['mid']] : '');
|
||||||
$dislike_list = ((x($dlike,$item['mid'])) ? $dlike[$item['mid'] . '-l'] : '');
|
$dislike_list = ((x($conv_responses['dislike'],$item['mid'])) ? $conv_responses['dislike'][$item['mid'] . '-l'] : '');
|
||||||
$dislike_button_label = tt('Dislike','Dislikes',$dislike_count,'noun');
|
$dislike_button_label = tt('Dislike','Dislikes',$dislike_count,'noun');
|
||||||
if (count($dislike_list) > MAX_LIKERS) {
|
if (count($dislike_list) > MAX_LIKERS) {
|
||||||
$dislike_list_part = array_slice($dislike_list, 0, MAX_LIKERS);
|
$dislike_list_part = array_slice($dislike_list, 0, MAX_LIKERS);
|
||||||
|
@ -157,9 +157,9 @@ class Item extends BaseObject {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$showlike = ((x($alike,$item['mid'])) ? format_like($alike[$item['mid']],$alike[$item['mid'] . '-l'],'like',$item['mid']) : '');
|
$showlike = ((x($conv_responses['like'],$item['mid'])) ? format_like($conv_responses['like'][$item['mid']],$conv_responses['like'][$item['mid'] . '-l'],'like',$item['mid']) : '');
|
||||||
$showdislike = ((x($dlike,$item['mid']) && feature_enabled($conv->get_profile_owner(),'dislike'))
|
$showdislike = ((x($conv_responses['dislike'],$item['mid']) && feature_enabled($conv->get_profile_owner(),'dislike'))
|
||||||
? format_like($dlike[$item['mid']],$dlike[$item['mid'] . '-l'],'dislike',$item['mid']) : '');
|
? format_like($conv_responses['dislike'][$item['mid']],$conv_responses['dislike'][$item['mid'] . '-l'],'dislike',$item['mid']) : '');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We should avoid doing this all the time, but it depends on the conversation mode
|
* We should avoid doing this all the time, but it depends on the conversation mode
|
||||||
|
@ -336,7 +336,7 @@ class Item extends BaseObject {
|
||||||
|
|
||||||
if(($this->get_display_mode() === 'normal') && ($nb_children > 0)) {
|
if(($this->get_display_mode() === 'normal') && ($nb_children > 0)) {
|
||||||
foreach($children as $child) {
|
foreach($children as $child) {
|
||||||
$result['children'][] = $child->get_template_data($alike, $dlike, $thread_level + 1);
|
$result['children'][] = $child->get_template_data($conv_responses, $thread_level + 1);
|
||||||
}
|
}
|
||||||
// Collapse
|
// Collapse
|
||||||
if(($nb_children > 2) || ($thread_level > 1)) {
|
if(($nb_children > 2) || ($thread_level > 1)) {
|
||||||
|
|
|
@ -399,10 +399,15 @@ function count_descendants($item) {
|
||||||
|
|
||||||
function visible_activity($item) {
|
function visible_activity($item) {
|
||||||
|
|
||||||
// likes can apply to other things besides posts. Check if they are post children, in which case we handle them specially
|
// likes (etc.) can apply to other things besides posts. Check if they are post children,
|
||||||
|
// in which case we handle them specially
|
||||||
|
|
||||||
if((activity_match($item['verb'],ACTIVITY_LIKE) || activity_match($item['verb'],ACTIVITY_DISLIKE)) && ($item['mid'] != $item['parent_mid']))
|
$hidden_activities = array(ACTIVITY_LIKE, ACTIVITY_DISLIKE, ACTIVITY_AGREE, ACTIVITY_DISAGREE, ACTIVITY_ABSTAIN);
|
||||||
|
foreach($hidden_activities as $act) {
|
||||||
|
if((activity_match($item['verb'],$act)) && ($item['mid'] != $item['parent_mid'])) {
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -547,8 +552,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
|
||||||
|
|
||||||
$items = $cb['items'];
|
$items = $cb['items'];
|
||||||
|
|
||||||
$alike = array();
|
$conv_responses = array(array('like'),array('dislike'),array('agree'),array('disagree'),array('abstain'));
|
||||||
$dlike = array();
|
|
||||||
|
|
||||||
// array with html for each thread (parent+comments)
|
// array with html for each thread (parent+comments)
|
||||||
$threads = array();
|
$threads = array();
|
||||||
|
@ -779,10 +783,14 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
like_puller($a, $item, $alike, 'like');
|
like_puller($a, $item, $conv_responses, 'like');
|
||||||
|
|
||||||
if(feature_enabled($profile_owner, 'dislike'))
|
if(feature_enabled($profile_owner, 'dislike'))
|
||||||
like_puller($a, $item, $dlike, 'dislike');
|
like_puller($a, $item, $conv_responses, 'dislike');
|
||||||
|
|
||||||
|
like_puller($a, $item, $conv_responses, 'agree');
|
||||||
|
like_puller($a, $item, $conv_responses, 'disagree');
|
||||||
|
like_puller($a, $item, $conv_responses, 'abstain');
|
||||||
|
|
||||||
if(! visible_activity($item)) {
|
if(! visible_activity($item)) {
|
||||||
continue;
|
continue;
|
||||||
|
@ -801,7 +809,7 @@ function conversation(&$a, $items, $mode, $update, $page_mode = 'traditional', $
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$threads = $conv->get_template_data($alike, $dlike);
|
$threads = $conv->get_template_data($conv_responses);
|
||||||
if(!$threads) {
|
if(!$threads) {
|
||||||
logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
|
logger('[ERROR] conversation : Failed to get template data.', LOGGER_DEBUG);
|
||||||
$threads = array();
|
$threads = array();
|
||||||
|
@ -972,7 +980,32 @@ function item_photo_menu($item){
|
||||||
function like_puller($a, $item, &$arr, $mode) {
|
function like_puller($a, $item, &$arr, $mode) {
|
||||||
|
|
||||||
$url = '';
|
$url = '';
|
||||||
$verb = (($mode === 'like') ? ACTIVITY_LIKE : ACTIVITY_DISLIKE);
|
|
||||||
|
switch($mode) {
|
||||||
|
case 'like':
|
||||||
|
case 'unlike':
|
||||||
|
$verb = ACTIVITY_LIKE;
|
||||||
|
break;
|
||||||
|
case 'dislike':
|
||||||
|
case 'undislike':
|
||||||
|
$verb = ACTIVITY_DISLIKE;
|
||||||
|
break;
|
||||||
|
case 'agree':
|
||||||
|
case 'unagree':
|
||||||
|
$verb = ACTIVITY_AGREE;
|
||||||
|
break;
|
||||||
|
case 'disagree':
|
||||||
|
case 'undisagree':
|
||||||
|
$verb = ACTIVITY_DISAGREE;
|
||||||
|
break;
|
||||||
|
case 'abstain':
|
||||||
|
case 'unabstain':
|
||||||
|
$verb = ACTIVITY_ABSTAIN;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if((activity_match($item['verb'], $verb)) && ($item['id'] != $item['parent'])) {
|
if((activity_match($item['verb'], $verb)) && ($item['id'] != $item['parent'])) {
|
||||||
|
|
||||||
|
@ -982,20 +1015,20 @@ function like_puller($a, $item, &$arr, $mode) {
|
||||||
if(! $item['thr_parent'])
|
if(! $item['thr_parent'])
|
||||||
$item['thr_parent'] = $item['parent_mid'];
|
$item['thr_parent'] = $item['parent_mid'];
|
||||||
|
|
||||||
if(! ((isset($arr[$item['thr_parent'] . '-l'])) && (is_array($arr[$item['thr_parent'] . '-l']))))
|
if(! ((isset($arr[$mode][$item['thr_parent'] . '-l'])) && (is_array($arr[$mode][$item['thr_parent'] . '-l']))))
|
||||||
$arr[$item['thr_parent'] . '-l'] = array();
|
$arr[$mode][$item['thr_parent'] . '-l'] = array();
|
||||||
|
|
||||||
if(! isset($arr[$item['thr_parent']]))
|
if(! isset($arr[$mode][$item['thr_parent']]))
|
||||||
$arr[$item['thr_parent']] = 1;
|
$arr[$mode][$item['thr_parent']] = 1;
|
||||||
else
|
else
|
||||||
$arr[$item['thr_parent']] ++;
|
$arr[$mode][$item['thr_parent']] ++;
|
||||||
|
|
||||||
$name = (($item['author']['xchan_name']) ? $item['author']['xchan_name'] : t('Unknown'));
|
$name = (($item['author']['xchan_name']) ? $item['author']['xchan_name'] : t('Unknown'));
|
||||||
|
|
||||||
if($url)
|
if($url)
|
||||||
$arr[$item['thr_parent'] . '-l'][] = '<a href="'. $url . '">' . $name . '</a>';
|
$arr[$mode][$item['thr_parent'] . '-l'][] = '<a href="'. $url . '">' . $name . '</a>';
|
||||||
else
|
else
|
||||||
$arr[$item['thr_parent'] . '-l'][] = '<a href="#" class="disabled">' . $name . '</a>';
|
$arr[$mode][$item['thr_parent'] . '-l'][] = '<a href="#" class="disabled">' . $name . '</a>';
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
20
mod/like.php
20
mod/like.php
|
@ -37,6 +37,18 @@ function like_content(&$a) {
|
||||||
case 'undislike':
|
case 'undislike':
|
||||||
$activity = ACTIVITY_DISLIKE;
|
$activity = ACTIVITY_DISLIKE;
|
||||||
break;
|
break;
|
||||||
|
case 'agree':
|
||||||
|
case 'unagree':
|
||||||
|
$activity = ACTIVITY_AGREE;
|
||||||
|
break;
|
||||||
|
case 'disagree':
|
||||||
|
case 'undisagree':
|
||||||
|
$activity = ACTIVITY_DISAGREE;
|
||||||
|
break;
|
||||||
|
case 'abstain':
|
||||||
|
case 'unabstain':
|
||||||
|
$activity = ACTIVITY_ABSTAIN;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
break;
|
break;
|
||||||
|
@ -336,6 +348,14 @@ function like_content(&$a) {
|
||||||
$bodyverb = t('%1$s likes %2$s\'s %3$s');
|
$bodyverb = t('%1$s likes %2$s\'s %3$s');
|
||||||
if($verb === 'dislike')
|
if($verb === 'dislike')
|
||||||
$bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s');
|
$bodyverb = t('%1$s doesn\'t like %2$s\'s %3$s');
|
||||||
|
if($verb === 'agree')
|
||||||
|
$bodyverb = t('%1$s agrees with %2$s\'s %3$s');
|
||||||
|
if($verb === 'disagree')
|
||||||
|
$bodyverb = t('%1$s doesn\'t agree with %2$s\'s %3$s');
|
||||||
|
if($verb === 'abstain')
|
||||||
|
$bodyverb = t('%1$s abstains from a decision on %2$s\'s %3$s');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if(! isset($bodyverb))
|
if(! isset($bodyverb))
|
||||||
killme();
|
killme();
|
||||||
|
|
Loading…
Reference in a new issue