bool RemoteDeleteRecording(uint recordingID, bool forceMetadataDelete, bool forgetHistory) { // FIXME: Remove when DELETE_RECORDING has been updated to use recording id ProgramInfo recInfo(recordingID); bool result = true; QString cmd = QString("DELETE_RECORDING %1 %2 %3 %4") .arg(QString::number(recInfo.GetChanID())) .arg(recInfo.GetRecordingStartTime().toString(Qt::ISODate)) .arg(forceMetadataDelete ? "FORCE" : "NO_FORCE") .arg(forgetHistory ? "FORGET" : "NO_FORGET"); QStringList strlist(cmd); if (!gCoreContext->SendReceiveStringList(strlist) || strlist.isEmpty()) result = false; else if (strlist[0].toInt() == -2) result = false; if (!result) { LOG(VB_GENERAL, LOG_ALERT, QString("Failed to delete recording %1:%2") .arg(recInfo.GetChanID()) .arg(recInfo.GetRecordingStartTime().toString(Qt::ISODate))); } return result; }
DTC::RecRule* Dvr::GetRecordSchedule( uint nRecordId, QString sTemplate, int nRecordedId, int nChanId, QDateTime dStartTimeRaw, bool bMakeOverride ) { RecordingRule rule; QDateTime dStartTime = dStartTimeRaw.toUTC(); if (nRecordId > 0) { rule.m_recordID = nRecordId; if (!rule.Load()) throw QString("Record ID does not exist."); } else if (!sTemplate.isEmpty()) { if (!rule.LoadTemplate(sTemplate)) throw QString("Template does not exist."); } else if (nRecordedId > 0) // Loads from the Recorded/Recorded Program Table { // Despite the use of ProgramInfo, this only applies to Recordings. ProgramInfo recInfo(nRecordedId); if (!rule.LoadByProgram(&recInfo)) throw QString("Recording does not exist"); } else if (nChanId > 0 && dStartTime.isValid()) // Loads from Program Table, should NOT be used with recordings { // Despite the use of RecordingInfo, this only applies to programs in the // present or future, not to recordings? Confused yet? RecordingInfo::LoadStatus status; RecordingInfo info(nChanId, dStartTime, false, 0, &status); if (status != RecordingInfo::kFoundProgram) throw QString("Program does not exist."); RecordingRule *pRule = info.GetRecordingRule(); if (bMakeOverride && rule.m_type != kSingleRecord && rule.m_type != kOverrideRecord && rule.m_type != kDontRecord) pRule->MakeOverride(); rule = *pRule; } else { throw QString("Invalid request."); } DTC::RecRule *pRecRule = new DTC::RecRule(); FillRecRuleInfo( pRecRule, &rule ); return pRecRule; }
bool RemoteUndeleteRecording(uint recordingID) { // FIXME: Remove when UNDELETE_RECORDING has been updated to use recording id ProgramInfo recInfo(recordingID); bool result = false; #if 0 if (!gCoreContext->GetNumSetting("AutoExpireInsteadOfDelete", 0)) return result; #endif QStringList strlist(QString("UNDELETE_RECORDING")); strlist.push_back(QString::number(recInfo.GetChanID())); strlist.push_back(recInfo.GetRecordingStartTime().toString(Qt::ISODate)); gCoreContext->SendReceiveStringList(strlist); if (!strlist.isEmpty() && strlist[0].toInt() == 0) result = true; return result; }