/** * * Ajax render to store in session */ public function ajaxGetRender() { /** load libraries for the system rener **/ JSNFactory::localimport('libraries.joomlashine.mode.rawmode'); JSNFactory::localimport('libraries.joomlashine.menu.menuitems'); /** get url **/ $render_url = JRequest::getVar('render_url', ''); $urlRender = base64_decode($render_url); $session = JSession::getInstance('files', array('name' => 'jsnpoweradmin')); if ($render_url == '') { $urlRender = JSNDatabase::getDefaultPage()->link; } $currUri = new JURI($urlRender); if (!$currUri->hasVar('Itemid')) { $currUri->setVar('Itemid', JSNDatabase::getDefaultPage()->id); } $urlString = $currUri->toString(); $session->set('rawmode_render_url', base64_encode($urlString)); $parts = JString::parse_url($urlString); if (!empty($parts['query'])) { parse_str($parts['query'], $params); } else { $params = array(); } $jsntemplate = JSNFactory::getTemplate(); $jsnrawmode = JSNRawmode::getInstance($params); $jsnrawmode->setParam('positions', $jsntemplate->loadXMLPositions()); $jsnrawmode->renderAll(); $session = JSession::getInstance('files', array('name' => 'jsnajaxgetrender')); $session->set('component', $jsnrawmode->getHTML('component')); $session->set('jsondata', $jsnrawmode->getScript('positions', 'JSON')); jexit('success'); }
/** * Method to test an external or internal url for all valid parts. * * @param SimpleXMLElement $element The SimpleXMLElement object representing the `<field>` tag for the form field object. * @param mixed $value The form field value to validate. * @param string $group The field name group control value. This acts as as an array container for the field. * For example if the field has name="foo" and the group value is set to "bar" then the * full field name would end up being "bar[foo]". * @param Registry $input An optional Registry object with the entire data set to validate against the entire form. * @param JForm $form The form object for which the field is being tested. * * @return boolean True if the value is valid, false otherwise. * * @since 11.1 * @link http://www.w3.org/Addressing/URL/url-spec.txt * @see JString */ public function test(SimpleXMLElement $element, $value, $group = null, Registry $input = null, JForm $form = null) { // If the field is empty and not required, the field is valid. $required = (string) $element['required'] == 'true' || (string) $element['required'] == 'required'; if (!$required && empty($value)) { return true; } $urlParts = JString::parse_url($value); // See http://www.w3.org/Addressing/URL/url-spec.txt // Use the full list or optionally specify a list of permitted schemes. if ($element['schemes'] == '') { $scheme = array('http', 'https', 'ftp', 'ftps', 'gopher', 'mailto', 'news', 'prospero', 'telnet', 'rlogin', 'sftp', 'tn3270', 'wais', 'url', 'mid', 'cid', 'nntp', 'tel', 'urn', 'ldap', 'file', 'fax', 'modem', 'git'); } else { $scheme = explode(',', $element['schemes']); } /* * Note that parse_url() does not always parse accurately without a scheme, * but at least the path should be set always. Note also that parse_url() * returns False for seriously malformed URLs instead of an associative array. * @see https://secure.php.net/manual/en/function.parse-url.php */ if ($urlParts === false or !array_key_exists('scheme', $urlParts)) { /* * The function parse_url() returned false (seriously malformed URL) or no scheme * was found and the relative option is not set: in both cases the field is not valid. */ if ($urlParts === false or !$element['relative']) { return false; } // The best we can do for the rest is make sure that the path exists and is valid UTF-8. if (!array_key_exists('path', $urlParts) || !JString::valid((string) $urlParts['path'])) { return false; } // The internal URL seems to be good. return true; } // Scheme found, check all parts found. $urlScheme = (string) $urlParts['scheme']; $urlScheme = strtolower($urlScheme); if (in_array($urlScheme, $scheme) == false) { return false; } // For some schemes here must be two slashes. $scheme = array('http', 'https', 'ftp', 'ftps', 'gopher', 'wais', 'prospero', 'sftp', 'telnet', 'git'); if (in_array($urlScheme, $scheme) && substr($value, strlen($urlScheme), 3) !== '://') { return false; } // The best we can do for the rest is make sure that the strings are valid UTF-8 // and the port is an integer. if (array_key_exists('host', $urlParts) && !JString::valid((string) $urlParts['host'])) { return false; } if (array_key_exists('port', $urlParts) && !is_int((int) $urlParts['port'])) { return false; } if (array_key_exists('path', $urlParts) && !JString::valid((string) $urlParts['path'])) { return false; } return true; }
/** * Method to test an external url for a valid parts. * * @param object &$element The JXmlElement object representing the <field /> tag for the form field object. * @param mixed $value The form field value to validate. * @param string $group The field name group control value. This acts as as an array container for the field. * For example if the field has name="foo" and the group value is set to "bar" then the * full field name would end up being "bar[foo]". * @param object &$input An optional JRegistry object with the entire data set to validate against the entire form. * @param object &$form The form object for which the field is being tested. * * @return boolean True if the value is valid, false otherwise. * * @since 11.1 * @throws JException on invalid rule. * @link http://www.w3.org/Addressing/URL/url-spec.txt * @see Jstring */ public function test(&$element, $value, $group = null, &$input = null, &$form = null) { // If the field is empty and not required, the field is valid. $required = ((string) $element['required'] == 'true' || (string) $element['required'] == 'required'); if (!$required && empty($value)) { return true; } $urlParts = JString::parse_url($value); // See http://www.w3.org/Addressing/URL/url-spec.txt // Use the full list or optionally specify a list of permitted schemes. if ($element['schemes'] == '') { $scheme = array('http', 'https', 'ftp', 'ftps', 'gopher', 'mailto', 'news', 'prospero', 'telnet', 'rlogin', 'tn3270', 'wais', 'url', 'mid', 'cid', 'nntp', 'tel', 'urn', 'ldap', 'file', 'fax', 'modem'); } else { $scheme = explode(',', $element['schemes']); } // This rule is only for full URLs with schemes because parse_url does not parse // accurately without a scheme. // @see http://php.net/manual/en/function.parse-url.php if (!array_key_exists('scheme', $urlParts)) { return false; } $urlScheme = (string) $urlParts['scheme']; $urlScheme = strtolower($urlScheme); if (in_array($urlScheme, $scheme) == false) { return false; } // For some schemes here must be two slashes. if (($urlScheme == 'http' || $urlScheme == 'https' || $urlScheme == 'ftp' || $urlScheme == 'sftp' || $urlScheme == 'gopher' || $urlScheme == 'wais' || $urlScheme == 'gopher' || $urlScheme == 'prospero' || $urlScheme == 'telnet') && ((substr($value, strlen($urlScheme), 3)) !== '://')) { return false; } // The best we can do for the rest is make sure that the strings are valid UTF-8 // and the port is an integer. if (array_key_exists('host', $urlParts) && !JString::valid((string) $urlParts['host'])) { return false; } if (array_key_exists('port', $urlParts) && !is_int((int) $urlParts['port'])) { return false; } if (array_key_exists('path', $urlParts) && !JString::valid((string) $urlParts['path'])) { return false; } return true; }
/** * @param $string * @return array */ function Internal_AutoDetectURLs($string) { $search = preg_split('/(?xi) \\b ( (?: (?:https?|ftp):\\/\\/ | www\\d{0,3}\\. | mailto: | (?:[a-zA-Z0-9._-]{2,}@) ) (?: [^\\s()<>]+ | \\((?:[^\\s()<>]+|(\\(?:[^\\s()<>]+\\)))*\\) )+ (?: \\((?:[^\\s()<>]+|(\\(?:[^\\s()<>]+\\)))*\\) | [^\\s`!()\\[\\]{};:\'"\\.,<>?«»“”‘’] ) )/u', $string, -1, PREG_SPLIT_DELIM_CAPTURE); $output = array(); foreach ($search as $index => $token) { if ($index & 1) { if (preg_match("/^(https?|ftp|mailto):/ui", $token)) { // Protocol has been provided, so just use it as-is. $url = $token; } else { // Add scheme to emails and raw domain URLs. $url = (strpos($token, '@') ? 'mailto:' : 'http://') . $token; } // Never start URL from the middle of text (except for punctuation). $invalid = preg_match('#[^\\s`!()\\[\\]{};\'"\\.,<>?«»“”‘’]$#u', $search[$index - 1]); $invalid |= !$this->IsValidURL($url, true); // We have a full, complete, and properly-formatted URL, with protocol. // Now we need to apply the $this->url_pattern template to turn it into HTML. $params = JString::parse_url($url); if (!$invalid && substr($url, 0, 7) == 'mailto:') { $email = JString::substr($url, 7); $output[$index] = JHtml::_('email.cloak', $email, $this->IsValidEmail($email)); } elseif ($invalid || empty($params['host']) || !empty($params['pass'])) { $output[$index - 1] .= $token; $output[$index] = ''; } else { $params['url'] = $url; $params['link'] = $url; $params['text'] = $token; $output[$index] = $this->FillTemplate($this->url_pattern, $params); } } else { $output[$index] = $token; } } return $output; }
public function buildRule(&$router, &$uri) { $sef = $uri->getVar('lang'); if (empty($sef)) { $sef = self::$lang_codes[self::$tag]->sef; } elseif (!isset(self::$sefs[$sef])) { $sef = self::$default_sef; } $Itemid = $uri->getVar('Itemid'); if (!is_null($Itemid)) { if ($item = JFactory::getApplication()->getMenu()->getItem($Itemid)) { if ($item->home && $uri->getVar('option') != 'com_search') { $link = $item->link; $parts = JString::parse_url($link); if (isset($parts['query']) && strpos($parts['query'], '&')) { $parts['query'] = str_replace('&', '&', $parts['query']); } parse_str($parts['query'], $vars); // test if the url contains same vars as in menu link $test = true; foreach ($uri->getQuery(true) as $key => $value) { if (!in_array($key, array('format', 'Itemid', 'lang')) && !(isset($vars[$key]) && $vars[$key] == $value)) { $test = false; break; } } if ($test) { foreach ($vars as $key => $value) { $uri->delVar($key); } $uri->delVar('Itemid'); } } } else { $uri->delVar('Itemid'); } } if (self::$mode_sef) { $uri->delVar('lang'); if ($this->params->get('remove_default_prefix', 0) == 0 || $sef != self::$default_sef || $sef != self::$lang_codes[self::$tag]->sef || $this->params->get('detect_browser', 1) && JLanguageHelper::detectLanguage() != self::$tag && !self::$cookie) { $uri->setPath($uri->getPath() . '/' . $sef . '/'); } else { $uri->setPath($uri->getPath()); } } else { $uri->setVar('lang', $sef); } }
/** * Display function */ public function display($tpl = null) { if (function_exists('error_reporting')) { error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE & ~E_STRICT); } /** load libraries for the system rener **/ JSNFactory::localimport('libraries.joomlashine.mode.rawmode'); JSNFactory::localimport('libraries.joomlashine.menu.menuitems'); /** Assignment variables **/ $jsntemplate = JSNFactory::getTemplate(); $jsnmenuitems = JSNMenuitems::getInstance(); /** get url **/ $render_url = JRequest::getVar('render_url', ''); $session = JSession::getInstance('files', array('name' => 'jsnpoweradmin')); if ($render_url == '' && $session->get('rawmode_render_url')) { $render_url = $session->get('rawmode_render_url'); } $urlRender = base64_decode($render_url); if ($render_url == '') { $urlRender = JSNDatabase::getDefaultPage()->link; } $currUri = new JURI($urlRender); if (!$currUri->hasVar('Itemid')) { $currUri->setVar('Itemid', JSNDatabase::getDefaultPage()->id); } $urlString = $currUri->toString(); $session->set('rawmode_render_url', base64_encode($urlString)); $parts = JString::parse_url($urlString); if (!empty($parts['query'])) { parse_str($parts['query'], $params); } else { $params = array(); } $jsnrawmode = JSNRawmode::getInstance($params); $jsnrawmode->setParam('positions', $jsntemplate->loadXMLPositions()); $jsnrawmode->renderAll(); $this->assign('component', $jsnrawmode->getHTML('component')); $this->assign('modules', $jsnrawmode->getHTML('positions')); $this->assign('jsnmenuitems', $jsnmenuitems); $this->assign('urlRender', $urlRender); /** add toolbar buttons **/ $this->addToolBar(); /** add scripts and css **/ //$this->addMedia( $currUri->getVar('Itemid'), $urlString, array());//$jsnrawmode->getScript('positions', 'Array')); $this->addMedia($currUri->getVar('Itemid'), $urlString, $jsnrawmode->getScript('positions', 'Array')); return parent::display(); }
/** * Get image type for input url or path of file. * @return mixed */ protected function getInputType() { if (!isset($this->in['type'])) { $this->debug && JFactory::getApplication()->enqueueMessage('ImageHelper::getInputType'); if (is_string($this->image)) { $path = $this->image; } else { $path = @$this->image['src']; } if (is_string($path)) { $ps = JString::parse_url($path); if (array_key_exists('path', $ps) && !empty($ps['path'])) { $isHttp = isset($ps['scheme']) && in_array($ps['scheme'], array('http', 'https')); if (!$isHttp || JURI::isInternal($path)) { $path = $ps['path']; } else { // is extenal url. $this->in['type'] = 'url'; $this->in['src'] = $path; return $this->in['type']; } } } else { if (!$path) { $this->errors[] = 'Image path must be string or stored in array_argument[src]!'; } } //var_dump('Path: ', $path); if (!file_exists($path)) { $this->errors[] = 'Image path is not exists!'; } else { //var_dump('EXISTS'); $this->in['src'] = realpath($path); $infor = array(); if (!function_exists('exif_imagetype')) { $intype = exif_imagetype($path); } else { $infor = getimagesize($path); $intype = @$infor[2]; } switch ($intype) { case IMAGETYPE_PNG: $this->in['type'] = IMAGETYPE_PNG; break; case IMAGETYPE_GIF: $this->in['type'] = IMAGETYPE_GIF; break; case IMAGETYPE_JPEG: $this->in['type'] = IMAGETYPE_JPEG; break; default: } } } return $this->in['type']; }
/** * Transforms a Punycode URL to a UTF-8 URL * * @param string $uri The Punycode URL to transform * * @return string The UTF-8 URL * * @since 3.1.2 */ public static function urlToUTF8($uri) { if (empty($uri)) { return; } $parsed = JString::parse_url($uri); if (!isset($parsed['host']) || $parsed['host'] == '') { // If there is no host we do not need to convert it. return $uri; } $host = $parsed['host']; $hostExploded = explode('.', $host); $newhost = ''; foreach ($hostExploded as $hostex) { $hostex = self::fromPunycode($hostex); $newhost .= $hostex . '.'; } $newhost = substr($newhost, 0, -1); $newuri = ''; if (!empty($parsed['scheme'])) { // Assume :// is required although it is not always. $newuri .= $parsed['scheme'] . '://'; } if (!empty($newhost)) { $newuri .= $newhost; } if (!empty($parsed['port'])) { $newuri .= ':' . $parsed['port']; } if (!empty($parsed['path'])) { $newuri .= $parsed['path']; } if (!empty($parsed['query'])) { $newuri .= '?' . $parsed['query']; } if (!empty($parsed['fragment'])) { $newuri .= '#' . $parsed['fragment']; } return $newuri; }
public function buildRule(&$router, &$uri) { $sef = $uri->getVar('lang'); if (empty($sef)) { $sef = self::$lang_codes[self::$tag]->sef; } elseif (!isset(self::$sefs[$sef])) { $sef = self::$default_sef; } $Itemid = $uri->getVar('Itemid'); if (!is_null($Itemid)) { if ($item = JFactory::getApplication()->getMenu()->getItem($Itemid)) { if ($item->home && $uri->getVar('option') != 'com_search') { $link = $item->link; $parts = JString::parse_url($link); if (isset($parts['query']) && strpos($parts['query'], '&')) { $parts['query'] = str_replace('&', '&', $parts['query']); } parse_str($parts['query'], $vars); // test if the url contains same vars as in menu link $test = true; foreach ($vars as $key => $value) { if ($uri->hasVar($key) && $uri->getVar($key) != $value) { $test = false; break; } } if ($test) { foreach ($vars as $key => $value) { $uri->delVar($key); } $uri->delVar('Itemid'); } } } else { $uri->delVar('Itemid'); } } if (self::$mode_sef) { $uri->delVar('lang'); $uri->setPath($uri->getPath() . '/' . $sef . '/'); } else { $uri->setVar('lang', $sef); } }
/** * @group String * @covers JString::parse_url */ public function testParse_Url() { $url = 'http://localhost/joomla_development/j16_trunk/administrator/index.php?option=com_contact&view=contact&layout=edit&id=5'; $expected = parse_url($url); $actual = JString::parse_url($url); $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal'); $url = 'http://joomla.org/mytestpath/È'; $expected = parse_url($url); // Fix up path for UTF-8 characters $expected['path'] = '/mytestpath/È'; $actual = JString::parse_url($url); $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal'); // Test special characters in URL $url = 'http://mydomain.com/!*\'();:@&=+$,/?%#[]'; $expected = parse_url($url); $actual = JString::parse_url($url); $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal'); }
/** * Parse a given URI and populate the class fields. * * @param string $uri The URI string to parse. * * @return boolean True on success. * * @since 11.1 */ public function parse($uri) { // Initialise variables $retval = false; // Set the original URI to fall back on $this->_uri = $uri; // Parse the URI and populate the object fields. If URI is parsed properly, // set method return value to true. if ($_parts = JString::parse_url($uri)) { $retval = true; } // We need to replace & with & for parse_str to work right... if (isset($_parts['query']) && strpos($_parts['query'], '&')) { $_parts['query'] = str_replace('&', '&', $_parts['query']); } $this->_scheme = isset($_parts['scheme']) ? $_parts['scheme'] : null; $this->_user = isset($_parts['user']) ? $_parts['user'] : null; $this->_pass = isset($_parts['pass']) ? $_parts['pass'] : null; $this->_host = isset($_parts['host']) ? $_parts['host'] : null; $this->_port = isset($_parts['port']) ? $_parts['port'] : null; $this->_path = isset($_parts['path']) ? $_parts['path'] : null; $this->_query = isset($_parts['query']) ? $_parts['query'] : null; $this->_fragment = isset($_parts['fragment']) ? $_parts['fragment'] : null; // Parse the query if (isset($_parts['query'])) { parse_str($_parts['query'], $this->_vars); } return $retval; }
/** * Downloads the file from remote server to specified location on local server. Uses regular file operations or cURL or sockets (whichever available first) to download the file. * * @param url $source_url url of the source file * @param string $target_folder target folder name, should end with DS * @param string $target_file target file name. */ public static function download_file($source_url, $target_folder, $target_file) { if (file_exists($target_file)) { JFile::delete($target_file); } else { JFolder::create($target_folder); } //try to connect via fopen if (function_exists('fopen') && ini_get('allow_url_fopen')) { //set socket timeout ini_set('default_socket_timeout', 5); $handle = fopen($source_url, 'rb'); if ($handle) { $download = fopen($target_folder . $target_file, "wb"); if ($download) { while (!feof($handle)) { fwrite($download, fread($handle, 1024 * 8), 1024 * 8); } } } if ($handle) { fclose($handle); } } else { if (function_exists('curl_init') && function_exists('curl_exec')) { $fh = fopen($target_folder . $target_file, "w"); $options = array(CURLOPT_FILE => $fh, CURLOPT_URL => $source_url, CURLOPT_TIMEOUT => 28800, CURLOPT_FAILONERROR => 1, CURLOPT_HEADER => 0, CURLOPT_TIMEOUT => 5); $ch = curl_init(); curl_setopt_array($ch, $options); curl_exec($ch); curl_close($ch); fclose($fh); } else { if (function_exists('fsockopen') && $data == '') { $errno = 0; $errstr = ''; $parts = JString::parse_url($source_url); $hostname = $parts['host']; unset($parts['scheme']); unset($parts['host']); $filename = CJFunctions::join_url($parts); //timeout handling: 5s for the socket and 5s for the stream = 10s $fsock = fsockopen($hostname, 80, $errno, $errstr, 5); if ($fsock) { fputs($fsock, 'GET ' . $filename . ' HTTP/1.1\\r\\n'); fputs($fsock, 'HOST: ' . $hostname . '\\r\\n'); fputs($fsock, 'Connection: close\\r\\n\\r\\n'); //force stream timeout... stream_set_blocking($fsock, 1); stream_set_timeout($fsock, 5); $get_info = false; $download = fopen($target_folder . $target_file, 'wb'); while (!feof($fsock)) { if ($get_info) { fwrite($download, fread($handle, 1024 * 8), 1024 * 8); } else { if (fgets($fsock, 8192) == '\\r\\n') { $get_info = true; } } } fclose($fsock); } } } } }
/** * @return array * * @since 11.2 * @covers JString::parse_url */ public function testParse_Url() { $url = 'http://localhost/joomla_development/j16_trunk/administrator/index.php?option=com_contact&view=contact&layout=edit&id=5'; $expected = parse_url($url); $actual = JString::parse_url($url); $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal'); // Test all parts of query $url = 'https://*****:*****@www.google.com:80/folder/page.html#id?var=kay&var2=key&true'; $expected = parse_url($url); $actual = JString::parse_url($url); $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal'); // Test special characters in URL $url = 'http://joomla.org/mytestpath/È'; $expected = parse_url($url); // Fix up path for UTF-8 characters $expected['path'] = '/mytestpath/È'; $actual = JString::parse_url($url); $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal'); // Test special characters in URL $url = 'http://mydomain.com/!*\'();:@&=+$,/?%#[]" \\'; $expected = parse_url($url); $actual = JString::parse_url($url); $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal'); // Test url encoding in URL $url = 'http://mydomain.com/%21%2A%27%28%29%3B%3A%40%26%3D%24%2C%2F%3F%25%23%5B%22%20%5C'; $expected = parse_url($url); $actual = JString::parse_url($url); $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal'); // Test a mix of the above $url = 'http://*****:*****@mydomain.com:80/%È21%25È3*%('; $expected = parse_url($url); // Fix up path for UTF-8 characters $expected['path'] = '/%È21%25È3*%('; $actual = JString::parse_url($url); $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal'); // Test invalild URL $url = 'http:///mydomain.com'; $expected = parse_url($url); $actual = JString::parse_url($url); $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal'); }
public function getAssociatedArticle($id) { $associated_id = 0; require_once JPATH_SITE . '/components/com_content/helpers/route.php'; require_once JPATH_SITE . '/components/com_content/helpers/association.php'; $result = ContentHelperAssociation::getAssociations($id, 'article'); $tag = JFactory::getLanguage()->getTag(); if (isset($result[$tag])) { $parts = JString::parse_url($result[$tag]); parse_str($parts['query'], $vars); if (isset($vars['id'])) { $splits = explode(':', $vars['id']); } $associated_id = (int) $splits[0]; } if (isset($associated_id) && $associated_id) { $id = $associated_id; } return $id; }
/** * Parse a given URI and populate the class fields. * * @param string $uri The URI string to parse. * * @return boolean True on success. * * @since 11.1 */ public function parse($uri) { // Set the original URI to fall back on $this->uri = $uri; /* * Parse the URI and populate the object fields. If URI is parsed properly, * set method return value to true. */ $parts = JString::parse_url($uri); $retval = $parts ? true : false; // We need to replace & with & for parse_str to work right... if (isset($parts['query']) && strpos($parts['query'], '&')) { $parts['query'] = str_replace('&', '&', $parts['query']); } $this->scheme = isset($parts['scheme']) ? $parts['scheme'] : null; $this->user = isset($parts['user']) ? $parts['user'] : null; $this->pass = isset($parts['pass']) ? $parts['pass'] : null; $this->host = isset($parts['host']) ? $parts['host'] : null; $this->port = isset($parts['port']) ? $parts['port'] : null; $this->path = isset($parts['path']) ? $parts['path'] : null; $this->query = isset($parts['query']) ? $parts['query'] : null; $this->fragment = isset($parts['fragment']) ? $parts['fragment'] : null; // Parse the query if (isset($parts['query'])) { parse_str($parts['query'], $this->vars); } return $retval; }
/** * * @param string $path * @return multitype:multitype:unknown |Ambigous <multitype:, boolean, multitype:unknown multitype:unknown > */ public static function getExternalImages($path) { $files = array(); $ps = JString::parse_url($path); if (array_key_exists('path', $ps) && !empty($ps['path'])) { $isHttp = isset($ps['scheme']) && in_array($ps['scheme'], array('http', 'https')); if (!$isHttp || JURI::isInternal($path)) { // image on server $path = $ps['path']; } else { $files[] = array('src' => $path); return $files; } } if (is_file($path)) { $files[] = $path; } else { if (is_dir($path)) { $files = JFolder::files($path, '.jpg|.png|.gif', false, true); } else { $ext = substr($path, -4); $search = substr($path, 0, -4); $lext = strtolower($ext); if (is_dir($search) && in_array($lext, array('.jpg', '.png', '.gif'))) { $files = JFolder::files($search, $ext, false, true); } } } return $files; }