模块

Model_Forum_Category
继承自 Model

论坛分类模型。

package
BootCMS
category
论坛/模型
author
Tinsh
copyright
© 2005-2016 Kilofox Studio

该类在 APPPATH/classes/model/forum/category.php 第 13 行声明。

属性

protected $_db

private $_loaded

private $_values

方法

public create( array $data ) (在 Model_Forum_Category 中定义)

创建新版块。

参数

  • array $data required - 键值对

返回值

  • mixed - 插入的数据ID 或 false

源代码

public function create($data)
{
	if (is_object($data))
	{
		// 对象转数组(将来将 Validation 改写成操作对象后,就可以省略此步)
		$_arr = get_object_vars($data);
		foreach ($_arr as $key => $val)
		{
			$values[$key] = $val;
		}
		// 验证数据
		$validation = self::getValidation($values);
		if (!$validation->check())
		{
			throw new Validation_Exception('user', $validation);
		}
		return $this->_db->insert('bb_cats', $values);
	}
	return false;
}

public delete( ) (在 Model_Forum_Category 中定义)

删除版块。

返回值

  • mixed - 执行结果

源代码

public function delete()
{
	if ($this->_loaded)
	{
		$where = "`id` = {$this->_values->id}";
		return $this->_db->delete('bb_cats', $where);
	}
	return false;
}

public static factory( ) (在 Model_Forum_Category 中定义)

创建并返回一个新的模型对象。

返回值

  • 对象

源代码

public static function factory($name)
{
	return parent::factory($name);
}

public findAll( [ string $order_by = string(0) "" ] ) (在 Model_Forum_Category 中定义)

取得所有版块。

参数

  • string $order_by = string(0) "" - 排序

返回值

  • array - 数据

源代码

public function findAll($order_by = '')
{
	$order_by = $order_by ? $order_by : 'id';
	$sql = "SELECT * FROM `{$this->_db->tablePrefix}bb_cats` ORDER BY $order_by";
	return $this->_db->selectArray($sql);
}

public findWithCategory( [ integer $fid = integer 0 ] ) (在 Model_Forum_Category 中定义)

取得包括分类的版块信息。

参数

  • integer $fid = integer 0 - 分类ID

返回值

  • mixed

源代码

public function findWithCategory($fid = 0)
{
	$result = NULL;
	if (is_numeric($fid) && $fid > 0)
	{
		$sql = "SELECT f.id, f.name, f.auth, f.topics, f.status, f.hide_mods_list, c.id AS cat_id, c.name AS cat_name FROM {$this->_db->tablePrefix}bb_cats f, {$this->_db->tablePrefix}bb_cats c WHERE f.id = $fid AND f.cat_id = c.id";
		$result = $this->_db->select($sql);
	}
	return $result;
}

public getForumsAndCategories( ) (在 Model_Forum_Category 中定义)

取得版块与分类等信息。

返回值

  • mixed

源代码

public function getForumsAndCategories()
{
	$sql = "SELECT f.id, f.name, f.descr, f.status, f.topics, f.posts, f.auth, f.hide_mods_list,
		c.id AS cat_id, c.name AS cat_name,
		t.id AS topic_id, t.topic_title, t.last_post_id, t.count_replies,
		p.poster_id, p.post_time,
		u.displayed_name AS poster_name, u.level AS poster_level
		FROM {$this->_db->tablePrefix}bb_cats f
		LEFT JOIN {$this->_db->tablePrefix}bb_topics t ON f.last_topic_id = t.id
		LEFT JOIN {$this->_db->tablePrefix}bb_cats c ON f.cat_id = c.id
		LEFT JOIN {$this->_db->tablePrefix}bb_posts p ON t.last_post_id = p.id
		LEFT JOIN {$this->_db->tablePrefix}bb_members u ON p.poster_id = u.id
		ORDER BY c.sort_id ASC, c.name ASC, f.sort_id ASC, f.name ASC";
	return $this->_db->selectArray($sql);
}

public static getValidation( array $values ) (在 Model_Forum_Category 中定义)

数据验证。

参数

  • array $values required - 要验证的数据

返回值

  • Validation

源代码

public static function getValidation($values)
{
	return Validation::factory($values)
			->rule('name', 'not_empty')
			->rule('sort_id', 'not_empty')
			->rule('sort_id', 'digit');
}

public load( ) (在 Model_Forum_Category 中定义)

根据主键加载数据,并返回对象。

返回值

  • 对象

源代码

public function load($id = 0)
{
	if (is_numeric($id) && $id > 0)
	{
		$sql = "SELECT * FROM `" . $this->_db->tablePrefix . "bb_cats` WHERE `id` = $id";
		$this->_values = $this->_db->select($sql);
		$this->_loaded = true;
	}
	return $this->_values;
}

public loadByName( ) (在 Model_Forum_Category 中定义)

根据名称加载数据,并返回对象。

返回值

  • 对象

源代码

public function loadByName($name)
{
	if ($name)
	{
		$sql = "SELECT * FROM `" . $this->_db->tablePrefix . "bb_cats` WHERE `name` = '$name'";
		$this->_values = $this->_db->select($sql);
		$this->_loaded = true;
	}
	return $this->_values;
}

public sortCategories( array $orders ) (在 Model_Forum_Category 中定义)

对分类排序。

参数

  • array $orders required - 数据

返回值

  • integer - 影响的行数

源代码

public function sortCategories($orders)
{
	$count = 0;
	if (!is_array($orders))
		return $count;
	foreach ($orders as $p)
	{
		$p = explode('|', $p);
		if (count($p) == 2)
		{
			$cid = (int) $p[0];
			$order = (int) $p[1];
			$where = "`id` = $cid";
			$result = $this->_db->update('bb_cats', array('sort_id' => $order), $where);
			if ($result)
				$count++;
		}
	}
	return $count;
}

public update( ) (在 Model_Forum_Category 中定义)

更新版块。

返回值

  • mixed - 执行结果

源代码

public function update()
{
	if ($this->_loaded)
	{
		// 对象转数组(将来将 Validation 改写成操作对象后,就可以省略此步)
		$_arr = get_object_vars($this->_values);
		foreach ($_arr as $key => $val)
		{
			$values[$key] = $val;
		}
		// 验证数据
		$validation = self::getValidation($values);
		if (!$validation->check())
		{
			throw new Validation_Exception('user', $validation);
		}
		$where = "`id` = {$this->_values->id}";
		return $this->_db->update('bb_cats', $this->_values, $where);
	}
	return false;
}

public __construct( ) (在 Model 中定义)

源代码

public function __construct()
{
	if (!is_object($this->_db))
	{
		$this->_db = Database::instance();
	}
}