<?php

/*
*	Copyright VeryIDE,2007-2010
*	http://www.veryide.com/
*
*	$Id: veryide_files.php,v2 19:47 2008-2-21 Leilei $
*/

require("../../include/header.php");

html_start("模块管理 - VeryIDE");
?>

<!--body start-->
	<?php
   
	require(VI_ROOT."/function/sql.php");

	//loader
	loader_setting("naver.module"); 
    
	//mysql open
	reader_mysql();
	
	$action = GetQuery("action");
	$module = GetQuery("module");
	
	if($action){
	
		switch($action){
			
			//安装模块
			case "install":
		
				//检查权限
				$func = "sys-module-add";
				checker_func($func);
				
				//当前模块目录
				$base = VI_ROOT.$Project["module"].$module;
			
				//脚本文件
				$exec = $base.'/install.sql';
			
				//锁文件
				$lock = $base.'/install.lock';
				
				if( file_exists($lock) ){
					
					echo '<div id="state" class="failure">抱歉！当前模块已安装</div>';
					
				}elseif( !file_exists($exec) ){
					
					echo '<div id="state" class="failure">抱歉！未找到安装脚本</div>';
					
				}else{
				
					$sql = file_get_contents($exec);
				
					$array = runquery($mysql , $sql);
					
					if(!$array[0]){
					
						//写入锁
						create_file( $lock ,date("Y-m-d H:i:s"));
						
						echo '<div id="state">恭喜！成功安装模块</div>';
						
						//删除卸载锁
						@unlink( $base.'/uninstall.lock' );
						
						//启用本模块
						cache_module($module,true);						
					
						//写入日志
						event_insert($mysql,$func,time(),time(),"安装模块成功：".$module);
						
					}else{
						
						echo '<div id="state" class="failure">抱歉！安装更新失败。以下是本错误信息详细报告：</div>';
						
						trigger_error(str_replace('class="error"','class="text-no"',preg_replace('/<h4>(.*?)<\/h4>/','',$array[1])), E_USER_ERROR);
					}
					
				}
				
			break;
			
			//卸载模块
			case "uninstall":
		
				//检查权限
				$func = "sys-module-del";
				checker_func($func);
				
				//当前模块目录
				$base = VI_ROOT.$Project["module"].$module;
			
				//脚本文件
				$exec = $base.'/uninstall.sql';
			
				//锁文件
				$lock = $base.'/uninstall.lock';
				
				if( file_exists($lock) ){
					
					echo '<div id="state" class="failure">抱歉！当前模块已卸载</div>';
					
				}elseif( !file_exists($exec) ){
					
					echo '<div id="state" class="failure">抱歉！未找到卸载脚本</div>';
					
				}else{
				
					$sql = file_get_contents($exec);
				
					$array = runquery($mysql , $sql);
					
					if(!$array[0]){
					
						//写入锁
						create_file( $lock ,date("Y-m-d H:i:s"));
						
						echo '<div id="state">恭喜！成功卸载模块</div>';
						
						//删除安装锁
						@unlink( $base.'/install.lock' );
						
						//禁用本模块
						cache_module($module,false);
					
						//写入日志
						event_insert($mysql,$func,time(),time(),"卸载模块成功：".$module);
						
					}else{
						
						echo '<div id="state" class="failure">抱歉！卸载模块失败。以下是本错误信息详细报告：</div>';
						
						trigger_error(str_replace('class="error"','class="text-no"',preg_replace('/<h4>(.*?)<\/h4>/','',$array[1])), E_USER_ERROR);
					}
					
				}
				
			break;			
			
			//禁用模块
			case "disabled":
		
				//检查权限
				$func = "sys-module-dis";
				checker_func($func);
				
				cache_module($module,false);
					
				//写入日志
				event_insert($mysql,$func,time(),time(),"禁用模块成功：".$module);						
				
			break;
			
			//启用模块
			case "enabled":
		
				//检查权限
				$func = "sys-module-ena";
				checker_func($func);
				
				cache_module($module,true);
					
				//写入日志
				event_insert($mysql,$func,time(),time(),"启用模块成功：".$module);						
				
			break;
			
			//搜索模块
			case "search":
				cache_module();
			break;
			
		}
	
		//mysql close
		reader_mysql(true);
			
		require(VI_ROOT."cache/system/files.module.php");
		
		if( $action != "install" && $action != "uninstall" ){
		
			echo '<div id="state">正在使用模块管理工具，您刚才的操作可能影响到菜单显示：<input name="submit" onclick=\'parent.location.reload(true)\' type="button" class="submit" value="显示新菜单" /></div>';
		
		}
		
	}else{
	
		//echo '<div id="state" class="failure">添加新模块但未显示，请使用模块搜索工具：<input name="submit" onclick=\'location.href="?action=search"\' type="button" class="submit" value="搜索新模块" /></div>';

	}
	

    ?>


    <table width="100%" border="0" cellpadding="1" cellspacing="1" class="table">
      <tr class="title">
        <td></td>
        <td>AppID</td>
        <td>模块名称</td>
        <td>模块版本</td>
        <td>模块作者</td>
        <td>最后更新时间</td>
        <td>模块状态</td>					
        <td>模块配置</td>
        <td width="80" align="center">安装/卸载</td>
        <td width="80" align="center">启用/禁用</td>
      </tr>
    <?php
    
    //模块菜单
    //$i=1;
    foreach($VICACHE["sys.module"] as $appid=>$val){
    
        //$file = $Project["module"]."/".$val["config"];
        //$exis = file_exists($file);
		
		//当前模块目录
		$base = VI_ROOT.$Project["module"].$appid;
        
        if( file_exists( $base.'/icon.png' ) ){
			$icon = '<img src="'.VI_BASE.$Project["module"].$appid.'/icon.png" width="16" />';
        }else{
			$icon = '';
        }
        
		//开始
        echo ("<tr class='".( $module == $appid ? "band" : "line" )."'>");
		
		//基本信息
        echo ('<td width="30">'.$icon.'</td>');
        echo ('<td>'.$appid.($val["dateline"] && time()-$val["dateline"]<3600?loader_image("new.gif"):'').'</td>');
        echo ('<td class="text-key">'.$val["name"].'</td>');
		
		//作者信息
		if( $val["config"] ){
			
			loader_module($appid,"config");
			
			echo ('<td class="text-yes">'.$Modules[$appid]["version"].'</td>');
			echo ('<td><a href="'.$Modules[$appid]["support"].'" name="appid-'.$val["appid"].'" target="_blank">'.$Modules[$appid]["author"].'</a></td>');
		}else{
			echo ('<td></td>');
			echo ('<td></td>');
		}
        
		//最后修改时间
		echo ("<td>".date("Y-m-d H:i:s",filemtime($base))."</td>");
        
		if ($val["config"]) {
        	echo ("<td><span class='text-".($val["status"]?'yes':'no')."'>已".$Project["status"][$val["status"]]."</span></td>");
		}else{
            echo ("<td><em>未知</em></td>");
		}
        
		//配置
        if( file_exists($base.'/setting.php') && file_exists($base.'/setting.xml') ) {
            echo ('<td class="text-yes"><a href="'.VI_BASE.'/module/system/serve.control.php?appid='.$appid.'" onclick="parent.Mo.Dialog(\'dialog\',\'模块配置 - '.$val["name"].'\' ,\'<iframe src=\'+this.href+\' frameborder=0></iframe>\' ,\'800\',\'60%\',{ \'remove\' : true, \'draged\' : true, \'create\' : true }); return false;">更改配置</a></td>');
        }else{
            echo ("<td></td>");
        }
        
		//安装、卸载
		echo '<td align="center">';		
        if( file_exists($base.'/install.sql') && !file_exists($base.'/install.lock') ){
			echo '
			<input name="" value="安装" type="submit" class="button" onclick="location.href=\'?action=install&module='.$val["appid"].'\';" />
			';
        }elseif( file_exists($base.'/uninstall.sql') && !file_exists($base.'/uninstall.lock') ){
			echo '
			<input name="" value="卸载" type="button" class="cancel" onclick="if(confirm(\'确定要卸载此模块吗？\n\n同时删除相关数据库\')){location.href=\'?action=uninstall&module='.$val["appid"].'\';}" />
			';
        }else{
			echo '';	
		}
		
		echo '</td>';
        
		//启用、禁用
        echo '<td align="center">';
        
        if( $val["config"] ){
        
            if($val["status"]){
                echo '
                <input name="" value="禁用" type="button" class="cancel" onclick="location.href=\'?action=disabled&module='.$val["appid"].'#appid-'.$val["appid"].'\';" />
                ';
            }else{
                echo '
                <input name="" value="启用" type="submit" class="button" onclick="location.href=\'?action=enabled&module='.$val["appid"].'#appid-'.$val["appid"].'\';" />
                ';
            }
        
        }
        
        echo ("</td>");
		
		//结束
        echo ("</tr>");
        
        //$i++;
    }

    ?>
	</table>
	
	<div id="saving">
    	<span class="action">
        	<input name="submit" onclick='location.href="?action=search"' type="button" class="button" value="搜索模块" />
        </span>
		共安装模块 <?php echo count($VICACHE["sys.module"]);?> 个
	</div>

<!--body end-->

<?php html_close();?>