public static function get_users_latest_songs(User $user, $count) { if (!is_numeric($count)) { Logger::log("get_users_latest_songs: invalid count value"); return array(); } $db = Database::instance(); $sql = ' SELECT p.id AS play_id, p.create_time, s.id, s.artist, s.album, s.title, s.length FROM play p, song s WHERE p.song_id = s.id AND p.user_id = ? ORDER BY p.create_time DESC LIMIT ? '; $params = array($user->id, $count); try { $rows = $db->select($sql, $params); } catch (Exception $e) { Logger::log("get_users_latest_songs: database failure: " . $e->getMessage()); return array(); } $songs = array(); foreach ($rows as $row) { $song = new self(); if (!$song->fill_fields($row)) { Logger::log("get_users_latest_songs: failed to build song object"); return array(); } $play = new Play(); if (!$play->fill_fields(array('id' => $row['play_id'], 'song_id' => $row['id'], 'user_id' => $user->id, 'create_time' => $row['create_time']))) { Logger::log("get_users_latest_songs: failed to build play object"); return array(); } $play->song = $song; $song->play = $play; $songs[] = $song; } return $songs; }
/** * Create/update schema in database. */ public static function update_schema() { global $wpdb; $sql = "\n\n CREATE TABLE " . Track::table_name() . " (\n id int(11) NOT NULL AUTO_INCREMENT,\n stream_title varchar(200) NOT NULL,\n track_key varchar(200) NOT NULL,\n artist varchar(100) NOT NULL,\n title varchar(100) NOT NULL,\n play_count int(11) NOT NULL,\n vote_count int(11) NOT NULL,\n vote_total int(11) DEFAULT NULL,\n vote_average double DEFAULT NULL,\n PRIMARY KEY (id),\n UNIQUE KEY (track_key),\n KEY (vote_average),\n KEY (play_count),\n KEY (vote_count),\n KEY (vote_total)\n ) CHARACTER SET utf8;\n\n CREATE TABLE " . Play::table_name() . " (\n id int(11) NOT NULL AUTO_INCREMENT,\n time_utc datetime NOT NULL,\n track_id int(11) NOT NULL,\n stream_title varchar(200) NOT NULL,\n PRIMARY KEY (id),\n KEY (track_id),\n KEY (time_utc),\n CONSTRAINT " . Play::table_name() . "_ibfk_1 FOREIGN KEY (track_id) REFERENCES " . Track::table_name() . " (id)\n ) CHARACTER SET utf8;\n\n CREATE TABLE " . Vote::table_name() . " (\n id int(11) NOT NULL AUTO_INCREMENT,\n time_utc datetime NOT NULL,\n track_id int(11) NOT NULL,\n stream_title varchar(200) NOT NULL,\n value tinyint(4) NOT NULL,\n nick varchar(30) NOT NULL,\n user_id varchar(150) NOT NULL,\n is_authed bit(1) NOT NULL,\n deleted tinyint(4) NOT NULL DEFAULT '0',\n comment varchar(200) NULL,\n PRIMARY KEY (id),\n KEY (track_id),\n KEY (time_utc),\n KEY (nick),\n CONSTRAINT " . Vote::table_name() . "_ibfk_1 FOREIGN KEY (track_id) REFERENCES " . Track::table_name() . " (id)\n ) CHARACTER SET utf8;\n\n "; require_once ABSPATH . 'wp-admin/includes/upgrade.php'; dbDelta($sql); }
/** * (Web service method) Submit track start event * @param mixed[] $args time_utc (YYYY-MM-DD); stream_title * @return mixed[] status; error_message; output (what to announce in IRC chat room) */ private function web_track_start($args) { $time_utc = $args['time_utc']; // YYYY-MM-DD HH:MM:SS $stream_title = $args['stream_title']; $track_id = Track::create_or_get_id($stream_title); Play::new_play($time_utc, $track_id, $stream_title); Track::update_play_count($track_id); file_put_contents(PLUGIN_DIR . 'now_playing.txt', $stream_title); $six = Play::recent_six(); $out = array(); $out[] = "<p><em>Now Playing:</em> " . esc_html($stream_title) . "</p>\n"; $out[] = "<p>Previously...<br />"; $i = 0; foreach ($six as $play) { if ($i > 0) { //$out[] = date( 'H:i:s', $play->time_utc ) . ' UTC: ' . $out[] = $play->time_utc . ' UTC: ' . esc_html($play->stream_title) . "<br />\n"; } $i++; } $out[] = "</p>"; file_put_contents(PLUGIN_DIR . 'recent_tracks.html', implode($out)); $out = array(); $i = 0; foreach ($six as $play) { if ($i > 0) { $out[] = date('c', strtotime($play->time_utc . " UTC")) . "\t" . $play->stream_title; } $i++; } file_put_contents(PLUGIN_DIR . 'recent_tracks.txt', implode("\n", $out)); return array('status' => 'ok', 'error_message' => '', 'output' => str_ireplace('${stream_title}', $args['stream_title'], Options::get_instance()->txt_now_playing)); }
public function get_play_count() { if (!$this->initialised()) { Logger::log("get_play_count: user not initialised"); return -1; } return Play::user_play_count($this); }
/** * List last 24 hours * @param string[] $atts * @return string */ public function last_day($atts) { $day = Play::last_day(); $out = array(); $out[] = "<p>"; foreach ($day as $play) { //$out[] = date( 'H:i:s', $play->time_utc ) . ' UTC: ' . $out[] = $play->time_utc . ' UTC: ' . esc_html($play->stream_title) . "<br />\n"; } $out[] = "</p>\n"; return implode($out); }
protected function getPlays($inning) { $this->plays = $this->html->find(sprintf('tr#%s%sinning', $inning->getHalf(), $inning->getNumber()), 0)->find('tr'); $play = null; foreach ($this->plays as $key => $playRow) { if ($key > 0 && $key < count($this->plays) - 1) { foreach ($playRow->find('td') as $key => $value) { if (!$key) { // start new play $play = new Play(); // batter information $batter = $this->getBatterForPlay($value, $inning); $play->setBatter($batter); } else { $play->setRaw($value->plaintext); print_r($play); print_r($value->plaintext); print_r("\n"); } } print_r("\n\n"); } } die; }
public static function playlist($start_time, $end_time) { global $wpdb; if (!$start_time && !$end_time) { return NULL; } $cond_parm = array(); if ($start_time) { $cond[] = 'p.time_utc >= %s'; $cond_parm[] = $start_time; } if ($end_time) { $cond[] = 'p.time_utc < %s'; $cond_parm[] = $end_time; } /* echo "<pre>" . $wpdb->prepare ( " SELECT p.time_utc, t.artist, t.title, ( SELECT SUM(value) FROM ".Vote::table_name()." pv WHERE pv.deleted=0 AND pv.time_utc >= p.time_utc AND pv.time_utc < p.time_utc + INTERVAL 30 MINUTE ) vote_total FROM ".Play::table_name()." p LEFT JOIN ".Track::table_name()." t on t.id=p.track_id WHERE " . implode( ' AND ', $cond ) . " ORDER BY p.time_utc ASC " , $cond_parm ); exit; */ return $wpdb->get_results($wpdb->prepare("\n SELECT p.time_utc, t.artist, t.title, (\n SELECT SUM(value) FROM " . Vote::table_name() . " pv\n WHERE pv.deleted=0 AND pv.track_id=p.track_id\n AND pv.time_utc >= p.time_utc AND pv.time_utc < p.time_utc + INTERVAL 30 MINUTE\n ) vote_total\n FROM " . Play::table_name() . " p\n LEFT JOIN " . Track::table_name() . " t on t.id=p.track_id\n WHERE " . implode(' AND ', $cond) . "\n ORDER BY p.time_utc ASC\n ", $cond_parm), ARRAY_A); }
public function testPlayBadAppend() { $this->setExpectedException('TwilioException'); $p = new Play(); $p->append(new Dial()); }
/** * Was this 'track_id' played in the last 60 minutes? * @param int $track_id * @return boolean */ public static function is_recently_played($track_id) { global $wpdb; $count = $wpdb->get_var($wpdb->prepare("\n SELECT count(*) FROM " . Play::table_name() . "\n WHERE track_id=%d\n AND timestampdiff(minute, time_utc, utc_timestamp()) < 60\n ", $track_id)); return $count > 0; }
private function q_playlist() { $v = $this->view; $start_time = trim($v['start_date'] . ' ' . $v['start_time']); $end_time = trim($v['end_date'] . ' ' . $v['end_time']); $title = trim($start_time . ' – ' . $end_time); $results = Play::playlist($start_time, $end_time); $plays = array(); foreach ($results as $result) { $result['artist_link'] = '<a href="' . $this->link_url(array('music_query' => 'track', 'artist' => $result['artist'])) . '">' . esc_html($result['artist']) . '</a>'; $result['title_link'] = '<a href="' . $this->link_url(array('music_query' => 'track', 'artist' => $result['artist'], 'title' => $result['title'])) . '">' . esc_html($result['title']) . '</a>'; $plays[] = $result; } $cols = array('time_utc' => 'Time (UTC)', 'artist_link' => 'Artist', 'title_link' => 'Title', 'vote_total' => 'Vote Total'); ob_start(); include PLUGIN_DIR . 'views/results_playlist.php'; return ob_get_clean(); }
if (sizeof($plays) == 0) { $play->a = 0; $play->h = 0; $play->s = "n"; $play->e = "n"; } else { $play->a = end($plays)->a; $play->h = end($plays)->h; $play->s = "n"; $play->e = end($plays)->e; } $play->x = 1; array_push($plays, $play); } } $play = new Play(); if ($sportVars[$sportId]['sport'] == 'basketball') { $timeExp = explode(':', $a_nodes[0]->innertext); $play->t = intval($timeExp[0]) * 60 + intval($timeExp[1]) + $periodTime; } else { if ($sportVars[$sportId]['sport'] == 'football') { //this probably doesn't work $play->x = $FBPos['new'] ? 1 : 0; if ($FBPos['new']) { $FBPos['new'] = false; $play->t = $FBPos['t']; $play->e = $FBPos['e']; } else { if (end($plays)->p[0] != 'o') { $play->e = end($plays)->e; } else {