Ticket #1879: ProgramID-multipart.patch

File ProgramID-multipart.patch, 2.1 KB (added by jppoet@…, 14 years ago)

Adjust non-unique ProgramIDs for multi-part shows

  • programs/mythfilldatabase/filldata.cpp

     
    38813881                QString("    Found %1").arg(query.numRowsAffected()));
    38823882    }
    38833883
     3884    if (grab_data)
     3885    {
     3886        VERBOSE(VB_GENERAL, "Fudging non-unique programid "
     3887                "with multiple parts.");
     3888
     3889        MSqlQuery sel(MSqlQuery::InitCon());
     3890        sel.exec("SELECT DISTINCT programid, partnumber "
     3891                   "FROM program WHERE partnumber > 0 AND parttotal > 0 AND "
     3892                   "programid LIKE '%0000'");
     3893
     3894        if (sel.isActive() && sel.size() > 0)
     3895        {
     3896            MSqlQuery repl(MSqlQuery::InitCon());
     3897
     3898            while (sel.next())
     3899            {
     3900                QString orig_programid = sel.value(0).toString();
     3901                int partnum = sel.value(1).toInt();
     3902                QString new_programid = orig_programid.left(8);
     3903                QString part;
     3904
     3905                part.setNum(partnum);
     3906                new_programid.append(part.rightJustify(4, '0'));
     3907
     3908                repl.prepare("UPDATE program SET programid = :NEWID "
     3909                             "WHERE programid = :OLDID AND "
     3910                             "partnumber = :PART");
     3911                repl.bindValue(":NEWID", new_programid);
     3912                repl.bindValue(":OLDID", orig_programid);
     3913                repl.bindValue(":PART", partnum);
     3914                if (!repl.exec())
     3915                {
     3916                    MythContext::DBError(QString("Fudging programid from '%1' "
     3917                                                 " to '%2'")
     3918                                         .arg(orig_programid)
     3919                                         .arg(new_programid), repl);
     3920                }
     3921            }
     3922        }
     3923
     3924        VERBOSE(VB_GENERAL,
     3925                QString("    Found %1").arg(sel.numRowsAffected()));
     3926    }
     3927
    38843928    if (mark_repeats)
    38853929    {
    38863930        VERBOSE(VB_GENERAL, "Marking repeats.");