Skip to content

Commit 06fdc21

Browse files
authored
Merge pull request #56 from ggoffy/master
fixed bug in deleting table from fieldelements / added check for sql creation / delete fields if table is deleted
2 parents 68083b4 + 5d34fd4 commit 06fdc21

33 files changed

Lines changed: 82 additions & 3296 deletions

admin/fields.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@
6868
\redirect_header('tables.php?op=new', 2, _AM_MODULEBUILDER_THEREARENT_TABLES2);
6969
}
7070
// Get the list of tables
71-
$tablesAll = $helper->getHandler('Tables')->getAllTables($start, $limit, 'table_order');
71+
$tablesAll = $helper->getHandler('Tables')->getAllTables($start, $limit);
7272
if ($tablesCount > 0) {
7373
$tlid = 1;
7474
foreach (\array_keys($tablesAll) as $tid) {
@@ -78,7 +78,7 @@
7878
$table = array_merge($table, $talid);
7979
// Get the list of fields
8080
$fieldsCount = $helper->getHandler('Fields')->getCountFields();
81-
$fieldsAll = $helper->getHandler('Fields')->getAllFieldsByModuleAndTableId($table['mid'], $tid);
81+
$fieldsAll = $helper->getHandler('Fields')->getAllFieldsByTableId($tid);
8282
// Display fields list
8383
$fields = [];
8484
$lid = 1;

admin/tables.php

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@
194194
$fieldelementObj->setVar('fieldelement_tid', $tableTid);
195195
$fieldelementObj->setVar('fieldelement_name', 'Table : ' . \ucfirst(\Xmf\Request::getString('table_name', '', 'POST')));
196196
$fieldelementObj->setVar('fieldelement_value', 'XoopsFormTables-' . \ucfirst(\Xmf\Request::getString('table_name', '', 'POST')));
197+
$fieldelementObj->setVar('fieldelement_deftype', 2);
198+
$fieldelementObj->setVar('fieldelement_defvalue', 10);
197199
// Insert new field element id for table name
198200
if (!$helper->getHandler('Fieldelements')->insert($fieldelementObj)) {
199201
$GLOBALS['xoopsTpl']->assign('error', $fieldelementObj->getHtmlErrors() . ' Field element');
@@ -244,23 +246,33 @@
244246
if (!$GLOBALS['xoopsSecurity']->check()) {
245247
\redirect_header('tables.php', 3, \implode(',', $GLOBALS['xoopsSecurity']->getErrors()));
246248
}
249+
$fieldelements = $helper->getHandler('Fieldelements')->getAllFieldelementsByTableId($tableId);
247250
if ($helper->getHandler('Tables')->delete($tablesObj)) {
248-
// Delete items in table fieldelements - idea by goffy
249-
$fieldelements = $helper->getHandler('Fieldelements')->getAllFieldelementsByModuleAndTableId($tableMid, $tableId);
251+
// Delete items in table fieldelements
252+
$fieldelements = $helper->getHandler('Fieldelements')->getAllFieldelementsByTableId($tableId);
250253
foreach (\array_keys($fieldelements) as $fe) {
251254
$fieldElementsObj = $helper->getHandler('Fieldelements')->get($fieldelements[$fe]->getVar('fieldelement_id'));
252255
if (!$helper->getHandler('Fieldelements')->delete($fieldElementsObj)) {
253256
$GLOBALS['xoopsTpl']->assign('error', $fieldElementsObj->getHtmlErrors());
254257
}
255258
unset($fieldElementsObj);
256259
}
260+
// Delete items in table fields
261+
$fields = $helper->getHandler('Fields')->getAllFieldsByTableId($tableId);
262+
foreach (\array_keys($fields) as $fd) {
263+
$fieldsObj = $helper->getHandler('Fields')->get($fields[$fd]->getVar('field_id'));
264+
if (!$helper->getHandler('Fields')->delete($fieldsObj)) {
265+
$GLOBALS['xoopsTpl']->assign('error', $fieldsObj->getHtmlErrors());
266+
}
267+
unset($fieldElementsObj);
268+
}
257269
\redirect_header('tables.php', 3, _AM_MODULEBUILDER_FORMDELOK);
258270
} else {
259271
$GLOBALS['xoopsTpl']->assign('error', $tablesObj->getHtmlErrors());
260272
}
261273
} else {
262274
$xoopsconfirm = new \XoopsModules\Modulebuilder\Common\XoopsConfirm(
263-
['ok' => 1, 'table_id' => $tableId, 'op' => 'delete'],
275+
['ok' => 1, 'table_id' => $tableId, 'table_mid' => $tableMid, 'op' => 'delete'],
264276
\Xmf\Request::getString('REQUEST_URI', '', 'SERVER'),
265277
$tablesObj->getVar('table_name')
266278
);

assets/images/logos/empty.png

2.65 KB
Loading
1.71 KB
Loading

class/FieldelementsHandler.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,18 +89,16 @@ public function getAllFieldelements($start = 0, $limit = 0, $sort = 'fieldelemen
8989

9090
/**
9191
* Get All Fields By Module & Table Id.
92-
* @param $modId
9392
* @param $tabId
9493
* @param int $start
9594
* @param int $limit
9695
* @param string $sort
9796
* @param string $order
9897
* @return array
9998
*/
100-
public function getAllFieldelementsByModuleAndTableId($modId, $tabId, $start = 0, $limit = 0, $sort = 'fieldelement_id ASC, fieldelement_name', $order = 'ASC')
99+
public function getAllFieldelementsByTableId($tabId, $start = 0, $limit = 0, $sort = 'fieldelement_id ASC, fieldelement_name', $order = 'ASC')
101100
{
102101
$crAllFieldElemsByModule = new \CriteriaCompo();
103-
$crAllFieldElemsByModule->add(new \Criteria('fieldelement_mid', $modId));
104102
$crAllFieldElemsByModule->add(new \Criteria('fieldelement_tid', $tabId));
105103
$crAllFieldElemsByModule = $this->getFieldelementsCriteria($crAllFieldElemsByModule, $start, $limit, $sort, $order);
106104

class/FieldsHandler.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,18 +110,16 @@ public function getAllFields($start = 0, $limit = 0, $sort = 'field_id ASC, fiel
110110

111111
/**
112112
* Get All Fields By Module & Table Id.
113-
* @param $modId
114113
* @param $tabId
115114
* @param int $start
116115
* @param int $limit
117116
* @param string $sort
118117
* @param string $order
119118
* @return array
120119
*/
121-
public function getAllFieldsByModuleAndTableId($modId, $tabId, $start = 0, $limit = 0, $sort = 'field_order ASC, field_id, field_name', $order = 'ASC')
120+
public function getAllFieldsByTableId($tabId, $start = 0, $limit = 0, $sort = 'field_order ASC, field_id, field_name', $order = 'ASC')
122121
{
123122
$crAllFieldsByModule = new \CriteriaCompo();
124-
$crAllFieldsByModule->add(new \Criteria('field_mid', $modId));
125123
$crAllFieldsByModule->add(new \Criteria('field_tid', $tabId));
126124
$crAllFieldsByModule = $this->getFieldsCriteria($crAllFieldsByModule, $start, $limit, $sort, $order);
127125

class/Files/CheckData.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ public function getCheckPreBuilding($module)
9797
$this->getCheckComments();
9898
$this->getCheckUserpage();
9999
$this->getCheckRating();
100+
$this->getCheckSQL();
100101

101102
return $this->infos;
102103
}
@@ -362,4 +363,36 @@ private function getCheckRating()
362363

363364
return true;
364365
}
366+
367+
/**
368+
* @private function getCheckSql
369+
*
370+
* @return array|bool
371+
*/
372+
private function getCheckSql()
373+
{
374+
foreach (\array_keys($this->tables) as $t) {
375+
$tableId = $this->tables[$t]->getVar('table_id');
376+
$tableName = $this->tables[$t]->getVar('table_name');
377+
$fields = $this->cf->getTableFields($this->modId, $tableId);
378+
foreach (\array_keys($fields) as $f) {
379+
$fieldName = $fields[$f]->getVar('field_name');
380+
$fieldType = $fields[$f]->getVar('field_type');
381+
if (6 == $fieldType || 7 == $fieldType || 8 == $fieldType) {
382+
$fieldValue = $fields[$f]->getVar('field_value');
383+
if (0 == \strpos($fieldValue,',')) {
384+
$info = \str_replace(['%f', '%t'], [$fieldName, $tableName], _AM_MODULEBUILDER_BUILDING_CHECK_SQL1);
385+
$this->infos[] = ['icon' => 'error', 'info' => $info];
386+
}
387+
$fieldDefault = $fields[$f]->getVar('field_default');
388+
if (0 == \strpos($fieldDefault,'.')) {
389+
$info = \str_replace(['%f', '%t'], [$fieldName, $tableName], _AM_MODULEBUILDER_BUILDING_CHECK_SQL2);
390+
$this->infos[] = ['icon' => 'warning', 'info' => $info];
391+
}
392+
}
393+
}
394+
}
395+
396+
return true;
397+
}
365398
}

class/Files/Language/LanguageModinfo.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ private function getLanguageSubmenu($language, $tables)
170170
{
171171
$ret = $this->ld->getAboveDefines('Submenu');
172172
$ret .= $this->ld->getDefine($language, 'SMNAME1', 'Index page');
173-
$i = 1;
173+
$i = 2;
174174
$tableSubmit = [];
175175
$tableSearch = [];
176176
foreach (\array_keys($tables) as $t) {

class/Files/User/UserXoopsVersion.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,7 @@ private function getXoopsVersionSubmenu($language, $tables)
415415
'url' => "'index.php'",
416416
];
417417
$contentIf = $this->uxc->getUserModVersionArray(2, $descriptions, 'sub', '','', "\t");
418+
++$i;
418419

419420
$tableSearch = [];
420421
foreach (\array_keys($tables) as $t) {

class/Tables.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,10 +245,16 @@ public function getFormTables($action = false)
245245
*/
246246
public function getValuesTables($keys = null, $format = null, $maxDepth = null)
247247
{
248+
$helper = Modulebuilder\Helper::getInstance();
249+
248250
$ret = $this->getValues($keys, $format, $maxDepth);
249251
// Values
250252
$ret['id'] = $this->getVar('table_id');
251253
$ret['mid'] = $this->getVar('table_mid');
254+
$modulesObj = $helper->getHandler('Modules')->get($ret['mid']);
255+
if (\is_object($modulesObj)) {
256+
$ret['module'] = $modulesObj->getVar('mod_name');
257+
}
252258
$ret['name'] = \ucfirst($this->getVar('table_name'));
253259
$ret['image'] = $this->getVar('table_image');
254260
$ret['nbfields'] = $this->getVar('table_nbfields');

0 commit comments

Comments
 (0)