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: cInclude('includes', 'functions.con.php');
19: cInclude('includes', 'functions.str.php');
20:
21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
31: function langEditLanguage($idlang, $langname, $encoding, $active, $direction = 'ltr') {
32: $oLang = new cApiLanguage();
33: if ($oLang->loadByPrimaryKey((int) $idlang)) {
34: $oLang->set('name', $oLang->escape($langname), false);
35: $oLang->set('encoding', $oLang->escape($encoding), false);
36: $oLang->set('active', (int) $active, false);
37: $oLang->set('direction', $oLang->escape($direction), false);
38: return $oLang->store();
39: }
40: return false;
41: }
42:
43: 44: 45: 46: 47: 48: 49:
50: function langNewLanguage($name, $client) {
51: global $cfgClient, $notification;
52:
53:
54: $oLangCol = new cApiLanguageCollection();
55: $oLangItem = $oLangCol->create($name, 0, 'iso-8859-1', 'ltr');
56:
57: $oClientLangCol = new cApiClientLanguageCollection();
58: $oClientLangItem = $oClientLangCol->create($client, $oLangItem->get('idlang'));
59:
60:
61: $destPath = $cfgClient[$client]['config']['path'];
62:
63: if (cFileHandler::exists($destPath) && cFileHandler::exists($destPath . 'config.php')) {
64: $buffer = cFileHandler::read($destPath . 'config.php');
65: $outbuf = str_replace('!LANG!', $oLangItem->get('idlang'), $buffer);
66: cFileHandler::write($destPath . 'config.php.new', $outbuf);
67: if (cFileHandler::exists($destPath . 'config.php')) {
68: cFileHandler::remove($destPath . 'config.php');
69: }
70:
71: cFileHandler::rename($destPath . 'config.php.new', 'config.php');
72: } else {
73: $notification->displayNotification('error', i18n("Could not set the language-ID in the file 'config.php'. Please set the language manually."));
74: }
75:
76: return $oLangItem->get('idlang');
77: }
78:
79: 80: 81: 82: 83: 84: 85:
86: function langRenameLanguage($idlang, $name) {
87: $oLang = new cApiLanguage();
88: if ($oLang->loadByPrimaryKey((int) $idlang)) {
89: $oLang->set('name', $oLang->escape($name), false);
90: return $oLang->store();
91: }
92: return false;
93: }
94:
95: 96: 97: 98: 99: 100:
101: function langDeleteLanguage($iIdLang, $iIdClient = 0) {
102: global $db, $sess, $client, $cfg, $notification, $cfgClient;
103:
104: $deleteok = 1;
105: $iIdLang = (int) $iIdLang;
106: $iIdClient = (int) $iIdClient;
107:
108:
109:
110:
111:
112:
113: if ($iIdClient == 0) {
114: $iIdClient = $client;
115: }
116:
117:
118: $sql = "SELECT * FROM " . $cfg['tab']['art_lang'] . " AS A, " . $cfg['tab']['art'] . " AS B " . "WHERE A.idart=B.idart AND B.idclient=" . $iIdClient . " AND A.idlang=" . $iIdLang;
119: $db->query($sql);
120: if ($db->nextRecord()) {
121: conDeleteArt($db->f('idart'));
122: }
123:
124:
125: $sql = "SELECT * FROM " . $cfg['tab']['cat_lang'] . " AS A, " . $cfg['tab']['cat'] . " AS B " . "WHERE A.idcat=B.idcat AND B.idclient=" . $iIdClient . " AND A.idlang=" . $iIdLang;
126: $db->query($sql);
127: if ($db->nextRecord()) {
128: strDeleteCategory($db->f('idcat'));
129: }
130:
131: $aIdArtLang = array();
132: $aIdArt = array();
133: $aIdCatLang = array();
134: $aIdCat = array();
135: $aIdTplCfg = array();
136:
137: if ($deleteok == 1) {
138:
139:
140: $lastlanguage = 0;
141: $sql = "SELECT COUNT(*) FROM " . $cfg['tab']['clients_lang'] . " WHERE idclient=" . $iIdClient;
142: $db->query($sql);
143: $db->nextRecord();
144: if ($db->f(0) == 1) {
145: $lastlanguage = 1;
146: }
147:
148:
149: $sql = "SELECT A.idtplcfg AS idtplcfg, idartlang, A.idart FROM " . $cfg['tab']['art_lang'] . " AS A, " . $cfg['tab']['art'] . " AS B WHERE A.idart=B.idart AND B.idclient=" . $iIdClient . "
150: AND idlang!=0 AND idlang=" . $iIdLang;
151: $db->query($sql);
152: while ($db->nextRecord()) {
153: $aIdArtLang[] = $db->f('idartlang');
154: $aIdArt[] = $db->f('idart');
155: $aIdTplCfg[] = $db->f('idtplcfg');
156: }
157: foreach ($aIdArtLang as $value) {
158: $value = (int) $value;
159: $sql = "DELETE FROM " . $cfg['tab']['art_lang'] . " WHERE idartlang=" . $value;
160: $db->query($sql);
161: $sql = "DELETE FROM " . $cfg['tab']['content'] . " WHERE idartlang=" . $value;
162: $db->query($sql);
163: }
164:
165: if ($lastlanguage == 1) {
166: foreach ($aIdArt as $value) {
167: $value = (int) $value;
168: $sql = "DELETE FROM " . $cfg['tab']['art'] . " WHERE idart=" . $value;
169: $db->query($sql);
170: $sql = "DELETE FROM " . $cfg['tab']['cat_art'] . " WHERE idart=" . $value;
171: $db->query($sql);
172: }
173: }
174:
175:
176: $sql = "SELECT A.idtplcfg AS idtplcfg, idcatlang, A.idcat FROM " . $cfg['tab']['cat_lang'] . " AS A, " . $cfg['tab']['cat'] . " AS B WHERE A.idcat=B.idcat AND B.idclient=" . $iIdClient . "
177: AND idlang!=0 AND idlang=" . $iIdLang;
178: $db->query($sql);
179: while ($db->nextRecord()) {
180: $aIdCatLang[] = $db->f('idcatlang');
181: $aIdCat[] = $db->f('idcat');
182: $aIdTplCfg[] = $db->f('idtplcfg');
183: }
184: foreach ($aIdCatLang as $value) {
185: $sql = "DELETE FROM " . $cfg['tab']['cat_lang'] . " WHERE idcatlang=" . (int) $value;
186: $db->query($sql);
187: }
188: if ($lastlanguage == 1) {
189: foreach ($aIdCat as $value) {
190: $value = (int) $value;
191: $sql = "DELETE FROM " . $cfg['tab']['cat'] . " WHERE idcat=" . $value;
192: $db->query($sql);
193: $sql = "DELETE FROM " . $cfg['tab']["cat_tree"] . " WHERE idcat=" . $value;
194: $db->query($sql);
195: }
196: }
197:
198:
199: $sql = "DELETE FROM " . $cfg['tab']['stat'] . " WHERE idlang=" . $iIdLang . " AND idclient=" . $iIdClient;
200: $db->query($sql);
201:
202:
203: if (cFileHandler::exists($cfgClient[$iIdClient]['code']['path'])) {
204:
205: foreach (new DirectoryIterator($cfgClient[$iIdClient]['code']['path']) as $file) {
206: if ($file->isFile() === false) {
207: continue;
208: }
209:
210: $extension = substr($file, strrpos($file->getBasename(), '.') + 1);
211: if ($extension != 'php') {
212: continue;
213: }
214:
215: if (preg_match('/' . $iIdClient . '.' . $iIdLang . '.[0-9*]/s', $file->getBasename())) {
216: cFileHandler::remove($cfgClient[$iIdClient]['code']['path'] . '/' . $file->getFilename());
217: }
218: }
219: }
220:
221: foreach ($aIdTplCfg as $tplcfg) {
222: $tplcfg = (int) $tplcfg;
223: if ($tplcfg != 0) {
224:
225: $sql = "DELETE FROM " . $cfg['tab']['tpl_conf'] . " WHERE idtplcfg=" . $tplcfg;
226: $db->query($sql);
227:
228: $sql = "DELETE FROM " . $cfg['tab']['container_conf'] . " WHERE idtplcfg=" . $tplcfg;
229: $db->query($sql);
230: }
231: }
232:
233:
234: $sql = "DELETE FROM " . $cfg['tab']['clients_lang'] . " WHERE idclient=" . $iIdClient . " AND idlang=" . $iIdLang;
235: $db->query($sql);
236:
237:
238: $sql = "DELETE FROM " . $cfg['tab']['lang'] . " WHERE idlang=" . $iIdLang;
239: $db->query($sql);
240:
241:
242: $oPropertyColl = new cApiPropertyCollection($iIdClient);
243: $oPropertyColl->deleteProperties('idlang', $iIdLang);
244: } else {
245: return $notification->returnMessageBox('error', i18n("Could not delete language"), 0);
246: }
247: }
248:
249: 250: 251: 252: 253: 254: 255:
256: function langActivateDeactivateLanguage($idlang, $active) {
257: $oLang = new cApiLanguage();
258: if ($oLang->loadByPrimaryKey((int) $idlang)) {
259: $oLang->set('active', (int) $active, false);
260: return $oLang->store();
261: }
262: return false;
263: }
264:
265: 266: 267: 268: 269: 270: 271: 272:
273: function langGetTextDirection($idlang, $db = NULL) {
274: static $oLang;
275: if (!isset($oLang)) {
276: $oLang = new cApiLanguage();
277: }
278: $direction = '';
279: if ($oLang->loadByPrimaryKey((int) $idlang)) {
280: $direction = $oLang->get('direction');
281: }
282: if ($direction != 'ltr' && $direction != 'rtl') {
283: $direction = 'ltr';
284: }
285: return $direction;
286: }
287:
288: ?>