Tworzenie quizu
Metoda Add Quizz
Metoda pozwala dodać nowy quiz.
Wywołanie
Metoda przyjmuje parametry metodą POST albo GET.
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