[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