Example #1
0
 static function reset()
 {
     foreach ((array) self::$DB as $name => $db) {
         $db->disconnect();
     }
     self::$DB = array();
 }
Example #2
0
 public static function Connect()
 {
     global $GMDConfig;
     Database::$DB = new mysqli($GMDConfig["DB_Host"], $GMDConfig["DB_Username"], $GMDConfig["DB_Password"], $GMDConfig["DB_Name"], $GMDConfig["DB_Port"]);
     if (self::isInstalled() == false) {
         self::Install();
     }
 }
Example #3
0
 static function getMenuItems($menu)
 {
     if (!is_numeric($menu)) {
         $menu = self::getMenu($menu)[0]['id'];
     }
     //      $result = MySQLi::select(self::menuItemsTableName(), '*', '`menuId` = '.$menu);
     Database::DB()->select('menu_items')->where('menuId', $menu)->exec();
     return Database::get();
 }
Example #4
0
 public static function getDB()
 {
     if (self::$DB != null) {
         return self::$DB;
     } else {
         self::$DB = new database(Config::DB_HOST, Config::DB_USER, Config::DB_PASSWORD, Config::DB_NAME);
     }
     return self::$DB;
 }
Example #5
0
 static function pind($y = 10)
 {
     $pind = null;
     $x = 0;
     while ($x < $y) {
         $x++;
         $pind = self::rand_str(10);
         Database::DB()->reset();
         Database::DB()->select('feedback_obro')->where("pind", $pind, "=")->exec();
         $res = Database::get();
         if ($fes == null && $fes != $pind) {
             break;
         }
     }
     return $pind;
 }
Example #6
0
 static function loadSettings($var = null)
 {
     Database::DB()->select('settings');
     if ($var) {
         Database::DB()->where('var', $var, 'IN');
     }
     Database::DB()->exec();
     if (Database::result()->num_rows == 0) {
         throw new Exception('Ошибка при загрузке настроек');
     }
     $arg = array();
     while ($row = Database::result()->fetch_assoc()) {
         $arg[$row['var']] = $row['val'];
     }
     if (is_string($var)) {
         return $arg[$var];
     }
     return $arg;
 }
Example #7
0
 static function findPage($name)
 {
     Database::DB()->select('pages')->where('name', $name)->exec();
     return Database::getRow();
 }
Example #8
0
 static function setUserPassword($options)
 {
     //} $login,$pwd1,$pwd2,$old_pwd = null) {
     //инициализируем параметры по умолчанию
     $options = initFuncDefaultParams($options, array("id" => null, "login" => null, "old_pwd" => null));
     //ищем пользователя
     $user = self::getUser(array("id" => $options["id"], "login" => $options["login"], "hide_pwd" => false, "auth" => false));
     if (empty($user)) {
         return self::ERROR_USER_NOT_FOUND;
     }
     //
     //проверяем старый пароль, если он указан
     if (!empty($old_pwd) && !empty($user['pwd']) && !Crypt::password_verify($old_pwd, $user['pwd'])) {
         return self::ERROR_PWD_NOT_MATCH;
     }
     //проводим валидацию нового пароля
     $pwd_strong_level = 0;
     $error = self::validatePassword($options["pwd1"], $options["pwd2"], $pwd_strong_level);
     if ($error !== self::ERROR_NOT) {
         return $error;
     }
     //обновляем запись в бд
     Database::DB()->reset();
     Database::DB()->update(self::$users_table, array("pwd" => Crypt::password_hash($options["pwd1"], Crypt::CRYPT_HASH_DEFAULT)))->where("id", $user["id"])->exec();
     return self::ERROR_NOT;
 }
Example #9
0
 /**
  * Возвращает результат запроса в виде объекта или массива объектов.
  *
  * @param string $field строка - название колонки, по которой происходит поиск
  * @param array  $args - ассоциативный массив аргументов:
  *                     'fields' - строка или массив строк - поля, которые вернутся из поиска
  *                     'where' - строка или массив - параметры поиска
  *                     'group' - строка - название колонки - параметр группировки
  *                     'order' - строка - параметр сортировки результирующей выборки
  *                     'orderDown' - тип данных не имеет значения - если указан, то упорядочевание будет по убыванию
  *                     'limit' - число - параметр ограничения выборки
  *                     'offset' - число - параметр смещения выборки
  *
  * @return null | object | array
  * @throws InvalidArgumentException
  */
 static function findByField($field, array $args = null)
 {
     $class = get_called_class();
     if (!is_string($field) || !in_array(strtolower($field), $class::$tableFields)) {
         throw new InvalidArgumentException($class . ' - ' . __FUNCTION__);
     }
     Database::DB()->select($class::$tableName, empty($args['fields']) ? '*' : $args['fields']);
     if (!empty($args['where'])) {
         Database::DB()->where($field, $args['where']);
     }
     if (!empty($args['group']) && is_string($args['group'])) {
         Database::DB()->group($args['group']);
     }
     if (!empty($args['order']) && is_string($args['order'])) {
         Database::DB()->order($args['order'], empty($args['orderDown']) ? false : true);
     }
     if (!empty($args['limit'])) {
         Database::DB()->limit($args['limit'], empty($args['offset']) ? $args['offset'] : 0);
     }
     Database::DB()->exec();
     if (Database::DB()->getCount() == 1) {
         return new $class(Database::DB()->getRow());
     } else {
         if (Database::DB()->getCount() > 1) {
             $objects = Database::DB()->get();
             foreach ($objects as &$val) {
                 $val = new $class($val);
             }
             unset($val);
             return $objects;
         }
     }
     return null;
 }
Example #10
0
 public static function deleteRoles($names)
 {
     //подготавливаем запрос update
     Database::DB()->reset();
     Database::DB()->delete(self::$roles_table);
     //в зависимости от $names добавляем условие
     if (isset($names)) {
         if (empty($names)) {
             return;
         }
         if (is_array($names)) {
             Database::DB()->where("name", $names, "IN");
         } else {
             Database::DB()->where("name", $names, "LIKE");
         }
     }
     //выполняем запрос
     Database::DB()->exec();
     //echo Database::DB()->lastQuery().'<br/>';
 }
 public function CloseDB()
 {
     self::$DB = null;
 }
Example #12
0
 public function save($args = null)
 {
     //инициализируем функцию
     $args = Common::initFunc($args, array("names" => null, "delete" => false));
     if (empty($this->rows) || empty($this->table)) {
         return true;
     }
     //загружаем список уже существующих записей справочника
     Database::DB()->reset();
     Database::DB()->select($this->table, "id,name,enable")->exec();
     $exist_rows = array();
     while ($row = Database::DB()->getRow()) {
         $exist_rows[] = $row;
     }
     //сперва удалим лишние записи, если установлен флаг
     if ($args["delete"]) {
         $deleting_rows = array();
         //находим сперва массив записей для удаления
         foreach ($exist_rows as $exist_row) {
             $need_del = true;
             foreach ($this->rows as $row) {
                 if ($row["name"] == $exist_row["name"]) {
                     $need_del = false;
                     break;
                 }
             }
             if ($need_del) {
                 $deleting_rows[] = $exist_row["id"];
             }
         }
         //echoVar($deleting_rows);
         //и если он не пуст, то удаялем записи
         if (!empty($deleting_rows)) {
             Database::DB()->reset();
             Database::DB()->delete($this->table)->where("id", $deleting_rows, "IN")->exec();
         }
     }
     //разделяем теперь исходный массив записей на массивы записей, которые нужно обновить в бд,
     //массив записей и которые требуется создать
     $updating_rows = array();
     $creating_rows = array();
     foreach ($this->rows as $row) {
         if (is_array($args["names"])) {
             if (empty($args["names"])) {
                 return true;
             }
             if (array_search($row["name"], $args["names"]) === false) {
                 continue;
             }
         } else {
             if (!empty($args["names"]) && $row["name"] != $args["names"]) {
                 continue;
             }
         }
         //а теперь определяем, есть ли такая запись в бд и соответственно разобъем параметры по массивам
         $is_exist = false;
         foreach ($exist_rows as $exist_row) {
             if ($exist_row["name"] == $row["name"]) {
                 $row["id"] = $exist_row["id"];
                 $updating_rows[] = $row;
                 $is_exist = true;
                 break;
             }
         }
         if (!$is_exist) {
             $creating_rows[] = $row;
         }
     }
     //теперь обновляем записи в таблице, по созданнаму массиву
     foreach ($updating_rows as $row) {
         $id = $row["id"];
         unset($row["id"]);
         unset($row["name"]);
         Database::DB()->reset();
         Database::DB()->update($this->table, $row)->where("id", $id, "=")->exec();
     }
     //и создаем новые записи
     foreach ($creating_rows as $row) {
         unset($row["id"]);
         Database::DB()->reset();
         Database::DB()->insert($this->table, $row);
     }
     return true;
 }
Example #13
0
 static function save_s($args = null)
 {
     //инициализируем функцию
     Common::initFunc();
     //проверяем аргументы
     if (!isset($args["table"]) || !isset($args["paramID"]) || !isset($args["params"])) {
         Common::setLastError(Errors::ARGS_NOT_ENOUGH, Errors::ARGS_NOT_ENOUGH_MSG);
         return false;
     }
     if (!is_numeric($args["paramID"]) || $args["paramID"] <= 0) {
         Common::setLastError(Errors::ARGS_INCORRECT, Errors::ARGS_INCORRECT_MSG . " (paramID)");
         return false;
     }
     if (empty($args["table"])) {
         Common::setLastError(Errors::ARGS_INCORRECT, Errors::ARGS_INCORRECT_MSG . " (table)");
         return false;
     }
     if (!isset($args["params"]) || !is_array($args["params"]) || !is_assoc($args["params"])) {
         Common::setLastError(Errors::ARGS_INCORRECT, Errors::ARGS_INCORRECT_MSG . " (params)");
         return false;
     }
     //загружаем список уже существующих параметров
     $exist_params = self::load_s(array("table" => $args["table"], "paramID" => $args["paramID"], "params" => array_keys($args["params"])));
     if (Common::isLastError()) {
         return null;
     }
     //разделяем теперь исходный массив параметров на массивы параметров, которые нужно обновить в бд и
     //массив параметров, которые требуется создать
     $updating_params = array();
     $creating_params = array();
     foreach ($args["params"] as $key => $val) {
         $is_exist = false;
         foreach ($exist_params as $exist_val) {
             if ($exist_val["paramName"] == $key) {
                 //так же отбрасываем те параметры, которые не изменили своего значения
                 if ($exist_val["paramValue"] != $val) {
                     $updating_params[$key] = $val;
                 }
                 $is_exist = true;
                 break;
             }
         }
         if (!$is_exist) {
             $creating_params[$key] = $val;
         }
     }
     //теперь обновляем записи в таблице, по созданнаму массиву
     foreach ($updating_params as $key => $val) {
         Database::DB()->reset();
         Database::DB()->update($args["table"], array("paramValue" => $val))->where("paramID", $args["paramID"], "=", "AND")->where("paramName", $key, "LIKE")->exec();
     }
     //и создаем новые записи
     foreach ($creating_params as $key => $val) {
         Database::DB()->reset();
         Database::DB()->insert($args["table"], array("paramID" => $args["paramID"], "paramName" => $key, "paramValue" => $val));
     }
     return true;
 }
Example #14
0
 public function save($args = null)
 {
     //инициализируем функцию
     $args = Common::initFunc($args, array("save_phones" => true, "delete_phones" => true));
     //сохраняем сперва все описанное в родителе
     if (!parent::save($args)) {
         return false;
     }
     //если не требуется дополнительно сохранять телефоны, выходим
     if (!$args["save_phones"]) {
         return true;
     }
     //иначе вытягиваем из базы список доступных пользователю телефонов
     Database::DB()->reset();
     Database::DB()->select(self::users_phones_table)->where("user_id", $this->id, '=')->exec();
     $exist_phones = array();
     while ($row = Database::DB()->getRow()) {
         $exist_phones[] = $row;
     }
     //если требуется удаление лишних телефонов
     if ($args["delete_phones"]) {
         //составляем список id-шников
         $deleting_phones = array();
         foreach ($exist_phones as $exist_phone) {
             $need_delete = true;
             foreach ($this->phones as $phone) {
                 if ($exist_phone["phone"] == $phone["phone"]) {
                     $need_delete = false;
                     break;
                 }
             }
             if ($need_delete) {
                 $deleting_phones[] = $exist_phone["id"];
             }
         }
         //и удаляем записи
         if (!empty($deleting_phones)) {
             Database::DB()->reset();
             Database::DB()->delete(self::users_phones_table)->where("id", $deleting_phones, "IN")->exec();
         }
     }
     //теперь разбиваем список телефонов на те, которые нужно обновить и те, которые нужно создать
     $creating_phones = array();
     $updating_phones = array();
     foreach ($this->phones as $phone) {
         $if_exist = false;
         foreach ($exist_phones as $exist_phone) {
             if ($exist_phone["phone"] == $phone["phone"]) {
                 $phone["id"] = $exist_phone["id"];
                 $updating_phones[] = $phone;
                 $if_exist = true;
             }
         }
         if (!$if_exist) {
             $creating_phones[] = $phone;
         }
     }
     //и в зависимости от массивов создаем и обновляем записи в бд
     foreach ($updating_phones as $phone) {
         Database::DB()->reset();
         Database::DB()->update(self::users_phones_table, array("type" => $phone["type"]))->where("id", $phone["id"])->exec();
     }
     foreach ($creating_phones as $phone) {
         Database::DB()->reset();
         Database::DB()->insert(self::users_phones_table, array("user_id" => $this->id, "phone" => $phone["phone"], "type" => $phone["type"]));
     }
     return true;
 }
Example #15
0
 static function getStaticPage($v)
 {
     Database::DB()->select('static_pages')->where('title', $v)->exec();
     return Database::get()[0];
 }
Example #16
0
 function gc($maxLifetime)
 {
     Database::DB()->delete('sessions')->where('`date` < DATE_SUB(NOW(),INTERVAL ' . $maxLifetime . ' SECOND)')->exec();
     return true;
 }
Example #17
0
 static function findByField($field, array $args = null)
 {
     if (Database::DB()->query('SHOW TABLES LIKE \'' . Settings::$DB_PREFIX . "_" . self::$tableName . '\'')->exec()->getCount() < 1) {
         throw new InvalidArgumentException(get_called_class() . ' - ' . __FUNCTION__ . ': Invalid table "' . self::$tableName . '"');
     }
     return parent::findByField($field, $args);
 }