-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTinydbSetting.php
More file actions
116 lines (102 loc) · 2.56 KB
/
TinydbSetting.php
File metadata and controls
116 lines (102 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
<?php
/**
* TinydbSetting Model
*
* @property Block $Block
*
* @author Noriko Arai <arai@nii.ac.jp>
* @author Shohei Nakajima <nakajimashouhei@gmail.com>
* @link http://www.netcommons.org NetCommons Project
* @license http://www.netcommons.org/license.txt NetCommons License
* @copyright Copyright 2014, NetCommons Project
*/
App::uses('BlockBaseModel', 'Blocks.Model');
App::uses('BlockSettingBehavior', 'Blocks.Model/Behavior');
/**
* TinydbSetting Model
*
* @author Shohei Nakajima <nakajimashouhei@gmail.com>
* @package NetCommons\Tinydb\Model
*/
class TinydbSetting extends BlockBaseModel {
/**
* Custom database table name
*
* @var string
*/
public $useTable = false;
/**
* Validation rules
*
* @var array
*/
public $validate = array();
/**
* use behaviors
*
* @var array
*/
public $actsAs = array(
'Blocks.BlockRolePermission',
'Blocks.BlockSetting' => array(
BlockSettingBehavior::FIELD_USE_WORKFLOW,
BlockSettingBehavior::FIELD_USE_LIKE,
BlockSettingBehavior::FIELD_USE_UNLIKE,
BlockSettingBehavior::FIELD_USE_COMMENT,
BlockSettingBehavior::FIELD_USE_COMMENT_APPROVAL,
'use_sns'
),
);
/**
* TinydbSetting constructor.
*
* @param bool|int|string|array $id Set this ID for this model on startup,
* can also be an array of options, see above.
* @param string|false $table Name of database table to use.
* @param string $ds DataSource connection name.
* @SuppressWarnings(PHPMD.BooleanArgumentFlag)
*/
public function __construct($id = false, $table = null, $ds = null) {
$dbTypeInstance = \NetCommons\Tinydb\Lib\CurrentDbType::instance();
if ($dbTypeInstance) {
$this->plugin = $dbTypeInstance->getDbType();
}
parent::__construct($id, $table, $ds);
}
/**
* Get tinydb setting data
*
* @return array
* @see BlockSettingBehavior::getBlockSetting()
*/
public function getTinydbSetting() {
return $this->getBlockSetting();
}
/**
* Save tinydb_setting
*
* @param array $data received post data
* @return mixed On success Model::$data if its not empty or true, false on failure
* @throws InternalErrorException
*/
public function saveTinydbSetting($data) {
//トランザクションBegin
$this->begin();
//バリデーション
$this->set($data);
if (! $this->validates()) {
$this->rollback();
return false;
}
try {
// useTable = falseでsaveすると必ずfalseになるので、throwしない
$this->save(null, false);
//トランザクションCommit
$this->commit();
} catch (Exception $ex) {
//トランザクションRollback
$this->rollback($ex);
}
return true;
}
}