From f3d3582af1fe78d75736117dbc841be20d333cd1 Mon Sep 17 00:00:00 2001 From: logmanoriginal Date: Tue, 2 Aug 2016 16:20:43 +0200 Subject: [PATCH] Change all nested functions to member functions This fixes error "Using $this when not in object context" Nested functions are not part of the object and therefore don't have access to the object instance $this! This also fixes an error where calling collectData multiple times would result in an attempt to redeclare all nested functions (which would cause errors) --- bridges/GBAtempBridge.php | 109 +++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 55 deletions(-) diff --git a/bridges/GBAtempBridge.php b/bridges/GBAtempBridge.php index d0d1faea..69c5d097 100644 --- a/bridges/GBAtempBridge.php +++ b/bridges/GBAtempBridge.php @@ -9,7 +9,7 @@ class GBAtempBridge extends BridgeAbstract { $this->name = 'GBAtemp'; $this->uri = $this->getURI(); $this->description = 'GBAtemp is a user friendly underground video game community.'; - $this->update = '2016-02-14'; + $this->update = '2016-08-02'; $this->parameters[] = '[ @@ -40,48 +40,47 @@ class GBAtempBridge extends BridgeAbstract { ]'; } + function ExtractFromDelimiters($string, $start, $end) { + if (strpos($string, $start) !== false) { + $section_retrieved = substr($string, strpos($string, $start) + strlen($start)); + $section_retrieved = substr($section_retrieved, 0, strpos($section_retrieved, $end)); + return $section_retrieved; + } return false; + } + + function StripWithDelimiters($string, $start, $end) { + while (strpos($string, $start) !== false) { + $section_to_remove = substr($string, strpos($string, $start)); + $section_to_remove = substr($section_to_remove, 0, strpos($section_to_remove, $end) + strlen($end)); + $string = str_replace($section_to_remove, '', $string); + } return $string; + } + + function build_item($uri, $title, $author, $timestamp, $thumnail, $content) { + $item = new \Item(); + $item->uri = $uri; + $item->title = $title; + $item->author = $author; + $item->timestamp = $timestamp; + $item->thumbnailUri = $thumnail; + $item->content = $content; + return $item; + } + + function cleanup_post_content($content, $site_url) { + $content = str_replace(':arrow:', '➤', $content); + $content = str_replace('href="attachments/', 'href="'.$site_url.'attachments/', $content); + $content = $this->StripWithDelimiters($content, ''); + return $content; + } + + function fetch_post_content($uri, $site_url) { + $html = $this->file_get_html($uri) or $this->returnError('Could not request GBAtemp: '.$uri, 500); + $content = $html->find('div.messageContent', 0)->innertext; + return $this->cleanup_post_content($content, $site_url); + } + public function collectData(array $param) { - - function ExtractFromDelimiters($string, $start, $end) { - if (strpos($string, $start) !== false) { - $section_retrieved = substr($string, strpos($string, $start) + strlen($start)); - $section_retrieved = substr($section_retrieved, 0, strpos($section_retrieved, $end)); - return $section_retrieved; - } return false; - } - - function StripWithDelimiters($string, $start, $end) { - while (strpos($string, $start) !== false) { - $section_to_remove = substr($string, strpos($string, $start)); - $section_to_remove = substr($section_to_remove, 0, strpos($section_to_remove, $end) + strlen($end)); - $string = str_replace($section_to_remove, '', $string); - } return $string; - } - - function build_item($uri, $title, $author, $timestamp, $thumnail, $content) { - $item = new \Item(); - $item->uri = $uri; - $item->title = $title; - $item->author = $author; - $item->timestamp = $timestamp; - $item->thumbnailUri = $thumnail; - $item->content = $content; - return $item; - } - - function cleanup_post_content($content, $site_url) { - $content = str_replace(':arrow:', '➤', $content); - $content = str_replace('href="attachments/', 'href="'.$site_url.'attachments/', $content); - $content = StripWithDelimiters($content, ''); - return $content; - } - - function fetch_post_content($uri, $site_url) { - $html = $this->file_get_html($uri) or $this->returnError('Could not request GBAtemp: '.$uri, 500); - $content = $html->find('div.messageContent', 0)->innertext; - return cleanup_post_content($content, $site_url); - } - $typeFilter = ''; if (!empty($param['type'])) { if ($param['type'] == 'N' || $param['type'] == 'R' || $param['type'] == 'T' || $param['type'] == 'F') { @@ -99,45 +98,45 @@ class GBAtempBridge extends BridgeAbstract { foreach ($html->find('li[class=news_item full]') as $newsItem) { $url = $this->getURI().$newsItem->find('a', 0)->href; $img = $this->getURI().$newsItem->find('img', 0)->src; - $time = intval(ExtractFromDelimiters($newsItem->find('abbr.DateTime', 0)->outertext, 'data-time="', '"')); + $time = intval($this->ExtractFromDelimiters($newsItem->find('abbr.DateTime', 0)->outertext, 'data-time="', '"')); $author = $newsItem->find('a.username', 0)->plaintext; $title = $newsItem->find('a', 1)->plaintext; - $content = fetch_post_content($url, $this->getURI()); - $this->items[] = build_item($url, $title, $author, $time, $img, $content); + $content = $this->fetch_post_content($url, $this->getURI()); + $this->items[] = $this->build_item($url, $title, $author, $time, $img, $content); } } else if ($typeFilter == 'R') { foreach ($html->find('li.portal_review') as $reviewItem) { $url = $this->getURI().$reviewItem->find('a', 0)->href; - $img = $this->getURI().ExtractFromDelimiters($reviewItem->find('a', 0)->style, 'image:url(', ')'); + $img = $this->getURI().$this->ExtractFromDelimiters($reviewItem->find('a', 0)->style, 'image:url(', ')'); $title = $reviewItem->find('span.review_title', 0)->plaintext; $content = $this->file_get_html($url) or $this->returnError('Could not request GBAtemp: '.$uri, 500); $author = $content->find('a.username', 0)->plaintext; - $time = intval(ExtractFromDelimiters($content->find('abbr.DateTime', 0)->outertext, 'data-time="', '"')); + $time = intval($this->ExtractFromDelimiters($content->find('abbr.DateTime', 0)->outertext, 'data-time="', '"')); $intro = '

'.($content->find('div#review_intro', 0)->plaintext).'

'; $review = $content->find('div#review_main', 0)->innertext; $subheader = '

'.$content->find('div.review_subheader', 0)->plaintext.'

'; $procons = $content->find('table.review_procons', 0)->outertext; $scores = $content->find('table.reviewscores', 0)->outertext; - $content = cleanup_post_content($intro.$review.$subheader.$procons.$scores, $this->getURI()); - $this->items[] = build_item($url, $title, $author, $time, $img, $content); + $content = $this->cleanup_post_content($intro.$review.$subheader.$procons.$scores, $this->getURI()); + $this->items[] = $this->build_item($url, $title, $author, $time, $img, $content); } } else if ($typeFilter == 'T') { foreach ($html->find('li.portal-tutorial') as $tutorialItem) { $url = $this->getURI().$tutorialItem->find('a', 0)->href; $title = $tutorialItem->find('a', 0)->plaintext; - $time = intval(ExtractFromDelimiters($tutorialItem->find('abbr.DateTime', 0)->outertext, 'data-time="', '"')); + $time = intval($this->ExtractFromDelimiters($tutorialItem->find('abbr.DateTime', 0)->outertext, 'data-time="', '"')); $author = $tutorialItem->find('a.username', 0)->plaintext; - $content = fetch_post_content($url, $this->getURI()); - $this->items[] = build_item($url, $title, $author, $time, '', $content); + $content = $this->fetch_post_content($url, $this->getURI()); + $this->items[] = $this->build_item($url, $title, $author, $time, '', $content); } } else if ($typeFilter == 'F') { foreach ($html->find('li.rc_item') as $postItem) { $url = $this->getURI().$postItem->find('a', 1)->href; $title = $postItem->find('a', 1)->plaintext; - $time = intval(ExtractFromDelimiters($postItem->find('abbr.DateTime', 0)->outertext, 'data-time="', '"')); + $time = intval($this->ExtractFromDelimiters($postItem->find('abbr.DateTime', 0)->outertext, 'data-time="', '"')); $author = $postItem->find('a.username', 0)->plaintext; - $content = fetch_post_content($url, $this->getURI()); - $this->items[] = build_item($url, $title, $author, $time, '', $content); + $content = $this->fetch_post_content($url, $this->getURI()); + $this->items[] = $this->build_item($url, $title, $author, $time, '', $content); } } }