/** * 过滤数据 */ private function filter_data() { $app_name = trim(urldecode($this->input['appName'])); $app_brief = trim(urldecode($this->input['appBrief'])); $app_icon = intval($this->input['app_icon']); $icon_type = trim($this->input['icon_type']); $temp_id = intval($this->input['temp_id']); $copyright = trim(urldecode($this->input['copyright'])); $effect = trim(urldecode($this->input['effect'])); $textSize = intval($this->input['cpTextSize']); if (isset($this->input['cpTextColor'])) { $textColor = trim(urldecode($this->input['cpTextColor'])); } elseif (isset($this->settings['cpTextColor'])) { $textColor = $this->settings['cpTextColor']; } $app_start_pic = intval($this->input['app_start_pic']); $app_start_pic2 = intval($this->input['startup_ios1']); $app_start_pic3 = intval($this->input['startup_ios2']); $startup_type = trim($this->input['startup_type']); $guide_effect = trim(urldecode($this->input['guideEffect'])); $guide_animation = trim(urldecode($this->input['guideAnimation'])); $guide_sign = trim(urldecode($this->input['guideSign'])); if (isset($this->input['guideDefaultColor'])) { $guide_default_color = trim(urldecode($this->input['guideDefaultColor'])); } elseif (isset($this->settings['signDefaultColor'])) { $guide_default_color = $this->settings['signDefaultColor']; } if (isset($this->input['guideSelectColor'])) { $guide_select_color = trim(urldecode($this->input['guideSelectColor'])); } elseif (isset($this->settings['signSelectedColor'])) { $guide_select_color = $this->settings['signSelectedColor']; } if (empty($app_name) || $temp_id <= 0 || $app_icon <= 0) { $this->errorOutput(PARAM_WRONG); } //验证文字大小 if ($this->settings['cpTextSize']) { $sizeArr = array(); foreach ($this->settings['cpTextSize'] as $v) { $sizeArr[] = $v['value']; } if ($textSize && !in_array($textSize, $sizeArr)) { $this->errorOutput(PARAM_WRONG); } } //验证文字颜色值 if ($textColor != '' && !checkColor($textColor)) { $this->errorOutput(COLOR_ERROR); } if ($guide_default_color != '' && !checkColor($guide_default_color)) { $this->errorOutput(COLOR_ERROR); } if ($guide_select_color != '' && !checkColor($guide_select_color)) { $this->errorOutput(COLOR_ERROR); } $data = array('name' => $app_name, 'icon' => $app_icon, 'icon_type' => $icon_type, 'temp_id' => $temp_id, 'brief' => $app_brief, 'copyright' => $copyright, 'effect' => $effect, 'text_size' => $textSize, 'text_color' => $textColor, 'startup_pic' => $app_start_pic, 'startup_pic2' => $app_start_pic2, 'startup_pic3' => $app_start_pic3, 'startup_type' => $startup_type, 'guide_effect' => $guide_effect, 'guide_animation' => $guide_animation, 'guide_sign' => $guide_sign, 'guide_default_color' => $guide_default_color, 'guide_select_color' => $guide_select_color, 'is_show_guide' => intval($this->input['is_show_guide'])); if (isset($this->input['seekhelp_sort_id'])) { $data['seekhelp_sort_id'] = intval($this->input['seekhelp_sort_id']); } return $data; }
/** * 保存属性设置的值 */ public function save_attribute() { $ui_id = intval($this->input['id']); $module_id = intval($this->input['module_id']); $attrs = $this->input['attr_val']; $queryData = array('id' => $module_id, 'user_id' => $this->user['user_id'], 'ui_id' => $ui_id); $module_info = $this->api->detail('app_module', $queryData); if (!$module_info) { $this->errorOutput(PARAM_WRONG); } $attr_id = array_keys($attrs); //获取属性的id //查询界面属性表 $attr_info = $this->api->getInterfaceAttr($ui_id); $ui_attr_id = array_keys($attr_info); //提交的属性不在界面对应的属性里 if (!array_intersect($attr_id, $ui_attr_id)) { $this->errorOutput(PARAM_WRONG); } $commit_ids = array(); foreach ($attr_info as $v) { if (in_array($v['id'], $attr_id)) { if ($v['type'] == 'color' && $attrs[$v['id']]) { if (checkColor($attrs[$v['id']]) === false) { $this->errorOutput(COLOR_ERROR); } } $commit_ids[$v['id']] = $v['id']; $defaultValue = $v['def_val'] ? $v['def_val'] : $v['dVal']; if (unserialize($defaultValue)) { $defaultValue = unserialize($defaultValue); } if (!empty($attrs[$v['id']]) && !empty($defaultValue)) { //验证数据有效性 $checkResult = $this->checkValidate($attrs[$v['id']], $defaultValue, $v['type']); if (!$checkResult) { $this->errorOutput(PARAM_WRONG); } } $attr_value = is_array($attrs[$v['id']]) ? serialize($attrs[$v['id']]) : $attrs[$v['id']]; $content = array('attr_value' => $attr_value); $condition = array('ui_id' => $ui_id, 'attr_id' => $v['id'], 'module_id' => $module_id); $ret = $this->api->detail('ui_value', $condition); if ($ret) { if ($ret['attr_value'] != $attr_value) { //XXX 是否为图片(混合类型的上传图片暂未支持) if ($v['type'] == 'singlefile' || $v['type'] == 'multiplefiles') { $material_id = array(); if ($attr_value) { //验证图片是否存在 include_once CUR_CONF_PATH . 'lib/appMaterial.class.php'; $material = new appMaterial(); $material_info = $material->show(array('count' => -1, 'condition' => array('id' => $attr_value))); if (!$material_info && $ret['attr_value']) { $this->errorOutput(PARAM_WRONG); } if ($material_info) { foreach ($material_info as $v) { $material_id[$v['id']] = $v['id']; } $content['attr_value'] = implode(',', $material_id); } } //将已删除的图片删除 if ($ret['attr_value']) { $old_v = explode(',', $ret['attr_value']); if ($diff = array_diff($old_v, $material_id)) { $this->api->delete('app_material', array('id' => implode(',', $diff))); } } } $result = $this->api->update('ui_value', $content, $condition); } else { $result = true; } } else { $data = array_merge($content, $condition); $result = $this->api->create('ui_value', $data); } } } //将设置为空的属性原有的值置空 $attrs_arr = $this->api->get_interface_attr(array('module_id' => $module_id, 'ui_id' => $ui_id)); if ($attrs_arr) { $own_ids = array(); foreach ($attrs_arr as $attr) { $own_ids[$attr['attr_id']] = $attr['attr_id']; } $setEmpty = array_diff($own_ids, $commit_ids); if ($setEmpty) { $updateData = array('module_id' => $module_id, 'ui_id' => $ui_id, 'attr_id' => implode(',', $setEmpty)); $this->api->update('ui_value', array('attr_value' => ''), $updateData); } } $this->addItem($result); $this->output(); }
/** * 过滤数据 * * @access private * @param $this->input * * @return array */ private function filter_data() { $module_name = trim(urldecode($this->input['moduleName'])); $english_name = trim(urldecode($this->input['englishModuleName'])); $app_id = intval($this->input['appId']); $ui_id = intval($this->input['uiId']); $subscribe = isset($this->input['is_sub']) ? intval($this->input['is_sub']) : 1; $webview_id = intval($this->input['webviewId']); $webview_url = trim(urldecode($this->input['webviewUrl'])); $body_tpl_id = intval($this->input['body_tpl_id']); $solidify_id = intval($this->input['solidifyId']); if ($app_id <= 0) { $this->errorOutput(NO_APP_ID); } if (!$module_name) { $this->errorOutput(NO_MODULE_ID); } $data = array('app_id' => $app_id, 'name' => $module_name, 'english_name' => $english_name, 'is_sub' => $subscribe); if ($body_tpl_id) { $data['body_tpl_id'] = $body_tpl_id; } elseif (defined('DEFAULT_BODY_TPL') && DEFAULT_BODY_TPL) { $data['body_tpl_id'] = DEFAULT_BODY_TPL; } if (isset($this->input['normal_color'])) { $normal_color = trim(urldecode($this->input['normal_color'])); if ($normal_color && !checkColor($normal_color)) { $this->errorOutput(COLOR_ERROR); } $data['normal_color'] = $normal_color; } if (isset($this->input['normal_alpha'])) { $normal_alpha = trim(urldecode($this->input['normal_alpha'])); if ($normal_alpha != '') { $normal_alpha = floatval($normal_alpha); if ($normal_alpha < 0 || $normal_alpha > 1) { $this->errorOutput(PROPERTY_AUTH_FAIL); } } $data['normal_alpha'] = $normal_alpha; } if (isset($this->input['press_color'])) { $press_color = trim(urldecode($this->input['press_color'])); if ($press_color && !checkColor($press_color)) { $this->errorOutput(COLOR_ERROR); } $data['press_color'] = $press_color; } if (isset($this->input['press_alpha'])) { $press_alpha = trim(urldecode($this->input['press_alpha'])); if ($press_alpha != '') { $press_alpha = floatval($press_alpha); if ($press_alpha < 0 || $press_alpha > 1) { $this->errorOutput(PROPERTY_AUTH_FAIL); } } $data['press_alpha'] = $press_alpha; } if ($webview_id <= 0 && empty($webview_url) && $solidify_id <= 0 && $ui_id <= 0) { $ui_id = DEFAULT_UI; } /* //判断名称字符限制 if (MODULE_NAME_LIMIT) { $str = @iconv('', 'UTF-8', $module_name); $len = mb_strlen($str, 'UTF-8'); if ($len > MODULE_NAME_LIMIT) { $this->errorOutput(CHAR_OVER); } } if (MODULE_ENGLISH_LIMIT) { $str = @iconv('', 'UTF-8', $english_name); $len = mb_strlen($str, 'UTF-8'); if ($len > MODULE_ENGLISH_LIMIT) { $this->errorOutput(CHAR_OVER); } } */ if ($ui_id > 0) { $data['ui_id'] = $ui_id; } elseif ($webview_id > 0 || !empty($webview_url)) { $data['webview_id'] = $webview_id; $data['webview_url'] = $webview_url; } elseif ($solidify_id > 0) { $data['solidify_id'] = $solidify_id; } return $data; }
/** * 保存属性设置的值 * * @access public * @param id:应用id * t_id:模板id * @return array */ public function save_attribute() { $app_id = intval($this->input['id']); $temp_id = intval($this->input['t_id']); $attrs = $this->input['attr_val']; $queryData = array('id' => $app_id, 'user_id' => $this->user['user_id'], 'del' => 0, 'temp_id' => $temp_id); $app_info = $this->api->detail('app_info', $queryData); if (!$app_info) { $this->errorOutput(APP_NOT_EXISTS); } $attr_id = array_keys($attrs); //获取属性的id //查询模板属性表 $attr_info = $this->api->getTemplateAttr($temp_id); $temp_attr_id = array_keys($attr_info); //提交的属性不在模板对应的属性里 if (!array_intersect($attr_id, $temp_attr_id)) { $this->errorOutput(TPL_ATTR_ERROR); } $commit_ids = array(); foreach ($attr_info as $v) { if (in_array($v['id'], $attr_id)) { if ($v['type'] == 'color' && $attrs[$v['id']]) { if (checkColor($attrs[$v['id']]) === false) { $this->errorOutput(COLOR_ERROR); } } $commit_ids[$v['id']] = $v['id']; $defaultValue = $v['def_val'] ? $v['def_val'] : $v['dVal']; if (unserialize($defaultValue)) { $defaultValue = unserialize($defaultValue); } if (!empty($attrs[$v['id']]) && !empty($defaultValue)) { //验证数据有效性 $checkResult = $this->checkValidate($attrs[$v['id']], $defaultValue, $v['type']); if (!$checkResult) { $this->errorOutput(PROPERTY_AUTH_FAIL); } } $attr_value = is_array($attrs[$v['id']]) ? serialize($attrs[$v['id']]) : $attrs[$v['id']]; $content = array('attr_value' => $attr_value); $condition = array('app_id' => $app_id, 'temp_id' => $temp_id, 'attr_id' => $v['id']); $ret = $this->api->detail('temp_value', $condition); if ($ret) { //是否为图片(混合类型的上传图片暂未支持) if ($v['type'] == 'singlefile' || $v['type'] == 'multiplefiles') { $material_id = array(); if ($attr_value) { //验证图片是否存在 include_once CUR_CONF_PATH . 'lib/appMaterial.class.php'; $material = new appMaterial(); $material_info = $material->show(array('count' => -1, 'condition' => array('id' => $attr_value))); if (!$material_info && $ret['attr_value']) { $this->errorOutput(PIC_NOT_EXISTS); } //判断图片数量有没有查过预设的数目 if (count($material_info) > TOTAL_BACKGROUND_PIC_MUN) { $this->errorOutput(PIC_NUM_IS_TOO_MORE); } if ($material_info) { foreach ($material_info as $v) { $material_id[$v['id']] = $v['id']; } $content['attr_value'] = implode(',', $material_id); } } //将已删除的图片删除 /* if ($ret['attr_value']) { $old_v = explode(',', $ret['attr_value']); if ($diff = array_diff($old_v, $material_id)) { $this->api->delete('app_material', array('id' => implode(',', $diff))); } } */ //默认选中的背景 if ($this->input['bg_default']) { //判断默认选中的在不在所有传的背景id中 if (!in_array($this->input['bg_default'], $material_id)) { $this->errorOutput(ERROR_SELECTED_BG_ID); } $content['selected_value'] = $this->input['bg_default']; } } $result = $this->api->update('temp_value', $content, $condition); } else { $data = array_merge($content, $condition); $result = $this->api->create('temp_value', $data); } } } //将设置为空的属性原有的值置空 $attrs_arr = $this->api->get_template_attr(array('app_id' => $app_id, 'temp_id' => $temp_id)); if ($attrs_arr) { $own_ids = array(); foreach ($attrs_arr as $attr) { $own_ids[$attr['attr_id']] = $attr['attr_id']; } $setEmpty = array_diff($own_ids, $commit_ids); if ($setEmpty) { $updateData = array('app_id' => $app_id, 'temp_id' => $temp_id, 'attr_id' => implode(',', $setEmpty)); $this->api->update('temp_value', array('attr_value' => ''), $updateData); } } $this->addItem($result); $this->output(); }
require_once "../service/db_connect.php"; if (!isset($_POST["method"]) || empty($_POST["method"])) { header("Content-Type: application/json"); echo json_encode(array("result" => "fail")); die; } $method = $_POST["method"]; switch ($method) { case 'insert': insertColor(); break; case 'delete': deleteColor(); break; case 'checkColor': checkColor(); break; case 'checkColorHex': checkColorHex(); break; case 'getColor': getColor(); break; default: header("Content-Type: application/json"); echo json_encode(array("result" => "no_method")); break; } function getColor() { try {
/** * 更新扩展数据 */ public function updateExtra() { $id = intval($this->input['id']); $app_id = intval($this->input['app_id']); if ($id <= 0 || $app_id <= 0) { $this->errorOutput(PARAM_WRONG); } //验证APP是否存在 $queryData = array('id' => $app_id, 'user_id' => $this->user['user_id'], 'del' => 0); $app_info = $this->api->detail('app_info', $queryData); if (!$app_info) { $this->errorOutput(NO_APPID); } $appModule_info = $this->api->detail('app_module', array('id' => $id, 'app_id' => $app_id)); if (!$appModule_info) { $this->errorOutput(PARAM_WRONG); } $data = array('ui_id' => intval($this->input['uiId']), 'column_ids' => isset($this->input['columnIds']) ? $this->input['columnIds'] : '', 'type' => isset($this->input['type']) ? implode(',', (array) $this->input['type']) : '', 'site_id' => intval($this->input['siteId']), 'is_sub' => intval($this->input['is_sub']), 'icon_bg' => trim(urldecode($this->input['iconBackground'])), 'webview_id' => intval($this->input['webviewId']), 'webview_url' => trim(urldecode($this->input['webviewUrl'])), 'solidify_id' => intval($this->input['solidifyId'])); $validate = array(); if ($data['webview_id'] > 0 || $data['webview_url']) { if ($data['webview_id'] > 0 && $appModule_info['web_view'] != $data['webview_id']) { $webview_info = $this->api->detail('app_webview', array('id' => $data['webview_id'])); if (!$webview_info) { $this->errorOutput(PARAM_WRONG); } $validate['web_view'] = $data['webview_id']; $validate['web_url'] = $webview_info['url']; } elseif ($data['webview_url'] && $appModule_info['web_url'] != $data['webview_url']) { //判断url if (!filter_var($data['webview_url'], FILTER_VALIDATE_URL)) { $this->errorOutput(URL_NOT_VALID); } $validate['web_url'] = $data['webview_url']; $validate['web_view'] = -1; } $validate['ui_id'] = 0; $validate['column_ids'] = ''; $validate['type'] = ''; $validate['solidify_id'] = 0; } else { if ($data['ui_id'] > 0 && $appModule_info['ui_id'] != $data['ui_id']) { $validate['ui_id'] = $data['ui_id']; } if ($data['solidify_id'] > 0 && $appModule_info['solidify_id'] != $data['solidify_id']) { $validate['solidify_id'] = $data['solidify_id']; $validate['column_ids'] = ''; $validate['type'] = ''; } else { if ($data['column_ids'] && $data['site_id']) { $publish = new publishconfig(); $where = ' AND site_id = ' . $data['site_id'] . ' AND id IN (' . $data['column_ids'] . ')'; $column_info = $publish->get_column('*', $where); if (!$column_info) { $this->errorOutput(PARAM_WRONG); } $column_arr = array(); foreach ($column_info as $column) { $column_arr[$column['id']] = $column['name']; } if ($column_arr) { $data['column_ids'] = serialize($column_arr); } } unset($data['site_id']); if ($appModule_info['column_ids'] != $data['column_ids']) { $validate['column_ids'] = $data['column_ids']; } if ($appModule_info['type'] != $data['type']) { $validate['type'] = $data['type']; } $validate['solidify_id'] = 0; } $validate['web_view'] = 0; $validate['web_url'] = ''; } if ($appModule_info['is_sub'] != $data['is_sub']) { $validate['is_sub'] = $data['is_sub']; } if ($appModule_info['icon_bg'] != $data['icon_bg']) { if ($data['icon_bg'] && checkColor($data['icon_bg']) === false) { $this->errorOutput(COLOR_ERROR); } $validate['icon_bg'] = $data['icon_bg']; } if ($validate) { $result = $this->api->update('app_module', $validate, array('id' => $id)); } else { $result = true; } $this->addItem($result); $this->output(); }
/** * 更新数据 */ public function update() { $id = intval($this->input['id']); if ($id <= 0) { $this->errorOutput(PARAM_WRONG); } $data = $this->filter_data(); //验证APP是否存在 $queryData = array('id' => $data['app_id'], 'user_id' => $this->user['user_id'], 'del' => 0); $app_info = $this->api->detail('app_info', $queryData); if (!$app_info) { $this->errorOutput(NO_APPID); } $appModule_info = $this->api->detail('app_module', array('id' => $id, 'app_id' => $data['app_id'])); if (!$appModule_info) { $this->errorOutput(PARAM_WRONG); } $validate = array(); if ($appModule_info['name'] != $data['name']) { /* //是否重名 $check = $this->api->verify(array('name' => $data['name'], 'app_id' => $data['app_id'])); if ($check > 0) $this->errorOutput(NAME_EXISTS); */ $validate['name'] = $data['name']; //编辑栏目 $userInfo = $this->getSite(); if (!$userInfo) { $this->errorOutput(NO_USER_ID); } $publish = new publishconfig(); $column_data = array('fast_add_column' => 1, 'column_name' => $data['name'], 'site_id' => $userInfo['s_id'], 'column_id' => $appModule_info['column_id']); $column_id = $publish->edit_column($column_data); if (!$column_id) { $this->errorOutput(FAILED); } } if ($data['english_name'] && $appModule_info['english_name'] != $data['english_name']) { /* //是否重名 $check = $this->api->verify(array('english_name' => $data['english_name'], 'app_id' => $data['app_id'])); if ($check > 0) $this->errorOutput(ENGLISH_EXISTS); */ $validate['english_name'] = $data['english_name']; } if (isset($this->input['pic_id'])) { $pic_id = intval($this->input['pic_id']); $pic_info = $this->material->get_material_by_ids($pic_id); if (!$pic_info[0]) { $this->errorOutput(PARAM_WRONG); } $pic_info = serialize($pic_info[0]); if ($appModule_info['pic'] != $pic_info) { $validate['pic'] = $pic_info; } } if ($appModule_info['sign'] != $data['sign']) { $validate['sign'] = $data['sign']; } if ($appModule_info['is_sub'] != $data['is_sub']) { $validate['is_sub'] = $data['is_sub']; } if ($appModule_info['icon_bg'] != $data['icon_bg']) { if ($data['icon_bg'] && checkColor($data['icon_bg']) === false) { $this->errorOutput(COLOR_ERROR); } $validate['icon_bg'] = $data['icon_bg']; } if ($data['webview_id'] > 0 || $data['webview_url']) { if ($data['webview_id'] > 0 && $appModule_info['web_view'] != $data['webview_id']) { $webview_info = $this->api->detail('app_webview', array('id' => $data['webview_id'])); if (!$webview_info) { $this->errorOutput(PARAM_WRONG); } $validate['web_view'] = $data['webview_id']; $validate['web_url'] = $webview_info['url']; } elseif ($data['webview_url'] && $appModule_info['web_url'] != $data['webview_url']) { //判断url if (!filter_var($data['webview_url'], FILTER_VALIDATE_URL)) { $this->errorOutput(URL_NOT_VALID); } $validate['web_url'] = $data['webview_url']; $validate['web_view'] = -1; } $validate['ui_id'] = 0; } else { if ($data['ui_id'] > 0 && $appModule_info['ui_id'] != $data['ui_id']) { $validate['ui_id'] = $data['ui_id']; } $validate['web_view'] = 0; $validate['web_url'] = ''; } if ($validate) { $result = $this->api->update('app_module', $validate, array('id' => $id)); } else { $result = true; } $this->addItem($result); $this->output(); }