Die Prüfung auf Refschleifen habe ich hier gepostet
Refschleifen vermeiden

Das Werbereintragen geht einfach über ein Feld in der Kontoübersicht
Code:
if(formularbestaetigt() && $user['werber]==0){
  if(refcheck($uid, $werber, $ebenen)){
    //werber ändern
  }
}
if($user['werber']==0){
//zeige Formular
}

beim Account löschen ist die Downlineerhaltung schlichtweg ein
Code:
db_query('UPDATE vms_werberdaten SET werber =(SELECT werber FROM vms_werberdaten WHERE uid=%1$d) WHERE werber=%1$d', $uid);
Wenn du da dann noch auf Refschleifen testen willst rufst du für jeden Ref in der 1. Ebene die Refcheck Funktion mit dem neuen werber auf.

Code:
foreach($user['refs'] as $ref){
  if(refcheck($ref, $user['werber'], $levels)){
    changeWerber($ref, $werber);
  }
}
mfg
Aradiv