function generateStats() { $stats = array(); if ($this->getLevel() == 0) { $pathstring = ""; $fullpathstring = ""; } else { $pathstring = "path LIKE '" . jz_db_escape($this->getPath("String")) . "/%' AND "; $fullpathstring = "WHERE path LIKE '" . jz_db_escape($this->getPath("String")) . "/%'"; } $link = jz_db_connect(); $results = jz_db_query($link, "SELECT sum(filesize) FROM jz_tracks WHERE {$pathstring} filesize != '-' AND filesize > 0"); $stats['total_size'] = $results->data[0][0]; $results = jz_db_query($link, "SELECT sum(length) FROM jz_tracks WHERE {$pathstring} length != '-' AND length > 0"); $stats['total_length'] = $results->data[0][0]; $results = jz_db_query($link, "SELECT count(*) FROM jz_tracks {$fullpathstring}"); $stats['total_tracks'] = $tracks = $results->data[0][0]; $results = jz_db_query($link, "SELECT avg(bitrate) FROM jz_tracks WHERE {$pathstring} bitrate != '-' AND bitrate > 0"); $stats['avg_bitrate'] = round($results->data[0][0], 2); $results = jz_db_query($link, "SELECT avg(length) FROM jz_tracks WHERE {$pathstring} length != '-' AND length > 0"); $stats['avg_length'] = round($results->data[0][0], 0); $results = jz_db_query($link, "SELECT avg(filesize) FROM jz_tracks WHERE {$pathstring} filesize != '-' AND filesize > 0"); $stats['avg_size'] = round($results->data[0][0], 2); $results = jz_db_query($link, "SELECT avg(year) FROM jz_tracks WHERE {$pathstring} year != '-' AND year > 1000"); $stats['avg_year'] = round($results->data[0][0], 2); $str = ""; // stringize stuff: $stats['avg_length_str'] = stringize_time($stats['avg_length']); $stats['total_length_str'] = stringize_time($stats['total_length']); $stats['total_size_str'] = stringize_size($stats['total_size']); if (($d = distanceTo('genre', $this)) !== false) { $stats['total_genres'] = $this->getSubNodeCount('nodes', $d); } else { $stats['total_genres'] = 0; } if (($d = distanceTo('artist', $this)) !== false) { $stats['total_artists'] = $this->getSubNodeCount('nodes', $d); } else { $stats['total_artists'] = 0; } if (($d = distanceTo('album', $this)) !== false) { $stats['total_albums'] = $this->getSubNodeCount('nodes', $d); } else { $stats['total_albums'] = 0; } // nodes at track level are disks. if (($d = distanceTo('track', $this)) !== false) { $stats['total_disks'] = $this->getSubNodeCount('nodes', $d); } else { $stats['total_disks'] = 0; } $this->stats = $stats; return $stats; }
/** * Creates all of our statistics. * * @author Ben Dodson * @version 11/16/04 * @since 11/16/04 * @param $string specifically what to return, defaults to everything */ function generateStats($return = false) { $stats = array(); // have to do it... $elements = $this->getSubNodes("tracks", -1); $length = $size = $bitrate = $year = $yearc = $lengthc = $brc = $sizec = $tracks = 0; foreach ($elements as $track) { $tracks++; $meta = $track->getMeta(); if ($meta['length'] != '-' && $meta['length'] > 0) { $length += $meta['length']; $lengthc++; } if ($meta['size'] != '-' && $meta['size'] > 0) { $size += $meta['size']; $sizec++; } if ($meta['year'] != '-' && $meta['year'] > 1000) { $year += $meta['year']; $yearc++; } if ($meta['bitrate'] != '-' && $meta['bitrate'] > 0) { $bitrate += $meta['bitrate']; $brc++; } } if ($tracks == 0) { return false; } $stats['total_size'] = $size; $stats['total_length'] = $length; $stats['total_tracks'] = $tracks; $stats['avg_bitrate'] = @round($bitrate / $brc, 2); $stats['avg_length'] = @round($length / $lengthc, 0); $stats['avg_size'] = @round($size / $sizec, 2); $stats['avg_year'] = @round($year / $yearc, 2); $str = ""; // stringize stuff: $stats['avg_length_str'] = stringize_time($stats['avg_length']); $stats['total_length_str'] = stringize_time($stats['total_length']); $stats['total_size_str'] = stringize_size($stats['total_size']); // Now did we want to return something specific if ($return) { return $stats[$return]; } if (($d = distanceTo('genre', $this)) !== false) { $stats['total_genres'] = $this->getSubNodeCount('nodes', $d); } else { $stats['total_genres'] = 0; } if (($d = distanceTo('artist', $this)) !== false) { $stats['total_artists'] = $this->getSubNodeCount('nodes', $d); } else { $stats['total_artists'] = 0; } if (($d = distanceTo('album', $this)) !== false) { $stats['total_albums'] = $this->getSubNodeCount('nodes', $d); } else { $stats['total_albums'] = 0; } // nodes at track level are disks. if (($d = distanceTo('track', $this)) !== false) { $stats['total_disks'] = $this->getSubNodeCount('nodes', $d); } else { $stats['total_disks'] = 0; } $this->stats = $stats; }