Запись [f:_dev/util/move.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
<?php defined('START') and AUTH_OK or die;
 
$name 'Moving records';
 
if (START == 'ajax'):
 
if ($ajax) {
    list($min$max$to) = explode('_'$ajax);
    $dsp $to $min;
    $xd $max $dsp;
    $nd $min $dsp;
    $rule $nd $max || $xd $min "id>=$nd && id<=$xd: ($nd $min "id<$min && id>=$nd"id>$max && id<=$xd");
    $error sql("+select count(1) from _dev_codebase where $rule");
    $log $error '-Cannot move. Wrong rule. Stopped.' "$name started.";
    set(['min' => (int)$min'max' => (int)$max'dsp' => $dsp'start=cnt' => 0'parents' => '']);
} else {
    eval(get());
    $rule "id>=$min and id<=$max order by id" . ($dsp '' ' desc');
    if (eval(sql("^select * from _dev_codebase where $rule limit $start, 1"))) {
        $ext = new External($dsp$rule "return \$m >= $min && \$m <= $max;");
        $ext->fix_record($r);
        sqlf("update _dev_codebase set %s where id=$r_id", [
            'id' => $r['id'],
            'code' => escape($r['code']),
            'parents' => $r['parents'] ? escape($r['parents']) : 'null',
            'childs' => $r['childs'] ? escape($r['childs']) : 'null',
        ]);
        $log pad00(++$cnt) . ". ID=$r_id $r_name moved to ID=$r[id]";
        if ($r['id'] >= $min && $r['id'] <= $maxset('start'$start);
        $parents str2ary($parents);
        foreach (array_unique(str2ary(trim($r_parents','), ',')) as $m) if (!eval($rule) && !in_array($m$parents)) {
            $parents[] = $m;
            if ($r sql("-select code, name, childs from _dev_codebase where id=$m")) {
                $ary Record::ary($r);
                sqlf("update _dev_codebase set %s where id=$m", [
                    'code' => escape($ext->fix_code($ary)), # 2do: review cbr2ary
                    'childs' => escape($ext->fix_family($r[2])),
                ]);
            }
        }
        set(['cnt' => $cnt'parents' => implode(' '$parents)]);
    } else $log "+$name finished.";
}
 
echo_json($log);
 
 
 
else: # HTML PAGE
 
$TOP "<b>Move Codebase Records</b>";
 
?><form id="f1">
Select records: ID >= <input name="idsn" size="3" />
<?=pad()?>ID <= <input name="idsx" size="3" /><br><br>
Move to start ID == <input name="idst" size="3" /><br><br>
<input type="button" value="Move - F9" onclick="key_F9()" />
</form>
<pre id="log"></pre>
 
<script type="text/javascript">
var f1 = $('f1');
mtop('<b>Note:</b> This Utility for root profile only!');
function key_F9() {
    var m, dsp, v = f1.idsn.value + '_' + f1.idsx.value + '_' + f1.idst.value, name = '<?=$name?>';
    if (m = v.match(/^(\d+)_(\d+)_(\d+)$/)) {
        m[1] = parseInt(m[1]), m[2] = parseInt(m[2]), m[3] = parseInt(m[3]);
        dsp = m[3] - m[1];
        dsp = !dsp || m[1] > m[2] || m[1] <= 50000 && m[2] >= 50000 || m[2] + dsp >= 50000;
        if (!dsp) {
            cycle('0&ini=2' + e$(m[1] + '-' + m[2]), name, function(json, err) {
                if (loger(json, err)) cycle(v, '', function(json, err) {
                    loger(json, err, name);
                }); else if (json.end) mtop(name + ' stoped due to errors in record syntax', red);
            }, 'tune');
        } else mtop('Error in values!', red);
    } else mtop('Enter digits to all inputs!', red);
}
</script>
<?php
 
endif;