Subversion Repositories stackman

Rev

Rev 3 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
3 daniel-mar 1
#!/usr/bin/php
2
<?php
3
 
4
require_once __DIR__ . '/includes/db.inc.php';
5
require_once __DIR__ . '/includes/src.inc.php';
6
 
6 daniel-mar 7
$stam_cfg = array();
8
$stam_cfg['simulation'] = false;
9
require_once __DIR__ . '/includes/config.inc.php';
10
 
3 daniel-mar 11
if ($argc <> 3) {
12
	echo "Syntax: $argv[0] <newCategory> <id>\n";
13
	#db_close();
14
	exit(2);
15
}
16
 
17
$newcat = trim($argv[1]);
18
$id     = trim($argv[2]);
19
 
20
# Range support
21
if (strpos($id, '-') !== false) {
22
	$ary = explode('-', $id, 2);
23
	$id_min = $ary[0];
24
	$id_max = $ary[1];
25
} else {
26
	$id_min = $id;
27
	$id_max = $id;
28
}
29
if (($id_min == 0) || ($id_max == 0)) {
30
	fwrite(STDERR, "0 not a valid ID\n");
31
	#db_close();
32
	exit(3);
33
}
6 daniel-mar 34
$id_min = (int)$id_min;
35
$id_max = (int)$id_max;
3 daniel-mar 36
if ($id_min>$id_max) {
37
	fwrite(STDERR, "RANGE ERROR $id_min>$id_max\n");
38
	#db_close();
39
	exit(3);
40
}
6 daniel-mar 41
$id_cnt = $id_max - $id_min + 1;
3 daniel-mar 42
 
43
# Simulation mode
44
if ($stam_cfg['simulation']) {
45
	fwrite(STDERR, "============ ID-MOVETO SIMULATION: $id_min..$id_max :: $newcat\n");
46
	#db_close();
47
	exit(0);
48
}
49
 
50
$res = db_query("SELECT id, cat, txt FROM stam_entries WHERE
51
	id >= '".db_real_escape_string($id_min)."'
52
	AND id <= '".db_real_escape_string($id_max)."'
53
	");
54
if (!$res) {
55
	fwrite(STDERR, db_error()."\n");
56
	#db_close();
57
	exit(1);
58
}
59
while ($row = db_fetch_array($res)) {
60
	$id     = $row['id'];
61
	$oldcat = $row['cat'];
62
	$txt    = $row['txt'];
63
 
64
	if ($oldcat == $newcat) {
65
		echo "ID $id is already in <$oldcat>: $txt\n";
66
		continue; // not affected
67
	}
68
 
69
	$x = db_query("UPDATE stam_entries SET
70
		cat = '".db_real_escape_string($newcat)."'
71
		WHERE
72
		id = '".db_real_escape_string($id)."'
73
		");
74
	if (!$x) {
75
		fwrite(STDERR, db_error()."\n");
76
		#db_close();
77
		exit(1);
78
	}
79
 
80
	$afr = db_affected_rows();
81
	if ($afr != 1) {
82
		fwrite(STDERR, "Error: Could not update $id <$oldcat> '$txt'\n");
83
		#db_close();
84
		exit(1);
85
	} else {
86
		echo green("OK! Moved $id from '$oldcat' to '$newcat': $txt\n");
87
	}
88
}
89
 
90
# ---
91
 
92
function green($txt) {
93
	return "\033[1;32;40m".$txt."\033[0m";
94
}
95