mirror of
https://github.com/ElvishArtisan/rivendell.git
synced 2025-07-08 16:37:46 +02:00
Fixes for invalid NULL sql on date/times
Most files are simple swaps to get rid of extra " as a NULL return will give invalid SQL if used as follows UPDATE x SET y="NULL"; See github issue 121 for more info. Extra changes have been made to the following files: * lib/rdcartslot.cpp - Added a QDateTime variable to prevent EVENT_DATETIME becoming "2016-06-09" "NULL" as it was checked separately for date and time * lib/rdcut.cpp - Reworked START_DATETIME and END_DATETIME to save the SQL ifs. I believe this makes it easier to read and understand. - The >QDate(1900,1,1) and < 8000 is probably not needed but I left it there just in case. * lib/rdescape_string.cpp - Reworked to add extra " if the date is not NULL see issue 121 * lib/rdfeed.cpp && lib/rdpodcast.cpp - Had to add a SetRow for QDateTime as with the string conversion the existing SetRow would add an extra set of " * lib/rdsound_panel.cpp && rdairplay/log_traffic.cpp && utils/rddgimport/rddgimport.cpp - Added a QString to contain EVENT_DATETIME to prevent double checks of date and time separately (similar to lib/rdcartslot.cpp) * rdcatchd/rdcatchd.cpp - Reverted the changes. The RML here is not touching the DB so is fine, plus with the RDCheckDateTime changes you'd have extra " unless it was NULL * tests/sas_switch_torture.cpp && sas_torture.cpp - Included missing rdescape_string.h
This commit is contained in:
parent
9f52968a02
commit
f1175cd2f2
@ -274,7 +274,7 @@ MainObject::MainObject(QObject *parent)
|
||||
TITLE=\"%s\",\
|
||||
ARTIST=\"%s\",\
|
||||
ALBUM=\"%s\",\
|
||||
YEAR=\"%s\",\
|
||||
YEAR=%s,\
|
||||
ISRC=\"%s\",\
|
||||
LABEL=\"%s\",\
|
||||
CLIENT=\"%s\",\
|
||||
@ -347,7 +347,7 @@ MainObject::MainObject(QObject *parent)
|
||||
start_datetime="null";
|
||||
}
|
||||
else {
|
||||
start_datetime=QString().sprintf("\"%s\"",
|
||||
start_datetime=QString().sprintf("%s",
|
||||
(const char *)RDCheckDateTime(q1->value(7).
|
||||
toDateTime(),"yyyy-MM-dd hh:mm:ss"));//Could be invalid (0000-00-00)
|
||||
}
|
||||
@ -355,7 +355,7 @@ MainObject::MainObject(QObject *parent)
|
||||
end_datetime="null";
|
||||
}
|
||||
else {
|
||||
end_datetime=QString().sprintf("\"%s\"",
|
||||
end_datetime=QString().sprintf("%s",
|
||||
(const char *)RDCheckDateTime(q1->value(8).
|
||||
toDateTime(),"yyyy-MM-dd hh:mm:ss"));//Could be invalid (0000-00-00)
|
||||
}
|
||||
@ -363,7 +363,7 @@ MainObject::MainObject(QObject *parent)
|
||||
start_daypart="null";
|
||||
}
|
||||
else {
|
||||
start_daypart=QString().sprintf("\"%s\"",
|
||||
start_daypart=QString().sprintf("%s",
|
||||
(const char *)RDCheckDateTime(q1->value(16).
|
||||
toTime(),"hh:mm:ss"));//Invalid possible?
|
||||
}
|
||||
@ -371,7 +371,7 @@ MainObject::MainObject(QObject *parent)
|
||||
end_daypart="null";
|
||||
}
|
||||
else {
|
||||
end_daypart=QString().sprintf("\"%s\"",
|
||||
end_daypart=QString().sprintf("%s",
|
||||
(const char *)RDCheckDateTime(q1->value(17).
|
||||
toTime(),"hh:mm:ss"));//Invalid possible?
|
||||
}
|
||||
|
@ -1206,14 +1206,14 @@ void RDCart::updateLength(bool enforce_length,unsigned length)
|
||||
sql+="START_DATETIME=NULL,";
|
||||
}
|
||||
else {
|
||||
sql+=QString().sprintf("START_DATETIME=\"%s\",",
|
||||
sql+=QString().sprintf("START_DATETIME=%s,",
|
||||
(const char *)RDCheckDateTime(start_datetime,"yyyy-MM-dd hh:mm:ss"));
|
||||
}
|
||||
if(end_datetime.isNull()||(!dates_valid)) {
|
||||
sql+="END_DATETIME=NULL,";
|
||||
}
|
||||
else {
|
||||
sql+=QString().sprintf("END_DATETIME=\"%s\",",
|
||||
sql+=QString().sprintf("END_DATETIME=%s,",
|
||||
(const char *)RDCheckDateTime(end_datetime,"yyyy-MM-dd hh:mm:ss"));
|
||||
}
|
||||
sql+=QString().sprintf("VALIDITY=%u where NUMBER=%u",
|
||||
@ -1738,7 +1738,7 @@ void RDCart::SetRow(const QString ¶m,const QDateTime &value) const
|
||||
RDSqlQuery *q;
|
||||
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 *)RDCheckDateTime(value,"yyyy-MM-dd hh:mm:ss"),
|
||||
cart_number);
|
||||
@ -1752,7 +1752,7 @@ void RDCart::SetRow(const QString ¶m,const QDate &value) const
|
||||
RDSqlQuery *q;
|
||||
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 *)RDCheckDateTime(value,"yyyy-MM-dd"),
|
||||
cart_number);
|
||||
|
@ -670,6 +670,8 @@ void RDCartSlot::LogPlayout(RDPlayDeck::State state)
|
||||
datetime.setDate(datetime.date().addDays(-1));
|
||||
}
|
||||
if(!slot_svcname.isEmpty()) {
|
||||
QDateTime eventDateTime=QDateTime::QDateTime(datetime::date(),
|
||||
slot_logline->startTime(RDLogLine::Actual));
|
||||
QString svctablename=slot_svcname;
|
||||
svctablename.replace(" ","_");
|
||||
sql=QString("insert into `")+svctablename+"_SRT` set "+
|
||||
@ -687,19 +689,18 @@ void RDCartSlot::LogPlayout(RDPlayDeck::State state)
|
||||
slot_logline->usageCode(),
|
||||
slot_logline->startSource())+
|
||||
"STATION_NAME=\""+RDEscapeString(slot_station->name())+"\","+
|
||||
"EVENT_DATETIME=\""+datetime.toString("yyyy-MM-dd")+
|
||||
" "+RDCheckDateTime(
|
||||
slot_logline->startTime(RDLogLine::Actual),"hh:mm:ss")+"\","+
|
||||
"EXT_START_TIME=\""+RDCheckDateTime(
|
||||
slot_logline->extStartTime(),"hh:mm:ss")+"\","+
|
||||
"EVENT_DATETIME="+RDCheckDateTime(eventDateTime,"yyyy-MM-dd hh:mm:ss")+
|
||||
","+
|
||||
"EXT_START_TIME="+RDCheckDateTime(
|
||||
slot_logline->extStartTime(),"hh:mm:ss")+","+
|
||||
"EXT_DATA=\""+RDEscapeString(slot_logline->extData())+"\","+
|
||||
"EXT_EVENT_ID=\""+RDEscapeString(slot_logline->extEventId())+"\","+
|
||||
"EXT_ANNC_TYPE=\""+RDEscapeString(slot_logline->extAnncType())+"\","+
|
||||
"EXT_CART_NAME=\""+RDEscapeString(slot_logline->extCartName())+"\","+
|
||||
"TITLE=\""+RDEscapeString(slot_logline->title())+"\","+
|
||||
"ARTIST=\""+RDEscapeString(slot_logline->artist())+"\","+
|
||||
"SCHEDULED_TIME=\""+RDCheckDateTime(
|
||||
slot_logline->startTime(RDLogLine::Logged),"hh:mm:ss")+"\","+
|
||||
"SCHEDULED_TIME="+RDCheckDateTime(
|
||||
slot_logline->startTime(RDLogLine::Logged),"hh:mm:ss")+","+
|
||||
"ISRC=\""+RDEscapeString(slot_logline->isrc())+"\","+
|
||||
"PUBLISHER=\""+RDEscapeString(slot_logline->publisher())+"\","+
|
||||
"COMPOSER=\""+RDEscapeString(slot_logline->composer())+"\","+
|
||||
|
@ -1060,8 +1060,8 @@ void RDCut::setMetadata(RDWaveData *data) const
|
||||
}
|
||||
if(data->daypartStartTime().isValid()&&data->daypartEndTime().isValid()&&
|
||||
(data->daypartStartTime()<data->daypartEndTime())) {
|
||||
sql+="START_DAYPART=\""+RDCheckDateTime(data->daypartStartTime(),"hh:mm:ss")+"\","+
|
||||
"END_DAYPART=\""+RDCheckDateTime(data->daypartEndTime(),"hh:mm:ss")+"\",";
|
||||
sql+="START_DAYPART="+RDCheckDateTime(data->daypartStartTime(),"hh:mm:ss")+","+
|
||||
"END_DAYPART="+RDCheckDateTime(data->daypartEndTime(),"hh:mm:ss")+",";
|
||||
}
|
||||
if((data->hookStartPos()>=data->startPos())&&
|
||||
(data->hookStartPos()<=data->endPos())&&
|
||||
@ -1079,26 +1079,36 @@ void RDCut::setMetadata(RDWaveData *data) const
|
||||
(data->fadeDownPos()<=data->endPos())) {
|
||||
sql+=QString().sprintf("FADEDOWN_POINT=%d,",data->fadeDownPos());
|
||||
}
|
||||
if((data->startDate()>QDate(1900,1,1))&&(data->endDate().year()<8000)) {
|
||||
if(data->startTime().isValid()) {
|
||||
sql+=QString().sprintf("START_DATETIME=\"%s %s\",",
|
||||
(const char *)RDCheckDateTime(data->startDate(),"yyyy-MM-dd"),
|
||||
(const char *)RDCheckDateTime(data->startTime(),"hh:mm:ss"));
|
||||
}
|
||||
else {
|
||||
sql+=QString().sprintf("START_DATETIME=\"%s 00:00:00\",",
|
||||
(const char *)RDCheckDateTime(data->startDate(),"yyyy-MM-dd"));
|
||||
}
|
||||
if(data->startDate().isValid() &&
|
||||
(data->startDate()>QDate(1900,1,1))&&(data->endDate().year()<8000)) {
|
||||
|
||||
/* Reworked,
|
||||
* if date not valid, do nothing
|
||||
* if time valid use date + time
|
||||
* else use date + 00:00:00
|
||||
*/
|
||||
QDateTime startDateTime(data->startDate());
|
||||
|
||||
if(data->startTime().isValid())
|
||||
startDateTime.setTime(data->startTime());
|
||||
else
|
||||
startDateTime.setTime(QTime(0,0,0));
|
||||
|
||||
sql+=QString().sprintf("START_DATETIME=%s,",
|
||||
(const char *)RDCheckDateTime(startDateTime));
|
||||
|
||||
if(data->endDate().isValid()&&(data->endDate().year()<8000)) {
|
||||
if(data->endTime().isValid()) {
|
||||
sql+=QString().sprintf("END_DATETIME=\"%s %s\",",
|
||||
(const char *)RDCheckDateTime(data->endDate(),"yyyy-MM-dd"),
|
||||
(const char *)RDCheckDateTime(data->endTime(),"hh:mm:ss"));
|
||||
}
|
||||
else {
|
||||
sql+=QString().sprintf("END_DATETIME=\"%s 23:59:59\",",
|
||||
(const char *)RDCheckDateTime(data->endDate(),"yyyy-MM-dd"));
|
||||
}
|
||||
|
||||
// Reworked as START_DATETIME
|
||||
QDateTime endDateTime(data->endDate());
|
||||
|
||||
if(data->endTime().isValid())
|
||||
endDateTime.setTime(data->endTime());
|
||||
else
|
||||
endDateTime.setTime(QTime(23,59,59));
|
||||
|
||||
sql+=QString().sprintf("END_DATETIME=%s,",
|
||||
(const char *)RDCheckDateTime(endDateTime,"yyyy-MM-dd hh:mm:ss"));
|
||||
}
|
||||
}
|
||||
if(sql.right(1)==",") {
|
||||
@ -1597,7 +1607,7 @@ void RDCut::SetRow(const QString ¶m,const QDateTime &value) const
|
||||
RDSqlQuery *q;
|
||||
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 *)RDCheckDateTime(value,"yyyy-MM-dd hh:mm:ss"),
|
||||
(const char *)cut_name);
|
||||
@ -1611,7 +1621,7 @@ void RDCut::SetRow(const QString ¶m,const QDate &value) const
|
||||
RDSqlQuery *q;
|
||||
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 *)RDCheckDateTime(value,"yyyy-MM-dd"),
|
||||
(const char *)cut_name);
|
||||
@ -1624,7 +1634,7 @@ void RDCut::SetRow(const QString ¶m,const QTime &value) const
|
||||
{
|
||||
RDSqlQuery *q;
|
||||
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 *)RDCheckDateTime(value,"hh:mm:ss"),
|
||||
(const char *)cut_name);
|
||||
|
@ -34,7 +34,7 @@ QString RDCheckDateTime(QTime const &time, QString const &format)
|
||||
QString checkedValue = "NULL";
|
||||
|
||||
if(time.isValid())
|
||||
checkedValue = time.toString(format);
|
||||
checkedValue = "\"" + time.toString(format) + "\"";
|
||||
|
||||
return checkedValue;
|
||||
|
||||
@ -51,7 +51,7 @@ QString RDCheckDateTime(QDateTime const &datetime, QString const &format)
|
||||
QString checkedValue = "NULL";
|
||||
|
||||
if(datetime.isValid())
|
||||
checkedValue = datetime.toString(format);
|
||||
checkedValue = "\"" + datetime.toString(format) + "\"";
|
||||
|
||||
return checkedValue;
|
||||
|
||||
@ -68,7 +68,7 @@ QString RDCheckDateTime(QDate const &date, QString const &format)
|
||||
QString checkedValue = "NULL";
|
||||
|
||||
if(date.isValid())
|
||||
checkedValue = date.toString(format);
|
||||
checkedValue = "\"" + date.toString(format) + "\"";
|
||||
|
||||
return checkedValue;
|
||||
|
||||
|
@ -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,\
|
||||
SOURCE=%d,START_TIME=%d,GRACE_TIME=%d, \
|
||||
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",
|
||||
(const char *)logname,count,count,
|
||||
RDLogLine::Cart,source,
|
||||
|
@ -320,7 +320,7 @@ QDateTime RDFeed::lastBuildDateTime() const
|
||||
|
||||
void RDFeed::setLastBuildDateTime(const QDateTime &datetime) const
|
||||
{
|
||||
SetRow("LAST_BUILD_DATETIME",RDCheckDateTime(datetime,"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
|
||||
{
|
||||
SetRow("ORIGIN_DATETIME",RDCheckDateTime(datetime,"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 ¶m,const QString &value) const
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
}
|
||||
|
||||
void RDFeed::SetRow(const QString ¶m,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;
|
||||
}
|
@ -661,7 +661,7 @@ void RDLog::SetRow(const QString ¶m,const QDate &value) const
|
||||
RDSqlQuery *q;
|
||||
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 *)RDCheckDateTime(value,"yyyy/MM/dd"),
|
||||
(const char *)RDEscapeString(log_name));
|
||||
@ -675,7 +675,7 @@ void RDLog::SetRow(const QString ¶m,const QDateTime &value) const
|
||||
RDSqlQuery *q;
|
||||
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 *)RDCheckDateTime(value,"yyyy-MM-dd hh:mm:ss"),
|
||||
(const char *)RDEscapeString(log_name));
|
||||
|
@ -1186,7 +1186,7 @@ void RDLogEvent::InsertLines(QString values) {
|
||||
void RDLogEvent::InsertLineValues(QString *query, int line)
|
||||
{
|
||||
// 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(),
|
||||
line,
|
||||
log_line[line]->cartNumber(),
|
||||
|
@ -209,7 +209,7 @@ QDateTime RDPodcast::originDateTime() const
|
||||
|
||||
void RDPodcast::setOriginDateTime(const QDateTime &datetime) const
|
||||
{
|
||||
SetRow("ORIGIN_DATETIME",RDCheckDateTime(datetime,"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
|
||||
{
|
||||
SetRow("EFFECTIVE_DATETIME",RDCheckDateTime(datetime,"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 ¶m,const QString &value) const
|
||||
q=new RDSqlQuery(sql);
|
||||
delete q;
|
||||
}
|
||||
|
||||
|
||||
void RDPodcast::SetRow(const QString ¶m,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;
|
||||
}
|
@ -945,7 +945,7 @@ void RDRecording::SetRow(const QString ¶m,const QTime &value) const
|
||||
RDSqlQuery *q;
|
||||
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 *)RDCheckDateTime(value,"hh:mm:ss"),rec_id);
|
||||
q=new RDSqlQuery(sql);
|
||||
|
@ -557,8 +557,8 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
|
||||
q1->value(1).toUInt(),
|
||||
q1->value(2).toInt())+
|
||||
"STATION_NAME=\""+RDEscapeString(q1->value(3).toString())+"\","+
|
||||
"EVENT_DATETIME=\""+RDCheckDateTime(q1->value(4).toDateTime(),
|
||||
"yyyy-MM-dd hh:mm:ss")+"\","+
|
||||
"EVENT_DATETIME="+RDCheckDateTime(q1->value(4).toDateTime(),
|
||||
"yyyy-MM-dd hh:mm:ss")+","+
|
||||
QString().sprintf("EVENT_TYPE=%d,",q1->value(5).toInt())+
|
||||
"EXT_START_TIME=\""+RDEscapeString(q1->value(6).toString())+"\","+
|
||||
QString().sprintf("EXT_LENGTH=%d,",q1->value(7).toInt())+
|
||||
@ -573,8 +573,8 @@ bool RDReport::generateReport(const QDate &startdate,const QDate &enddate,
|
||||
"LOG_NAME=\""+RDEscapeString(q1->value(15).toString())+"\","+
|
||||
"TITLE=\""+RDEscapeString(q1->value(16).toString())+"\","+
|
||||
"ARTIST=\""+RDEscapeString(q1->value(17).toString())+"\","+
|
||||
"SCHEDULED_TIME=\""+
|
||||
RDCheckDateTime(q1->value(18).toDate(),"yyyy-MM-dd hh:mm:ss")+"\","+
|
||||
"SCHEDULED_TIME="+
|
||||
RDCheckDateTime(q1->value(18).toDate(),"yyyy-MM-dd hh:mm:ss")+","+
|
||||
QString().sprintf("START_SOURCE=%d,",q1->value(19).toInt())+
|
||||
"PUBLISHER=\""+RDEscapeString(q1->value(20).toString())+"\","+
|
||||
"COMPOSER=\""+RDEscapeString(q1->value(21).toString())+"\","+
|
||||
@ -923,7 +923,7 @@ void RDReport::SetRow(const QString ¶m,const QTime &value) const
|
||||
RDSqlQuery *q;
|
||||
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 *)RDCheckDateTime(value, "hh:mm:ss"),
|
||||
(const char *)report_name);
|
||||
|
@ -1485,13 +1485,19 @@ void RDSoundPanel::LogTraffic(RDPanelButton *button)
|
||||
"CUTS.CUT_NAME=\""+RDEscapeString(button->cutName())+"\"";
|
||||
q=new RDSqlQuery(sql);
|
||||
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 "+
|
||||
QString().sprintf("LENGTH=%d,",button->startTime().
|
||||
msecsTo(datetime.time()))+
|
||||
QString().sprintf("CART_NUMBER=%u,",button->cart())+
|
||||
"STATION_NAME=\""+RDEscapeString(panel_station->name().utf8())+"\","+
|
||||
"EVENT_DATETIME=\""+datetime.toString("yyyy-MM-dd")+" "+
|
||||
RDCheckDateTime(button->startTime(),"hh:mm:ss")+"\","+
|
||||
"EVENT_DATETIME="+eventDateTimeSQL+","+
|
||||
QString().sprintf("EVENT_TYPE=%d,",RDAirPlayConf::TrafficStop)+
|
||||
QString().sprintf("EVENT_SOURCE=%d,",RDLogLine::SoundPanel)+
|
||||
QString().sprintf("PLAY_SOURCE=%d,",RDLogLine::SoundPanel)+
|
||||
|
@ -788,7 +788,7 @@ bool RDSvc::generateLog(const QDate &date,const QString &logname,
|
||||
SERVICE=\"%s\",DESCRIPTION=\"%s\",\
|
||||
ORIGIN_USER=\"%s\",ORIGIN_DATETIME=now(),\
|
||||
LINK_DATETIME=now(),MODIFIED_DATETIME=now(),\
|
||||
PURGE_DATE=\"%s\"",
|
||||
PURGE_DATE=%s",
|
||||
(const char *)RDEscapeString(logname),
|
||||
(const char *)RDEscapeString(svc_name),
|
||||
(const char *)RDEscapeString(RDDateDecode(descriptionTemplate(),date)),
|
||||
|
@ -44,14 +44,20 @@ void LogTraffic(const QString &svcname,const QString &logname,
|
||||
if((logline==NULL)||(svcname.isEmpty())) {
|
||||
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 "+
|
||||
QString().sprintf("LENGTH=%d,",length)+
|
||||
"LOG_NAME=\""+RDEscapeString(logname.utf8())+"\","+
|
||||
QString().sprintf("LOG_ID=%d,",logline->id())+
|
||||
QString().sprintf("CART_NUMBER=%u,",logline->cartNumber())+
|
||||
"STATION_NAME=\""+RDEscapeString(rdstation_conf->name().utf8())+"\","+
|
||||
"EVENT_DATETIME=\""+datetime.toString("yyyy-MM-dd")+" "+
|
||||
RDCheckDateTime(logline->startTime(RDLogLine::Actual),"hh:mm:ss")+"\","+
|
||||
"EVENT_DATETIME="+eventDateTimeSQL+","+
|
||||
QString().sprintf("EVENT_TYPE=%d,",action)+
|
||||
QString().sprintf("EVENT_SOURCE=%d,",logline->source())+
|
||||
"EXT_START_TIME=\""+RDCheckDateTime(logline->extStartTime(),"hh:mm:ss")+"\","+
|
||||
@ -64,8 +70,8 @@ void LogTraffic(const QString &svcname,const QString &logname,
|
||||
"EXT_CART_NAME=\""+RDEscapeString(logline->extCartName().utf8())+"\","+
|
||||
"TITLE=\""+RDEscapeString(logline->title().utf8())+"\","+
|
||||
"ARTIST=\""+RDEscapeString(logline->artist().utf8())+"\","+
|
||||
"SCHEDULED_TIME=\""+RDCheckDateTime(logline->startTime(RDLogLine::Logged),
|
||||
"hh:mm:ss")+"\","+
|
||||
"SCHEDULED_TIME="+RDCheckDateTime(logline->startTime(RDLogLine::Logged),
|
||||
"hh:mm:ss")+","+
|
||||
"ISRC=\""+RDEscapeString(logline->isrc().utf8())+"\","+
|
||||
"PUBLISHER=\""+RDEscapeString(logline->publisher().utf8())+"\","+
|
||||
"COMPOSER=\""+RDEscapeString(logline->composer().utf8())+"\","+
|
||||
|
@ -2609,7 +2609,7 @@ void MainObject::ResolveErrorWildcards(CatchEvent *event,
|
||||
rml->replace("%d",event->description());
|
||||
rml->replace("%e",err_desc); // Error Description
|
||||
rml->replace("%i",QString().sprintf("%u",event->id()));
|
||||
rml->replace("%t",RDCheckDateTime(event->startTime(),"hh:mm:ss"));
|
||||
rml->replace("%t",event->startTime().toString("hh:mm:ss"));
|
||||
rml->replace("%y",RDRecording::typeString(event->type()));
|
||||
switch(event->type()) {
|
||||
case RDRecording::Recording:
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include <rd.h>
|
||||
#include <rddb.h>
|
||||
#include <sas_switch_torture.h>
|
||||
#include <rdescape_string.h>
|
||||
|
||||
MainWidget::MainWidget(QWidget *parent)
|
||||
:QWidget(parent)
|
||||
@ -123,7 +124,7 @@ void MainWidget::generateData()
|
||||
SUN=\'Y\',MON=\'Y\',TUE=\'Y\',WED=\'Y\',THU=\'Y\',\
|
||||
FRI=\'Y\',SAT=\'Y\',DESCRIPTION=\"%s\",\
|
||||
CUT_NAME=\"SAS_SWITCH_TORTURE\",\
|
||||
START_TIME=\"%s\",TYPE=1",
|
||||
START_TIME=%s,TYPE=1",
|
||||
SAS_STATION,
|
||||
SAS_MATRIX,
|
||||
j+1,
|
||||
|
@ -29,6 +29,7 @@
|
||||
#include <rd.h>
|
||||
#include <rddb.h>
|
||||
#include <sas_torture.h>
|
||||
#include <rdescape_string.h>
|
||||
|
||||
MainWidget::MainWidget(QWidget *parent)
|
||||
:QWidget(parent)
|
||||
@ -137,7 +138,7 @@ void MainWidget::generateData()
|
||||
SUN=\'Y\',MON=\'Y\',TUE=\'Y\',WED=\'Y\',THU=\'Y\',\
|
||||
FRI=\'Y\',SAT=\'Y\',DESCRIPTION=\"%s\",\
|
||||
CUT_NAME=\"SAS_TORTURE\",MACRO_CART=%d,\
|
||||
START_TIME=\"%s\",TYPE=1",
|
||||
START_TIME=%s,TYPE=1",
|
||||
SAS_STATION,
|
||||
(const char *)desc,
|
||||
CART_START+j,
|
||||
|
@ -431,6 +431,12 @@ bool MainWidget::CheckSpot(const QString &isci)
|
||||
QDate today=QDate::currentDate();
|
||||
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 ")+
|
||||
"from CART left join CUTS on CART.NUMBER=CUTS.CART_NUMBER "+
|
||||
"where (CART.GROUP_NAME=\""+RDEscapeString(dg_svc->autospotGroup())+"\")&&"
|
||||
@ -443,7 +449,7 @@ bool MainWidget::CheckSpot(const QString &isci)
|
||||
if(q->value(1).isNull()) {
|
||||
sql+="START_DATETIME=\""+today.toString("yyyy-MM-dd")+" 00:00:00\",";
|
||||
}
|
||||
sql+="END_DATETIME=\""+RDCheckDateTime(killdate,"yyyy-MM-dd")+" 23:59:59\" ";
|
||||
sql+="END_DATETIME="+endDateTimeSQL+" ";
|
||||
sql+="where CUT_NAME=\""+q->value(0).toString()+"\"";
|
||||
q1=new RDSqlQuery(sql);
|
||||
delete q1;
|
||||
|
@ -1864,13 +1864,13 @@ void MainObject::WriteTimestampCache(const QString &filename,
|
||||
sql=QString().sprintf("insert into DROPBOX_PATHS set \
|
||||
DROPBOX_ID=%d,\
|
||||
FILE_PATH=\"%s\",\
|
||||
FILE_DATETIME=\"%s\"",
|
||||
FILE_DATETIME=%s",
|
||||
import_persistent_dropbox_id,
|
||||
(const char *)RDEscapeString(filename),
|
||||
(const char *)RDCheckDateTime(dt,"yyyy-MM-dd hh:mm:ss"));
|
||||
}
|
||||
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\")",
|
||||
(const char *)RDCheckDateTime(dt,"yyyy-MM-dd hh:mm:ss"),
|
||||
import_persistent_dropbox_id,
|
||||
|
@ -1310,7 +1310,7 @@ void MainObject::CommitCast()
|
||||
ITEM_SOURCE_TEXT=\"%s\",\
|
||||
ITEM_SOURCE_URL=\"%s\",\
|
||||
SHELF_LIFE=%d,\
|
||||
EFFECTIVE_DATETIME=\"%s\" \
|
||||
EFFECTIVE_DATETIME=%s \
|
||||
where ID=%d",
|
||||
status,
|
||||
(const char *)RDEscapeString(item_title),
|
||||
|
Loading…
x
Reference in New Issue
Block a user