new \Where(\Where::_operator(Purchase::$ACCOUNT,'=',$account_id)) ],true); self::$purchases[$account_id] = $r; foreach ($r as $v){ self::$purchases[$account_id]['types'][] = $v[MarketItem::$TYPE]; } return self::$purchases[$account_id]; } static function getPurchaseTypes($account_id){ self::getPurchased($account_id); return self::$purchases[$account_id]['types']; } static function init(){ define("IF_AUTH",self::if_auth()); define("UID",IF_AUTH ? self::$data[ self::$ID ] : 0); static::$isSuper = (intval(UID)===1); } static function afterInstall() { parent::afterInstall(); // TODO: Change the autogenerated stub self::add([ self::$LOGIN=>'test@test.ru', self::$PASSWORD=>'test', ]); } static function exit(){ Core::setCookie(self::$cookieIDKey,'-'); Core::setCookie(self::$cookieHashKey,'-'); } static function getName($v, array $options = []): string { $x = []; //if($c = trim($v[self::$SNAME])) $x[] = $c; if($c = trim($v[self::$ID])) $x[] = '#'.$c.' '; if($c = trim($v[self::$NAME])) $x[] = $c; //if($c = trim($v[self::$FNAME])) $x[] = $c; return implode(" ",$x); } static function reg($data){ $res = new stdClass(); $res->e = 0; $res->m = ''; $login = self::prepareLogin($data['login']); $pass = self::prepareLogin($data['pass']); $acc = self::getByLogin($login); if(!$acc) { $r = self::add([ self::$PASSWORD=>$pass, self::$NAME=>$data['name'], self::$LOGIN=>$login, ]); $acc = self::getByID($r->id); $hash = $acc[self::$PASSWORD]; Core::setCookie(self::$cookieIDKey,$acc[self::$ID]); Core::setCookie(self::$cookieHashKey,$hash); $res->id = $r->id; $res->h = $hash; \ms\MS::prepareNewUser($r->id); } else { $res->e = 1; $res->m = V::get(Vars::$ACCOUNT_BUSY); } return $res; } static function if_auth(){ if (!empty($_COOKIE[self::$cookieIDKey]) && !empty($_COOKIE[self::$cookieHashKey])) { $uid = intval($_COOKIE[self::$cookieIDKey]); $hash = $_COOKIE[self::$cookieHashKey]; $acc = self::getByID($uid); $res = strcmp($acc[self::$PASSWORD],$hash)==0; if($res) self::$data = $acc; return $res; } else if( \Core::$TOKEN ){ $token = Token::getByHash(\Core::$TOKEN); if($token[Token::$ACCOUNT]){ self::$data = self::getByID( $token[Token::$ACCOUNT] ); return true; } else return false; } else return false; } static function prepareLogin($login) {return trim(strtolower((string)$login));} static function preparePass($pass) {return trim((string)$pass);} static function login($login,$pass){ $res = new stdClass(); $res->e = 0; $res->m = ''; $login = self::prepareLogin($login); $pass = self::preparePass($pass); $acc = self::getByLogin($login); if($acc) { if(self::checkPassword($acc,$pass)){ Core::setCookie(self::$cookieIDKey ,$acc[self::$ID]); Core::setCookie(self::$cookieHashKey,$acc[self::$PASSWORD]); if(Core::$IS_APP) { $hash = Token::getHash($acc[self::$ID],0,\Site::$portal_id); Token::insert([ Token::$ACCOUNT => $acc[self::$ID], Token::$HASH => $hash, ]); $res->token = $hash; } } else { $res->e = 1; $res->m = V::get(Vars::$WRONG_PASSWORD); } } else { $res->e = 1; $res->m = V::get(Vars::$ACCOUNT_NOT_FOUND); } return $res; } static function getSystemLangValues():array{ return Vars::getArray(); } static function add($values){ $res = new stdClass(); $res->e = 0; $res->m = ''; $admin = self::getByLogin($values[ self::$LOGIN ]); if(!$admin) { $r = self::insert($values); $a = self::getByID($r->id); $c[self::$PASSWORD] = self::hash($a); self::updateById($r->id, $c); $res->id = $r->id; } else { $res->e = 1; $res->m = V::get(Vars::$ACCOUNT_BUSY); } return $res; } static function hash($acc){ return md5(\Config::$SALT.$acc[self::$ID].self::$DATE.\Config::$SALT.$acc[self::$PASSWORD]); } static function checkPassword($acc,$pass):bool{ $hash = $acc[self::$PASSWORD]; $acc[self::$PASSWORD] = $pass; return strcmp($hash, self::hash($acc) )===0; } static function getByLogin(string $account){ return DB::fetch(self::select( [Query::WHERE => new Where (Where::_operator(self::$LOGIN,'=',$account)) ] )); } static function columnInfo() : array { return [ new C([ C::VAR_NAME =>&self::$ID, C::TYPE =>eColumnType::INT, C::AUTO_INCREMENT =>true, C::PRIMARY =>true, C::DEFAULT =>0, ]), new C([ C::VAR_NAME =>&self::$NAME, C::TYPE =>eColumnType::VARCHAR, C::LENGTH =>255, ]), new C([ C::VAR_NAME =>&self::$LOGIN, C::TYPE =>eColumnType::VARCHAR, C::LENGTH =>255, ]), new C([ C::VAR_NAME =>&self::$EMAIL, C::TYPE =>eColumnType::VARCHAR, C::LENGTH =>255, ]), new C([ C::VAR_NAME =>&self::$PASSWORD, C::TYPE =>eColumnType::VARCHAR, C::LENGTH =>255, ]), new C([ C::VAR_NAME =>&self::$DATE, C::TYPE =>eColumnType::INT, C::DEFAULT =>time(), ]), ]; } } new Account();