Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F532019
HeraldRuleManagementWorkflow.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
HeraldRuleManagementWorkflow.php
View Options
<?php
final
class
HeraldRuleManagementWorkflow
extends
HeraldManagementWorkflow
{
protected
function
didConstruct
()
{
$this
->
setName
(
'rule'
)
->
setExamples
(
'**rule** --rule __rule__ --disable'
)
->
setSynopsis
(
pht
(
'Modify a rule, bypassing policies. This workflow can disable '
.
'problematic personal rules.'
))
->
setArguments
(
array
(
array
(
'name'
=>
'rule'
,
'param'
=>
'rule'
,
'help'
=>
pht
(
'Apply changes to this rule.'
),
),
array
(
'name'
=>
'disable'
,
'help'
=>
pht
(
'Disable the rule.'
),
),
array
(
'name'
=>
'enable'
,
'help'
=>
pht
(
'Enable the rule.'
),
),
));
}
public
function
execute
(
PhutilArgumentParser
$args
)
{
$viewer
=
$this
->
getViewer
();
$rule_name
=
$args
->
getArg
(
'rule'
);
if
(!
strlen
(
$rule_name
))
{
throw
new
PhutilArgumentUsageException
(
pht
(
'Specify a rule to edit with "--rule <id|monogram>".'
));
}
if
(
preg_match
(
'/^H
\d
+/'
,
$rule_name
))
{
$rule_id
=
substr
(
$rule_name
,
1
);
}
else
{
$rule_id
=
$rule_name
;
}
$rule
=
id
(
new
HeraldRuleQuery
())
->
setViewer
(
$viewer
)
->
withIDs
(
array
(
$rule_id
))
->
executeOne
();
if
(!
$rule
)
{
throw
new
PhutilArgumentUsageException
(
pht
(
'Unable to load Herald rule with ID or monogram "%s".'
,
$rule_name
));
}
$is_disable
=
$args
->
getArg
(
'disable'
);
$is_enable
=
$args
->
getArg
(
'enable'
);
$xactions
=
array
();
if
(
$is_disable
&&
$is_enable
)
{
throw
new
PhutilArgumentUsageException
(
pht
(
'Specify "--enable" or "--disable", but not both.'
));
}
else
if
(
$is_disable
||
$is_enable
)
{
$xactions
[]
=
$rule
->
getApplicationTransactionTemplate
()
->
setTransactionType
(
HeraldRuleDisableTransaction
::
TRANSACTIONTYPE
)
->
setNewValue
(
$is_disable
);
}
if
(!
$xactions
)
{
throw
new
PhutilArgumentUsageException
(
pht
(
'Use flags to specify at least one edit to apply to the '
.
'rule (for example, use "--disable" to disable a rule).'
));
}
$herald_phid
=
id
(
new
PhabricatorHeraldApplication
())->
getPHID
();
$editor
=
$rule
->
getApplicationTransactionEditor
()
->
setActor
(
$viewer
)
->
setActingAsPHID
(
$herald_phid
)
->
setContentSource
(
$this
->
newContentSource
())
->
setContinueOnMissingFields
(
true
)
->
setContinueOnNoEffect
(
true
);
echo
tsprintf
(
"%s
\n
"
,
pht
(
'Applying changes to %s: %s...'
,
$rule
->
getMonogram
(),
$rule
->
getName
()));
$editor
->
applyTransactions
(
$rule
,
$xactions
);
echo
tsprintf
(
"%s
\n
"
,
pht
(
'Done.'
));
return
0
;
}
}
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Mon, May 12, 4:18 AM (1 d, 23 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
115489
Default Alt Text
HeraldRuleManagementWorkflow.php (2 KB)
Attached To
Mode
rP Phorge
Attached
Detach File
Event Timeline
Log In to Comment