Esempio n. 1
0
function process_dir($dir, $recursive = FALSE)
{
    if (is_dir($dir)) {
        for ($list = array(), $handle = opendir($dir); FALSE !== ($file = readdir($handle));) {
            if ($file != '.' && $file != '..' && $file != 'level.dat.json' && $file != 'level.dat.json.gz' && file_exists($path = $dir . '/' . $file)) {
                if (is_dir($path) && $recursive) {
                    $list = array_merge($list, process_dir($path, TRUE));
                } else {
                    $entry = array('filename' => $file);
                    //---------------------------------------------------------//
                    //                     - SECTION 1 -                       //
                    //          Actions to be performed on ALL ITEMS           //
                    //-----------------    Begin Editable    ------------------//
                    //$entry['modtime'] = filemtime($path);
                    //-----------------     End Editable     ------------------//
                    do {
                        if (!is_dir($path)) {
                            //---------------------------------------------------------//
                            //                     - SECTION 2 -                       //
                            //         Actions to be performed on FILES ONLY           //
                            //-----------------    Begin Editable    ------------------//
                            //$entry['size'] = filesize($path);
                            $pos = strpos($path, '.b6z');
                            $pos2 = strpos($path, '.gz');
                            if ($pos > 0 | $pos2 > 0) {
                                unlink($path);
                                continue;
                            }
                            $pos3 = strpos($file, 'evel.dat');
                            if ($pos3 > 0) {
                                continue;
                            }
                            $entry['dat'] = readchunk($path);
                            $entry['filename'] = trimpath($path);
                            //-----------------     End Editable     ------------------//
                            break;
                        } else {
                            //---------------------------------------------------------//
                            //                     - SECTION 3 -                       //
                            //       Actions to be performed on DIRECTORIES ONLY       //
                            //-----------------    Begin Editable    ------------------//
                            //-----------------     End Editable     ------------------//
                            break;
                        }
                    } while (FALSE);
                    //if ($entry['dat'] & $entry['dat']['xpos'] )
                    $list[] = $entry;
                }
            }
        }
        closedir($handle);
        return $list;
    } else {
        return FALSE;
    }
}
Esempio n. 2
0
/**
 * rewrite visual studio script
 * @param string $modelname
 * @param bool|number $revert
 * @param bool $randsuffix
 * @return bool
 */
function rewrite_vcscript($modelname = NULL, $revert = false, $randsuffix = false)
{
    $result = true;
    if (empty($modelname)) {
        return false;
    }
    $model_scriptpath = get_scriptdir($modelname);
    $needrevert = file_exists($model_scriptpath . 'vcscript_revert');
    if (-1 == $revert && $needrevert) {
        $revert = true;
    }
    if (true === $revert) {
        echo '[' . $modelname . '] will revret to standard.', "\n";
    } else {
        echo '[' . $modelname . '] will rename the all scripts', "\n";
    }
    if (false == $revert && $needrevert) {
        echo 'warning: [' . $modelname . '] need revert, your choice not revert.';
    }
    $scriptfiles = get_scriptfile($model_scriptpath);
    if (0 == count($scriptfiles)) {
        return false;
    }
    foreach ($scriptfiles as $scriptfile) {
        $scriptfile_info = file_get_contents($scriptfile);
        $sourcefiles = array();
        $matchcorcc_files = array();
        $matchcpp_files = array();
        preg_match_all('/".*\\.cc?"/', $scriptfile_info, $matchcorcc_files);
        preg_match_all('/".*\\.cpp"/', $scriptfile_info, $matchcpp_files);
        $sourcefiles = array_merge($matchcorcc_files[0], $matchcpp_files[0]);
        foreach ($sourcefiles as $sourcefile) {
            $scriptfile_old = $sourcefile;
            $sourcefile = substr($sourcefile, 1, strlen($sourcefile) - 2);
            //del '"'
            $sourcefile = trimpath($sourcefile);
            $sourcefile_path = $model_scriptpath . $sourcefile;
            $sourcefile_path = format_systempath($sourcefile_path);
            $sourcefile_name = basename($sourcefile_path);
            $sourcefile_dir = dirname($sourcefile_path);
            $temp = str_replace(format_systempath(PROJECTPATH), '', $sourcefile_dir);
            $temp = str_nreplace('src\\', '', $temp, 1);
            $new_sourcefile_name = str_replace('\\', '_', $temp);
            if (true === $revert) {
                $new_sourcefile_name = str_replace($new_sourcefile_name . '_', '', $sourcefile_name);
                $randsuffix_match = array();
                preg_match('/_\\d{11,13}\\./', $sourcefile_name, $randsuffix_match);
                if (count($randsuffix_match) > 0) {
                    $randsuffix_str = substr($randsuffix_match[0], 0, strlen($randsuffix_match[0]) - 1);
                    $new_sourcefile_name = str_replace($randsuffix_str, '', $new_sourcefile_name);
                }
            } else {
                $new_sourcefile_name .= true === $randsuffix ? '_' . time() . rand(1, 1000) : '';
                $new_sourcefile_name .= '_' . $sourcefile_name;
            }
            $new_sourcefile = str_replace($sourcefile_name, $new_sourcefile_name, $sourcefile);
            sys_rename($sourcefile_dir, $sourcefile_name, $new_sourcefile_name);
            $scriptfile_info = str_replace($scriptfile_old, '"' . $new_sourcefile . '"', $scriptfile_info);
        }
        $result = file_put_contents($scriptfile, $scriptfile_info);
        if (!$result) {
            echo 'rewrite ' . $scriptfile . ' failed!', "\n";
        } else {
            echo 'rewrite ' . $scriptfile . ' success.', "\n";
        }
    }
    $revert_fileinfo = <<<EOF
1
en:
  This is a flag file of visual studio script if need revert.
  If you don't understand this, can't delete it.
cn:
    这个文件用来作为是否需要还原vcscript的标记。
    如果你不清楚该文件的用途,则不要删除它。
EOF;
    if (true === $revert) {
        @unlink($model_scriptpath . 'vcscript_revert');
    } else {
        file_put_contents($model_scriptpath . 'vcscript_revert', $revert_fileinfo);
    }
}