From 1cc1c79f562ac032d3422de14734f2a8a1c35a02 Mon Sep 17 00:00:00 2001 From: Matthew Baggett Date: Wed, 18 Dec 2019 15:03:38 +0100 Subject: [PATCH] Add more sanitisation options --- src/Components/Model.php | 2 +- src/Zenderator.php | 24 +++++++++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/Components/Model.php b/src/Components/Model.php index a53ca64..a90f6c8 100755 --- a/src/Components/Model.php +++ b/src/Components/Model.php @@ -267,7 +267,7 @@ class Model extends Entity */ public function getTableSanitised() { - return $this->getZenderator()->sanitiseTableName($this->getTable()); + return $this->getZenderator()->sanitiseTableName($this->getTable(),$this->database); } /** diff --git a/src/Zenderator.php b/src/Zenderator.php index f40a211..51d46a4 100755 --- a/src/Zenderator.php +++ b/src/Zenderator.php @@ -283,10 +283,28 @@ class Zenderator throw new SchemaToAdaptorException("Could not translate {$schemaName} to an appropriate dbName"); } - public function sanitiseTableName($tableName) + public function sanitiseTableName($tableName, $database = 'default') { - if (isset($this->config['database'], $this->config['database']['remove_prefix'])) { - if (substr($tableName, 0, strlen($this->config['database']['remove_prefix'])) == $this->config['database']['remove_prefix']) { + # Take the Alias directly + if(self::$benzineConfig->has("benzine/databases/{$database}/table_options/{$tableName}/alias")){ + return self::$benzineConfig->get("benzine/databases/{$database}/table_options/{$tableName}/alias"); + } + + # Take the specific transformer next + if(self::$benzineConfig->has("benzine/databases/{$database}/table_options/{$tableName}/transform")){ + $transform = self::$benzineConfig->get("benzine/databases/{$database}/table_options/{$tableName}/transform"); + return $this->$transform->transform($tableName); + } + + # Take the shared transformer after that + if(self::$benzineConfig->has("benzine/databases/{$database}/table_options/_/transform")){ + $transform = self::$benzineConfig->get("benzine/databases/{$database}/table_options/_/transform"); + return $this->$transform->transform($tableName); + } + + # Simply remove the prefix + if (self::$benzineConfig->get("benzine/databases/remove_prefix")) { + if (substr($tableName, 0, strlen(self::$benzineConfig->get("benzine/databases/remove_prefix"))) == self::$benzineConfig->get("benzine/databases/remove_prefix")) { return substr($tableName, 2); } }