#!/usr/bin/php
<?
chdir(dirname(__FILE__));
require_once('../nmail/include/global.php');
require_once("include/mail_lib.php");
require_once('include/admin_lib.php');
require_once("include/file.php");


// 웹상에서의 실행방지.
if ($_SERVER['DOCUMENT_ROOT'] || $_SERVER['SERVER_SOFTWARE'])
{
	die("Access Denied");	
}	// if()


// set
set_time_limit(0);
ini_set('memory_limit', '512M');
$memory_limit = ini_get('memory_limit');
#echo "memory_get_usage: ".number_format(memory_get_usage()) . "\n"; 

$_start = getmicrotime();

// 입력값 확인.
$d_name = addslashes($_SERVER['argv'][1]);
$m_quota = addslashes($_SERVER['argv'][2]);
$mg_no = addslashes($_SERVER['argv'][3]);
$is_test = addslashes($_SERVER['argv'][4]);
if (!$d_name || !$m_quota)
{
	die("특정 도메인에 등록된 모든 회원의 메일용량을 일괄적으로 변경합니다.\n  사용방법) ".$_SERVER['PHP_SELF']." domain.com 메일용량(MB) 회원조직번호(생략가능)\n    - 특정 도메인에 30MB 할당) ".$_SERVER['PHP_SELF']." domain.com 30\n    - mg_no=1 인 조직에 30MB 할당) ".$_SERVER['PHP_SELF']." domain.com 30 1\n\n");
}	// if()
$m_quota = ($m_quota * 1024);
if (!is_int($m_quota))
	die("메일용량은 숫자로만 입력하셔야 합니다.\n");

$d_no = db_get_one("SELECT d_no FROM " . $TB['DOMAIN'] . " WHERE d_name = '" . $d_name . "'");
if (!$d_no)
	die("존재하지 않는 도메인입니다.\n=> " . $d_name."\n");

$G_SYS['MAIL_DOMAIN'] = $d_name;

// [2007-07-21] 메일링 리스트 계정은 제외
//$mbr = db_get_rows("SELECT m_no, m_id, m_quota FROM " . $TB['MEMBER'] . " WHERE d_no = '" . $d_no . "' AND m_quota != '".$m_quota."'");
// [2012-03-14] 특정 조직만 선택하는 기능 추가
if ($mg_no > 0)
{
	$q = "SELECT mg_name FROM ".$TB['MEMBER_GROUP']." WHERE mg_no='".$mg_no."'";
	$mg_name = db_get_one($q);
	if ($mg_name == '')
	{
		die("존재하지 않는 회원 조직입니다.\n=> " . $mg_no."\n");

	} else 
	{
		echo "[".$mg_name."][".$mg_no."]회원 조직이 선택되었습니다.\n";
	}	// if()

	$q = "SELECT m.m_no, m.m_id, m.m_quota FROM " . $TB['MEMBER'] . " m, " . $TB['MEMBER_GROUP_REL'] . " mgr  WHERE m.m_no = mgr.m_no AND mgr.mg_no='".$mg_no."' AND m.d_no = '" . $d_no . "' AND m.m_quota != '".$m_quota."' AND m.m_usertype IS NULL";
} else 
{
	$q = "SELECT m_no, m_id, m_quota FROM " . $TB['MEMBER'] . " WHERE d_no = '" . $d_no . "' AND m_quota != '".$m_quota."' AND m_usertype IS NULL";
}	// if()
$mbr = db_get_rows($q);
$mbr_cnt = sizeof($mbr);
if ($mbr_cnt < 1)
{
	die("도메인내에 메일용량을 변경할 사용자가 없습니다.\n");
}	// if()


if ($is_test)
{
	echo "[TEST]총 ".number_format($mbr_cnt)."명의  메일용량 변경을 시작합니다.(메일용량을 변경할 회원만 가져옴)\n";
} else 
{
	echo "총 ".number_format($mbr_cnt)."명의  메일용량 변경을 시작합니다.(메일용량을 변경할 회원만 가져옴)\n";
}	// if()



for ($mi=0; $mi<$mbr_cnt; $mi++)
{
	if ($is_test)
	{
		echo "[TEST][".($mi+1)."/".$mbr_cnt."][".$mbr[$mi]['m_id']."] ".($mbr[$mi]['m_quota']/1024)." -> ".($m_quota/1024)." (" . round((getmicrotime() - $_start),4) . "sec)\n";
	} else 
	{
		$sql = "
			UPDATE
				" . $TB['MEMBER'] . "
			SET
				m_quota='" . $m_quota . "'
			WHERE
				m_no='" . $mbr[$mi]['m_no'] . "'
				AND d_no='" . $d_no . "'
			";
		db_query($sql);

		// 웹메일용 처리
		mbr_quota_mod($mbr[$mi]['m_id'], $m_quota);

		echo "[".($mi+1)."/".$mbr_cnt."][".$mbr[$mi]['m_id']."] ".($mbr[$mi]['m_quota']/1024)." -> ".($m_quota/1024)." (" . round((getmicrotime() - $_start),4) . "sec)\n";
	}	// if()

}	// for()

if ($is_test)
{
	echo "[TEST]테스트 모드이므로 실제 변경되지 않았습니다.\n";
} else 
{
	echo "메일용량 변경이 완료되었습니다.\n";
}	// if()


#require_once('include/global_end.php');
?>