Tworzenie Quizu

Tworzenie quizu

Metoda Add Quizz

Metoda pozwala dodać nowy quiz.

Wywołanie

Metoda przyjmuje parametry metodą POST albo GET.

http://www.quizz.pl/api.php

Parametry:

method=addQuizz - obowiązkowe
securityCode - obowiązkowe - klucz dostępu do API (skontaktuj się z nami)
data - XML z danymi quizu

data to XML z danymi quizu (tytuł, opis, obrazek), pytaniami i odpowiedziami oraz wynikami.

Przykładowa budowa XMLa:

<?xml version="1.0" encoding="utf-8"?>
<quizzes>
  <quizz>
    <title>Tytuł quizu</title>
    <descr>Opis quizu</descr>
    <tags>Tags</tags>
    <image>http://Obrazek</image>
    <private>0</private>
    <save>0</save>
    <results>

      <result>
        <title>Wynik 1</title>
        <descr>Opis 1</descr>
        <image>http://Obrazek</image>
        <id>1</id>
      </result>
      <result>

        <title>Wynik 2</title>
        <descr>Opis 2</descr>
        <image>http://Obrazek2</image>
        <id>2</id>
      </result>
    </results>
    <questions>

      <question>
        <title>Pytanie 1</title>
        <answers>
          <answer>
            <title>Odpowiedz 1 Pytanie 1</title>
            <result_id>1</result_id>
          </answer>

          <answer>
            <title>Odpowiedz 2 Pytanie 1</title>
            <result_id>2</result_id>
          </answer>
        </answers>
      </question>
      <question>
        <title>Pytanie 2</title>

        <answers>
          <answer>
            <title>Odpowiedz 1 Pytanie 2</title>
            <result_id>1</result_id>
          </answer>
          <answer>
            <title>Odpowiedz 2 Pytanie 2</title>

            <result_id>2</result_id>
          </answer>
        </answers>
      </question>
    </questions>
  </quizz>
</quizzes>

Parametr save i private moga przyjmować wartość 0 albo 1.
Parametr save określa czy wyniki quizu mają być zapisywane.
Parametr private określa czy quiz ma charakter prywatny / indywidualny.
Domyślne wartości tych parametrów to 0.

Nowość!
Parametr language określa ID języka quizu. Kody Języków

Przykład wywołania tej metody API za pomocą cURL w PHP, gdzie $xml_string_data zawiera powyższy XML:

    $url = 'http://www.quizz.pl/api.php';
    $fields = array(
                'method' => "addQuizz",
                'data'=> $xml_string_data,
                'securityCode' => "twoj_kod"
            );

    $fields_string = "";
    foreach($fields as $key=>$value) 
    { 
      $fields_string .= $key.'='.$value.'&'; 
    }
    $fields_string = rtrim($fields_string,'&');

    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch,CURLOPT_POST, 1); //count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);
    curl_setopt($ch,CURLOPT_HTTPHEADER,array (
        "Expect: "
    ));

    $result = curl_exec($ch);
    $info = curl_getinfo($ch);

    if ($result === false || $info['http_code'] != 200) {
      $result = "<br>No cURL data returned for $url [". $info['http_code']. "]";
      if (curl_error($ch))
      $result .= "\n". curl_error($ch);
      echo $result;
      }
    else {
        echo "<br>Udane zapytanie";
        echo "<br><br>Wynik:<br><br>";
        echo $result;
    }

Przykład tworzenia XML-a z danymi quizu na podstawie prostych tablic:

  $results = array();
  $results [] = array(
  'title' => 'Wynik 1',
  'descr' => 'Opis 1',
  'image' => 'http://Obrazek',
  'id' => '1'
  );
  $results [] = array(
  'title' => 'Wynik 2',
  'descr' => 'Opis 2',
  'image' => 'http://Obrazek2',
  'id' => '2'
  );

  $answers = array();
  $answers [] = array(
    'title' => 'Odpowiedz 1 Pytanie 1',
    'result_id' => '1'
  );

  $answers [] = array(
    'title' => 'Odpowiedz 2 Pytanie 1',
    'result_id' => '2'
  );

  $questions = array();
  $questions [] = array(
  'title' => 'Pytanie 1',
  'answers' => $answers
  );

  $answers = array();
  $answers [] = array(
    'title' => 'Odpowiedz 1 Pytanie 2',
    'result_id' => '1'
  );

  $answers [] = array(
    'title' => 'Odpowiedz 2 Pytanie 2',
    'result_id' => '2'
  );

  $questions [] = array(
  'title' => 'Pytanie 2',
  'answers' => $answers
  );

  $quizData["title"] = "Tytuł quizu";
  $quizData["descr"] = "Opis quizu";
  $quizData["tags"] = "Tags";
  $quizData["save"] = "0";
  $quizData["private"] = "0";
  $quizData["image"] = "http://Obrazek";

$xml = createQuzzXML($quizData, $questions, $results);

  function createQuzzXML($quizz_data, $questions, $results)
  {  
      $doc = new DOMDocument('1.0', 'utf-8');
      $doc->formatOutput = true;

      $quizzes = $doc->createElement("quizzes");
      $quizz = $doc->createElement("quizz");
      $quizzes->appendChild($quizz);
      $doc->appendChild($quizzes);

      $title = $doc->createElement( "title" );
      $title->appendChild($doc->createTextNode( $quizz_data["title"] ));
      $quizz->appendChild($title);

      $descr = $doc->createElement( "descr" );
      $descr->appendChild($doc->createTextNode( $quizz_data["descr"] ));
      $quizz->appendChild($descr);

      $tags = $doc->createElement( "tags" );
      $tags->appendChild($doc->createTextNode( $quizz_data["tags"] ));
      $quizz->appendChild($tags);

      $image = $doc->createElement( "image" );
      $image->appendChild($doc->createTextNode( $quizz_data["image"] ));
      $quizz->appendChild($image);

      $save = $doc->createElement( "save" );
      $save->appendChild($doc->createTextNode( $quizz_data["save"] ));
      $quizz->appendChild($save);

      $private = $doc->createElement( "private" );
      $private ->appendChild($doc->createTextNode( $quizz_data["private "] ));
      $quizz->appendChild($private );

      $w = $doc->createElement( "results" );
      $quizz->appendChild( $w );

      foreach( $results as $result )
      {
            $b = $doc->createElement( "result" );

                  $title = $doc->createElement( "title" );
                  $title->appendChild($doc->createTextNode( $result['title'] ));
                  $b->appendChild( $title );

                  $descr = $doc->createElement( "descr" );
                  $descr->appendChild($doc->createTextNode( $result['descr'] ));
                  $b->appendChild( $descr );

                  $image = $doc->createElement( "image" );
                  $image->appendChild($doc->createTextNode( $result['image'] ));
                  $b->appendChild( $image );

                  $id = $doc->createElement( "id" );
                  $id->appendChild($doc->createTextNode( $result['id'] ));
                  $b->appendChild( $id );

            $w->appendChild( $b );
      }

      $r = $doc->createElement( "questions" );
      $quizz->appendChild( $r );

      foreach( $questions as $question )
      {
            $b = $doc->createElement( "question" );

            $title = $doc->createElement( "title" );
            $title->appendChild($doc->createTextNode( $question['title'] ));
            $b->appendChild( $title );

            $q = $doc->createElement("answers");                  

            $answers = $question['answers'];

            foreach ( $answers as $answer)
            {
                $qq = $doc->createElement("answer");

                $title = $doc->createElement( "title" );
                $title->appendChild($doc->createTextNode( $answer['title'] ));
                $qq->appendChild( $title );

                $result_id = $doc->createElement( "result_id" );
                $result_id->appendChild($doc->createTextNode( $answer['result_id'] ));
                $qq->appendChild( $result_id );

                $q->appendChild($qq);
            }
            $b->appendChild($q);

            $r->appendChild( $b );
      }

      return $doc->saveXML();
  }

Uwagi do XML-a

Tagi quizu powinny być oddzielone przecinkiem.
Obrazki powinny być pełnym adresem URL do obrazka w sieci.
Każdy wynik musi mieć nadane id (np. 1,2,3…), a każda odpowiedź wskazywać na konkretny wynik. Służy do tego pole result_id.

Wynik

Wynikiem wywołania metody jest ID stworzonego quizu.

Pobieranie listy obrazków do użycia w Quizie

Metoda Get Images

Metoda pozwala pobrać obrazki, które mogą być używane do tworzenia quizu. Jest to niewielki zbiór przykładowych obrazków, które można wykorzystać. Oczywiście do tworzenia quizów można korzystać z dowolnych obrazków o ile ma się prawa do korzystania z nich.

Wywołanie

Metoda nie przyjmuje żadnych parametrów:
http://www.quizz.pl/api.php?method=GetImages

Wynik:

Metoda zwraca URLe obrazków oddzielne średnikiem

Przykład wyniku:

http://img401.imageshack.us/img401/63/normalsaintpatricksdays.png;http://img50.imageshack.us/img50/7105/beztytuuwdg.png;http://img213.imageshack.us/img213/6035/emoboys.jpg;http://img200.imageshack.us/img200/9329/luzikczowieku.jpg;http://img368.imageshack.us/img368/6514/beztytuum.jpg;http://img508.imageshack.us/i/mileycyrusstyl.jpg;http://img362.imageshack.us/i/pirateband.jpg;http://img103.imageshack.us/img103/2025/autek.jpg;http://img368.imageshack.us/img368/7548/26666687.gif;http://img128.imageshack.us/i/28444634.jpg;http://img180.imageshack.us/img180/103/psychoy.jpg
O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License