Me respondo:
Le agregué un elemento al arreglo llamado type que indica si es root(padre) o children(hijo) y modifique la funcion asi:
Código PHP:
Ver originalfunction assignCategory($array, $cat = 0)
{
foreach($array as $key => $subarray)
{
$cat = ($array[$key]['type'] == 'root') ? $array[$key]['parent_id'] : $cat;
$array[$key]['cat'] = $cat;
$array[$key]['children'] = assignCategory($subarray['children'], $cat);
}
return $array;
}
hasta ahora funciona bien, no sé hasta que nivel jerarquico llegaria, pero por el momento funciona como esperaba.
Saludos.