Path: blob/master/src/applications/legalpad/xaction/LegalpadDocumentRequireSignatureTransaction.php
13464 views
<?php12final class LegalpadDocumentRequireSignatureTransaction3extends LegalpadDocumentTransactionType {45const TRANSACTIONTYPE = 'legalpad:require-signature';67public function generateOldValue($object) {8return (int)$object->getRequireSignature();9}1011public function applyInternalEffects($object, $value) {12$object->setRequireSignature((int)$value);13}1415public function applyExternalEffects($object, $value) {16if ($value) {17$session = new PhabricatorAuthSession();18queryfx(19$session->establishConnection('w'),20'UPDATE %T SET signedLegalpadDocuments = 0',21$session->getTableName());22}23}2425public function getTitle() {26$new = $this->getNewValue();2728if ($new) {29return pht(30'%s set the document to require signatures.',31$this->renderAuthor());32} else {33return pht(34'%s set the document to not require signatures.',35$this->renderAuthor());36}37}3839public function getTitleForFeed() {40$new = $this->getNewValue();41if ($new) {42return pht(43'%s set the document %s to require signatures.',44$this->renderAuthor(),45$this->renderObject());46} else {47return pht(48'%s set the document %s to not require signatures.',49$this->renderAuthor(),50$this->renderObject());51}52}5354public function validateTransactions($object, array $xactions) {55$errors = array();5657$old = (bool)$object->getRequireSignature();58foreach ($xactions as $xaction) {59$new = (bool)$xaction->getNewValue();6061if ($old === $new) {62continue;63}6465$is_admin = $this->getActor()->getIsAdmin();66if (!$is_admin) {67$errors[] = $this->newInvalidError(68pht(69'Only administrators may change whether a document '.70'requires a signature.'),71$xaction);72}73}7475return $errors;76}7778public function getIcon() {79return 'fa-pencil-square';80}8182}838485