/** * Static function to display form for the field type * @param string $name * @param string $value * @param string $css * @return html for the form containing the field */ public static function display_field($name, $value = '', $css = '') { $current_user = $_SESSION["do_user"]->iduser; $do_user = new User(); $active_users = $do_user->get_active_users(); $active_users_but_me = array(); foreach ($active_users as $key => $users) { if ($users["iduser"] == $current_user) { continue; } $active_users_but_me[] = $users["user_name"] . '(' . $users["firstname"] . ' ' . $users["lastname"] . ')'; } $mention_users_json = json_encode($active_users_but_me); echo '<textarea class="' . $css . '" name="' . $name . '" id="' . $name . '" rows="7">' . $value . '</textarea>'; echo "\n" . '<script> $("#' . $name . '").autogrow({onInitialize: true}); $(document).ready(function() { var mentionUsers = \'' . $mention_users_json . '\' ; $(\'#' . $name . '\').textcomplete([ { // emoji strategy match: /\\B:([\\-+\\w]*)$/, search: function (term, callback) { callback($.map(emojies, function (emoji) { return emoji.indexOf(term) === 0 ? emoji : null; })); }, template: function (value) { return \'<img width="20" height="20" src="/themes/images/emoji-pngs/\' + value + \'.png"></img>\' + value; }, replace: function (value) { return \':\' + value + \': \'; }, index: 1 }, { // mentions strategy mentions : $.parseJSON(mentionUsers), match: /\\B@(\\w*)$/, search: function (term, callback) { callback($.map(this.mentions, function (mention) { return mention.indexOf(term) === 0 ? mention : null; })); }, index: 1, replace: function (mention) { var mentionedUserName = mention.split(\'(\') ; return \'@\' + mentionedUserName[0] + \' \'; } } ]); }); </script>' . "\n"; }
/** * add feed for the mentioned notes * @param integer $idnotes * @param string $note_content * @param integer $related_module_id * @param integer $sqcrm_record_id */ public function add_mentions_feed($idnotes, $note_content, $related_module_id, $sqcrm_record_id) { if ($idnotes > 0) { $mentioned_feed_receiptents = array(); preg_match_all("/(^|[^@\\w])@(\\w{1,15})\\b/im", $note_content, $mentioned_users); if (is_array($mentioned_users) && array_key_exists(2, $mentioned_users) && count($mentioned_users[2]) > 0) { $do_user = new \User(); $active_users = $do_user->get_active_users(); $current_user = 0; $active_users_key_as_username = array(); foreach ($active_users as $key => $users) { if ($users["iduser"] == $current_user) { continue; } $active_users_key_as_username[$users["user_name"]] = array("iduser" => $users["iduser"], "firstname" => $users["firstname"], "lastname" => $users["lastname"], "email" => $users["email"]); } foreach ($mentioned_users[2] as $key => $val) { if (array_key_exists($val, $active_users_key_as_username)) { $mentioned_feed_receiptents[] = $active_users_key_as_username[$val["iduser"]]; } } if (is_array($mentioned_feed_receiptents) && count($mentioned_feed_receiptents) > 0) { $do_feed_queue = new \LiveFeedQueue(); $do_crm_entity = new \CRMEntity(); $do_module = new \Module(); $do_module->getId($related_module_id); $identifier = $do_crm_entity->get_entity_identifier($sqcrm_record_id, $do_module->name); $related_identifier_data = array("related_identifier" => '', "related_identifier_idrecord" => $idnotes, "related_identifier_idmodule" => 8); $do_feed_queue->add_feed_queue($sqcrm_record_id, $related_module_id, $identifier, 'note_mention', $mentioned_feed_receiptents, $related_identifier_data); } } } }