Skip to content

Commit

Permalink
Ticket #284 - API: Integration reactions with jots.
Browse files Browse the repository at this point in the history
  • Loading branch information
AntonLV committed Feb 6, 2024
1 parent dc7882d commit 84b9077
Show file tree
Hide file tree
Showing 6 changed files with 85 additions and 1 deletion.
1 change: 1 addition & 0 deletions classes/BxMessengerConfig.php
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ function __construct($aModule)
),
'OBJECT_MENU_SNIPPET_META' => 'bx_messenger_profile_snippet_meta',
'OBJECT_VIEWS' => 'bx_messenger_lots',
'OBJECT_JOTS_RVOTES' => 'bx_messenger_jots_rvotes',
'OBJECT_FORM_ENTRY' => 'bx_messenger_lots',
'OBJECT_FORM_FILTER' => 'bx_messenger_filter_criteria',
'OBJECT_FORM_FILTER_DISPLAY' => 'bx_messenger_filter_criteria',
Expand Down
40 changes: 40 additions & 0 deletions classes/BxMessengerJotVoteReactions.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php defined('BX_DOL') or die('hack attempt');
/**
* Copyright (c) UNA, Inc - https://una.io
* MIT License - https://opensource.org/licenses/MIT
*
* @defgroup Messenger Messenger
* @ingroup UnaModules
*
* @{
*/

/**
* For API only.
*/
class BxMessengerJotVoteReactions extends BxTemplVoteReactions
{
protected $_sModule;
protected $_oModule;

public function __construct($sSystem, $iId, $iInit = 1)
{
parent::__construct($sSystem, $iId, $iInit);

$this->_sModule = 'bx_messenger';
$this->_oModule = BxDolModule::getInstance($this->_sModule);
}

protected function _isAllowedVoteByObject($aObject)
{
$CNF = &$this->_oModule->_oConfig->CNF;

$aLot = $this->_oModule->_oDb->getLotInfoById($aObject[$CNF['FIELD_MESSAGE_FK']]);
if(empty($aLot) || !is_array($aLot))
return false;

return bx_srv($this->_aSystem['module'], 'check_allowed_view_for_profile', [$aLot]) === CHECK_ACTION_RESULT_ALLOWED;
}
}

/** @} */
9 changes: 9 additions & 0 deletions classes/BxMessengerModule.php
Original file line number Diff line number Diff line change
Expand Up @@ -4147,15 +4147,24 @@ public function serviceGetConvoMessages($sParams)
$aFiles[] = ['src' => $oImagesTranscoder->getFileUrl((int)$aFile[$CNF['FIELD_ST_ID']]), 'name' => $aFile[$CNF['FIELD_ST_NAME']]];
}

$aReactions = [];
if(($oReactions = BxDolVote::getObjectInstance($CNF['OBJECT_JOTS_RVOTES'], $iJotId)) && $oReactions->isEnabled()) {
$aReactionsOptions = [];
$aReactions = $oReactions->getElementApi($aReactionsOptions);
}

$aResult[] = array_merge($aJot, [
$CNF['FIELD_MESSAGE_FK'] => $aOptions['lot'],
'author_data' => BxDolProfile::getInstance($aJot[$CNF['FIELD_MESSAGE_AUTHOR']])->getData(),
$CNF['FIELD_MESSAGE'] => strip_tags($aJot[$CNF['FIELD_MESSAGE']], '<br>'),
'reactions' => $aReactions,
/*
'reactions' => array_map(function($aItem) use ($CNF){
return ['name' => $this->_oConfig->convertApp2Emoji($aItem[$CNF['FIELD_REACT_EMOJI_ID']]),
'user_id' => BxDolProfile::getInstance()->getData($aItem[$CNF['FIELD_REACT_PROFILE_ID']]),
'count' => 1];
}, $aReactions),
*/
'menu' => $oMenu->getMenuItems(),
'files' => $aFiles
]);
Expand Down
2 changes: 1 addition & 1 deletion classes/BxMessengerTemplate.php
Original file line number Diff line number Diff line change
Expand Up @@ -1050,7 +1050,7 @@ public function getJotsOfLot($iProfileId, $aParams){
$aResult = array('content' => '');
$aLotInfo = $this -> _oDb -> getLotByIdOrUrl($iLotId, $sUrl, $iProfileId);
if (empty($aLotInfo))
return $aResult;
return bx_is_api() ? [] : $aResult;

if ($bSelectJot && $iStart){
$aStartMiddleJot = $this -> _oDb -> getJotsByLotId([
Expand Down
30 changes: 30 additions & 0 deletions install/sql/install.sql
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ CREATE TABLE IF NOT EXISTS `bx_messenger_jots` (
`edit_by` int(11) unsigned NOT NULL default '0',
`trash` tinyint(1) unsigned NOT NULL default 0,
`vc` int(11) NOT NULL default 0,
`rrate` float NOT NULL default '0',
`rvotes` int(11) NOT NULL default '0',
`reply` int(11) NOT NULL default 0,
PRIMARY KEY (`id`),
KEY `lot_id` (`lot_id`),
Expand All @@ -37,6 +39,28 @@ CREATE TABLE IF NOT EXISTS `bx_messenger_jots_media_tracker` (
PRIMARY KEY (`file_id`, `user_id`)
);

CREATE TABLE IF NOT EXISTS `bx_messenger_jots_rvotes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`object_id` int(11) NOT NULL default '0',
`reaction` varchar(32) NOT NULL default '',
`count` int(11) NOT NULL default '0',
`sum` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
UNIQUE KEY `reaction` (`object_id`, `reaction`)
);

CREATE TABLE IF NOT EXISTS `bx_messenger_jots_rvotes_track` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`object_id` int(11) NOT NULL default '0',
`author_id` int(11) NOT NULL default '0',
`author_nip` int(11) unsigned NOT NULL default '0',
`reaction` varchar(32) NOT NULL default '',
`value` tinyint(4) NOT NULL default '0',
`date` int(11) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `vote` (`object_id`, `author_nip`)
);

CREATE TABLE IF NOT EXISTS `bx_messenger_lots` (
`id` int(11) NOT NULL auto_increment,
`title` varchar(255) NOT NULL,
Expand Down Expand Up @@ -275,6 +299,12 @@ INSERT INTO `sys_transcoder_filters` (`transcoder_object`, `filter`, `filter_par
('bx_messenger_videos_webm', 'Webm', 'a:2:{s:1:"h";s:3:"480";s:10:"force_type";s:4:"webm";}', 0),
('bx_messenger_mp3', 'Mp3', 'a:2:{s:13:"audio_bitrate";s:3:"128";s:10:"force_type";s:3:"mp3";}', 0);


-- VOTES
INSERT INTO `sys_objects_vote` (`Name`, `Module`, `TableMain`, `TableTrack`, `PostTimeout`, `MinValue`, `MaxValue`, `IsUndo`, `IsOn`, `TriggerTable`, `TriggerFieldId`, `TriggerFieldAuthor`, `TriggerFieldRate`, `TriggerFieldRateCount`, `ClassName`, `ClassFile`) VALUES
('bx_messenger_jots_rvotes', 'bx_messenger', 'bx_messenger_jots_rvotes', 'bx_messenger_jots_rvotes_track', '604800', '1', '1', '1', '1', 'bx_messenger_jots', 'id', 'user_id', 'rrate', 'rvotes', 'BxMessengerJotVoteReactions', 'modules/boonex/messenger/classes/BxMessengerJotVoteReactions.php');


-- STUDIO PAGE & WIDGET
INSERT INTO `sys_std_pages`(`index`, `name`, `header`, `caption`, `icon`) VALUES
(3, 'bx_messenger', '_bx_messenger', '_bx_messenger', 'bx_messenger@modules/boonex/messenger/|std-icon.svg');
Expand Down
4 changes: 4 additions & 0 deletions install/sql/uninstall.sql
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ DROP TABLE IF EXISTS `bx_messenger_videos_processed`;
DROP TABLE IF EXISTS `bx_messenger_mp3_processed`;
DROP TABLE IF EXISTS `bx_messenger_lcomments`;
DROP TABLE IF EXISTS `bx_messenger_jot_reactions`;
DROP TABLE IF EXISTS `bx_messenger_jots_rvotes`, `bx_messenger_jots_rvotes_track`;
DROP TABLE IF EXISTS `bx_messenger_unread_jots`;
DROP TABLE IF EXISTS `bx_messenger_jvc`;
DROP TABLE IF EXISTS `bx_messenger_jvc_track`;
Expand All @@ -29,6 +30,9 @@ DELETE FROM `sys_transcoder_filters` WHERE `transcoder_object` LIKE 'bx_messenge
DELETE FROM `sys_transcoder_images_files` WHERE `transcoder_object` = 'bx_messenger_preview';
DELETE FROM `sys_transcoder_videos_files` WHERE `transcoder_object` LIKE 'bx_messenger%';

-- VOTES
DELETE FROM `sys_objects_vote` WHERE `Name` LIKE 'bx_messenger%';

-- STUDIO PAGE & WIDGET
DELETE FROM `tp`, `tw`, `tpw`
USING `sys_std_pages` AS `tp`, `sys_std_widgets` AS `tw`, `sys_std_pages_widgets` AS `tpw`
Expand Down

0 comments on commit 84b9077

Please sign in to comment.