MODULE = 'bx_convos';
parent::__construct($aInfo, $oTemplate);
$aJs = array (
'jquery.ui.all.min.js', // TODO: remake by adding individual files, instead of all
);
BxDolTemplate::getInstance()->addJs($aJs);
}
public function insert ($aValsToAdd = array(), $isIgnore = false)
{
$aValsToAdd['last_reply_timestamp'] = time();
$aValsToAdd['last_reply_profile_id'] = bx_get_logged_profile_id();
$iContentId = parent::insert ($aValsToAdd, $isIgnore);
if (!$iContentId)
return 0;
bx_import('BxDolProfile');
// check for spam
$bSpam = false;
bx_alert('system', 'check_spam', 0, getLoggedId(), array('is_spam' => &$bSpam, 'content' => $this->getCleanValue('text'), 'where' => $this->MODULE));
$iFolder = $bSpam ? BX_CNV_FOLDER_SPAM : BX_CNV_FOLDER_INBOX;
// place conversation to "inbox" (or "spam" - in case of spam) folder
$aRecipients = array_unique(array_merge($this->getCleanValue('recipients'), array(bx_get_logged_profile_id())), SORT_NUMERIC);
foreach ($aRecipients as $iProfile) {
$oProfile = BxDolProfile::getInstance($iProfile);
if ($oProfile)
$this->_oModule->_oDb->conversationToFolder($iContentId, $iFolder, $oProfile->id());
}
return $iContentId;
}
protected function genCustomInputRecipients ($aInput) {
$sVals = '';
if (!empty($aInput['value']) && is_array($aInput['value'])) {
foreach ($aInput['value'] as $sVal) {
$sVals .= '' . BxDolProfile::getInstance($sVal)->getDisplayName() . '';
}
$sVals = trim($sVals, ',');
}
$sId = $aInput['name'] . time();
$sPlaceholderText = bx_html_attribute("Type name here...", BX_ESCAPE_STR_QUOTE); // TODO: lang key
$sUrlGetRecipients = BX_DOL_URL_ROOT . "modules/?r=convos/ajax_get_recipients";
return <<
$(function() {
$('#{$sId} input[type=text]').autocomplete({
source: "{$sUrlGetRecipients}",
select: function(e, ui) {
$(this).val(ui.item.label);
$(this).trigger('superselect', ui.item);
e.preventDefault();
}
});
$('#{$sId} input[type=text]').on('superselect', function(e, item) {
if ('undefined' != typeof(item))
$(this).before(''+ item.label +'');
this.value = '';
}).on('keydown', function(e) {
// if: comma,enter (delimit more keyCodes with | pipe)
if (/(13)/.test(e.which))
e.preventDefault();
});
$('#{$sId}').on('click', 'span', function() {
$(this).remove();
});
});
{$sVals}
EOS;
}
}
/** @} */