* Rewrite setting model.

This commit is contained in:
wangyidong
2023-12-02 13:47:46 +08:00
parent d1de72567d
commit 968781ed04
6 changed files with 104 additions and 228 deletions
+9 -10
View File
@@ -10,8 +10,6 @@ declare(strict_types=1);
* @version $Id: model.php 4976 2013-07-02 08:15:31Z wyd621@gmail.com $
* @link http://www.zentao.net
*/
?>
<?php
class settingModel extends model
{
//-------------------------------- methods for get, set and delete setting items. ----------------------------//
@@ -22,9 +20,9 @@ class settingModel extends model
*
* @param string $paramString see parseItemParam();
* @access public
* @return misc
* @return string
*/
public function getItem(string $paramString)
public function getItem(string $paramString): string
{
return $this->createDAO($this->parseItemParam($paramString), 'select')->fetch('value');
}
@@ -36,7 +34,7 @@ class settingModel extends model
* @access public
* @return array
*/
public function getItems(string $paramString)
public function getItems(string $paramString): array
{
return $this->createDAO($this->parseItemParam($paramString), 'select')->fetchAll('id');
}
@@ -74,7 +72,7 @@ class settingModel extends model
* @access public
* @return bool
*/
public function setItems(string $path, array|object $items)
public function setItems(string $path, array|object $items): bool
{
/* Determine vision of config item. */
$pathVision = explode('@', $path);
@@ -108,9 +106,9 @@ class settingModel extends model
* @param string $path
* @param string|int $value
* @access public
* @return void
* @return bool
*/
public function updateItem(string $path, string|int $value = '')
public function updateItem(string $path, string|int $value = ''):bool
{
$item = $this->parseItemPath($path);
if(empty($item)) return false;
@@ -132,6 +130,7 @@ class settingModel extends model
$item->value = $value;
$this->dao->insert(TABLE_CONFIG)->data($item)->exec();
return true;
}
/**
@@ -142,7 +141,7 @@ class settingModel extends model
* @access public
* @return void
*/
public function deleteItems(string $paramString)
public function deleteItems(string $paramString): void
{
$this->createDAO($this->parseItemParam($paramString), 'delete')->exec();
}
@@ -219,7 +218,7 @@ class settingModel extends model
* @access public
* @return object
*/
public function createDAO($params, $method = 'select'): object
public function createDAO(array $params, string $method = 'select'): object
{
$params['vision'] = isset($params['vision']) ? $params['vision'] : '';
$params['owner'] = isset($params['owner']) ? $params['owner'] : '';
+16 -41
View File
@@ -4,57 +4,32 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/setting.class.php';
su('admin');
zdTable('config')->gen(7);
$config = zdTable('config');
$config->vision->range('``,rnd,lite');
$config->gen(20);
/**
title=测试 settingModel->deleteItems();
timeout=0
cid=1
- 删除键是version的common模块下的系统数据 @0
- 删除键是hourPoint的common模块下的系统数据 @0
- 删除键是mode的common模块下的系统数据 @0
- 删除键是CRProduct的common模块下的系统数据 @0
- 删除键是sn的common模块下的数据 @0
- 删除键是CRExection的common模块下的数据 @0
- 删除键是mode、附件条件是safe的数据 @0
- 删除键是URSR的数据 @0
- 删除模块是story的数据 @0
- 删除附加条件是xuanxuan的数据 @0
- 删除所有者是admin的数据 @0
- 删除视图是rnd的数据 @0
- 删除所有的数据 @0
pid=1
*/
$setting = new settingTest();
$params = array();
$params[0] = "vision=rnd&owner=system&module=common&section=global&key=version";
$params[1] = "vision=rnd&owner=system&module=common&key=hourPoint";
$params[2] = "owner=system&module=common&section=global&key=mode";
$params[3] = "owner=system&module=common&key=CRProduct";
$params[4] = "module=common&section=global&key=sn";
$params[5] = "module=common&key=CRExection";
$params[6] = "section=safe&key=mode";
$params[7] = "key=URSR";
$params[8] = "module=story";
$params[9] = "section=xuanxuan";
$params[10] = "owner=admin";
$params[11] = "vision=rnd";
$params[12] = "";
$params[0] = "key=key2";
$params[1] = "section=section3&key=key3";
$params[2] = "module=story&section=section4&key=key4";
$params[3] = "owner=system&module=task&section=section5&key=key5";
$params[4] = "vision=lite&owner=user&module=bug&section=section6&key=key6";
$params[5] = "owner=system";
r($setting->deleteItemsTest($params[0])) && p() && e('0'); // 删除键是version的common模块下的系统数据
r($setting->deleteItemsTest($params[1])) && p() && e('0'); // 删除键是hourPoint的common模块下的系统数据
r($setting->deleteItemsTest($params[2])) && p() && e('0'); // 删除键是mode的common模块下的系统数据
r($setting->deleteItemsTest($params[3])) && p() && e('0'); // 删除键是CRProduct的common模块下的系统数据
r($setting->deleteItemsTest($params[4])) && p() && e('0'); // 删除键是sn的common模块下的数据
r($setting->deleteItemsTest($params[5])) && p() && e('0'); // 删除键是CRExection的common模块下的数据
r($setting->deleteItemsTest($params[6])) && p() && e('0'); // 删除键是mode、附件条件是safe的数据
r($setting->deleteItemsTest($params[7])) && p() && e('0'); // 删除键是URSR的数据
r($setting->deleteItemsTest($params[8])) && p() && e('0'); // 删除模块是story的数据
r($setting->deleteItemsTest($params[9])) && p() && e('0'); // 删除附加条件是xuanxuan的数据
r($setting->deleteItemsTest($params[10])) && p() && e('0'); // 删除所有者是admin的数据
r($setting->deleteItemsTest($params[11])) && p() && e('0'); // 删除视图是rnd的数据
r($setting->deleteItemsTest($params[12])) && p() && e('0'); // 删除所有的数据
r($setting->deleteItemsTest($params[0])) && p() && e('19');
r($setting->deleteItemsTest($params[1])) && p() && e('18');
r($setting->deleteItemsTest($params[2])) && p() && e('17');
r($setting->deleteItemsTest($params[3])) && p() && e('16');
r($setting->deleteItemsTest($params[4])) && p() && e('15');
r($setting->deleteItemsTest($params[5])) && p() && e('7');
+16 -71
View File
@@ -4,7 +4,9 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/setting.class.php';
su('admin');
zdTable('config')->gen(7);
$config = zdTable('config');
$config->vision->range('``,rnd,lite');
$config->gen(20);
/**
@@ -12,79 +14,22 @@ title=测试 settingModel->getItem();
timeout=0
cid=1
- 查询所有数据的第一条 @1
- 查询所有者是系统的第一条数据 @1
- 查询所有者是系统的第一条数据 @1
- 查询所属模块是custom的第一条数据 @0
- 查询附加条件是global的第一条数据 @1
- 查询值是CRProduct的第一条数据 @1
- 查询研发界面中所有者是系统的第一条数据 @1
- 查询研发界面中所属模块是custom的第一条数据 @0
- 查询研发界面中附加条件是global的第一条数据 @1
- 查询研发界面中值是CRProduct的第一条数据 @1
- 查询所有者是系统并且所属模块是custom的第一条数据 @0
- 查询所有者是系统并且附加条件是global的第一条数据 @1
- 查询所有者是系统并且值是CRProduct的第一条数据 @1
- 查询所有者是系统并且所属模块是common、附加条件是global的第一条数据 @1
- 查询所有者是系统并且所属模块是common、值是CRProduct的第一条数据 @1
- 查询所有者是系统并且所属模块是common、附加条件是global、值是version的第一条数据 @1
- 查询所有者是admin并且所属模块是common、值是URSR的第一条数据 @0
- 查询所有者是admin并且所属模块是my、附加条件是block、值是initVersion的第一条数据 @0
- 查询不存在的界面配置 @0
- 查询不存在的所有者配置 @0
- 查询不存在的模块配置 @0
- 查询不存在的附加条件配置 @0
- 查询不存在的值配置 @0
*/
$setting = new settingTest();
global $tester;
$settingModel = $tester->loadModel('setting');
$items = array();
$items[0] = "";
$items[1] = "vision=rnd";
$items[2] = "owner=system";
$items[3] = "module=custom";
$items[4] = "section=global";
$items[5] = "key=CRProduct";
$items[6] = "vision=rnd&owner=system";
$items[7] = "vision=rnd&module=custom";
$items[8] = "vision=rnd&section=global";
$items[9] = "vision=rnd&key=CRProduct";
$items[10] = "owner=system&module=custom";
$items[11] = "owner=system&section=global";
$items[12] = "owner=system&key=CRProduct";
$items[13] = "owner=system&module=common&section=global";
$items[14] = "owner=system&module=common&key=CRExecution";
$items[15] = "owner=system&module=common&section=global&key=version";
$items[16] = "owner=admin&module=common&key=URSR";
$items[17] = "owner=admin&module=my&section=block&key=initVersion";
$items[18] = "vision=test";
$items[19] = "owner=test";
$items[20] = "module=test";
$items[21] = "section=test";
$items[22] = "key=test";
$items[1] = "key=key2";
$items[2] = "section=section3&key=key3";
$items[3] = "module=story&section=section4&key=key4";
$items[4] = "owner=system&module=task&section=section5&key=key5";
$items[5] = "vision=lite&owner=user&module=bug&section=section6&key=key6";
r($setting->getItemTest($items[0])) && p() && e('1'); // 查询所有数据的第一条
r($setting->getItemTest($items[1])) && p() && e('1'); // 查询所有者是系统的第一条数据
r($setting->getItemTest($items[2])) && p() && e('1'); // 查询所有者是系统的第一条数据
r($setting->getItemTest($items[3])) && p() && e('0'); // 查询所属模块是custom的第一条数据
r($setting->getItemTest($items[4])) && p() && e('1'); // 查询附加条件是global的第一条数据
r($setting->getItemTest($items[5])) && p() && e('1'); // 查询值是CRProduct的第一条数据
r($setting->getItemTest($items[6])) && p() && e('1'); // 查询研发界面中所有者是系统的第一条数据
r($setting->getItemTest($items[7])) && p() && e('0'); // 查询研发界面中所属模块是custom的第一条数据
r($setting->getItemTest($items[8])) && p() && e('1'); // 查询研发界面中附加条件是global的第一条数据
r($setting->getItemTest($items[9])) && p() && e('1'); // 查询研发界面中值是CRProduct的第一条数据
r($setting->getItemTest($items[10])) && p() && e('0'); // 查询所有者是系统并且所属模块是custom的第一条数据
r($setting->getItemTest($items[11])) && p() && e('1'); // 查询所有者是系统并且附加条件是global的第一条数据
r($setting->getItemTest($items[12])) && p() && e('1'); // 查询所有者是系统并且值是CRProduct的第一条数据
r($setting->getItemTest($items[13])) && p() && e('1'); // 查询所有者是系统并且所属模块是common、附加条件是global的第一条数据
r($setting->getItemTest($items[14])) && p() && e('1'); // 查询所有者是系统并且所属模块是common、值是CRProduct的第一条数据
r($setting->getItemTest($items[15])) && p() && e('1'); // 查询所有者是系统并且所属模块是common、附加条件是global、值是version的第一条数据
r($setting->getItemTest($items[16])) && p() && e('0'); // 查询所有者是admin并且所属模块是common、值是URSR的第一条数据
r($setting->getItemTest($items[17])) && p() && e('0'); // 查询所有者是admin并且所属模块是my、附加条件是block、值是initVersion的第一条数据
r($setting->getItemTest($items[18])) && p() && e('0'); // 查询不存在的界面配置
r($setting->getItemTest($items[19])) && p() && e('0'); // 查询不存在的所有者配置
r($setting->getItemTest($items[20])) && p() && e('0'); // 查询不存在的模块配置
r($setting->getItemTest($items[21])) && p() && e('0'); // 查询不存在的附加条件配置
r($setting->getItemTest($items[22])) && p() && e('0'); // 查询不存在的值配置
r($settingModel->getItem($items[0])) && p() && e('value1'); // 查询所有数据的第一条
r($settingModel->getItem($items[1])) && p() && e('value2'); // 查询只有key条件
r($settingModel->getItem($items[2])) && p() && e('value3'); // 查询有key和section条件
r($settingModel->getItem($items[3])) && p() && e('value4'); // 查询有key、section和module条件
r($settingModel->getItem($items[4])) && p() && e('value5'); // 查询有key、section、module和owner条件
r($settingModel->getItem($items[5])) && p() && e('value6'); // 查询有key、section、module、owner和vision条件
+16 -71
View File
@@ -4,7 +4,9 @@ include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/setting.class.php';
su('admin');
zdTable('config')->gen(7);
$config = zdTable('config');
$config->vision->range('``,rnd,lite');
$config->gen(20);
/**
@@ -12,79 +14,22 @@ title=测试 settingModel->getItems();
timeout=0
cid=1
- 查询所有数据中的第一条数据第1条的value属性 @0
- 查询所有者是系统的第一条数据第1条的value属性 @0
- 查询所有者是系统的第一条数据第1条的value属性 @0
- 查询所属模块是custom的第一条数据第1条的value属性 @0
- 查询附加条件是global的第一条数据第7条的value属性 @f205720305272543052e3d689afdb5b8
- 查询值是CRProduct的第一条数据第2条的value属性 @1
- 查询研发界面中所有者是系统的第一条数据第3条的value属性 @1
- 查询研发界面中所属模块是custom的第一条数据第1条的value属性 @0
- 查询研发界面中附加条件是global的第一条数据第7条的value属性 @f205720305272543052e3d689afdb5b8
- 查询研发界面中值是CRProduct的第一条数据第2条的value属性 @1
- 查询所有者是系统并且所属模块是custom的第一条数据第1条的value属性 @0
- 查询所有者是系统并且附加条件是global的第一条数据第3条的value属性 @1
- 查询所有者是系统并且值是CRProduct的第一条数据第2条的value属性 @1
- 查询所有者是系统并且所属模块是common、附加条件是global的第一条数据第6条的value属性 @10.0
- 查询所有者是系统并且所属模块是common、值是CRProduct的第一条数据第3条的value属性 @1
- 查询所有者是系统并且所属模块是common、附加条件是global、值是version的第一条数据第6条的value属性 @10.0
- 查询所有者是admin并且所属模块是common、值是URSR的第一条数据第5条的value属性 @0
- 查询所有者是admin并且所属模块是my、附加条件是block、值是initVersion的第一条数据第4条的value属性 @0
- 查询不存在的界面配置 @0
- 查询不存在的所有者配置 @0
- 查询不存在的模块配置 @0
- 查询不存在的附加条件配置 @0
- 查询不存在的值配置 @0
*/
$setting = new settingTest();
global $tester;
$settingModel = $tester->loadModel('setting');
$items = array();
$items[0] = "";
$items[1] = "vision=rnd";
$items[2] = "owner=system";
$items[3] = "module=custom";
$items[4] = "section=global";
$items[5] = "key=CRProduct";
$items[6] = "vision=rnd&owner=system";
$items[7] = "vision=rnd&module=custom";
$items[8] = "vision=rnd&section=global";
$items[9] = "vision=rnd&key=CRProduct";
$items[10] = "owner=system&module=custom";
$items[11] = "owner=system&section=global";
$items[12] = "owner=system&key=CRProduct";
$items[13] = "owner=system&module=common&section=global";
$items[14] = "owner=system&module=common&key=CRExecution";
$items[15] = "owner=system&module=common&section=global&key=version";
$items[16] = "owner=admin&module=common&key=URSR";
$items[17] = "owner=admin&module=my&section=block&key=initVersion";
$items[18] = "vision=test";
$items[19] = "owner=test";
$items[20] = "module=test";
$items[21] = "section=test";
$items[22] = "key=test";
$items[1] = "key=key2";
$items[2] = "section=section3";
$items[3] = "module=story";
$items[4] = "owner=system";
$items[5] = "vision=lite";
r($setting->getItemsTest($items[0])) && p('1:value') && e('0'); // 查询所有数据中的第一条数据
r($setting->getItemsTest($items[1])) && p('1:value') && e('0'); // 查询所有者是系统的第一条数据
r($setting->getItemsTest($items[2])) && p('1:value') && e('0'); // 查询所有者是系统的第一条数据
r($setting->getItemsTest($items[3])) && p('1:value') && e('0'); // 查询所属模块是custom的第一条数据
r($setting->getItemsTest($items[4])) && p('7:value') && e('f205720305272543052e3d689afdb5b8'); // 查询附加条件是global的第一条数据
r($setting->getItemsTest($items[5])) && p('2:value') && e('1'); // 查询值是CRProduct的第一条数据
r($setting->getItemsTest($items[6])) && p('3:value') && e('1'); // 查询研发界面中所有者是系统的第一条数据
r($setting->getItemsTest($items[7])) && p('1:value') && e('0'); // 查询研发界面中所属模块是custom的第一条数据
r($setting->getItemsTest($items[8])) && p('7:value') && e('f205720305272543052e3d689afdb5b8'); // 查询研发界面中附加条件是global的第一条数据
r($setting->getItemsTest($items[9])) && p('2:value') && e('1'); // 查询研发界面中值是CRProduct的第一条数据
r($setting->getItemsTest($items[10])) && p('1:value') && e('0'); // 查询所有者是系统并且所属模块是custom的第一条数据
r($setting->getItemsTest($items[11])) && p('3:value') && e('1'); // 查询所有者是系统并且附加条件是global的第一条数据
r($setting->getItemsTest($items[12])) && p('2:value') && e('1'); // 查询所有者是系统并且值是CRProduct的第一条数据
r($setting->getItemsTest($items[13])) && p('6:value') && e('10.0'); // 查询所有者是系统并且所属模块是common、附加条件是global的第一条数据
r($setting->getItemsTest($items[14])) && p('3:value') && e('1'); // 查询所有者是系统并且所属模块是common、值是CRProduct的第一条数据
r($setting->getItemsTest($items[15])) && p('6:value') && e('10.0'); // 查询所有者是系统并且所属模块是common、附加条件是global、值是version的第一条数据
r($setting->getItemsTest($items[16])) && p('5:value') && e('0'); // 查询所有者是admin并且所属模块是common、值是URSR的第一条数据
r($setting->getItemsTest($items[17])) && p('4:value') && e('0'); // 查询所有者是admin并且所属模块是my、附加条件是block、值是initVersion的第一条数据
r($setting->getItemsTest($items[18])) && p() && e('0'); // 查询不存在的界面配置
r($setting->getItemsTest($items[19])) && p() && e('0'); // 查询不存在的所有者配置
r($setting->getItemsTest($items[20])) && p() && e('0'); // 查询不存在的模块配置
r($setting->getItemsTest($items[21])) && p() && e('0'); // 查询不存在的附加条件配置
r($setting->getItemsTest($items[22])) && p() && e('0'); // 查询不存在的值配置
r(count($settingModel->getItems($items[0]))) && p() && e('20'); // 查询所有数据的记录数
r($settingModel->getItems($items[1])) && p('2:value') && e('value2'); // 查询key条件的所有数据
r($settingModel->getItems($items[2])) && p('3:value') && e('value3'); // 查询section条件的所有数据
r(count($settingModel->getItems($items[3]))) && p() && e('7'); // 查询module条件的记录数
r(count($settingModel->getItems($items[4]))) && p() && e('10'); // 查询owner条件的记录数
r(count($settingModel->getItems($items[5]))) && p() && e('6'); // 查询vision条件的记录数
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/setting.class.php';
su('admin');
zdTable('config')->gen(20);
/**
title=测试 settingModel->updateItem.php();
cid=1
pid=1
*/
$setting = new settingTest();
r($setting->updateItemTest('key2', 'value20')) && p() && e('0'); //测试更新错误数据
r($setting->updateItemTest('system.story.section1.key1', 'value10')) && p('value') && e('value10'); //测试更新已存在数据
r($setting->updateItemTest('system.story.section1.key100@rnd', 'value100')) && p('vision,key,value') && e('rnd,key100,value100'); //测试更新不存在数据
+26 -35
View File
@@ -7,39 +7,6 @@ class settingTest
$this->objectModel = $tester->loadModel('setting');
}
/**
* Get value of an item.
*
* @param string $paramString see parseItemParam();
* @access public
* @return bool
*/
public function getItemTest($paramString)
{
$objects = $this->objectModel->getItem($paramString);
if(dao::isError()) return dao::getError();
if($objects or $objects === 0 or $objects === '0') return true;
return false;
}
/**
* Get some items.
*
* @param string $paramString see parseItemParam();
* @access public
* @return array|string
*/
public function getItemsTest($paramString)
{
$objects = $this->objectModel->getItems($paramString);
if(dao::isError()) return dao::getError();
return $objects;
}
/**
* Set value of an item.
*
@@ -91,6 +58,31 @@ class settingTest
return $result;
}
/**
* Test updateItem method.
*
* @param string $path
* @param string $value
* @access public
* @return object
*/
public function updateItemTest($path, $value = '')
{
$this->objectModel->updateItem($path, $value);
if(dao::isError()) return dao::getError();
/* Determine vision of config item. */
$item = $this->objectModel->parseItemPath($path);
if(empty($item)) return false;
$paramString = array();
foreach($item as $key => $value) $paramString[] = "{$key}={$value}";
$objects = $this->objectModel->getItems(implode('&', $paramString));
return array_pop($objects);
}
/**
* Delete items.
*
@@ -104,8 +96,7 @@ class settingTest
if(dao::isError()) return dao::getError();
$object = $this->getItemTest($paramString);
return $object;
return $this->objectModel->dao->select('count(*) as count')->from(TABLE_CONFIG)->fetch('count');
}
/**