On 2/19/08, David Engel <david at istwok.net> wrote:
> On Tue, Feb 19, 2008 at 02:10:09PM -0800, Taco Mel wrote:
> > Would it be correct to state that the "override rule"
> > you described is created within the "memory" of the
> > running scheduler process, so to speak, and that it is
> > not written to or defined within the SQL database?
>> No, it would not be correct. The override rule is written to the
> database just like any other override rule. The scheduler only
> updates its internal state when it detects the new rule with a
> different ending time.
>> > What is needed for a sports feature is to be able to
> > create the override rule from outside of the MythTV
> > GUI. Two ways I can think of would be a database
> > query, or on the command line with something like
> > "mythbackend --resched --chanid XXX --newendtime
> > YYYY-MM-DDTHH:MM:SS".
>> The functionality is already there. All you have to do is put the
> pieces together.
>> > What about a corresponding function to modify the
> > start time of a particular recording (which has not
> > started yet, obviously, since if it started already
> > such modification would be pointless). I am thinking
>> That's just another override rule.
>> > I want to avoid hacking at the code, creating new
> > database tables, etc., just for my own purposes. I
> > want to discover the "official" way. So I can sum
> > this up in one question - what is the SQL query, or
> > command line, to adjust the start time and end time of
> > a particular recording without modifying the rule itself?
>> The SQL begins with "INSERT INTO record (type, chanid, starttime,
> ...)". For your cases, the most important thing is to set type to
> kOverrideRecord.
>
As I mentioned in another thread MRE already uses override rules...
and for awhile it was working fine for me. In fact here is a piece of
the code:
/**
* Copy constructor
*
* All copies of RecordingRule objects are actually override rules to
* be used to override the source rule. The __clone method does some
* object manipulation required to turn the object into an override object.
*/
public function __clone()
{
$this->setVal('recordid', NULL);
$this->setVal('type', self::RECTYPE_OVERRIDE);
$this->setVal('search', self::SEARCHTYPE_NONE);
$this->setVal('findid', 0);
return;
}
...
$db = $conf->getDB();
$qry = "REPLACE INTO record SET ";
$cols = array();
$vals = array();
foreach($this->_row as $col => $val)
{
$cols[] = "$col = ?";
$vals[] = $val;
}
$qry .= implode(',', $cols);
$qh = $db->prepare($qry);
if(DB::isError($qh))
trigger_error("Can't prepare query!", E_USER_ERROR);
$res = $db->execute($qh, $vals);
Somewhere along the line it stopped working... I never was able to
determine the cause... but it would extend the recording for awhile
then stop without reason (i.e. the event was not over according to
MRE). I think it was some kind of timing issue but I never completely
debugged it.
So if the solution is inserting override records into the database
that code is already there (in MRE) and just needs to be debugged.