Subversion Repositories stackman

Compare Revisions

No changes between revisions

Regard whitespace Rev 2 → Rev 3

/trunk/SSH/id_move
0,0 → 1,89
#!/usr/bin/php
<?php
 
require_once __DIR__ . '/includes/db.inc.php';
require_once __DIR__ . '/includes/src.inc.php';
 
if ($argc <> 3) {
echo "Syntax: $argv[0] <newCategory> <id>\n";
#db_close();
exit(2);
}
 
$newcat = trim($argv[1]);
$id = trim($argv[2]);
 
# Range support
if (strpos($id, '-') !== false) {
$ary = explode('-', $id, 2);
$id_min = $ary[0];
$id_max = $ary[1];
} else {
$id_min = $id;
$id_max = $id;
}
if (($id_min == 0) || ($id_max == 0)) {
fwrite(STDERR, "0 not a valid ID\n");
#db_close();
exit(3);
}
if ($id_min>$id_max) {
fwrite(STDERR, "RANGE ERROR $id_min>$id_max\n");
#db_close();
exit(3);
}
$id_cnt = $id_max-$id_min + 1;
 
# Simulation mode
if ($stam_cfg['simulation']) {
fwrite(STDERR, "============ ID-MOVETO SIMULATION: $id_min..$id_max :: $newcat\n");
#db_close();
exit(0);
}
 
$res = db_query("SELECT id, cat, txt FROM stam_entries WHERE
id >= '".db_real_escape_string($id_min)."'
AND id <= '".db_real_escape_string($id_max)."'
");
if (!$res) {
fwrite(STDERR, db_error()."\n");
#db_close();
exit(1);
}
while ($row = db_fetch_array($res)) {
$id = $row['id'];
$oldcat = $row['cat'];
$txt = $row['txt'];
 
if ($oldcat == $newcat) {
echo "ID $id is already in <$oldcat>: $txt\n";
continue; // not affected
}
 
$x = db_query("UPDATE stam_entries SET
cat = '".db_real_escape_string($newcat)."'
WHERE
id = '".db_real_escape_string($id)."'
");
if (!$x) {
fwrite(STDERR, db_error()."\n");
#db_close();
exit(1);
}
 
$afr = db_affected_rows();
if ($afr != 1) {
fwrite(STDERR, "Error: Could not update $id <$oldcat> '$txt'\n");
#db_close();
exit(1);
} else {
echo green("OK! Moved $id from '$oldcat' to '$newcat': $txt\n");
}
}
 
# ---
 
function green($txt) {
return "\033[1;32;40m".$txt."\033[0m";
}
 
Property changes:
Added: svn:executable
+*
\ No newline at end of property