diff --git a/public_html/includes/class/class.LSldapObject.php b/public_html/includes/class/class.LSldapObject.php index 507e9b72..704be40d 100644 --- a/public_html/includes/class/class.LSldapObject.php +++ b/public_html/includes/class/class.LSldapObject.php @@ -1996,6 +1996,69 @@ class LSldapObject { echo implode("\n$prefix - ", $values); echo "\n"; } + + + /** + * CLI remove command + * + * @param[in] $command_args array Command arguments : + * - Positional arguments : + * - LSobject type + * - object DN + * - Optional arguments : + * - -N|--no-confirm : Do not ask for confirmation + * + * @retval boolean True on succes, false otherwise + **/ + public static function cli_remove($command_args) { + $objType = null; + $dn = null; + $confirm = true; + foreach ($command_args as $arg) { + if ($arg == '-N' || $arg == '--no-confirm') + $confirm = false; + elseif (is_null($objType)) { + $objType = $arg; + } + elseif (is_null($dn)) { + $dn = $arg; + } + else + LScli :: usage("Invalid $arg parameter."); + } + + if (is_null($objType) || is_null($dn)) + LScli :: usage('You must provide LSobject type and DN.'); + + if (!LSsession :: loadLSobject($objType)) + return false; + + $obj = new $objType(); + if (!$obj->loadData($dn)) { + LSlog :: fatal("Fail to load object $dn data from LDAP"); + return false; + } + + if ($confirm) { + echo $obj -> _cli_show($raw_values); + // Sure ? + echo "\nAre you sure you want to delete this object ? Type 'yes' to continue: "; + $handle = fopen ("php://stdin","r"); + $line = fgets($handle); + if(trim($line) != 'yes'){ + echo "User cancel\n"; + return True; + } + echo "\n"; + } + + if ($obj -> remove()) { + LSlog :: info("Object ".$obj->getDn()." removed."); + return true; + } + LSlog :: error("Fail to remove object ".$obj->getDn()."."); + return false; + } } /** @@ -2127,3 +2190,10 @@ LScli :: add_command( 'Show an LSobject', '[object type] [dn] [-r|--raw-values]' ); + +LScli :: add_command( + 'remove', + array('LSldapObject', 'cli_remove'), + 'Remove an LSobject', + '[object type] [dn] [-N|--no-confirm]' +);