Skip to content

Commit

Permalink
Replace disablement property with disabled_flags().
Browse files Browse the repository at this point in the history
  • Loading branch information
kohler committed Nov 3, 2023
1 parent 6bea57e commit 4a06ad4
Show file tree
Hide file tree
Showing 9 changed files with 63 additions and 52 deletions.
7 changes: 6 additions & 1 deletion src/author.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ static function make_user($u) {
$au = new Author($u);
$au->contactId = $u->contactId;
$au->roles = $u->roles;
$au->disablement = $u->disablement;
$au->disablement = $u->disabled_flags();
return $au;
}

Expand Down Expand Up @@ -292,6 +292,11 @@ function is_nonauthor() {
return $this->status === self::STATUS_NONAUTHOR;
}

/** @return int */
function disabled_flags() {
return $this->disablement;
}

/** @param Author|Contact $x
* @return bool */
function nea_equals($x) {
Expand Down
5 changes: 5 additions & 0 deletions src/contact.php
Original file line number Diff line number Diff line change
Expand Up @@ -1024,6 +1024,11 @@ function contactdb_disabled() {
return $cdbu && ($cdbu->disablement & ~self::DISABLEMENT_PLACEHOLDER) !== 0;
}

/** @return int */
function disabled_flags() {
return $this->disablement;
}

/** @return int */
function session_index() {
return $this->_activated > 0 ? $this->_activated >> 8 : -1;
Expand Down
4 changes: 2 additions & 2 deletions src/options/o_contacts.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ private function apply_parsed_users(PaperValue $ov, $specau) {
if ($specau[$i]->conflictType !== 0) {
$curau[$j]->author_index = $specau[$i]->author_index;
$modified = $modified
|| ($curau[$j]->disablement & Contact::DISABLEMENT_PLACEHOLDER) !== 0;
|| ($curau[$j]->disabled_flags() & Contact::DISABLEMENT_PLACEHOLDER) !== 0;
} else {
// only remove contacts on exact email match
// (removing by a non-primary email has no effect)
Expand Down Expand Up @@ -280,7 +280,7 @@ function print_web_edit(PaperTable $pt, $ov, $reqov) {
Ht::hidden("contacts:{$cidx}:email", $au->email);
if (($au->contactId > 0
&& ($au->conflictType & CONFLICT_AUTHOR) !== 0
&& ($au->disablement & Contact::DISABLEMENT_PLACEHOLDER) === 0)
&& ($au->disabled_flags() & Contact::DISABLEMENT_PLACEHOLDER) === 0)
|| ($au->contactId === $pt->user->contactId
&& $ov->prow->paperId <= 0)) {
echo Ht::hidden("contacts:{$cidx}:active", 1),
Expand Down
4 changes: 2 additions & 2 deletions src/pages/p_log.php
Original file line number Diff line number Diff line change
Expand Up @@ -353,7 +353,7 @@ function user_html($user) {
if (($pc = $this->conf->pc_member_by_id($user->contactId))) {
$user = $pc;
}
if ($user->disablement & Contact::DISABLEMENT_DELETED) {
if ($user->disabled_flags() & Contact::DISABLEMENT_DELETED) {
$t = '<del>' . $user->name_h(NAME_E) . '</del>';
} else {
$t = $user->name_h(NAME_P);
Expand Down Expand Up @@ -403,7 +403,7 @@ function users_html($users, $trueContactId) {
&& (!isset($user->roles) || !($user->roles & Contact::ROLE_PCLIKE))) {
$all_pc = false;
}
if ($user->disablement & Contact::DISABLEMENT_DELETED) {
if ($user->disabled_flags() & Contact::DISABLEMENT_DELETED) {
if ($user->email) {
$t = '<del>' . $user->name_h(NAME_E) . '</del>';
} else {
Expand Down
14 changes: 7 additions & 7 deletions src/userstatus.php
Original file line number Diff line number Diff line change
Expand Up @@ -899,7 +899,7 @@ function save_user($cj, $old_user = null) {
if (!$user) {
return null;
}
$old_disablement = $user->disablement;
$old_disablement = $user->disabled_flags();

// initialize
assert(!isset($cj->email) || strcasecmp($cj->email, $user->email) === 0);
Expand Down Expand Up @@ -932,7 +932,7 @@ function save_user($cj, $old_user = null) {
$user->cdb_user();
}
if ($roles !== $old_roles
|| ($user->disablement !== 0) !== ($old_disablement !== 0)) {
|| ($user->disabled_flags() !== 0) !== ($old_disablement !== 0)) {
$user->update_cdb();
}

Expand All @@ -952,7 +952,7 @@ function save_user($cj, $old_user = null) {
}

// Notify of new accounts or new PC-ness
if ($this->notify && $user->disablement === 0) {
if ($this->notify && $user->disabled_flags() === 0) {
$eff_old_roles = $old_disablement !== 0 ? 0 : $old_roles;
if (!$old_activity_at
|| (($eff_old_roles & Contact::ROLE_PCLIKE) === 0
Expand Down Expand Up @@ -1012,7 +1012,7 @@ static function save_main(UserStatus $us) {
}

// Disabled
$disablement = $user->disablement & Contact::DISABLEMENT_DB;
$disablement = $user->disabled_flags() & Contact::DISABLEMENT_DB;
if (isset($cj->disabled)) {
if ($cj->disabled) {
$disablement |= Contact::DISABLEMENT_USER;
Expand Down Expand Up @@ -1640,16 +1640,16 @@ static function print_main_actions(UserStatus $us) {
$us->cs()->add_section_class("form-outline-section")->print_start_section("User administration");
echo '<div class="grid-btn-explanation"><div class="d-flex mf mf-absolute">';

if ($us->user->disablement === Contact::DISABLEMENT_PLACEHOLDER) {
if ($us->user->disabled_flags() === Contact::DISABLEMENT_PLACEHOLDER) {
$disabled = !$us->conf->allow_user_activate_other();
} else {
$disabled = $us->user->disablement !== 0;
$disabled = $us->user->disabled_flags() !== 0;
}
echo Ht::button("Send account information", ["class" => "ui js-send-user-accountinfo flex-grow-1", "disabled" => $disabled]), '</div><p></p>';

if (!$us->is_auth_user()) {
echo '<div class="d-flex mf mf-absolute">';
$disablement = $us->user->disablement & ~Contact::DISABLEMENT_PLACEHOLDER;
$disablement = $us->user->disabled_flags() & ~Contact::DISABLEMENT_PLACEHOLDER;
if ($us->user->contactdb_disabled()) {
$klass = "flex-grow-1 disabled";
$p = "<p class=\"pt-1 mb-0 feedback is-warning\">This account is disabled on all sites.</p>";
Expand Down
58 changes: 29 additions & 29 deletions test/t_cdb.php
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ function test_cdb_import_1() {
$u = $this->conf->cdb_user_by_email("te@_.com");
xassert(!!$u);
xassert_eqq($u->firstName, "Te");
xassert_eqq($u->disablement, 0);
xassert_eqq($u->disabled_flags(), 0);

// inserting them should succeed and borrow their data
$acct = $this->us1->save_user((object) ["email" => "te@_.com"]);
Expand All @@ -133,12 +133,12 @@ function test_change_email() {
$u = $this->conf->cdb_user_by_email("te@_.com");
xassert(!!$u);
xassert_eqq($u->firstName, "Te");
xassert_eqq($u->disablement, 0);
xassert_eqq($u->disabled_flags(), 0);

$u = $this->conf->cdb_user_by_email("te2@_.com");
xassert(!!$u);
xassert_eqq($u->firstName, "");
xassert_eqq($u->disablement, 0);
xassert_eqq($u->disabled_flags(), 0);

// changing email works locally
user("te@_.com")->change_email("te2@_.com");
Expand All @@ -157,7 +157,7 @@ function test_change_email() {
xassert_eqq($te2_cdb->lastName, "Thamrongrattanarit 2");
xassert_eqq($te2_cdb->email, "te2@_.com");
xassert_eqq($te2_cdb->affiliation, "Brandeis University or something");
xassert_eqq($te2_cdb->disablement, 0);
xassert_eqq($te2_cdb->disabled_flags(), 0);

// changing local email does not change cdb
$acct = $this->us1->save_user((object) ["email" => "te2@_.com", "lastName" => "Thamrongrattanarit 1", "firstName" => "Te 1"]);
Expand All @@ -173,7 +173,7 @@ function test_change_email() {
xassert_eqq($te2_cdb->lastName, "Thamrongrattanarit 2");
xassert_eqq($te2_cdb->email, "te2@_.com");
xassert_eqq($te2_cdb->affiliation, "Brandeis University or something");
xassert_eqq($te2_cdb->disablement, 0);
xassert_eqq($te2_cdb->disabled_flags(), 0);
}

function test_simplify_whitespace_on_save() {
Expand Down Expand Up @@ -455,14 +455,14 @@ function test_email_authored_papers() {
xassert(!!$u);
xassert_eqq($u->firstName, "Cengiz");
xassert_eqq($u->lastName, "Alaettinoğlu");
xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
$ldb_cid = $u->contactId;

$u = $this->conf->cdb_user_by_email("[email protected]");
xassert(!!$u);
xassert_eqq($u->firstName, "Cengiz");
xassert_eqq($u->lastName, "Alaettinoğlu");
xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
$cdb_cid = $u->contactId;

// remove localdb user and cdb user's roles
Expand Down Expand Up @@ -550,29 +550,29 @@ function test_cdb_roles_1() {
function test_cdb_roles_2() {
// authorship is encoded in placeholder
$acct = $this->conf->fresh_user_by_email("[email protected]");
xassert_eqq($acct->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($acct->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
xassert($acct->is_author());
xassert_eqq($acct->cdb_roles(), Contact::ROLE_AUTHOR);
$acct = $this->conf->fresh_cdb_user_by_email("[email protected]");
xassert_eqq($acct->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($acct->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($acct->roles, Contact::ROLE_AUTHOR);

// saving without disablement wakes up cdb
$acct = $this->us1->save_user((object) ["email" => "[email protected]"]);
xassert_eqq($acct->disablement, 0);
xassert_eqq($acct->disabled_flags(), 0);
$acct = $this->conf->fresh_cdb_user_by_email("[email protected]");
xassert_eqq($acct->disablement, 0);
xassert_eqq($acct->disabled_flags(), 0);
}

function test_cdb_roles_3() {
// saving a user with a role does both role and authorship
$email = "[email protected]";
$acct = $this->conf->fresh_user_by_email($email);
xassert_eqq($acct->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($acct->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);

$acct = $this->us1->save_user((object) ["email" => $email, "roles" => "sysadmin"]);
xassert(!!$acct);
xassert_eqq($acct->disablement, 0);
xassert_eqq($acct->disabled_flags(), 0);
xassert($acct->is_author());
xassert($acct->isPC);
xassert($acct->privChair);
Expand All @@ -592,11 +592,11 @@ function test_placeholder() {
$u = $this->conf->checked_user_by_email("[email protected]");
xassert_eqq($u->firstName, "Shane");
xassert_eqq($u->lastName, "");
xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
$cdb_u = $u->cdb_user();
xassert_eqq($cdb_u->firstName, "Shane");
xassert_eqq($cdb_u->lastName, "");
xassert_eqq($cdb_u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($cdb_u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);

// creating another placeholder will override properties
Contact::make_keyed($this->conf, [
Expand All @@ -609,11 +609,11 @@ function test_placeholder() {
$u = $this->conf->checked_user_by_email("[email protected]");
xassert_eqq($u->firstName, "Shapely");
xassert_eqq($u->lastName, "Montréal");
xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
$cdb_u = $u->cdb_user();
xassert_eqq($cdb_u->firstName, "Shapely");
xassert_eqq($cdb_u->lastName, "Montréal");
xassert_eqq($cdb_u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($cdb_u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($cdb_u->prop("password"), " unset");

// enable user
Expand All @@ -625,11 +625,11 @@ function test_placeholder() {
$u = $this->conf->checked_user_by_email("[email protected]");
xassert_eqq($u->firstName, "Shapely");
xassert_eqq($u->lastName, "Montréal");
xassert_eqq($u->disablement, 0);
xassert_eqq($u->disabled_flags(), 0);
$cdb_u = $u->cdb_user();
xassert_eqq($cdb_u->firstName, "Shapely");
xassert_eqq($cdb_u->lastName, "Montréal");
xassert_eqq($cdb_u->disablement, 0);
xassert_eqq($cdb_u->disabled_flags(), 0);

// saving another placeholder will not override properties
// or disable the current user
Expand All @@ -643,11 +643,11 @@ function test_placeholder() {
$u = $this->conf->checked_user_by_email("[email protected]");
xassert_eqq($u->firstName, "Shapely");
xassert_eqq($u->lastName, "Montréal");
xassert_eqq($u->disablement, 0);
xassert_eqq($u->disabled_flags(), 0);
$cdb_u = $u->cdb_user();
xassert_eqq($cdb_u->firstName, "Shapely");
xassert_eqq($cdb_u->lastName, "Montréal");
xassert_eqq($cdb_u->disablement, 0);
xassert_eqq($cdb_u->disabled_flags(), 0);
}

function test_updatecontactdb_authors() {
Expand Down Expand Up @@ -679,7 +679,7 @@ function test_updatecontactdb_authors() {

$u = $this->conf->fresh_user_by_email("nonsense@_.com");
xassert(!!$u);
xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->email, "NONSENSE@_.com");
xassert_eqq($u->firstName, "Nonsense");
xassert_eqq($u->lastName, "Person");
Expand All @@ -691,12 +691,12 @@ function test_updatecontactdb_authors() {

$u = $this->conf->fresh_cdb_user_by_email("nonsense@_.com");
xassert(!!$u);
xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->email, "NONSENSE@_.com");
xassert_eqq($u->firstName, "Nonsense");
xassert_eqq($u->lastName, "Person");
xassert_eqq($u->affiliation, "Nonsense University");
xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
}

/** @suppress PhanAccessReadOnlyProperty */
Expand Down Expand Up @@ -815,7 +815,7 @@ function test_cdb_new_locally_disabled_user() {
xassert_gt($pid, 0);

$u = $this->conf->fresh_cdb_user_by_email("belling@_.com");
xassert_eqq($u->disablement & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_ROLE);
xassert_eqq($u->disabled_flags() & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_ROLE);
$d = Dbl::fetch_ivalue($this->conf->dblink, "select disabled from ContactInfo where email='belling@_.com'") ?? -1;
xassert_eqq($d & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_USER);
$d = Dbl::fetch_ivalue($this->conf->contactdb(), "select disabled from ContactInfo where email='belling@_.com'") ?? -1;
Expand All @@ -831,9 +831,9 @@ function test_cdb_new_locally_disabled_user() {
"affiliation" => "Fart University",
"disablement" => Contact::DISABLEMENT_USER
])->store();
xassert_eqq($u->disablement & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_USER | Contact::DISABLEMENT_ROLE);
xassert_eqq($u->disabled_flags() & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_USER | Contact::DISABLEMENT_ROLE);
$uu = $u->cdb_user();
xassert_eqq($uu->disablement & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_ROLE);
xassert_eqq($uu->disabled_flags() & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_ROLE);
$d = Dbl::fetch_ivalue($this->conf->dblink, "select disabled from ContactInfo where email='kitcat@_.com'") ?? -1;
xassert_eqq($d & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_USER);
$d = Dbl::fetch_ivalue($this->conf->contactdb(), "select disabled from ContactInfo where email='kitcat@_.com'") ?? -1;
Expand All @@ -842,10 +842,10 @@ function test_cdb_new_locally_disabled_user() {
Dbl::qe($this->conf->dblink, "insert into ContactInfo set firstName='Martha', lastName='Tanner', email='marthatanner@_.com', affiliation='University of Connecticut', password='', disabled=1");
Dbl::qe($this->conf->contactdb(), "insert into ContactInfo set firstName='Martha', lastName='Tanner', email='marthatanner@_.com', affiliation='University of Connecticut', password=' unset', disabled=2");
$u = $this->conf->fresh_user_by_email("marthatanner@_.com");
xassert_eqq($u->disablement & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_ROLE | Contact::DISABLEMENT_USER);
xassert_eqq($u->disabled_flags() & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_ROLE | Contact::DISABLEMENT_USER);
$u->update_cdb();
$uu = $this->conf->fresh_cdb_user_by_email("marthatanner@_.com");
xassert_eqq($uu->disablement & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_ROLE);
xassert_eqq($uu->disabled_flags() & ~Contact::DISABLEMENT_PLACEHOLDER, Contact::DISABLEMENT_ROLE);
$d = Dbl::fetch_ivalue($this->conf->contactdb(), "select disabled from ContactInfo where email='marthatanner@_.com'") ?? -1;
xassert_eqq($d & ~Contact::DISABLEMENT_PLACEHOLDER, 0);

Expand Down
8 changes: 4 additions & 4 deletions test/t_login.php
Original file line number Diff line number Diff line change
Expand Up @@ -123,11 +123,11 @@ function test_login_placeholder() {
// but user is still a placeholder
$u = $this->conf->checked_user_by_email($email);
xassert(!!$u);
xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
if ($this->cdb) {
$u = $this->conf->checked_cdb_user_by_email($email);
xassert(!!$u);
xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
}

$this->conf->invalidate_caches(["users" => true, "cdb" => true]);
Expand All @@ -152,11 +152,11 @@ function test_login_placeholder() {
// user is no longer a placeholder
$u = $this->conf->checked_user_by_email($email);
xassert(!!$u);
xassert_eqq($u->disablement, 0);
xassert_eqq($u->disabled_flags(), 0);
if ($this->cdb) {
$u = $this->conf->checked_cdb_user_by_email($email);
xassert(!!$u);
xassert_eqq($u->disablement, 0);
xassert_eqq($u->disabled_flags(), 0);
}
}

Expand Down
2 changes: 1 addition & 1 deletion test/t_paperstatus.php
Original file line number Diff line number Diff line change
Expand Up @@ -631,7 +631,7 @@ function test_save_new_authors() {
$attenu = $this->conf->user_by_email("atten@_.com");
xassert_eqq($nprow1->conflict_type($attenu), CONFLICT_AUTHOR);
xassert_eqq($attenu->roles & Contact::ROLE_DBMASK, 0);
xassert_eqq($attenu->disablement, Contact::DISABLEMENT_PLACEHOLDER);
xassert_eqq($attenu->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER);
xassert($nprow1->timeSubmitted > 0);
xassert($nprow1->timeWithdrawn <= 0);
xassert(!$nprow1->option(1));
Expand Down
Loading

0 comments on commit 4a06ad4

Please sign in to comment.