<?php
class UriWpf {
/**
* Tell link form method to replace symbols for special html caracters only for ONE output
*/
private static $_oneHtmlEnc = false;
public static function fileToPageParam( $file ) {
$file = str_replace(DS, '/', $file);
return substr($file, strpos($file, WPF_PLUG_NAME));
}
public static function _( $params ) {
global $wp_rewrite;
$link = '';
if ( is_string($params) && ( strpos($params, 'http') === 0 || strpos($params, WPF_PLUG_NAME) !== false ) ) {
if (self::isHttps()) {
$params = self::makeHttps($params);
}
return $params;
} elseif (is_array($params) && isset($params['page_id'])) {
$link = get_page_link($params['page_id']);
unset($params['page_id']);
} elseif (is_array($params) && isset($params['baseUrl'])) {
$link = $params['baseUrl'];
unset($params['baseUrl']);
} else {
$link = WPF_URL;
}
if (!empty($params)) {
$query = is_array($params) ? http_build_query($params, '', '&') : $params;
$link .= ( strpos($link, '?') === false ? '?' : '&' ) . $query;
}
if (self::$_oneHtmlEnc) {
$link = str_replace('&', '&', $link);
self::$_oneHtmlEnc = false;
}
return $link;
}
public static function page( $id ) {
return get_page_link($id);
}
public static function getGetParams( $exclude = array() ) {
$res = array();
if (isset($_GET) && !empty($_GET)) {
foreach ($_GET as $key => $val) {
if (in_array($key, $exclude)) {
continue;
}
$res[$key] = $val;
}
}
return $res;
}
public static function mod( $name, $action = '', $data = null ) {
$params = array('mod' => $name);
if ($action) {
$params['action'] = $action;
}
$params['pl'] = WPF_CODE;
if ($data) {
if (is_array($data)) {
$params = array_merge($params, $data);
if ( isset($data['reqType']) && ( 'ajax' == $data['reqType'] ) ) {
$params['baseUrl'] = admin_url('admin-ajax.php');
}
} elseif (is_string($data)) {
$params = http_build_query($params);
$params .= '&' . $data;
}
}
return self::_($params);
}
public static function atach( $params ) {
$getData = self::getGetParams();
if (!empty($getData)) {
if (is_array($params)) {
$params = array_merge($getData, $params);
} else {
$params = http_build_query($getData) . '&' . $params;
}
}
return self::_($params);
}
/**
* Get current path
*
* @return string current link
*/
public static function getCurrent() {
$url = ( empty($_SERVER['HTTP_HOST']) ? '' : sanitize_text_field($_SERVER['HTTP_HOST']) ) . ( empty($_SERVER['SCRIPT_NAME']) ? '' : sanitize_text_field($_SERVER['SCRIPT_NAME']) );
if (!empty($_SERVER['HTTPS'])) {
return 'https://' . $url;
} else {
return 'http://' . $url;
}
}
public static function getFullUrl() {
$url = isset($_SERVER['HTTPS']) && !empty($_SERVER['HTTPS']) ? 'https://' : 'http://';
$url .= ( empty($_SERVER['HTTP_HOST']) ? '' : sanitize_text_field($_SERVER['HTTP_HOST']) ) . ( empty($_SERVER['REQUEST_URI']) ? '' : sanitize_text_field($_SERVER['REQUEST_URI']) );
return $url;
}
/**
* Replace symbols to special html caracters in one output
*/
public static function oneHtmlEnc() {
self::$_oneHtmlEnc = true;
}
public static function makeHttps( $link ) {
if (strpos($link, 'https:') === false) {
$link = str_replace('http:', 'https:', $link);
}
return $link;
}
public static function isHttps() {
return is_ssl();
}
/**
* If url is without http:// - just domain name for example - we will add it here
*
* @param string $url Url to check
* @return string Checked and corrected URL (if this will be required)
*/
public static function normal( $url ) {
$url = trim($url);
if (strpos($url, 'http') !== 0) {
$url = 'http://' . $url;
}
return $url;
}
}