Ejemplo n.º 1
0
 /**
  * 保存属性设置的值
  */
 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();
 }
Ejemplo n.º 2
0
 /**
  * 保存属性设置的值
  *
  * @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();
 }