#! /usr/bin/php
<?php

/**
 * Moodle plugins tools
 *
 * @package   mt
 * @copyright 2012 Aleksey Avdeev <solo@altlinux.ru>
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v2 or later
 */

if ($argc < 1) {
	exit(1);
}

$moodledir = '/var/www/webapps/moodle';
$configfilename = 'config.php';
$configfile = $moodledir . '/' . $configfilename;
$format = "%s\n";
$username = null;
$password = null;
$passwordhash = null;
$user = null;

$progname = array_shift($argv);

foreach ($argv as $key => $value) {
	$arg = preg_split('/=/',$value,2);
	switch ($arg[0]) {
	case "--configfile":
		$configfile = $arg[1];
		unset($argv[$key]);
		break;
	case "--":
		unset($argv[$key]);
		break 2;
	default:
		break;
	}
}

define("CLI_SCRIPT", true);
try {
	require_once($configfile);
} catch (Exception $e) {
	exit(1);
}

function getnewautchs($newautch) {
	global $CFG;

	$newautchs = explode(',',$newautch);

	foreach ($newautchs as $key => $value) {
		if (! empty($value)) {
			$pattern = '/(^|(?<=,))'.$value.'(,|$)/';
			if (preg_match($pattern,$CFG->auth))
				unset($newautchs[$key]);
		}
	}

	return $newautchs;
}

$oldauch = $CFG->auth;

foreach ($argv as $key => $value) {
	$arg = preg_split('/=/',$value,2);
	switch ($arg[0]) {
	case "--add":
		$autchs = getnewautchs($arg[1]);

		if (! empty($CFG->auth))
			array_unshift($autchs,$CFG->auth);

		$newauch = implode(',',$autchs);
		$CFG->auth = $newauch;

		unset($argv[$key]);
		break;
	case "--insert":
		$autchs = getnewautchs($arg[1]);

		if (! empty($CFG->auth))
			$autchs[] = $CFG->auth;

		$newauch = implode(',',$autchs);
		$CFG->auth = $newauch;

		unset($argv[$key]);
		break;
	case "--set":
		$CFG->auth = $arg[1];
		unset($argv[$key]);
		break;
	case "--rm":
		$autchs = explode(',',$arg[1]);

		foreach ($autchs as $key => $value) {
			if (! empty($value)) {
				$patterns = array(
					'/(^|(?<=,))'.$value.',/',
					'/(^|,)'.$value.'$/'
				);
				$CFG->auth = preg_replace($patterns,'',$CFG->auth);
			}
		}

		unset($argv[$key]);
		break;
	case "--":
		unset($argv[$key]);
		break 2;
	default:
		break;
	}
}

if ($oldauch != $CFG->auth)
	$DB->set_field('config','value',$CFG->auth,array('name'=>'auth'));

exit(0);
?>
