public function testTransactionRollback()
 {
     $check = array();
     $phid = new PhabricatorPHID();
     $phid->openTransaction();
     for ($ii = 0; $ii < 3; $ii++) {
         $test_phid = $this->generateTestPHID();
         $obj = new PhabricatorPHID();
         $obj->setPHID($test_phid);
         $obj->setPHIDType('TEST');
         $obj->setOwnerPHID('PHID-UNIT-!!!!');
         $obj->save();
         $check[] = $test_phid;
     }
     $phid->killTransaction();
     foreach ($check as $test_phid) {
         $this->assertNoSuchPHID($test_phid);
     }
 }
 protected function createBasicDummyHandle($name, $type, $fullname = null, $uri = null)
 {
     $id = mt_rand(15, 9999);
     $handle = new PhabricatorObjectHandle();
     $handle->setName($name);
     $handle->setType($type);
     $handle->setPHID(PhabricatorPHID::generateNewPHID($type));
     if ($fullname) {
         $handle->setFullName($fullname);
     } else {
         $handle->setFullName(sprintf('%s%d: %s', substr($type, 0, 1), $id, $name));
     }
     if ($uri) {
         $handle->setURI($uri);
     }
     return $handle;
 }
 protected function execute(ConduitAPIRequest $request)
 {
     $names = $request->getValue('names');
     $phids = array();
     foreach ($names as $name) {
         $phid = PhabricatorPHID::fromObjectName($name);
         if ($phid) {
             $phids[$name] = $phid;
         }
     }
     $handles = id(new PhabricatorObjectHandleData($phids))->loadHandles();
     $result = array();
     foreach ($phids as $name => $phid) {
         if (isset($handles[$phid]) && $handles[$phid]->isComplete()) {
             $result[$name] = $this->buildHandleInformationDictionary($handles[$phid]);
         }
     }
     return $result;
 }
Example #4
0
 public static function generateNewPHID($type, array $config = array())
 {
     $owner = idx($config, 'owner');
     $parent = idx($config, 'parent');
     if (!$type) {
         throw new Exception("Can not generate PHID with no type.");
     }
     $uniq = Filesystem::readRandomCharacters(20);
     $phid = 'PHID-' . $type . '-' . $uniq;
     $phid_rec = new PhabricatorPHID();
     $phid_rec->setPHIDType($type);
     $phid_rec->setOwnerPHID($owner);
     $phid_rec->setParentPHID($parent);
     $phid_rec->setPHID($phid);
     $phid_rec->save();
     return $phid;
 }
 public function save()
 {
     $this->subscriptionClassKey = PhabricatorHash::digestForIndex($this->subscriptionClass);
     $this->subscriptionRefKey = PhabricatorHash::digestForIndex($this->subscriptionRef);
     $is_new = !$this->getID();
     $this->openTransaction();
     // If we're saving this subscription for the first time, we're also
     // going to set up the trigger for it.
     if ($is_new) {
         $trigger_phid = PhabricatorPHID::generateNewPHID(PhabricatorWorkerTriggerPHIDType::TYPECONST);
         $this->setTriggerPHID($trigger_phid);
     }
     $result = parent::save();
     if ($is_new) {
         $trigger_action = new PhabricatorScheduleTaskTriggerAction(array('class' => 'PhortuneSubscriptionWorker', 'data' => array('subscriptionPHID' => $this->getPHID()), 'options' => array('objectPHID' => $this->getPHID(), 'priority' => PhabricatorWorker::PRIORITY_BULK)));
         $trigger = $this->getTrigger();
         $trigger->setPHID($trigger_phid);
         $trigger->setAction($trigger_action);
         $trigger->save();
     }
     $this->saveTransaction();
     return $result;
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PhabricatorRepositoryRepositoryPHIDType::TYPECONST);
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PhabricatorOwnersPackagePHIDType::TYPECONST);
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(DrydockRepositoryOperationPHIDType::TYPECONST);
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PhabricatorDashboardPanelPHIDType::TYPECONST);
 }
Example #10
0
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(DrydockLeasePHIDType::TYPECONST);
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PhabricatorConfigConfigPHIDType::TYPECONST);
 }
$conn_w = id(new DifferentialRevision())->establishConnection('w');
$rows = new LiskRawMigrationIterator($conn_w, 'differential_comment');
$content_source = PhabricatorContentSource::newForSource(PhabricatorContentSource::SOURCE_LEGACY, array())->serialize();
echo pht('Migrating Differential comment text to modern storage...') . "\n";
foreach ($rows as $row) {
    $id = $row['id'];
    echo pht('Migrating Differential comment %d...', $id) . "\n";
    if (!strlen($row['content'])) {
        echo pht('Comment has no text, continuing.') . "\n";
        continue;
    }
    $revision = id(new DifferentialRevision())->load($row['revisionID']);
    if (!$revision) {
        echo pht('Comment has no valid revision, continuing.') . "\n";
        continue;
    }
    $revision_phid = $revision->getPHID();
    $dst_table = 'differential_inline_comment';
    $xaction_phid = PhabricatorPHID::generateNewPHID(PhabricatorApplicationTransactionTransactionPHIDType::TYPECONST, DifferentialRevisionPHIDType::TYPECONST);
    $comment_phid = PhabricatorPHID::generateNewPHID(PhabricatorPHIDConstants::PHID_TYPE_XCMT, DifferentialRevisionPHIDType::TYPECONST);
    queryfx($conn_w, 'INSERT IGNORE INTO %T
      (phid, transactionPHID, authorPHID, viewPolicy, editPolicy,
        commentVersion, content, contentSource, isDeleted,
        dateCreated, dateModified, revisionPHID, changesetID,
        legacyCommentID)
      VALUES (%s, %s, %s, %s, %s,
        %d, %s, %s, %d,
        %d, %d, %s, %nd,
        %d)', 'differential_transaction_comment', $comment_phid, $xaction_phid, $row['authorPHID'], 'public', $row['authorPHID'], 1, $row['content'], $content_source, 0, $row['dateCreated'], $row['dateModified'], $revision_phid, null, $row['id']);
}
echo pht('Done.') . "\n";
 }
 // Build the main comment transaction.
 foreach ($main_comments as $main) {
     $xactions[] = array('type' => PhabricatorTransactions::TYPE_COMMENT, 'old' => null, 'new' => null, 'phid' => $main['transactionPHID'], 'comment' => $main);
 }
 // Build inline comment transactions.
 foreach ($inline_comments as $inline) {
     $xactions[] = array('type' => PhabricatorAuditActionConstants::INLINE, 'old' => null, 'new' => null, 'phid' => $inline['transactionPHID'], 'comment' => $inline);
 }
 foreach ($xactions as $xaction) {
     // Generate a new PHID, if we don't already have one from the comment
     // table. We pregenerated into the comment table to make this a little
     // easier, so we only need to write to one table.
     $xaction_phid = idx($xaction, 'phid');
     if (!$xaction_phid) {
         $xaction_phid = PhabricatorPHID::generateNewPHID(PhabricatorApplicationTransactionTransactionPHIDType::TYPECONST, PhabricatorRepositoryCommitPHIDType::TYPECONST);
     }
     unset($xaction['phid']);
     $comment_phid = null;
     $comment_version = 0;
     if (idx($xaction, 'comment')) {
         $comment_phid = $xaction['comment']['phid'];
         $comment_version = 1;
     }
     $old = idx($xaction, 'old');
     $new = idx($xaction, 'new');
     $meta = idx($xaction, 'meta', array());
     queryfx($conn_w, 'INSERT INTO %T (phid, authorPHID, objectPHID, viewPolicy, editPolicy,
       commentPHID, commentVersion, transactionType, oldValue, newValue,
       contentSource, metadata, dateCreated, dateModified)
     VALUES (%s, %s, %s, %s, %s, %ns, %d, %s, %ns, %ns, %s, %s, %d, %d)', 'audit_transaction', $xaction_phid, $row['actorPHID'], $row['targetPHID'], 'public', $row['actorPHID'], $comment_phid, $comment_version, $xaction['type'], json_encode($old), json_encode($new), $content_source, json_encode($meta), $row['dateCreated'], $row['dateModified']);
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PhabricatorOAuthServerClientPHIDType::TYPECONST);
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PhabricatorPeopleExternalPHIDType::TYPECONST);
 }
Example #16
0
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PhrictionDocumentPHIDType::TYPECONST);
 }
Example #17
0
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(HeraldRulePHIDType::TYPECONST);
 }
 public function generatePHID()
 {
     $type = PhabricatorApplicationTransactionTransactionPHIDType::TYPECONST;
     $subtype = $this->getApplicationTransactionType();
     return PhabricatorPHID::generateNewPHID($type, $subtype);
 }
Example #19
0
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PonderQuestionPHIDType::TYPECONST);
 }
Example #20
0
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(NuanceSourcePHIDType::TYPECONST);
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(HarbormasterBuildPlanPHIDType::TYPECONST);
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PhabricatorProjectProjectPHIDType::TYPECONST);
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PhabricatorPHIDConstants::PHID_TYPE_AUTH);
 }
<?php

$diff_table = new DifferentialDiff();
$conn_w = $diff_table->establishConnection('w');
$size = 1000;
$row_iter = id(new LiskMigrationIterator($diff_table))->setPageSize($size);
$chunk_iter = new PhutilChunkedIterator($row_iter, $size);
foreach ($chunk_iter as $chunk) {
    $sql = array();
    foreach ($chunk as $diff) {
        $id = $diff->getID();
        echo pht('Migrating diff ID %d...', $id) . "\n";
        $phid = $diff->getPHID();
        if (strlen($phid)) {
            continue;
        }
        $type_diff = DifferentialDiffPHIDType::TYPECONST;
        $new_phid = PhabricatorPHID::generateNewPHID($type_diff);
        $sql[] = qsprintf($conn_w, '(%d, %s)', $id, $new_phid);
    }
    if (!$sql) {
        continue;
    }
    foreach (PhabricatorLiskDAO::chunkSQL($sql, ', ') as $sql_chunk) {
        queryfx($conn_w, 'INSERT IGNORE INTO %T (id, phid) VALUES %Q
        ON DUPLICATE KEY UPDATE phid = VALUES(phid)', $diff_table->getTableName(), $sql_chunk);
    }
}
echo pht('Done.') . "\n";
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(PhortuneMerchantPHIDType::TYPECONST);
 }
 public function setAuditCommentID($id)
 {
     $this->proxy->setLegacyCommentID($id);
     $this->proxy->setTransactionPHID(PhabricatorPHID::generateNewPHID(PhabricatorApplicationTransactionTransactionPHIDType::TYPECONST, PhabricatorRepositoryCommitPHIDType::TYPECONST));
     return $this;
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID('HLXS');
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(DoorkeeperExternalObjectPHIDType::TYPECONST);
 }
 public function processRequest()
 {
     $request = $this->getRequest();
     $user = $request->getUser();
     if ($this->key) {
         $query = id(new PhabricatorSearchQuery())->loadOneWhere('queryKey = %s', $this->key);
         if (!$query) {
             return new Aphront404Response();
         }
     } else {
         $query = new PhabricatorSearchQuery();
         if ($request->isFormPost()) {
             $query_str = $request->getStr('query');
             $pref_jump = PhabricatorUserPreferences::PREFERENCE_SEARCHBAR_JUMP;
             if ($request->getStr('jump') != 'no' && $user && $user->loadPreferences()->getPreference($pref_jump, 1)) {
                 $response = PhabricatorJumpNavHandler::jumpPostResponse($query_str);
             } else {
                 $response = null;
             }
             if ($response) {
                 return $response;
             } else {
                 $query->setQuery($query_str);
                 if ($request->getStr('scope')) {
                     switch ($request->getStr('scope')) {
                         case PhabricatorSearchScope::SCOPE_OPEN_REVISIONS:
                             $query->setParameter('open', 1);
                             $query->setParameter('type', PhabricatorPHIDConstants::PHID_TYPE_DREV);
                             break;
                         case PhabricatorSearchScope::SCOPE_OPEN_TASKS:
                             $query->setParameter('open', 1);
                             $query->setParameter('type', PhabricatorPHIDConstants::PHID_TYPE_TASK);
                             break;
                         case PhabricatorSearchScope::SCOPE_WIKI:
                             $query->setParameter('type', PhabricatorPHIDConstants::PHID_TYPE_WIKI);
                             break;
                         case PhabricatorSearchScope::SCOPE_COMMITS:
                             $query->setParameter('type', PhabricatorPHIDConstants::PHID_TYPE_CMIT);
                             break;
                         default:
                             break;
                     }
                 } else {
                     if (strlen($request->getStr('type'))) {
                         $query->setParameter('type', $request->getStr('type'));
                     }
                     if ($request->getArr('author')) {
                         $query->setParameter('author', $request->getArr('author'));
                     }
                     if ($request->getArr('owner')) {
                         $query->setParameter('owner', $request->getArr('owner'));
                     }
                     if ($request->getInt('open')) {
                         $query->setParameter('open', $request->getInt('open'));
                     }
                     if ($request->getArr('project')) {
                         $query->setParameter('project', $request->getArr('project'));
                     }
                 }
                 $query->save();
                 return id(new AphrontRedirectResponse())->setURI('/search/' . $query->getQueryKey() . '/');
             }
         }
     }
     $options = array('' => 'All Documents') + PhabricatorSearchAbstractDocument::getSupportedTypes();
     $status_options = array(0 => 'Open and Closed Documents', 1 => 'Open Documents');
     $phids = array_merge($query->getParameter('author', array()), $query->getParameter('owner', array()), $query->getParameter('project', array()));
     $handles = $this->loadViewerHandles($phids);
     $author_value = array_select_keys($handles, $query->getParameter('author', array()));
     $author_value = mpull($author_value, 'getFullName', 'getPHID');
     $owner_value = array_select_keys($handles, $query->getParameter('owner', array()));
     $owner_value = mpull($owner_value, 'getFullName', 'getPHID');
     $project_value = array_select_keys($handles, $query->getParameter('project', array()));
     $project_value = mpull($project_value, 'getFullName', 'getPHID');
     $search_form = new AphrontFormView();
     $search_form->setUser($user)->setAction('/search/')->appendChild(phutil_render_tag('input', array('type' => 'hidden', 'name' => 'jump', 'value' => 'no')))->appendChild(id(new AphrontFormTextControl())->setLabel('Search')->setName('query')->setValue($query->getQuery()))->appendChild(id(new AphrontFormSelectControl())->setLabel('Document Type')->setName('type')->setOptions($options)->setValue($query->getParameter('type')))->appendChild(id(new AphrontFormSelectControl())->setLabel('Document Status')->setName('open')->setOptions($status_options)->setValue($query->getParameter('open')))->appendChild(id(new AphrontFormTokenizerControl())->setName('author')->setLabel('Author')->setDatasource('/typeahead/common/users/')->setValue($author_value))->appendChild(id(new AphrontFormTokenizerControl())->setName('owner')->setLabel('Owner')->setDatasource('/typeahead/common/searchowner/')->setValue($owner_value)->setCaption('Tip: search for "Up For Grabs" to find unowned documents.'))->appendChild(id(new AphrontFormTokenizerControl())->setName('project')->setLabel('Project')->setDatasource('/typeahead/common/projects/')->setValue($project_value))->appendChild(id(new AphrontFormSubmitControl())->setValue('Search'));
     $search_panel = new AphrontPanelView();
     $search_panel->setHeader('Search Phabricator');
     $search_panel->appendChild($search_form);
     require_celerity_resource('phabricator-search-results-css');
     if ($query->getID()) {
         $limit = 20;
         $pager = new AphrontPagerView();
         $pager->setURI($request->getRequestURI(), 'page');
         $pager->setPageSize($limit);
         $pager->setOffset($request->getInt('page'));
         $query->setParameter('limit', $limit + 1);
         $query->setParameter('offset', $pager->getOffset());
         $engine = PhabricatorSearchEngineSelector::newSelector()->newEngine();
         $results = $engine->executeSearch($query);
         $results = $pager->sliceResults($results);
         if (!$request->getInt('page')) {
             $jump = PhabricatorPHID::fromObjectName($query->getQuery());
             if ($jump) {
                 array_unshift($results, $jump);
             }
         }
         if ($results) {
             $loader = new PhabricatorObjectHandleData($results);
             $handles = $loader->loadHandles();
             $objects = $loader->loadObjects();
             $results = array();
             foreach ($handles as $phid => $handle) {
                 $view = new PhabricatorSearchResultView();
                 $view->setHandle($handle);
                 $view->setQuery($query);
                 $view->setObject(idx($objects, $phid));
                 $results[] = $view->render();
             }
             $results = '<div class="phabricator-search-result-list">' . implode("\n", $results) . '<div class="search-results-pager">' . $pager->render() . '</div>' . '</div>';
         } else {
             $results = '<div class="phabricator-search-result-list">' . '<p class="phabricator-search-no-results">No search results.</p>' . '</div>';
         }
     } else {
         $results = null;
     }
     return $this->buildStandardPageResponse(array($search_panel, $results), array('title' => 'Search Results'));
 }
 public function generatePHID()
 {
     return PhabricatorPHID::generateNewPHID(AlmanacNetworkPHIDType::TYPECONST);
 }