external.php
296 lines
| 5.8 KiB
| text/x-php
|
XmlPhpLexer
| r2 | <?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; | ||||
| } | ||||
| } | ||||
| ?> | ||||
