cellog Sat Apr 7 04:46:22 2007 UTC
Added files:
/CVSROOT/pear addkarma.php
Log:
add helper script to add karma
# TODO: make it smarter, to recognize and add to existing karma dirs
http://cvs.php.net/viewvc.cgi/CVSROOT/pear/addkarma.php?view=markup&rev=1.1
Index: CVSROOT/pear/addkarma.php
+++ CVSROOT/pear/addkarma.php
<?php
if (!isset($_SERVER['argv'])) {
die("Must use CLI\n");
}
if (count($_SERVER['argv']) != 3) {
die("usage: addkarma.php handle directory,directory\n");
}
if (!strpos($_SERVER['argv'][2], '/')) {
die("usage: addkarma.php handle directory,directory (use directory/ for
top-level)\n");
}
$newinfo = array();
$karma = array();
$new = new SplFileObject(dirname(__FILE__) . '/avail');
foreach ($new as $line) {
$line = trim($line);
if (!strlen($line) || $line[0] == '#' || $line == 'unavail') {
continue;
}
$line = explode('|', $line);
if ('unavail' == array_shift($line)) {
continue; // drop avail
}
if (!isset($line[1])) {
// avail everything
$modules = array('!');
} else {
$modules = explode(',', $line[1]);
}
$peoples = explode(',', $line[0]);
foreach ($peoples as $person) {
foreach ($modules as $module) {
if ($person == $_SERVER['argv'][1]) {
$karma[] = $module;
}
$newinfo[$person][$module] = 1;
}
}
}
$modules = explode(',', $_SERVER['argv'][2]);
array_walk($modules, create_function('&$a,$b', '$a = trim($a,"/");'));
$need = array();
foreach ($modules as $module) {
$test = explode('/', $module);
// test karma for directory and for parent directories
while (is_array($test) && count($test)) {
$mod = implode('/', $test);
if (in_array($mod, $karma)) {
if ($mod == $module) {
echo 'User already has karma for module ', $mod, "\n";
} else {
echo 'User already has karma for parent directory ', $mod,
' of module ', $module, "\n";
}
continue 2;
}
array_pop($test);
}
if (strpos($module, 'pear') === false) {
echo "Module $module should be added to avail, not pear/avail,
skipping\n";
continue;
}
$need[] = $module;
}
if (count($need)) {
echo 'adding karma for ' . implode(',', $modules) . "\n";
clearstatcache();
$fp = fopen(dirname(__FILE__) . '/avail', 'r+');
// strlen("\n# vim:set ft=conf sw=2 ts=2 et:\n")
fseek($fp, -33, SEEK_END);
ftruncate($fp, ftell($fp));
fwrite($fp, "avail|" . $_SERVER['argv'][1] . '|' . implode(',', $need) .
"\n# vim:set ft=conf sw=2 ts=2 et:\n");
fclose($fp);
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php