1
0
Fork 0
mirror of https://github.com/Yetangitu/ampache synced 2025-10-03 09:49:30 +02:00

catalog clean up and admin index changes

This commit is contained in:
Karl 'vollmerk' Vollmer 2006-03-20 01:55:03 +00:00
parent b99e8307ac
commit eda7fd335c
12 changed files with 379 additions and 367 deletions

View file

@ -1,7 +1,7 @@
<?php
/*
Copyright (c) 2001 - 2005 Ampache.org
Copyright (c) 2001 - 2006 Ampache.org
All rights reserved.
This program is free software; you can redistribute it and/or
@ -28,7 +28,7 @@
require('../modules/init.php');
if (!$user->has_access(100)) {
if (!$GLOBALS['user']->has_access(100)) {
access_denied();
}
@ -45,8 +45,8 @@ switch ($_REQUEST['action']) {
$type = 'show_flagged_songs';
include(conf('prefix') . '/templates/flag.inc');
break;
case _("Add to Catalog(s)"):
case 'add_to_catalog':
if (conf('demo_mode')) { break; }
if ($_REQUEST['catalogs'] ) {
foreach ($_REQUEST['catalogs'] as $catalog_id) {
@ -56,7 +56,6 @@ switch ($_REQUEST['action']) {
}
include(conf('prefix') . '/templates/catalog.inc');
break;
case _("Add to all Catalogs"):
if (conf('demo_mode')) { break; }
@ -79,9 +78,11 @@ switch ($_REQUEST['action']) {
}
include(conf('prefix') . '/templates/catalog.inc');
break;
case _("Update Catalog(s)"):
case 'update_catalog':
/* If they are in demo mode stop here */
if (conf('demo_mode')) { break; }
if (isset($_REQUEST['catalogs'])) {
foreach ($_REQUEST['catalogs'] as $catalog_id) {
$catalog = new Catalog($catalog_id);
@ -90,7 +91,6 @@ switch ($_REQUEST['action']) {
}
include(conf('prefix') . '/templates/catalog.inc');
break;
case _("Update All Catalogs"):
if (conf('demo_mode')) { break; }
$catalogs = $catalog->get_catalogs();
@ -100,7 +100,20 @@ switch ($_REQUEST['action']) {
}
include(conf('prefix') . '/templates/catalog.inc');
break;
case 'full_service':
/* Make sure they aren't in demo mode */
if (conf('demo_mode')) { break; }
/* This runs the clean/verify/add in that order */
foreach ($_REQUEST['catalogs'] as $catalog_id) {
$catalog = new Catalog($catalog_id);
$catalog->clean_catalog();
$catalog->count = 0;
$catalog->update_catalog();
$catalog->count = 0;
$catalog->add_to_catalog();
}
break;
case 'delete_catalog':
if (conf('demo_mode')) { break; }
if ($_REQUEST['confirm'] === 'Yes') {
@ -109,7 +122,6 @@ switch ($_REQUEST['action']) {
}
include(conf('prefix') . '/templates/catalog.inc');
break;
case 'remove_disabled':
if (conf('demo_mode')) { break; }
$song = $_REQUEST['song'];
@ -122,15 +134,16 @@ switch ($_REQUEST['action']) {
}
include(conf('prefix') . '/templates/catalog.inc');
break;
case _("Clean Catalog(s)"):
case _('Clean Catalog(s)'):
case 'clean_catalog':
/* If they are in demo mode stop them here */
if (conf('demo_mode')) { break; }
// Make sure they checked something
if (isset($_REQUEST['catalogs'])) {
foreach($_REQUEST['catalogs'] as $catalog_id) {
$catalog = new Catalog($catalog_id);
$catalog->clean_catalog(0,$_REQUEST['update_type']);
$catalog->clean_catalog(0,1);
} // end foreach catalogs
}
include(conf('prefix') . '/templates/catalog.inc');
@ -152,7 +165,6 @@ switch ($_REQUEST['action']) {
$result = mysql_query($sql, dbh());
include(conf('prefix') . '/templates/catalog.inc');
break;
case _("Clean All Catalogs"):
if (conf('demo_mode')) { break; }
$catalogs = $catalog->get_catalogs();
@ -186,25 +198,20 @@ switch ($_REQUEST['action']) {
include(conf('prefix') . '/templates/add_catalog.inc');
}
break;
case 'really_clear_stats':
if (conf('demo_mode')) { break; }
if ($_REQUEST['confirm'] == 'Yes') {
clear_catalog_stats();
}
include(conf('prefix') . '/templates/catalog.inc');
break;
case 'show_add_catalog':
include(conf('prefix') . '/templates/add_catalog.inc');
break;
case 'clear_now_playing':
if (conf('demo_mode')) { break; }
clear_now_playing();
show_confirmation(_("Now Playing Cleared"),_("All now playing data has been cleared"),"/admin/catalog.php");
break;
case 'Clear Catalog':
if (conf('demo_mode')) { break; }
@ -212,13 +219,11 @@ switch ($_REQUEST['action']) {
"admin/catalog.php", "action=really_clear_catalog");
print("<hr />\n");
break;
case 'clear_stats':
if (conf('demo_mode')) { break; }
show_confirm_action(_("Do you really want to clear the statistics for this catalog?"),
"admin/catalog.php", "action=really_clear_stats");
break;
case 'show_disabled':
if (conf('demo_mode')) { break; }
$songs = $catalog->get_disabled();
@ -229,32 +234,21 @@ switch ($_REQUEST['action']) {
echo "<p class=\"error\" align=\"center\">No Disabled songs found</p>";
}
break;
case 'show_delete_catalog':
if (conf('demo_mode')) { break; }
show_confirm_action(_("Do you really want to delete this catalog?"),
"admin/catalog.php",
"catalog_id=" . $_REQUEST['catalog_id'] . "&amp;action=delete_catalog");
break;
case 'show_flagged_songs':
if (conf('demo_mode')) { break; }
$type = $_REQUEST['action'];
include (conf('prefix') . '/templates/flag.inc');
break;
case 'Update Flags':
if (conf('demo_mode')) { break; }
echo "<pre>";
print_r($_REQUEST);
echo "</pre>";
break;
case 'show_customize_catalog':
include(conf('prefix') . '/templates/customize_catalog.inc');
break;
case 'gather_album_art':
echo "<b>" . _("Starting Album Art Search") . ". . .</b><br /><br />\n";
flush();
@ -266,18 +260,9 @@ switch ($_REQUEST['action']) {
echo "<b>" . _("Album Art Search Finished") . ". . .</b><br />\n";
break;
// (Added by Cucumber 20050216)
case 'dump_album_art':
$catalogs = $catalog->get_catalogs();
foreach ($catalogs as $data) {
$data->dump_album_art();
}
break;
default:
include(conf('prefix') . '/templates/catalog.inc');
break;
} // end switch
/* Show the Footer */

View file

@ -1,7 +1,7 @@
<?php
/*
Copyright (c) 2001 - 2005 Ampache.org
Copyright (c) 2001 - 2006 Ampache.org
All rights reserved.
This program is free software; you can redistribute it and/or
@ -20,59 +20,31 @@
*/
/*!
@header Admin Index
Do most of the dirty work of displaying the mp3 catalog
*/
require ("../modules/init.php");
require ('../modules/init.php');
$action = scrub_in($_REQUEST['action']);
if (!$user->has_access(100)) {
header ("Location: " . conf('web_path') . "/index.php?access=denied");
if (!$GLOBALS['user']->has_access(100)) {
access_denied();
exit();
}
// let's set the preferences here so that they take affect on the fly
if ( $action == 'Update Preferences' ) {
update_site_preferences($preferences_id, 'true', $new_m_host, $new_w_host,
$new_site_title, $new_login_message, $new_session_lifetime, $new_font,
$new_background_color, $new_primary_color, $new_secondary_color,
$new_primary_font_color, $new_secondary_font_color,
$new_error_color, $new_popular_threshold);
// reload the preferences now
set_preferences();
}
show_template('header');
if ( $action == 'Update Preferences' ) {
$action = 'show_preferences';
}
elseif ( $action == 'show_update_catalog' ) {
show_update_catalog();
}
elseif ( $action == 'show_file_manager' ) {
show_file_manager();
}
elseif ( $action == 'show_site_preferences' ) {
$user = new User(0);
require (conf('prefix') . "/templates/show_preferences.inc");
}
elseif ( $action == 'show_preferences' ) {
$user = new User($_REQUEST['user_id']);
require (conf('prefix') . "/templates/show_preferences.inc");
}
elseif ( $action == 'show_orphaned_files' ) {
show_orphaned_files();
}
else {
show_clear();
require (conf('prefix') . "/templates/show_admin_index.inc");
} // if they didn't pick anything
show_footer();
?>
<!-- Big Daddy Table -->
<table>
<tr>
<!-- Needs Attention Cell -->
<td rowspan="2" valign="top" width="50%">
<?php require (conf('prefix') . '/templates/show_admin_info.inc.php'); ?>
</td>
<!-- Catalog Cell -->
<td width="50%"><?php require (conf('prefix') . '/templates/show_admin_catalog.inc.php'); ?></td>
</tr>
<tr>
<!-- Users Cell -->
<td><?php require (conf('prefix') . '/templates/show_admin_user.inc.php'); ?></td>
</tr>
</table>
<?php show_footer(); ?>

View file

@ -34,12 +34,12 @@ while ($r = mysql_fetch_row($db_results)) {
$catalog = new Catalog($r[0]);
// Clean out dead files
$catalog->clean_catalog();
$catalog->clean_catalog(0,0);
$catalog->count = 0;
// Verify Existing
$catalog->verify_catalog();
$catalog->verify_catalog(0,0,0);
$catalog->count = 0;

View file

@ -4,6 +4,8 @@
--------------------------------------------------------------------------
v.3.3.2-Beta2
- Added dump album art command line script and tweaked catalog
build display.
- Tweaked preferences adding tab'd views rather then all on one
page, also added account page back in.
- Fixed popen in downsample, forcing binary mode, so that windows

View file

@ -266,8 +266,9 @@ class Catalog {
information against the db.
@param $path The root path you want to start grabing files from
@param $gather_type=0 Determins if we need to check the id3 tags of the file or not
@param $parse_m3u Tells Ampache to look at m3us
*/
function add_files($path,$gather_type='',$parse_m3u='') {
function add_files($path,$gather_type='',$parse_m3u='',$verbose=1) {
/* Strip existing escape slashes and then add them again
This is done because we keep adding to the dir (slashed) + (non slashed)
and a double addslashes would pooch things
@ -380,7 +381,9 @@ class Catalog {
/* Stupid little cutesie thing */
$this->count++;
if ( !($this->count%conf('catalog_echo_count')) ) {
echo _("Added") . " $this->count. . . . <br />\n";
echo "<script language=\"JavaScript\">";
echo "update_txt('" . $this->count . "','count');";
echo "</script>\n";
flush();
} //echos song count
@ -736,16 +739,17 @@ class Catalog {
/* Fluf */
echo _("Starting Catalog Build") . " [$name]<br />\n";
flush();
if ($this->catalog_type == 'remote') {
echo _("Running Remote Sync") . ". . .<br /><br />";
flush();
$this->get_remote_catalog($type=0);
return true;
}
echo _('Found') . ": <span id=\"count\">" . _('None') . "</span><br />\n";
flush();
/* Get the songs and then insert them into the db */
$this->add_files($this->path,$type,$parse_m3u);
@ -890,29 +894,34 @@ class Catalog {
@discussion this function adds new files to an
existing catalog
*/
function add_to_catalog($type='') {
function add_to_catalog($type='',$verbose=1) {
echo "\n" . _('Starting New Song Search on') . " <b>[$this->name]</b> " . _('catalog') . "<br /><br />\n";
flush();
if ($verbose) {
echo "\n" . _('Starting New Song Search on') . " <b>[$this->name]</b> " . _('catalog') . "<br />\n";
}
if ($this->catalog_type == 'remote') {
echo _('Running Remote Update') . ". . .<br /><br />";
flush();
echo _('Running Remote Update') . ". . .<br />";
$this->get_remote_catalog($type=0);
return true;
}
echo _('Found') . ": <span id=\"count\">" . _('None') . "</span><br />\n";
flush();
/* Set the Start time */
$start_time = time();
/* Get the songs and then insert them into the db */
$this->add_files($this->path,$type);
$this->add_files($this->path,$type,1,$verbose);
foreach ($this->_playlists as $full_file) {
if ($this->import_m3u($full_file)) {
$file = basename($full_file);
if ($verbose) {
echo "&nbsp;&nbsp;&nbsp;" . _('Added Playlist From') . " $file . . . .<br />\n";
flush();
}
} // end if import worked
} // end foreach playlist files
@ -920,8 +929,10 @@ class Catalog {
$current_time = time();
if ($type != 'fast_add') {
if ($verbose) {
echo "\n<b>" . _('Starting Album Art Search') . ". . .</b><br />\n";
flush();
}
$this->get_album_art();
}
@ -1118,17 +1129,19 @@ class Catalog {
@discussion Cleans the Catalog of files that no longer exist grabs from $this->id or $id passed
Doesn't actually delete anything, disables errored files, and returns them in an array
@param $catalog_id=0 Take the ID of the catalog you want to clean
@param $action=0 Delete/Disable, default is disable
*/
function clean_catalog($catalog_id=0,$action=0) {
function clean_catalog($catalog_id=0,$verbose=1) {
/* Define the Arrays we will need */
$dead_files = array();
if (!$catalog_id) { $catalog_id = $this->id; }
echo "\nCleaning the <b>[" . $this->name . "]</b> Catalog...<br /><br />\n";
if ($verbose) {
echo "\n" . _('Cleaning the') . " <b>[" . $this->name . "]</b> " . _('Catalog') . "...<br />\n";
echo _('Checking') . ": <span id=\"count\"></span>\n<br />";
flush();
}
/* Get all songs in this catalog */
$sql = "SELECT id,file FROM song WHERE catalog='$catalog_id' AND enabled='1'";
@ -1142,8 +1155,10 @@ class Catalog {
/* Stupid little cutesie thing */
$this->count++;
if ( !($this->count%conf('catalog_echo_count')) ) {
echo _('Checking') . " $this->count. . . . <br />\n";
if ( !($this->count%conf('catalog_echo_count')) && $verbose) {
echo "<script language=\"JavaScript\">";
echo "update_txt('" . $this->count ."','count');";
echo "</script>\n";
flush();
} //echos song count
@ -1154,8 +1169,10 @@ class Catalog {
if (!file_exists($results->file) OR $file_info < 1) {
/* Add Error */
if ($verbose) {
echo "<font class=\"error\">Error File Not Found or 0 Bytes: " . $results->file . "</font><br />";
flush();
}
/* Add this file to the list for removal from the db */
$dead_files[] = $results;
@ -1169,22 +1186,9 @@ class Catalog {
if (count($dead_files)) {
foreach ($dead_files as $data) {
//FIXME: Until I fix the form, assume delete
//if ($action === 'delete_dead') {
$sql = "DELETE FROM song WHERE id='$data->id'";
//}
//
//else {
// $sql = "UPDATE song SET status='disabled' WHERE id='$data->id'";
//}
$db_results = mysql_query($sql, dbh());
/* DB Error occured */
if (!$db_results) {
/* Add Error */
} //if error
} //end foreach
} // end if dead files
@ -1198,11 +1202,13 @@ class Catalog {
$this->clean_stats();
$this->clean_playlists();
$this->clean_flagged();
;$this->clean_genres();
$this->clean_genres();
/* Return dead files, so they can be listed */
if ($verbose) {
echo "<b>" . _("Catalog Clean Done") . " [" . count($dead_files) . "] " . _("files removed") . "</b><br />\n";
flush();
}
return $dead_files;
$this->count = 0;
@ -1461,7 +1467,7 @@ class Catalog {
@discussion This function compares the DB's information with the ID3 tags
@param $catalog_id The ID of the catalog to compare
*/
function verify_catalog($catalog_id=0,$gather_type='') {
function verify_catalog($catalog_id=0,$gather_type='',$verbose=1) {
/* Create and empty song for us to use */
$total_updated = 0;
@ -1476,9 +1482,12 @@ class Catalog {
$db_results = mysql_query($sql, dbh());
$number = mysql_num_rows($db_results);
if ($verbose) {
echo _("Updating the") . " <b>[ $this->name ]</b> " . _("Catalog") . "<br />\n";
echo $number . " " . _("songs found checking tag information.") . "<br /><br />\n\n";
echo $number . " " . _("songs found checking tag information.") . "<br />\n\n";
echo _('Verifed') . ": <span=\"count\">None</span><br />\n";
flush();
}
/* Magical Fix so we don't run out of time */
set_time_limit(0);
@ -1550,7 +1559,9 @@ class Catalog {
/* Stupid little cutesie thing */
$this->count++;
if ( !($this->count%conf('catalog_echo_count')) ) {
echo "Checked $this->count. . . . <br />\n";
echo "<script language=\"JavaScript\">";
echo "update_txt('" . $this->count . "','count');";
echo "</script>\n";
flush();
} //echos song count

View file

@ -265,6 +265,10 @@ function selectField(element)
}
}
// function for the catalog mojo fluf
function update_txt(value,field) {
document.getElementById(field).innerHTML=value;
}
function popup_art(url) {
var newwindow;

View file

@ -30,6 +30,9 @@ function log_event($username='Unknown',$event_name,$event_description,$log_name=
/* Set it up here to make sure it's _always_ the same */
$log_time = time();
/* must have some name */
if (!strlen($log_name)) { $log_name = 'ampache'; }
$log_filename = conf('log_path') . "/$log_name." . date("Ymd",$log_time) . ".log";
$log_line = date("Y-m-d H:i:s",$log_time) . " { $username } ( $event_name ) - $event_description \n";

View file

@ -80,7 +80,7 @@ if (!$results['allow_stream_playback']) {
/** This is the version.... fluf nothing more... **/
$results['version'] = '3.3.2-Beta2 (Build 008)';
$results['version'] = '3.3.2-Beta2 (Build 009)';

View file

@ -61,5 +61,5 @@ if (conf('use_rss')) { ?>
<?php require_once(conf('prefix') . '/templates/sidebar.inc.php'); ?>
</div><!-- End sidebar -->
<div id="content">
<table> <!-- Start Main Page Table-->
<table> <!-- Start Main Page Table -->
<tr><td>

View file

@ -0,0 +1,54 @@
<?php
/*
Copyright (c) 2001 - 2006 Ampache.org
All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
$web_path = conf('web_path');
$catalogs = Catalog::get_catalogs();
?>
<div class="text-box">
<span class="header2"><?php echo _('Catalogs'); ?></span>
<!-- Current Catalogs -->
<table border="0" cellpadding="0" cellspacing="0">
<tr class="table-header">
<td><?php echo _('Name'); ?></td>
<td align="center"><?php echo _('Action'); ?></td>
<?php foreach ($catalogs as $catalog) { ?>
<tr class="<?php echo flip_class(); ?>">
<td>
<a href="<?php echo $web_path; ?>/admin/catalog.php?action=show_customize_catalog&amp;catalog_id=<?php echo $catalog->id; ?>">
<?php echo $catalog->name; ?></a>
&nbsp;&nbsp;(<?php echo $catalog->path; ?>)
</td>
<td>
<a href="<?php echo $web_path; ?>/admin/catalog.php?action=add_to_catalog&amp;catalogs[]=<?php echo $catalog->id; ?>">
<?php echo _('Add'); ?></a>&nbsp;|&nbsp;
<a href="<?php echo $web_path; ?>/admin/catalog.php?action=update_catalog&amp;catalogs[]=<?php echo $catalog->id; ?>">
<?php echo _('Update'); ?></a>&nbsp;|&nbsp;
<a href="<?php echo $web_path; ?>/admin/catalog.php?action=clean_catalog&amp;catalogs[]=<?php echo $catalog->id; ?>">
<?php echo _('Clean'); ?></a>&nbsp;|&nbsp;
<a href="<?php echo $web_path; ?>/admin/catalog.php?action=full_service&amp;catalogs[]=<?php echo $catalog->id; ?>">
<?php echo _('All'); ?></a>
</td>
</tr>
<?php } // end foreach ?>
</table>
<span class="header2"><?php echo _('Other Tools'); ?></span><br />
</div>

View file

@ -1,46 +0,0 @@
<?php
/*
Copyright (c) 2001 - 2006 Ampache.org
All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/*!
@header Show Admin Index
@discussion shows the admin index
*/
$web_path = conf('web_path');
$sections = array(_("User Management") => $web_path . "/admin/users.php",
_("E-mail Management") => $web_path . "/admin/mail.php",
_("Catalog Managment") => $web_path . "/admin/catalog.php",
_("Admin Preferences") => $web_path . "/admin/preferences.php",
_("Access Lists") => $web_path . "/admin/access.php");
$common = array(_("Add a catalog") => $web_path . "/admin/catalog.php?action=show_add_catalog",
_("Add a new user") => $web_path . "/admin/users.php?action=show_add_user",
_("Clear Now Playing") => $web_path . "/admin/catalog.php?action=clear_now_playing",
_("Add Access List Entry") => $web_path . "/admin/access.php?action=show_add_host");
?>
<table cellpadding="5" border="0" cellspacing="0">
<tr>
<td valign="top"><?php show_tool_box(_("Common Functions"), $common); ?><?php show_clear(); ?></td>
</tr>
<tr>
<td valign="top"><?php show_tool_box(_("Admin Sections"), $sections); ?></td>
</tr>
</table>

View file

@ -0,0 +1,27 @@
<?php
/*
Copyright (c) 2001 - 2006 Ampache.org
All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
$web_path = conf('web_path');
?>
<div class="text-box">
<span class="header2"><?php echo _('Users'); ?></span><br />
</div>