Skip to content
This repository was archived by the owner on Nov 25, 2020. It is now read-only.

Commit 697cc7e

Browse files
committed
Fix Mysql access driver
1 parent c9c0ca3 commit 697cc7e

File tree

4 files changed

+46
-19
lines changed

4 files changed

+46
-19
lines changed

core/src/plugins/access.mysql/MysqlAccessDriver.php

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,9 @@ public function switchAction(ServerRequestInterface $requestInterface, ResponseI
137137
case "edit_record";
138138

139139
$isNew = false;
140-
if(isSet($record_is_new) && $record_is_new == "true") $isNew = true;
140+
if(isSet($httpVars['record_is_new']) && $httpVars['record_is_new'] == "true") {
141+
$isNew = true;
142+
}
141143
$tableName = $httpVars["table_name"];
142144
$pkName = $httpVars["pk_name"];
143145
$arrValues = array();
@@ -147,16 +149,19 @@ public function switchAction(ServerRequestInterface $requestInterface, ResponseI
147149
$arrValues[$newKey] = $value;
148150
}
149151
}
152+
$autoKey = $this->findTableAutoIncrementKey($ctx, $tableName);
150153
if ($isNew) {
151-
$string = "";
154+
$values = [];
152155
$index = 0;
153156
foreach ($arrValues as $k=>$v) {
154-
// CHECK IF AUTO KEY!!!
155-
$string .= "'".addslashes($v)."'";
156-
if($index < count($arrValues)-1) $string.=",";
157+
if($autoKey !== false && $k === $autoKey){
158+
$values[] = 'NULL';
159+
}else{
160+
$values []= "'".addslashes($v)."'";
161+
}
157162
$index++;
158163
}
159-
$query = "INSERT INTO $tableName VALUES ($string)";
164+
$query = "INSERT INTO `$tableName` VALUES (".implode(",", $values).")";
160165
} else {
161166
$string = "";
162167
$index = 0;
@@ -170,7 +175,7 @@ public function switchAction(ServerRequestInterface $requestInterface, ResponseI
170175
$index++;
171176
}
172177
if(!isSet($pkValue)) throw new PydioException("Cannot find PK Value");
173-
$query = "UPDATE $tableName SET $string WHERE $pkName='$pkValue'";
178+
$query = "UPDATE `$tableName` SET $string WHERE $pkName='$pkValue'";
174179
}
175180
$this->execQuery($ctx, $query);
176181
$logMessage = $query;
@@ -183,6 +188,7 @@ public function switchAction(ServerRequestInterface $requestInterface, ResponseI
183188
//------------------------------------
184189
case "edit_table":
185190
if (isSet($httpVars["current_table"])) {
191+
$current_table = InputFilter::sanitize($httpVars["current_table"], InputFilter::SANITIZE_ALPHANUM);
186192
if (isSet($httpVars["delete_column"])) {
187193
$query = "ALTER TABLE ".$httpVars["current_table"]." DROP COLUMN ".$httpVars["delete_column"];
188194
$this->execQuery($ctx, $query);
@@ -192,7 +198,7 @@ public function switchAction(ServerRequestInterface $requestInterface, ResponseI
192198
}
193199
if (isSet($httpVars["add_column"])) {
194200
$defString = $this->makeColumnDef($httpVars, "add_field_");
195-
$query = "ALTER TABLE ".$httpVars["current_table"]." ADD COLUMN ($defString)";
201+
$query = "ALTER TABLE `".$current_table."` ADD COLUMN ($defString)";
196202
if (isSet($httpVars["add_field_pk"]) && $httpVars["add_field_pk"]=="1") {
197203
$query.= ", ADD PRIMARY KEY (".$httpVars["add_field_name"].")";
198204
}
@@ -232,7 +238,8 @@ public function switchAction(ServerRequestInterface $requestInterface, ResponseI
232238
$reload_file_list = true;
233239
}
234240
$logMessage = $qMessage;
235-
} else if (isSet($new_table)) {
241+
} else if (isSet($httpVars["new_table"])) {
242+
$new_table = InputFilter::sanitize($httpVars["new_table"], InputFilter::SANITIZE_ALPHANUM);
236243
$fieldsDef = array();
237244
$pks = array();
238245
$indexes = array();
@@ -261,6 +268,7 @@ public function switchAction(ServerRequestInterface $requestInterface, ResponseI
261268
$reload_file_list = true;
262269
$reload_current_node = true;
263270
}
271+
264272
break;
265273

266274
//------------------------------------
@@ -593,6 +601,25 @@ public function listTables(ContextInterface $ctx)
593601
return $allTables;
594602
}
595603

604+
/**
605+
* Find autoincrement key
606+
* @param ContextInterface $ctx
607+
* @param $tablename
608+
* @return bool
609+
* @throws PydioException
610+
*/
611+
public function findTableAutoIncrementKey(ContextInterface $ctx, $tablename){
612+
613+
$result = $this->execQuery($ctx, "SELECT * from `$tablename` LIMIT 0,1");
614+
$fields = mysqli_fetch_fields($result);
615+
foreach($fields as $field){
616+
if($field->flags & MYSQLI_AUTO_INCREMENT_FLAG){
617+
return $field->name;
618+
}
619+
}
620+
return false;
621+
}
622+
596623
/**
597624
* @param ContextInterface $ctx
598625
* @param $query
@@ -673,7 +700,7 @@ public function showRecords(ContextInterface $ctx, $query, $tablename, $currentP
673700
}
674701

675702
// MAKE ROWS RESULT
676-
for ($s=0; $s < $rpp; $s++) {
703+
for ($s=0; $s < min($rpp, mysqli_num_rows($result)); $s++) {
677704
$row=mysqli_fetch_array($result);
678705
if (!isset($pk)) {
679706
$pk=' ';

core/src/plugins/access.mysql/manifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
<html><![CDATA[
4646
<div style="padding:10px;">
4747
<big style="font-weight: bold; font-size: 14px; color:#79f;display: block; text-align:center; padding-bottom:20px;">#{text}</big>
48-
<div><b>#{files_string}</b> : #{count}</div>
48+
<div>#{files_string} : #{count}</div>
4949
</div>
5050
]]></html>
5151
</infoPanel>

core/src/plugins/access.mysql/mysqlActions.xml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@
5050
<serverCallback methodName="switchAction"></serverCallback>
5151
</processing>
5252
</action>
53-
<action name="mkdir">
54-
<gui text="sql.1" title="sql.1" src="sql_images/actions/ICON_SIZE/table_new.png" accessKey="folder_access_key" hasAccessKey="false">
53+
<action name="mktable">
54+
<gui text="sql.1" title="sql.1" iconClass="mdi mdi-folder-plus" accessKey="folder_access_key" hasAccessKey="false">
5555
<context selection="false" dir="true" recycle="hidden" actionBar="true" contextMenu="true" infoPanel="false" actionBarGroup="put" inZip="false"/>
5656
</gui>
5757
<rightsContext noUser="true" userLogged="only" read="true" write="true" adminOnly=""/>
@@ -70,10 +70,10 @@
7070
</processing>
7171
</action>
7272
<action name="mkfile">
73-
<gui text="273" title="274" src="sql_images/actions/ICON_SIZE/table_record_new.png" accessKey="file_access_key" hasAccessKey="false">
73+
<gui text="273" title="274" iconClass="mdi mdi-file" accessKey="file_access_key" hasAccessKey="false">
7474
<context selection="false" dir="true" recycle="hidden"
7575
actionBar="true" contextMenu="true" infoPanel="false"
76-
actionBarGroup="change" inZip="false" root="false">
76+
actionBarGroup="put" inZip="false" root="false">
7777
</context></gui>
7878
<rightsContext noUser="true" userLogged="only" read="true" write="true" adminOnly=""></rightsContext>
7979
<processing>
@@ -97,7 +97,7 @@
9797
<gui text="269" title="270" src="sql_images/actions/ICON_SIZE/table_edit.png" accessKey="edit_access_key" hasAccessKey="false">
9898
<context selection="false" dir="true" recycle="hidden"
9999
actionBar="true" contextMenu="true" infoPanel="true"
100-
actionBarGroup="put" inZip="false" root="false">
100+
actionBarGroup="change_main" inZip="false" root="false">
101101
</context>
102102
<selectionContext dir="true" file="true" recycle="false" unique="true" allowedMimes="pk" behaviour="hidden"></selectionContext></gui>
103103
<rightsContext noUser="true" userLogged="only" read="true" write="true" adminOnly=""></rightsContext>
@@ -235,10 +235,10 @@
235235
</processing>
236236
</action>
237237
<action name="delete_table">
238-
<gui text="271" title="272" src="sql_images/actions/ICON_SIZE/table_delete.png" accessKey="delete_access_key" hasAccessKey="false" specialAccessKey="delete">
238+
<gui text="271" title="272" src="sql_images/actions/ICON_SIZE/table_delete.png" iconClass="icon-trash" accessKey="delete_access_key" hasAccessKey="false" specialAccessKey="delete">
239239
<context selection="true" dir="true" recycle="false"
240240
actionBar="true" contextMenu="true" infoPanel="false"
241-
actionBarGroup="put" inZip="false">
241+
actionBarGroup="change_main" inZip="false">
242242
</context>
243243
<selectionContext dir="true" file="false" recycle="false" unique="false" allowedMimes="*" behaviour="hidden"></selectionContext></gui>
244244
<rightsContext noUser="true" userLogged="only" read="true" write="true" adminOnly=""></rightsContext>

core/src/plugins/access.mysql/resources/js/class.SQLEditor.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ Class.create("SQLEditor", {
198198
addTable.select('td[new="false"]')[0].setStyle({width:'40px'});
199199
var addRow = addTable.select('tbody tr')[0];
200200
var addButton = new Element('input', {type:'button', value:'Add', className:'dialogButton'});
201-
var submitDiv = new Element('div', {className:'dialogButtons'}).insert(addButton);
201+
var submitDiv = new Element('div', {className:''}).insert(addButton);
202202
var submitRow = new Element('tr').insert(new Element('td', {colspan:"9"}).insert(submitDiv));
203203
addRow.insert({after:submitRow});
204204
addButton.observe('click', function(e){

0 commit comments

Comments
 (0)