Page MenuHomePhabricator

D17865.diff
No OneTemporary

D17865.diff

diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -4359,10 +4359,11 @@
'PholioDAO' => 'applications/pholio/storage/PholioDAO.php',
'PholioDefaultEditCapability' => 'applications/pholio/capability/PholioDefaultEditCapability.php',
'PholioDefaultViewCapability' => 'applications/pholio/capability/PholioDefaultViewCapability.php',
- 'PholioDescriptionTransaction' => 'applications/pholio/xaction/PholioDescriptionTransaction.php',
'PholioImage' => 'applications/pholio/storage/PholioImage.php',
+ 'PholioImageNameTransaction' => 'applications/pholio/xaction/PholioImageNameTransaction.php',
'PholioImagePHIDType' => 'applications/pholio/phid/PholioImagePHIDType.php',
'PholioImageQuery' => 'applications/pholio/query/PholioImageQuery.php',
+ 'PholioImageTransactionType' => 'applications/pholio/xaction/PholioImageTransactionType.php',
'PholioImageUploadController' => 'applications/pholio/controller/PholioImageUploadController.php',
'PholioInlineController' => 'applications/pholio/controller/PholioInlineController.php',
'PholioInlineListController' => 'applications/pholio/controller/PholioInlineListController.php',
@@ -4371,6 +4372,7 @@
'PholioMockAuthorHeraldField' => 'applications/pholio/herald/PholioMockAuthorHeraldField.php',
'PholioMockCommentController' => 'applications/pholio/controller/PholioMockCommentController.php',
'PholioMockDescriptionHeraldField' => 'applications/pholio/herald/PholioMockDescriptionHeraldField.php',
+ 'PholioMockDescriptionTransaction' => 'applications/pholio/xaction/PholioMockDescriptionTransaction.php',
'PholioMockEditController' => 'applications/pholio/controller/PholioMockEditController.php',
'PholioMockEditor' => 'applications/pholio/editor/PholioMockEditor.php',
'PholioMockEmbedView' => 'applications/pholio/view/PholioMockEmbedView.php',
@@ -4383,12 +4385,14 @@
'PholioMockListController' => 'applications/pholio/controller/PholioMockListController.php',
'PholioMockMailReceiver' => 'applications/pholio/mail/PholioMockMailReceiver.php',
'PholioMockNameHeraldField' => 'applications/pholio/herald/PholioMockNameHeraldField.php',
+ 'PholioMockNameTransaction' => 'applications/pholio/xaction/PholioMockNameTransaction.php',
'PholioMockPHIDType' => 'applications/pholio/phid/PholioMockPHIDType.php',
'PholioMockQuery' => 'applications/pholio/query/PholioMockQuery.php',
'PholioMockRelationship' => 'applications/pholio/relationships/PholioMockRelationship.php',
'PholioMockRelationshipSource' => 'applications/search/relationship/PholioMockRelationshipSource.php',
'PholioMockSearchEngine' => 'applications/pholio/query/PholioMockSearchEngine.php',
'PholioMockThumbGridView' => 'applications/pholio/view/PholioMockThumbGridView.php',
+ 'PholioMockTransactionType' => 'applications/pholio/xaction/PholioMockTransactionType.php',
'PholioMockViewController' => 'applications/pholio/controller/PholioMockViewController.php',
'PholioRemarkupRule' => 'applications/pholio/remarkup/PholioRemarkupRule.php',
'PholioReplyHandler' => 'applications/pholio/mail/PholioReplyHandler.php',
@@ -9896,14 +9900,15 @@
'PholioDAO' => 'PhabricatorLiskDAO',
'PholioDefaultEditCapability' => 'PhabricatorPolicyCapability',
'PholioDefaultViewCapability' => 'PhabricatorPolicyCapability',
- 'PholioDescriptionTransaction' => 'PholioTransactionType',
'PholioImage' => array(
'PholioDAO',
'PhabricatorMarkupInterface',
'PhabricatorPolicyInterface',
),
+ 'PholioImageNameTransaction' => 'PholioImageTransactionType',
'PholioImagePHIDType' => 'PhabricatorPHIDType',
'PholioImageQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
+ 'PholioImageTransactionType' => 'PholioTransactionType',
'PholioImageUploadController' => 'PholioController',
'PholioInlineController' => 'PholioController',
'PholioInlineListController' => 'PholioController',
@@ -9925,6 +9930,7 @@
'PholioMockAuthorHeraldField' => 'PholioMockHeraldField',
'PholioMockCommentController' => 'PholioController',
'PholioMockDescriptionHeraldField' => 'PholioMockHeraldField',
+ 'PholioMockDescriptionTransaction' => 'PholioMockTransactionType',
'PholioMockEditController' => 'PholioController',
'PholioMockEditor' => 'PhabricatorApplicationTransactionEditor',
'PholioMockEmbedView' => 'AphrontView',
@@ -9937,12 +9943,14 @@
'PholioMockListController' => 'PholioController',
'PholioMockMailReceiver' => 'PhabricatorObjectMailReceiver',
'PholioMockNameHeraldField' => 'PholioMockHeraldField',
+ 'PholioMockNameTransaction' => 'PholioMockTransactionType',
'PholioMockPHIDType' => 'PhabricatorPHIDType',
'PholioMockQuery' => 'PhabricatorCursorPagedPolicyAwareQuery',
'PholioMockRelationship' => 'PhabricatorObjectRelationship',
'PholioMockRelationshipSource' => 'PhabricatorObjectRelationshipSource',
'PholioMockSearchEngine' => 'PhabricatorApplicationSearchEngine',
'PholioMockThumbGridView' => 'AphrontView',
+ 'PholioMockTransactionType' => 'PholioTransactionType',
'PholioMockViewController' => 'PholioController',
'PholioRemarkupRule' => 'PhabricatorObjectRemarkupRule',
'PholioReplyHandler' => 'PhabricatorApplicationTransactionReplyHandler',
diff --git a/src/applications/pholio/controller/PholioMockEditController.php b/src/applications/pholio/controller/PholioMockEditController.php
--- a/src/applications/pholio/controller/PholioMockEditController.php
+++ b/src/applications/pholio/controller/PholioMockEditController.php
@@ -65,8 +65,8 @@
if ($request->isFormPost()) {
$xactions = array();
- $type_name = PholioTransaction::TYPE_NAME;
- $type_desc = PholioDescriptionTransaction::TRANSACTIONTYPE;
+ $type_name = PholioMockNameTransaction::TRANSACTIONTYPE;
+ $type_desc = PholioMockDescriptionTransaction::TRANSACTIONTYPE;
$type_view = PhabricatorTransactions::TYPE_VIEW_POLICY;
$type_edit = PhabricatorTransactions::TYPE_EDIT_POLICY;
$type_cc = PhabricatorTransactions::TYPE_SUBSCRIBERS;
@@ -88,11 +88,6 @@
$mock_xactions[$type_cc] = array('=' => $v_cc);
$mock_xactions[$type_space] = $v_space;
- if (!strlen($request->getStr('name'))) {
- $e_name = pht('Required');
- $errors[] = pht('You must give the mock a name.');
- }
-
$file_phids = $request->getArr('file_phids');
if ($file_phids) {
$files = id(new PhabricatorFileQuery())
@@ -173,7 +168,7 @@
$posted_mock_images[] = $add_image;
} else {
$xactions[] = id(new PholioTransaction())
- ->setTransactionType(PholioTransaction::TYPE_IMAGE_NAME)
+ ->setTransactionType(PholioImageNameTransaction::TRANSACTIONTYPE)
->setNewValue(
array($existing_image->getPHID() => $title));
$xactions[] = id(new PholioTransaction())
diff --git a/src/applications/pholio/editor/PholioMockEditor.php b/src/applications/pholio/editor/PholioMockEditor.php
--- a/src/applications/pholio/editor/PholioMockEditor.php
+++ b/src/applications/pholio/editor/PholioMockEditor.php
@@ -29,12 +29,10 @@
$types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
$types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
- $types[] = PholioTransaction::TYPE_NAME;
$types[] = PholioTransaction::TYPE_STATUS;
$types[] = PholioTransaction::TYPE_INLINE;
$types[] = PholioTransaction::TYPE_IMAGE_FILE;
- $types[] = PholioTransaction::TYPE_IMAGE_NAME;
$types[] = PholioTransaction::TYPE_IMAGE_DESCRIPTION;
$types[] = PholioTransaction::TYPE_IMAGE_REPLACE;
$types[] = PholioTransaction::TYPE_IMAGE_SEQUENCE;
@@ -47,22 +45,11 @@
PhabricatorApplicationTransaction $xaction) {
switch ($xaction->getTransactionType()) {
- case PholioTransaction::TYPE_NAME:
- return $object->getName();
case PholioTransaction::TYPE_STATUS:
return $object->getStatus();
case PholioTransaction::TYPE_IMAGE_FILE:
$images = $object->getImages();
return mpull($images, 'getPHID');
- case PholioTransaction::TYPE_IMAGE_NAME:
- $name = null;
- $phid = null;
- $image = $this->getImageForXaction($object, $xaction);
- if ($image) {
- $name = $image->getName();
- $phid = $image->getPHID();
- }
- return array($phid => $name);
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
$description = null;
$phid = null;
@@ -92,9 +79,7 @@
PhabricatorApplicationTransaction $xaction) {
switch ($xaction->getTransactionType()) {
- case PholioTransaction::TYPE_NAME:
case PholioTransaction::TYPE_STATUS:
- case PholioTransaction::TYPE_IMAGE_NAME:
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
case PholioTransaction::TYPE_IMAGE_SEQUENCE:
return $xaction->getNewValue();
@@ -205,12 +190,6 @@
PhabricatorApplicationTransaction $xaction) {
switch ($xaction->getTransactionType()) {
- case PholioTransaction::TYPE_NAME:
- $object->setName($xaction->getNewValue());
- if ($object->getOriginalName() === null) {
- $object->setOriginalName($xaction->getNewValue());
- }
- break;
case PholioTransaction::TYPE_STATUS:
$object->setStatus($xaction->getNewValue());
break;
@@ -263,12 +242,6 @@
}
$object->attachImages($images);
break;
- case PholioTransaction::TYPE_IMAGE_NAME:
- $image = $this->getImageForXaction($object, $xaction);
- $value = (string)head($xaction->getNewValue());
- $image->setName($value);
- $image->save();
- break;
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
$image = $this->getImageForXaction($object, $xaction);
$value = (string)head($xaction->getNewValue());
@@ -303,7 +276,6 @@
$type = $u->getTransactionType();
switch ($type) {
- case PholioTransaction::TYPE_NAME:
case PholioTransaction::TYPE_STATUS:
return $v;
case PholioTransaction::TYPE_IMAGE_REPLACE:
@@ -315,7 +287,6 @@
break;
case PholioTransaction::TYPE_IMAGE_FILE:
return $this->mergePHIDOrEdgeTransactions($u, $v);
- case PholioTransaction::TYPE_IMAGE_NAME:
case PholioTransaction::TYPE_IMAGE_DESCRIPTION:
case PholioTransaction::TYPE_IMAGE_SEQUENCE:
$raw_new_value_u = $u->getNewValue();
diff --git a/src/applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php b/src/applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php
--- a/src/applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php
+++ b/src/applications/pholio/lipsum/PhabricatorPholioMockTestDataGenerator.php
@@ -22,9 +22,9 @@
// Accumulate Transactions
$changes = array();
- $changes[PholioTransaction::TYPE_NAME] =
+ $changes[PholioMockNameTransaction::TRANSACTIONTYPE] =
$this->generateTitle();
- $changes[PholioDescriptionTransaction::TRANSACTIONTYPE] =
+ $changes[PholioMockDescriptionTransaction::TRANSACTIONTYPE] =
$this->generateDescription();
$changes[PhabricatorTransactions::TYPE_VIEW_POLICY] =
PhabricatorPolicies::POLICY_PUBLIC;
diff --git a/src/applications/pholio/storage/PholioTransaction.php b/src/applications/pholio/storage/PholioTransaction.php
--- a/src/applications/pholio/storage/PholioTransaction.php
+++ b/src/applications/pholio/storage/PholioTransaction.php
@@ -3,12 +3,10 @@
final class PholioTransaction extends PhabricatorModularTransaction {
// Edits to the high level mock
- const TYPE_NAME = 'name';
const TYPE_STATUS = 'status';
// Edits to images within the mock
const TYPE_IMAGE_FILE = 'image-file';
- const TYPE_IMAGE_NAME= 'image-name';
const TYPE_IMAGE_DESCRIPTION = 'image-description';
const TYPE_IMAGE_REPLACE = 'image-replace';
const TYPE_IMAGE_SEQUENCE = 'image-sequence';
@@ -57,7 +55,7 @@
$phids[] = $old;
break;
case self::TYPE_IMAGE_DESCRIPTION:
- case self::TYPE_IMAGE_NAME:
+ case PholioImageNameTransaction::TRANSACTIONTYPE:
case self::TYPE_IMAGE_SEQUENCE:
$phids[] = key($new);
break;
@@ -70,7 +68,6 @@
$old = $this->getOldValue();
switch ($this->getTransactionType()) {
- case self::TYPE_IMAGE_NAME:
case self::TYPE_IMAGE_DESCRIPTION:
return ($old === array(null => null));
// this is boring / silly to surface; changing sequence is NBD
@@ -89,14 +86,12 @@
switch ($this->getTransactionType()) {
case self::TYPE_INLINE:
return 'fa-comment';
- case self::TYPE_NAME:
case self::TYPE_STATUS:
if ($new == PholioMock::STATUS_CLOSED) {
return 'fa-ban';
} else {
return 'fa-check';
}
- case self::TYPE_IMAGE_NAME:
case self::TYPE_IMAGE_DESCRIPTION:
case self::TYPE_IMAGE_SEQUENCE:
return 'fa-pencil';
@@ -118,9 +113,9 @@
case self::TYPE_STATUS:
$tags[] = self::MAILTAG_STATUS;
break;
- case self::TYPE_NAME:
- case PholioDescriptionTransaction::TRANSACTIONTYPE:
- case self::TYPE_IMAGE_NAME:
+ case PholioMockNameTransaction::TRANSACTIONTYPE:
+ case PholioMockDescriptionTransaction::TRANSACTIONTYPE:
+ case PholioImageNameTransaction::TRANSACTIONTYPE:
case self::TYPE_IMAGE_DESCRIPTION:
case self::TYPE_IMAGE_SEQUENCE:
case self::TYPE_IMAGE_FILE:
@@ -142,20 +137,6 @@
$type = $this->getTransactionType();
switch ($type) {
- case self::TYPE_NAME:
- if ($old === null) {
- return pht(
- '%s created "%s".',
- $this->renderHandleLink($author_phid),
- $new);
- } else {
- return pht(
- '%s renamed this mock from "%s" to "%s".',
- $this->renderHandleLink($author_phid),
- $old,
- $new);
- }
- break;
case self::TYPE_STATUS:
if ($new == PholioMock::STATUS_CLOSED) {
return pht(
@@ -213,15 +194,6 @@
$this->renderHandleList($rem));
}
break;
-
- case self::TYPE_IMAGE_NAME:
- return pht(
- '%s renamed an image (%s) from "%s" to "%s".',
- $this->renderHandleLink($author_phid),
- $this->renderHandleLink(key($new)),
- reset($old),
- reset($new));
- break;
case self::TYPE_IMAGE_DESCRIPTION:
return pht(
'%s updated an image\'s (%s) description.',
@@ -248,21 +220,6 @@
$type = $this->getTransactionType();
switch ($type) {
- case self::TYPE_NAME:
- if ($old === null) {
- return pht(
- '%s created %s.',
- $this->renderHandleLink($author_phid),
- $this->renderHandleLink($object_phid));
- } else {
- return pht(
- '%s renamed %s from "%s" to "%s".',
- $this->renderHandleLink($author_phid),
- $this->renderHandleLink($object_phid),
- $old,
- $new);
- }
- break;
case self::TYPE_STATUS:
if ($new == PholioMock::STATUS_CLOSED) {
return pht(
@@ -289,12 +246,6 @@
$this->renderHandleLink($author_phid),
$this->renderHandleLink($object_phid));
break;
- case self::TYPE_IMAGE_NAME:
- return pht(
- '%s updated the image names of %s.',
- $this->renderHandleLink($author_phid),
- $this->renderHandleLink($object_phid));
- break;
case self::TYPE_IMAGE_DESCRIPTION:
return pht(
'%s updated image descriptions of %s.',
@@ -312,23 +263,6 @@
return parent::getTitleForFeed();
}
- public function getRemarkupBodyForFeed(PhabricatorFeedStory $story) {
- $text = null;
- switch ($this->getTransactionType()) {
- case self::TYPE_NAME:
- if ($this->getOldValue() === null) {
- $mock = $story->getPrimaryObject();
- $text = $mock->getDescription();
- }
- break;
- case self::TYPE_INLINE:
- $text = $this->getComment()->getContent();
- break;
- }
-
- return $text;
- }
-
public function getColor() {
$old = $this->getOldValue();
$new = $this->getNewValue();
@@ -340,10 +274,6 @@
} else {
return PhabricatorTransactions::COLOR_GREEN;
}
- case self::TYPE_NAME:
- if ($old === null) {
- return PhabricatorTransactions::COLOR_GREEN;
- }
case self::TYPE_IMAGE_REPLACE:
return PhabricatorTransactions::COLOR_YELLOW;
case self::TYPE_IMAGE_FILE:
diff --git a/src/applications/pholio/xaction/PholioImageNameTransaction.php b/src/applications/pholio/xaction/PholioImageNameTransaction.php
new file mode 100644
--- /dev/null
+++ b/src/applications/pholio/xaction/PholioImageNameTransaction.php
@@ -0,0 +1,95 @@
+<?php
+
+final class PholioImageNameTransaction
+ extends PholioImageTransactionType {
+
+ const TRANSACTIONTYPE = 'image-name';
+
+ public function generateOldValue($object) {
+ $name = null;
+ $phid = null;
+ $image = $this->getImageForXaction($object);
+ if ($image) {
+ $name = $image->getName();
+ $phid = $image->getPHID();
+ }
+ return array($phid => $name);
+ }
+
+ public function applyInternalEffects($object, $value) {
+ $image = $this->getImageForXaction($object);
+ $value = (string)head($this->getNewValue());
+ $image->setName($value);
+ $image->save();
+ }
+
+ public function getTitle() {
+ $old = $this->getOldValue();
+ $new = $this->getNewValue();
+
+ return pht(
+ '%s renamed an image (%s) from %s to %s.',
+ $this->renderAuthor(),
+ $this->renderHandle(key($new)),
+ $this->renderValue($old),
+ $this->renderValue($new));
+ }
+
+ public function getTitleForFeed() {
+ return pht(
+ '%s updated the image names of %s.',
+ $this->renderAuthor(),
+ $this->renderObject());
+ }
+
+ public function getIcon() {
+ $new = $this->getNewValue();
+
+ if ($new == PholioMock::STATUS_CLOSED) {
+ return 'fa-ban';
+ } else {
+ return 'fa-check';
+ }
+ }
+
+ public function mergeTransactions(
+ $object,
+ PhabricatorApplicationTransaction $u,
+ PhabricatorApplicationTransaction $v) {
+
+ $raw_new_value_u = $u->getNewValue();
+ $raw_new_value_v = $v->getNewValue();
+ $phid_u = head_key($raw_new_value_u);
+ $phid_v = head_key($raw_new_value_v);
+ if ($phid_u == $phid_v) {
+ return $v;
+ }
+
+ return null;
+ }
+
+ public function shouldHide() {
+ $old = $this->getOldValue();
+ return ($old === array(null => null));
+ }
+
+ public function validateTransactions($object, array $xactions) {
+ $errors = array();
+
+ $max_length = $object->getColumnMaximumByteLength('name');
+ foreach ($xactions as $xaction) {
+ $new_value = head(array_values($xaction->getNewValue()));
+ $new_length = strlen($new_value);
+ if ($new_length > $max_length) {
+ $errors[] = $this->newInvalidError(
+ pht(
+ 'Mock image names must not be longer than %s character(s).',
+ new PhutilNumber($max_length)));
+ }
+ }
+
+ return $errors;
+ }
+
+
+}
diff --git a/src/applications/pholio/xaction/PholioImageTransactionType.php b/src/applications/pholio/xaction/PholioImageTransactionType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/pholio/xaction/PholioImageTransactionType.php
@@ -0,0 +1,18 @@
+<?php
+
+abstract class PholioImageTransactionType
+ extends PholioTransactionType {
+
+ protected function getImageForXaction(PholioMock $mock) {
+ $raw_new_value = $this->getNewValue();
+ $image_phid = head_key($raw_new_value);
+ $images = $mock->getImages();
+ foreach ($images as $image) {
+ if ($image->getPHID() == $image_phid) {
+ return $image;
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/src/applications/pholio/xaction/PholioDescriptionTransaction.php b/src/applications/pholio/xaction/PholioMockDescriptionTransaction.php
rename from src/applications/pholio/xaction/PholioDescriptionTransaction.php
rename to src/applications/pholio/xaction/PholioMockDescriptionTransaction.php
--- a/src/applications/pholio/xaction/PholioDescriptionTransaction.php
+++ b/src/applications/pholio/xaction/PholioMockDescriptionTransaction.php
@@ -1,7 +1,7 @@
<?php
-final class PholioDescriptionTransaction
- extends PholioTransactionType {
+final class PholioMockDescriptionTransaction
+ extends PholioMockTransactionType {
const TRANSACTIONTYPE = 'description';
diff --git a/src/applications/pholio/xaction/PholioMockNameTransaction.php b/src/applications/pholio/xaction/PholioMockNameTransaction.php
new file mode 100644
--- /dev/null
+++ b/src/applications/pholio/xaction/PholioMockNameTransaction.php
@@ -0,0 +1,88 @@
+<?php
+
+final class PholioMockNameTransaction
+ extends PholioMockTransactionType {
+
+ const TRANSACTIONTYPE = 'name';
+
+ public function generateOldValue($object) {
+ return $object->getName();
+ }
+
+ public function applyInternalEffects($object, $value) {
+ $object->setName($value);
+ if ($object->getOriginalName() === null) {
+ $object->setOriginalName($this->getNewValue());
+ }
+ }
+
+ public function getTitle() {
+ $old = $this->getOldValue();
+ $new = $this->getNewValue();
+
+ if ($old === null) {
+ return pht(
+ '%s created %s.',
+ $this->renderAuthor(),
+ $this->renderValue($new));
+ } else {
+ return pht(
+ '%s renamed this mock from %s to %s.',
+ $this->renderAuthor(),
+ $this->renderValue($old),
+ $this->renderValue($new));
+ }
+ }
+
+ public function getTitleForFeed() {
+ $old = $this->getOldValue();
+ $new = $this->getNewValue();
+
+ if ($old === null) {
+ return pht(
+ '%s created %s.',
+ $this->renderAuthor(),
+ $this->renderObject());
+ } else {
+ return pht(
+ '%s renamed %s from %s to %s.',
+ $this->renderAuthor(),
+ $this->renderObject(),
+ $this->renderValue($old),
+ $this->renderValue($new));
+ }
+ }
+
+ public function getColor() {
+ $old = $this->getOldValue();
+
+ if ($old === null) {
+ return PhabricatorTransactions::COLOR_GREEN;
+ }
+
+ return parent::getColor();
+ }
+
+ public function validateTransactions($object, array $xactions) {
+ $errors = array();
+
+ if ($this->isEmptyTextTransaction($object->getName(), $xactions)) {
+ $errors[] = $this->newRequiredError(pht('Mocks must have a name.'));
+ }
+
+ $max_length = $object->getColumnMaximumByteLength('name');
+ foreach ($xactions as $xaction) {
+ $new_value = $xaction->getNewValue();
+ $new_length = strlen($new_value);
+ if ($new_length > $max_length) {
+ $errors[] = $this->newInvalidError(
+ pht(
+ 'Mock names must not be longer than %s character(s).',
+ new PhutilNumber($max_length)));
+ }
+ }
+
+ return $errors;
+ }
+
+}
diff --git a/src/applications/pholio/xaction/PholioMockTransactionType.php b/src/applications/pholio/xaction/PholioMockTransactionType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/pholio/xaction/PholioMockTransactionType.php
@@ -0,0 +1,4 @@
+<?php
+
+abstract class PholioMockTransactionType
+ extends PholioTransactionType {}

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 11, 9:55 PM (21 h, 11 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6985679
Default Alt Text
D17865.diff (23 KB)

Event Timeline