static void add_object_msg(zbx_uint64_t operationid, zbx_uint64_t mediatypeid, ZBX_USER_MSG **user_msg, const char *subject, const char *message, unsigned char source, zbx_uint64_t triggerid) { DB_RESULT result; DB_ROW row; zbx_uint64_t userid; result = DBselect( "select userid" " from opmessage_usr" " where operationid=" ZBX_FS_UI64 " union " "select g.userid" " from opmessage_grp m,users_groups g" " where m.usrgrpid=g.usrgrpid" " and m.operationid=" ZBX_FS_UI64, operationid, operationid); while (NULL != (row = DBfetch(result))) { ZBX_STR2UINT64(userid, row[0]); add_user_msg(userid, mediatypeid, user_msg, subject, message, source, triggerid); } DBfree_result(result); }
static void add_object_msg(int source, zbx_uint64_t triggerid, DB_OPERATION *operation, ZBX_USER_MSG **user_msg, char *subject, char *message) { DB_RESULT result; DB_ROW row; zbx_uint64_t mediatypeid = 0, userid; result = DBselect("select mediatypeid from opmediatypes where operationid=" ZBX_FS_UI64, operation->operationid); if (NULL != (row = DBfetch(result))) ZBX_STR2UINT64(mediatypeid, row[0]); DBfree_result(result); switch (operation->object) { case OPERATION_OBJECT_USER: add_user_msg(source, operation->objectid, mediatypeid, triggerid, user_msg, subject, message); break; case OPERATION_OBJECT_GROUP: result = DBselect("select ug.userid from users_groups ug,usrgrp g" " WHERE ug.usrgrpid=" ZBX_FS_UI64 " AND g.usrgrpid=ug.usrgrpid AND g.users_status=%d", operation->objectid, GROUP_STATUS_ACTIVE); while (NULL != (row = DBfetch(result))) { ZBX_STR2UINT64(userid, row[0]); add_user_msg(source, userid, mediatypeid, triggerid, user_msg, subject, message); } DBfree_result(result); break; default: zabbix_log(LOG_LEVEL_WARNING, "Unknown object type [%d] for operationid [" ZBX_FS_UI64 "]", operation->object, operation->operationid); zabbix_syslog("Unknown object type [%d] for operationid [" ZBX_FS_UI64 "]", operation->object, operation->operationid); break; } }