query( $query, $bindVars, $pListHash['max_records'] ); $conjugationQuery = "SELECT * FROM feed_conjugation"; $overrides = $gBitDb->getAssoc( $conjugationQuery ); $actions = []; //loop through directed actions while ( $action = $res->fetchRow() ){ if( !empty($action['content_id']) ) { //indicates that this isn't a direct action, more of a "status update" ex. "Ronald is pleased with his artwork" if( $content = LibertyContent::getLibertyObject($action['content_id']) ) { $contentType = $content->getContentType(); $action['real_log'] = RoleUser::getDisplayNameFromHash( $action, empty( $pListHash['no_link_user'] ) ).' '; if(!empty($overrides[strtolower($contentType)])){ $action['real_log'] .= $overrides[$contentType]['conjugation_phrase']; if($overrides[$contentType]['is_target_linked'] == 'y'){ $action['real_log'] .= ' '.$content->getTitle().''; } if( !empty( $overrides[$contentType]['feed_icon_url'] ) ) { $action['feed_icon_url'] = $overrides[$contentType]['feed_icon_url']; } }else{ $action['real_log'] .= KernelTools::tra( 'edited' ).' '.$content->getTitle().''; } } else { unset( $action ); //invalid content_id } if( empty( $action['feed_icon_url'] ) ) { $action['feed_icon_url'] = FEED_PKG_URL.'icons/pixelmixerbasic/pencil_16.png'; } $actions[] = $action; } } return $actions; } function feed_get_status( $pListHash ){ global $gBitDb; $whereSql = ''; $bindVars = []; $statuses = []; BitBase::prepGetList( $pListHash ); if( !empty( $pListHash['user_id'] ) ) { $whereSql = " WHERE lal.user_id = ? "; $bindVars[] = $pListHash['user_id']; }else{ $whereSql = "WHERE 1=1 "; } $query = "SELECT lal.content_id, lal.user_id, lal.log_message, MAX(lal.last_modified) AS last_modified, lc.data, uu.login, uu.real_name, uu.email FROM liberty_action_log lal INNER JOIN liberty_content lc ON (lc.content_id=lal.content_id) INNER JOIN liberty_comments lcs ON (lcs.content_id = lc.content_id) INNER JOIN users_users uu ON (uu.user_id=lal.user_id) $whereSql AND lc.content_type_guid = 'feedstatus' GROUP BY lal.content_id, lal.user_id, uu.login, uu.real_name, uu.email, lal.log_message,lc.data ORDER BY MAX(lal.last_modified) DESC"; $res = $gBitDb->query( $query, $bindVars, $pListHash['max_records'] ); $user = new RoleUser($pListHash['user_id']); $user->load(); while ( $status = $res->fetchRow() ){ $avatarUrl = $user->getThumbnailUrl(); if(empty($avatarUrl)){ $avatarUrl = USERS_PKG_URI."icons/silhouette.png"; } $status['feed_icon_url'] = $avatarUrl; $comment = new LibertyComment(null,$status['content_id']); $replies = $comment->getComments($status['content_id'],null,null,'commentDate_asc'); $status['replies'] = $replies; foreach ( $status['replies'] as &$reply ){ $replyUser = new RoleUser($reply['user_id']); $replyUser->load(); $replyAvatarUrl = $replyUser->getThumbnailUrl(); if(empty($replyAvatarUrl)){ $replyAvatarUrl = USERS_PKG_URI."icons/silhouette.png"; } $reply['feed_icon_url'] = $replyAvatarUrl; } //after loading up the thumbnails in the prior array layout for ease, we break up the array to split long comment threads $MAX_SHOWN_REPLIES = 3; if ( count( $status['replies'] ) > $MAX_SHOWN_REPLIES ){ $maxIteration = count( $status['replies'] ) - $MAX_SHOWN_REPLIES; $i = 0; foreach( $status['replies'] as $excess ){ if($i < $maxIteration){ $status['replies_excess'][$excess['content_id']] = $excess; //use content_id to index for consistency with normal replies array unset($status['replies'][$excess['content_id']]); //remove from the normal replies array }else{ break; } $i++; } } $statuses[] = $status; } return $statuses; } function feed_get_status_and_actions( $pParamHash ) { } function feed_set_status( $pParamHash ){ global $gBitDb; $status = new FeedStatus(); global $gBitUser; $pParamHash['root_id'] = $gBitUser->mContentId; $pParamHash['parent_id'] = $gBitUser->mContentId; $pParamHash['comment_data'] = $pParamHash['status_message']; $pParamHash['title'] = substr($pParamHash['status_message'],0,20); $status->storeComment($pParamHash); }