Skip to content

Commit

Permalink
Converting relative urls to absolute
Browse files Browse the repository at this point in the history
  • Loading branch information
jae-jae committed Sep 26, 2017
1 parent e367b69 commit c70a6ed
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .gitignore
@@ -0,0 +1,3 @@
.idea/
vendor/
composer.lock
44 changes: 44 additions & 0 deletions AbsoluteUrl.php
@@ -0,0 +1,44 @@
<?php
/**
* Created by PhpStorm.
* User: Jaeger <JaegerCode@gmail.com>
* Date: 2017/9/26
* Converting relative urls to absolute
*/

namespace QL\Ext;

use QL\Contracts\PluginContract;
use QL\QueryList;
use phpUri;

class AbsoluteUrl implements PluginContract
{
public static function install(QueryList $queryList, ...$opt)
{
$absoluteUrl = $opt[0] ?? 'absoluteUrl';
$absoluteUrlHelper = $opt[1] ?? 'absoluteUrlHelper';

// convert all link
$queryList->bind($absoluteUrl,function ($url){
return AbsoluteUrl::convertAll($this,$url);
});

// convert helper
$queryList->bind($absoluteUrlHelper,function ($url,$relativeUrl){
return phpUri::parse($url)->join($relativeUrl);
});
}

public static function convertAll($ql,$url)
{
$parser = phpUri::parse($url);
$ql->find('a')->map(function($item) use ($parser,$ql){
$relativeUrl = $item->attr('href');
$absoluteUrl = $parser->join($relativeUrl);
$item->attr('href',$absoluteUrl);
});
$ql->setHtml($ql->find('')->html());
return $ql;
}
}
13 changes: 13 additions & 0 deletions composer.json
@@ -0,0 +1,13 @@
{
"require": {
"pguardiario/phpuri": "^1.0"
},
"require-dev": {
"jaeger/querylist": "dev-master"
},
"autoload": {
"psr-4": {
"QL\\Ext\\": ""
}
}
}

0 comments on commit c70a6ed

Please sign in to comment.