[cvs] [Wiki] changed: RemoveUserData
Wiki Guest
wikiguest at horde.org
Sun Apr 5 06:44:36 UTC 2009
guest [62.147.190.49] Sun, 05 Apr 2009 02:44:36 -0400
Modified page: http://wiki.horde.org/RemoveUserData
New Revision: 2.0
Change log: using removeuserdata
@@ -1,9 +1,79 @@
+ Removing User Data
++ Using the removeUserData APIs
-To do.
+#!/usr/bin/env php
+<?php
+ at define('AUTH_HANDLER', true);
+ at define('HORDE_BASE', dirname(__FILE__));
+# require_once HORDE_BASE . '/lib/base.php';
+// Do CLI checks and environment setup first.
+require_once HORDE_BASE . '/lib/core.php';
+require_once 'Horde/CLI.php';
+// Make sure no one runs this from the web.
+if (!Horde_CLI::runningFromCLI()) {
+ exit("Must be run from the command line\n");
+}
+// Load the CLI environment - make sure there's no time limit, init some
+// variables, etc.
+$cli = &Horde_CLI::singleton();
+$cli->init();
+// Include needed libraries.
+require_once HORDE_BASE . '/lib/base.php';
+// Authenticate as administrator.
+if (!count($conf['auth']['admins'])) {
+ exit("You must have at least one administrator configured to run
the alarms.php script.\n");
+}
+$auth = &Auth::singleton($conf['auth']['driver']);
+$auth->setAuth($conf['auth']['admins'][0], array());
+require_once HORDE_BASE . '/lib/Horde/Auth.php';
+global $conf;
+require_once 'DB.php';
+$db = &DB::connect($conf['sql']);
+if (is_a($db, 'PEAR_Error')) {
+ Horde::fatal($db, __FILE__, __LINE__);
+}
+$validusers=$auth->listUsers();
+$valides=count($validusers);
+if ($valides==0){
+ echo "Can't list users, your auth driver has no listusers capability\n";
+ exit;
+}
+echo "$valides valid users found\n";
+$valides=array();
+foreach($validusers as $value){
+ $valides[$value]=1;
+}
+// Looking at prefs to get most of old user data
+$db->setOption('portability', DB_PORTABILITY_LOWERCASE |
DB_PORTABILITY_ERRORS);
+$result = $db->query('SELECT pref_uid FROM horde_prefs WHERE 1');
+if (is_a($result, 'PEAR_Error')) {
+ $cli->message($result->toString(), 'cli.error');
+ exit;
+}
+
+$uid = array();
+while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $login=$row['pref_uid'];
+ $uid[$login] = $login;
+}
+$total=count($uid);
+echo "$total data user found\n";
+echo "Exit without removing data, change the script please\n";
+exit; # Drop this line if you want to remove data
+
+//now compare valid and data found and purge
+foreach ($uid as $value) {
+ if (!array_key_exists($value,$valides)){
+ echo "Not Found $value\n";
+ Auth::removeUserData($value);
+ $supp++;
+ }
+}
+echo "suppressed $supp\n";
+?>
+
++ A stand-alone script
From Bill Graham:
More information about the cvs
mailing list