Path: blob/master/src/applications/draft/storage/PhabricatorDraft.php
12242 views
<?php12final class PhabricatorDraft extends PhabricatorDraftDAO {34protected $authorPHID;5protected $draftKey;6protected $draft;7protected $metadata = array();89private $deleted = false;1011protected function getConfiguration() {12return array(13self::CONFIG_SERIALIZATION => array(14'metadata' => self::SERIALIZATION_JSON,15),16self::CONFIG_COLUMN_SCHEMA => array(17'draftKey' => 'text64',18'draft' => 'text',19),20self::CONFIG_KEY_SCHEMA => array(21'authorPHID' => array(22'columns' => array('authorPHID', 'draftKey'),23'unique' => true,24),25),26) + parent::getConfiguration();27}2829public function replaceOrDelete() {30if ($this->draft == '' && !array_filter($this->metadata)) {31queryfx(32$this->establishConnection('w'),33'DELETE FROM %T WHERE authorPHID = %s AND draftKey = %s',34$this->getTableName(),35$this->authorPHID,36$this->draftKey);37$this->deleted = true;38return $this;39}40return parent::replace();41}4243protected function didDelete() {44$this->deleted = true;45}4647public function isDeleted() {48return $this->deleted;49}5051public static function newFromUserAndKey(PhabricatorUser $user, $key) {52if ($user->getPHID() && strlen($key)) {53$draft = id(new PhabricatorDraft())->loadOneWhere(54'authorPHID = %s AND draftKey = %s',55$user->getPHID(),56$key);57if ($draft) {58return $draft;59}60}6162$draft = new PhabricatorDraft();63if ($user->getPHID()) {64$draft65->setAuthorPHID($user->getPHID())66->setDraftKey($key);67}6869return $draft;70}7172public static function buildFromRequest(AphrontRequest $request) {73$user = $request->getUser();74if (!$user->getPHID()) {75return null;76}7778if (!$request->getStr('__draft__')) {79return null;80}8182$draft = id(new PhabricatorDraft())83->setAuthorPHID($user->getPHID())84->setDraftKey($request->getStr('__draft__'));8586// If this is a preview, add other data. If not, leave the draft empty so87// that replaceOrDelete() will delete it.88if ($request->isPreviewRequest()) {89$other_data = $request->getPassthroughRequestData();90unset($other_data['comment']);9192$draft93->setDraft($request->getStr('comment'))94->setMetadata($other_data);95}9697return $draft;98}99100}101102103