private function buildJoinsClause($conn_r) { $joins = array(); if ($this->emails) { $email_table = new PhabricatorUserEmail(); $joins[] = qsprintf($conn_r, 'JOIN %T email ON email.userPHID = user.PHID', $email_table->getTableName()); } $joins = implode(' ', $joins); return $joins; }
<?php echo "Migrating user emails...\n"; $table = new PhabricatorUser(); $table->openTransaction(); $conn = $table->establishConnection('w'); $emails = queryfx_all($conn, 'SELECT phid, email FROM %T LOCK IN SHARE MODE', $table->getTableName()); $emails = ipull($emails, 'email', 'phid'); $etable = new PhabricatorUserEmail(); foreach ($emails as $phid => $email) { // NOTE: Grandfather all existing email in as primary / verified. We generate // verification codes because they are used for password resets, etc. echo "Migrating '{$phid}'...\n"; queryfx($conn, 'INSERT INTO %T (userPHID, address, verificationCode, isVerified, isPrimary) VALUES (%s, %s, %s, 1, 1)', $etable->getTableName(), $phid, $email, Filesystem::readRandomCharacters(24)); } $table->saveTransaction(); echo "Done.\n";
protected function buildJoinClauseParts(AphrontDatabaseConnection $conn) { $joins = parent::buildJoinClauseParts($conn); if ($this->emails) { $email_table = new PhabricatorUserEmail(); $joins[] = qsprintf($conn, 'JOIN %T email ON email.userPHID = user.PHID', $email_table->getTableName()); } if ($this->nameTokens) { foreach ($this->nameTokens as $key => $token) { $token_table = 'token_' . $key; $joins[] = qsprintf($conn, 'JOIN %T %T ON %T.userID = user.id AND %T.token LIKE %>', PhabricatorUser::NAMETOKEN_TABLE, $token_table, $token_table, $token_table, $token); } } return $joins; }