Documentation

Embed

Programmatic Filtering-PHP Code Example

Full code example for programmatic filtering using PHP


<?php
    $request = $_SERVER['REQUEST_URI'];
    if ($request == "/card") {
        $secret='ENTER_SECRET';
        $clientid='ENTER_CLIENT_ID';
        $embedId = 'ENTER_EMBED_ID';

        $curl = curl_init();

        curl_setopt_array($curl, array(
        CURLOPT_URL => "https://api.domo.com/oauth/token?grant_type=client_credentials&scope=data%20user%20dashboard",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_ENCODING => "",
        CURLOPT_MAXREDIRS => 10,
        CURLOPT_TIMEOUT => 30,
        CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_POSTFIELDS => "",
        CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
        CURLOPT_USERPWD => "$clientid:$secret"
        ));
        $response = curl_exec($curl);
        $err = curl_error($curl);
        curl_close($curl);
        if ($err) {
            echo "<br>cURL Error #: $err";
        }
        else {
            $responsearray = json_decode($response, true);
            $curl2 = curl_init();
            curl_setopt_array($curl2, array(
            CURLOPT_URL => "https://api.domo.com/v1/cards/embed/auth",
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => "",
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 30,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => "POST",
            CURLOPT_POSTFIELDS => '{
            "sessionLength": 1440,
            "authorizations" :[
                {
                "token" : "'.$embedId.'",
                "permissions" : ["READ", "FILTER", "EXPORT"],
                "filters" : [
                    {
                        "column": "advertiserid",
                        "operator": "IN",
                        "values": ["3"]
                    }
                ]
                }
            ]
            }',
            CURLOPT_HTTPHEADER => array(
                "Authorization: Bearer ".$responsearray['access_token'],
                "Content-Type: application/json; chartset=utf-8",
                "Accept: */*"
            ),
            ));
            $response2 = curl_exec($curl2);
            $err2 = curl_error($curl2);
            curl_close($curl2);
            $responsearray = json_decode($response2, true);
            $embedToken = $responsearray['authentication'];

            http_response_code(200);
            echo <<<EOT
                <form id="form" action="https://public.domo.com/cards/$embedId" method="post">
                    <input type="hidden" name="embedToken" value="$embedToken">
                </form>
                <script>
                    document.getElementById("form").submit();
                </script>
            EOT;
        }
    }
    else {
        echo <<<EOT
        <html>
          <head>
            <title>Domo Programmatic Filtering</title>
          </head>
          <body>
            <hr>
              <div id="iframe-container" style="display: flex; flex-direction: column; align-items: center; justify-content: space-evenly; margin-top: 40px;">
                <h1>Domo Programmatic Filtering</h1>
                <iframe src="/card" width="600" height="600"></iframe>
              </div>      
          </body>
        </html>        
        EOT;
    }
?>