From 453cacf490abd544de4eec67f7df4df138c5f3b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20Mazi=C3=A8re?= Date: Mon, 29 Aug 2016 12:20:18 +0200 Subject: [PATCH] [KununuBridge] code simplification MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Pierre Mazière --- bridges/KununuBridge.php | 91 +++++++++++++++------------------------- 1 file changed, 34 insertions(+), 57 deletions(-) diff --git a/bridges/KununuBridge.php b/bridges/KununuBridge.php index 29a6a199..aa63c342 100644 --- a/bridges/KununuBridge.php +++ b/bridges/KununuBridge.php @@ -1,8 +1,8 @@ 'Site', 'type'=>'list', 'required'=>true, - 'exampleValue'=>'United States', 'title'=>'Select your site', 'values'=>array( 'Austria'=>'at', @@ -39,47 +38,40 @@ class KununuBridge extends HttpCachingBridgeAbstract { ) ); + private $companyName=''; + + public function getURI(){ + $company = $this->encode_umlauts(strtolower(str_replace(' ', '-', trim($this->getInput('company'))))); + $site=$this->getInput('site'); + $section = ''; + switch($site){ + case 'at': + case 'de': + case 'ch': + $section = 'kommentare'; + break; + case 'us': + $section = 'reviews'; + break; + } + + return $this->uri.$site.'/'.$company.'/'.$section; + } + + function getName(){ + $company = $this->encode_umlauts(strtolower(str_replace(' ', '-', trim($this->getInput('company'))))); + return ($this->companyName?:$company).' - '.$this->name; + } + public function collectData(){ - - // Get Site - $site = strtolower(trim($this->getInput('site'))); - if(!isset($site) || empty($site) || !$this->site_is_valid($site)) - $this->returnClientError('You must specify a valid site (&site=...)!'); - - // Get Company (fixing whitespace and umlauts) - $company = $this->encode_umlauts(strtolower(str_replace(' ', '-', trim($this->getInput('company'))))); - if(!isset($company) || empty($company)) - $this->returnClientError('You must specify a company (&company=...)!'); - - $full = false; // By default we'll load only short article - if($this->getInput('full')) - $full = strtolower(trim($this->getInput('full'))); - - // Get reviews section name (depends on site) - $section = ''; - switch($site){ - case 'at': - case 'de': - case 'ch': - $section = 'kommentare'; - break; - case 'us': - $section = 'reviews'; - break; - default: - $this->returnServerError('The reviews section is not defined for you selection!'); - } - - // Update URI for the content - $this->uri .= "/{$site}/{$company}/{$section}"; + $full = $this->getInput('full'); // Load page - $html = $this->getSimpleHTMLDOM($this->uri); - if($html === false) - $this->returnServerError('Unable to receive data from ' . $this->uri . '!'); - + $html = $this->getSimpleHTMLDOM($this->getURI()); + if(!$html) + $this->returnServerError('Unable to receive data from ' . $this->getURI() . '!'); // Update name for this request - $this->name = $this->extract_company_name($html) . ' - ' . $this->name; + $this->companyName = $this->extract_company_name($html); // Find the section with all the panels (reviews) $section = $html->find('section.kununu-scroll-element', 0); @@ -113,26 +105,11 @@ class KununuBridge extends HttpCachingBridgeAbstract { return 86400; // 1 day } - /** - * Returns true if the given site is part of the parameters list - */ - private function site_is_valid($site){ - $parameter = $this->parameters['global']; - $sites = $parameter['site']['values']; - - $site_names = array(); - - foreach($sites as $name=>$value) - $site_names[] = $value; - - return in_array($site, $site_names); - } - /** * Fixes relative URLs in the given text */ private function fix_url($text){ - return preg_replace('/href=(\'|\")\//i', 'href="https://www.kununu.com/', $text); + return preg_replace('/href=(\'|\")\//i', 'href="'.$this->uri, $text); } /** @@ -207,7 +184,7 @@ class KununuBridge extends HttpCachingBridgeAbstract { if($anchor === false) $this->returnServerError('Cannot find article URI!'); - return 'https://www.kununu.com' . $anchor->href; + return $this->uri . $anchor->href; } /**