diff --git a/src/author.php b/src/author.php index 47621bf3e3..2be7f5cc91 100644 --- a/src/author.php +++ b/src/author.php @@ -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; } @@ -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) { diff --git a/src/contact.php b/src/contact.php index eedab382d1..78e9004db1 100644 --- a/src/contact.php +++ b/src/contact.php @@ -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; diff --git a/src/options/o_contacts.php b/src/options/o_contacts.php index eba3e34e47..198d48e231 100644 --- a/src/options/o_contacts.php +++ b/src/options/o_contacts.php @@ -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) @@ -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), diff --git a/src/pages/p_log.php b/src/pages/p_log.php index 05cdfcc6af..081bd426d1 100644 --- a/src/pages/p_log.php +++ b/src/pages/p_log.php @@ -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 = '' . $user->name_h(NAME_E) . ''; } else { $t = $user->name_h(NAME_P); @@ -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 = '' . $user->name_h(NAME_E) . ''; } else { diff --git a/src/userstatus.php b/src/userstatus.php index 137814c1fd..ebb1f762c8 100644 --- a/src/userstatus.php +++ b/src/userstatus.php @@ -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); @@ -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(); } @@ -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 @@ -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; @@ -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 '
'; - 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]), '

'; if (!$us->is_auth_user()) { echo '
'; - $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 = "

This account is disabled on all sites.

"; diff --git a/test/t_cdb.php b/test/t_cdb.php index 795f9714e4..9d531a9ecb 100644 --- a/test/t_cdb.php +++ b/test/t_cdb.php @@ -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"]); @@ -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"); @@ -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"]); @@ -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() { @@ -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("cengiz@isi.edu"); 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 @@ -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("pavlin@isi.edu"); - 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("pavlin@isi.edu"); - 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" => "pavlin@isi.edu"]); - xassert_eqq($acct->disablement, 0); + xassert_eqq($acct->disabled_flags(), 0); $acct = $this->conf->fresh_cdb_user_by_email("pavlin@isi.edu"); - 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 = "lam@cs.utexas.edu"; $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); @@ -592,11 +592,11 @@ function test_placeholder() { $u = $this->conf->checked_user_by_email("scapegoat@harvard.edu"); 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, [ @@ -609,11 +609,11 @@ function test_placeholder() { $u = $this->conf->checked_user_by_email("scapegoat@harvard.edu"); 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 @@ -625,11 +625,11 @@ function test_placeholder() { $u = $this->conf->checked_user_by_email("scapegoat@harvard.edu"); 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 @@ -643,11 +643,11 @@ function test_placeholder() { $u = $this->conf->checked_user_by_email("scapegoat@harvard.edu"); 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() { @@ -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"); @@ -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 */ @@ -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; @@ -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; @@ -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); diff --git a/test/t_login.php b/test/t_login.php index ffa32444c1..bb84963c86 100644 --- a/test/t_login.php +++ b/test/t_login.php @@ -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]); @@ -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); } } diff --git a/test/t_paperstatus.php b/test/t_paperstatus.php index 7ad3c46c10..b7a1d2222d 100644 --- a/test/t_paperstatus.php +++ b/test/t_paperstatus.php @@ -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)); diff --git a/test/t_permission.php b/test/t_permission.php index c8132fe0e9..98c41406eb 100644 --- a/test/t_permission.php +++ b/test/t_permission.php @@ -1608,7 +1608,8 @@ function test_author_view_capability_users() { function test_make_anonymous_user_nologin() { xassert(!maybe_user("anonymous10")); $u = Contact::make_keyed($this->conf, [ - "email" => "anonymous10", "disablement" => Contact::DISABLEMENT_USER + "email" => "anonymous10", + "disablement" => Contact::DISABLEMENT_USER ])->store(Contact::SAVE_ANY_EMAIL); xassert($u->contactId > 0); xassert_eqq($this->conf->fetch_value("select password from ContactInfo where email='anonymous10'"), " nologin"); @@ -1636,7 +1637,7 @@ function test_user_registration() { // registering email of an author grants author privilege $u = maybe_user("thalerd@eecs.umich.edu"); xassert(!!$u); - xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER); + xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER); $u = Contact::make_email($this->conf, "thalerd@eecs.umich.edu")->store(); assert($u !== null); xassert($u->contactId > 0); @@ -1644,13 +1645,13 @@ function test_user_registration() { xassert_eqq($u->firstName, "David"); xassert_eqq($u->lastName, "Thaler"); xassert_eqq($u->affiliation, "University of Michigan"); - xassert_eqq($u->disablement, 0); + xassert_eqq($u->disabled_flags(), 0); xassert($this->conf->checked_paper_by_id(27)->has_author($u)); // registration-time name overrides author name $u = maybe_user("schwartz@ctr.columbia.edu"); xassert(!!$u); - xassert_eqq($u->disablement, Contact::DISABLEMENT_PLACEHOLDER); + xassert_eqq($u->disabled_flags(), Contact::DISABLEMENT_PLACEHOLDER); $u = Contact::make_keyed($this->conf, ["email" => "schwartz@ctr.columbia.edu", "first" => "cengiz!", "last" => "SCHwarTZ", "affiliation" => "Coyumbia"])->store(); assert($u !== null); xassert($u->contactId > 0); @@ -1658,7 +1659,7 @@ function test_user_registration() { xassert_eqq($u->firstName, "cengiz!"); xassert_eqq($u->lastName, "SCHwarTZ"); xassert_eqq($u->affiliation, "Coyumbia"); - xassert_eqq($u->disablement, 0); + xassert_eqq($u->disabled_flags(), 0); xassert($this->conf->checked_paper_by_id(26)->has_author($u)); } @@ -1874,7 +1875,7 @@ function test_withdraw_review_interaction() { function test_withdraw_notification() { $u = $this->conf->checked_user_by_email("anja@research.att.com"); - xassert_eqq($u->disablement, 0); + xassert_eqq($u->disabled_flags(), 0); MailChecker::clear(); xassert_assign($this->u_chair, "paper,action,reason\n16,withdraw,Suckola\n"); MailChecker::check_db("withdraw-16-admin-notify");