|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Mobile\Logic;
|
|
|
|
|
use Think\Model;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 文档模型逻辑层公共模型
|
|
|
|
|
* 所有逻辑层模型都需要继承此模型
|
|
|
|
|
*/
|
|
|
|
|
class BaseLogic extends Model {
|
|
|
|
|
|
|
|
|
|
/* 自动验证规则 */
|
|
|
|
|
protected $_validate = array();
|
|
|
|
|
|
|
|
|
|
/* 自动完成规则 */
|
|
|
|
|
protected $_auto = array();
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 构造函数
|
|
|
|
|
* @param string $name 模型名称
|
|
|
|
|
* @param string $tablePrefix 表前缀
|
|
|
|
|
* @param mixed $connection 数据库连接信息
|
|
|
|
|
*/
|
|
|
|
|
public function __construct($name = '', $tablePrefix = '', $connection = '') {
|
|
|
|
|
/* 设置默认的表前缀 */
|
|
|
|
|
$this->tablePrefix = C('DB_PREFIX') . 'document_';
|
|
|
|
|
/* 执行构造方法 */
|
|
|
|
|
parent::__construct($name, $tablePrefix, $connection);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 获取模型详细信息
|
|
|
|
|
* @param integer $id 文档ID
|
|
|
|
|
* @return array 当前模型详细信息
|
|
|
|
|
*/
|
|
|
|
|
public function detail($id) {
|
|
|
|
|
if ($this->getDbFields() == false) {
|
|
|
|
|
$data = array();
|
|
|
|
|
} else {
|
|
|
|
|
$data = $this->field(true)->find($id);
|
|
|
|
|
if (!$data) {
|
|
|
|
|
$this->error = '获取详细信息出错!';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return $data;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增或添加模型数据
|
|
|
|
|
* @param number $id 文章ID
|
|
|
|
|
* @return boolean true-操作成功,false-操作失败
|
|
|
|
|
*/
|
|
|
|
|
public function update($id = 0) {
|
|
|
|
|
/* 获取数据 */
|
|
|
|
|
$data = $this->create();
|
|
|
|
|
if ($data === false) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (empty($data['id'])) {//新增数据
|
|
|
|
|
$data['id'] = $id;
|
|
|
|
|
$id = $this->add($data);
|
|
|
|
|
if (!$id) {
|
|
|
|
|
$this->error = '新增数据失败!';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
} else { //更新数据
|
|
|
|
|
$status = $this->save($data);
|
|
|
|
|
if (false === $status) {
|
|
|
|
|
$this->error = '更新数据失败!';
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 模型数据自动保存
|
|
|
|
|
* @return boolean
|
|
|
|
|
*/
|
|
|
|
|
public function autoSave($id = 0) {
|
|
|
|
|
$this->_validate = array();
|
|
|
|
|
return $this->update($id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 检测属性的自动验证和自动完成属性
|
|
|
|
|
* @return boolean
|
|
|
|
|
*/
|
|
|
|
|
public function checkModelAttr($model_id){
|
|
|
|
|
$fields = get_model_attribute($model_id,false);
|
|
|
|
|
$validate = $auto = array();
|
|
|
|
|
foreach($fields as $key=>$attr){
|
|
|
|
|
if($attr['is_must']){// 必填字段
|
|
|
|
|
$validate[] = array($attr['name'],'require',$attr['title'].'必须!',self::MUST_VALIDATE , 'regex', self::MODEL_BOTH);
|
|
|
|
|
}
|
|
|
|
|
// 自动验证规则
|
|
|
|
|
if(!empty($attr['validate_rule'])) {
|
|
|
|
|
$validate[] = array($attr['name'],$attr['validate_rule'],$attr['error_info']?$attr['error_info']:$attr['title'].'验证错误',0,$attr['validate_type'],$attr['validate_time']);
|
|
|
|
|
}
|
|
|
|
|
// 自动完成规则
|
|
|
|
|
if(!empty($attr['auto_rule'])) {
|
|
|
|
|
$auto[] = array($attr['name'],$attr['auto_rule'],$attr['auto_time'],$attr['auto_type']);
|
|
|
|
|
}elseif('checkbox'==$attr['type']){ // 多选型
|
|
|
|
|
$auto[] = array($attr['name'],'arr2str',3,'function');
|
|
|
|
|
}elseif('datetime' == $attr['type'] || 'date' == $attr['type']){ // 日期型
|
|
|
|
|
$auto[] = array($attr['name'],'strtotime',3,'function');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
$validate = array_merge($validate,$this->_validate);
|
|
|
|
|
$auto = array_merge($auto,$this->_auto);
|
|
|
|
|
return $this->validate($validate)->auto($auto);
|
|
|
|
|
}
|
|
|
|
|
}
|