diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2013-11-21 07:22:54 +0100 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2013-11-21 07:22:54 +0100 |
| commit | 1ee5f44ac9a3125f16318ca1d24a7f7e8010a169 (patch) | |
| tree | 5a6fdc73ff6680c11839e24803cedb5ff3d9ff6a /src | |
| parent | f92de25cd3760271ea81fcdc5809b64f5f8f2247 (diff) | |
| download | phorkie-1ee5f44ac9a3125f16318ca1d24a7f7e8010a169.tar.gz phorkie-1ee5f44ac9a3125f16318ca1d24a7f7e8010a169.zip | |
Use title of remote paste for forked one; use page title as fallback
Diffstat (limited to 'src')
| -rw-r--r-- | src/phorkie/ForkRemote.php | 25 | ||||
| -rw-r--r-- | src/phorkie/Forker.php | 10 |
2 files changed, 28 insertions, 7 deletions
diff --git a/src/phorkie/ForkRemote.php b/src/phorkie/ForkRemote.php index 8784e8e..31b4839 100644 --- a/src/phorkie/ForkRemote.php +++ b/src/phorkie/ForkRemote.php @@ -72,6 +72,8 @@ class ForkRemote libxml_use_internal_errors(true); $sx = simplexml_import_dom(\DomDocument::loadHtmlFile($url)); $elems = $sx->xpath('//*[@rel="vcs-git"]'); + $titles = $sx->xpath('/html/head/title'); + $pageTitle = $this->cleanPageTitle((string) reset($titles)); $count = $anonymous = 0; foreach ($elems as $elem) { @@ -85,6 +87,8 @@ class ForkRemote } else if ($str != '') { //<a href=".." rel="vcs-git">title</a> $title = $str; + } else if ($pageTitle != '') { + $title = $pageTitle; } else { $title = 'Unnamed repository #' . ++$anonymous; } @@ -107,7 +111,7 @@ class ForkRemote * Iterate through all git urls and return one if there is only * one supported one. * - * @return mixed Boolean false or string + * @return mixed Boolean false or array with keys "url" and "title" */ public function getUniqueGitUrl() { @@ -115,7 +119,7 @@ class ForkRemote foreach ($this->arGitUrls as $title => $arUrls) { foreach ($arUrls as $url) { $nFound++; - $uniqueUrl = $url; + $uniqueUrl = array('url' => $url, 'title' => $title); } } @@ -152,6 +156,23 @@ class ForkRemote return $scheme == 'git' || $scheme == 'http' || $scheme == 'https'; } + + /** + * Remove application names from HTML page titles + * + * @param string $title HTML page title + * + * @return string Cleaned HTML page title + */ + protected function cleanPageTitle($title) + { + $title = trim($title); + if (substr($title, -9) == '- phorkie') { + $title = trim(substr($title, 0, -9)); + } + + return $title; + } } ?> diff --git a/src/phorkie/Forker.php b/src/phorkie/Forker.php index f4e1295..419db1e 100644 --- a/src/phorkie/Forker.php +++ b/src/phorkie/Forker.php @@ -15,13 +15,13 @@ class Forker return $new; } - public function forkRemote($cloneUrl, $originalUrl) + public function forkRemote($cloneUrl, $originalUrl, $title = null) { + if ($title === null) { + $title = 'Fork of ' . $originalUrl; + } $new = $this->fork($cloneUrl); - file_put_contents( - $new->gitDir . '/description', - 'Fork of ' . $originalUrl - ); + file_put_contents($new->gitDir . '/description', $title); $this->index($new); $not = new Notificator(); |
