| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- class TreeSortChildren {
- public static function sortPrio($id, $tblName, $parentdFldName, $sortDir) {
- if ($id < 0 || empty($tblName) || empty($parentdFldName) || empty($sortDir)) {
- return;
- }
- $db = DB::getDB();
- $sql = "select w.`ID`
- , w.`SORT_PRIO`
- from `{$tblName}` as w0
- left join `{$tblName}` as w on(w.`{$parentdFldName}`=w0.`{$parentdFldName}`)
- where w0.`ID`='{$id}'
- and w0.`A_STATUS` not in('DELETED')
- and w.`A_STATUS` not in('DELETED')
- order by w.`SORT_PRIO` asc, w.`ID` asc
- ";
- $res = $db->query($sql);
- $wsk = array();
- $wskOrder = array();
- $sort_prio = 0;
- while ($r = $db->fetch($res)) {
- $wsk[$r->ID] = $sort_prio;//$r->SORT_PRIO;
- $wskOrder[$sort_prio] = $r->ID;
- $sort_prio += 1;
- }
- if (empty($wsk)) return;
- //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">wsk ';print_r($wsk);echo'</pre>';
- //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">wsk_order ';print_r($wskOrder);echo'</pre>';
- $wsk_new = array();
- if ($sortDir == 'up') {// wskaznik $wsk_id 'w gore' (zmniejsz sort_prio)
- $old_wsk_id = $wsk[$id];
- if ($old_wsk_id == 0) return;
- //echo'zamien "'.$id.'" na "'.$wskOrder[$wsk[$id] - 1 ].'"';
- $tmp = $wskOrder[$wsk[$id]];
- $wskOrder[$wsk[$id]] = $wskOrder[$wsk[$id] - 1];
- $wskOrder[$wsk[$id] - 1] = $tmp;
- } else if ($sortDir == 'upup') {// wskaznik $wsk_id 'w gore' (zmniejsz sort_prio)
- $old_wsk_id = $wsk[$id];
- if ($old_wsk_id == 0) return;
- $tmp = $wskOrder[$wsk[$id]];
- $tmp1 = $wskOrder[$wsk[$id] - 1];
- $tmp2 = $wskOrder[$wsk[$id] - 2];
- $tmp3 = $wskOrder[$wsk[$id] - 3];
- $tmp4 = $wskOrder[$wsk[$id] - 4];
- $tmp5 = $wskOrder[$wsk[$id] - 5];
- $tmp6 = $wskOrder[$wsk[$id] - 6];
- $wskOrder[$wsk[$id]] = $tmp1;
- $wskOrder[$wsk[$id] - 1] = $tmp2;
- $wskOrder[$wsk[$id] - 2] = $tmp3;
- $wskOrder[$wsk[$id] - 3] = $tmp4;
- $wskOrder[$wsk[$id] - 4] = $tmp5;
- $wskOrder[$wsk[$id] - 5] = $tmp6;
- $wskOrder[$wsk[$id] - 6] = $tmp;
- } else if ($sortDir == 'downdown') {// wskaznik $wsk_id 'w gore' (zmniejsz sort_prio)
- $old_wsk_id = $wsk[$id];
- if ($old_wsk_id == 0) return;
- $tmp = $wskOrder[$wsk[$id]];
- $tmp1 = $wskOrder[$wsk[$id] + 1];
- $tmp2 = $wskOrder[$wsk[$id] + 2];
- $tmp3 = $wskOrder[$wsk[$id] + 3];
- $tmp4 = $wskOrder[$wsk[$id] + 4];
- $tmp5 = $wskOrder[$wsk[$id] + 5];
- $tmp6 = $wskOrder[$wsk[$id] + 6];
- $wskOrder[$wsk[$id]] = $tmp1;
- $wskOrder[$wsk[$id] + 1] = $tmp2;
- $wskOrder[$wsk[$id] + 2] = $tmp3;
- $wskOrder[$wsk[$id] + 3] = $tmp4;
- $wskOrder[$wsk[$id] + 4] = $tmp5;
- $wskOrder[$wsk[$id] + 5] = $tmp6;
- $wskOrder[$wsk[$id] + 6] = $tmp;
- } else {// wskaznik $wsk_id 'w dol' (zwieksz sort_prio)
- $old_wsk_id = $wsk[$id];
- if ($old_wsk_id + 1 == count($wsk)) return;
- //echo'zamien "'.$id.'" na "'.$wskOrder[$wsk[$id] + 1 ].'"';
- $tmp = $wskOrder[$wsk[$id]];
- $wskOrder[$wsk[$id]] = $wskOrder[$wsk[$id] + 1];
- $wskOrder[$wsk[$id] + 1] = $tmp;
- }
- //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">2 wsk ';print_r($wsk);echo'</pre>';
- //echo'<pre style="max-height:200px;overflow:auto;border:1px solid red;">2 wsk_order ';print_r($wskOrder);echo'</pre>';
- if (empty($wskOrder)) return;
- foreach ($wskOrder as $k_osrt_prio => $v_wsk_id) {
- $sql = "update `{$tblName}`
- set `SORT_PRIO`='{$k_osrt_prio}'
- where `ID`='{$v_wsk_id}'
- ";
- $db->query($sql);
- }
- }
- }
|