コード例 #1
0
ファイル: DumpController.php プロジェクト: chenyongze/d-a-m
 /**
  * 文档数据导出
  * 导出及备份系统制定字段的数据
  * 20130419 容易导致混乱,有整体导出即可,本功能暂停开发
  */
 public function actionCExport()
 {
     exit;
     $tableName = isset($_REQUEST['name']) ? $_REQUEST['name'] : '';
     //表明
     //验证表明是否为实体表
     if (!preg_match('/^item/i', $tableName)) {
         $this->redirect_back();
     }
     $selectedFields = isset($_POST['checked']) ? $_POST['checked'] : array();
     //选中
     //获取数据库对象和所有字段列表
     $db = CardItem::model()->getDb();
     $nameInfo = explode('_', $tableName);
     $attr = Attr::model()->getAll($nameInfo[1], $nameInfo[2]);
     $fields = array_merge(array('name', 'edittime', 'addtime'), array_keys($attr));
     //获取字段列表
     //获取需要导出的字段列表,并导出
     if (!empty($_POST)) {
         $contents = "";
         //内容
         array_unshift($selectedFields, '_id');
         //加入必选字段id
         //data	获取文档数据
         $cursor = $db->selectCollection($tableName)->find(array(), $selectedFields);
         //查询指定字段数据
         foreach ($cursor as $one) {
             $one_id = is_object($one['_id']) ? '' . $one['_id'] : $one['_id'];
             //id类型处理
             unset($one['_id']);
             //$contents .= '{_id:"'.$one_id.'"},{$set:'.$this->_exportJSON($one).'}'."\n";
             $contents .= $this->json_unicode_utf8(json_encode(array('_id' => $one_id))) . ',{"$set":' . $this->json_unicode_utf8(json_encode($one)) . '}' . "\n";
         }
         unset($cursor);
         $fiels_ext = '';
         array_shift($selectedFields);
         //移出顶部的_id
         $sfcount = count($selectedFields);
         //字段数量
         if ($sfcount > 2) {
             $fiels_ext = $selectedFields[0] . ',' . $selectedFields[1] . '...[' . $sfcount . ']';
         } else {
             $fiels_ext = implode(',', $selectedFields);
         }
         file_put_contents(yiiBase::getPathOfAlias($this->dirpath . '.export') . '/' . date("YmdHis") . '-' . $tableName . '-' . $fiels_ext . '.js', $contents);
     }
     //扫描导出文件并获取列表
     $exportTables = $this->findDir($this->dirpath . '.export', 'js');
     $exe_msg = $this->_exe_message();
     $this->render('cexport', array('fields' => $fields, 'selectedFields' => $selectedFields, 'tableName' => $tableName, 'exportTables' => $exportTables, 'exe_msg' => $exe_msg));
 }
コード例 #2
0
ファイル: DBModel.php プロジェクト: chenyongze/d-a-m
 /**
  * 根据表名清理记录
  * @param $tname	string	表名(可以是由item虚化出来的,如“item_nnhysj_tz”)
  * @return 记录总数
  */
 public function getRemove($tname)
 {
     $ts = $this->parseRealTable($tname);
     $this->applyScopes($ts['criteria']);
     return CardItem::model()->getDb()->selectCollection($ts['name'])->remove($ts['criteria']->getConditions());
 }
コード例 #3
0
ファイル: CardController.php プロジェクト: chenyongze/d-a-m
 /**
  * 获取选择字段的已使用选项(带缓存)
  * http://db.admin.mofang.com/api/card/getoptionuse?setid=1&field=fglx
  */
 public function actionGetOptionUse()
 {
     //参数接收
     //http://db.dev.mofang.com/api/card/getoptionuse/setid/9/field/select1
     $datasetId = isset($_GET['setid']) ? intval($_GET['setid']) : 0;
     //表id
     $fieldKay = isset($_GET['field']) ? $_GET['field'] : '';
     //字段名
     $filter = isset($_GET['filter']) ? $this->paramStr2Arr($_GET['filter']) : '';
     //过滤条件		filter = djfl|珍品::	(多个且关系)
     //初始化返回值
     $info = array();
     $return = array('code' => 0, 'data' => array());
     //参数验证
     if (empty($datasetId) || empty($fieldKay)) {
         $return['code'] = 1;
         //接口参数不足
         //获取字段定义
     } else {
         $this->checkCache($cache_data);
         //检查缓存
         if (!empty($cache_data)) {
             echo $cache_data;
             return '';
         }
         $options = CardDs::model()->getFieldOption($datasetId, $fieldKay);
         if (empty($options)) {
             $return['code'] = 2;
         } else {
             //过滤条件
             $condition = array("dataset_id" => $datasetId, 'data.' . $fieldKay => array('$exists' => true));
             //加入过滤条件
             if ($filter) {
                 foreach ($filter as $fkey => $fval) {
                     $condition['data.' . $fkey] = $fval;
                 }
             }
             //执行查询
             $option_dist = CardItem::model()->getCollection()->distinct('data.' . $fieldKay, $condition);
             //若有分组数据,则填入返回值中
             if ($option_dist) {
                 //合并选项并去重
                 foreach ($option_dist as $oval) {
                     if (is_array($oval)) {
                         $return['data'] = array_merge($return['data'], $oval);
                         //数组合并
                     } else {
                         array_push($return['data'], $oval);
                         //字符串压入
                     }
                 }
                 $return['data'] = array_unique($return['data']);
                 //去重
                 $return['data'] = array_filter($return['data']);
                 //去空
                 $return['data'] = array_merge($return['data'], array());
             }
             $this->writeCache(CJSON::encode($return));
             //设置缓存
         }
     }
     echo CJSON::encode($return);
 }
コード例 #4
0
ファイル: CardDs.php プロジェクト: chenyongze/d-a-m
 /**
  * 获取当前表结构字段名和英文名的对应关系
  * @author gavin
  * @param $istpl	bool	是否为模板,若是组合框只导出一组(默认),若不是则按照当前最大元素数来生成
  * @return 对应
  */
 public function getFieldNameMap($istpl = true)
 {
     //获取字段和中文的对应关系
     $fields = array('id' => '序号');
     //     	FunctionUTL::Debug($this->fields);exit;
     foreach ($this->fields as $field_key => $field_info) {
         if ($field_info['type'] == 'field') {
             $fields[$field_key] = $field_info['name'];
         } else {
             if ($field_info['type'] == 'group') {
                 //确认组数
                 $size = 1;
                 if (empty($istpl)) {
                     //获取当前元素的最大值
                     $size = CardItem::model()->getFieldMaxSize($this->id, $field_key);
                 }
                 //按组数生成
                 for ($i = 0; $i < $size; $i++) {
                     $_line = $i + 1;
                     foreach ($field_info['fields'] as $fg_key => $fg_info) {
                         $fields[$field_key . '-' . $i . '-' . $fg_key] = $field_info['name'] . '-' . $fg_info['name'] . $_line;
                     }
                 }
             }
         }
     }
     return $fields;
 }
コード例 #5
0
 /**
  * 发布数据
  * @author gentle
  */
 public function actionCreate($id, $preview = false)
 {
     $this->actCheck('item-add', false);
     $id = !empty($id) ? (int) $id : '';
     empty($id) && $this->redirect(array('CardItem/index/id/0'));
     $dsModel = $this->loadModel($id, 'ds');
     //范围验证
     $this->scopeCheck($dsModel->database_id, $id);
     if (isset($_POST['CardItem'])) {
         $itemModel = new CardItem();
         $itemModel->dataset_id = $id;
         //数据格式化
         $this->_handleArguments($_POST['CardItem'], $dsModel->fields);
         $itemModel->attributes = $_POST['CardItem'];
         //数据校验
         foreach ($dsModel->fields as $key => $value) {
             if (isset($value['must']) && $value['must'] == 1 && (!isset($itemModel->attributes['data'][$key]) || is_string($itemModel->attributes['data'][$key]) && trim($itemModel->attributes['data'][$key]) == '' || is_array($itemModel->attributes['data'][$key]) && empty($itemModel->attributes['data'][$key]))) {
                 Yii::app()->user->setFlash("error", "必填项 {$value['name']} 无数据!");
                 $this->redirect(array('CardItem/index/id/' . $id));
             }
         }
         if ($itemModel->save()) {
             $this->addLog('item', $itemModel->id, '发布了“' . $dsModel->name . '”的新数据');
             Yii::app()->user->setFlash("success", "发布数据成功!");
         } else {
             Yii::app()->user->setFlash("error", "发布数据失败!");
         }
         $this->redirect(array('CardItem/index/id/' . $id));
     }
     //构造字段Html
     $dsModel = $dsModel->sortField();
     //排序字段
     $fieldHtml = '';
     foreach ($dsModel->fields as $key => $value) {
         //普通字段
         if ($value['type'] == 'field') {
             $fieldHtml .= $this->fieldItemHtml($key, $value);
             //字段组
         } elseif ($value['type'] == 'group') {
             $groupData = array();
             $groupData['datasetId'] = $id;
             $groupData['enName'] = $key;
             $groupData['data'] = $value;
             $groupData['html'] = $this->groupItemHtml($id, $key);
             $fieldHtml .= $this->renderPartial('_form_item_group', $groupData, true);
         }
     }
     $data = array();
     $data['model'] = $dsModel;
     $data['datasetId'] = $id;
     $data['fieldHtml'] = $fieldHtml;
     $data['preview'] = $preview;
     if ($preview) {
         $this->renderPartial('_form_item', $data);
     } else {
         $this->render('_form_item', $data);
     }
 }