1: <?php
2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
15:
16: defined('CON_FRAMEWORK') || die('Illegal call: Missing framework initialization - request aborted.');
17:
18: 19: 20: 21: 22: 23: 24:
25: class PimPluginCollection extends ItemCollection {
26:
27: 28: 29: 30: 31:
32: public function __construct() {
33: global $cfg;
34: parent::__construct($cfg['tab']['plugins'], 'idplugin');
35: $this->_setItemClass('PimPlugin');
36: }
37:
38: 39: 40: 41: 42:
43: public function create($name, $description, $author, $copyright, $mail, $website, $version, $foldername, $uuId, $active, $execOrder = 0) {
44: global $client;
45:
46: $nextId = $this->_getNextId();
47:
48:
49: $client = cSecurity::toInteger($client);
50: $name = cSecurity::escapeString($name);
51: $description = cSecurity::escapeString($description);
52: $author = cSecurity::escapeString($author);
53: $copyright = cSecurity::escapeString($copyright);
54: $mail = cSecurity::escapeString($mail);
55: $website = cSecurity::escapeString($website);
56: $version = cSecurity::escapeString($version);
57: $foldername = cSecurity::escapeString($foldername);
58: $uuId = cSecurity::escapeString($uuId);
59: $active = cSecurity::toInteger($active);
60:
61:
62: $item = parent::createNewItem($nextId);
63: $item->set('idclient', $client);
64: $item->set('name', $name);
65: $item->set('description', $description);
66: $item->set('author', $author);
67: $item->set('copyright', $copyright);
68: $item->set('mail', $mail);
69: $item->set('website', $website);
70: $item->set('version', $version);
71: $item->set('folder', $foldername);
72: $item->set('uuid', $uuId);
73: $item->set('installed', date("Y-m-d H:i:s"), false);
74: $item->set('active', $active);
75:
76:
77: if ($execOrder == 0) {
78: $this->select();
79: $execOrder = $this->count();
80: }
81: $item->set("executionorder", $execOrder);
82:
83: $item->store();
84:
85: return $item;
86: }
87:
88: 89: 90: 91: 92:
93: protected function _getNextId() {
94: global $cfg;
95:
96: $sql = 'SELECT MAX(idplugin) AS id FROM ' . $cfg['tab']['plugins'];
97: $this->db->query($sql);
98:
99: if ($this->db->nextRecord()) {
100:
101: $result = $this->db->f('id');
102:
103:
104: if ($result < 10000) {
105: $result = 10000;
106: }
107:
108:
109: $result = $result + 10;
110:
111:
112: $result = substr($result, 0, strlen($result) - 1);
113:
114:
115: return cSecurity::toInteger($result . 0);
116: }
117: }
118:
119: }
120:
121: 122: 123:
124: class PimPlugin extends Item {
125:
126: 127: 128:
129: protected $_error;
130:
131: 132: 133: 134: 135:
136: public function __construct($id = false) {
137: global $cfg;
138: parent::__construct($cfg['tab']['plugins'], 'idplugin');
139: $this->_error = '';
140: if ($id !== false) {
141: $this->loadByPrimaryKey($id);
142: }
143: }
144:
145: 146: 147: 148: 149:
150: public function updateExecOrder($newOrder) {
151: $oldOrder = $this->get('executionorder');
152: $idplugin = $this->get("idplugin");
153:
154: $this->set('executionorder', $newOrder);
155: $this->store();
156:
157:
158: $pluginColl = new PimPluginCollection();
159: $pluginColl->select('executionorder >= "' . min($newOrder, $oldOrder) . '" AND executionorder <= "' . max($newOrder, $oldOrder) . '" AND idplugin != "' . $idplugin . '"', NULL, 'executionorder');
160:
161: while ($plugin = $pluginColl->next()) {
162: if ($newOrder < $oldOrder) {
163: $plugin->set("executionorder", $plugin->get("executionorder") + 1);
164: $plugin->store();
165: } else if ($oldOrder < $newOrder) {
166: $plugin->set("executionorder", $plugin->get("executionorder") - 1);
167: $plugin->store();
168: }
169: }
170: }
171: }
172: