/** * Returns users with duplicated emails * * @return array An array of User */ public function getWrongEmailUsers() { if (version_compare($this->appbox->get_version(), '3.9', '>=')) { return []; } $builder = $this->appbox->get_connection()->createQueryBuilder(); /** @var Statement $stmt */ $stmt = $builder->select('u.usr_mail', 'u.usr_id', 'u.last_conn', 'u.usr_login')->from($this->table, 'u')->where($builder->expr()->isNotNull('u.usr_mail'))->execute(); $rs = $stmt->fetchAll(\PDO::FETCH_ASSOC); $stmt->closeCursor(); $users = []; foreach ($rs as $row) { if (!isset($users[$row['usr_mail']])) { $users[$row['usr_mail']] = []; } $users[$row['usr_mail']][] = $row; } $badUsers = []; foreach ($users as $email => $usrs) { if (count($usrs) > 1) { $badUsers[$email] = []; foreach ($usrs as $usrInfo) { $badUsers[$email][$usrInfo['usr_id']] = $usrInfo; } } } unset($users); return $badUsers; }
public function __construct(Application $app, $force = false) { if ($force) { self::remove_lock_file(); } if (self::lock_exists()) { throw new Exception_Setup_UpgradeAlreadyStarted('The upgrade is already started'); } $this->appbox = $app['phraseanet.appbox']; if (version_compare($this->appbox->get_version(), '3.9', '<') && count(MailChecker::getWrongEmailUsers($app)) > 0) { throw new \Exception_Setup_FixBadEmailAddresses('Please fix the database before starting'); } $this->write_lock(); return $this; }