コード例 #1
0
ファイル: ApiConcurrency.php プロジェクト: schwarer2006/wikia
 public function execute()
 {
     global $wgUser;
     $this->checkPermission($wgUser);
     $params = $this->extractRequestParams();
     $res = array();
     $concurrencyCheck = new ConcurrencyCheck($params['resourcetype'], $wgUser);
     switch ($params['ccaction']) {
         case 'checkout':
         case 'checkin':
             if ($concurrencyCheck->{$params}['ccaction']($params['record'])) {
                 $res['result'] = 'success';
             } else {
                 $res['result'] = 'failure';
             }
             // data to be utilized by the caller for checkout
             if ($params['ccaction'] === 'checkout') {
                 $lastCheckout = $concurrencyCheck->checkoutResult();
                 if ($res['result'] === 'success') {
                     $user = $wgUser;
                 } else {
                     $user = User::newFromId(intval($lastCheckout['userId']));
                 }
                 if (!$user->isAnon()) {
                     $res['userid'] = $user->getId();
                     $res['username'] = $user->getName();
                 }
                 $res['expiration'] = $lastCheckout['expiration'];
             }
             break;
         default:
             ApiBase::dieDebug(__METHOD__, "Unhandled concurrency action: {$params['ccaction']}");
     }
     $this->getResult()->addValue(null, $this->getModuleName(), $res);
 }
コード例 #2
0
 public function testStatus()
 {
     $cc = new ConcurrencyCheck('CCUnitTest', self::$users['user1']->user);
     $cc->checkout(1337);
     $cc->checkout(1338);
     $cc->setExpirationTime(-5);
     $cc->checkout(1339);
     $cc->setExpirationTime();
     // tests
     $output = $cc->status(array(1337, 1338, 1339, 13310));
     $this->assertEquals(true, is_array($output), "Status returns values");
     $this->assertEquals(4, count($output), "Output has the correct number of records");
     $this->assertEquals('valid', $output[1337]['status'], "Current checkouts are listed as valid");
     $this->assertEquals('invalid', $output[1339]['status'], "Expired checkouts are invalid");
     $this->assertEquals('invalid', $output[13310]['status'], "Missing checkouts are invalid");
 }
コード例 #3
0
 public function testListCheckouts()
 {
     $cc = new ConcurrencyCheck('CCUnitTest', self::$users['user1']->user);
     $cc->checkout(1337);
     $cc->checkout(1338);
     $output = $cc->listCheckouts();
     $this->assertTrue($output[1337] && $output[1338], "Current checkouts are present");
     $this->assertEquals(self::$users['user1']->user->getId(), $output[1337]['cc_user'], "User matches");
     $this->assertTrue(array_key_exists('cc_expiration', $output[1337]), "Expiration exists");
     $this->assertTrue($output[1337]['mine'], "Ownership flag set");
 }