<?php

# 定义几个常用的选项
$option = array
(
	1 => '正常',
	2 => '删除',
);

$essence = array
(
	1 => '普通',
	2 => '精华',
	3 => '推荐',
);

$top = array
(
	1 => '普通',
	2 => '置顶',
);

$cate = function()
{
	$array = array();
	$cate = Dever::load('forum/cate-mainAll');
	if($cate)
	{
		$array += $cate;
	}
	return $array;
};

$cate_child = function()
{
	$cate = Dever::load('forum/cate-childAll');

	return $cate;
};

# 栏目
$search_cate = function()
{
	$array = array
	(
		-1 => array('id' => '-1', 'name' => '所有栏目'),
	);
	$cate = Dever::load('forum/cate.all');
	if($cate)
	{
		$array += $cate;
	}
	return $array;
};

return array
(
	# 表名
	'name' => 'posts',
	# 显示给用户看的名称
	'lang' => '主题',
	'order' => 9,
	# 数据结构
	'struct' => array
	(
	
		'id' 		=> array
		(
			'type' 		=> 'int-11',
			'name' 		=> 'ID',
			'default' 	=> '',
			'desc' 		=> '',
			'match' 	=> 'is_numeric',
			'search'	=> 'order',
			'list'		=> true,
		),
		
		'name'		=> array
		(
			'type' 		=> 'varchar-80',
			'name' 		=> '标题',
			'default' 	=> '',
			'desc' 		=> '请输入主题标题',
			'match' 	=> 'is_string',
			'update'	=> 'text',
			'search'	=> 'fulltext',
			'list'		=> true,
		),

		'uid'		=> array
		(
			'type' 		=> 'int-11',
			'name' 		=> '作者-请填写用户id',
			'default' 	=> '1',
			'desc' 		=> '请填写作者',
			'match' 	=> 'is_numeric',
			'update'	=> 'text',
			//'search'	=> 'select',
			'list'		=> '{uid} > 0 ? Dever::load("passport/user-one#username", {uid}) : "匿名用户"',
		),
		
		'ip'		=> array
		(
			'type' 		=> 'varchar-32',
			'name' 		=> 'IP',
			'default' 	=> '',
			'desc' 		=> '请输入IP',
			'match' 	=> 'option',
			//'update'	=> 'text',
			//'search'	=> 'fulltext',
			//'list'		=> true,
		),
		
		'cate_id_parent'		=> array
		(
			'type' 		=> 'int-11',
			'name' 		=> '父级栏目',
			'default' 	=> '0',
			'desc' 		=> '请选择父级栏目',
			'match' 	=> 'is_numeric',
			'update'	=> 'select',
			//'search'	=> 'order,select',
			//'list'		=> '{cate_id_parent} > 0 ? Dever::load("forum/cate-one#name", {cate_id_parent}) : "临时栏目"',
			'option' 	=> $cate,
			# 当值改变时，执行下一步操作
			'child_name' => 'cate_id',
			'child' => $cate_child,
			'child_value' => '{cate_id}',
		),
		
		'cate_id'		=> array
		(
			'type' 		=> 'int-11',
			'name' 		=> '子栏目',
			'default' 	=> '0',
			'desc' 		=> '请选择子栏目',
			'match' 	=> 'is_numeric',
			'search'	=> 'group',
			'option' 	=> $search_cate,
			'list_name'	=> '栏目',
			'list'		=> '{cate_id} > 0 ? Dever::load("forum/cate-one#name", {cate_id}) : "无子栏目"',
		),
		
		'num_add_view'		=> array
		(
			'type' 		=> 'int-11',
			'name' 		=> '手动增加浏览量pv',
			'default' 	=> '0',
			'desc' 		=> '请填写手动增加浏览量pv',
			'match' 	=> 'option',
			'update'	=> 'text',
		),
		
		'num_up'		=> array
		(
			'type' 		=> 'int-11',
			'name' 		=> '赞数',
			'default' 	=> '0',
			'desc' 		=> '请填写赞数',
			'match' 	=> 'option',
			//'search'	=> 'order',
			'list'		=> '"赞数：{num_up}<br />浏览量：{num_view}+{num_add_view}<br />回复数：{num_review}<br />"',
			'list_name'	=> '统计数字',
		),
		
		'num_view'		=> array
		(
			'type' 		=> 'int-11',
			'name' 		=> '浏览量pv',
			'default' 	=> '0',
			'desc' 		=> '请填写浏览量pv',
			'match' 	=> 'option',
			'search'	=> 'order',
			//'list'		=> '{num_view}+{num_add_view}',
		),
		
		'num_review'		=> array
		(
			'type' 		=> 'int-11',
			'name' 		=> '回复数',
			'default' 	=> '0',
			'desc' 		=> '请填写回复数',
			'search'	=> 'order',
			'match' 	=> 'option',
			//'list'		=> true,
		),
		
		'essence'		=> array
		(
			'type' 		=> 'tinyint-1',
			'name' 		=> '精华',
			'default' 	=> '1',
			'desc' 		=> '请选择精华',
			'match' 	=> 'is_numeric',
			'option' 	=> $essence,
			'update'	=> 'radio',
			'list'		=> true,
			'edit'		=> true,
		),
		
		'top'		=> array
		(
			'type' 		=> 'tinyint-1',
			'name' 		=> '置顶',
			'default' 	=> '1',
			'desc' 		=> '请选择置顶',
			'match' 	=> 'is_numeric',
			'option' 	=> $top,
			'update'	=> 'radio',
			'list'		=> true,
			'edit'		=> true,
		),
		
		'content'		=> array
		(
			'type' 		=> 'text-255',
			'name' 		=> '内容',
			'default' 	=> '',
			'desc' 		=> '请输入内容',
			'match' 	=> 'is_string',
			'update'	=> 'editor',
			'key' 		=> 1,
		),

		'state'		=> array
		(
			'type' 		=> 'tinyint-1',
			'name' 		=> '状态',
			'default' 	=> '1',
			'desc' 		=> '请选择状态',
			'match' 	=> 'is_numeric',
			'option' 	=> $option,
			'update'	=> 'radio',
			'list'		=> true,
		),
		
		'cdate'		=> array
		(
			'type' 		=> 'int-11',
			'name' 		=> '录入时间',
			'match' 	=> array('is_numeric', time()),
			'desc' 		=> '',
			# 只有insert时才生效
			'insert'	=> true,
			'list'		=> 'date("Y-m-d H:i:s", {cdate})',
		),
	),
	
	# 索引
	'index' => array
	(
		'version' => 5,
		
		5 => array
		(
			'i1' => 'uid,cate_id',
		)
	),
	
	# 管理功能
	'manage' => array
	(
		//'insert' => false,
		# 列表
		'list_button' => array
		(
			'list' => array('回复', '"review&search_option_posts_id={id}&oper_parent=posts"'),
		),
	),
	
	# request 请求接口定义
	'request' => array
	(
		'getAll' => array
		(
			# 匹配的正则或函数 选填项
			'option' => array
			(
				'cate_id' => 'yes',
				'cate_ids' => array('yes-cate_id', 'in'),
				'id' => 'yes',
			),
			'type' => 'all',
			'order' => array('top' => 'desc', 'id' => 'desc'),
			'page' => array(15, 'list'),
			'col' => '*',
		),

		# 获取默认主题，按照置顶和时间排序的
		'default' => array
		(
			# 匹配的正则或函数 选填项
			'option' => array
			(
				'cate_id' => 'yes',
				'cate_id_parent' => 'yes',
				'uid' => 'yes',
			),
			'type' => 'all',
			'order' => array('top' => 'desc', 'id' => 'desc'),
			'page' => array(15, 'list'),
			'col' => '*',
		),

		# 获取最新主题
		'new' => array
		(
			# 匹配的正则或函数 选填项
			'option' => array
			(
				'name' => array('yes', 'like'),
				'cate_id' => 'yes',
				'cate_id_parent' => 'yes',
				'uid' => 'yes',
			),
			'type' => 'all',
			'order' => array('id', 'desc'),
			'page' => array(15, 'list'),
			'col' => '*',
		),

		# 获取精华主题
		'essence' => array
		(
			'where' => array
			(
				'essence' => 2,
			),
			# 匹配的正则或函数 选填项
			'option' => array
			(
				'cate_id' => 'yes',
				'cate_id_parent' => 'yes',
				'uid' => 'yes',
			),
			'type' => 'all',
			'order' => array('id', 'desc'),
			'page' => array(15, 'list'),
			'col' => '*',
		),
		
		# 获取热门主题
		'hot' => array
		(
			# 匹配的正则或函数 选填项
			'option' => array
			(
				'cate_id' => 'yes',
				'cate_id_parent' => 'yes',
				'uid' => 'yes',
			),
			'type' => 'all',
			'order' => array('num_view`+`num_add_view' => 'desc', 'id' => 'desc'),
			'page' => array(15, 'list'),
			'col' => '*',
		),

		# 获取冷门主题
		'cold' => array
		(
			# 匹配的正则或函数 选填项
			'option' => array
			(
				'cate_id' => 'yes',
				'cate_id_parent' => 'yes',
				'uid' => 'yes',
			),
			'type' => 'all',
			'order' => array('num_view`+`num_add_view' => 'asc', 'id' => 'desc'),
			'page' => array(15, 'list'),
			'col' => '*',
		),


		
		# 更新浏览量
		'addView' => array
		(
			'type' => 'update',
			'where' => array
			(
				'id' => 'yes',
			),
			'set' => array
			(
				'num_view' => array('1', '+='),
			),
		),
		
		# 更新回复数
		'addReview' => array
		(
			'type' => 'update',
			'where' => array
			(
				'id' => 'yes',
			),
			'set' => array
			(
				'num_review' => array('1', '+='),
			),
		),
		
		# 更新点赞数
		'addUp' => array
		(
			'type' => 'update',
			'where' => array
			(
				'id' => 'yes',
			),
			'set' => array
			(
				'num_up' => array('1', '+='),
			),
		),
		
		# 更新点赞数
		'desUp' => array
		(
			'type' => 'update',
			'where' => array
			(
				'id' => 'yes',
			),
			'set' => array
			(
				'num_up' => array('1', '-='),
			),
		),
	),
);
