Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Paste
P1790
phab.php
Active
Public
Actions
Authored by
ftdysa
on May 22 2015, 12:11 PM.
Edit Paste
Archive Paste
View Raw File
Subscribe
Mute Notifications
Award Token
Flag For Later
Tags
None
Referenced Files
F413434: phab.php
May 22 2015, 12:11 PM
2015-05-22 12:11:59 (UTC+0)
Subscribers
None
<?php
function
create_custom_field_transaction
(
$task
,
$user
,
$name
,
$value
,
$template
,
$date
)
{
$field_list
=
PhabricatorCustomField
::
getObjectFields
(
$task
,
PhabricatorCustomField
::
ROLE_EDIT
);
foreach
(
$field_list
->
getFields
()
as
$field
)
{
$field
->
setObject
(
$task
);
$field
->
setViewer
(
$user
);
}
$field_list
->
readFieldsFromStorage
(
$task
);
$aux_fields
=
$field_list
->
getFields
();
$old_values
=
array
();
foreach
(
$aux_fields
as
$aux_arr_key
=>
$aux_field
)
{
if
(
$aux_arr_key
==
"std:maniphest:"
.
$name
)
{
$aux_old_value
=
$aux_field
->
getOldValueForApplicationTransactions
();
$aux_field
->
setValueFromStorage
(
$value
);
$aux_new_value
=
$aux_field
->
getNewValueForApplicationTransactions
();
$placeholder_editor
=
new
PhabricatorUserProfileEditor
();
$field_errors
=
$aux_field
->
validateApplicationTransactions
(
$placeholder_editor
,
PhabricatorTransactions
::
TYPE_CUSTOMFIELD
,
array
(
id
(
new
ManiphestTransaction
())
->
setOldValue
(
$aux_old_value
)
->
setNewValue
(
$aux_new_value
),
));
foreach
(
$field_errors
as
$error
)
{
$errors
[]
=
$error
->
getMessage
();
}
$old_values
[
$aux_field
->
getFieldKey
()]
=
$aux_old_value
;
}
}
$transactions
=
array
();
foreach
(
$aux_fields
as
$aux_arr_key
=>
$aux_field
)
{
if
(
$aux_arr_key
==
"std:maniphest:"
.
$name
)
{
$transaction
=
clone
$template
;
$transaction
->
setTransactionType
(
PhabricatorTransactions
::
TYPE_CUSTOMFIELD
);
$aux_key
=
$aux_field
->
getFieldKey
();
$transaction
->
setMetadataValue
(
'customfield:key'
,
$aux_key
);
$old
=
idx
(
$old_values
,
$aux_key
);
$new
=
$aux_field
->
getNewValueForApplicationTransactions
();
$transaction
->
setOldValue
(
$old
);
$transaction
->
setNewValue
(
$new
);
$transaction
->
setOverrideDate
(
$date
);
$transactions
[]
=
$transaction
;
}
}
return
$transactions
;
}
function
create_task
(
$user
,
$id
,
$title
,
$projects
,
$description
,
$assign_user
,
$date
,
$ccs
,
$priority
)
{
/* create task */
$task
=
ManiphestTask
::
initializeNewTask
(
$user
);
$task
->
setTitle
(
$title
);
$task
->
setProjectPHIDs
(
$projects
);
$task
->
setCCPHIDs
(
$ccs
);
$task
->
setDescription
(
$description
);
$task
->
setPriority
(
$priority
);
$task
->
setOverrideDate
(
$date
);
$task
->
setOverrideID
(
$id
);
if
(
$assign_user
)
$task
->
setOwnerPHID
(
$assign_user
->
getPHID
());
/* content source */
$content_source
=
PhabricatorContentSource
::
newForSource
(
PhabricatorContentSource
::
SOURCE_MIGRATION
,
array
());
/* transactions */
$changes
=
array
();
$changes
[
ManiphestTransaction
::
TYPE_STATUS
]
=
ManiphestTaskStatus
::
STATUS_OPEN
;
$changes
[
PhabricatorTransactions
::
TYPE_VIEW_POLICY
]
=
'public'
;
$changes
[
PhabricatorTransactions
::
TYPE_EDIT_POLICY
]
=
lookup_project
(
"Administrators"
)->
getPHID
();
$template
=
new
ManiphestTransaction
();
$transactions
=
array
();
foreach
(
$changes
as
$type
=>
$value
)
{
$transaction
=
clone
$template
;
$transaction
->
setTransactionType
(
$type
);
$transaction
->
setNewValue
(
$value
);
$transaction
->
setOverrideDate
(
$date
);
$transactions
[]
=
$transaction
;
}
$editor
=
id
(
new
ManiphestTransactionEditor
())
->
setActor
(
$user
)
->
setContentSource
(
$content_source
)
->
setContinueOnNoEffect
(
true
)
->
applyTransactions
(
$task
,
$transactions
);
return
$task
;
}
function
create_comment
(
$task
,
$user
,
$description
,
$date
)
{
/* content source */
$content_source
=
PhabricatorContentSource
::
newForSource
(
PhabricatorContentSource
::
SOURCE_UNKNOWN
,
array
());
/* transactions */
$comment
=
id
(
new
ManiphestTransactionComment
());
$comment
->
setContent
(
$description
);
$transaction
=
id
(
new
ManiphestTransaction
());
$transaction
->
setTransactionType
(
PhabricatorTransactions
::
TYPE_COMMENT
);
$transaction
->
setOverrideDate
(
$date
);
$transaction
->
attachComment
(
$comment
);
$transactions
=
array
();
$transactions
[]
=
$transaction
;
/* apply */
$editor
=
id
(
new
ManiphestTransactionEditor
())
->
setActor
(
$user
)
->
setContentSource
(
$content_source
)
->
setContinueOnMissingFields
(
true
)
->
applyTransactions
(
$task
,
$transactions
);
}
function
create_file
(
$task
,
$user
,
$name
,
$contents
,
$date
)
{
/* content source */
$content_source
=
PhabricatorContentSource
::
newForSource
(
PhabricatorContentSource
::
SOURCE_UNKNOWN
,
array
());
/* files */
$files
=
array
();
$file
=
PhabricatorFile
::
newFromFileData
(
$contents
,
array
(
'authorPHID'
=>
$user
->
getPHID
(),
'name'
=>
$name
,
));
$files
[]
=
$file
;
$files
=
mpull
(
$files
,
'getPHID'
,
'getPHID'
);
$new
=
$task
->
getAttached
();
foreach
(
$files
as
$phid
)
{
if
(
empty
(
$new
[
PhabricatorFilePHIDTypeFile
::
TYPECONST
]))
{
$new
[
PhabricatorFilePHIDTypeFile
::
TYPECONST
]
=
array
();
}
$new
[
PhabricatorFilePHIDTypeFile
::
TYPECONST
][
$phid
]
=
array
();
}
/* transaction */
$transaction
=
new
ManiphestTransaction
();
$transaction
->
setTransactionType
(
ManiphestTransaction
::
TYPE_ATTACH
);
$transaction
->
setNewValue
(
$new
);
$transaction
->
setOverrideDate
(
$date
);
$transactions
[]
=
$transaction
;
/* apply */
$editor
=
id
(
new
ManiphestTransactionEditor
())
->
setActor
(
$user
)
->
setContentSource
(
$content_source
)
->
setContinueOnMissingFields
(
true
)
->
applyTransactions
(
$task
,
$transactions
);
}
function
set_status
(
$task
,
$user
,
$status
,
$date
)
{
/* content source */
$content_source
=
PhabricatorContentSource
::
newForSource
(
PhabricatorContentSource
::
SOURCE_UNKNOWN
,
array
());
/* transactions */
$changes
=
array
();
$changes
[
ManiphestTransaction
::
TYPE_STATUS
]
=
$status
;
$template
=
new
ManiphestTransaction
();
$transactions
=
array
();
foreach
(
$changes
as
$type
=>
$value
)
{
$transaction
=
clone
$template
;
$transaction
->
setTransactionType
(
$type
);
$transaction
->
setNewValue
(
$value
);
$transaction
->
setOverrideDate
(
$date
);
$transactions
[]
=
$transaction
;
}
$editor
=
id
(
new
ManiphestTransactionEditor
())
->
setActor
(
$user
)
->
setContentSource
(
$content_source
)
->
setContinueOnNoEffect
(
true
)
->
applyTransactions
(
$task
,
$transactions
);
}
function
create_project
(
$name
,
$username
,
$active
,
$membernames
,
$blurb
=
''
,
$admincontrol
=
false
)
{
$user
=
lookup_user
(
$username
);
/* create project */
$project
=
new
PhabricatorProject
();
$project
->
setAuthorPHID
(
$user
->
getPHID
());
$project
->
attachMemberPHIDs
(
array
());
$profile
=
new
PhabricatorProjectProfile
();
$xactions
=
array
();
if
(
$admincontrol
)
$editpolicy
=
"admin"
;
else
$editpolicy
=
lookup_project
(
"Moderators"
)->
getPHID
();
/* policy */
$project
->
setViewPolicy
(
"public"
);
$project
->
setEditPolicy
(
$editpolicy
);
$project
->
setJoinPolicy
(
$editpolicy
);
/* archived */
if
(!
$active
)
$project
->
setStatus
(
PhabricatorProjectStatus
::
STATUS_ARCHIVED
);
/* name transaction */
$xaction
=
new
PhabricatorProjectTransaction
();
$xaction
->
setTransactionType
(
PhabricatorProjectTransaction
::
TYPE_NAME
);
$xaction
->
setNewValue
(
$name
);
$xactions
[]
=
$xaction
;
/* members transaction */
$member_phids
=
array
();
foreach
(
$membernames
as
$membername
)
{
$member_phids
[]
=
lookup_user
(
$membername
)->
getPHID
();
}
$xaction
=
new
PhabricatorProjectTransaction
();
$xaction
->
setTransactionType
(
PhabricatorProjectTransaction
::
TYPE_MEMBERS
);
$xaction
->
setNewValue
(
$member_phids
);
$xactions
[]
=
$xaction
;
/* apply transaction */
$editor
=
new
PhabricatorProjectEditor
(
$project
);
$editor
->
setActor
(
$user
);
$editor
->
applyTransactions
(
$xactions
);
/* set blurb */
$profile
->
setBlurb
(
$blurb
);
$project
->
save
();
$profile
->
setProjectPHID
(
$project
->
getPHID
());
$profile
->
save
();
}
Event Timeline
ftdysa
edited the content of this paste.
(Show Details)
May 22 2015, 12:11 PM
2015-05-22 12:11:59 (UTC+0)
ftdysa
changed the title of this paste from untitled to
phab.php
.
ftdysa
updated the paste's language from
autodetect
to
autodetect
.
Log In to Comment