* Added an 'AddLog' method to the Web API.
* Added an 'DeleteLog' method to the Web API.
* Added a 'SaveLog' method to the Web API.
* Added 'eventLength', 'linkEventName', 'linkStartSlop',
'linkEndSlop', 'linkId', 'linkEmbedded', 'extStartTime',
'extLength', 'extCartName', 'extData', 'extEventId',
and 'extAnncType' XML fields to the return of the ListLog web
API method
* Added a 'SERVICE_CLOCKS' table to the database.
* Incremented the database version to 259.
* Modified 'rdlogmanager/edit_clock.cpp' to use the new
'SERVICE_CLOCKS' table.
* Modified 'rdlogmanager/list_clocks.cpp' to use the new
'SERVICE_CLOCKS' table.
* Implemented storage of RDXML data structures within a 'rdxl'
user defined information frame in ID3 tags 'lib/rdwavefile.cpp' and
'lib/rdaudio_convert.cpp'.
* Added rdxml_parse_test(1) in 'tests/'.
* Added a RDCart::readXml()' method in 'lib/rdcart.cpp' and
'lib/rdcart.h'.
* Fixed a typo in the 'averageSegueLength' field in the 'RDCart::xml()'
method in 'lib/rdcart.cpp'.
* Removed the 'validity' field from the output of the 'RDCart::xml()'
method in 'lib/rdcart.cpp'.
* Removed the 'validity' and 'localCounter' fields from the output
of the 'RDCut::xml()' method in 'lib/rdcut.cpp'.
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
* Added code in 'lib/rdevent_line.cpp' and 'lib/rdsvc.cpp' to allow
embedded traffic breaks to be specified with start time and length
in the music schedule.
Changed purge_date to a QString so that it can be checked with the normal
RDCheckDateTime function. Also means the QString.isEmpty check is a straight
forward QDate.isValid and in that case we can use QDate.toString rather than
formatting via RDCheckDateTime (and incurring another QDate.isValid check).
Checking is probably not needed and even if it did find an invalid date it would
likely not return valid SQL e.g this is just one paraphrased example from the
code:
SELECT x FROM y WHERE EVENT_DATETIME<="NULL 00:00:00"
I've reverted back the two select changes for the daypart code and put a TODO
note there as a marker.
This doesn't use a dedicated setRow, instead it converts to QString and then
tries to insert the dates instead.
Amended setOrigin and setEffectiveDateTime to use RDCheckDateTime