|
@@ -1,6 +1,8 @@
|
|
|
<?php namespace Manage\Api\Page;
|
|
|
use Dever;
|
|
|
use Manage\Lib\Page;
|
|
|
+ini_set("memory_limit", -1);
|
|
|
+set_time_limit(0);
|
|
|
# 更新页
|
|
|
class Update extends Page
|
|
|
{
|
|
@@ -66,7 +68,7 @@ class Update extends Page
|
|
|
}
|
|
|
if ($this->info) {
|
|
|
$info = $this->info;
|
|
|
- $this->setInfo($info, $data, $remote, $show, $source, $default);
|
|
|
+ $this->setInfo($info, $data, $remote, $show, $source, $default, 1, $this->config['field']);
|
|
|
if ($spec) {
|
|
|
foreach ($spec as $k => $v) {
|
|
|
$data['update'][$spec[$k][0]]['remote'] = Dever::url($spec[$k][1]);
|
|
@@ -77,8 +79,21 @@ class Update extends Page
|
|
|
}
|
|
|
}
|
|
|
} elseif ($value) {
|
|
|
+ $field = array();
|
|
|
+ if (isset($this->config['field']) && $this->config['field']) {
|
|
|
+ foreach ($this->config['field'] as $k => $v) {
|
|
|
+ if (isset($v['field'])) {
|
|
|
+ $field[$v['field']] = $v;
|
|
|
+ if (!isset($field[$v['field']]['index'])) {
|
|
|
+ $field[$v['field']]['index'][] = $k;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $field[$k] = $v;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
foreach ($value as $k => &$v) {
|
|
|
- $this->setInfo($v, $data, $remote, $show, $source, $default, 2);
|
|
|
+ $this->setInfo($v, $data, $remote, $show, $source, $default, 2, $field);
|
|
|
$option[$k] = $data['option'];
|
|
|
}
|
|
|
if (isset($data['reset'])) {
|
|
@@ -120,7 +135,7 @@ class Update extends Page
|
|
|
return $data;
|
|
|
}
|
|
|
|
|
|
- private function setInfo(&$info, &$data, $remote, $show, $source, $default, $type = 1)
|
|
|
+ private function setInfo(&$info, &$data, $remote, $show, $source, $default, $type = 1, $field = array())
|
|
|
{
|
|
|
if ($source) {
|
|
|
foreach ($source as $k => $v) {
|
|
@@ -149,13 +164,13 @@ class Update extends Page
|
|
|
}
|
|
|
$info[$k] = $v;
|
|
|
}
|
|
|
- if (isset($this->config['field'][$k]) && isset($this->config['field'][$k]['update'])) {
|
|
|
- $v = $this->config['field'][$k]['update'];
|
|
|
+ if (isset($field[$k]) && isset($field[$k]['update'])) {
|
|
|
+ $v = $field[$k]['update'];
|
|
|
}
|
|
|
if ($k == 'cdate') {
|
|
|
- $this->config['field'][$k]['type'] = 'date';
|
|
|
+ $field[$k]['type'] = 'date';
|
|
|
}
|
|
|
- if (isset($this->config['field'][$k]) && isset($this->config['field'][$k]['type']) && $this->config['field'][$k]['type'] == 'date' && $v) {
|
|
|
+ if (isset($field[$k]) && isset($field[$k]['type']) && $field[$k]['type'] == 'date' && $v) {
|
|
|
$v = date('Y-m-d H:i:s', $v);
|
|
|
}
|
|
|
if ($type == 1) {
|
|
@@ -172,6 +187,11 @@ class Update extends Page
|
|
|
$data['update'][$show[$k][0]]['show'] = $this->getShow($show[$k][1], $info);
|
|
|
}
|
|
|
}
|
|
|
+ if (isset($field[$k]) && isset($field[$k]['index'])) {
|
|
|
+ foreach ($field[$k]['index'] as $v1) {
|
|
|
+ $info[$v1] = $v;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
if ($default) {
|
|
|
foreach ($default as $k => $v) {
|
|
@@ -246,7 +266,8 @@ class Update extends Page
|
|
|
{
|
|
|
$field = $this->input('field', '');
|
|
|
$data[$type] = array();
|
|
|
- if (empty($data['layout']) && !$field && isset($this->config[$type])) {
|
|
|
+ //if (empty($data['layout']) && !$field && isset($this->config[$type])) {
|
|
|
+ if (empty($data['layout']) && isset($this->config[$type])) {
|
|
|
foreach ($this->config[$type] as $k => $v) {
|
|
|
if (is_string($v)) {
|
|
|
$field = array();
|
|
@@ -333,7 +354,7 @@ class Update extends Page
|
|
|
} elseif (strpos($v['key'], '/')) {
|
|
|
$other[$v['key']] = array($v['where'], $v['content']['field'], $v['content']['drag'], $input[$v['key']]);
|
|
|
} else {
|
|
|
- $this->doData($data, $v['key'], $input[$v['key']]);
|
|
|
+ $this->doData($data, $v['key'], $input[$v['key']], $this->config['field']);
|
|
|
}
|
|
|
} elseif ($id) {
|
|
|
$data[$v['key']] = '';
|
|
@@ -346,7 +367,7 @@ class Update extends Page
|
|
|
Dever::error('无效数据');
|
|
|
}
|
|
|
if ($data) {
|
|
|
- $this->exists($id, $data);
|
|
|
+ $this->exists($id, $data, $this->config['field']);
|
|
|
$this->start($id, $data);
|
|
|
if ($id) {
|
|
|
$info = $this->db->find($id);
|
|
@@ -373,7 +394,7 @@ class Update extends Page
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private function doData(&$data, $key, $value)
|
|
|
+ private function doData(&$data, $key, $value, $field = array())
|
|
|
{
|
|
|
if (is_array($value)) {
|
|
|
if (isset($value[0])) {
|
|
@@ -382,7 +403,10 @@ class Update extends Page
|
|
|
$value = Dever::json_encode($value);
|
|
|
}
|
|
|
}
|
|
|
- if ($value && isset($this->config['field'][$key]) && $handle = Dever::issets($this->config['field'][$key], 'handle')) {
|
|
|
+ if (isset($field[$key]) && isset($field[$key]['field'])) {
|
|
|
+ $key = $field[$key]['field'];
|
|
|
+ }
|
|
|
+ if ($value && isset($field[$key]) && $handle = Dever::issets($field[$key], 'handle')) {
|
|
|
$value = Dever::call($handle, array($value));
|
|
|
if (is_array($value) && isset($value[$key])) {
|
|
|
foreach ($value as $k => $v) {
|
|
@@ -390,13 +414,13 @@ class Update extends Page
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
- } elseif (isset($this->config['field'][$key]) && isset($this->config['field'][$key]['type']) && $this->config['field'][$key]['type'] == 'date' && $value) {
|
|
|
+ } elseif (isset($field[$key]) && isset($field[$key]['type']) && $field[$key]['type'] == 'date' && $value) {
|
|
|
$value = \Dever\Helper\Date::mktime($value);
|
|
|
}
|
|
|
$data[$key] = trim($value);
|
|
|
}
|
|
|
|
|
|
- private function exists($id, $data)
|
|
|
+ private function exists($id, $data, $field)
|
|
|
{
|
|
|
if (isset($this->config['check']) && $this->config['check']) {
|
|
|
$check = explode(',', $this->config['check']);
|
|
@@ -404,8 +428,8 @@ class Update extends Page
|
|
|
$name = array();
|
|
|
foreach ($check as $k => $v) {
|
|
|
if (isset($data[$v])) {
|
|
|
- if (isset($this->config['field'][$v]) && isset($this->config['field'][$v]['name'])) {
|
|
|
- $n = $this->config['field'][$v]['name'];
|
|
|
+ if (isset($field[$v]) && isset($field[$v]['name'])) {
|
|
|
+ $n = $field[$v]['name'];
|
|
|
} elseif (isset($this->db->config['struct'][$v])) {
|
|
|
$n = $this->db->config['struct'][$v]['name'];
|
|
|
} else {
|
|
@@ -451,6 +475,7 @@ class Update extends Page
|
|
|
if (strpos($k, '#')) {
|
|
|
$k = str_replace('#', '', $k);
|
|
|
}
|
|
|
+ $set = new Update($k, false);
|
|
|
$common = $v[0];
|
|
|
$update = $v[1];
|
|
|
$drag = $v[2];
|
|
@@ -473,7 +498,7 @@ class Update extends Page
|
|
|
}
|
|
|
foreach ($update as $k2 => $v2) {
|
|
|
if (isset($v1[$k2])) {
|
|
|
- $this->doData($value, $k2, $v1[$k2]);
|
|
|
+ $this->doData($value, $k2, $v1[$k2], $set->config['field']);
|
|
|
} else {
|
|
|
$value[$k2] = '';
|
|
|
}
|