come ti diceva filippo, devi abilitare la visualizzazione degli errori! E se pensi di averlo fatto, ricontrolla e assicurati che sia abilitato tramite, ad esempio, un phpinfo()

La riga
$current_cat = $cpanel->options[$target_option];

non potrà mai funzionare perchè $cpanel non esiste nello scope della funzione (scope => ambito) ed è questo l'errore a cui si riferiva filippo (il notice dico)

se richiami catlist passando 2 parametri, e non uno, e nel primo/secondo che passi gli passi l'instanza di control panel risolvi il problema

ergo, se quando richiami catlist con option7 fai

catlist($this, 'option7');

e poi la funziona la trasformi in

function catlist($cpanel, $target_option) {

a parte altri eventuali errori dovrebbe funzionare

in ogni caso è, secondo me, sbagliato mettere la funzione cosi all'esterno, sarebbe meglio portarla all'interno della classe

PS: mi sa di wordpress