diff --git a/inc/class.kutrl.php b/inc/class.kutrl.php index cfbade9..b227a66 100644 --- a/inc/class.kutrl.php +++ b/inc/class.kutrl.php @@ -10,95 +10,92 @@ # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html # -- END LICENSE BLOCK ------------------------------------ -if (!defined('DC_RC_PATH')){return;} +if (!defined('DC_RC_PATH')) { + return null; +} # Generic class to play easily with services class kUtRL { - # Load services list from behavior - public static function getServices($core) - { - $list = $core->getBehaviors('kutrlService'); - - if (empty($list)) return array(); - - $service = array(); - foreach($list as $k => $callback) - { - try - { - list($service_id,$service_class) = call_user_func($callback); - $services[(string) $service_id] = (string) $service_class; - } - catch (Exception $e) {} - } - return $services; - } - - # Silently try to load a service according to its id - # Return null on error else service on success - public static function quickService($id='') - { - global $core; - - try - { - if (empty($id)) { - return null; - } - $services = self::getServices($core); - if (isset($services[$id])) { - return new $services[$id]($core); - } - } - catch(Exception $e) { } - - return null; - } - - # Silently try to load a service according to its place - # Return null on error else service on success - public static function quickPlace($place='plugin') - { - global $core; - - try - { - if (!in_array($place,array('tpl','wiki','admin','plugin'))) { - return null; - } - $id = $core->blog->settings->kUtRL->get('kutrl_'.$place.'_service'); - if (!empty($id)) { - return self::quickService($id); - } - } - catch(Exception $e) { } - - return null; - } - - # Silently try to reduce url (using 'plugin' place) - # return long url on error else short url on success - public static function quickReduce($url,$custom=null,$place='plugin') - { - global $core; - - try - { - $srv = self::quickPlace($place); - if (empty($srv)) { - return $url; - } - $rs = $srv->hash($url,$custom); - if (empty($rs)) { - return $url; - } - - return $srv->url_base.$rs->hash; - } - catch(Exception $e) { } - - return $url; - } -} -?> \ No newline at end of file + # Load services list from behavior + public static function getServices($core) + { + $list = $core->getBehaviors('kutrlService'); + + if (empty($list)) { + return []; + } + $service = []; + foreach($list as $k => $callback) { + try { + list($service_id,$service_class) = call_user_func($callback); + $services[(string) $service_id] = (string) $service_class; + } catch (Exception $e) { + + } + } + return $services; + } + + # Silently try to load a service according to its id + # Return null on error else service on success + public static function quickService($id = '') + { + global $core; + + try { + if (empty($id)) { + return null; + } + $services = self::getServices($core); + if (isset($services[$id])) { + return new $services[$id]($core); + } + } catch(Exception $e) { + + } + return null; + } + + # Silently try to load a service according to its place + # Return null on error else service on success + public static function quickPlace($place = 'plugin') + { + global $core; + + try { + if (!in_array($place, ['tpl', 'wiki', 'admin', 'plugin'])) { + return null; + } + $id = $core->blog->settings->kUtRL->get('kutrl_' . $place .'_service'); + if (!empty($id)) { + return self::quickService($id); + } + } catch(Exception $e) { + + } + return null; + } + + # Silently try to reduce url (using 'plugin' place) + # return long url on error else short url on success + public static function quickReduce($url, $custom = null, $place = 'plugin') + { + global $core; + + try { + $srv = self::quickPlace($place); + if (empty($srv)) { + return $url; + } + $rs = $srv->hash($url,$custom); + if (empty($rs)) { + return $url; + } + return $srv->url_base.$rs->hash; + } catch(Exception $e) { + + } + return $url; + } +} \ No newline at end of file diff --git a/inc/index.link.php b/inc/index.link.php index d2bd1a1..1283dc9 100644 --- a/inc/index.link.php +++ b/inc/index.link.php @@ -12,142 +12,128 @@ # This file manage admin link creation of kUtRL (called from index.php) -if (!defined('DC_CONTEXT_ADMIN')){return;} +if (!defined('DC_CONTEXT_ADMIN')) { + return null; +} $kut = kutrl::quickPlace('admin'); # Create a new link if ($action == 'createlink') { + try { + if (null === $kut) { + throw new Exception('Unknow service'); + } + $url = trim($core->con->escape($_POST['str'])); + $hash = empty($_POST['custom']) ? null : $_POST['custom']; + + if (empty($url)) { + throw new Exception(__('There is nothing to shorten.')); + } + if (!$kut->testService()) { + throw new Exception(__('Service is not well configured.')); + } + if (null !== $hash && !$kut->allow_custom_hash) { + throw new Exception(__('This service does not allowed custom hash.')); + } + if (!$kut->isValidUrl($url)) { + throw new Exception(__('This link is not a valid URL.')); + } + if (!$kut->isLongerUrl($url)) { + throw new Exception(__('This link is too short.')); + } + if (!$kut->isProtocolUrl($url)) { + throw new Exception(__('This type of link is not allowed.')); + } + if (!$kut->allow_external_url && !$kut->isBlogUrl($url)) { + throw new Exception(__('Short links are limited to this blog URL.')); + } + if ($kut->isServiceUrl($url)) { + throw new Exception(__('This link is already a short link.')); + } + if (null !== $hash && false !== ($rs = $kut->isKnowHash($hash))) { + throw new Exception(__('This custom short url is already taken.')); + } + if (false !== ($rs = $kut->isKnowUrl($url))) { + $url = $rs->url; + $new_url = $kut->url_base .$rs->hash; + $msg = + '

' . + sprintf( + __('Short link for %s is %s') , + '' . html::escapeHTML($url) .'', + '' . $new_url . '' + ) . '

'; + } else { + if (false === ($rs = $kut->hash($url, $hash))) { + if ($kut->error->flag()) { + throw new Exception($kut->error->toHTML()); + } + throw new Exception(__('Failed to create short link. This could be caused by a service failure.')); + } else { + $url = $rs->url; + $new_url = $kut->url_base . $rs->hash; + $msg = + '

' . + sprintf( + __('Short link for %s is %s'), + '' . html::escapeHTML($url) . '', + '' . $new_url . '' + ) . '

'; - try - { - if (null === $kut) - throw new Exception('Unknow service'); - - $url = trim($core->con->escape($_POST['str'])); - $hash = empty($_POST['custom']) ? null : $_POST['custom']; - - if (empty($url)) - throw new Exception(__('There is nothing to shorten.')); - - if (!$kut->testService()) - throw new Exception(__('Service is not well configured.')); - - if (null !== $hash && !$kut->allow_custom_hash) - throw new Exception(__('This service does not allowed custom hash.')); - - if (!$kut->isValidUrl($url)) - throw new Exception(__('This link is not a valid URL.')); - - if (!$kut->isLongerUrl($url)) - throw new Exception(__('This link is too short.')); - - if (!$kut->isProtocolUrl($url)) - throw new Exception(__('This type of link is not allowed.')); - - if (!$kut->allow_external_url && !$kut->isBlogUrl($url)) - throw new Exception(__('Short links are limited to this blog URL.')); - - if ($kut->isServiceUrl($url)) - throw new Exception(__('This link is already a short link.')); - - if (null !== $hash && false !== ($rs = $kut->isKnowHash($hash))) - throw new Exception(__('This custom short url is already taken.')); - - if (false !== ($rs = $kut->isKnowUrl($url))) - { - $url = $rs->url; - $new_url = $kut->url_base.$rs->hash; - $msg = - '

'. - sprintf(__('Short link for %s is %s'), - ''.html::escapeHTML($url).'', - ''.$new_url.'' - ).'

'; - } - else - { - if (false === ($rs = $kut->hash($url,$hash))) - { - if ($kut->error->flag()) - { - throw new Exception($kut->error->toHTML()); - } - throw new Exception(__('Failed to create short link. This could be caused by a service failure.')); - } - else - { - $url = $rs->url; - $new_url = $kut->url_base.$rs->hash; - $msg = - '

'. - sprintf(__('Short link for %s is %s'), - ''.html::escapeHTML($url).'', - ''.$new_url.'' - ).'

'; - - # ex: Send new url to messengers - if (!empty($rs)) - { - $core->callBehavior('adminAfterKutrlCreate',$core,$rs,__('New short URL')); - } - } - } - } - catch (Exception $e) - { - $core->error->add($e->getMessage()); - } + # ex: Send new url to messengers + if (!empty($rs)) { + $core->callBehavior('adminAfterKutrlCreate', $core, $rs,__('New short URL')); + } + } + } + } catch (Exception $e) { + $core->error->add($e->getMessage()); + } } echo ' -kUtRL, '.__('Links shortener').''.$header.' +kUtRL, ' . __('Links shortener') . '' . $header . ' -

kUtRL'. -' › '.__('Links').''. -' › '.__('New link'). -'

'.$msg; +

kUtRL' . +' › ' . __('Links') . '' . +' › ' . __('New link') . +'

' . $msg; -if (null === $kut) -{ - echo '

'.__('You must set an admin service.').'

'; -} -else -{ - echo ' - '; +if (null === $kut) { + echo '

' . __('You must set an admin service.') . '

'; +} else { + echo ' + '; } dcPage::helpBlock('kUtRL'); -echo $footer.''; -?> \ No newline at end of file +echo $footer . ''; \ No newline at end of file diff --git a/inc/index.links.php b/inc/index.links.php index 8a87b0d..d8dad8c 100644 --- a/inc/index.links.php +++ b/inc/index.links.php @@ -12,86 +12,86 @@ # This file manage links of kUtRL (called from index.php) -if (!defined('DC_CONTEXT_ADMIN')){return;} +if (!defined('DC_CONTEXT_ADMIN')) { + return null; +} # Short links list class kutrlLinkslist extends adminGenericList { - public function display($page,$nb_per_page,$url) - { - if ($this->rs->isEmpty()) - echo '

'.__('No short link').'

'; - - else { - $pager = new pager($page,$this->rs_count,$nb_per_page,10); + public function display($page, $nb_per_page, $url) + { + if ($this->rs->isEmpty()) { + echo '

' . __('No short link') . '

'; + } else { + $pager = new pager($page, $this->rs_count, $nb_per_page, 10); - $pager->base_url = $url; + $pager->base_url = $url; - $html_block = - ''. - ''. - ''. - ''. - ''. - ''. - ''. - ''. - ''. - '%s'. - '
'.__('Hash').''.__('Link').''.__('Date').''.__('Service').'
'; - - echo '

'.__('Page(s)').' : '.$pager->getLinks().'

'; - $blocks = explode('%s',$html_block); - echo $blocks[0]; - - $this->rs->index(((integer)$page - 1) * $nb_per_page); - $iter = 0; - while ($iter < $nb_per_page) { - - echo $this->line($url,$iter); - - if ($this->rs->isEnd()) - break; - else - $this->rs->moveNext(); - - $iter++; - } - echo $blocks[1]; - echo '

'.__('Page(s)').' : '.$pager->getLinks().'

'; - } - } - - private function line($url,$loop) - { - $type = $this->rs->kut_type; - $hash = $this->rs->kut_hash; - - if (null !== ($o = kutrl::quickService($this->rs->kut_type))) - { - $type = ''.$o->name.''; - $hash = ''.$hash.''; - } - - return - ''."\n". - ''. - form::checkbox(array('entries['.$loop.']'),$this->rs->kut_id,0). - ''. - ''. - $hash. - "\n". - ''. - ''.$this->rs->kut_url.''. - "\n". - ''. - dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->kut_dt,$this->core->auth->getInfo('user_tz')). - "\n". - ''. - $type. - "\n". - ''."\n"; - } + $html_block = + '' . + '' . + '' . + '' . + '' . + '' . + '' . + '' . + '' . + '%s' . + '
' . __('Hash') . '' . __('Link') . '' . __('Date') . '' . __('Service') . '
'; + + echo '

' . __('Page(s)') . ' : ' . $pager->getLinks() . '

'; + $blocks = explode('%s', $html_block); + echo $blocks[0]; + + $this->rs->index(((integer)$page - 1) * $nb_per_page); + $iter = 0; + while ($iter < $nb_per_page) { + + echo $this->line($url,$iter); + + if ($this->rs->isEnd()) { + break; + } else { + $this->rs->moveNext(); + } + $iter++; + } + echo $blocks[1]; + echo '

' . __('Page(s)') . ' : ' . $pager->getLinks() . '

'; + } + } + + private function line($url, $loop) + { + $type = $this->rs->kut_type; + $hash = $this->rs->kut_hash; + + if (null !== ($o = kutrl::quickService($this->rs->kut_type))) { + $type = '' . $o->name . ''; + $hash = '' . $hash . ''; + } + + return + '' . "\n" . + '' . + form::checkbox(['entries[' . $loop . ']'], $this->rs->kut_id, 0) . + '' . + '' . + $hash . + "\n" . + '' . + '' . $this->rs->kut_url . '' . + "\n" . + '' . + dt::dt2str(__('%Y-%m-%d %H:%M'), $this->rs->kut_dt, $this->core->auth->getInfo('user_tz')) . + "\n" . + '' . + $type . + "\n" . + '' . "\n"; + } } # Logs class @@ -106,162 +106,158 @@ $order = !empty($_GET['order']) ? $_GET['order'] : 'desc'; $page = !empty($_GET['page']) ? (integer) $_GET['page'] : 1; $nb_per_page = 30; if (!empty($_GET['nb']) && (integer) $_GET['nb'] > 0) { - if ($nb_per_page != $_GET['nb']) $show_filters = true; - $nb_per_page = (integer) $_GET['nb']; + if ($nb_per_page != $_GET['nb']) { + $show_filters = true; + } + $nb_per_page = (integer) $_GET['nb']; } # Combos -$sortby_combo = array( - __('Date') => 'kut_dt', - __('Long link') => 'kut_url', - __('Short link') => 'kut_hash' -); +$sortby_combo = [ + __('Date') => 'kut_dt', + __('Long link') => 'kut_url', + __('Short link') => 'kut_hash' +]; -$order_combo = array( - __('Descending') => 'desc', - __('Ascending') => 'asc' -); +$order_combo = [ + __('Descending') => 'desc', + __('Ascending') => 'asc' +]; -$services_combo = array(); +$services_combo = []; foreach(kutrl::getServices($core) as $service_id => $service) { - $o = new $service($core); - $services_combo[__($o->name)] = $o->id; + $o = new $service($core); + $services_combo[__($o->name)] = $o->id; } -$ext_services_combo = array_merge(array(__('Disabled')=>''),$services_combo); -$lst_services_combo = array_merge(array('-'=>''),$services_combo); +$ext_services_combo = array_merge([__('Disabled') => ''], $services_combo); +$lst_services_combo = array_merge(['-' => ''], $services_combo); # Params for list -$params = array(); -$params['limit'] = array((($page-1)*$nb_per_page),$nb_per_page); +$params = []; +$params['limit'] = [(($page-1)*$nb_per_page), $nb_per_page]; -if ($sortby != '' && in_array($sortby,$sortby_combo)) -{ - if ($urlsrv != '' && in_array($urlsrv,$lst_services_combo)) - $params['kut_type'] = $urlsrv; - - if ($order != '' && in_array($order,$order_combo)) - $params['order'] = $sortby.' '.$order; - - if ($sortby != 'kut_dt' || $order != 'desc' || $urlsrv != '') - $show_filters = true; +if ($sortby != '' && in_array($sortby, $sortby_combo)) { + if ($urlsrv != '' && in_array($urlsrv, $lst_services_combo)) { + $params['kut_type'] = $urlsrv; + } + if ($order != '' && in_array($order, $order_combo)) { + $params['order'] = $sortby . ' ' . $order; + } + if ($sortby != 'kut_dt' || $order != 'desc' || $urlsrv != '') { + $show_filters = true; + } } $pager_base_url = - $p_url. - '&tab=list'. - '&urlsrv='.$urlsrv. - '&sortby='.$sortby. - '&order='.$order. - '&nb='.$nb_per_page. - '&page=%s'; - + $p_url . + '&tab=list' . + '&urlsrv=' . $urlsrv . + '&sortby=' . $sortby . + '&order=' . $order . + '&nb=' . $nb_per_page . + '&page=%s'; # Delete links from list -if ($action == 'deletelinks') -{ - try - { - foreach($_POST['entries'] as $k => $id) - { - $rs = $log->getLogs(array('kut_id'=>$id)); - if ($rs->isEmpty()) continue; - - if (null === ($o = kutrl::quickService($rs->kut_type))) continue; - $o->remove($rs->kut_url); - } - - $core->blog->triggerBlog(); - http::redirect($p_url.'&part=links&urlsrv='.$urlsrv.'&sortby='.$sortby.'&order='.$order.'&nb='.$nb_per_page.'&page='.$page.'&msg='.$action); - } - catch (Exception $e) { - $core->error->add($e->getMessage()); - } +if ($action == 'deletelinks') { + try { + foreach($_POST['entries'] as $k => $id) { + $rs = $log->getLogs(['kut_id' => $id]); + if ($rs->isEmpty()) { + continue; + } + if (null === ($o = kutrl::quickService($rs->kut_type))) { + continue; + } + $o->remove($rs->kut_url); + } + + $core->blog->triggerBlog(); + http::redirect($p_url . '&part=links&urlsrv=' . $urlsrv . '&sortby=' . $sortby . '&order=' . $order . '&nb=' . $nb_per_page . '&page=' . $page . '&msg=' . $action); + } catch (Exception $e) { + $core->error->add($e->getMessage()); + } } # Get links and pager -try -{ - $list_all = $log->getLogs($params); - $list_counter = $log->getLogs($params,true)->f(0); - $list_current = new kutrlLinksList($core,$list_all,$list_counter,$pager_base_url); +try { + $list_all = $log->getLogs($params); + $list_counter = $log->getLogs($params, true)->f(0); + $list_current = new kutrlLinksList($core, $list_all, $list_counter, $pager_base_url); +} catch (Exception $e) { + $core->error->add($e->getMessage()); } -catch (Exception $e) -{ - $core->error->add($e->getMessage()); -} - if (!$show_filters) { - $header .= dcPage::jsLoad('js/filter-controls.js'); + $header .= dcPage::jsLoad('js/filter-controls.js'); } echo ' -kUtRL, '.__('Links shortener').''. -"\n\n". -$header.' +kUtRL, ' . __('Links shortener') . '' . +"\n\n" . +$header . ' -

kUtRL'. -' › '.__('Links'). -' - '.__('New link').''. -'

'.$msg; +

kUtRL' . +' › ' . __('Links') . +' - ' . __('New link') . '' . +'

' . $msg; if (!$show_filters) { - echo '

'. - __('Filters').'

'; + echo '

' . + __('Filters') . '

'; } echo ' -
-
'.__('Filters').' + +
' . __('Filters') . '
-
-

-


-
'; +'; -$list_current->display($page,$nb_per_page,$pager_base_url); +$list_current->display($page, $nb_per_page, $pager_base_url); echo '

-'. -form::hidden(array('action'),'deletelinks'). -form::hidden(array('urlsrv'),$urlsrv). -form::hidden(array('sortby'),$sortby). -form::hidden(array('order'),$order). -form::hidden(array('page'),$page). -form::hidden(array('nb'),$nb_per_page). -form::hidden(array('p'),'kUtRL'). -form::hidden(array('part'),'links'). -$core->formNonce().' +' . +form::hidden(['action'], 'deletelinks') . +form::hidden(['urlsrv'], $urlsrv) . +form::hidden(['sortby'], $sortby) . +form::hidden(['order'], $order) . +form::hidden(['page'], $page) . +form::hidden(['nb'], $nb_per_page) . +form::hidden(['p'], 'kUtRL') . +form::hidden(['part'], 'links') . +$core->formNonce() . '

'; dcPage::helpBlock('kUtRL'); -echo $footer.''; +echo $footer . ''; ?> \ No newline at end of file diff --git a/inc/index.service.php b/inc/index.service.php index 9fb236a..ff6d544 100644 --- a/inc/index.service.php +++ b/inc/index.service.php @@ -12,66 +12,58 @@ # This file manage services of kUtRL (called from index.php) -if (!defined('DC_CONTEXT_ADMIN')){return;} +if (!defined('DC_CONTEXT_ADMIN')) { + return null; +} # Save services settings -if ($action == 'saveservice') -{ - try - { - foreach(kutrl::getServices($core) as $service_id => $service) - { +if ($action == 'saveservice') { + try { + foreach(kutrl::getServices($core) as $service_id => $service) { $o = new $service($core); $o->saveSettings(); } $core->blog->triggerBlog(); - http::redirect($p_url.'&part=service§ion='.$section.'&msg='.$action); - } - catch (Exception $e) - { + http::redirect($p_url . '&part=service§ion=' . $section . '&msg=' . $action); + } catch (Exception $e) { $core->error->add($e->getMessage()); } } echo ' -kUtRL, '.__('Links shortener').''.$header. -dcPage::jsLoad('index.php?pf=kUtRL/js/service.js'). -"\n". +kUtRL, ' . __('Links shortener') . '' . $header . +dcPage::jsLoad('index.php?pf=kUtRL/js/service.js') . +"\n" . ' -

kUtRL'. -' › '.__('Links').''. -' › '.__('Services'). -' - '.__('New link').''. -'

'.$msg.' -
'; +

kUtRL' . +' › ' . __('Links') . '' . +' › ' . __('Services') . +' - ' . __('New link') . '' . +'

' . $msg . ' +'; -foreach(kutrl::getServices($core) as $service_id => $service) -{ +foreach(kutrl::getServices($core) as $service_id => $service) { $o = new $service($core); - echo '
'.$o->name.''; + echo '
' . $o->name . ''; - if (!empty($msg)) - { - echo '

'.( + if (!empty($msg)) { + echo '

' . ( $o->testService() ? - $img_green.' '.sprintf(__('%s API is well configured and runing.'),$o->name) : - $img_red.' '.sprintf(__('Failed to test %s API.'),$o->name) - ).'

'; + $img_green . ' ' . sprintf(__('%s API is well configured and runing.'), $o->name) : + $img_red . ' ' . sprintf(__('Failed to test %s API.'), $o->name) + ) . '

'; //if ($o->error->flag()) { echo $o->error->toHTML(); //} } - - if (!empty($o->home)) - { - echo '

'.sprintf(__('Learn more about %s.'),$o->name).'

'; + if (!empty($o->home)) { + echo '

' . sprintf(__('Learn more about %s.'), $o->name) . '

'; } - $o->settingsForm(); echo '
'; @@ -79,14 +71,13 @@ foreach(kutrl::getServices($core) as $service_id => $service) echo '
-

'. -$core->formNonce(). -form::hidden(array('p'),'kUtRL'). -form::hidden(array('part'),'service'). -form::hidden(array('action'),'saveservice'). -form::hidden(array('section'),$section).' +

' . +$core->formNonce() . +form::hidden(['p'], 'kUtRL') . +form::hidden(['part'], 'service') . +form::hidden(['action'], 'saveservice') . +form::hidden(['section'], $section) . '

'; dcPage::helpBlock('kUtRL'); -echo $footer.''; -?> \ No newline at end of file +echo $footer . ''; \ No newline at end of file diff --git a/inc/index.setting.php b/inc/index.setting.php index 11ca5d0..d94d110 100644 --- a/inc/index.setting.php +++ b/inc/index.setting.php @@ -12,7 +12,9 @@ # This file manage settings of kUtRL (called from index.php) -if (!defined('DC_CONTEXT_ADMIN')){return;} +if (!defined('DC_CONTEXT_ADMIN')) { + return null; +} $s_active = (boolean) $s->kutrl_active; $s_plugin_service = (string) $s->kutrl_plugin_service; @@ -24,8 +26,7 @@ $s_tpl_passive = (boolean) $s->kutrl_tpl_passive; $s_tpl_active = (boolean) $s->kutrl_tpl_active; $s_admin_entry_default = (string) $s->kutrl_admin_entry_default; -if ($default_part == 'setting' && $action == 'savesetting') -{ +if ($default_part == 'setting' && $action == 'savesetting') { try { $s_active = !empty($_POST['s_active']); $s_admin_service = $_POST['s_admin_service']; @@ -36,129 +37,126 @@ if ($default_part == 'setting' && $action == 'savesetting') $s_tpl_passive = !empty($_POST['s_tpl_passive']); $s_tpl_active = !empty($_POST['s_tpl_active']); $s_admin_entry_default = !empty($_POST['s_admin_entry_default']); - - $s->put('kutrl_active',$s_active); - $s->put('kutrl_plugin_service',$s_plugin_service); - $s->put('kutrl_admin_service',$s_admin_service); - $s->put('kutrl_tpl_service',$s_tpl_service); - $s->put('kutrl_wiki_service',$s_wiki_service); - $s->put('kutrl_allow_external_url',$s_allow_external_url); - $s->put('kutrl_tpl_passive',$s_tpl_passive); - $s->put('kutrl_tpl_active',$s_tpl_active); - $s->put('kutrl_admin_entry_default',$s_admin_entry_default); - + + $s->put('kutrl_active', $s_active); + $s->put('kutrl_plugin_service', $s_plugin_service); + $s->put('kutrl_admin_service', $s_admin_service); + $s->put('kutrl_tpl_service', $s_tpl_service); + $s->put('kutrl_wiki_service', $s_wiki_service); + $s->put('kutrl_allow_external_url', $s_allow_external_url); + $s->put('kutrl_tpl_passive', $s_tpl_passive); + $s->put('kutrl_tpl_active', $s_tpl_active); + $s->put('kutrl_admin_entry_default', $s_admin_entry_default); + $core->blog->triggerBlog(); - - http::redirect($p_url.'&part=setting&msg='.$action.'§ion='.$section); - } - catch (Exception $e) { + + http::redirect($p_url . '&part=setting&msg=' . $action . '§ion=' . $section); + } catch (Exception $e) { $core->error->add($e->getMessage()); } } -$services_combo = array(); -foreach(kutrl::getServices($core) as $service_id => $service) -{ +$services_combo = []; +foreach(kutrl::getServices($core) as $service_id => $service) { $o = new $service($core); $services_combo[__($o->name)] = $o->id; } -$ext_services_combo = array_merge(array(__('Disabled')=>''),$services_combo); -$lst_services_combo = array_merge(array('-'=>''),$services_combo); +$ext_services_combo = array_merge([__('Disabled')=>''], $services_combo); +$lst_services_combo = array_merge(['-'=>''], $services_combo); echo ' -kUtRL, '.__('Links shortener').''.$header. -dcPage::jsLoad('index.php?pf=kUtRL/js/setting.js'). -"\n". +kUtRL, ' . __('Links shortener') . '' . $header . +dcPage::jsLoad('index.php?pf=kUtRL/js/setting.js') . +"\n" . ' -

kUtRL'. -' › '.__('Links').''. -' › '.__('Settings'). -' - '.__('New link').''. -'

'.$msg.' -
+

kUtRL' . +' › ' . __('Links') . '' . +' › ' . __('Settings') . +' - ' . __('New link') . '' . +'

' . $msg . ' + -
'. __('Plugin activation').' -

+
' . __('Plugin activation') . ' +

-
'. __('General rules').' -

-

'.__('Not only link started with this blog URL could be shortened.').'

-

-

'.__('If this extension is disabled and the passive mode is enabled, "kutrl" tags (like EntryKurl) will display long urls instead of nothing on templates.').'

-

-

'.__('If the active mode is enabled, all know default template tags (like EntryURL) will display short urls instead of long ones on templates.').'
'. -__('You can disable URL shortening for a specific template tag by adding attribute disable_kutrl="1" to it.').'

-

-

'.__('This can be changed on page of creation/edition of an entry.').'

+
' . __('General rules') . ' +

+

' . __('Not only link started with this blog URL could be shortened.') . '

+

+

' . __('If this extension is disabled and the passive mode is enabled, "kutrl" tags (like EntryKurl) will display long urls instead of nothing on templates.') . '

+

+

' . __('If the active mode is enabled, all know default template tags (like EntryURL) will display short urls instead of long ones on templates.') . '
' . +__('You can disable URL shortening for a specific template tag by adding attribute disable_kutrl="1" to it . ') . '

+

+

' . __('This can be changed on page of creation/edition of an entry.') . '

-
'. __('Default services').' +
' . __('Default services') . '

-

'.__('Service to use in this admin page and on edit page of an entry.').'

+

' . __('Service to use in this admin page and on edit page of an entry.') . '

-

'.__('Service to use on third part plugins.').'

+

' . __('Service to use on third part plugins.') . '

-

'.__('Shorten links automatically when using template value like "EntryKutrl".').'

+

' . __('Shorten links automatically when using template value like "EntryKutrl".') . '

-

'.__('Shorten links automatically found in contents using wiki synthax.').'

+

' . __('Shorten links automatically found in contents using wiki synthax.') . '

-

'. -$core->formNonce(). -form::hidden(array('p'),'kUtRL'). -form::hidden(array('part'),'setting'). -form::hidden(array('action'),'savesetting'). -form::hidden(array('section'),$section).' +

' . +$core->formNonce() . +form::hidden(['p'], 'kUtRL') . +form::hidden(['part'], 'setting') . +form::hidden(['action'], 'savesetting') . +form::hidden(['section'], $section) . '

'; dcPage::helpBlock('kUtRL'); -echo $footer.''; -?> \ No newline at end of file +echo $footer . ''; \ No newline at end of file diff --git a/inc/lib.kutrl.activityreport.php b/inc/lib.kutrl.activityreport.php index a1c279d..86e83fc 100644 --- a/inc/lib.kutrl.activityreport.php +++ b/inc/lib.kutrl.activityreport.php @@ -12,27 +12,28 @@ # This file is used with plugin activityReport -if (!defined('DC_RC_PATH')){return;} +if (!defined('DC_RC_PATH')) { + return null; +} -$core->activityReport->addGroup('kutrl',__('Plugin kUtRL')); +$core->activityReport->addGroup('kutrl', __('Plugin kUtRL')); # from BEHAVIOR kutrlAfterCreateShortUrl in kUtRL/inc/lib.kutrl.srv.php $core->activityReport->addAction( - 'kutrl', - 'create', - __('Short link creation'), - __('New short link of type "%s" and hash "%s" was created.'), - 'kutrlAfterCreateShortUrl', - array('kutrlActivityReportBehaviors','kutrlCreate') + 'kutrl', + 'create', + __('Short link creation'), + __('New short link of type "%s" and hash "%s" was created.'), + 'kutrlAfterCreateShortUrl', + ['kutrlActivityReportBehaviors', 'kutrlCreate'] ); class kutrlActivityReportBehaviors { - public static function kutrlCreate($rs) - { - $logs = array($rs->type,$rs->hash); + public static function kutrlCreate($rs) + { + $logs = [$rs->type,$rs->hash]; - $GLOBALS['core']->activityReport->addLog('kutrl','create',$logs); - } -} -?> \ No newline at end of file + $GLOBALS['core']->activityReport->addLog('kutrl', 'create', $logs); + } +} \ No newline at end of file diff --git a/inc/lib.kutrl.log.php b/inc/lib.kutrl.log.php index 974eede..50619b5 100644 --- a/inc/lib.kutrl.log.php +++ b/inc/lib.kutrl.log.php @@ -14,301 +14,244 @@ class kutrlLog { - public $core; - public $table; - public $blog; - public $con; + public $core; + public $table; + public $blog; + public $con; - public function __construct($core) - { - $this->core = $core; - $this->table = $core->prefix.'kutrl'; - $this->blog = $core->con->escape($core->blog->id); - $this->con = $core->con; - } + public function __construct($core) + { + $this->core = $core; + $this->table = $core->prefix . 'kutrl'; + $this->blog = $core->con->escape($core->blog->id); + $this->con = $core->con; + } - public function nextId() - { - return $this->con->select( - 'SELECT MAX(kut_id) FROM '.$this->table - )->f(0) + 1; - } + public function nextId() + { + return $this->con->select( + 'SELECT MAX(kut_id) FROM ' . $this->table + )->f(0) + 1; + } - public function insert($url,$hash,$type,$service='kutrl') - { - $cur = $this->con->openCursor($this->table); - $this->con->writeLock($this->table); + public function insert($url, $hash, $type, $service = 'kutrl') + { + $cur = $this->con->openCursor($this->table); + $this->con->writeLock($this->table); - try { - $cur->kut_id = $this->nextId(); - $cur->blog_id = $this->blog; - $cur->kut_url = (string) $url; - $cur->kut_hash = (string) $hash; - $cur->kut_type = (string) $type; - $cur->kut_service = (string) $service; - $cur->kut_dt = date('Y-m-d H:i:s'); - $cur->kut_counter = 0; + try { + $cur->kut_id = $this->nextId(); + $cur->blog_id = $this->blog; + $cur->kut_url = (string) $url; + $cur->kut_hash = (string) $hash; + $cur->kut_type = (string) $type; + $cur->kut_service = (string) $service; + $cur->kut_dt = date('Y-m-d H:i:s'); + $cur->kut_counter = 0; - $cur->insert(); - $this->con->unlock(); + $cur->insert(); + $this->con->unlock(); - return array( - 'id' => $cur->kut_id, - 'url' => $url, - 'hash' => $hash, - 'type' => $type, - 'service' => $service, - 'counter '=> 0 - ); - } - catch (Exception $e) - { - $this->con->unlock(); - throw $e; - } - return false; - } + return [ + 'id' => $cur->kut_id, + 'url' => $url, + 'hash' => $hash, + 'type' => $type, + 'service' => $service, + 'counter '=> 0 + ]; + } catch (Exception $e) { + $this->con->unlock(); + throw $e; + } + return false; + } - public function select($url=null,$hash=null,$type=null,$service='kutrl') - { - //$this->con->writeLock($this->table); + public function select($url = null, $hash = null, $type =null, $service = 'kutrl') + { + //$this->con->writeLock($this->table); - $req = - 'SELECT kut_id as id, kut_hash as hash, kut_url as url, '. - 'kut_type as type, kut_service as service, kut_counter as counter '. - 'FROM '.$this->table.' '. - "WHERE blog_id = '".$this->blog."' ". - "AND kut_service = '".$this->con->escape($service)."' "; + $req = + 'SELECT kut_id as id, kut_hash as hash, kut_url as url, ' . + 'kut_type as type, kut_service as service, kut_counter as counter ' . + 'FROM ' . $this->table . ' ' . + "WHERE blog_id = '" . $this->blog . "' " . + "AND kut_service = '" . $this->con->escape($service) . "' "; - if (null !== $url) - $req .= "AND kut_url = '".$this->con->escape($url)."' "; + if (null !== $url) { + $req .= "AND kut_url = '" . $this->con->escape($url) . "' "; + } + if (null !== $hash) { + $req .= "AND kut_hash = '" . $this->con->escape($hash) . "' "; + } + if (null !== $type) { + if (is_array($type)) { + $req .= "AND kut_type '" . $this->con->in($type) ."' "; + } else { + $req .= "AND kut_type = '" . $this->con->escape($type) . "' "; + } + } - if (null !== $hash) - $req .= "AND kut_hash = '".$this->con->escape($hash)."' "; + $req .= 'ORDER BY kut_dt DESC ' . $this->con->limit(1); - if (null !== $type) { - if (is_array($type)) { - $req .= "AND kut_type '".$this->con->in($type)."' "; - } - else { - $req .= "AND kut_type = '".$this->con->escape($type)."' "; - } - } + $rs = $this->con->select($req); + //$this->con->unlock(); - $req .= 'ORDER BY kut_dt DESC '.$this->con->limit(1); + return $rs->isEmpty() ? false : $rs; + } - $rs = $this->con->select($req); - //$this->con->unlock(); + public function clear($id) + { + $id = (integer) $id; - return $rs->isEmpty() ? false : $rs; - } - - public function clear($id) - { - $id = (integer) $id; - - $cur = $this->con->openCursor($this->table); - $this->con->writeLock($this->table); - - try - { - $cur->kut_url = ''; - $cur->kut_dt = date('Y-m-d H:i:s'); - $cur->kut_counter = 0; - - $cur->update( - "WHERE blog_id='".$this->blog."' ". - "AND kut_id='".$id."' " - ); - $this->con->unlock(); - - return true; - } - catch (Exception $e) - { - $this->con->unlock(); - throw $e; - } - return false; - } + $cur = $this->con->openCursor($this->table); + $this->con->writeLock($this->table); - public function delete($id) - { - $id = (integer) $id; + try { + $cur->kut_url = ''; + $cur->kut_dt = date('Y-m-d H:i:s'); + $cur->kut_counter = 0; + + $cur->update( + "WHERE blog_id='" . $this->blog . "' " . + "AND kut_id='" . $id . "' " + ); + $this->con->unlock(); - return $this->con->execute( - 'DELETE FROM '.$this->table.' '. - "WHERE blog_id='".$this->blog."' ". - "AND kut_id='".$id."' " - ); - } + return true; + } catch (Exception $e) { + $this->con->unlock(); + throw $e; + } + return false; + } - public function counter($id,$do='get') - { - $id = (integer) $id; + public function delete($id) + { + $id = (integer) $id; - $rs = $this->con->select( - 'SELECT kut_counter '. - 'FROM '.$this->table.' '. - "WHERE blog_id='".$this->blog."' ". - "AND kut_id='".$id."' " - ); + return $this->con->execute( + 'DELETE FROM ' . $this->table . ' ' . + "WHERE blog_id='" . $this->blog . "' " . + "AND kut_id='" . $id . "' " + ); + } - $counter = $rs->isEmpty() ? 0 : $rs->kut_counter; + public function counter($id, $do = 'get') + { + $id = (integer) $id; - if ('get' == $do) - { - return $counter; - } - elseif ('up' == $do) - { - $counter += 1; - } - elseif ('reset' == $do) - { - $counter = 0; - } - else - { - return 0; - } + $rs = $this->con->select( + 'SELECT kut_counter ' . + 'FROM ' . $this->table . ' ' . + "WHERE blog_id='" . $this->blog . "' " . + "AND kut_id='" . $id . "' " + ); - $cur = $this->con->openCursor($this->table); - $this->con->writeLock($this->table); + $counter = $rs->isEmpty() ? 0 : $rs->kut_counter; - $cur->kut_counter = (integer) $counter; - $cur->update( - "WHERE blog_id='".$this->blog."' ". - "AND kut_id='".$id."'" - ); - $this->con->unlock(); + if ('get' == $do) { + return $counter; + } elseif ('up' == $do) { + $counter += 1; + } elseif ('reset' == $do) { + $counter = 0; + } else { + return 0; + } - return $counter; - } + $cur = $this->con->openCursor($this->table); + $this->con->writeLock($this->table); - public function getLogs($p,$count_only=false) - { - if ($count_only) - { - $r = 'SELECT count(S.kut_id) '; - } - else - { - $content_req = ''; - - if (!empty($p['columns']) && is_array($p['columns'])) - { - $content_req .= implode(', ',$p['columns']).', '; - } - $r = - 'SELECT S.kut_id, S.kut_type, S.kut_hash, S.kut_url, '. - $content_req.'S.kut_dt '; - } + $cur->kut_counter = (integer) $counter; + $cur->update( + "WHERE blog_id='" . $this->blog . "' " . + "AND kut_id='" . $id . "'" + ); + $this->con->unlock(); - $r .= 'FROM '.$this->table.' S '; + return $counter; + } - if (!empty($p['from'])) - { - $r .= $p['from'].' '; - } - $r .= "WHERE S.blog_id = '".$this->blog."' "; - - if (isset($p['kut_service'])) - { - $r .= "AND kut_service='".$this->con->escape($p['kut_service'])."' "; - } - else - { - $r .= "AND kut_service='kutrl' "; - } - - if (isset($p['kut_type'])) - { - if (is_array($p['kut_type']) && !empty($p['kut_type'])) - { - $r .= 'AND kut_type '.$this->con->in($p['kut_type']); - } - elseif ($p['kut_type'] != '') - { - $r .= "AND kut_type = '".$this->con->escape($p['kut_type'])."' "; - } - } - - if (isset($p['kut_id'])) - { - if (is_array($p['kut_id']) && !empty($p['kut_id'])) - { - $r .= 'AND kut_id '.$this->con->in($p['kut_id']); - } - elseif ($p['kut_id'] != '') - { - $r .= "AND kut_id = '".$this->con->escape($p['kut_id'])."' "; - } - } - - if (isset($p['kut_hash'])) - { - if (is_array($p['kut_hash']) && !empty($p['kut_hash'])) - { - $r .= 'AND kut_hash '.$this->con->in($p['kut_hash']); - } - elseif ($p['kut_hash'] != '') - { - $r .= "AND kut_hash = '".$this->con->escape($p['kut_hash'])."' "; - } - } - - if (isset($p['kut_url'])) - { - if (is_array($p['kut_url']) && !empty($p['kut_url'])) - { - $r .= 'AND kut_url '.$this->con->in($p['kut_url']); - } - elseif ($p['kut_url'] != '') - { - $r .= "AND kut_url = '".$this->con->escape($p['kut_url'])."' "; - } - } - - if (!empty($p['kut_year'])) - { - $r .= - 'AND '.$this->con->dateFormat('kut_dt','%Y').' = '. - "'".sprintf('%04d',$p['kut_year'])."' "; - } - - if (!empty($p['kut_month'])) - { - $r .= - 'AND '.$this->con->dateFormat('kut_dt','%m').' = '. - "'".sprintf('%02d',$p['kut_month'])."' "; - } - - if (!empty($p['kut_day'])) - { - $r .= - 'AND '.$this->con->dateFormat('kut_dt','%d').' = '. - "'".sprintf('%02d',$p['kut_day'])."' "; - } - - if (!empty($p['sql'])) - { - $r .= $p['sql'].' '; - } - - if (!$count_only) - { - $r .= empty($p['order']) ? - 'ORDER BY kut_dt DESC ' : - 'ORDER BY '.$this->con->escape($p['order']).' '; - } - - if (!$count_only && !empty($p['limit'])) - { - $r .= $this->con->limit($p['limit']); - } - - return $this->con->select($r); - } -} -?> \ No newline at end of file + public function getLogs($p, $count_only = false) + { + if ($count_only) { + $r = 'SELECT count(S.kut_id) '; + } else { + $content_req = ''; + + if (!empty($p['columns']) && is_array($p['columns'])) { + $content_req .= implode(', ', $p['columns']) . ', '; + } + $r = + 'SELECT S.kut_id, S.kut_type, S.kut_hash, S.kut_url, ' . + $content_req . 'S.kut_dt '; + } + $r .= 'FROM ' . $this->table . ' S '; + if (!empty($p['from'])) { + $r .= $p['from'] . ' '; + } + $r .= "WHERE S.blog_id = '" . $this->blog . "' "; + if (isset($p['kut_service'])) { + $r .= "AND kut_service='" . $this->con->escape($p['kut_service']) . "' "; + } else { + $r .= "AND kut_service='kutrl' "; + } + if (isset($p['kut_type'])) { + if (is_array($p['kut_type']) && !empty($p['kut_type'])) + { + $r .= 'AND kut_type ' . $this->con->in($p['kut_type']); + } elseif ($p['kut_type'] != '') { + $r .= "AND kut_type = '" . $this->con->escape($p['kut_type']) . "' "; + } + } + if (isset($p['kut_id'])) { + if (is_array($p['kut_id']) && !empty($p['kut_id'])) { + $r .= 'AND kut_id ' . $this->con->in($p['kut_id']); + } elseif ($p['kut_id'] != '') { + $r .= "AND kut_id = '" . $this->con->escape($p['kut_id']) . "' "; + } + } + if (isset($p['kut_hash'])) { + if (is_array($p['kut_hash']) && !empty($p['kut_hash'])) { + $r .= 'AND kut_hash ' . $this->con->in($p['kut_hash']); + } elseif ($p['kut_hash'] != '') { + $r .= "AND kut_hash = '" . $this->con->escape($p['kut_hash']) . "' "; + } + } + if (isset($p['kut_url'])) { + if (is_array($p['kut_url']) && !empty($p['kut_url'])) { + $r .= 'AND kut_url ' . $this->con->in($p['kut_url']); + } elseif ($p['kut_url'] != '') { + $r .= "AND kut_url = '" . $this->con->escape($p['kut_url']) . "' "; + } + } + if (!empty($p['kut_year'])) { + $r .= + 'AND ' . $this->con->dateFormat('kut_dt', '%Y') . ' = ' . + "'" . sprintf('%04d', $p['kut_year']) . "' "; + } + if (!empty($p['kut_month'])) { + $r .= + 'AND ' . $this->con->dateFormat('kut_dt', '%m') . ' = ' . + "'" . sprintf('%02d', $p['kut_month']) . "' "; + } + if (!empty($p['kut_day'])) { + $r .= + 'AND ' . $this->con->dateFormat('kut_dt', '%d') . ' = ' . + "'" . sprintf('%02d', $p['kut_day']) . "' "; + } + if (!empty($p['sql'])) { + $r .= $p['sql'] . ' '; + } + if (!$count_only) { + $r .= empty($p['order']) ? + 'ORDER BY kut_dt DESC ' : + 'ORDER BY ' . $this->con->escape($p['order']) . ' '; + } + if (!$count_only && !empty($p['limit'])) { + $r .= $this->con->limit($p['limit']); + } + return $this->con->select($r); + } +} \ No newline at end of file diff --git a/inc/lib.kutrl.srv.php b/inc/lib.kutrl.srv.php index f4f53a8..c529e81 100644 --- a/inc/lib.kutrl.srv.php +++ b/inc/lib.kutrl.srv.php @@ -14,241 +14,223 @@ # A service class must extends this one class kutrlService { - public $core; - public $error; - public $settings; - public $log; - - protected $config = array(); - - public function __construct($core) - { - $this->core = $core; - $this->settings = $core->blog->settings->kUtRL; - $this->log = new kutrlLog($core); - $this->error = new dcError(); - $this->error->setHTMLFormat('%s',"%s\n"); - - $this->init(); - - // Force setting - $allow_external_url = $this->settings->kutrl_allow_external_url; - $this->config['$allow_external_url'] = null === $allow_external_url ? - true : $allow_external_url; - - $this->config = array_merge( - array( - 'id' => 'undefined', - 'name' => 'undefined', - 'home' => '', - - 'allow_external_url' => true, - 'allow_custom_hash' => false, - 'allow_protocols' => array('http://'), - - 'url_test' => 'http://dotclear.jcdenis.com/go/kUtRL', - 'url_api' => '', - 'url_base' => '', - 'url_min_len' => 0 - ), - $this->config - ); - } - - # Magic get for config values - public function __get($k) - { - return isset($this->config[$k]) ? $this->config[$k] : null; - } - - # Additionnal actions on child start - protected function init() - { - // - } + public $core; + public $error; + public $settings; + public $log; - # Save settings from admin page - public function saveSettings() - { - return null; - } + protected $config = array(); - # Settings form for admin page - public function settingsForm() - { - echo - '

'. - __('There is nothing to configure for this service.'). - '

'; - } + public function __construct($core) + { + $this->core = $core; + $this->settings = $core->blog->settings->kUtRL; + $this->log = new kutrlLog($core); + $this->error = new dcError(); + $this->error->setHTMLFormat('%s', "%s\n"); - # Test if service is well configured - public function testService() - { - return null; - } + $this->init(); - # Test if an url is valid - public function isValidUrl($url) - { - return (boolean) filter_var($url,FILTER_VALIDATE_URL); - } + // Force setting + $allow_external_url = $this->settings->kutrl_allow_external_url; + $this->config['$allow_external_url'] = null === $allow_external_url ? + true : $allow_external_url; - # Test if an url contents know prefix - public function isServiceUrl($url) - { - return strpos($url,$this->url_base) === 0; - } + $this->config = array_merge( + [ + 'id' => 'undefined', + 'name' => 'undefined', + 'home' => '', - # Test if an url is long enoutgh - public function isLongerUrl($url) - { - return ((integer) $this->url_min_len >= $url); - } + 'allow_external_url' => true, + 'allow_custom_hash' => false, + 'allow_protocols' => ['http://'], - # Test if an url protocol (eg: http://) is allowed - public function isProtocolUrl($url) - { - foreach($this->allow_protocols as $protocol) - { - if (empty($protocol)) continue; + 'url_test' => 'http://dotclear.jcdenis.com/go/kUtRL', + 'url_api' => '', + 'url_base' => '', + 'url_min_len' => 0 + ], + $this->config + ); + } - if (strpos($url,$protocol) === 0) return true; - } - return false; - } + # Magic get for config values + public function __get($k) + { + return isset($this->config[$k]) ? $this->config[$k] : null; + } - # Test if an url is from current blog - public function isBlogUrl($url) - { - $base = $this->core->blog->url; - $url = substr($url,0,strlen($base)); + # Additionnal actions on child start + protected function init() + { + // + } - return $url == $base; - } + # Save settings from admin page + public function saveSettings() + { + return null; + } - # Test if an url is know - public function isKnowUrl($url) - { - return $this->log->select($url,null,$this->id,'kutrl'); - } + # Settings form for admin page + public function settingsForm() + { + echo + '

' . + __('There is nothing to configure for this service.') . + '

'; + } - # Test if an custom short url is know - public function isKnowHash($hash) - { - return $this->log->select(null,$hash,$this->id,'kutrl'); - } + # Test if service is well configured + public function testService() + { + return null; + } - # Create hash from url - public function hash($url,$hash=null) - { - $url = trim($this->core->con->escape($url)); - if ('undefined' === $this->id) - { - return false; - } - if ($hash && !$this->allow_custom_hash) - { - return false; - } - if ($this->isServiceUrl($url)) - { - return false; - } - if (!$this->isLongerUrl($url)) - { - return false; - } - if (!$this->allow_external_url && $this->isBlogUrl($url)) - { - return false; - } - if ($hash && false !== ($rs = $this->isKnowHash($hash))) - { - return false; - } - if (false === ($rs = $this->isKnowUrl($url))) - { - if (false === ($rs = $this->createHash($url,$hash))) - { - return false; - } + # Test if an url is valid + public function isValidUrl($url) + { + return (boolean) filter_var($url, FILTER_VALIDATE_URL); + } - $this->log->insert($rs->url,$rs->hash,$rs->type,'kutrl'); - $this->core->blog->triggerBlog(); + # Test if an url contents know prefix + public function isServiceUrl($url) + { + return strpos($url, $this->url_base) === 0; + } + # Test if an url is long enoutgh + public function isLongerUrl($url) + { + return ((integer) $this->url_min_len >= $url); + } - # --BEHAVIOR-- kutrlAfterCreateShortUrl - $this->core->callBehavior('kutrlAfterCreateShortUrl',$rs); + # Test if an url protocol (eg: http://) is allowed + public function isProtocolUrl($url) + { + foreach($this->allow_protocols as $protocol) { + if (empty($protocol)) { + continue; + } + if (strpos($url,$protocol) === 0) { + return true; + } + } + return false; + } + # Test if an url is from current blog + public function isBlogUrl($url) + { + $base = $this->core->blog->url; + $url = substr($url, 0, strlen($base)); - } - return $rs; - } + return $url == $base; + } - # Create a hash for a given url (and its custom hash) - public function createHash($url,$hash=null) - { - return false; - } + # Test if an url is know + public function isKnowUrl($url) + { + return $this->log->select($url, null, $this->id, 'kutrl'); + } - # Remove an url from list of know urls - public function remove($url) - { - if (!($rs = $this->isKnowUrl($url))) return false; - echo 'la'; - $this->deleteUrl($url); - $this->log->delete($rs->id); - return true; - } + # Test if an custom short url is know + public function isKnowHash($hash) + { + return $this->log->select(null, $hash, $this->id, 'kutrl'); + } - # Delete url on service (second argument really delete urls) - public function deleteUrl($url,$delete=false) - { - return null; - } + # Create hash from url + public function hash($url, $hash = null) + { + $url = trim($this->core->con->escape($url)); + if ('undefined' === $this->id) { + return false; + } + if ($hash && !$this->allow_custom_hash) { + return false; + } + if ($this->isServiceUrl($url)) { + return false; + } + if (!$this->isLongerUrl($url)) { + return false; + } + if (!$this->allow_external_url && $this->isBlogUrl($url)) { + return false; + } + if ($hash && false !== ($rs = $this->isKnowHash($hash))) { + return false; + } + if (false === ($rs = $this->isKnowUrl($url))) { + if (false === ($rs = $this->createHash($url, $hash))) { + return false; + } - # Retrieve long url from hash - public function getUrl($hash) - { - return false; - } + $this->log->insert($rs->url, $rs->hash, $rs->type, 'kutrl'); + $this->core->blog->triggerBlog(); - # Post request - public static function post($server,$data,$verbose=true,$get=false,$headers=array()) - { - $url = (string) $server; - $client = netHttp::initClient($url,$url); - $client->setUserAgent('kUtRL - http://kutrl.fr'); - $client->setPersistReferers(false); + # --BEHAVIOR-- kutrlAfterCreateShortUrl + $this->core->callBehavior('kutrlAfterCreateShortUrl', $rs); - if (is_array($headers) && !empty($headers)) - { - foreach($headers as $header) - { - $client->setMoreHeader($header); - } - } - - if ($get) - { - $client->get($url,$data); - } - else - { - $client->post($url,$data); - } + } + return $rs; + } - if (!$verbose && $client->getStatus() != 200) - { - return false; - } + # Create a hash for a given url (and its custom hash) + public function createHash($url, $hash = null) + { + return false; + } - if ($verbose) - { - return $client->getContent(); - } - return true; - } -} -?> \ No newline at end of file + # Remove an url from list of know urls + public function remove($url) + { + if (!($rs = $this->isKnowUrl($url))) { + return false; + } + $this->deleteUrl($url); + $this->log->delete($rs->id); + return true; + } + + # Delete url on service (second argument really delete urls) + public function deleteUrl($url, $delete = false) + { + return null; + } + + # Retrieve long url from hash + public function getUrl($hash) + { + return false; + } + + # Post request + public static function post($server, $data, $verbose = true, $get = false, $headers = []) + { + $url = (string) $server; + $client = netHttp::initClient($url, $url); + $client->setUserAgent('kUtRL - http://kutrl.fr'); + $client->setPersistReferers(false); + + if (is_array($headers) && !empty($headers)) { + foreach($headers as $header) { + $client->setMoreHeader($header); + } + } + if ($get) { + $client->get($url, $data); + } else { + $client->post($url, $data); + } + if (!$verbose && $client->getStatus() != 200) { + return false; + } + if ($verbose) { + return $client->getContent(); + } + return true; + } +} \ No newline at end of file diff --git a/inc/lib.wiki.kutrl.php b/inc/lib.wiki.kutrl.php index 96ee948..53e5e2c 100644 --- a/inc/lib.wiki.kutrl.php +++ b/inc/lib.wiki.kutrl.php @@ -12,69 +12,66 @@ # This file contents class to shorten url pass through wiki -if (!defined('DC_RC_PATH')){return;} +if (!defined('DC_RC_PATH')) { + return null; +} class kutrlWiki { - public static function coreInitWiki($wiki2xhtml) - { - global $core; - $s = $core->blog->settings->kUtRL; + public static function coreInitWiki($wiki2xhtml) + { + global $core; + $s = $core->blog->settings->kUtRL; - # Do nothing on comment preview and post preview - if (!empty($_POST['preview']) - || !empty($GLOBALS['_ctx']) && $GLOBALS['_ctx']->preview - || !$s->kutrl_active) return; - - if (null === ($kut = kutrl::quickPlace('wiki'))) return; - - foreach($kut->allow_protocols as $protocol) - { - $wiki2xhtml->registerFunction( - 'url:'.$protocol, - array('kutrlWiki','transform') - ); - } - } - - public static function transform($url,$content) - { - global $core; - $s = $core->blog->settings->kUtRL; - - if (!$s->kutrl_active) return; - - if (null === ($kut = kutrl::quickPlace('wiki'))) return array(); - - # Test if long url exists - $is_new = false; - $rs = $kut->isKnowUrl($url); - if (!$rs) - { - $is_new = true; - $rs = $kut->hash($url); - } + # Do nothing on comment preview and post preview + if (!empty($_POST['preview']) + || !empty($GLOBALS['_ctx']) && $GLOBALS['_ctx']->preview + || !$s->kutrl_active) { + return null; + } + if (null === ($kut = kutrl::quickPlace('wiki'))) { + return null; + } + foreach($kut->allow_protocols as $protocol) { + $wiki2xhtml->registerFunction( + 'url:' . $protocol, + ['kutrlWiki', 'transform'] + ); + } + } - if (!$rs) - { - return array(); - } - else - { - $res = array(); - $testurl = strlen($rs->url) > 35 ? substr($rs->url,0,35).'...' : $rs->url; - $res['url'] = $kut->url_base.$rs->hash; - $res['title'] = sprintf(__('%s (Shorten with %s)'),$rs->url,__($kut->name)); - if ($testurl == $content) $res['content'] = $res['url']; - - # ex: Send new url to messengers - if (!empty($rs)) - { - $core->callBehavior('wikiAfterKutrlCreate',$core,$rs,__('New short URL')); - } - - return $res; - } - } -} -?> \ No newline at end of file + public static function transform($url, $content) + { + global $core; + $s = $core->blog->settings->kUtRL; + + if (!$s->kutrl_active) { + return null; + } + if (null === ($kut = kutrl::quickPlace('wiki'))) { + return []; + } + # Test if long url exists + $is_new = false; + $rs = $kut->isKnowUrl($url); + if (!$rs) { + $is_new = true; + $rs = $kut->hash($url); + } + if (!$rs) { + return []; + } else { + $res = []; + $testurl = strlen($rs->url) > 35 ? substr($rs->url, 0, 35) . '...' : $rs->url; + $res['url'] = $kut->url_base . $rs->hash; + $res['title'] = sprintf(__('%s (Shorten with %s)'), $rs->url, __($kut->name)); + if ($testurl == $content) $res['content'] = $res['url']; + + # ex: Send new url to messengers + if (!empty($rs)) { + $core->callBehavior('wikiAfterKutrlCreate', $core, $rs, __('New short URL')); + } + return $res; + } + } +} \ No newline at end of file