public static function getAvailableSitesForUser(CNabuCustomer $nb_customer, $nb_user)
    {
        if ($nb_customer->isFetched() &&
            is_numeric($nb_user_id = nb_getMixedValue($nb_user, NABU_USER_FIELD_ID))
        ) {
            if (!($nb_user = $nb_customer->getUser($nb_user_id))) {
                throw new ENabuSecurityException(ENabuSecurityException::ERROR_USER_NOT_ALLOWED);
            }
            $retval = CNabuSite::buildObjectListFromSQL(
                'nb_site_id',
                'SELECT s.*, su.nb_user_id
                   FROM nb_site s
                   LEFT OUTER JOIN nb_site_user su
                     ON s.nb_site_id=su.nb_site_id
                    AND su.nb_user_id=%user_id$d
                  WHERE s.nb_customer_id=%cust_id$d
                 HAVING su.nb_user_id IS NULL',
                array(
                    'cust_id' => $nb_customer->getId(),
                    'user_id' => $nb_user->getId()
                ),
                $nb_customer
            );
        } else {
            $retval = new CNabuSiteList($nb_customer);
        }

        return $retval;
    }