Ребят, в общем есть функция, которая написана при помощи говнокода.
Она выполняет следующую задачу:
Определяет реферера. То есть если у человека уже есть три(или другое число) реферала, то он пробегается по этим трем рефералам, и выбирает того, у кого меньше трех рефералов, если таких нет - спускается ниже.
Этот код работает исправно, но написан он слишком коряво. То есть если что-то нужно изменить, или добавить, то лопатить дай боже.
Вот я хочу исправить это. Но что-то застопорился с рекурсией. Как правильно тут сделать, чтобы можно было уровень добавить при помощи увелечения аргумента. В две функции, или она сама себя тут будет вызывать?
P.S. Я не за готовым решением пришел(я знаю что за ним дорога на фриланс), а за наводкой. Какой участок кода внести в отдельную функцию(если она здесь необходима). И как вообще правильнее и универсальнее это сделать. А то я немного закипел.
function overflow($parent_cook) {
global $CONNECT;
$parent_link = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `id` = $parent_cook"));
$data_parent = mysqli_fetch_assoc(mysqli_query($CONNECT, "SELECT * FROM `users_data` WHERE `id_user` = $parent_cook"));
if ( $data_parent['overflow'] > 0 ) {
////// Если переливы включены, то выполняется определение реферала и сортировка.
$referal_num = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$parent_link[id]'"));
if ( $referal_num >= $data_parent['width'] ) {
// echo "Выполняется условие перелива<br>";
// echo "Чекаем первую линию<br>";
$curator = mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$parent_link[id]'");
////////////////////////////////////
///--- Чекаем первую линию
////////////////////////////////////
while ( $change_curator = mysqli_fetch_assoc($curator) ) {
//// Показываем кураторов первого уровня
$referal_num = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator[id]'"));
// echo "<b>".$change_curator['login']." - 1 уровень ".$referal_num."</b><br>";
if ( $referal_num >= $data_parent['width'] ) {
// echo "Двигаем дальше...<br>";
} else {
// echo "Нашли куратора...<br>";
return $change_curator['id'];
}
}
////////////////////////////////////
///--- Чекаем вторую линию
////////////////////////////////////
// echo "Чекаем вторую линию<br>";
$curator = mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$parent_link[id]'");
while ( $change_curator = mysqli_fetch_assoc($curator) ) {
//// Показываем кураторов первого уровня
$referal_num = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator[id]'"));
// echo "<b>".$change_curator['login']." - 1 уровень ".$referal_num."</b><br>";
$curator_1 = mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator[id]'");
while ( $change_curator_1 = mysqli_fetch_assoc($curator_1) ) {
$referal_num_1 = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator_1[id]'"));
// echo "<b>--".$change_curator_1['login']." - 2 уровень ".$referal_num_1."</b><br>";
if ( $referal_num_1 >= $data_parent['width'] ) {
// echo "Двигаем дальше...<br>";
} else {
// echo "Нашли куратора...<br>";
return $change_curator_1['id'];
}
}
}
////////////////////////////////////
///--- Чекаем третью линию
////////////////////////////////////
// echo "Чекаем третью линию<br>";
$curator = mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$parent_link[id]'");
while ( $change_curator = mysqli_fetch_assoc($curator) ) {
//// Показываем кураторов первого уровня
$referal_num = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator[id]'"));
// echo "<b>".$change_curator['login']." - 1 уровень ".$referal_num."</b><br>";
$curator_1 = mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator[id]'");
while ( $change_curator_1 = mysqli_fetch_assoc($curator_1) ) {
$referal_num_1 = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator_1[id]'"));
// echo "<b>--".$change_curator_1['login']." - 2 уровень ".$referal_num_1."</b><br>";
$curator_2 = mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator_1[id]'");
while ( $change_curator_2 = mysqli_fetch_assoc($curator_2) ) {
$referal_num_2 = mysqli_num_rows(mysqli_query($CONNECT, "SELECT * FROM `users` WHERE `parent` = '$change_curator_2[id]'"));
// echo "<b>----".$change_curator_2['login']." - 3 уровень ".$referal_num_2."</b><br>";
if ( $referal_num_2 >= $data_parent['width'] ) {
// echo "Двигаем дальше...<br>";
} else {
// echo "Нашли куратора...<br>";
return $change_curator_2['id'];
}
}
}
}
} else {
return $parent_cook;
}
} else {
return $parent_cook;
}
}