private function stabilizeElementRanks($pn_parent_id, $pa_ranks) { $vo_db = new Db(); $t_element = new ca_metadata_elements(); do { $va_ranks = array_keys($pa_ranks); $vn_rank = $va_ranks[0]; $qr_res = $vo_db->query("\n\t\t\t\tSELECT * FROM\n\t\t\t\t\tca_metadata_elements\n\t\t\t\t\tWHERE\n\t\t\t\t\t\t(parent_id=?)\n\t\t\t\t\t\tAND\n\t\t\t\t\t\t(rank>?)\n\t\t\t\t\tORDER BY\n\t\t\t\t\t\trank\n\t\t\t", $pn_parent_id, $vn_rank); while ($qr_res->nextRow()) { $t_element->load($qr_res->get('element_id')); $t_element->set('rank', intval($t_element->get('rank')) + $pa_ranks[0]); $t_element->setMode(ACCESS_WRITE); $t_element->update(); } $qr_res = $vo_db->query("\n\t\t\t\tSELECT * FROM\n\t\t\t\t\tca_metadata_elements\n\t\t\t\t\tWHERE\n\t\t\t\t\t\t(parent_id=?)\n\t\t\t\t\t\tAND\n\t\t\t\t\t\t(rank=?)\n\t\t\t\t\tORDER BY\n\t\t\t\t\t\trank\n\t\t\t", $pn_parent_id, $vn_rank); $i = 0; while ($qr_res->nextRow()) { $i++; $t_element->load($qr_res->get('element_id')); $t_element->set('rank', intval($t_element->get('rank')) + $i); $t_element->setMode(ACCESS_WRITE); $t_element->update(); } $pa_ranks = $this->elementRankStabilizationNeeded($pn_parent_id); } while (is_array($pa_ranks)); }