MODULE = 'bx_convos';
parent::__construct($aInfo, $oTemplate);
$oTemplate = BxDolTemplate::getInstance();
$oTemplate->addJs(array (
'jquery-ui/jquery-ui.custom.min.js',
'jquery.form.min.js',
));
$oTemplate->addJsTranslation(array(
'_bx_cnv_draft_saving_error',
'_bx_cnv_draft_saved_success',
));
}
public function insert ($aValsToAdd = array(), $isIgnore = false)
{
$aValsToAdd['last_reply_timestamp'] = time();
$aValsToAdd['last_reply_profile_id'] = bx_get_logged_profile_id();
$bSaveToDrafts = bx_get('draft_save');
$iContentId = bx_get('draft_id');
$bDraft = $iContentId ? BX_CNV_FOLDER_DRAFTS == $this->_oModule->_oDb->getConversationFolder($iContentId, bx_get_logged_profile_id()) : false;
if ($iContentId) {
if (!$bDraft)
return 0;
if (!parent::update ($iContentId, $aValsToAdd, $isIgnore))
return 0;
} else {
$iContentId = parent::insert ($aValsToAdd, $isIgnore);
if (!$iContentId)
return 0;
}
if ($bSaveToDrafts) {
if (!$bDraft)
$this->_oModule->_oDb->conversationToFolder($iContentId, BX_CNV_FOLDER_DRAFTS, bx_get_logged_profile_id(), 0);
// draft is saved via ajax call only, upon successfull draft saving content id is returned
echo $iContentId;
exit;
} else {
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)
continue;
if ($bDraft && $oProfile->id() == bx_get_logged_profile_id())
$this->_oModule->_oDb->moveConvo($iContentId, $oProfile->id(), $iFolder);
else
$this->_oModule->_oDb->conversationToFolder($iContentId, $iFolder, $oProfile->id(), $oProfile->id() == bx_get_logged_profile_id() ? 0 : -1);
}
}
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(_t('_bx_cnv_form_entry_input_recipients_placeholder'), BX_ESCAPE_STR_QUOTE);
$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;
}
protected function genCustomInputSubmitText ($aInput)
{
$aVars = array();
return $this->_oModule->_oTemplate->parseHtmlByName('form_submit_text.html', $aVars);
}
function initChecker ($aValues = array (), $aSpecificValues = array())
{
if ($iContentId = bx_get('draft_id')) { // if adding from draft, fill in existing fields info
$aContentInfo = $this->_oModule->_oDb->getContentInfoById($iContentId);
if ($aContentInfo)
$aValues = array_merge($aContentInfo, $aValues);
}
return parent::initChecker ($aValues, $aSpecificValues);
}
function isValid ()
{
if (bx_get('draft_save')) // form is always valid when saving to drafts
return true;
return parent::isValid ();
}
}
/** @} */