| @@ -13,27 +13,27 @@ | ||
| 13 | 13 | */ | 
| 14 | 14 | class BrokenExternalPageTrack extends DataObject | 
| 15 | 15 |  { | 
| 16 | - private static $table_name = 'BrokenExternalPageTrack'; | |
| 16 | + private static $table_name = 'BrokenExternalPageTrack'; | |
| 17 | 17 | |
| 18 | - private static $db = array( | |
| 19 | - 'Processed' => 'Boolean' | |
| 20 | - ); | |
| 18 | + private static $db = array( | |
| 19 | + 'Processed' => 'Boolean' | |
| 20 | + ); | |
| 21 | 21 | |
| 22 | - private static $has_one = array( | |
| 23 | - 'Page' => SiteTree::class, | |
| 24 | - 'Status' => BrokenExternalPageTrackStatus::class | |
| 25 | - ); | |
| 22 | + private static $has_one = array( | |
| 23 | + 'Page' => SiteTree::class, | |
| 24 | + 'Status' => BrokenExternalPageTrackStatus::class | |
| 25 | + ); | |
| 26 | 26 | |
| 27 | - private static $has_many = array( | |
| 28 | - 'BrokenLinks' => BrokenExternalLink::class | |
| 29 | - ); | |
| 27 | + private static $has_many = array( | |
| 28 | + 'BrokenLinks' => BrokenExternalLink::class | |
| 29 | + ); | |
| 30 | 30 | |
| 31 | - /** | |
| 32 | - * @return SiteTree | |
| 33 | - */ | |
| 34 | - public function Page() | |
| 35 | -    { | |
| 36 | - return Versioned::get_by_stage(SiteTree::class, 'Stage') | |
| 37 | - ->byID($this->PageID); | |
| 38 | - } | |
| 31 | + /** | |
| 32 | + * @return SiteTree | |
| 33 | + */ | |
| 34 | + public function Page() | |
| 35 | +	{ | |
| 36 | + return Versioned::get_by_stage(SiteTree::class, 'Stage') | |
| 37 | + ->byID($this->PageID); | |
| 38 | + } | |
| 39 | 39 | } | 
| @@ -8,11 +8,11 @@ | ||
| 8 | 8 | interface LinkChecker | 
| 9 | 9 |  { | 
| 10 | 10 | |
| 11 | - /** | |
| 12 | - * Determine the http status code for a given link | |
| 13 | - * | |
| 14 | - * @param string $href URL to check | |
| 15 | - * @return int HTTP status code, or null if not checkable (not a link) | |
| 16 | - */ | |
| 17 | - public function checkLink($href); | |
| 11 | + /** | |
| 12 | + * Determine the http status code for a given link | |
| 13 | + * | |
| 14 | + * @param string $href URL to check | |
| 15 | + * @return int HTTP status code, or null if not checkable (not a link) | |
| 16 | + */ | |
| 17 | + public function checkLink($href); | |
| 18 | 18 | } | 
| @@ -17,7 +17,7 @@ | ||
| 17 | 17 | */ | 
| 18 | 18 | protected function getCache() | 
| 19 | 19 |      { | 
| 20 | - return Injector::inst()->get(CacheInterface::class . '.CurlLinkChecker'); | |
| 20 | + return Injector::inst()->get(CacheInterface::class.'.CurlLinkChecker'); | |
| 21 | 21 | } | 
| 22 | 22 | |
| 23 | 23 | /** | 
| @@ -11,74 +11,74 @@ | ||
| 11 | 11 | */ | 
| 12 | 12 | class CurlLinkChecker implements LinkChecker | 
| 13 | 13 |  { | 
| 14 | - use Configurable; | |
| 14 | + use Configurable; | |
| 15 | 15 | |
| 16 | - /** | |
| 17 | - * If we want to follow redirects a 301 http code for example | |
| 18 | - * Set via YAML file | |
| 19 | - * | |
| 20 | - * @config | |
| 21 | - * @var boolean | |
| 22 | - */ | |
| 23 | - private static $follow_location = false; | |
| 16 | + /** | |
| 17 | + * If we want to follow redirects a 301 http code for example | |
| 18 | + * Set via YAML file | |
| 19 | + * | |
| 20 | + * @config | |
| 21 | + * @var boolean | |
| 22 | + */ | |
| 23 | + private static $follow_location = false; | |
| 24 | 24 | |
| 25 | - /** | |
| 26 | - * If we want to bypass the cache | |
| 27 | - * Set via YAML file | |
| 28 | - * | |
| 29 | - * @config | |
| 30 | - * @var boolean | |
| 31 | - */ | |
| 32 | - private static $bypass_cache = false; | |
| 25 | + /** | |
| 26 | + * If we want to bypass the cache | |
| 27 | + * Set via YAML file | |
| 28 | + * | |
| 29 | + * @config | |
| 30 | + * @var boolean | |
| 31 | + */ | |
| 32 | + private static $bypass_cache = false; | |
| 33 | 33 | |
| 34 | - /** | |
| 35 | - * Return cache | |
| 36 | - * | |
| 37 | - * @return CacheInterface | |
| 38 | - */ | |
| 39 | - protected function getCache() | |
| 40 | -    { | |
| 41 | - return Injector::inst()->get(CacheInterface::class . '.CurlLinkChecker'); | |
| 42 | - } | |
| 34 | + /** | |
| 35 | + * Return cache | |
| 36 | + * | |
| 37 | + * @return CacheInterface | |
| 38 | + */ | |
| 39 | + protected function getCache() | |
| 40 | +	{ | |
| 41 | + return Injector::inst()->get(CacheInterface::class . '.CurlLinkChecker'); | |
| 42 | + } | |
| 43 | 43 | |
| 44 | - /** | |
| 45 | - * Determine the http status code for a given link | |
| 46 | - * | |
| 47 | - * @param string $href URL to check | |
| 48 | - * @return int HTTP status code, or null if not checkable (not a link) | |
| 49 | - */ | |
| 50 | - public function checkLink($href) | |
| 51 | -    { | |
| 52 | - // Skip non-external links | |
| 53 | -        if (!preg_match('/^https?[^:]*:\/\//', $href)) { | |
| 54 | - return null; | |
| 55 | - } | |
| 44 | + /** | |
| 45 | + * Determine the http status code for a given link | |
| 46 | + * | |
| 47 | + * @param string $href URL to check | |
| 48 | + * @return int HTTP status code, or null if not checkable (not a link) | |
| 49 | + */ | |
| 50 | + public function checkLink($href) | |
| 51 | +	{ | |
| 52 | + // Skip non-external links | |
| 53 | +		if (!preg_match('/^https?[^:]*:\/\//', $href)) { | |
| 54 | + return null; | |
| 55 | + } | |
| 56 | 56 | |
| 57 | - $cacheKey = md5($href); | |
| 58 | -        if (!$this->config()->get('bypass_cache')) { | |
| 59 | - // Check if we have a cached result | |
| 60 | - $result = $this->getCache()->get($cacheKey, false); | |
| 61 | -            if ($result !== false) { | |
| 62 | - return $result; | |
| 63 | - } | |
| 64 | - } | |
| 57 | + $cacheKey = md5($href); | |
| 58 | +		if (!$this->config()->get('bypass_cache')) { | |
| 59 | + // Check if we have a cached result | |
| 60 | + $result = $this->getCache()->get($cacheKey, false); | |
| 61 | +			if ($result !== false) { | |
| 62 | + return $result; | |
| 63 | + } | |
| 64 | + } | |
| 65 | 65 | |
| 66 | - // No cached result so just request | |
| 67 | - $handle = curl_init($href); | |
| 68 | - curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); | |
| 69 | -        if ($this->config()->get('follow_location')) { | |
| 70 | - curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); | |
| 71 | - } | |
| 72 | - curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5); | |
| 73 | - curl_setopt($handle, CURLOPT_TIMEOUT, 10); | |
| 74 | - curl_exec($handle); | |
| 75 | - $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); | |
| 76 | - curl_close($handle); | |
| 66 | + // No cached result so just request | |
| 67 | + $handle = curl_init($href); | |
| 68 | + curl_setopt($handle, CURLOPT_RETURNTRANSFER, true); | |
| 69 | +		if ($this->config()->get('follow_location')) { | |
| 70 | + curl_setopt($handle, CURLOPT_FOLLOWLOCATION, true); | |
| 71 | + } | |
| 72 | + curl_setopt($handle, CURLOPT_CONNECTTIMEOUT, 5); | |
| 73 | + curl_setopt($handle, CURLOPT_TIMEOUT, 10); | |
| 74 | + curl_exec($handle); | |
| 75 | + $httpCode = curl_getinfo($handle, CURLINFO_HTTP_CODE); | |
| 76 | + curl_close($handle); | |
| 77 | 77 | |
| 78 | -        if (!$this->config()->get('bypass_cache')) { | |
| 79 | - // Cache result | |
| 80 | - $this->getCache()->set($cacheKey, $httpCode); | |
| 81 | - } | |
| 82 | - return $httpCode; | |
| 83 | - } | |
| 78 | +		if (!$this->config()->get('bypass_cache')) { | |
| 79 | + // Cache result | |
| 80 | + $this->getCache()->set($cacheKey, $httpCode); | |
| 81 | + } | |
| 82 | + return $httpCode; | |
| 83 | + } | |
| 84 | 84 | } | 
| @@ -7,7 +7,7 @@ discard block | ||
| 7 | 7 | use SilverStripe\ExternalLinks\Tasks\CheckExternalLinksTask; | 
| 8 | 8 | |
| 9 | 9 |  if (!class_exists(AbstractQueuedJob::class)) { | 
| 10 | - return; | |
| 10 | + return; | |
| 11 | 11 | } | 
| 12 | 12 | |
| 13 | 13 | /** | 
| @@ -17,30 +17,30 @@ discard block | ||
| 17 | 17 | class CheckExternalLinksJob extends AbstractQueuedJob implements QueuedJob | 
| 18 | 18 |  { | 
| 19 | 19 | |
| 20 | - public function getTitle() | |
| 21 | -    { | |
| 22 | - return _t(__CLASS__ . '.TITLE', 'Checking for external broken links'); | |
| 23 | - } | |
| 24 | - | |
| 25 | - public function getJobType() | |
| 26 | -    { | |
| 27 | - return QueuedJob::QUEUED; | |
| 28 | - } | |
| 29 | - | |
| 30 | - public function getSignature() | |
| 31 | -    { | |
| 32 | - return md5(get_class($this)); | |
| 33 | - } | |
| 34 | - | |
| 35 | - /** | |
| 36 | - * Check an individual page | |
| 37 | - */ | |
| 38 | - public function process() | |
| 39 | -    { | |
| 40 | - $task = CheckExternalLinksTask::create(); | |
| 41 | - $track = $task->runLinksCheck(1); | |
| 42 | - $this->currentStep = $track->CompletedPages; | |
| 43 | - $this->totalSteps = $track->TotalPages; | |
| 44 | - $this->isComplete = $track->Status === 'Completed'; | |
| 45 | - } | |
| 20 | + public function getTitle() | |
| 21 | +	{ | |
| 22 | + return _t(__CLASS__ . '.TITLE', 'Checking for external broken links'); | |
| 23 | + } | |
| 24 | + | |
| 25 | + public function getJobType() | |
| 26 | +	{ | |
| 27 | + return QueuedJob::QUEUED; | |
| 28 | + } | |
| 29 | + | |
| 30 | + public function getSignature() | |
| 31 | +	{ | |
| 32 | + return md5(get_class($this)); | |
| 33 | + } | |
| 34 | + | |
| 35 | + /** | |
| 36 | + * Check an individual page | |
| 37 | + */ | |
| 38 | + public function process() | |
| 39 | +	{ | |
| 40 | + $task = CheckExternalLinksTask::create(); | |
| 41 | + $track = $task->runLinksCheck(1); | |
| 42 | + $this->currentStep = $track->CompletedPages; | |
| 43 | + $this->totalSteps = $track->TotalPages; | |
| 44 | + $this->isComplete = $track->Status === 'Completed'; | |
| 45 | + } | |
| 46 | 46 | } | 
| @@ -19,7 +19,7 @@ | ||
| 19 | 19 | |
| 20 | 20 | public function getTitle() | 
| 21 | 21 |      { | 
| 22 | - return _t(__CLASS__ . '.TITLE', 'Checking for external broken links'); | |
| 22 | + return _t(__CLASS__.'.TITLE', 'Checking for external broken links'); | |
| 23 | 23 | } | 
| 24 | 24 | |
| 25 | 25 | public function getJobType() | 
| @@ -16,95 +16,95 @@ | ||
| 16 | 16 | class ExternalLinksTest extends SapphireTest | 
| 17 | 17 |  { | 
| 18 | 18 | |
| 19 | - protected static $fixture_file = 'ExternalLinksTest.yml'; | |
| 19 | + protected static $fixture_file = 'ExternalLinksTest.yml'; | |
| 20 | 20 | |
| 21 | - protected static $extra_dataobjects = array( | |
| 22 | - ExternalLinksTestPage::class | |
| 23 | - ); | |
| 21 | + protected static $extra_dataobjects = array( | |
| 22 | + ExternalLinksTestPage::class | |
| 23 | + ); | |
| 24 | 24 | |
| 25 | - protected function setUp() | |
| 26 | -    { | |
| 27 | - parent::setUp(); | |
| 25 | + protected function setUp() | |
| 26 | +	{ | |
| 27 | + parent::setUp(); | |
| 28 | 28 | |
| 29 | - // Stub link checker | |
| 30 | - $checker = new PretendLinkChecker; | |
| 31 | - Injector::inst()->registerService($checker, LinkChecker::class); | |
| 32 | - } | |
| 29 | + // Stub link checker | |
| 30 | + $checker = new PretendLinkChecker; | |
| 31 | + Injector::inst()->registerService($checker, LinkChecker::class); | |
| 32 | + } | |
| 33 | 33 | |
| 34 | - public function testLinks() | |
| 35 | -    { | |
| 36 | - // Run link checker | |
| 37 | - $task = CheckExternalLinksTask::create(); | |
| 38 | - $task->setSilent(true); // Be quiet during the test! | |
| 39 | - $task->runLinksCheck(); | |
| 34 | + public function testLinks() | |
| 35 | +	{ | |
| 36 | + // Run link checker | |
| 37 | + $task = CheckExternalLinksTask::create(); | |
| 38 | + $task->setSilent(true); // Be quiet during the test! | |
| 39 | + $task->runLinksCheck(); | |
| 40 | 40 | |
| 41 | - // Get all links checked | |
| 42 | - $status = BrokenExternalPageTrackStatus::get_latest(); | |
| 43 | -        $this->assertEquals('Completed', $status->Status); | |
| 44 | - $this->assertEquals(5, $status->TotalPages); | |
| 45 | - $this->assertEquals(5, $status->CompletedPages); | |
| 41 | + // Get all links checked | |
| 42 | + $status = BrokenExternalPageTrackStatus::get_latest(); | |
| 43 | +		$this->assertEquals('Completed', $status->Status); | |
| 44 | + $this->assertEquals(5, $status->TotalPages); | |
| 45 | + $this->assertEquals(5, $status->CompletedPages); | |
| 46 | 46 | |
| 47 | - // Check all pages have had the correct HTML adjusted | |
| 48 | -        for ($i = 1; $i <= 5; $i++) { | |
| 49 | - $page = $this->objFromFixture(ExternalLinksTestPage::class, 'page'.$i); | |
| 50 | - $this->assertNotEmpty($page->Content); | |
| 51 | - $this->assertEquals( | |
| 52 | - $page->ExpectedContent, | |
| 53 | - $page->Content, | |
| 54 | -                "Assert that the content of page{$i} has been updated" | |
| 55 | - ); | |
| 56 | - } | |
| 47 | + // Check all pages have had the correct HTML adjusted | |
| 48 | +		for ($i = 1; $i <= 5; $i++) { | |
| 49 | + $page = $this->objFromFixture(ExternalLinksTestPage::class, 'page'.$i); | |
| 50 | + $this->assertNotEmpty($page->Content); | |
| 51 | + $this->assertEquals( | |
| 52 | + $page->ExpectedContent, | |
| 53 | + $page->Content, | |
| 54 | +				"Assert that the content of page{$i} has been updated" | |
| 55 | + ); | |
| 56 | + } | |
| 57 | 57 | |
| 58 | - // Check that the correct report of broken links is generated | |
| 59 | - $links = $status | |
| 60 | - ->BrokenLinks() | |
| 61 | -            ->sort('Link'); | |
| 58 | + // Check that the correct report of broken links is generated | |
| 59 | + $links = $status | |
| 60 | + ->BrokenLinks() | |
| 61 | +			->sort('Link'); | |
| 62 | 62 | |
| 63 | - $this->assertEquals(4, $links->count()); | |
| 64 | - $this->assertEquals( | |
| 65 | - array( | |
| 66 | - 'http://www.broken.com', | |
| 67 | - 'http://www.broken.com/url/thing', | |
| 68 | - 'http://www.broken.com/url/thing', | |
| 69 | - 'http://www.nodomain.com' | |
| 70 | - ), | |
| 71 | -            array_values($links->map('ID', 'Link')->toArray()) | |
| 72 | - ); | |
| 63 | + $this->assertEquals(4, $links->count()); | |
| 64 | + $this->assertEquals( | |
| 65 | + array( | |
| 66 | + 'http://www.broken.com', | |
| 67 | + 'http://www.broken.com/url/thing', | |
| 68 | + 'http://www.broken.com/url/thing', | |
| 69 | + 'http://www.nodomain.com' | |
| 70 | + ), | |
| 71 | +			array_values($links->map('ID', 'Link')->toArray()) | |
| 72 | + ); | |
| 73 | 73 | |
| 74 | - // Check response codes are correct | |
| 75 | - $expected = array( | |
| 76 | - 'http://www.broken.com' => 403, | |
| 77 | - 'http://www.broken.com/url/thing' => 404, | |
| 78 | - 'http://www.nodomain.com' => 0 | |
| 79 | - ); | |
| 80 | -        $actual = $links->map('Link', 'HTTPCode')->toArray(); | |
| 81 | - $this->assertEquals($expected, $actual); | |
| 74 | + // Check response codes are correct | |
| 75 | + $expected = array( | |
| 76 | + 'http://www.broken.com' => 403, | |
| 77 | + 'http://www.broken.com/url/thing' => 404, | |
| 78 | + 'http://www.nodomain.com' => 0 | |
| 79 | + ); | |
| 80 | +		$actual = $links->map('Link', 'HTTPCode')->toArray(); | |
| 81 | + $this->assertEquals($expected, $actual); | |
| 82 | 82 | |
| 83 | - // Check response descriptions are correct | |
| 84 | -        i18n::set_locale('en_NZ'); | |
| 85 | - $expected = array( | |
| 86 | - 'http://www.broken.com' => '403 (Forbidden)', | |
| 87 | - 'http://www.broken.com/url/thing' => '404 (Not Found)', | |
| 88 | - 'http://www.nodomain.com' => '0 (Server Not Available)' | |
| 89 | - ); | |
| 90 | -        $actual = $links->map('Link', 'HTTPCodeDescription')->toArray(); | |
| 91 | - $this->assertEquals($expected, $actual); | |
| 92 | - } | |
| 83 | + // Check response descriptions are correct | |
| 84 | +		i18n::set_locale('en_NZ'); | |
| 85 | + $expected = array( | |
| 86 | + 'http://www.broken.com' => '403 (Forbidden)', | |
| 87 | + 'http://www.broken.com/url/thing' => '404 (Not Found)', | |
| 88 | + 'http://www.nodomain.com' => '0 (Server Not Available)' | |
| 89 | + ); | |
| 90 | +		$actual = $links->map('Link', 'HTTPCodeDescription')->toArray(); | |
| 91 | + $this->assertEquals($expected, $actual); | |
| 92 | + } | |
| 93 | 93 | |
| 94 | - /** | |
| 95 | - * Test that broken links appears in the reports list | |
| 96 | - */ | |
| 97 | - public function testReportExists() | |
| 98 | -    { | |
| 99 | - $reports = Report::get_reports(); | |
| 100 | - $reportNames = array(); | |
| 101 | -        foreach ($reports as $report) { | |
| 102 | - $reportNames[] = get_class($report); | |
| 103 | - } | |
| 104 | - $this->assertContains( | |
| 105 | - BrokenExternalLinksReport::class, | |
| 106 | - $reportNames, | |
| 107 | - 'BrokenExternalLinksReport is in reports list' | |
| 108 | - ); | |
| 109 | - } | |
| 94 | + /** | |
| 95 | + * Test that broken links appears in the reports list | |
| 96 | + */ | |
| 97 | + public function testReportExists() | |
| 98 | +	{ | |
| 99 | + $reports = Report::get_reports(); | |
| 100 | + $reportNames = array(); | |
| 101 | +		foreach ($reports as $report) { | |
| 102 | + $reportNames[] = get_class($report); | |
| 103 | + } | |
| 104 | + $this->assertContains( | |
| 105 | + BrokenExternalLinksReport::class, | |
| 106 | + $reportNames, | |
| 107 | + 'BrokenExternalLinksReport is in reports list' | |
| 108 | + ); | |
| 109 | + } | |
| 110 | 110 | } | 
| @@ -74,10 +74,9 @@ | ||
| 74 | 74 |              $response = HTTPResponse::create('', $code); | 
| 75 | 75 | // Assume that $code = 0 means there was no response | 
| 76 | 76 | $description = $code ? | 
| 77 | - $response->getStatusDescription() : | |
| 78 | - _t(__CLASS__ . '.NOTAVAILABLE', 'Server Not Available'); | |
| 77 | + $response->getStatusDescription() : _t(__CLASS__.'.NOTAVAILABLE', 'Server Not Available'); | |
| 79 | 78 |          } catch (InvalidArgumentException $e) { | 
| 80 | - $description = _t(__CLASS__ . '.UNKNOWNRESPONSE', 'Unknown Response Code'); | |
| 79 | + $description = _t(__CLASS__.'.UNKNOWNRESPONSE', 'Unknown Response Code'); | |
| 81 | 80 | } | 
| 82 | 81 | |
| 83 | 82 |          return sprintf("%d (%s)", $code, $description); | 
| @@ -17,68 +17,68 @@ | ||
| 17 | 17 | */ | 
| 18 | 18 | class BrokenExternalLink extends DataObject | 
| 19 | 19 |  { | 
| 20 | - private static $table_name = 'BrokenExternalLink'; | |
| 20 | + private static $table_name = 'BrokenExternalLink'; | |
| 21 | 21 | |
| 22 | - private static $db = array( | |
| 23 | - 'Link' => 'Varchar(2083)', // 2083 is the maximum length of a URL in Internet Explorer. | |
| 24 | - 'HTTPCode' =>'Int' | |
| 25 | - ); | |
| 22 | + private static $db = array( | |
| 23 | + 'Link' => 'Varchar(2083)', // 2083 is the maximum length of a URL in Internet Explorer. | |
| 24 | + 'HTTPCode' =>'Int' | |
| 25 | + ); | |
| 26 | 26 | |
| 27 | - private static $has_one = array( | |
| 28 | - 'Track' => BrokenExternalPageTrack::class, | |
| 29 | - 'Status' => BrokenExternalPageTrackStatus::class | |
| 30 | - ); | |
| 27 | + private static $has_one = array( | |
| 28 | + 'Track' => BrokenExternalPageTrack::class, | |
| 29 | + 'Status' => BrokenExternalPageTrackStatus::class | |
| 30 | + ); | |
| 31 | 31 | |
| 32 | - private static $summary_fields = array( | |
| 33 | - 'Created' => 'Checked', | |
| 34 | - 'Link' => 'External Link', | |
| 35 | - 'HTTPCodeDescription' => 'HTTP Error Code', | |
| 36 | - 'Page.Title' => 'Page link is on' | |
| 37 | - ); | |
| 32 | + private static $summary_fields = array( | |
| 33 | + 'Created' => 'Checked', | |
| 34 | + 'Link' => 'External Link', | |
| 35 | + 'HTTPCodeDescription' => 'HTTP Error Code', | |
| 36 | + 'Page.Title' => 'Page link is on' | |
| 37 | + ); | |
| 38 | 38 | |
| 39 | - private static $searchable_fields = array( | |
| 40 | -        'HTTPCode' => array('title' => 'HTTP Code') | |
| 41 | - ); | |
| 39 | + private static $searchable_fields = array( | |
| 40 | +		'HTTPCode' => array('title' => 'HTTP Code') | |
| 41 | + ); | |
| 42 | 42 | |
| 43 | - /** | |
| 44 | - * @return SiteTree | |
| 45 | - */ | |
| 46 | - public function Page() | |
| 47 | -    { | |
| 48 | - return $this->Track()->Page(); | |
| 49 | - } | |
| 43 | + /** | |
| 44 | + * @return SiteTree | |
| 45 | + */ | |
| 46 | + public function Page() | |
| 47 | +	{ | |
| 48 | + return $this->Track()->Page(); | |
| 49 | + } | |
| 50 | 50 | |
| 51 | - public function canEdit($member = false) | |
| 52 | -    { | |
| 53 | - return false; | |
| 54 | - } | |
| 51 | + public function canEdit($member = false) | |
| 52 | +	{ | |
| 53 | + return false; | |
| 54 | + } | |
| 55 | 55 | |
| 56 | - public function canView($member = false) | |
| 57 | -    { | |
| 58 | - $member = $member ? $member : Security::getCurrentUser(); | |
| 59 | -        $codes = array('content-authors', 'administrators'); | |
| 60 | - return Permission::checkMember($member, $codes); | |
| 61 | - } | |
| 56 | + public function canView($member = false) | |
| 57 | +	{ | |
| 58 | + $member = $member ? $member : Security::getCurrentUser(); | |
| 59 | +		$codes = array('content-authors', 'administrators'); | |
| 60 | + return Permission::checkMember($member, $codes); | |
| 61 | + } | |
| 62 | 62 | |
| 63 | - /** | |
| 64 | - * Retrieve a human readable description of a response code | |
| 65 | - * | |
| 66 | - * @return string | |
| 67 | - */ | |
| 68 | - public function getHTTPCodeDescription() | |
| 69 | -    { | |
| 70 | - $code = $this->HTTPCode; | |
| 63 | + /** | |
| 64 | + * Retrieve a human readable description of a response code | |
| 65 | + * | |
| 66 | + * @return string | |
| 67 | + */ | |
| 68 | + public function getHTTPCodeDescription() | |
| 69 | +	{ | |
| 70 | + $code = $this->HTTPCode; | |
| 71 | 71 | |
| 72 | -        try { | |
| 73 | -            $response = HTTPResponse::create('', $code); | |
| 74 | - // Assume that $code = 0 means there was no response | |
| 75 | - $description = $code ? | |
| 76 | - $response->getStatusDescription() : | |
| 77 | - _t(__CLASS__ . '.NOTAVAILABLE', 'Server Not Available'); | |
| 78 | -        } catch (InvalidArgumentException $e) { | |
| 79 | - $description = _t(__CLASS__ . '.UNKNOWNRESPONSE', 'Unknown Response Code'); | |
| 80 | - } | |
| 72 | +		try { | |
| 73 | +			$response = HTTPResponse::create('', $code); | |
| 74 | + // Assume that $code = 0 means there was no response | |
| 75 | + $description = $code ? | |
| 76 | + $response->getStatusDescription() : | |
| 77 | + _t(__CLASS__ . '.NOTAVAILABLE', 'Server Not Available'); | |
| 78 | +		} catch (InvalidArgumentException $e) { | |
| 79 | + $description = _t(__CLASS__ . '.UNKNOWNRESPONSE', 'Unknown Response Code'); | |
| 80 | + } | |
| 81 | 81 | |
| 82 | -        return sprintf("%d (%s)", $code, $description); | |
| 83 | - } | |
| 82 | +		return sprintf("%d (%s)", $code, $description); | |
| 83 | + } | |
| 84 | 84 | } | 
| @@ -12,62 +12,62 @@ | ||
| 12 | 12 | class CMSExternalLinksController extends Controller | 
| 13 | 13 |  { | 
| 14 | 14 | |
| 15 | - private static $allowed_actions = [ | |
| 16 | - 'getJobStatus', | |
| 17 | - 'start' | |
| 18 | - ]; | |
| 15 | + private static $allowed_actions = [ | |
| 16 | + 'getJobStatus', | |
| 17 | + 'start' | |
| 18 | + ]; | |
| 19 | 19 | |
| 20 | - /** | |
| 21 | - * Respond to Ajax requests for info on a running job | |
| 22 | - * | |
| 23 | - * @return string JSON string detailing status of the job | |
| 24 | - */ | |
| 25 | - public function getJobStatus() | |
| 26 | -    { | |
| 27 | - // Set headers | |
| 28 | - HTTP::set_cache_age(0); | |
| 29 | - HTTP::add_cache_headers($this->response); | |
| 30 | - $this->response | |
| 31 | -            ->addHeader('Content-Type', 'application/json') | |
| 32 | -            ->addHeader('Content-Encoding', 'UTF-8') | |
| 33 | -            ->addHeader('X-Content-Type-Options', 'nosniff'); | |
| 20 | + /** | |
| 21 | + * Respond to Ajax requests for info on a running job | |
| 22 | + * | |
| 23 | + * @return string JSON string detailing status of the job | |
| 24 | + */ | |
| 25 | + public function getJobStatus() | |
| 26 | +	{ | |
| 27 | + // Set headers | |
| 28 | + HTTP::set_cache_age(0); | |
| 29 | + HTTP::add_cache_headers($this->response); | |
| 30 | + $this->response | |
| 31 | +			->addHeader('Content-Type', 'application/json') | |
| 32 | +			->addHeader('Content-Encoding', 'UTF-8') | |
| 33 | +			->addHeader('X-Content-Type-Options', 'nosniff'); | |
| 34 | 34 | |
| 35 | - // Format status | |
| 36 | - $track = BrokenExternalPageTrackStatus::get_latest(); | |
| 37 | -        if ($track) { | |
| 38 | - return json_encode([ | |
| 39 | - 'TrackID' => $track->ID, | |
| 40 | - 'Status' => $track->Status, | |
| 41 | - 'Completed' => $track->getCompletedPages(), | |
| 42 | - 'Total' => $track->getTotalPages() | |
| 43 | - ]); | |
| 44 | - } | |
| 45 | - } | |
| 35 | + // Format status | |
| 36 | + $track = BrokenExternalPageTrackStatus::get_latest(); | |
| 37 | +		if ($track) { | |
| 38 | + return json_encode([ | |
| 39 | + 'TrackID' => $track->ID, | |
| 40 | + 'Status' => $track->Status, | |
| 41 | + 'Completed' => $track->getCompletedPages(), | |
| 42 | + 'Total' => $track->getTotalPages() | |
| 43 | + ]); | |
| 44 | + } | |
| 45 | + } | |
| 46 | 46 | |
| 47 | 47 | |
| 48 | - /** | |
| 49 | - * Starts a broken external link check | |
| 50 | - */ | |
| 51 | - public function start() | |
| 52 | -    { | |
| 53 | - // return if the a job is already running | |
| 54 | - $status = BrokenExternalPageTrackStatus::get_latest(); | |
| 55 | -        if ($status && $status->Status == 'Running') { | |
| 56 | - return; | |
| 57 | - } | |
| 48 | + /** | |
| 49 | + * Starts a broken external link check | |
| 50 | + */ | |
| 51 | + public function start() | |
| 52 | +	{ | |
| 53 | + // return if the a job is already running | |
| 54 | + $status = BrokenExternalPageTrackStatus::get_latest(); | |
| 55 | +		if ($status && $status->Status == 'Running') { | |
| 56 | + return; | |
| 57 | + } | |
| 58 | 58 | |
| 59 | - // Create a new job | |
| 60 | -        if (class_exists(QueuedJobService::class)) { | |
| 61 | - // Force the creation of a new run | |
| 62 | - BrokenExternalPageTrackStatus::create_status(); | |
| 63 | - $checkLinks = new CheckExternalLinksJob(); | |
| 64 | - singleton(QueuedJobService::class)->queueJob($checkLinks); | |
| 65 | -        } else { | |
| 66 | - //TODO this hangs as it waits for the connection to be released | |
| 67 | - // should return back and continue processing | |
| 68 | - // http://us3.php.net/manual/en/features.connection-handling.php | |
| 69 | - $task = CheckExternalLinksTask::create(); | |
| 70 | - $task->runLinksCheck(); | |
| 71 | - } | |
| 72 | - } | |
| 59 | + // Create a new job | |
| 60 | +		if (class_exists(QueuedJobService::class)) { | |
| 61 | + // Force the creation of a new run | |
| 62 | + BrokenExternalPageTrackStatus::create_status(); | |
| 63 | + $checkLinks = new CheckExternalLinksJob(); | |
| 64 | + singleton(QueuedJobService::class)->queueJob($checkLinks); | |
| 65 | +		} else { | |
| 66 | + //TODO this hangs as it waits for the connection to be released | |
| 67 | + // should return back and continue processing | |
| 68 | + // http://us3.php.net/manual/en/features.connection-handling.php | |
| 69 | + $task = CheckExternalLinksTask::create(); | |
| 70 | + $task->runLinksCheck(); | |
| 71 | + } | |
| 72 | + } | |
| 73 | 73 | } | 
| @@ -6,24 +6,24 @@ | ||
| 6 | 6 | |
| 7 | 7 | class PretendLinkChecker implements LinkChecker, TestOnly | 
| 8 | 8 |  { | 
| 9 | - public function checkLink($href) | |
| 10 | -    { | |
| 11 | -        switch ($href) { | |
| 12 | - case 'http://www.working.com': | |
| 13 | - return 200; | |
| 14 | - case 'http://www.broken.com': | |
| 15 | - return 403; | |
| 16 | - case 'http://www.nodomain.com': | |
| 17 | - return 0; | |
| 18 | - case '/internal/link': | |
| 19 | - case '[sitetree_link,id=9999]': | |
| 20 | - case 'home': | |
| 21 | - case 'broken-internal': | |
| 22 | - case '[sitetree_link,id=1]': | |
| 23 | - return null; | |
| 24 | - case 'http://www.broken.com/url/thing': | |
| 25 | - default: | |
| 26 | - return 404; | |
| 27 | - } | |
| 28 | - } | |
| 9 | + public function checkLink($href) | |
| 10 | +	{ | |
| 11 | +		switch ($href) { | |
| 12 | + case 'http://www.working.com': | |
| 13 | + return 200; | |
| 14 | + case 'http://www.broken.com': | |
| 15 | + return 403; | |
| 16 | + case 'http://www.nodomain.com': | |
| 17 | + return 0; | |
| 18 | + case '/internal/link': | |
| 19 | + case '[sitetree_link,id=9999]': | |
| 20 | + case 'home': | |
| 21 | + case 'broken-internal': | |
| 22 | + case '[sitetree_link,id=1]': | |
| 23 | + return null; | |
| 24 | + case 'http://www.broken.com/url/thing': | |
| 25 | + default: | |
| 26 | + return 404; | |
| 27 | + } | |
| 28 | + } | |
| 29 | 29 | } | 
| @@ -7,9 +7,9 @@ | ||
| 7 | 7 | |
| 8 | 8 | class ExternalLinksTestPage extends Page implements TestOnly | 
| 9 | 9 |  { | 
| 10 | - private static $table_name = 'ExternalLinksTestPage'; | |
| 10 | + private static $table_name = 'ExternalLinksTestPage'; | |
| 11 | 11 | |
| 12 | - private static $db = array( | |
| 13 | - 'ExpectedContent' => 'HTMLText' | |
| 14 | - ); | |
| 12 | + private static $db = array( | |
| 13 | + 'ExpectedContent' => 'HTMLText' | |
| 14 | + ); | |
| 15 | 15 | } |