/** * @covers PsRand::string */ public function testString() { $sequences = array(); for ($i = 0; $i < self::TOTAL; $i++) { $StRiNg = PsRand::string(MD5_STR_LENGTH, null, false); $this->assertTrue(is_string($StRiNg) && strlen($StRiNg) === MD5_STR_LENGTH && !is_numeric($StRiNg), "{$i}: {$StRiNg}"); $this->assertFalse(strtolower($StRiNg) === $StRiNg, "{$i}: {$StRiNg}"); $this->assertFalse(strtoupper($StRiNg) === $StRiNg, "{$i}: {$StRiNg}"); $sequences[] = $StRiNg; $string = PsRand::string(MD5_STR_LENGTH, false, false); $this->assertTrue(is_string($string) && strlen($string) === MD5_STR_LENGTH && !is_numeric($string) && strtolower($string) === $string, "{$i}: {$string}"); $this->assertFalse(strtoupper($string) === $string, "{$i}: {$string}"); $sequences[] = $string; $STRING = PsRand::string(MD5_STR_LENGTH, true, false); $this->assertTrue(is_string($STRING) && strlen($STRING) === MD5_STR_LENGTH && !is_numeric($STRING) && strtoupper($STRING) === $STRING, "{$i}: {$STRING}"); $this->assertFalse(strtolower($STRING) === $STRING, "{$i}: {$STRING}"); $sequences[] = $STRING; $StRiNg1 = PsRand::string(MD5_STR_LENGTH, null, true); $this->assertTrue(is_string($StRiNg1) && strlen($StRiNg1) === MD5_STR_LENGTH && !is_numeric($StRiNg1), "{$i}: {$StRiNg1}"); $this->assertFalse(strtolower($StRiNg1) === $StRiNg1, "{$i}: {$StRiNg1}"); $this->assertFalse(strtoupper($StRiNg1) === $StRiNg1, "{$i}: {$StRiNg1}"); $sequences[] = $StRiNg1; } self::log(print_r($sequences, true)); //Проверим, что все последовательности - уникальны $this->assertTrue(count(array_unique($sequences)) === count($sequences)); }
/** * Метод генерирует новый код и вставляет его в базу */ public function generateAndSave($type, $userId) { $this->dropUnusedCodes($type, $userId); $code = $this->checkCode(PsRand::string(self::CODE_LENGTH, false, true)); $affected = $this->update('insert into ps_user_codes (v_type, id_user, v_code, dt_add, n_status) values (?, ?, ?, unix_timestamp(), ?)', array($type, $userId, $code, self::CODE_STATUS_ACTIVE)); check_condition($affected == 1, "Код не был сохранён в базу"); return $code; }
/** * Метод добавляет хешированные директории к пути * * @param type $dirs - директории "перед" хешированными директориями * @param type $hashBase - база для хеша. Если это md5, то он и будет использован для построения пути. * @return array - массив директорий, составляющих путь к папке */ private function addHashFolders($dirs = null, $hashBase = null) { $hash = PsCheck::isMd5($hashBase) ? $hashBase : md5($hashBase ? $hashBase : PsRand::string()); $dirs = to_array($dirs); $dirs[] = 'f' . $hash[0]; $dirs[] = 'f' . $hash[1]; $dirs[] = 'f' . $hash[2]; return $dirs; }
/** * Функция возвращает уникальную метку времени, пригодную для имени файла: * 2014-09-15_14-13-55_pos (дата_время_уникальность в рамках секунды). */ public static function fileUniqueTime($addUnique = true) { return date(DF_FILE) . ($addUnique ? '_' . PsRand::string(4, false, false) : ''); }