Skip to content

Commit

Permalink
feat(answer): copmatibility with API
Browse files Browse the repository at this point in the history
Signed-off-by: Thierry Bugier <tbugier@teclib.com>
btry committed Dec 1, 2021

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 893efda commit f4dd4a3
Showing 19 changed files with 126 additions and 1 deletion.
13 changes: 13 additions & 0 deletions inc/answer.class.php
Original file line number Diff line number Diff line change
@@ -65,4 +65,17 @@ public static function canView() {
public static function getTypeName($nb = 0) {
return _n('Answer', 'Answers', $nb, 'formcreator');
}

public function post_getFromDB() {
if (!isAPI()) {
return;
}

/** @var PluginFormcreatorQuestion $question */
$question = PluginFormcreatorQuestion::getById($this->fields[PluginFormcreatorQuestion::getForeignKeyField()]);
$field = $question->getSubField();
$field->deserializeValue($this->fields['answer']);

$this->fields['answer'] = $field->getValueForApi();
}
}
23 changes: 22 additions & 1 deletion inc/field/actorfield.class.php
Original file line number Diff line number Diff line change
@@ -209,7 +209,9 @@ public function getValueForTargetText($domain, $richText): ?string {
$value[] = $item;
} else {
$user = new User();
$user->getFromDB($item);
if (!$user->getFromDB($item)) {
continue;
}
$value[] = $user->getFriendlyName();
}
}
@@ -419,4 +421,23 @@ public function isVisibleField(): bool {
public function isEditableField(): bool {
return true;
}

public function getValueForApi() {
$value = [];
if (is_array($this->value)) {
foreach ($this->value as $item) {
if (filter_var($item, FILTER_VALIDATE_EMAIL) !== false) {
$value[] = $item;
} else {
$user = new User();
if (!$user->getFromDB($item)) {
continue;
}
$value[] = [User::class, $item];
}
}
}

return $value;
}
}
17 changes: 17 additions & 0 deletions inc/field/checkboxesfield.class.php
Original file line number Diff line number Diff line change
@@ -412,4 +412,21 @@ public function getTranslatableStrings(array $options = []) : array {
}
return $strings;
}

public function getValueForApi() {
$value = [];
$values = $this->getAvailableValues();

if ($values === null || $this->value === null || count($this->value) === 0) {
return '';
}

foreach ($this->value as $input) {
if (in_array($input, $values)) {
$value[] = $input;
}
}

return $value;
}
}
4 changes: 4 additions & 0 deletions inc/field/datefield.class.php
Original file line number Diff line number Diff line change
@@ -232,4 +232,8 @@ public function isVisibleField(): bool {
public function isEditableField(): bool {
return true;
}

public function getValueForApi() {
return $this->value;
}
}
4 changes: 4 additions & 0 deletions inc/field/datetimefield.class.php
Original file line number Diff line number Diff line change
@@ -233,4 +233,8 @@ public function isVisibleField(): bool {
public function isEditableField(): bool {
return true;
}

public function getValueForApi() {
return $this->value;
}
}
4 changes: 4 additions & 0 deletions inc/field/descriptionfield.class.php
Original file line number Diff line number Diff line change
@@ -162,4 +162,8 @@ public function isVisibleField(): bool {
public function isEditableField(): bool {
return false;
}

public function getValueForApi() {
return $this->question->fields['description'];
}
}
7 changes: 7 additions & 0 deletions inc/field/dropdownfield.class.php
Original file line number Diff line number Diff line change
@@ -967,4 +967,11 @@ protected function getEntityRestriction() {

return $_SESSION['glpiactiveentities'];
}

public function getValueForApi() {
return [
$this->getSubItemtype(),
$this->value,
];
}
}
4 changes: 4 additions & 0 deletions inc/field/emailfield.class.php
Original file line number Diff line number Diff line change
@@ -193,4 +193,8 @@ public function isEditableField(): bool {
public function getTranslatableStrings(array $options = []) : array {
return PluginFormcreatorAbstractField::getTranslatableStrings($options);
}

public function getValueForApi() {
return $this->value;
}
}
8 changes: 8 additions & 0 deletions inc/field/filefield.class.php
Original file line number Diff line number Diff line change
@@ -306,4 +306,12 @@ public function isVisibleField(): bool {
public function isEditableField(): bool {
return true;
}

public function getValueForApi() {
$output = [];
foreach ($this->uploadData as $documentId) {
$output[] = [Document::class, $documentId];
}
return $output;
}
}
4 changes: 4 additions & 0 deletions inc/field/floatfield.class.php
Original file line number Diff line number Diff line change
@@ -308,4 +308,8 @@ public function isVisibleField(): bool {
public function isEditableField(): bool {
return true;
}

public function getValueForApi() {
return $this->value;
}
}
4 changes: 4 additions & 0 deletions inc/field/hiddenfield.class.php
Original file line number Diff line number Diff line change
@@ -208,4 +208,8 @@ public function getTranslatableStrings(array $options = []) : array {
}
return $strings;
}

public function getValueForApi() {
return $this->value;
}
}
4 changes: 4 additions & 0 deletions inc/field/hostnamefield.class.php
Original file line number Diff line number Diff line change
@@ -163,4 +163,8 @@ public function isVisibleField(): bool {
public function isEditableField(): bool {
return false;
}

public function getValueForApi() {
return $this->value;
}
}
4 changes: 4 additions & 0 deletions inc/field/ipfield.class.php
Original file line number Diff line number Diff line change
@@ -175,4 +175,8 @@ public function isVisibleField(): bool {
public function isEditableField(): bool {
return false;
}

public function getValueForApi() {
return $this->value;
}
}
4 changes: 4 additions & 0 deletions inc/field/radiosfield.class.php
Original file line number Diff line number Diff line change
@@ -318,4 +318,8 @@ public function getTranslatableStrings(array $options = []) : array {

return $strings;
}

public function getValueForApi() {
return $this->value;
}
}
4 changes: 4 additions & 0 deletions inc/field/textfield.class.php
Original file line number Diff line number Diff line change
@@ -318,4 +318,8 @@ public function getTranslatableStrings(array $options = []) : array {

return $strings;
}

public function getValueForApi() {
return $this->value;
}
}
4 changes: 4 additions & 0 deletions inc/field/timefield.class.php
Original file line number Diff line number Diff line change
@@ -225,4 +225,8 @@ public function isVisibleField(): bool {
public function isEditableField(): bool {
return true;
}

public function getValueForApi() {
return $this->value;
}
}
4 changes: 4 additions & 0 deletions inc/field/urgencyfield.class.php
Original file line number Diff line number Diff line change
@@ -242,4 +242,8 @@ public function isVisibleField(): bool {
public function isEditableField(): bool {
return true;
}

public function getValueForApi() {
return $this->value;
}
}
7 changes: 7 additions & 0 deletions inc/fieldinterface.class.php
Original file line number Diff line number Diff line change
@@ -119,6 +119,13 @@ public function getValueForDesign() : string;
*/
public function getValueForTargetText($domain, $richText): ?string;

/**
* Get the valoe of the field for output via the API
*
* @return string|array
*/
public function getValueForApi();

/**
* Move uploaded files and make Document items
*/
4 changes: 4 additions & 0 deletions tests/fixture/PluginFormcreatorDependentField.php
Original file line number Diff line number Diff line change
@@ -268,4 +268,8 @@ public function isEditableField(): bool {
public function isVisibleField(): bool {
return true;
}

public function getValueForApi() {
return $this->value;
}
}

0 comments on commit f4dd4a3

Please sign in to comment.