function ct_getCreditTypes()
{
    try {
        $client = new SoapClient(WSDL_QS, array('location' => LOCATION_QS));
        $result = $client->getCreditTypes();
        $credittype = $result->creditType;
        $policy = $result->policy;
        $credittypes = array();
        $policies = array();
        if (is_array($credittype)) {
            $credittypes = array_merge($credittypes, $credittype);
        } else {
            if ($credittype != null) {
                array_push($credittypes, $credittype);
            }
        }
        if (is_array($policy)) {
            $policies = array_merge($policies, $policy);
        } else {
            if ($policy != null) {
                array_push($policies, $policy);
            }
        }
        $formattedCreditTypes = array();
        foreach ($credittypes as $credittype) {
            $course = db_getCourseById($credittype->courseId);
            foreach ($policies as $policy) {
                if ($policy->id == $credittype->policyId) {
                    $policyName = $policy->name . " : " . $policy->policyType;
                    break;
                }
            }
            $c = array($credittype->id, $credittype->name, $credittype->resource, $course->shortname, $policyName, $credittype->active, $credittype->assignable);
            array_push($formattedCreditTypes, $c);
        }
        return $formattedCreditTypes;
    } catch (Exception $e) {
        return array("success" => false, "message" => $e->getMessage());
    } catch (SoapFault $soapfault) {
        return array("success" => false, "message" => $soapfault->getMessage());
    }
}