public function _info_list($id = null, $uid = null)
 {
     $fields_list = $this->getRoleFieldIds($uid);
     $info_list = null;
     if (isset($uid) && $uid != is_login()) {
         //查看别人的扩展信息
         $field_setting_list = D('field_setting')->where(array('profile_group_id' => $id, 'status' => '1', 'visiable' => '1', 'id' => array('in', $fields_list)))->order('sort asc')->select();
         if (!$field_setting_list) {
             return null;
         }
         $map['uid'] = $uid;
     } else {
         if (is_login()) {
             $field_setting_list = D('field_setting')->where(array('profile_group_id' => $id, 'status' => '1', 'id' => array('in', $fields_list)))->order('sort asc')->select();
             if (!$field_setting_list) {
                 return null;
             }
             $map['uid'] = is_login();
         } else {
             $this->error('请先登录!');
         }
     }
     foreach ($field_setting_list as &$val) {
         $map['field_id'] = $val['id'];
         $field = D('field')->where($map)->find();
         $val['field_content'] = $field;
         unset($map['field_id']);
         $info_list[$val['id']] = $this->_get_field_data($val);
         //当用户扩展资料为数组方式的处理@MingYangliu
         $vlaa = explode('|', $val['form_default_value']);
         $needle = ':';
         //判断是否包含a这个字符
         $tmparray = explode($needle, $vlaa[0]);
         if (count($tmparray) > 1) {
             foreach ($vlaa as $kye => $vlaas) {
                 if (count($tmparray) > 1) {
                     $vlab[] = explode(':', $vlaas);
                     foreach ($vlab as $key => $vlass) {
                         $items[$vlass[0]] = $vlass[1];
                     }
                 }
                 continue;
             }
             $info_list[$val['id']]['field_data'] = $items[$info_list[$val['id']]['field_data']];
         }
         //当扩展资料为join时,读取数据并进行处理再显示到前端@MingYang
         if ($val['child_form_type'] == "join") {
             $j = explode('|', $val['form_default_value']);
             $a = explode(' ', $info_list[$val['id']]['field_data']);
             $info_list[$val['id']]['field_data'] = get_userdata_join($a, $j[0], $j[1]);
         }
     }
     return $info_list;
 }
Example #2
0
 public function inputRender($data = array(), $type)
 {
     //dump($data);exit;
     $this->assign('type', $type);
     $this->assign('field_id', $data['id']);
     $this->assign('required', $data['required']);
     $this->assign('input_tips', $data['input_tips']);
     if (!isset($data['field_content']) && $data['required'] && $data['form_default_value'] == '') {
         $this->assign('canSubmit', 0);
     } elseif (isset($data['field_content']['field_data']) && $data['field_content']['field_data'] == '' && $data['required']) {
         $this->assign('canSubmit', 0);
     } else {
         $this->assign('canSubmit', 1);
     }
     switch ($data['form_type']) {
         case 'input':
             $this->assign('field_name', $data['field_name']);
             $this->assign('child_form_type', $data['child_form_type']);
             $validation = $this->_getValidation($data['validation']);
             $this->assign('validation', $validation);
             if (!$data['field_content']) {
                 $this->assign('field_data', $data['form_default_value']);
             } else {
                 $this->assign('field_data', $data['field_content']['field_data']);
             }
             break;
         case 'radio':
             $this->assign('field_name', $data['field_name']);
             $checked = isset($data['field_content']['field_data']) ? $data['field_content']['field_data'] : "还未选择";
             if ($type == "personal") {
                 if ($data['form_default_value'] != '' && $data['form_default_value'] != null) {
                     $canCheck = explode('|', $data['form_default_value']);
                     $items = array();
                     foreach ($canCheck as $key => $val) {
                         $items[$key]['value'] = $val;
                         $items[$key]['checked'] = $checked == $val ? 'checked' : '';
                     }
                     if (!isset($data['field_content']['field_data'])) {
                         $items[0]['checked'] = 'checked';
                     }
                 }
             }
             $this->assign('items', $items);
             $this->assign('checked', $checked);
             break;
             /*
              * 改造用户扩展资料下拉菜单、多选默认值提交数据为键值、原有字符串格式不受影响
              * 改造后当checkbox和select类型时,默认值可按照“1:男|2:女”这样的数组格式以及“字段名|表名”,
              * 用户提交资料只提交数组键值和数据表ID字段值
              * @MingYang <*****@*****.**>
              */
         /*
          * 改造用户扩展资料下拉菜单、多选默认值提交数据为键值、原有字符串格式不受影响
          * 改造后当checkbox和select类型时,默认值可按照“1:男|2:女”这样的数组格式以及“字段名|表名”,
          * 用户提交资料只提交数组键值和数据表ID字段值
          * @MingYang <*****@*****.**>
          */
         case 'checkbox':
             $this->assign('field_name', $data['field_name']);
             if ($type == "personal") {
                 if ($data['form_default_value'] != '' && $data['form_default_value'] != null) {
                     $canCheck = explode('|', $data['form_default_value']);
                     $items = null;
                     /*
                      * 添加用户扩展资料可添加关联字段功能(多选支持)
                      * 给原有多选扩展字段做一个join判断
                      * @MingYang <*****@*****.**>
                      */
                     //join判断,对关联扩展资料信息处理
                     if ($data['child_form_type'] == "join") {
                         $joindata = explode('|', $data['form_default_value']);
                         $checked = explode('|', $data['field_content']['field_data']);
                         foreach (get_userdata_join('', $joindata[0], $joindata[1]) as $key => $val) {
                             $items[$key]['value'] = $val[$joindata[1]];
                             $items[$key]['join'] = 1;
                             $items[$key]['id'] = $val['id'];
                             if (in_array($val['id'], $checked)) {
                                 $items[$key]['selected'] = 1;
                             } else {
                                 $items[$key]['selected'] = 0;
                             }
                         }
                         $this->assign('items', $items);
                     } else {
                         /*
                          * 添加用户扩展资料可添加默认值添加默认值数组选项,用户直接提交键值而不是字符串、原有字符串提交功能不受影响(多选支持)
                          * @MingYang <*****@*****.**>
                          */
                         $vlaa = explode('|', $data['form_default_value']);
                         $checked = explode('|', $data['field_content']['field_data']);
                         foreach ($vlaa as $kye => $vlaas) {
                             $needle = ':';
                             $tmparray = explode($needle, $vlaas);
                             if (count($tmparray) > 1) {
                                 $vlab[] = explode(':', $vlaas);
                                 foreach ($vlab as $key => $vlass) {
                                     $items[$key]['id'] = $vlass[0];
                                     $items[$key]['value'] = $vlass[1];
                                     $items[$key]['join'] = 1;
                                     if (in_array($vlass[0], $checked)) {
                                         $items[$key]['selected'] = 1;
                                     } else {
                                         $items[$key]['selected'] = 0;
                                     }
                                 }
                             } else {
                                 //执行原扩展信息处理
                                 $checked = explode('|', $data['field_content']['field_data']);
                                 foreach ($canCheck as $key => $val) {
                                     if ($val != '') {
                                         $items[$key]['value'] = $val;
                                         if (in_array($val, $checked)) {
                                             $items[$key]['selected'] = 1;
                                         } else {
                                             $items[$key]['selected'] = 0;
                                         }
                                     }
                                 }
                             }
                         }
                         $this->assign('items', $items);
                     }
                 }
             } else {
                 $checked = explode('|', $data['field_content']['field_data']);
                 $this->assign('checked', $checked);
             }
             break;
         case 'select':
             $this->assign('field_name', $data['field_name']);
             $selected = isset($data['field_content']['field_data']) ? $data['field_content']['field_data'] : "还未选择";
             if ($type == "personal") {
                 /*
                  * 添加用户扩展资料可添加关联字段功能(多选支持)
                  * 给原有多选扩展字段做一个join判断
                  * @MingYang <*****@*****.**>
                  */
                 //join判断,对关联扩展资料信息处理
                 if ($data['child_form_type'] == "join") {
                     $joindata = explode('|', $data['form_default_value']);
                     foreach (get_userdata_join('', $joindata[0], $joindata[1]) as $key => $val) {
                         $items[$key]['value'] = $val[$joindata[1]];
                         $items[$key]['join'] = 1;
                         $items[$key]['id'] = $val['id'];
                         $items[$key]['selected'] = $selected == $val['id'] ? 'selected' : '';
                     }
                 } else {
                     if ($data['form_default_value'] != '' && $data['form_default_value'] != null) {
                         /*
                          * 添加用户扩展资料可添加默认值添加默认值数组选项,用户直接提交键值而不是字符串、原有字符串提交功能不受影响(下拉支持)
                          * @MingYang <*****@*****.**>
                          */
                         $canSelected = explode('|', $data['form_default_value']);
                         $checked = explode('|', $data['field_content']['field_data']);
                         foreach ($canSelected as $kye => $vlaas) {
                             $needle = ':';
                             $tmparray = explode($needle, $vlaas);
                             if (count($tmparray) > 1) {
                                 $vlab[] = explode(':', $vlaas);
                                 foreach ($vlab as $key => $vlass) {
                                     $items[$key]['id'] = $vlass[0];
                                     $items[$key]['value'] = $vlass[1];
                                     $items[$key]['join'] = 1;
                                     if (in_array($vlass[0], $checked)) {
                                         $items[$key]['selected'] = 'selected';
                                     } else {
                                         $items[$key]['selected'] = '';
                                     }
                                 }
                             } else {
                                 //执行原扩展信息处理
                                 $items = array();
                                 foreach ($canSelected as $key => $val) {
                                     $items[$key]['value'] = $val;
                                     $items[$key]['selected'] = $selected == $val ? 'selected' : '';
                                 }
                                 if (!isset($data['field_content']['field_data'])) {
                                     $items[0]['selected'] = 'selected';
                                 }
                             }
                         }
                     } else {
                         $canSelected[0]['value'] = '无';
                         $canSelected[0]['selected'] = 'selected';
                     }
                 }
             }
             $this->assign('items', $items);
             $this->assign('selected', $selected);
             break;
         case 'time':
             $this->assign('field_name', $data['field_name']);
             if (!$data['field_content']) {
                 $this->assign('field_data', null);
             } else {
                 $data['field_content']['field_data'] = date("Y-m-d", $data['field_content']['field_data']);
                 $this->assign('field_data', $data['field_content']['field_data']);
             }
             break;
         case 'textarea':
             $this->assign('field_name', $data['field_name']);
             $validation = $this->_getValidation($data['validation']);
             $this->assign('validation', $validation);
             if (!$data['field_content']) {
                 $this->assign('field_data', $data['form_default_value']);
             } else {
                 $this->assign('field_data', $data['field_content']['field_data']);
             }
             break;
     }
     $this->display('Widget/InputRender/' . $data['form_type']);
 }