Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F569626
DiffusionRepositoryIdentityEngine.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
DiffusionRepositoryIdentityEngine.php
View Options
<?php
final
class
DiffusionRepositoryIdentityEngine
extends
Phobject
{
private
$viewer
;
private
$sourcePHID
;
private
$dryRun
;
public
function
setViewer
(
PhabricatorUser
$viewer
)
{
$this
->
viewer
=
$viewer
;
return
$this
;
}
public
function
getViewer
()
{
return
$this
->
viewer
;
}
public
function
setSourcePHID
(
$source_phid
)
{
$this
->
sourcePHID
=
$source_phid
;
return
$this
;
}
public
function
getSourcePHID
()
{
if
(!
$this
->
sourcePHID
)
{
throw
new
PhutilInvalidStateException
(
'setSourcePHID'
);
}
return
$this
->
sourcePHID
;
}
public
function
setDryRun
(
$dry_run
)
{
$this
->
dryRun
=
$dry_run
;
return
$this
;
}
public
function
getDryRun
()
{
return
$this
->
dryRun
;
}
public
function
newResolvedIdentity
(
$raw_identity
)
{
$identity
=
$this
->
loadRawIdentity
(
$raw_identity
);
if
(!
$identity
)
{
$identity
=
$this
->
newIdentity
(
$raw_identity
);
}
return
$this
->
updateIdentity
(
$identity
);
}
public
function
newUpdatedIdentity
(
PhabricatorRepositoryIdentity
$identity
)
{
return
$this
->
updateIdentity
(
$identity
);
}
private
function
loadRawIdentity
(
$raw_identity
)
{
$viewer
=
$this
->
getViewer
();
return
id
(
new
PhabricatorRepositoryIdentityQuery
())
->
setViewer
(
$viewer
)
->
withIdentityNames
(
array
(
$raw_identity
))
->
executeOne
();
}
private
function
newIdentity
(
$raw_identity
)
{
$source_phid
=
$this
->
getSourcePHID
();
return
id
(
new
PhabricatorRepositoryIdentity
())
->
setAuthorPHID
(
$source_phid
)
->
setIdentityName
(
$raw_identity
);
}
private
function
resolveIdentity
(
PhabricatorRepositoryIdentity
$identity
)
{
$raw_identity
=
$identity
->
getIdentityName
();
return
id
(
new
DiffusionResolveUserQuery
())
->
withName
(
$raw_identity
)
->
execute
();
}
private
function
updateIdentity
(
PhabricatorRepositoryIdentity
$identity
)
{
// If we're updating an identity and it has a manual user PHID associated
// with it but the user is no longer valid, remove the value. This likely
// corresponds to a user that was destroyed.
$assigned_phid
=
$identity
->
getManuallySetUserPHID
();
$unassigned
=
DiffusionIdentityUnassignedDatasource
::
FUNCTION_TOKEN
;
if
(
$assigned_phid
&&
(
$assigned_phid
!==
$unassigned
))
{
$viewer
=
$this
->
getViewer
();
$user
=
id
(
new
PhabricatorPeopleQuery
())
->
setViewer
(
$viewer
)
->
withPHIDs
(
array
(
$assigned_phid
))
->
executeOne
();
if
(!
$user
)
{
$identity
->
setManuallySetUserPHID
(
null
);
}
}
$resolved_phid
=
$this
->
resolveIdentity
(
$identity
);
$identity
->
setAutomaticGuessedUserPHID
(
$resolved_phid
);
if
(
$this
->
getDryRun
())
{
$identity
->
makeEphemeral
();
}
else
{
$identity
->
save
();
}
return
$identity
;
}
public
function
didUpdateEmailAddress
(
$raw_address
)
{
PhabricatorWorker
::
scheduleTask
(
'PhabricatorRepositoryIdentityChangeWorker'
,
array
(
'emailAddresses'
=>
array
(
$raw_address
),
));
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Tue, May 13, 2:52 PM (2 d)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
117571
Default Alt Text
DiffusionRepositoryIdentityEngine.php (2 KB)
Attached To
Mode
rP Phorge
Attached
Detach File
Event Timeline
Log In to Comment