andela-iadeniyi /
Potato-ORM
This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
| 1 | <?php |
||
| 2 | /** |
||
| 3 | * SugarORM\Schema manages the creation of database table. |
||
| 4 | * |
||
| 5 | * @package Ibonly\SugarORM\Schema |
||
| 6 | * @author Ibraheem ADENIYI <[email protected]> |
||
| 7 | * @license MIT <https://opensource.org/licenses/MIT> |
||
| 8 | */ |
||
| 9 | |||
| 10 | namespace Ibonly\PotatoORM; |
||
| 11 | |||
| 12 | use PDOException; |
||
| 13 | use Ibonly\PotatoORM\DatabaseQuery; |
||
| 14 | use Ibonly\PotatoORM\SchemaInterface; |
||
| 15 | |||
| 16 | class Schema extends DatabaseQuery implements SchemaInterface |
||
| 17 | { |
||
| 18 | //Inject the inflector trait |
||
| 19 | use Inflector; |
||
| 20 | |||
| 21 | protected $fieldDescription = []; |
||
| 22 | |||
| 23 | /** |
||
| 24 | * field(arguments) contains the sql field statement |
||
| 25 | * |
||
| 26 | * @return array |
||
| 27 | */ |
||
| 28 | public function field($type, $fieldName, $length=NULL) |
||
| 29 | { |
||
| 30 | if($length === null){ |
||
| 31 | $this->fieldDescription[] = $type ." ".$fieldName; |
||
| 32 | }else |
||
| 33 | { |
||
| 34 | $this->fieldDescription[] = $type ." ".$fieldName." ".$length; |
||
| 35 | } |
||
| 36 | |||
| 37 | } |
||
| 38 | |||
| 39 | /** |
||
| 40 | * buildQuery(argument): Builds the CREATE query |
||
| 41 | * |
||
| 42 | * @return string |
||
| 43 | */ |
||
| 44 | public function buildQuery($tablename) |
||
| 45 | { |
||
| 46 | $pluralTableName = self::pluralize($tablename); |
||
| 47 | $query = "CREATE TABLE IF NOT EXISTS {$pluralTableName} (".PHP_EOL; |
||
| 48 | |||
| 49 | $callback = function($fieldName) use (&$query) |
||
| 50 | { |
||
| 51 | $fields = explode(" ", $fieldName); |
||
| 52 | |||
| 53 | $constrain = $fields[0]; |
||
| 54 | if(count($fields) == 2) |
||
| 55 | { |
||
| 56 | $query .= $this->$constrain($fields[1], 20) .", ".PHP_EOL; |
||
| 57 | }else |
||
| 58 | { |
||
| 59 | $query .= $this->$constrain($fields[1], $fields[2]) .", ".PHP_EOL; |
||
| 60 | } |
||
| 61 | }; |
||
| 62 | array_walk($this->fieldDescription, $callback); |
||
| 63 | $query .= ');)'; |
||
| 64 | |||
| 65 | return $query; |
||
| 66 | } |
||
| 67 | |||
| 68 | /** |
||
| 69 | * SanitizeQuery(argument) Removes the unwanted character in the build |
||
| 70 | * and completes the statement |
||
| 71 | * |
||
| 72 | * @return string |
||
| 73 | */ |
||
| 74 | public function sanitizeQuery($query) |
||
| 75 | { |
||
| 76 | $q = substr_replace($this->buildQuery($query), "", -6); |
||
| 77 | $q .= ");"; |
||
| 78 | return $q; |
||
| 79 | } |
||
| 80 | |||
| 81 | /** |
||
| 82 | * createTable(argument) Execute the CREATE query |
||
| 83 | * |
||
| 84 | * @return bool |
||
| 85 | */ |
||
| 86 | public function createTable($tablename, $connection = NULL) |
||
| 87 | { |
||
| 88 | $connection = DatabaseQuery::connect(); |
||
| 89 | try |
||
| 90 | { |
||
| 91 | $sqlQuery = self::sanitizeQuery($tablename); |
||
| 92 | $query = $connection->prepare($sqlQuery); |
||
| 93 | if($query->execute()) |
||
| 94 | { |
||
| 95 | return true; |
||
| 96 | } |
||
| 97 | }catch(PDOException $e){ |
||
| 98 | return $e->getMessage(); |
||
| 99 | } |
||
| 100 | } |
||
| 101 | |||
| 102 | /** |
||
| 103 | * increments(argument) |
||
| 104 | * |
||
| 105 | * @return string |
||
| 106 | */ |
||
| 107 | public function increments($value) |
||
| 108 | { |
||
| 109 | return $value." int(11) NOT NULL AUTO_INCREMENT"; |
||
| 110 | } |
||
| 111 | |||
| 112 | /** |
||
| 113 | * strings(arguments) |
||
| 114 | * |
||
| 115 | * @return string |
||
| 116 | */ |
||
| 117 | public function strings($value, $length) |
||
| 118 | { |
||
| 119 | return $value ." varchar (".$length.") NOT NULL"; |
||
| 120 | } |
||
| 121 | |||
| 122 | /** |
||
| 123 | * text(argument) |
||
| 124 | * |
||
| 125 | * @return string |
||
| 126 | */ |
||
| 127 | public function text($value) |
||
| 128 | { |
||
| 129 | return $value." text NOT NULL"; |
||
| 130 | } |
||
| 131 | |||
| 132 | /** |
||
| 133 | * increments(argument) |
||
| 134 | * |
||
| 135 | * |
||
| 136 | * @return string |
||
| 137 | */ |
||
| 138 | public function integer($value, $length) |
||
| 139 | { |
||
| 140 | return $value." int(".$length.") NOT NULL"; |
||
| 141 | } |
||
| 142 | |||
| 143 | /** |
||
| 144 | * increments(argument) |
||
| 145 | * |
||
| 146 | * @return string |
||
| 147 | */ |
||
| 148 | public function primaryKey($value) |
||
| 149 | { |
||
| 150 | return "PRIMARY KEY ({$value})"; |
||
| 151 | } |
||
| 152 | |||
| 153 | /** |
||
| 154 | * unique(argument) |
||
| 155 | * |
||
| 156 | * @return string |
||
| 157 | */ |
||
| 158 | public function unique($value) |
||
| 159 | { |
||
| 160 | return "UNIQUE KEY {$value} ({$value})"; |
||
| 161 | } |
||
| 162 | |||
| 163 | /** |
||
| 164 | * foreignKey(argument) |
||
| 165 | * |
||
| 166 | * @return string |
||
| 167 | */ |
||
| 168 | public function foreignKey($value, $length) |
||
| 169 | { |
||
| 170 | $r = explode("-", $length); |
||
| 171 | |||
| 172 | return "FOREIGN KEY ({$value}) REFERENCES ".$r[0]."(".$r[1].")"; |
||
| 173 | } |
||
| 174 | |||
| 175 | /** |
||
| 176 | * dateTime description] |
||
| 177 | * |
||
| 178 | * @param [type] $value [description] |
||
|
0 ignored issues
–
show
|
|||
| 179 | * @param [type] $type [description] |
||
|
0 ignored issues
–
show
The doc-type
[type] could not be parsed: Unknown type name "" at position 0. [(view supported doc-types)
This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types. Loading history...
|
|||
| 180 | * @return [type] [description] |
||
|
0 ignored issues
–
show
The doc-type
[type] could not be parsed: Unknown type name "" at position 0. [(view supported doc-types)
This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types. Loading history...
|
|||
| 181 | */ |
||
| 182 | public function dateTime($value, $type = NULL) |
||
| 183 | { |
||
| 184 | $apend = ""; |
||
|
0 ignored issues
–
show
$apend is not used, you could remove the assignment.
This check looks for variable assignements that are either overwritten by other assignments or where the variable is not used subsequently. $myVar = 'Value';
$higher = false;
if (rand(1, 6) > 3) {
$higher = true;
} else {
$higher = false;
}
Both the Loading history...
|
|||
| 185 | switch ($type) { |
||
| 186 | case 'time': |
||
| 187 | $apend = 'time'; |
||
| 188 | break; |
||
| 189 | case 'timestamp': |
||
| 190 | $apend = 'timestamp'; |
||
| 191 | break; |
||
| 192 | case 'date': |
||
| 193 | $apend = 'date'; |
||
| 194 | break; |
||
| 195 | case 'datetime': |
||
| 196 | $apend = 'datetime'; |
||
| 197 | break; |
||
| 198 | case 'year': |
||
| 199 | $apend = 'year(4)'; |
||
| 200 | break; |
||
| 201 | default: |
||
| 202 | $apend = 'timestamp'; |
||
| 203 | break; |
||
| 204 | } |
||
| 205 | return $value . " " . $apend . " NOT NULL"; |
||
| 206 | } |
||
| 207 | } |
This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types.