1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-14 02:42:40 +01:00

Give PhrictionContent objects (older versions of wiki pages) legitimate PHIDs

Summary: Ref T13077. Prepares for modern API access to document history using standard "v3" APIs.

Test Plan: Ran migration, verified PHIDs appeared in the database. Created/edited a document, got even more PHIDs in the database.

Maniphest Tasks: T13077

Differential Revision: https://secure.phabricator.com/D19092
This commit is contained in:
epriestley 2018-02-15 04:07:32 -08:00
parent 463dda98ed
commit e492c717c6
6 changed files with 119 additions and 1 deletions

View file

@ -0,0 +1,2 @@
ALTER TABLE {$NAMESPACE}_phriction.phriction_content
ADD phid VARBINARY(64) NOT NULL;

View file

@ -0,0 +1,17 @@
<?php
$table = new PhrictionContent();
$conn = $table->establishConnection('w');
foreach (new LiskMigrationIterator($table) as $row) {
if (strlen($row->getPHID())) {
continue;
}
queryfx(
$conn,
'UPDATE %T SET phid = %s WHERE id = %d',
$table->getTableName(),
$table->generatePHID(),
$row->getID());
}

View file

@ -4845,6 +4845,8 @@ phutil_register_library_map(array(
'PhrictionConduitAPIMethod' => 'applications/phriction/conduit/PhrictionConduitAPIMethod.php', 'PhrictionConduitAPIMethod' => 'applications/phriction/conduit/PhrictionConduitAPIMethod.php',
'PhrictionConstants' => 'applications/phriction/constants/PhrictionConstants.php', 'PhrictionConstants' => 'applications/phriction/constants/PhrictionConstants.php',
'PhrictionContent' => 'applications/phriction/storage/PhrictionContent.php', 'PhrictionContent' => 'applications/phriction/storage/PhrictionContent.php',
'PhrictionContentPHIDType' => 'applications/phriction/phid/PhrictionContentPHIDType.php',
'PhrictionContentQuery' => 'applications/phriction/query/PhrictionContentQuery.php',
'PhrictionController' => 'applications/phriction/controller/PhrictionController.php', 'PhrictionController' => 'applications/phriction/controller/PhrictionController.php',
'PhrictionCreateConduitAPIMethod' => 'applications/phriction/conduit/PhrictionCreateConduitAPIMethod.php', 'PhrictionCreateConduitAPIMethod' => 'applications/phriction/conduit/PhrictionCreateConduitAPIMethod.php',
'PhrictionDAO' => 'applications/phriction/storage/PhrictionDAO.php', 'PhrictionDAO' => 'applications/phriction/storage/PhrictionDAO.php',
@ -10757,6 +10759,8 @@ phutil_register_library_map(array(
'PhrictionDAO', 'PhrictionDAO',
'PhabricatorMarkupInterface', 'PhabricatorMarkupInterface',
), ),
'PhrictionContentPHIDType' => 'PhabricatorPHIDType',
'PhrictionContentQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'PhrictionController' => 'PhabricatorController', 'PhrictionController' => 'PhabricatorController',
'PhrictionCreateConduitAPIMethod' => 'PhrictionConduitAPIMethod', 'PhrictionCreateConduitAPIMethod' => 'PhrictionConduitAPIMethod',
'PhrictionDAO' => 'PhabricatorLiskDAO', 'PhrictionDAO' => 'PhabricatorLiskDAO',

View file

@ -0,0 +1,38 @@
<?php
final class PhrictionContentPHIDType
extends PhabricatorPHIDType {
const TYPECONST = 'WRDS';
public function getTypeName() {
return pht('Phriction Content');
}
public function newObject() {
return new PhrictionContent();
}
public function getPHIDTypeApplicationClass() {
return 'PhabricatorPhrictionApplication';
}
protected function buildQueryForObjects(
PhabricatorObjectQuery $query,
array $phids) {
return id(new PhrictionContentQuery())
->withPHIDs($phids);
}
public function loadHandles(
PhabricatorHandleQuery $query,
array $handles,
array $objects) {
foreach ($handles as $phid => $handle) {
$content = $objects[$phid];
}
}
}

View file

@ -0,0 +1,51 @@
<?php
final class PhrictionContentQuery
extends PhabricatorCursorPagedPolicyAwareQuery {
private $ids;
private $phids;
public function withIDs(array $ids) {
$this->ids = $ids;
return $this;
}
public function withPHIDs(array $phids) {
$this->phids = $phids;
return $this;
}
public function newResultObject() {
return new PhrictionContent();
}
protected function loadPage() {
return $this->loadStandardPage($this->newResultObject());
}
protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) {
$where = parent::buildWhereClauseParts($conn);
if ($this->ids !== null) {
$where[] = qsprintf(
$conn,
'id IN (%Ld)',
$this->ids);
}
if ($this->phids !== null) {
$where[] = qsprintf(
$conn,
'phid IN (%Ls)',
$this->phids);
}
return $where;
}
public function getQueryApplicationClass() {
return 'PhabricatorPhrictionApplication';
}
}

View file

@ -3,7 +3,8 @@
/** /**
* @task markup Markup Interface * @task markup Markup Interface
*/ */
final class PhrictionContent extends PhrictionDAO final class PhrictionContent
extends PhrictionDAO
implements PhabricatorMarkupInterface { implements PhabricatorMarkupInterface {
const MARKUP_FIELD_BODY = 'markup:body'; const MARKUP_FIELD_BODY = 'markup:body';
@ -33,6 +34,7 @@ final class PhrictionContent extends PhrictionDAO
protected function getConfiguration() { protected function getConfiguration() {
return array( return array(
self::CONFIG_AUX_PHID => true,
self::CONFIG_COLUMN_SCHEMA => array( self::CONFIG_COLUMN_SCHEMA => array(
'version' => 'uint32', 'version' => 'uint32',
'title' => 'sort', 'title' => 'sort',
@ -60,6 +62,10 @@ final class PhrictionContent extends PhrictionDAO
) + parent::getConfiguration(); ) + parent::getConfiguration();
} }
public function getPHIDType() {
return PhrictionContentPHIDType::TYPECONST;
}
/* -( Markup Interface )--------------------------------------------------- */ /* -( Markup Interface )--------------------------------------------------- */