示例#1
0
function getDistinctGroups($db, $params, $groupBy, $interval = 0)
{
    $where = "";
    $reverse = @$params["reverse"];
    splitFilters($params, $imageFilters, $demoFilters);
    if (hasDemographicFilters($params)) {
        $params = $imageFilters;
        $where = userFilterCondition($demoFilters);
    }
    $questionId = getQuestionId($groupBy);
    $qtype = getQuestionType($questionId);
    // group by image filter: meal='Lunch'
    if ($questionId === "") {
        $params["table"] = "user_upload";
        $params["columns"] = $groupBy;
    } else {
        $params = array();
        $params["table"] = "user_profile_answer";
        $params["columns"] = getAnswerColumn($qtype, $interval);
        $params["question_id"] = $questionId;
        $params["reverse"] = $reverse;
        $params["where"] = $where;
    }
    debug("getDistinctGroups", $params);
    $result = $db->distinct($params);
    if ($qtype == "number" && $interval > 1) {
        foreach ($result as $key => $row) {
            $result[$key] = $row["min"] . ":" . $row["max"];
        }
    }
    return $result;
}
示例#2
0
if (!$groupBy) {
    $results = demographicPortrait($db, $params, $portraitType);
    //$users = arrayDistinct($results, "username");
    $users = filterUsers($db, $params);
    arrayDistinct($results, "username");
    setExists($results);
    $results = array("all" => $results);
} else {
    //if groupBy is a profile question, translate group=gender => group=Q_0
    $questionsByField = arrayIndexBy($questions, "field_name");
    if (array_key_exists($groupBy, $questionsByField)) {
        $qid = $questionsByField[$groupBy]["id"];
        $groupBy = "Q_{$qid}";
    }
    $groups = getDistinctGroups($db, $params, $groupBy, $interval);
    $questionId = getQuestionId($groupBy);
    $form_answers = null;
    if ($questionId !== "") {
        $qtype = getQuestionType($questionId);
        if (isset($questions[$questionId]["form_answers"])) {
            $form_answers = arrayIndexBy($questions[$questionId]["form_answers"], "id");
        }
    }
    debugVar("groups");
    $results = array();
    foreach ($groups as $groupValue) {
        if ($groupValue === "NULL") {
            continue;
        }
        $params[$groupBy] = $groupValue;
        $data = demographicPortrait($db, $params, $portraitType);