610 | | if (mark_repeats) |
611 | | { |
612 | | LOG(VB_GENERAL, LOG_INFO, "Marking repeats."); |
613 | | |
614 | | int newEpiWindow = gCoreContext->GetNumSetting( "NewEpisodeWindow", 14); |
615 | | |
616 | | MSqlQuery query(MSqlQuery::InitCon()); |
617 | | query.prepare("UPDATE program SET previouslyshown = 1 " |
618 | | "WHERE previouslyshown = 0 " |
619 | | "AND originalairdate is not null " |
620 | | "AND (to_days(starttime) - to_days(originalairdate)) " |
621 | | " > :NEWWINDOW;"); |
622 | | query.bindValue(":NEWWINDOW", newEpiWindow); |
623 | | |
624 | | if (query.exec()) |
625 | | LOG(VB_GENERAL, LOG_INFO, |
626 | | QString(" Found %1").arg(query.numRowsAffected())); |
627 | | |
628 | | LOG(VB_GENERAL, LOG_INFO, "Unmarking new episode rebroadcast repeats."); |
629 | | query.prepare("UPDATE program SET previouslyshown = 0 " |
630 | | "WHERE previouslyshown = 1 " |
631 | | "AND originalairdate is not null " |
632 | | "AND (to_days(starttime) - to_days(originalairdate)) " |
633 | | " <= :NEWWINDOW;"); |
634 | | query.bindValue(":NEWWINDOW", newEpiWindow); |
635 | | |
636 | | if (query.exec()) |
637 | | LOG(VB_GENERAL, LOG_INFO, |
638 | | QString(" Found %1").arg(query.numRowsAffected())); |
639 | | } |
640 | | |
653 | | query.prepare("SELECT MIN(starttime),programid FROM program " |
654 | | "WHERE programid > '' GROUP BY programid;"); |
| 624 | // Get the data for the first showing |
| 625 | query.prepare("SELECT starttime,programfirst.programid, " |
| 626 | " previouslyshown " |
| 627 | "FROM program, " |
| 628 | " (SELECT MIN(starttime) AS minstarttime,programid " |
| 629 | " FROM program WHERE programid > '' " |
| 630 | " GROUP BY programid) " |
| 631 | " AS programfirst " |
| 632 | "WHERE program.programid > '' " |
| 633 | " AND program.starttime=programfirst.minstarttime " |
| 634 | " AND program.programid=programfirst.programid;"); |
| 652 | // If we have the first showing, then we know the |
| 653 | // originalairdate for any repeats. Make sure to |
| 654 | // not override anything actually given in the source data |
| 655 | if (!query.value(2).toBool()) { |
| 656 | updtAirdate.bindValue(":ORIGINALAIRDATE", query.value(0).toDate()); |
| 657 | updtAirdate.bindValue(":PROGRAMID", query.value(1).toString()); |
| 658 | if (!updtAirdate.exec()) |
| 659 | MythDB::DBError("Marking originalairdate by id", updtAirdate); |
| 660 | } |
669 | | query.prepare("SELECT MIN(starttime),title,subtitle," |
670 | | " LEFT(description, 1024) AS partdesc " |
671 | | "FROM program WHERE programid = '' " |
672 | | "GROUP BY title,subtitle,partdesc;"); |
| 664 | // Get the data for the first showing |
| 665 | query.prepare("SELECT starttime,programfirst.title, " |
| 666 | " programfirst.subtitle,programfirst.partdesc, " |
| 667 | " previouslyshown " |
| 668 | "FROM program, " |
| 669 | " (SELECT MIN(starttime) AS minstarttime,title, " |
| 670 | " subtitle, LEFT(description, 1024) AS partdesc " |
| 671 | " FROM program WHERE programid = '' " |
| 672 | " GROUP BY title,subtitle,partdesc) " |
| 673 | " AS programfirst " |
| 674 | "WHERE program.programid = '' " |
| 675 | " AND program.starttime=programfirst.minstarttime " |
| 676 | " AND program.title=programfirst.title " |
| 677 | " AND program.subtitle=programfirst.subtitle " |
| 678 | " AND LEFT(program.description, 1024) = programfirst.partdesc;"); |
| 702 | if (!query.value(4).toBool()) { |
| 703 | updtAirdate.bindValue(":ORIGINALAIRDATE", query.value(0).toDate()); |
| 704 | updtAirdate.bindValue(":TITLE", query.value(1).toString()); |
| 705 | updtAirdate.bindValue(":SUBTITLE", query.value(2).toString()); |
| 706 | updtAirdate.bindValue(":PARTDESC", query.value(3).toString()); |
| 707 | if (!updtAirdate.exec()) |
| 708 | MythDB::DBError("Marking original airdate", updt); |
| 709 | } |
| 757 | if (mark_repeats) |
| 758 | { |
| 759 | LOG(VB_GENERAL, LOG_INFO, "Marking repeats."); |
| 760 | |
| 761 | int newEpiWindow = gCoreContext->GetNumSetting( "NewEpisodeWindow", 14); |
| 762 | |
| 763 | MSqlQuery query(MSqlQuery::InitCon()); |
| 764 | query.prepare("UPDATE program SET previouslyshown = 1 " |
| 765 | "WHERE previouslyshown = 0 " |
| 766 | "AND originalairdate is not null " |
| 767 | "AND (to_days(starttime) - to_days(originalairdate)) " |
| 768 | " > :NEWWINDOW;"); |
| 769 | query.bindValue(":NEWWINDOW", newEpiWindow); |
| 770 | |
| 771 | if (query.exec()) |
| 772 | LOG(VB_GENERAL, LOG_INFO, |
| 773 | QString(" Found %1").arg(query.numRowsAffected())); |
| 774 | |
| 775 | LOG(VB_GENERAL, LOG_INFO, "Unmarking new episode rebroadcast repeats."); |
| 776 | query.prepare("UPDATE program SET previouslyshown = 0 " |
| 777 | "WHERE previouslyshown = 1 " |
| 778 | "AND originalairdate is not null " |
| 779 | "AND (to_days(starttime) - to_days(originalairdate)) " |
| 780 | " <= :NEWWINDOW;"); |
| 781 | query.bindValue(":NEWWINDOW", newEpiWindow); |
| 782 | |
| 783 | if (query.exec()) |
| 784 | LOG(VB_GENERAL, LOG_INFO, |
| 785 | QString(" Found %1").arg(query.numRowsAffected())); |
| 786 | } |
| 787 | |