Add more sanitisation options

This commit is contained in:
Greyscale 2019-12-18 15:03:38 +01:00
parent 159a52b8a1
commit 1cc1c79f56
2 changed files with 22 additions and 4 deletions

View file

@ -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);
}
/**

View file

@ -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);
}
}