|
|
<?php
|
|
|
|
|
|
require_once 'frontend.inc.php';
|
|
|
|
|
|
class MTAPIi
|
|
|
{
|
|
|
|
|
|
private static $db_conn;
|
|
|
|
|
|
static function construct($db)
|
|
|
{
|
|
|
$db_conn = $db;
|
|
|
return mysqli_ping($db_conn);
|
|
|
}
|
|
|
|
|
|
static function destruct()
|
|
|
{
|
|
|
$db_conn = NULL;
|
|
|
}
|
|
|
|
|
|
#This just returns the current maximum comic
|
|
|
static function getNumStrips()
|
|
|
{
|
|
|
return max_strip_id();
|
|
|
}
|
|
|
|
|
|
static function getNumPanels($comic)
|
|
|
{
|
|
|
return get_num_panels($comic);
|
|
|
}
|
|
|
|
|
|
static function getPanelTranscript($comic, $panel, $xml=false)
|
|
|
{
|
|
|
if(!validate_panel_id($comic, $panel))
|
|
|
{
|
|
|
die("Invalid args: $comic $panel\n");
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$script = build_panel_transcript($comic, $panel);
|
|
|
if(!$xml)
|
|
|
{
|
|
|
return $script;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$ret = '<panel id="'.$panel.'">';
|
|
|
foreach($script as $id => $line)
|
|
|
{
|
|
|
$ret .= '<line id="' . ($id+1) . '" speaker="'.utfentities($script[$id]['speaker']).'">';
|
|
|
$ret .= utfentities($script[$id]['speech']);
|
|
|
$ret .= '</line>';
|
|
|
}
|
|
|
$ret .= '</panel>';
|
|
|
}
|
|
|
return $ret;
|
|
|
}
|
|
|
|
|
|
static function getStripTranscript($comic, $xml=false)
|
|
|
{
|
|
|
if(!validate_comic_id($comic))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
$script = array();
|
|
|
$panels = MTAPIi::getNumPanels((int)$comic);
|
|
|
#Panel numbering is 1-indexed, not 0-indexed, for semantic reasons
|
|
|
for($i=1; $i <= $panels; $i++)
|
|
|
{
|
|
|
$script[]= MTAPIi::getPanelTranscript($comic, $i, $xml);
|
|
|
}
|
|
|
if(!$xml)
|
|
|
{
|
|
|
return $script;
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$ret = '<comic id="'.$comic.'">';
|
|
|
$ret .= implode($script, '');
|
|
|
$ret .= '</comic>';
|
|
|
}
|
|
|
return $ret;
|
|
|
}
|
|
|
|
|
|
static function getCharactersByPanel($comic, $panel, $speakersOnly=false)
|
|
|
{
|
|
|
if(!validate_panel_id($comic, $panel))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$panels = MTAPIi::getNumPanels($comic);
|
|
|
|
|
|
$query = 'SELECT DISTINCT speaker FROM transcript WHERE strip = '.(int)$comic;
|
|
|
$query .= ' AND panel = '.(int)$panel;
|
|
|
$query .= ' AND speaker NOT LIKE "#%" ';
|
|
|
if($speakersOnly)
|
|
|
{
|
|
|
$query .= " AND search != '' ";
|
|
|
}
|
|
|
$query .= 'ORDER BY speaker';
|
|
|
|
|
|
return query_to_array($query);
|
|
|
}
|
|
|
|
|
|
static function getCharactersByStrip($comic, $speakersOnly=false)
|
|
|
{
|
|
|
if(!validate_comic_id($comic))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$query = 'SELECT DISTINCT speaker FROM transcript WHERE strip = '.(int)$comic;
|
|
|
$query .= ' AND speaker NOT LIKE "#%" ';
|
|
|
if($speakersOnly)
|
|
|
{
|
|
|
$query .= " AND search != '' ";
|
|
|
}
|
|
|
$query .= 'ORDER BY speaker';
|
|
|
|
|
|
return query_to_array($query);
|
|
|
}
|
|
|
|
|
|
static function getStripTitle($comic)
|
|
|
{
|
|
|
if(!validate_comic_id($comic))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
$strip = load_strip($comic);
|
|
|
return $strip['title'];
|
|
|
}
|
|
|
|
|
|
static function getStripPubdate($comic)
|
|
|
{
|
|
|
if(!validate_comic_id($comic))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
$strip = load_strip($comic);
|
|
|
return $strip['published'];
|
|
|
}
|
|
|
|
|
|
static function getStripType($comic)
|
|
|
{
|
|
|
if(!validate_comic_id($comic))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
$strip = load_strip($comic);
|
|
|
return $strip['type'];
|
|
|
}
|
|
|
|
|
|
static function getStripTypeName($comic)
|
|
|
{
|
|
|
if(!validate_comic_id($comic))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
#load_strip() really isn't the best tool for this job, as it would mean two queries instead of one
|
|
|
$query = 'SELECT description FROM strip_t
|
|
|
JOIN strip ON strip.type = strip_t.id
|
|
|
WHERE strip.id = '.(int)$comic;
|
|
|
|
|
|
$qr = query_to_array($query);
|
|
|
return $qr[0];
|
|
|
}
|
|
|
|
|
|
|
|
|
static function getStripMeta($comic)
|
|
|
{
|
|
|
if(!validate_comic_id($comic))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
$query = 'SELECT meta_t.id FROM meta_t
|
|
|
JOIN meta ON meta_t.id = meta.meta
|
|
|
JOIN strip_t ON meta.type = strip_t.id
|
|
|
JOIN strip ON strip.type = strip_t.id
|
|
|
WHERE strip.id = '.(int)$comic.' ORDER BY meta_t.id';
|
|
|
|
|
|
$qr = query_to_array($query);
|
|
|
return $qr;
|
|
|
}
|
|
|
|
|
|
static function getStrip($comic)
|
|
|
{
|
|
|
if(!validate_comic_id($comic))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
$strip = load_strip($comic);
|
|
|
$strip['type'] = self::getStripTypeName($strip['type']);
|
|
|
$strip['number'] = self::getStripNumberInType($comic);
|
|
|
|
|
|
unset($strip['udate']);
|
|
|
|
|
|
return $strip;
|
|
|
}
|
|
|
|
|
|
static function getStripNumberInType($comic)
|
|
|
{
|
|
|
if(!validate_comic_id($comic))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$type = self::getStripType($comic);
|
|
|
|
|
|
$query = "SELECT count(*)
|
|
|
FROM strip_t JOIN strip ON strip_t.id = strip.type
|
|
|
WHERE strip.id < {$comic}+1
|
|
|
AND strip.type = {$type}";
|
|
|
|
|
|
$qr = query_to_array($query);
|
|
|
return $qr[0];
|
|
|
}
|
|
|
|
|
|
static function getStripMetaName($comic)
|
|
|
{
|
|
|
if(!validate_comic_id($comic))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
$query = 'SELECT meta_t.name FROM meta_t
|
|
|
JOIN meta ON meta_t.id = meta.meta
|
|
|
JOIN strip_t ON meta.type = strip_t.id
|
|
|
JOIN strip ON strip.type = strip_t.id
|
|
|
WHERE strip.id = '.(int)$comic.' ORDER BY meta_t.name';
|
|
|
|
|
|
$qr = query_to_array($query);
|
|
|
return $qr;
|
|
|
}
|
|
|
|
|
|
static function getTypeMeta($type)
|
|
|
{
|
|
|
if(!validate_type_id($type))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$query = 'SELECT meta_t.id FROM meta_t
|
|
|
JOIN meta ON meta_t.id = meta.meta
|
|
|
JOIN strip_t ON meta.type = strip_t.id
|
|
|
WHERE strip_t.id = '.(int)$type.' ORDER BY meta_t.id';
|
|
|
|
|
|
$qr = query_to_array($query);
|
|
|
return $qr;
|
|
|
}
|
|
|
|
|
|
static function getTypeMetaName($type)
|
|
|
{
|
|
|
if(!validate_type_id($type))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$query = 'SELECT meta_t.name FROM meta_t
|
|
|
JOIN meta ON meta_t.id = meta.meta
|
|
|
JOIN strip_t ON meta.type = strip_t.id
|
|
|
WHERE strip_t.id = '.(int)$type.' ORDER BY meta_t.name';
|
|
|
|
|
|
$qr = query_to_array($query);
|
|
|
return $qr;
|
|
|
}
|
|
|
|
|
|
static function getStripsByType($type)
|
|
|
{
|
|
|
if(!validate_type_id($type))
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$query = 'SELECT strip.id FROM strip WHERE strip.type = '.(int)$type.' ORDER BY strip.id';
|
|
|
$qr = query_to_array($query);
|
|
|
return $qr;
|
|
|
}
|
|
|
|
|
|
|
|
|
static function getStripsByMeta($meta)
|
|
|
{
|
|
|
if(!ctype_digit($meta) || $meta < 1)
|
|
|
{
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
$query = 'SELECT strip.id FROM strip
|
|
|
JOIN strip_t ON strip.type = strip_t.id
|
|
|
JOIN meta ON strip_t.id = meta.type
|
|
|
JOIN meta_t ON meta.meta = meta_t.id
|
|
|
WHERE meta_t.id = '.(int)$meta.' ORDER BY strip.id';
|
|
|
$qr = query_to_array($query);
|
|
|
return $qr;
|
|
|
}
|
|
|
}
|
|
|
?>
|
|
|
|