public function searchStudents($search, $order = 'id', $by = 'ASC', $limit = 2147483647, $offset = 0) { $pdo = $this->getPdo(); $allowedOrder = ["name", "surname", "gender", "grupNumber", "email", "satScores", "yearOfBirth", "location"]; $allowedBy = ["ASC", "asc", "DESC", "desc"]; $order = (is_scalar($order) and in_array($order, $allowedOrder)) ? $order : 'satScores'; $by = (is_scalar($by) and in_array($by, $allowedBy)) ? $by : 'ASC'; $query = $pdo->prepare("SELECT * FROM students WHERE CONCAT(name, surname, grupnumber, email, satscores, yearofbirth, location) LIKE :search ORDER BY {$order} {$by} LIMIT :limit OFFSET :offset"); $query->bindValue(':search', "%{$search}%"); $query->bindValue(':limit', (int) $limit, \PDO::PARAM_INT); $query->bindValue(':offset', (int) $offset, \PDO::PARAM_INT); $query->execute(); $results = $query->fetchAll(\PDO::FETCH_ASSOC); $students = new \SplObjectStorage(); foreach ($results as $result) { $student = new Student(); $student->fillAllData($result); $students->attach($student); } return $students; }
public static function setPassword(Student $student, $password) { $student->setSalt(LoginHelper::generateSalt()); $student->setHash(LoginHelper::hashPassword($password, $student->getSalt())); }
<?php require_once __DIR__ . '/../init.php'; use App\Model\Entity\Student; $faker = Faker\Factory::create('ru_RU'); for ($i = 0; $i < 100; $i++) { $student = new Student(); $student->setName($faker->firstNameMale); $student->setSurname($faker->lastName); $student->setGender($faker->randomElement(array("Man", "Woman"))); $student->setGrupNumber($faker->bothify('??##')); $student->setEmail($faker->email); $student->setSATScores(mt_rand(1, 500)); $student->serYearOfBirth($faker->year); $student->setLocation($faker->randomElement(array("local", "nonresident"))); $student->setPassword($faker->password); $container['StudentGateway']->addStudent($student); } echo "ALL OK; Hungred Fake Students injected;";