Esempio n. 1
0
    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;
    }
Esempio n. 2
0
 /**
  * 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);
 }
Esempio n. 3
0
 /**
  * (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));
 }
Esempio n. 4
0
 public function get_play_count()
 {
     if (!$this->initialised()) {
         Logger::log("get_play_count: user not initialised");
         return -1;
     }
     return Play::user_play_count($this);
 }
Esempio n. 5
0
 /**
  * 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;
 }
Esempio n. 7
0
 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);
 }
Esempio n. 8
0
 public function testPlayBadAppend()
 {
     $this->setExpectedException('TwilioException');
     $p = new Play();
     $p->append(new Dial());
 }
Esempio n. 9
0
 /**
  * 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;
 }
Esempio n. 10
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();
 }
Esempio n. 11
0
         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 {