Запись [f:_dev/util/import.php] < dev.sky.1.001

Версия 1.000

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
<?php defined('START') and AUTH_OK or die;
 
if (START == 'ajax'):
 
$pack_id $cnt $all $ins 0;
$name $log $values $ret '';
 
function error($err) {
    global $pack_id;
    if ($pack_id 1) {
        sql("delete from _dev_codebase where package_id=$pack_id");
        sql("delete from _dev_packages where id=$pack_id");
    }
    echo_json("-$err"true);
}
 
if ('ini' == PAGE) {
    $dsp = (int)sql("+select max(id)-50000 from _dev_codebase");
    if ($PVAL) {
        $ext = new External($dsp);
        $pack_id $ext->import_pack($PVAL$cnt0, @$p_id);
        if (!is_int($pack_id)) echo_json("-$pack_id"true);
    }
    $list implode(' 'array_map(create_function('$v''return basename($v);'), glob('_dev/temp/*.dev')));
    set(['pack_id' => $pack_id'dat' => $PVAL'i=ins' => 0'upd' => $p_upd'cnt' => $cnt'devs' => $list'dsp' => $dsp]);
    $log or $log 'Import started.';
} else {
    eval(get());
    $all count($list str2ary($devs));
    $rule $pack_id && $ins $cnt;
    if (($rule || !$pack_id) && $i $all) {
        $name "_dev/temp/$list[$i]";
        if ($txt = @file_get_contents($name)) {
            $ext = new External($dsp);
            if (is_string($id $ext->import_rec($txt$pack_id$pack_id $dat $upd))) error("Error in `$name`: $id");
            elseif ($id 0set('ins', ++$ins);
        } else error("Cannot read file `$name`");
        set('i', ++$i);
        $log or $log pad00($i) . ". file: `$name`... " . ($log $log $ret);
    } elseif ($rule) {
        error("Finished. Error in Package `$dat`. Must have $cnt records, actually: $ins");
    } else {
        $log $pack_id
            "+Import of Package `$dat` finished OK, inserted $ins Records."
            "+Import of *.dev files finished OK, inserted/updated=$ins/" . ($i $ins) . " Records.";
    }
}
 
echo_json($log);
 
else: # HTML PAGE
 
 
$pacs array_map(create_function('$v''return basename($v);'), array_merge(glob('_dev/temp/_*.pack'), glob('_dev/temp/_*.sky')));
$devs count(glob('_dev/temp/*.dev'));
 
?><form id="f1">
Package-files (_*.pack, _*.sky) in `temp` dir:
<?if($pacs):?><select name="pack"><?=option(0$pacs)?></select> <span class="green">&nbsp;<?=count($pacs)?> pcs&nbsp;</span>
<?else:?><span class="red">&nbsp;none&nbsp;</span><?endif?>
<br><br>
*.dev files in `temp` dir:
<?if($devs):?><span class="green">&nbsp;<?=$devs?> pcs&nbsp;</span><?else:?><span class="red">&nbsp;none&nbsp;</span><?endif?>
<?if(!$pacs&&!$devs):?>
<br><br>
<span class="red">&nbsp;no data for Import&nbsp;</span>
<script type="text/javascript">mtop('Note: You should place files for Import to `_dev/temp` dir!')</script>
<?else:?>
<br><br>
<label><input type="radio" name="sel" id="s0" checked /> Import selected package</label><?=pad()?>
<label><input type="radio" name="sel" id="s1" /> Import all *.dev files to existing packages</label>
<br><br>
<fieldset style="border:1px solid silver; width:50%"><legend>Risk level</legend>
    <label><input type="radio" name="risk" value="0" id="r0" checked /> insert records only</label><br>
    <label><input type="radio" name="risk" value="1" id="r1" disabled /> allow insert and update</label>
</fieldset>
<br><br><input type="button" value="Import - F9" onclick="key_F9()" />
<script type="text/javascript">var devs = <?=$devs?>, pacs = <?=count($pacs)?>;
if (!pacs) $('s0').disabled = true, $('s1').checked = true;
if (devs) {
    if (pacs) $('s0', function() {
        $('r1').disabled = true, $('r0').checked = true;
    }); else $('r1').disabled = false;
    $('s1', function() {
        $('r1').disabled = false;
    });
} else $('s1').disabled = true;
mtop(
    '<?=pad()?><u>Note:</u><br><b>Import Package</b> - new `package_name.version` must be unique for existing packages. Can not update ' +
    'records when import package. Packages in <a href="?help=draft">non moderated user\'s area</a> insert records to `float` IDs.' +
    '<br><b>Import all *.dev files</b> - package will reseted if Imported Codebase record refer to non-existant package.<br>'
);
function key_F9() {
    var v = $('s1').checked ? 0 : f1.pack.options[f1.pack.options.selectedIndex].innerHTML;
    cycle('&ini=' + e$(v) + '&upd=' + f1.risk.value, 'Import');
}
</script>
<?endif?></form>
<pre id="log"></pre>
 
<?php
 
endif;