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); }
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"); }
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"); }