Test Failed
Pull Request — master (#59)
by
unknown
18:11
created

DbModelsCreator::fieldIsEmail()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 7
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 5
c 1
b 0
f 0
dl 0
loc 9
ccs 7
cts 7
cp 1
rs 10
cc 2
nc 2
nop 1
crap 2
1
<?php
2
namespace Ubiquity\orm\creator\database;
3
4
use Ubiquity\orm\creator\ModelsCreator;
5
6
7
class DbModelsCreator extends ModelsCreator{
8
	private $pdoObject;
9
10 1
	protected function init($config){
11 1
		parent::init($config);
12 1
		$this->connect($config["database"]);
13 1
	}
14
	/**
15
	 * Réalise la connexion à la base de données
16
	 */
17 1
	private function connect($config) {
18
		try {
19 1
			$this->pdoObject = new \PDO(
20 1
					$config["type"].':host=' . $config["serverName"] . ';dbname='
21 1
					. $config["dbName"] . ';port=' . $config["port"],
22 1
					$config["user"], $config["password"]);
23 1
			$this->pdoObject->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
24 1
			$this->pdoObject->exec("SET CHARACTER SET utf8");
25
26
		} catch (\PDOException $e) {
27
			print "Error!: " . $e->getMessage() . "<br/>";
28
		}
29 1
	}
30
31
32 1
	protected function getTablesName(){
33 1
		$sql = 'SHOW TABLES';
34 1
			$query = $this->pdoObject->query($sql);
35 1
			return $query->fetchAll(\PDO::FETCH_COLUMN);
36
	}
37
38 1
	protected function getFieldsInfos($tableName) {
39 1
		$fieldsInfos=array();
40 1
		$recordset = $this->pdoObject->query("SHOW COLUMNS FROM `{$tableName}`");
41 1
		$fields = $recordset->fetchAll(\PDO::FETCH_ASSOC);
42 1
		foreach ($fields as $field) {
43 1
            $fieldsInfos[$field['Field']] = ["Type" => $field['Type'], "Nullable" => $field["Null"], "Email" => $this->fieldIsEmail($field['Field'])];
44
		}
45 1
		return $fieldsInfos;
46
	}
47
48 1
    protected function fieldIsEmail($field)
49 1
    {
50 1
        $possibleColumnNames = array("email", "mail", "courrierelectronique", "ecourrier", "mailaddresse", "mailaddresse", "mailadress", "mailadresse");
51 1
        $res = false;
52 1
53 1
        if (in_array($field, $possibleColumnNames)) {
54
            $res = true;
55 1
        }
56
        return $res;
57
    }
58 1
59 1
	protected function getPrimaryKeys($tableName){
60
		$fieldkeys=array();
61
		$recordset = $this->pdoObject->query("SHOW KEYS FROM `{$tableName}` WHERE Key_name = 'PRIMARY'");
62
		$keys = $recordset->fetchAll(\PDO::FETCH_ASSOC);
63 1
		foreach ($keys as $key) {
64 1
			$fieldkeys[] = $key['Column_name'];
65 1
		}
66 1
		return $fieldkeys;
67
	}
68
69
	protected function getForeignKeys($tableName,$pkName){
70
		$recordset = $this->pdoObject->query("SELECT *
71
												FROM
72
												 information_schema.KEY_COLUMN_USAGE
73
												WHERE
74
												 REFERENCED_TABLE_NAME = '".$tableName."'
75
												 AND REFERENCED_COLUMN_NAME = '".$pkName."'
76
												 AND TABLE_SCHEMA = '".$this->config["dbName"]."';");
77
		return $recordset->fetchAll(\PDO::FETCH_ASSOC);
78
	}
79
}
80