<?php

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

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

html_start("更新管理 - VeryIDE");
?>

<!--body start-->
	<?php
    
    //loader
    loader_setting("naver.system");
	
	//备份基准目录
    $base = realpath("../../data/update/")."/";

$action = GetQuery("action");
    $update = GetQuery("update");
    
    if($action){
    
        switch($action){
            
            case "update":
    
                //检查权限
                $func = "sys-update-add";
                checker_func($func);
            
                $sqlfile = $base.$update;
                
                //锁文件
                $lock = str_replace(".sql",".lock",$sqlfile);
                
                if(file_exists($lock)){
                    
                    echo '<div id="state" class="failure">抱歉！安装已经存在。更新于早前已经安装，并在使用中：<span class="text-key">'.$update.'</span></div>';
                    
                }else{
                    
                    if(file_exists($sqlfile)){
                        
                        //日志开始时间
                        $time = time();
                
                        //mysql open
                        reader_mysql();
                    
                        $sql = file_get_contents($sqlfile);
                    
                        $array = runquery($mysql , $sql);
                        
                        if(!$array[0]){
                        
                            //写入锁
                            create_file( $lock ,date("Y-m-d H:i:s"));
                            
                            echo '<div id="state">恭喜！成功安装更新：'.$update.'，您刚才的操作可能全影响到系统菜单的显示，请刷新查看最新菜单：<input name="submit" onclick=\'parent.location.reload(true)\' type="button" class="submit" value="显示新菜单" /></div>';								
                
                            //写入日志
                            event_insert($mysql,$func,$time,time(),"安装更新：".$update);
                            
                            //搜索模块
                            cache_module();								
                            
                            //缓存系统菜单
                            cache_table('system',$mysql,VI_DBMANPRE."menu",'<option value=\'{table:id}\'>{table:name}</option>'," sort asc ");	
                            
                        }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);
                        }
                        
                        //mysql close
                        reader_mysql(true);
                        
                    }
                    
                }
                
                //echo $update;
            break;
            
            case "execute":
    
                //检查权限
                $func = "sys-update-sql";
                checker_func($func);
                        
                //日志开始时间
                $time = time();
            
                //mysql open
                reader_mysql();
            
                $sql = $_POST["sql"];
                if(!$sql) break;
            
                $array = runquery($mysql , stripslashes($sql));
                
                if(!$array[0]){
                    
                    echo '<div id="state">恭喜！成功执行自定义 SQL 语句，您刚才的操作可能全影响到系统菜单的显示，请刷新查看最新菜单：<input name="submit" onclick=\'parent.location.reload(true)\' type="button" class="submit" value="显示新菜单" /></div>';
                
                    //写入日志
                    event_insert($mysql,$func,$time,time(),"执行查询：".$sql);
                    
                    //更新模块
                    cache_module();
                            
                    //缓存系统菜单
                    cache_table('system',$mysql,VI_DBMANPRE."menu",'<option value=\'{table:id}\'>{table:name}</option>'," sort asc ");	
                            
                }else{
                    
                    echo '<div id="state" class="failure">抱歉！执行SQL语句失败。以下是本错误信息详细报告：</div>';
                    
                    trigger_error(str_replace('class="error"','class="text-no"',preg_replace('/<h4>(.*?)<\/h4>/','',$array[1])), E_USER_ERROR);
                }
                
                //mysql close
                reader_mysql(true);
            
            break;
        }
        
    }
    
    ?>


    <table width="100%" border="0" cellpadding="1" cellspacing="1" class="table">
      <tr class="title">
        <td>ID</td>
        <td>更新名称</td>
        <td>适用版本</td>
        <td>更新状态</td>
        <td>发布时间</td>
        <td width="70">执行操作</td>
      </tr>
    <?php
	
    //模块更新
    $item = "";
    
    if ($handle = opendir($base)) {
        
        $i=1;
        while (false !== ($file = readdir($handle))) {
            //SQL文件
            if(stripos($file,".sql")){
            
                //锁文件
                $lock = str_replace(".sql",".lock",$file);
                $val = file_exists($base.$lock);
                
                
                //版本号
                $php = sreadfile($base.$file);
                
                //echo $php;
                
                preg_match("/Version: ([\d\.].*)/i", $php, $mathes);
                
                if(!empty($mathes[1])){
                    $ver = '<span class="text-yes">'.$mathes[1].'</span>';					
                }else{
                    $ver = '<em>未知</em>';	
                }
            
                echo ("<tr class='line'>");
                echo ('<td>'.$i.'</td>');
                echo ('<td class="text-yes">'.$file.'</td>');
                echo ('<td>'.$ver.'</td>');
                
                if ($val) {
                    echo ("<td>于 <span class='text-key'>".date("Y-m-d H:i:s",filemtime($base.$lock))."</span> 安装此更新</td>");
                    echo ("<td>".date("Y-m-d H:i:s",filemtime($base.$file))."</td>");
                }else{
                    echo ("<td><em>未安装此更新</em></td>");
                    echo ("<td>".date("Y-m-d H:i:s",filemtime($base.$file))."</td>");
                }
                
                if(!$val){

                    echo '
                    <td width="70"><input name="" value="安装" type="button" class="button" onclick="location.href=\'?action=update&update='.$file.'\';" /></td>';
                
                }else{
                    echo '<td>无</td>';
                }
                
                echo ("</tr>");
                
                $i++;
            }
        }

        closedir($handle);
    }
    
    ?>
	</table>
    
	<?php
    if( $Group["sys-update-sql"]=="Y" ){
    ?>
    
    <div id="box">
	    <form action="" method="post" name="from1" mode="edit" verify="true">
        
        <table cellpadding="0" cellspacing="0" class="form">
        
            <tr><td colspan="2" class="section"><strong>自定义 SQL 查询</strong></td></tr>
            
        	<tr>
            	<td width="60"><strong>升级语句：</strong></td>
                <td>
					<textarea name="sql" style="width:80%;" rows="6" id="sql"></textarea>
                </td>
            </tr>
            <tr class="nobr">
                <td><strong></strong></td>
                <td>
                    <input name="action" type="hidden" id="action" value="execute" />
                    <input type="submit" name="Submit" value="执行此语句" class="submit" />
                </td>
            </tr>
        
        </table>
        
        <div id="saving">
       		注意: 为确保升级成功，请不要修改官方发布的 SQL 语句任何部分。
        </div>
        
        </form>
	</div>
    
	<?php
    }
    ?>
	
</div>

<!--body end-->

<?php html_close();?>