6.0.0-alpha14
6/24/25
Last Modified 4/5/09 by Guest

Removing User Data

Using the removeUserData APIs

From dom.lalot at gmail com



#!/usr/bin/env php

<?php

@define('AUTH_HANDLER', true);

@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:

http://www2.hurleybulldogs.com/billsblog/?p=21