name = $name; return $validate; } /** * Checking that field type is numeric * @param string $type * @return boolean */ public static function isNumeric($type) { $defined = array('integer', 'double'); if (in_array($type, $defined)) { return TRUE; } return FALSE; } /** * Checking that types from array matching with [boolean, integer, string, double] * @param array $types Indexed array * @return bool * @throws LazerException */ public static function types(array $types) { $defined = array('boolean', 'integer', 'string', 'double'); $diff = array_diff($types, $defined); if (empty($diff)) { return TRUE; } throw new LazerException('Wrong types: "' . implode(', ', $diff) . '". Available "boolean, integer, string, double"'); } /** * Delete ID field from arrays * @param array $fields * @return array Fields without ID */ public static function filter(array $fields) { if (array_values($fields) === $fields) { if (($key = array_search('id', $fields)) !== false) { unset($fields[$key]); } } else { unset($fields['id']); } return $fields; } /** * Change keys and values case to lower * @param array $array * @return array */ public static function arrToLower(array $array) { $array = array_change_key_case($array); $array = array_map('strtolower', $array); return $array; } /** * Checking that typed fields really exist in table * @param array $fields Indexed array * @return boolean * @throws LazerException If field(s) does not exist */ public function fields(array $fields) { $fields = self::filter($fields); $diff = array_diff($fields, Config::table($this->name)->fields()); if (empty($diff)) { return TRUE; } throw new LazerException('Field(s) "' . implode(', ', $diff) . '" does not exists in table "' . $this->name . '"'); } /** * Checking that typed field really exist in table * @param string $name * @return boolean * @throws LazerException If field does not exist */ public function field($name) { if (in_array($name, Config::table($this->name)->fields())) { return TRUE; } throw new LazerException('Field ' . $name . ' does not exists in table "' . $this->name . '"'); } /** * Checking that Table and Config exists and throw exceptions if not * @return boolean * @throws LazerException */ public function exists() { if (!Data::table($this->name)->exists()) throw new LazerException('Table "' . $this->name . '" does not exists'); if (!Config::table($this->name)->exists()) throw new LazerException('Config "' . $this->name . '" does not exists'); return TRUE; } /** * Checking that typed field have correct type of value * @param string $name * @param mixed $value * @return boolean * @throws LazerException If type is wrong */ public function type($name, $value) { $schema = Config::table($this->name)->schema(); if (array_key_exists($name, $schema) && $schema[$name] == gettype($value)) { return TRUE; } throw new LazerException('Wrong data type'); } /** * Checking that relation between tables exists * @param string $local local table * @param string $foreign related table * @return bool relation exists * @throws LazerException */ public static function relation($local, $foreign) { $relations = Config::table($local)->relations(); if (isset($relations->{$foreign})) { return TRUE; } throw new LazerException('Relation "' . $local . '" to "' . $foreign . '" doesn\'t exist'); } /** * Checking that relation type is correct * @param string $type * @return bool relation type * @throws LazerException Wrong relation type */ public static function relationType($type) { if (in_array($type, Relation::relations())) { return true; } throw new LazerException('Wrong relation type'); } }