#include "MsgStorageHandler.h"
#include "MsgNotificationWrapper.h"
#include "MsgDevicedWrapper.h"
+#include "MsgTransManager.h"
using namespace std;
/* Add Message */
memset(sqlQuery, 0x00, sizeof(sqlQuery));
- snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d, %d, %d, %d, %d, %u, %d, %d, %d, %d, %d, %d, %d, %d, ?, '', '', ?, 0, %d, '%s');",
+ snprintf(sqlQuery, sizeof(sqlQuery), "INSERT INTO %s VALUES (%d, %d, %d, %d, %d, %d, %u, %d, %d, %d, %d, %d, %d, %d, %d, ?, '', '', ?, 0, %d, '%s', %d);",
MSGFW_MESSAGE_TABLE_NAME, rowId, convId, pMsg->folderId, pMsg->storageId, pMsg->msgType.mainType, pMsg->msgType.subType,
(unsigned int)pMsg->displayTime, pMsg->dataSize, pMsg->networkStatus, pMsg->bRead, pMsg->bProtected, pMsg->priority, pMsg->direction,
- 0, pMsg->bBackup, pMsg->sim_idx, imsi);
+ 0, pMsg->bBackup, pMsg->sim_idx, imsi, pMsg->bRestricted);
MSG_DEBUG("QUERY : %s", sqlQuery);
memset(sqlQuery, 0x00, sizeof(sqlQuery));
snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID, CONV_ID, FOLDER_ID, STORAGE_ID, MAIN_TYPE, \
SUB_TYPE, DISPLAY_TIME, DATA_SIZE, NETWORK_STATUS, READ_STATUS, PROTECTED, \
- BACKUP, PRIORITY, MSG_DIRECTION, SCHEDULED_TIME, SUBJECT, MSG_TEXT, THUMB_PATH, SIM_INDEX \
+ BACKUP, PRIORITY, MSG_DIRECTION, DPM_RESTRICTED, SCHEDULED_TIME, SUBJECT, MSG_TEXT, THUMB_PATH, SIM_INDEX \
FROM %s WHERE MSG_ID = %d;",
MSGFW_MESSAGE_TABLE_NAME, msgId);
pMsg->bBackup = dbHandle->columnInt(11);
pMsg->priority = dbHandle->columnInt(12);
pMsg->direction = dbHandle->columnInt(13);
+ pMsg->bRestricted = dbHandle->columnInt(14);
- strncpy(pMsg->subject, (char *)dbHandle->columnText(15), MAX_SUBJECT_LEN);
+ strncpy(pMsg->subject, (char *)dbHandle->columnText(16), MAX_SUBJECT_LEN);
/* Temp_File_Handling */
if (pMsg->msgType.mainType == MSG_SMS_TYPE || pMsg->msgType.subType == MSG_NOTIFICATIONIND_MMS) {
char msgData[pMsg->dataSize+1];
memset(msgData, 0x00, sizeof(msgData));
- strncpy(msgData, (char *)dbHandle->columnText(16), pMsg->dataSize);
+ strncpy(msgData, (char *)dbHandle->columnText(17), pMsg->dataSize);
/* Save Message Data into File */
char fileName[MSG_FILENAME_LEN_MAX+1];
pMsg->bTextSms = false;
} else {
memset(pMsg->msgText, 0x00, sizeof(pMsg->msgText));
- strncpy(pMsg->msgText, (char *)dbHandle->columnText(16), pMsg->dataSize);
+ strncpy(pMsg->msgText, (char *)dbHandle->columnText(17), pMsg->dataSize);
/* For WAP PUSH SI Message */
if (pMsg->msgType.subType == MSG_WAP_SI_SMS) {
}
} else {
if (dbHandle->columnText(16) != NULL)
- strncpy(pMsg->msgText, (char *)dbHandle->columnText(16), MAX_MSG_TEXT_LEN);
+ strncpy(pMsg->msgText, (char *)dbHandle->columnText(17), MAX_MSG_TEXT_LEN);
}
/* thumbnail path */
- if (dbHandle->columnText(17)!= NULL && ((char *)dbHandle->columnText(17))[0] != '\0') {
- strncpy(pMsg->thumbPath, (char *)dbHandle->columnText(17), MSG_FILEPATH_LEN_MAX);
+ if (dbHandle->columnText(18)!= NULL && ((char *)dbHandle->columnText(18))[0] != '\0') {
+ strncpy(pMsg->thumbPath, (char *)dbHandle->columnText(18), MSG_FILEPATH_LEN_MAX);
MSG_DEBUG("pMsg->thumbPath : [%s]", pMsg->thumbPath);
}
- pMsg->sim_idx = dbHandle->columnInt(18);
+
+ if (pMsg->bRestricted == true) {
+ pMsg->dataSize = 0;
+ memset(pMsg->msgData, 0x00, sizeof(pMsg->msgData));
+ memset(pMsg->msgText, 0x00, sizeof(pMsg->msgText));
+ memset(pMsg->subject, 0x00, sizeof(pMsg->subject));
+ memset(pMsg->thumbPath, 0x00, sizeof(pMsg->thumbPath));
+
+ }
+
+ pMsg->sim_idx = dbHandle->columnInt(19);
} else {
dbHandle->finalizeQuery();
MSG_DEBUG("%s", sqlQuery);
return MSG_SUCCESS;
}
+
+
+msg_error_t MsgStoUpdateDPMRestrictedStatus(MSG_MAIN_TYPE_T msgType)
+{
+ msg_error_t err = MSG_SUCCESS;
+
+ char sqlQuery[MAX_QUERY_LEN+1];
+ MsgDbHandler *dbHandle = getDbHandle();
+
+ msg_id_list_s msgIdList = {0,};
+ int rowCnt = 0;
+
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "SELECT MSG_ID FROM %s WHERE MAIN_TYPE = %d AND DPM_RESTRICTED = 1;",
+ MSGFW_MESSAGE_TABLE_NAME, msgType);
+
+ err = dbHandle->getTable(sqlQuery, &rowCnt, NULL);
+ if (err != MSG_SUCCESS) {
+ dbHandle->freeTable();
+ return err;
+ }
+
+ msg_message_id_t *msgIds = new msg_message_id_t[rowCnt];
+ for (int i = 0; i < rowCnt; i++) {
+ msgIds[i] = dbHandle->getColumnToInt(i + 1);
+ }
+
+ dbHandle->freeTable();
+
+ msgIdList.nCount = rowCnt;
+ msgIdList.msgIdList = msgIds;
+
+ memset(sqlQuery, 0x00, sizeof(sqlQuery));
+ snprintf(sqlQuery, sizeof(sqlQuery), "UPDATE %s SET DPM_RESTRICTED = 0 WHERE MAIN_TYPE = %d AND DPM_RESTRICTED = 1;",
+ MSGFW_MESSAGE_TABLE_NAME, msgType);
+
+ err = dbHandle->execQuery(sqlQuery);
+ if (err == MSG_SUCCESS) {
+ MsgTransactionManager::instance()->broadcastStorageChangeCB(err, MSG_STORAGE_CHANGE_UPDATE, &msgIdList);
+ }
+
+ if (msgIdList.msgIdList)
+ delete [] msgIdList.msgIdList;
+
+ return err;
+}