mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-30 18:52:42 +01:00
ac87ab275a
Summary: See <https://github.com/phacility/phabricator/issues/760>. We removed these methods in D10832 but still need the migration to be able to do project checks. Test Plan: Ran on a test wiki with `/`, `/projects/` and `/projects/example/`. The first two pages didn't try to use project policies; the third one did. Reviewers: btrahan, chad Reviewed By: chad Subscribers: epriestley Differential Revision: https://secure.phabricator.com/D10836
55 lines
1.7 KiB
PHP
55 lines
1.7 KiB
PHP
<?php
|
|
|
|
$table = new PhrictionDocument();
|
|
$conn_w = $table->establishConnection('w');
|
|
|
|
echo "Populating Phriction policies.\n";
|
|
|
|
$default_view_policy = PhabricatorPolicies::POLICY_USER;
|
|
$default_edit_policy = PhabricatorPolicies::POLICY_USER;
|
|
|
|
foreach (new LiskMigrationIterator($table) as $doc) {
|
|
$id = $doc->getID();
|
|
|
|
if ($doc->getViewPolicy() && $doc->getEditPolicy()) {
|
|
echo "Skipping doc $id; already has policy set.\n";
|
|
continue;
|
|
}
|
|
|
|
// If this was previously a magical project wiki page (under projects/, but
|
|
// not projects/ itself) we need to apply the project policies. Otherwise,
|
|
// apply the default policies.
|
|
$slug = $doc->getSlug();
|
|
$slug = PhabricatorSlug::normalize($slug);
|
|
$prefix = 'projects/';
|
|
if (($slug != $prefix) && (strncmp($slug, $prefix, strlen($prefix)) === 0)) {
|
|
$parts = explode('/', $slug);
|
|
$project_slug = $parts[1].'/';
|
|
|
|
$project_slugs = array($project_slug);
|
|
$project = id(new PhabricatorProjectQuery())
|
|
->setViewer(PhabricatorUser::getOmnipotentUser())
|
|
->withPhrictionSlugs($project_slugs)
|
|
->executeOne();
|
|
|
|
if ($project) {
|
|
|
|
$view_policy = nonempty($project->getViewPolicy(), $default_view_policy);
|
|
$edit_policy = nonempty($project->getEditPolicy(), $default_edit_policy);
|
|
|
|
$project_name = $project->getName();
|
|
echo "Migrating doc $id to project policy $project_name...\n";
|
|
$doc->setViewPolicy($view_policy);
|
|
$doc->setEditPolicy($edit_policy);
|
|
$doc->save();
|
|
continue;
|
|
}
|
|
}
|
|
|
|
echo "Migrating doc $id to default install policy...\n";
|
|
$doc->setViewPolicy($default_view_policy);
|
|
$doc->setEditPolicy($default_edit_policy);
|
|
$doc->save();
|
|
}
|
|
|
|
echo "Done.\n";
|