<?php
Wind::import('ADMIN:library.AdminBaseController');

/**
 * Enter description here .
 * ..
 * 
 * @author Zerol Lin <zerol.lin@me.com>
 * @copyright 2003-2103 phpwind.com
 * @license http://www.phpwind.com
 * @version $Id$
 */
class AdminlogController extends AdminBaseController {

	public function run() {
		$keyword = $this->getInput('keyword');
		$page = (int) $this->getInput('page');
		
		/* @var $menuService AdminMenuService */
		$menuService = Wekit::load('ADMIN:service.srv.AdminMenuService');
		$authStruts = $menuService->getMenuAuthStruts();
		$menus = $menuService->getMenuTable();
		
		/* @var $logService AdminLogService */
		$logService = Wekit::load('ADMIN:service.srv.AdminLogService');
		$logs = $logService->readLog();
		
		$count = $logs[0];
		$perpage = 10;
		$page < 1 && $page = 1;
		if ($count % $perpage == 0)
			$numofpage = floor($count / $perpage);
		else
			$numofpage = floor($count / $perpage) + 1;
		if ($page > $numofpage) $page = $numofpage;
		$pagemin = min(($page - 1) * $perpage, $count);
		$pagemax = min($pagemin + $perpage - 1, $count);
		
		$num = 0;
		for ($i = $logs[0]; $i > 0; $i--) {
			if (empty($keyword) || false !== strpos($logs[$i], $keyword)) {
				if ($num >= $pagemin && $num <= $pagemax) {
					$detail = explode("|", $logs[$i]);
					if (false !== strpos($detail[2], '/')) {
						list($m, $c, $a) = explode('/', $detail[2]);
						$authKeys = array();
						if (isset($authStruts[$m][$c][$a])) $authKeys += $authStruts[$m][$c][$a];
						if (isset($authStruts[$m][$c]['_all'])) $authKeys += $authStruts[$m][$c]['_all'];
						!empty($authKeys) && $detail[2] = $menus[$authKeys[0]]['name'];
					}
					$result[] = $detail;
				}
				$num++;
			}
		}
		
		$this->setOutput($this->isFounder($this->loginUser->username), 'isFound');
		$this->setOutput($keyword, 'keyword');
		$this->setOutput($result, 'logs');
		$this->setOutput(array('keyword' => $keyword), 'searchData');
		$this->setOutput($page, 'page');
		$this->setOutput($num, 'count');
		$this->setOutput($perpage, 'perpage');
		
		$this->setTemplate('manage_admin');
	}

	public function clearAction() {
		if (!$this->isFounder($this->loginUser->username)) $this->showError('fail');
		
		/* @var $logService AdminLogService */
		$logService = Wekit::load('ADMIN:service.srv.AdminLogService');
		$logService->clear();
		$this->showMessage('success');
	}
}