1. Go to this page and download the library: Download mchev/laravel-odk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mchev / laravel-odk example snippets
return [
/*
|--------------------------------------------------------------------------
| ODK Central API url
|--------------------------------------------------------------------------
|
| Here you may specify the default url for the API calls.
| Example : https://private-anon-cecdde38ec-odkcentral.apiary-mock.com/v1
|
*/
'api_url' => env('ODK_API_URL'),
/*
|--------------------------------------------------------------------------
| ODK Central Authentification
|--------------------------------------------------------------------------
|
| An administrator user of your ODK Central app.
|
*/
'user_email' => env('ODK_USER_EMAIL'),
'user_password' => env('ODK_USER_PASSWORD'),
];
artisan config:clear
artisan cache:clear
namespace App\Http\Controllers;
use Mchev\LaravelOdk\OdkCentral;
class SomeController
{
public function testOdk()
{
$odk = new OdkCentral;
$project = $odk->projects(1)->get();
dd($project);
}
}
namespace App\Http\Controllers;
use Mchev\LaravelOdk\Facades\OdkCentral;
class SomeController
{
public function returnFormFields($projectId, $xmlFormId)
{
$fields = OdkCentral::projects($projectId)->forms($xmlFormId)->fields()->get();
dd($fields);
}
}
// Get all users.
$users = $odk->users()->get();
// Searching users
$users = $odk->users('Jane')->get();
// You can also use eloquent 💥
$users = $odk->users()->get()->sortBy('displayName');
// Creating a new user.
$user = $odk->users()->create([
'email' => '[email protected]',
'password' => 'password' // Optional (That email address will receive a message instructing the new user on how to claim their new account and set a password.)
]);
// Getting User details
$user = $odk->users($userId)->get();
// Getting authenticated User details
$user = $odk->users()->current();
// Modifying a User
$user = $odk->users($userId)->update([
'displayName' => 'New name', // string
'email' => '[email protected]' // string
]);
// Directly updating a user password
$user = $odk->users($userId)->updatePassword([
'old' => 'old.password', // string
'new' => 'new.password' // string
]);
// Initiating a password reset
$user = $odk->users()->passwordReset($userEmail);
// Deleting a User
$user = $odk->users($userId)->delete();
// Listing all App Users.
$appUsers = $odk->projects($projectId)->appUsers()->get();
// Creating a new App User.
$appUser = $odk->projects($projectId)->appUsers()->create([
'displayName' => 'Jane Doe'
]);
// Deleting a App User
$appUser = $odk->projects($projectId)->appUsers($appUserId)->delete();
// List all forms of a project.
$forms = $odk->projects($projectId)->forms()->get();
// Creating new form (sending XForms XML or XLSForm file)
// If the second parameter is set to false, the form will be stored as draft.
$form = $odk->projects($projectId)->forms()->create($request->file('your_input_file'), true);
// Getting form details
$form = $odk->projects($projectId)->forms($xmlFormId)->get();
// Getting form schema fields
$form = $odk->projects($projectId)->forms($xmlFormId)->fields()->get();
// You may optionally add the 'true' parameter to the fields() method to sanitize the field names and paths to match the way they will be outputted for OData
// Listing form attachments
$form = $odk->projects($projectId)->forms($xmlFormId)->attachments()->get();
// Downloading a form attachment
return $odk->projects($projectId)->forms($xmlFormId)->downloadAttachment($filename);
// Modifying a form
$form = $odk->projects($projectId)->forms($xmlFormId)->update([
'state' => 'open'
]);
// Deleting a form
$form = $odk->projects($projectId)->forms($xmlFormId)->delete();
// Download form file (xml, xls, xlsx)
return $odk->projects($projectId)->forms($xmlFormId)->xlsx()->download(); // xml(), xls(), xlsx()
// Let's say we already have our form
$form = $odk->projects($projectId)->forms($xmlFormId);
// Create a new draft
$form->draft()->create($request->file('your_input_file'));
// Getting Draft Form Details
$form->draft()->get();
// Getting Draft Form Fields
$form->draft()->fields();
// Publish the draft
$form->draft()->publish('v1.2.0'); // string | optional
// Deleting the draft
$form->draft()->delete();
// Listing all submissions on a form
$submissions = $odk->projects($projectId)->forms($xmlFormId)->submissions()->get();
// Getting Submission metadata
$submissions = $odk->projects($projectId)->forms($xmlFormId)->submissions($instanceId)->get();
// Updating Submission metadata
$submissions = $odk->projects($projectId)->forms($xmlFormId)->submissions($instanceId)->update([
'reviewState' => 'approved' // null, edited, hasIssues, rejected, approved | enum
]);
// Retrieving Submission XML
$submissions = $odk->projects($projectId)->forms($xmlFormId)->submissions($instanceId)->xml();
// Geting Submission comments
$submissions = $odk->projects($projectId)->forms($xmlFormId)->submissions($instanceId)->comments()->get();
// Posting Submission comments
$submission = $odk->projects($projectId)->forms($xmlFormId)->submissions($instanceId)->comments()->create([
'body' => 'this is the text of my comment',
]);
// Our form
$form = $odk->projects($projectId)->forms($xmlFormId);
// You can get answers directly :
$answers = $form()->answers();
// OR
$anwserWithRepeats = $form()->answersWithRepeats();
// If you need to get only answers associated to a submission :
$answers = $form()->submissions($submissionId)->answers();
// OR
$anwserWithRepeats = $form()->submissions($submissionId)->answersWithRepeats();
// answersWithRepeats() method accept a boolean parameter to only get the questions and responses (no meta, ids, etc)
$onlyAnswers = $form()->submissions($submissionId)->answersWithRepeats(true);