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:
94: protected function _getNextId() {
95: global $cfg;
96:
97: $sql = 'SELECT MAX(idplugin) AS id FROM ' . $cfg['tab']['plugins'];
98: $this->db->query($sql);
99:
100: if ($this->db->nextRecord()) {
101:
102: $result = $this->db->f('id');
103:
104:
105: if ($result < 10000) {
106: $result = 10000;
107: }
108:
109:
110: $result = $result + 10;
111:
112:
113: $result = substr($result, 0, strlen($result) - 1);
114:
115:
116: return cSecurity::toInteger($result . 0);
117: }
118: }
119:
120: }
121:
122: 123: 124:
125: class PimPlugin extends Item {
126:
127: 128: 129: 130: 131:
132: protected $_error;
133:
134: 135: 136: 137: 138:
139: public function __construct($id = false) {
140: global $cfg;
141: parent::__construct($cfg['tab']['plugins'], 'idplugin');
142: $this->_error = '';
143: if ($id !== false) {
144: $this->loadByPrimaryKey($id);
145: }
146: }
147:
148: 149: 150: 151: 152:
153: public function updateExecOrder($newOrder) {
154: $oldOrder = $this->get('executionorder');
155: $idplugin = $this->get("idplugin");
156:
157: $this->set('executionorder', $newOrder);
158: $this->store();
159:
160:
161: $pluginColl = new PimPluginCollection();
162: $pluginColl->select('executionorder >= "' . min($newOrder, $oldOrder) . '" AND executionorder <= "' . max($newOrder, $oldOrder) . '" AND idplugin != "' . $idplugin . '"', NULL, 'executionorder');
163:
164: while ($plugin = $pluginColl->next()) {
165: if ($newOrder < $oldOrder) {
166: $plugin->set("executionorder", $plugin->get("executionorder") + 1);
167: $plugin->store();
168: } else if ($oldOrder < $newOrder) {
169: $plugin->set("executionorder", $plugin->get("executionorder") - 1);
170: $plugin->store();
171: }
172: }
173: }
174: }
175: