/** * call is re-formatted (regardless of http or file path) to be: * 1. relative to the JPATH_SITE or JUri::base() (or absolute path, c.f. $is_absolute) * 2. file path with directory separator */ public static function normalizeCall($call, $is_absolute = false, $is_file_path = true, $maintain_query_string = true, $type = null, $passPHP = false, $cdn = false) { $path = $call; if (jbetoloHelper::beginWith($path, JBETOLO_URI_BASE)) { $path = str_ireplace(JBETOLO_URI_BASE, '', $path); } else { if (jbetoloHelper::beginWith($path, JBETOLO_URI_CDN)) { $path = str_ireplace(JBETOLO_URI_CDN, '', $path); } else { if (jbetoloHelper::beginWith($path, JPATH_SITE . '/')) { $path = str_replace(JPATH_SITE . '/', '', $path); } else { if (jbetoloHelper::beginWith($path, JPATH_SITE)) { $path = str_replace(JPATH_SITE, '', $path); } else { if (jbetoloHelper::beginWith($path, JBETOLO_URI_PATH)) { $path = substr($path, strlen(JBETOLO_URI_PATH)); } else { $app = JFactory::getApplication(); if ($app->getName() != 'site' && !jbetoloHelper::beginWith($path, 'administrator')) { $_path = JPATH_SITE . '/' . jbetoloFileHelper::cleanUpCall($path, '/', true, true); if (!file_exists($_path)) { $path = 'administrator/' . $path; } } } } } } } $path = JPATH_SITE . '/' . jbetoloFileHelper::cleanUpCall($path, '/', true, true); if (!file_exists($path)) { if ($type && strtolower(substr($path, -strlen($type))) != $type) { $path .= '.' . $type; } if (!file_exists($path)) { return false; } } if (!$is_absolute || !$is_file_path) { $path = str_replace(JPATH_SITE . '/', '', $path); } if (!$is_file_path) { if ($is_absolute) { if ($path[0] == '/') { $path = substr($path, 1); } if (JBETOLO_CDN_MAP && $cdn) { $_path = $cdn . $path; $excluded = jbetoloHelper::cdnExcluded(); if (jbetoloFileHelper::isOnPath($path, $excluded)) { $_path = JBETOLO_URI_BASE . $path; } $path = $_path; } else { $path = JBETOLO_URI_BASE . $path; } } } $isPHP = self::isPHP($path); if ($is_file_path && $isPHP && !$passPHP) { return false; } if ($maintain_query_string) { $call = explode('?', $call); if (count($call) > 1 && $isPHP) { if ($is_file_path) { return false; } $path .= '?' . $call[1]; } } $path = html_entity_decode($path); return $path; }