|
@@ -8,14 +8,14 @@ class Update extends Page
|
|
|
{
|
|
|
parent::__construct('update', $load, $id);
|
|
|
}
|
|
|
- public function get()
|
|
|
+ public function get($value = array(), &$option = array())
|
|
|
{
|
|
|
$func = $this->checkFunc();
|
|
|
$remote = $show = array();
|
|
|
- $data['update'] = $data['field'] = array();
|
|
|
+ $data['update'] = $data['field'] = $data['option'] = array();
|
|
|
$this->setting('field', $data['update'], true, 'text');
|
|
|
foreach ($data['update'] as $k => $v) {
|
|
|
- if ($v['type'] == 'tree') {
|
|
|
+ if ($v['type'] == 'tree' || $v['type'] == 'upload') {
|
|
|
$v['value'] = array();
|
|
|
}
|
|
|
if (isset($v['remote'])) {
|
|
@@ -26,6 +26,10 @@ class Update extends Page
|
|
|
$show[$v['key']] = array($k, $v['show']);
|
|
|
}
|
|
|
$data['field'][$v['key']] = $v['value'];
|
|
|
+ if (isset($v['option'])) {
|
|
|
+ $data['option'][$v['key']] = $v['option'];
|
|
|
+ unset($data['update'][$k]['option']);
|
|
|
+ }
|
|
|
}
|
|
|
$this->column($data);
|
|
|
$data['info_id'] = false;
|
|
@@ -47,27 +51,12 @@ class Update extends Page
|
|
|
}
|
|
|
}
|
|
|
if ($this->info) {
|
|
|
- $data['info'] = $this->info;
|
|
|
- foreach ($data['info'] as $k => $v) {
|
|
|
- if (isset($data['field'][$k])) {
|
|
|
- if (is_array($data['field'][$k])) {
|
|
|
- $v = explode(',', $v);
|
|
|
- }
|
|
|
- if (isset($this->config['field'][$k]) && isset($this->config['field'][$k]['value'])) {
|
|
|
- $v = $this->config['field'][$k]['value'];
|
|
|
- }
|
|
|
- $data['field'][$k] = $v;
|
|
|
- if (isset($remote[$k])) {
|
|
|
- $data['update'][$remote[$k][0]]['remote'] = Dever::url($remote[$k][1]);
|
|
|
- $result = Dever::call($remote[$k][1], $v, 'api');
|
|
|
- if ($result) {
|
|
|
- $this->setUpdate($data['update'], $result);
|
|
|
- }
|
|
|
- }
|
|
|
- if (isset($show[$k])) {
|
|
|
- $data['update'][$show[$k][0]]['show'] = $this->getShow($show[$k][1], $data['info']);
|
|
|
- }
|
|
|
- }
|
|
|
+ $info = $this->info;
|
|
|
+ $this->setInfo($info, $data, $remote, $show);
|
|
|
+ } elseif ($value) {
|
|
|
+ foreach ($value as $k => $v) {
|
|
|
+ $this->setInfo($v, $data, $remote, $show);
|
|
|
+ $option[$k] = $data['option'];
|
|
|
}
|
|
|
} else {
|
|
|
if ($remote) {
|
|
@@ -81,6 +70,7 @@ class Update extends Page
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
$data['desc'] = $this->config['desc'] ?? '';
|
|
|
$data['drag'] = $this->config['drag'] ?? false;
|
|
|
$this->layout($data);
|
|
@@ -92,10 +82,44 @@ class Update extends Page
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
- private function setUpdate(&$update, $result)
|
|
|
+ private function setInfo($info, &$data, $remote, $show)
|
|
|
+ {
|
|
|
+ foreach ($info as $k => $v) {
|
|
|
+ if (isset($data['field'][$k])) {
|
|
|
+ if (is_array($data['field'][$k])) {
|
|
|
+ if ($v) {
|
|
|
+ $v = explode(',', $v);
|
|
|
+ } else {
|
|
|
+ $v = array();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isset($this->config['field'][$k]) && isset($this->config['field'][$k]['update'])) {
|
|
|
+ $v = $this->config['field'][$k]['update'];
|
|
|
+ }
|
|
|
+ $data['field'][$k] = $v;
|
|
|
+ if (isset($remote[$k])) {
|
|
|
+ $data['update'][$remote[$k][0]]['remote'] = Dever::url($remote[$k][1]);
|
|
|
+ $result = Dever::call($remote[$k][1], array($v), 'api');
|
|
|
+ if ($result) {
|
|
|
+ $this->setUpdate($data['update'], $data['option'], $result);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (isset($show[$k])) {
|
|
|
+ $data['update'][$show[$k][0]]['show'] = $this->getShow($show[$k][1], $info);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private function setUpdate(&$update, &$option, $result)
|
|
|
{
|
|
|
foreach ($update as $k => $v) {
|
|
|
if (isset($result[$v['key']])) {
|
|
|
+ if (isset($result[$v['key']]['option'])) {
|
|
|
+ $option[$v['key']] = $result[$v['key']]['option'];
|
|
|
+ unset($result[$v['key']]['option']);
|
|
|
+ }
|
|
|
$update[$k] = array_merge($update[$k], $result[$v['key']]);
|
|
|
}
|
|
|
}
|
|
@@ -110,8 +134,22 @@ class Update extends Page
|
|
|
if ($v1['key'] == $k) {
|
|
|
$show = true;
|
|
|
foreach ($v as $k2 => $v2) {
|
|
|
- if ($data['field'][$k2] != $v2) {
|
|
|
- $show = false;
|
|
|
+ if (is_array($v2)) {
|
|
|
+ $temp = false;
|
|
|
+ foreach ($v2 as $k3 => $v3) {
|
|
|
+ if (is_array($data['field'][$k2]) && in_array($v3, $data['field'][$k2])) {
|
|
|
+ $temp = true;
|
|
|
+ } elseif ($data['field'][$k2] == $v3) {
|
|
|
+ $temp = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $show = $temp;
|
|
|
+ } else {
|
|
|
+ if (is_array($data['field'][$k2]) && !in_array($v2, $data['field'][$k2])) {
|
|
|
+ $show = false;
|
|
|
+ } elseif ($data['field'][$k2] != $v2) {
|
|
|
+ $show = false;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
$data['update'][$k1]['show'] = $show;
|
|
@@ -253,11 +291,11 @@ class Update extends Page
|
|
|
if (isset($value[0])) {
|
|
|
$value = ltrim(implode(',', $value), ',');
|
|
|
} else {
|
|
|
- $value = Dever::json_ecode($value);
|
|
|
+ $value = Dever::json_encode($value);
|
|
|
}
|
|
|
}
|
|
|
if ($value && isset($this->config['field'][$key]) && $handle = Dever::isset($this->config['field'][$key], 'handle')) {
|
|
|
- $value = Dever::call($handle, $value);
|
|
|
+ $value = Dever::call($handle, array($value));
|
|
|
if (is_array($value) && isset($value[$key])) {
|
|
|
foreach ($value as $k => $v) {
|
|
|
$data[$k] = $v;
|
|
@@ -304,7 +342,7 @@ class Update extends Page
|
|
|
{
|
|
|
if (isset($this->config['start']) && $this->config['start']) {
|
|
|
$data['id'] = $id;
|
|
|
- $data = Dever::call($this->config['start'], $data);
|
|
|
+ $data = Dever::call($this->config['start'], array($data));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -312,7 +350,7 @@ class Update extends Page
|
|
|
{
|
|
|
if (isset($this->config['end']) && $this->config['end']) {
|
|
|
$data['id'] = $id;
|
|
|
- Dever::call($this->config['end'], $data);
|
|
|
+ Dever::call($this->config['end'], array($data));
|
|
|
}
|
|
|
}
|
|
|
|