Merge branch 'waynemerricks-stable' into stable

This commit is contained in:
Fred Gleason 2016-06-14 12:31:34 -04:00
commit b4b9b20448
23 changed files with 229 additions and 109 deletions

View File

@ -274,7 +274,7 @@ MainObject::MainObject(QObject *parent)
TITLE=\"%s\",\ TITLE=\"%s\",\
ARTIST=\"%s\",\ ARTIST=\"%s\",\
ALBUM=\"%s\",\ ALBUM=\"%s\",\
YEAR=\"%s\",\ YEAR=%s,\
ISRC=\"%s\",\ ISRC=\"%s\",\
LABEL=\"%s\",\ LABEL=\"%s\",\
CLIENT=\"%s\",\ CLIENT=\"%s\",\
@ -304,8 +304,7 @@ MainObject::MainObject(QObject *parent)
(const char *)RDEscapeString(q->value(3).toString()), (const char *)RDEscapeString(q->value(3).toString()),
(const char *)RDEscapeString(q->value(4).toString()), (const char *)RDEscapeString(q->value(4).toString()),
(const char *)RDEscapeString(q->value(5).toString()), (const char *)RDEscapeString(q->value(5).toString()),
(const char *)q->value(6).toDate(). (const char *)RDCheckDateTime(q->value(6).toDate(),"yyyy-MM-dd"),
toString("yyyy-MM-dd"),
(const char *)RDEscapeString(q->value(7).toString()), (const char *)RDEscapeString(q->value(7).toString()),
(const char *)RDEscapeString(q->value(8).toString()), (const char *)RDEscapeString(q->value(8).toString()),
(const char *)RDEscapeString(q->value(9).toString()), (const char *)RDEscapeString(q->value(9).toString()),
@ -348,33 +347,33 @@ MainObject::MainObject(QObject *parent)
start_datetime="null"; start_datetime="null";
} }
else { else {
start_datetime=QString().sprintf("\"%s\"", start_datetime=QString().sprintf("%s",
(const char *)q1->value(7). (const char *)RDCheckDateTime(q1->value(7).
toDateTime().toString("yyyy-MM-dd hh:mm:ss")); toDateTime(),"yyyy-MM-dd hh:mm:ss"));//Could be invalid (0000-00-00)
} }
if(q1->value(8).isNull()) { if(q1->value(8).isNull()) {
end_datetime="null"; end_datetime="null";
} }
else { else {
end_datetime=QString().sprintf("\"%s\"", end_datetime=QString().sprintf("%s",
(const char *)q1->value(8). (const char *)RDCheckDateTime(q1->value(8).
toDateTime().toString("yyyy-MM-dd hh:mm:ss")); toDateTime(),"yyyy-MM-dd hh:mm:ss"));//Could be invalid (0000-00-00)
} }
if(q1->value(16).isNull()) { if(q1->value(16).isNull()) {
start_daypart="null"; start_daypart="null";
} }
else { else {
start_daypart=QString().sprintf("\"%s\"", start_daypart=QString().sprintf("%s",
(const char *)q1->value(16). (const char *)RDCheckDateTime(q1->value(16).
toTime().toString("hh:mm:ss")); toTime(),"hh:mm:ss"));//Invalid possible?
} }
if(q1->value(17).isNull()) { if(q1->value(17).isNull()) {
end_daypart="null"; end_daypart="null";
} }
else { else {
end_daypart=QString().sprintf("\"%s\"", end_daypart=QString().sprintf("%s",
(const char *)q1->value(17). (const char *)RDCheckDateTime(q1->value(17).
toTime().toString("hh:mm:ss")); toTime(),"hh:mm:ss"));//Invalid possible?
} }
sql=QString().sprintf("insert into CUTS set CART_NUMBER=%u,\ sql=QString().sprintf("insert into CUTS set CART_NUMBER=%u,\
CUT_NAME=\"%s\",\ CUT_NAME=\"%s\",\

View File

@ -1206,15 +1206,15 @@ void RDCart::updateLength(bool enforce_length,unsigned length)
sql+="START_DATETIME=NULL,"; sql+="START_DATETIME=NULL,";
} }
else { else {
sql+=QString().sprintf("START_DATETIME=\"%s\",", sql+=QString().sprintf("START_DATETIME=%s,",
(const char *)start_datetime.toString("yyyy-MM-dd hh:mm:ss")); (const char *)RDCheckDateTime(start_datetime,"yyyy-MM-dd hh:mm:ss"));
} }
if(end_datetime.isNull()||(!dates_valid)) { if(end_datetime.isNull()||(!dates_valid)) {
sql+="END_DATETIME=NULL,"; sql+="END_DATETIME=NULL,";
} }
else { else {
sql+=QString().sprintf("END_DATETIME=\"%s\",", sql+=QString().sprintf("END_DATETIME=%s,",
(const char *)end_datetime.toString("yyyy-MM-dd hh:mm:ss")); (const char *)RDCheckDateTime(end_datetime,"yyyy-MM-dd hh:mm:ss"));
} }
sql+=QString().sprintf("VALIDITY=%u where NUMBER=%u", sql+=QString().sprintf("VALIDITY=%u where NUMBER=%u",
cart_validity,cart_number); cart_validity,cart_number);
@ -1738,9 +1738,9 @@ void RDCart::SetRow(const QString &param,const QDateTime &value) const
RDSqlQuery *q; RDSqlQuery *q;
QString sql; QString sql;
sql=QString().sprintf("UPDATE CART SET %s=\"%s\" WHERE NUMBER=%u", sql=QString().sprintf("UPDATE CART SET %s=%s WHERE NUMBER=%u",
(const char *)param, (const char *)param,
(const char *)value.toString("yyyy-MM-dd hh:mm:ss"), (const char *)RDCheckDateTime(value,"yyyy-MM-dd hh:mm:ss"),
cart_number); cart_number);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
@ -1752,9 +1752,9 @@ void RDCart::SetRow(const QString &param,const QDate &value) const
RDSqlQuery *q; RDSqlQuery *q;
QString sql; QString sql;
sql=QString().sprintf("UPDATE CART SET %s=\"%s\" WHERE NUMBER=%u", sql=QString().sprintf("UPDATE CART SET %s=%s WHERE NUMBER=%u",
(const char *)param, (const char *)param,
(const char *)value.toString("yyyy-MM-dd"), (const char *)RDCheckDateTime(value,"yyyy-MM-dd"),
cart_number); cart_number);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;

View File

@ -670,6 +670,8 @@ void RDCartSlot::LogPlayout(RDPlayDeck::State state)
datetime.setDate(datetime.date().addDays(-1)); datetime.setDate(datetime.date().addDays(-1));
} }
if(!slot_svcname.isEmpty()) { if(!slot_svcname.isEmpty()) {
QDateTime eventDateTime(datetime.date(),
slot_logline->startTime(RDLogLine::Actual));
QString svctablename=slot_svcname; QString svctablename=slot_svcname;
svctablename.replace(" ","_"); svctablename.replace(" ","_");
sql=QString("insert into `")+svctablename+"_SRT` set "+ sql=QString("insert into `")+svctablename+"_SRT` set "+
@ -687,17 +689,18 @@ void RDCartSlot::LogPlayout(RDPlayDeck::State state)
slot_logline->usageCode(), slot_logline->usageCode(),
slot_logline->startSource())+ slot_logline->startSource())+
"STATION_NAME=\""+RDEscapeString(slot_station->name())+"\","+ "STATION_NAME=\""+RDEscapeString(slot_station->name())+"\","+
"EVENT_DATETIME=\""+datetime.toString("yyyy-MM-dd")+ "EVENT_DATETIME="+RDCheckDateTime(eventDateTime,"yyyy-MM-dd hh:mm:ss")+
" "+slot_logline->startTime(RDLogLine::Actual).toString("hh:mm:ss")+"\","+ ","+
"EXT_START_TIME=\""+slot_logline->extStartTime().toString("hh:mm:ss")+"\","+ "EXT_START_TIME="+RDCheckDateTime(
slot_logline->extStartTime(),"hh:mm:ss")+","+
"EXT_DATA=\""+RDEscapeString(slot_logline->extData())+"\","+ "EXT_DATA=\""+RDEscapeString(slot_logline->extData())+"\","+
"EXT_EVENT_ID=\""+RDEscapeString(slot_logline->extEventId())+"\","+ "EXT_EVENT_ID=\""+RDEscapeString(slot_logline->extEventId())+"\","+
"EXT_ANNC_TYPE=\""+RDEscapeString(slot_logline->extAnncType())+"\","+ "EXT_ANNC_TYPE=\""+RDEscapeString(slot_logline->extAnncType())+"\","+
"EXT_CART_NAME=\""+RDEscapeString(slot_logline->extCartName())+"\","+ "EXT_CART_NAME=\""+RDEscapeString(slot_logline->extCartName())+"\","+
"TITLE=\""+RDEscapeString(slot_logline->title())+"\","+ "TITLE=\""+RDEscapeString(slot_logline->title())+"\","+
"ARTIST=\""+RDEscapeString(slot_logline->artist())+"\","+ "ARTIST=\""+RDEscapeString(slot_logline->artist())+"\","+
"SCHEDULED_TIME=\""+slot_logline->startTime(RDLogLine::Logged). "SCHEDULED_TIME="+
toString("hh:mm:ss")+"\","+ RDCheckDateTime(slot_logline->startTime(RDLogLine::Logged),"hh:mm:ss")+","+
"ISRC=\""+RDEscapeString(slot_logline->isrc())+"\","+ "ISRC=\""+RDEscapeString(slot_logline->isrc())+"\","+
"PUBLISHER=\""+RDEscapeString(slot_logline->publisher())+"\","+ "PUBLISHER=\""+RDEscapeString(slot_logline->publisher())+"\","+
"COMPOSER=\""+RDEscapeString(slot_logline->composer())+"\","+ "COMPOSER=\""+RDEscapeString(slot_logline->composer())+"\","+

View File

@ -1060,8 +1060,9 @@ void RDCut::setMetadata(RDWaveData *data) const
} }
if(data->daypartStartTime().isValid()&&data->daypartEndTime().isValid()&& if(data->daypartStartTime().isValid()&&data->daypartEndTime().isValid()&&
(data->daypartStartTime()<data->daypartEndTime())) { (data->daypartStartTime()<data->daypartEndTime())) {
sql+="START_DAYPART=\""+data->daypartStartTime().toString("hh:mm:ss")+"\","+ sql+="START_DAYPART="+
"END_DAYPART=\""+data->daypartEndTime().toString("hh:mm:ss")+"\","; RDCheckDateTime(data->daypartStartTime(),"hh:mm:ss")+","+
"END_DAYPART="+RDCheckDateTime(data->daypartEndTime(),"hh:mm:ss")+",";
} }
if((data->hookStartPos()>=data->startPos())&& if((data->hookStartPos()>=data->startPos())&&
(data->hookStartPos()<=data->endPos())&& (data->hookStartPos()<=data->endPos())&&
@ -1079,32 +1080,36 @@ void RDCut::setMetadata(RDWaveData *data) const
(data->fadeDownPos()<=data->endPos())) { (data->fadeDownPos()<=data->endPos())) {
sql+=QString().sprintf("FADEDOWN_POINT=%d,",data->fadeDownPos()); sql+=QString().sprintf("FADEDOWN_POINT=%d,",data->fadeDownPos());
} }
if((data->startDate()>QDate(1900,1,1))&&(data->endDate().year()<8000)) { if(data->startDate().isValid() &&
if(data->startTime().isValid()) { (data->startDate()>QDate(1900,1,1))&&(data->endDate().year()<8000)) {
sql+=QString().sprintf("START_DATETIME=\"%s %s\",",
(const char *)data->startDate(). /* Reworked,
toString("yyyy-MM-dd"), * if date not valid, do nothing
(const char *)data->startTime(). * if time valid use date + time
toString("hh:mm:ss")); * else use date + 00:00:00
} */
else { QDateTime startDateTime(data->startDate());
sql+=QString().sprintf("START_DATETIME=\"%s 00:00:00\",",
(const char *)data->startDate(). if(data->startTime().isValid())
toString("yyyy-MM-dd")); startDateTime.setTime(data->startTime());
} else
startDateTime.setTime(QTime(0,0,0));
sql+=QString().sprintf("START_DATETIME=%s,",
(const char *)RDCheckDateTime(startDateTime,"yyyy-MM-dd hh:mm:ss"));
if(data->endDate().isValid()&&(data->endDate().year()<8000)) { if(data->endDate().isValid()&&(data->endDate().year()<8000)) {
if(data->endTime().isValid()) {
sql+=QString().sprintf("END_DATETIME=\"%s %s\",", // Reworked as START_DATETIME
(const char *)data->endDate(). QDateTime endDateTime(data->endDate());
toString("yyyy-MM-dd"),
(const char *)data->endTime(). if(data->endTime().isValid())
toString("hh:mm:ss")); endDateTime.setTime(data->endTime());
} else
else { endDateTime.setTime(QTime(23,59,59));
sql+=QString().sprintf("END_DATETIME=\"%s 23:59:59\",",
(const char *)data->endDate(). sql+=QString().sprintf("END_DATETIME=%s,",
toString("yyyy-MM-dd")); (const char *)RDCheckDateTime(endDateTime,"yyyy-MM-dd hh:mm:ss"));
}
} }
} }
if(sql.right(1)==",") { if(sql.right(1)==",") {
@ -1603,9 +1608,9 @@ void RDCut::SetRow(const QString &param,const QDateTime &value) const
RDSqlQuery *q; RDSqlQuery *q;
QString sql; QString sql;
sql=QString().sprintf("UPDATE CUTS SET %s=\"%s\" WHERE CUT_NAME=\"%s\"", sql=QString().sprintf("UPDATE CUTS SET %s=%s WHERE CUT_NAME=\"%s\"",
(const char *)param, (const char *)param,
(const char *)value.toString("yyyy-MM-dd hh:mm:ss"), (const char *)RDCheckDateTime(value,"yyyy-MM-dd hh:mm:ss"),
(const char *)cut_name); (const char *)cut_name);
q=new RDSqlQuery(sql,cut_db); q=new RDSqlQuery(sql,cut_db);
delete q; delete q;
@ -1617,9 +1622,9 @@ void RDCut::SetRow(const QString &param,const QDate &value) const
RDSqlQuery *q; RDSqlQuery *q;
QString sql; QString sql;
sql=QString().sprintf("UPDATE CUTS SET %s=\"%s\" WHERE CUT_NAME=\"%s\"", sql=QString().sprintf("UPDATE CUTS SET %s=%s WHERE CUT_NAME=\"%s\"",
(const char *)param, (const char *)param,
(const char *)value.toString("yyyy-MM-dd"), (const char *)RDCheckDateTime(value,"yyyy-MM-dd"),
(const char *)cut_name); (const char *)cut_name);
q=new RDSqlQuery(sql,cut_db); q=new RDSqlQuery(sql,cut_db);
delete q; delete q;
@ -1630,9 +1635,9 @@ void RDCut::SetRow(const QString &param,const QTime &value) const
{ {
RDSqlQuery *q; RDSqlQuery *q;
QString sql; QString sql;
sql=QString().sprintf("UPDATE CUTS SET %s=\"%s\" WHERE CUT_NAME=\"%s\"", sql=QString().sprintf("UPDATE CUTS SET %s=%s WHERE CUT_NAME=\"%s\"",
(const char *)param, (const char *)param,
(const char *)value.toString("hh:mm:ss"), (const char *)RDCheckDateTime(value,"hh:mm:ss"),
(const char *)cut_name); (const char *)cut_name);
q=new RDSqlQuery(sql,cut_db); q=new RDSqlQuery(sql,cut_db);
delete q; delete q;

View File

@ -21,6 +21,58 @@
#include <vector> #include <vector>
#include <rdescape_string.h> #include <rdescape_string.h>
#include <qdatetime.h>
/**
* RDCheckDateTime - Checks for QTime.isValid
* @param time - QTime object
* @param format - QString representing time format e.g. HH:MM
* @return QString, "NULL" if not Valid else formatted Time String
*/
QString RDCheckDateTime(QTime const &time, QString const &format)
{
QString checkedValue = "NULL";
if(time.isValid())
checkedValue = "\"" + time.toString(format) + "\"";
return checkedValue;
}
/**
* RDCheckDateTime - Checks for QDateTime.isValid
* @param datetime - QDateTime object
* @param format - QString representing date time format e.g. yyyy-mm-dd HH:MM
* @return QString, "NULL" if not Valid else formatted DateTime String
*/
QString RDCheckDateTime(QDateTime const &datetime, QString const &format)
{
QString checkedValue = "NULL";
if(datetime.isValid())
checkedValue = "\"" + datetime.toString(format) + "\"";
return checkedValue;
}
/**
* RDCheckDateTime - Checks for QDate.isValid
* @param date - QDate object
* @param format - QString representing date format e.g. yyyy-mm-dd
* @return QString, "NULL" if not Valid else formatted Date String
*/
QString RDCheckDateTime(QDate const &date, QString const &format)
{
QString checkedValue = "NULL";
if(date.isValid())
checkedValue = "\"" + date.toString(format) + "\"";
return checkedValue;
}
QString RDEscapeString(QString const &str) QString RDEscapeString(QString const &str)
{ {

View File

@ -19,11 +19,16 @@
// //
#include <qstring.h> #include <qstring.h>
#include <qdatetime.h>
#ifndef RDESCAPE_STRING_H #ifndef RDESCAPE_STRING_H
#define RDESCAPE_STRING_H #define RDESCAPE_STRING_H
QString RDCheckDateTime(const QTime &time, const QString &format);
QString RDCheckDateTime(const QDateTime &datetime, const QString &format);
QString RDCheckDateTime(const QDate &date, const QString &format);
QString RDEscapeString(const QString &str); QString RDEscapeString(const QString &str);
#endif // RDESCAPE_STRING_H #endif // RDESCAPE_STRING_H

View File

@ -814,7 +814,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
sql=QString().sprintf("insert into `%s_LOG` set ID=%d,COUNT=%d,TYPE=%d,\ sql=QString().sprintf("insert into `%s_LOG` set ID=%d,COUNT=%d,TYPE=%d,\
SOURCE=%d,START_TIME=%d,GRACE_TIME=%d, \ SOURCE=%d,START_TIME=%d,GRACE_TIME=%d, \
CART_NUMBER=%u,TIME_TYPE=%d,POST_POINT=\"%s\", \ CART_NUMBER=%u,TIME_TYPE=%d,POST_POINT=\"%s\", \
TRANS_TYPE=%d,EXT_START_TIME=\"%s\",\ TRANS_TYPE=%d,EXT_START_TIME=%s,\
EVENT_LENGTH=%d", EVENT_LENGTH=%d",
(const char *)logname,count,count, (const char *)logname,count,count,
RDLogLine::Cart,source, RDLogLine::Cart,source,
@ -824,7 +824,7 @@ bool RDEventLine::generateLog(QString logname,const QString &svcname,
time_type, time_type,
(const char *)RDYesNo(post_point), (const char *)RDYesNo(post_point),
trans_type, trans_type,
(const char *)time.toString("hh:mm:ss"), (const char *)RDCheckDateTime(time,"hh:mm:ss"),
event_length); event_length);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;

View File

@ -320,7 +320,7 @@ QDateTime RDFeed::lastBuildDateTime() const
void RDFeed::setLastBuildDateTime(const QDateTime &datetime) const void RDFeed::setLastBuildDateTime(const QDateTime &datetime) const
{ {
SetRow("LAST_BUILD_DATETIME",datetime.toString("yyyy-MM-dd hh:mm:ss")); SetRow("LAST_BUILD_DATETIME",datetime,"yyyy-MM-dd hh:mm:ss");
} }
@ -333,7 +333,7 @@ QDateTime RDFeed::originDateTime() const
void RDFeed::setOriginDateTime(const QDateTime &datetime) const void RDFeed::setOriginDateTime(const QDateTime &datetime) const
{ {
SetRow("ORIGIN_DATETIME",datetime.toString("yyyy-MM-dd hh:mm:ss")); SetRow("ORIGIN_DATETIME",datetime,"yyyy-MM-dd hh:mm:ss");
} }
@ -896,3 +896,17 @@ void RDFeed::SetRow(const QString &param,const QString &value) const
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
} }
void RDFeed::SetRow(const QString &param,const QDateTime &value,
const QString &format) const
{
RDSqlQuery *q;
QString sql;
sql=QString().sprintf("UPDATE FEEDS SET %s=%s WHERE KEY_NAME=\"%s\"",
(const char *)param,
(const char *)RDCheckDateTime(value, format),
(const char *)feed_keyname);
q=new RDSqlQuery(sql);
delete q;
}

View File

@ -123,6 +123,8 @@ class RDFeed : public QObject
QString GetTempFilename() const; QString GetTempFilename() const;
void SetRow(const QString &param,int value) const; void SetRow(const QString &param,int value) const;
void SetRow(const QString &param,const QString &value) const; void SetRow(const QString &param,const QString &value) const;
void SetRow(const QString &param,const QDateTime &value,
const QString &format) const;
QString feed_keyname; QString feed_keyname;
unsigned feed_id; unsigned feed_id;
}; };

View File

@ -661,9 +661,9 @@ void RDLog::SetRow(const QString &param,const QDate &value) const
RDSqlQuery *q; RDSqlQuery *q;
QString sql; QString sql;
sql=QString().sprintf("UPDATE LOGS SET %s=\"%s\" WHERE NAME=\"%s\"", sql=QString().sprintf("UPDATE LOGS SET %s=%s WHERE NAME=\"%s\"",
(const char *)param, (const char *)param,
(const char *)value.toString("yyyy/MM/dd"), (const char *)RDCheckDateTime(value,"yyyy/MM/dd"),
(const char *)RDEscapeString(log_name)); (const char *)RDEscapeString(log_name));
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
@ -675,9 +675,9 @@ void RDLog::SetRow(const QString &param,const QDateTime &value) const
RDSqlQuery *q; RDSqlQuery *q;
QString sql; QString sql;
sql=QString().sprintf("UPDATE LOGS SET %s=\"%s\" WHERE NAME=\"%s\"", sql=QString().sprintf("UPDATE LOGS SET %s=%s WHERE NAME=\"%s\"",
(const char *)param, (const char *)param,
(const char *)value.toString("yyyy-MM-dd hh:mm:ss"), (const char *)RDCheckDateTime(value,"yyyy-MM-dd hh:mm:ss"),
(const char *)RDEscapeString(log_name)); (const char *)RDEscapeString(log_name));
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;

View File

@ -244,6 +244,7 @@ int RDLogEvent::validate(QString *report,const QDate &date)
// //
// Handle events with no logged start time (e.g. manual inserts) // Handle events with no logged start time (e.g. manual inserts)
// //
//TODO do we need to verify date here?
sql=QString(). sql=QString().
sprintf("select CUT_NAME from CUTS where \ sprintf("select CUT_NAME from CUTS where \
(CART_NUMBER=%u)&& \ (CART_NUMBER=%u)&& \
@ -258,6 +259,7 @@ int RDLogEvent::validate(QString *report,const QDate &date)
(const char *)RDDowCode(date.dayOfWeek())); (const char *)RDDowCode(date.dayOfWeek()));
} }
else { else {
//TODO Do we need to verify date and logLine(i)->startTime?
sql=QString(). sql=QString().
sprintf("select CUT_NAME from CUTS where \ sprintf("select CUT_NAME from CUTS where \
(CART_NUMBER=%u)&& \ (CART_NUMBER=%u)&& \
@ -1184,7 +1186,7 @@ void RDLogEvent::InsertLines(QString values) {
void RDLogEvent::InsertLineValues(QString *query, int line) void RDLogEvent::InsertLineValues(QString *query, int line)
{ {
// one line to save query space // one line to save query space
QString sql=QString().sprintf("(%d,%d,%u,%d,%d,%d,%d,%d,%d,%d,%d,\"%s\",\"%s\",%d,%d,\"%s\",%d,\"%s\",\"%s\",\"%s\",\"%s\",%d,%d,%d,%d,%d,\"%s\",%d,%d,%d,\"%s\",\"%s\",\"%s\",%d,%d,%d,%d,%d)", QString sql=QString().sprintf("(%d,%d,%u,%d,%d,%d,%d,%d,%d,%d,%d,\"%s\",\"%s\",%d,%d,%s,%d,\"%s\",\"%s\",\"%s\",\"%s\",%d,%d,%d,%d,%d,\"%s\",%d,%d,%d,\"%s\",\"%s\",%s,%d,%d,%d,%d,%d)",
log_line[line]->id(), log_line[line]->id(),
line, line,
log_line[line]->cartNumber(), log_line[line]->cartNumber(),
@ -1203,8 +1205,8 @@ void RDLogEvent::InsertLineValues(QString *query, int line)
RDEscapeString(log_line[line]->markerLabel()), RDEscapeString(log_line[line]->markerLabel()),
log_line[line]->graceTime(), log_line[line]->graceTime(),
log_line[line]->source(), log_line[line]->source(),
(const char *)log_line[line]->extStartTime(). (const char *)RDCheckDateTime(
toString("hh:mm:ss"), log_line[line]->extStartTime(),"hh:mm:ss"),
log_line[line]->extLength(), log_line[line]->extLength(),
(const char *)RDEscapeString(log_line[line]->extData()), (const char *)RDEscapeString(log_line[line]->extData()),
(const char *) (const char *)
@ -1226,8 +1228,8 @@ void RDLogEvent::InsertLineValues(QString *query, int line)
(const char *)RDYesNo(log_line[line]->linkEmbedded()), (const char *)RDYesNo(log_line[line]->linkEmbedded()),
(const char *) (const char *)
RDEscapeString(log_line[line]->originUser()), RDEscapeString(log_line[line]->originUser()),
(const char *)log_line[line]->originDateTime(). (const char *)RDCheckDateTime(
toString("yyyy-MM-dd hh:mm:ss"), log_line[line]->originDateTime(),"yyyy-MM-dd hh:mm:ss"),
log_line[line]->linkStartSlop(), log_line[line]->linkStartSlop(),
log_line[line]->linkEndSlop(), log_line[line]->linkEndSlop(),
log_line[line]->duckUpGain(), log_line[line]->duckUpGain(),

View File

@ -209,7 +209,7 @@ QDateTime RDPodcast::originDateTime() const
void RDPodcast::setOriginDateTime(const QDateTime &datetime) const void RDPodcast::setOriginDateTime(const QDateTime &datetime) const
{ {
SetRow("ORIGIN_DATETIME",datetime.toString("yyyy-MM-dd hh:mm:ss")); SetRow("ORIGIN_DATETIME",datetime,"yyyy-MM-dd hh:mm:ss");
} }
@ -222,7 +222,7 @@ QDateTime RDPodcast::effectiveDateTime() const
void RDPodcast::setEffectiveDateTime(const QDateTime &datetime) const void RDPodcast::setEffectiveDateTime(const QDateTime &datetime) const
{ {
SetRow("EFFECTIVE_DATETIME",datetime.toString("yyyy-MM-dd hh:mm:ss")); SetRow("EFFECTIVE_DATETIME",datetime,"yyyy-MM-dd hh:mm:ss");
} }
@ -398,3 +398,18 @@ void RDPodcast::SetRow(const QString &param,const QString &value) const
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
} }
void RDPodcast::SetRow(const QString &param,const QDateTime &value,
const QString &format) const
{
RDSqlQuery *q;
QString sql;
sql=QString().sprintf("UPDATE PODCASTS SET %s=%s WHERE ID=%u",
(const char *)param,
(const char *)RDCheckDateTime(value, format),
podcast_id);
q=new RDSqlQuery(sql);
delete q;
}

View File

@ -76,6 +76,7 @@ class RDPodcast
private: private:
void SetRow(const QString &param,int value) const; void SetRow(const QString &param,int value) const;
void SetRow(const QString &param,const QString &value) const; void SetRow(const QString &param,const QString &value) const;
void SetRow(const QString &param,const QDateTime &datetime,const QString &value) const;
QString podcast_keyname; QString podcast_keyname;
unsigned podcast_id; unsigned podcast_id;
}; };

View File

@ -945,9 +945,9 @@ void RDRecording::SetRow(const QString &param,const QTime &value) const
RDSqlQuery *q; RDSqlQuery *q;
QString sql; QString sql;
sql=QString().sprintf("update RECORDINGS set %s=\"%s\" where ID=%d", sql=QString().sprintf("update RECORDINGS set %s=%s where ID=%d",
(const char *)param, (const char *)param,
(const char *)value.toString("hh:mm:ss"),rec_id); (const char *)RDCheckDateTime(value,"hh:mm:ss"),rec_id);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
} }

View File

@ -346,6 +346,7 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
for(int i=0;i<(startdate.daysTo(enddate)+1);i++) { for(int i=0;i<(startdate.daysTo(enddate)+1);i++) {
QDate date=startdate.addDays(i); QDate date=startdate.addDays(i);
if(startTime()<endTime()) { if(startTime()<endTime()) {
//TODO Do we need to escape on Select Statement?
daypart_sql+=QString("((EVENT_DATETIME>=\"")+ daypart_sql+=QString("((EVENT_DATETIME>=\"")+
date.toString("yyyy-MM-dd")+ date.toString("yyyy-MM-dd")+
" "+startTime().toString("hh:mm:ss")+"\")&&"+ " "+startTime().toString("hh:mm:ss")+"\")&&"+
@ -534,6 +535,7 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
// Daypart Filter // Daypart Filter
// //
if(daypart_sql.isEmpty()) { if(daypart_sql.isEmpty()) {
//TODO Do we need to escape on Select statement?
sql+=QString("(EVENT_DATETIME>=\"")+startdate.toString("yyyy-MM-dd")+ sql+=QString("(EVENT_DATETIME>=\"")+startdate.toString("yyyy-MM-dd")+
" 00:00:00\")&&"+ " 00:00:00\")&&"+
"(EVENT_DATETIME<=\""+enddate.toString("yyyy-MM-dd")+ "(EVENT_DATETIME<=\""+enddate.toString("yyyy-MM-dd")+
@ -555,8 +557,8 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
q1->value(1).toUInt(), q1->value(1).toUInt(),
q1->value(2).toInt())+ q1->value(2).toInt())+
"STATION_NAME=\""+RDEscapeString(q1->value(3).toString())+"\","+ "STATION_NAME=\""+RDEscapeString(q1->value(3).toString())+"\","+
"EVENT_DATETIME=\""+RDEscapeString(q1->value(4).toDateTime(). "EVENT_DATETIME="+RDCheckDateTime(q1->value(4).toDateTime(),
toString("yyyy-MM-dd hh:mm:ss"))+"\","+ "yyyy-MM-dd hh:mm:ss")+","+
QString().sprintf("EVENT_TYPE=%d,",q1->value(5).toInt())+ QString().sprintf("EVENT_TYPE=%d,",q1->value(5).toInt())+
"EXT_START_TIME=\""+RDEscapeString(q1->value(6).toString())+"\","+ "EXT_START_TIME=\""+RDEscapeString(q1->value(6).toString())+"\","+
QString().sprintf("EXT_LENGTH=%d,",q1->value(7).toInt())+ QString().sprintf("EXT_LENGTH=%d,",q1->value(7).toInt())+
@ -571,8 +573,8 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
"LOG_NAME=\""+RDEscapeString(q1->value(15).toString())+"\","+ "LOG_NAME=\""+RDEscapeString(q1->value(15).toString())+"\","+
"TITLE=\""+RDEscapeString(q1->value(16).toString())+"\","+ "TITLE=\""+RDEscapeString(q1->value(16).toString())+"\","+
"ARTIST=\""+RDEscapeString(q1->value(17).toString())+"\","+ "ARTIST=\""+RDEscapeString(q1->value(17).toString())+"\","+
"SCHEDULED_TIME=\""+ "SCHEDULED_TIME="+
q1->value(18).toDate().toString("yyyy-MM-dd hh:mm:ss")+"\","+ RDCheckDateTime(q1->value(18).toDate(),"yyyy-MM-dd hh:mm:ss")+","+
QString().sprintf("START_SOURCE=%d,",q1->value(19).toInt())+ QString().sprintf("START_SOURCE=%d,",q1->value(19).toInt())+
"PUBLISHER=\""+RDEscapeString(q1->value(20).toString())+"\","+ "PUBLISHER=\""+RDEscapeString(q1->value(20).toString())+"\","+
"COMPOSER=\""+RDEscapeString(q1->value(21).toString())+"\","+ "COMPOSER=\""+RDEscapeString(q1->value(21).toString())+"\","+
@ -921,9 +923,9 @@ void RDReport::SetRow(const QString &param,const QTime &value) const
RDSqlQuery *q; RDSqlQuery *q;
QString sql; QString sql;
sql=QString().sprintf("UPDATE REPORTS SET %s=\"%s\" WHERE NAME=\"%s\"", sql=QString().sprintf("UPDATE REPORTS SET %s=%s WHERE NAME=\"%s\"",
(const char *)param, (const char *)param,
(const char *)value.toString("hh:mm:ss"), (const char *)RDCheckDateTime(value, "hh:mm:ss"),
(const char *)report_name); (const char *)report_name);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;

View File

@ -1485,13 +1485,19 @@ void RDSoundPanel::LogTraffic(RDPanelButton *button)
"CUTS.CUT_NAME=\""+RDEscapeString(button->cutName())+"\""; "CUTS.CUT_NAME=\""+RDEscapeString(button->cutName())+"\"";
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
if(q->first()) { if(q->first()) {
QString eventDateTimeSQL = "NULL";
if(datetime.isValid() && button->startTime().isValid())
eventDateTimeSQL = RDCheckDateTime(QDateTime(datetime.date(),
button->startTime()), "yyyy-MM-dd hh:mm:ss");
sql=QString("insert into `")+panel_svcname+"_SRT` set "+ sql=QString("insert into `")+panel_svcname+"_SRT` set "+
QString().sprintf("LENGTH=%d,",button->startTime(). QString().sprintf("LENGTH=%d,",button->startTime().
msecsTo(datetime.time()))+ msecsTo(datetime.time()))+
QString().sprintf("CART_NUMBER=%u,",button->cart())+ QString().sprintf("CART_NUMBER=%u,",button->cart())+
"STATION_NAME=\""+RDEscapeString(panel_station->name().utf8())+"\","+ "STATION_NAME=\""+RDEscapeString(panel_station->name().utf8())+"\","+
"EVENT_DATETIME=\""+datetime.toString("yyyy-MM-dd")+" "+ "EVENT_DATETIME="+eventDateTimeSQL+","+
button->startTime().toString("hh:mm:ss")+"\","+
QString().sprintf("EVENT_TYPE=%d,",RDAirPlayConf::TrafficStop)+ QString().sprintf("EVENT_TYPE=%d,",RDAirPlayConf::TrafficStop)+
QString().sprintf("EVENT_SOURCE=%d,",RDLogLine::SoundPanel)+ QString().sprintf("EVENT_SOURCE=%d,",RDLogLine::SoundPanel)+
QString().sprintf("PLAY_SOURCE=%d,",RDLogLine::SoundPanel)+ QString().sprintf("PLAY_SOURCE=%d,",RDLogLine::SoundPanel)+

View File

@ -731,9 +731,9 @@ bool RDSvc::generateLog(const QDate &date,const QString &logname,
// //
// Generate Log Structure // Generate Log Structure
// //
QString purge_date; QDate purge_date;
if(defaultLogShelflife()>=0) { if(defaultLogShelflife()>=0) {
purge_date=date.addDays(defaultLogShelflife()).toString("yyyy-MM-dd"); purge_date=date.addDays(defaultLogShelflife());
} }
sql=QString().sprintf("select NAME from LOGS where NAME=\"%s\"", sql=QString().sprintf("select NAME from LOGS where NAME=\"%s\"",
(const char *)RDEscapeString(logname)); (const char *)RDEscapeString(logname));
@ -748,8 +748,8 @@ bool RDSvc::generateLog(const QDate &date,const QString &logname,
(const char *)RDEscapeString(svc_name), (const char *)RDEscapeString(svc_name),
(const char *)RDEscapeString(RDDateDecode(descriptionTemplate(),date)), (const char *)RDEscapeString(RDDateDecode(descriptionTemplate(),date)),
"RDLogManager"); "RDLogManager");
if(!purge_date.isEmpty()) { if(!purge_date.isValid()) {
sql+=(",PURGE_DATE=\""+purge_date+"\""); sql+=(",PURGE_DATE=\""+purge_date.toString("yyyy-MM-dd")+"\"");
} }
sql+=(" where NAME=\""+RDEscapeString(logname)+"\""); sql+=(" where NAME=\""+RDEscapeString(logname)+"\"");
@ -765,12 +765,12 @@ bool RDSvc::generateLog(const QDate &date,const QString &logname,
SERVICE=\"%s\",DESCRIPTION=\"%s\",\ SERVICE=\"%s\",DESCRIPTION=\"%s\",\
ORIGIN_USER=\"%s\",ORIGIN_DATETIME=now(),\ ORIGIN_USER=\"%s\",ORIGIN_DATETIME=now(),\
LINK_DATETIME=now(),MODIFIED_DATETIME=now(),\ LINK_DATETIME=now(),MODIFIED_DATETIME=now(),\
PURGE_DATE=\"%s\"", PURGE_DATE=%s",
(const char *)RDEscapeString(logname), (const char *)RDEscapeString(logname),
(const char *)RDEscapeString(svc_name), (const char *)RDEscapeString(svc_name),
(const char *)RDEscapeString(RDDateDecode(descriptionTemplate(),date)), (const char *)RDEscapeString(RDDateDecode(descriptionTemplate(),date)),
"RDLogManager", "RDLogManager",
(const char *)purge_date); (const char *)RDCheckDateTime(purge_date,"yyyy-MM-dd"));
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
} }

View File

@ -44,17 +44,23 @@ void LogTraffic(const QString &svcname,const QString &logname,
if((logline==NULL)||(svcname.isEmpty())) { if((logline==NULL)||(svcname.isEmpty())) {
return; return;
} }
QString eventDateTimeSQL = "NULL";
if(datetime.isValid() && logline->startTime(RDLogLine::Actual).isValid())
eventDateTimeSQL = RDCheckDateTime(QDateTime(datetime.date(),
logline->startTime(RDLogLine::Actual)), "yyyy-MM-dd hh:mm:ss");
sql=QString("insert into `")+RDSvc::svcTableName(svcname)+"` set "+ sql=QString("insert into `")+RDSvc::svcTableName(svcname)+"` set "+
QString().sprintf("LENGTH=%d,",length)+ QString().sprintf("LENGTH=%d,",length)+
"LOG_NAME=\""+RDEscapeString(logname.utf8())+"\","+ "LOG_NAME=\""+RDEscapeString(logname.utf8())+"\","+
QString().sprintf("LOG_ID=%d,",logline->id())+ QString().sprintf("LOG_ID=%d,",logline->id())+
QString().sprintf("CART_NUMBER=%u,",logline->cartNumber())+ QString().sprintf("CART_NUMBER=%u,",logline->cartNumber())+
"STATION_NAME=\""+RDEscapeString(rdstation_conf->name().utf8())+"\","+ "STATION_NAME=\""+RDEscapeString(rdstation_conf->name().utf8())+"\","+
"EVENT_DATETIME=\""+datetime.toString("yyyy-MM-dd")+" "+ "EVENT_DATETIME="+eventDateTimeSQL+","+
logline->startTime(RDLogLine::Actual).toString("hh:mm:ss")+"\","+
QString().sprintf("EVENT_TYPE=%d,",action)+ QString().sprintf("EVENT_TYPE=%d,",action)+
QString().sprintf("EVENT_SOURCE=%d,",logline->source())+ QString().sprintf("EVENT_SOURCE=%d,",logline->source())+
"EXT_START_TIME=\""+logline->extStartTime().toString("hh:mm:ss")+"\","+ "EXT_START_TIME=\""+RDCheckDateTime(logline->extStartTime(),"hh:mm:ss")+"\","+
QString().sprintf("EXT_LENGTH=%d,",logline->extLength())+ QString().sprintf("EXT_LENGTH=%d,",logline->extLength())+
"EXT_DATA=\""+RDEscapeString(logline->extData())+"\","+ "EXT_DATA=\""+RDEscapeString(logline->extData())+"\","+
"EXT_EVENT_ID=\""+RDEscapeString(logline->extEventId())+"\","+ "EXT_EVENT_ID=\""+RDEscapeString(logline->extEventId())+"\","+
@ -64,8 +70,8 @@ void LogTraffic(const QString &svcname,const QString &logname,
"EXT_CART_NAME=\""+RDEscapeString(logline->extCartName().utf8())+"\","+ "EXT_CART_NAME=\""+RDEscapeString(logline->extCartName().utf8())+"\","+
"TITLE=\""+RDEscapeString(logline->title().utf8())+"\","+ "TITLE=\""+RDEscapeString(logline->title().utf8())+"\","+
"ARTIST=\""+RDEscapeString(logline->artist().utf8())+"\","+ "ARTIST=\""+RDEscapeString(logline->artist().utf8())+"\","+
"SCHEDULED_TIME=\""+RDEscapeString(logline->startTime(RDLogLine::Logged). "SCHEDULED_TIME="+RDCheckDateTime(logline->startTime(RDLogLine::Logged),
toString("hh:mm:ss"))+"\","+ "hh:mm:ss")+","+
"ISRC=\""+RDEscapeString(logline->isrc().utf8())+"\","+ "ISRC=\""+RDEscapeString(logline->isrc().utf8())+"\","+
"PUBLISHER=\""+RDEscapeString(logline->publisher().utf8())+"\","+ "PUBLISHER=\""+RDEscapeString(logline->publisher().utf8())+"\","+
"COMPOSER=\""+RDEscapeString(logline->composer().utf8())+"\","+ "COMPOSER=\""+RDEscapeString(logline->composer().utf8())+"\","+

View File

@ -29,6 +29,7 @@
#include <rd.h> #include <rd.h>
#include <rddb.h> #include <rddb.h>
#include <sas_switch_torture.h> #include <sas_switch_torture.h>
#include <rdescape_string.h>
MainWidget::MainWidget(QWidget *parent) MainWidget::MainWidget(QWidget *parent)
:QWidget(parent) :QWidget(parent)
@ -123,13 +124,13 @@ void MainWidget::generateData()
SUN=\'Y\',MON=\'Y\',TUE=\'Y\',WED=\'Y\',THU=\'Y\',\ SUN=\'Y\',MON=\'Y\',TUE=\'Y\',WED=\'Y\',THU=\'Y\',\
FRI=\'Y\',SAT=\'Y\',DESCRIPTION=\"%s\",\ FRI=\'Y\',SAT=\'Y\',DESCRIPTION=\"%s\",\
CUT_NAME=\"SAS_SWITCH_TORTURE\",\ CUT_NAME=\"SAS_SWITCH_TORTURE\",\
START_TIME=\"%s\",TYPE=1", START_TIME=%s,TYPE=1",
SAS_STATION, SAS_STATION,
SAS_MATRIX, SAS_MATRIX,
j+1, j+1,
k+1, k+1,
(const char *)desc, (const char *)desc,
(const char *)time.toString("hh:mm:ss")); (const char *)RDCheckDateTime(time,"hh:mm:ss"));
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
} }

View File

@ -29,6 +29,7 @@
#include <rd.h> #include <rd.h>
#include <rddb.h> #include <rddb.h>
#include <sas_torture.h> #include <sas_torture.h>
#include <rdescape_string.h>
MainWidget::MainWidget(QWidget *parent) MainWidget::MainWidget(QWidget *parent)
:QWidget(parent) :QWidget(parent)
@ -137,11 +138,11 @@ void MainWidget::generateData()
SUN=\'Y\',MON=\'Y\',TUE=\'Y\',WED=\'Y\',THU=\'Y\',\ SUN=\'Y\',MON=\'Y\',TUE=\'Y\',WED=\'Y\',THU=\'Y\',\
FRI=\'Y\',SAT=\'Y\',DESCRIPTION=\"%s\",\ FRI=\'Y\',SAT=\'Y\',DESCRIPTION=\"%s\",\
CUT_NAME=\"SAS_TORTURE\",MACRO_CART=%d,\ CUT_NAME=\"SAS_TORTURE\",MACRO_CART=%d,\
START_TIME=\"%s\",TYPE=1", START_TIME=%s,TYPE=1",
SAS_STATION, SAS_STATION,
(const char *)desc, (const char *)desc,
CART_START+j, CART_START+j,
(const char *)time.toString("hh:mm:ss")); (const char *)RDCheckDateTime(time,"hh:mm:ss"));
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;
} }

View File

@ -431,6 +431,12 @@ bool MainWidget::CheckSpot(const QString &isci)
QDate today=QDate::currentDate(); QDate today=QDate::currentDate();
QDate killdate=dg_date_edit->date().addDays(RDDGIMPORT_KILLDATE_OFFSET); QDate killdate=dg_date_edit->date().addDays(RDDGIMPORT_KILLDATE_OFFSET);
QString endDateTimeSQL = "NULL";
if(killdate.isValid())
endDateTimeSQL = RDCheckDateTime(QDateTime(killdate,QTime(23,59,59)),
"yyyy-MM-dd hh:mm:ss");
sql=QString("select CUT_NAME,CUTS.START_DATETIME,CUTS.END_DATETIME ")+ sql=QString("select CUT_NAME,CUTS.START_DATETIME,CUTS.END_DATETIME ")+
"from CART left join CUTS on CART.NUMBER=CUTS.CART_NUMBER "+ "from CART left join CUTS on CART.NUMBER=CUTS.CART_NUMBER "+
"where (CART.GROUP_NAME=\""+RDEscapeString(dg_svc->autospotGroup())+"\")&&" "where (CART.GROUP_NAME=\""+RDEscapeString(dg_svc->autospotGroup())+"\")&&"
@ -443,7 +449,7 @@ bool MainWidget::CheckSpot(const QString &isci)
if(q->value(1).isNull()) { if(q->value(1).isNull()) {
sql+="START_DATETIME=\""+today.toString("yyyy-MM-dd")+" 00:00:00\","; sql+="START_DATETIME=\""+today.toString("yyyy-MM-dd")+" 00:00:00\",";
} }
sql+="END_DATETIME=\""+killdate.toString("yyyy-MM-dd")+" 23:59:59\" "; sql+="END_DATETIME="+endDateTimeSQL+" ";
sql+="where CUT_NAME=\""+q->value(0).toString()+"\""; sql+="where CUT_NAME=\""+q->value(0).toString()+"\"";
q1=new RDSqlQuery(sql); q1=new RDSqlQuery(sql);
delete q1; delete q1;

View File

@ -1864,15 +1864,15 @@ void MainObject::WriteTimestampCache(const QString &filename,
sql=QString().sprintf("insert into DROPBOX_PATHS set \ sql=QString().sprintf("insert into DROPBOX_PATHS set \
DROPBOX_ID=%d,\ DROPBOX_ID=%d,\
FILE_PATH=\"%s\",\ FILE_PATH=\"%s\",\
FILE_DATETIME=\"%s\"", FILE_DATETIME=%s",
import_persistent_dropbox_id, import_persistent_dropbox_id,
(const char *)RDEscapeString(filename), (const char *)RDEscapeString(filename),
(const char *)dt.toString("yyyy-MM-dd hh:mm:ss")); (const char *)RDCheckDateTime(dt,"yyyy-MM-dd hh:mm:ss"));
} }
else { else {
sql=QString().sprintf("update DROPBOX_PATHS set FILE_DATETIME=\"%s\" \ sql=QString().sprintf("update DROPBOX_PATHS set FILE_DATETIME=%s \
where (DROPBOX_ID=%d)&&(FILE_PATH=\"%s\")", where (DROPBOX_ID=%d)&&(FILE_PATH=\"%s\")",
(const char *)dt.toString("yyyy-MM-dd hh:mm:ss"), (const char *)RDCheckDateTime(dt,"yyyy-MM-dd hh:mm:ss"),
import_persistent_dropbox_id, import_persistent_dropbox_id,
(const char *)RDEscapeString(filename)); (const char *)RDEscapeString(filename));
} }

View File

@ -1310,7 +1310,7 @@ void MainObject::CommitCast()
ITEM_SOURCE_TEXT=\"%s\",\ ITEM_SOURCE_TEXT=\"%s\",\
ITEM_SOURCE_URL=\"%s\",\ ITEM_SOURCE_URL=\"%s\",\
SHELF_LIFE=%d,\ SHELF_LIFE=%d,\
EFFECTIVE_DATETIME=\"%s\" \ EFFECTIVE_DATETIME=%s \
where ID=%d", where ID=%d",
status, status,
(const char *)RDEscapeString(item_title), (const char *)RDEscapeString(item_title),
@ -1322,8 +1322,8 @@ void MainObject::CommitCast()
(const char *)RDEscapeString(item_source_text), (const char *)RDEscapeString(item_source_text),
(const char *)RDEscapeString(item_source_url), (const char *)RDEscapeString(item_source_url),
shelf_life, shelf_life,
(const char *)RDLocalToUtc(effective_datetime). (const char *)RDCheckDateTime(RDLocalToUtc(effective_datetime),
toString("yyyy-MM-dd hh:mm:ss"), "yyyy-MM-dd hh:mm:ss"),
cast_cast_id); cast_cast_id);
q=new RDSqlQuery(sql); q=new RDSqlQuery(sql);
delete q; delete q;