Skip to content
Snippets Groups Projects
Commit d71182f6 authored by Jared Hancock's avatar Jared Hancock
Browse files

draft: Support arbitrary depth of draft field

parent f55bd41f
No related branches found
No related tags found
No related merge requests found
...@@ -7,17 +7,7 @@ require_once(INCLUDE_DIR.'class.draft.php'); ...@@ -7,17 +7,7 @@ require_once(INCLUDE_DIR.'class.draft.php');
class DraftAjaxAPI extends AjaxController { class DraftAjaxAPI extends AjaxController {
function _createDraft($vars) { function _createDraft($vars) {
if (!isset($vars['body'])) { if (!($vars['body'] = self::_findDraftBody($_POST)))
$field_list = array('response', 'note', 'answer', 'body',
'message', 'issue');
foreach ($field_list as $field) {
if (isset($_POST[$field])) {
$vars['body'] = $_POST[$field];
break;
}
}
}
if (!isset($vars['body']))
return JsonDataEncoder::encode(array( return JsonDataEncoder::encode(array(
'error' => __("Draft body not found in request"), 'error' => __("Draft body not found in request"),
'code' => 422, 'code' => 422,
...@@ -44,26 +34,7 @@ class DraftAjaxAPI extends AjaxController { ...@@ -44,26 +34,7 @@ class DraftAjaxAPI extends AjaxController {
} }
function _updateDraft($draft) { function _updateDraft($draft) {
if (isset($_POST['name'])) { if (!($body = self::_findDraftBody($_POST)))
$parts = array();
if (preg_match('`(\w+)\[(\w+)\]`', $_POST['name'], $parts)) {
$body = urldecode($_POST[$parts[1]][$parts[2]]);
}
else {
$body = urldecode($_POST[$_POST['name']]);
}
}
else {
$field_list = array('response', 'note', 'answer', 'body',
'message', 'issue');
foreach ($field_list as $field) {
if (isset($_POST[$field])) {
$body = urldecode($_POST[$field]);
break;
}
}
}
if (!isset($body))
return JsonDataEncoder::encode(array( return JsonDataEncoder::encode(array(
'error' => array( 'error' => array(
'message' => "Draft body not found in request", 'message' => "Draft body not found in request",
...@@ -243,16 +214,6 @@ class DraftAjaxAPI extends AjaxController { ...@@ -243,16 +214,6 @@ class DraftAjaxAPI extends AjaxController {
'namespace' => $namespace, 'namespace' => $namespace,
); );
if (isset($_POST['name'])) {
$parts = array();
if (preg_match('`(\w+)\[(\w+)\]`', $_POST['name'], $parts)) {
$vars['body'] = urldecode($_POST[$parts[1]][$parts[2]]);
}
else {
$vars['body'] = urldecode($_POST[$_POST['name']]);
}
}
return self::_createDraft($vars); return self::_createDraft($vars);
} }
...@@ -341,5 +302,25 @@ class DraftAjaxAPI extends AjaxController { ...@@ -341,5 +302,25 @@ class DraftAjaxAPI extends AjaxController {
echo JsonDataEncoder::encode($files); echo JsonDataEncoder::encode($files);
} }
function _findDraftBody($vars) {
if (isset($vars['name'])) {
$parts = array();
if (preg_match('`(\w+)(?:\[(\w+)\])?(?:\[(\w+)\])?`', $_POST['name'], $parts)) {
array_shift($parts);
$focus = $vars;
foreach ($parts as $p)
$focus = $focus[$p];
return urldecode($focus);
}
}
$field_list = array('response', 'note', 'answer', 'body',
'message', 'issue');
foreach ($field_list as $field) {
if (isset($vars[$field])) {
return urldecode($vars[$field]);
}
}
}
} }
?> ?>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment