| Server IP : 213.186.33.4 / Your IP : 216.73.216.193 Web Server : Apache System : Linux webm006.cluster103.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64 User : awebpaca ( 35430) PHP Version : 8.5.0 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/awebpaca/boutiques/app/code/core/Mage/Catalog/Model/Product/ |
Upload File : |
<?php
/**
* Magento
*
* NOTICE OF LICENSE
*
* This source file is subject to the Open Software License (OSL 3.0)
* that is bundled with this package in the file LICENSE.txt.
* It is also available through the world-wide-web at this URL:
* http://opensource.org/licenses/osl-3.0.php
* If you did not receive a copy of the license and are unable to
* obtain it through the world-wide-web, please send an email
* to license@magentocommerce.com so we can send you a copy immediately.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade Magento to newer
* versions in the future. If you wish to customize Magento for your
* needs please refer to http://www.magentocommerce.com for more information.
*
* @category Mage
* @package Mage_Catalog
* @copyright Copyright (c) 2010 Magento Inc. (http://www.magentocommerce.com)
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
*/
/**
* Product Url model
*
* @category Mage
* @package Mage_Catalog
* @author Magento Core Team <core@magentocommerce.com>
*/
class Mage_Catalog_Model_Product_Url extends Varien_Object
{
const CACHE_TAG = 'url_rewrite';
/**
* Static URL instance
*
* @var Mage_Core_Model_Url
*/
protected static $_url;
/**
* Static URL Rewrite Instance
*
* @var Mage_Core_Model_Url_Rewrite
*/
protected static $_urlRewrite;
/**
* Retrieve URL Instance
*
* @return Mage_Core_Model_Url
*/
public function getUrlInstance()
{
if (!self::$_url) {
self::$_url = Mage::getModel('core/url');
}
return self::$_url;
}
/**
* Retrieve URL Rewrite Instance
*
* @return Mage_Core_Model_Url_Rewrite
*/
public function getUrlRewrite()
{
if (!self::$_urlRewrite) {
self::$_urlRewrite = Mage::getModel('core/url_rewrite');
}
return self::$_urlRewrite;
}
/**
* 'no_selection' shouldn't be a valid image attribute value
*
* @param string $image
* @return string
*/
protected function _validImage($image)
{
if($image == 'no_selection') {
$image = null;
}
return $image;
}
/**
* Retrieve URL in current store
*
* @param Mage_Catalog_Model_Product $product
* @param array $params the URL route params
* @return string
*/
public function getUrlInStore(Mage_Catalog_Model_Product $product, $params = array())
{
$params['_store_to_url'] = true;
return $this->getUrl($product, $params);
}
/**
* Retrieve Product URL
*
* @param Mage_Catalog_Model_Product $product
* @param bool $useSid forced SID mode
* @return string
*/
public function getProductUrl($product, $useSid = null)
{
if ($useSid === null) {
$useSid = Mage::app()->getUseSessionInUrl();
}
$params = array();
if (!$useSid) {
$params['_nosid'] = true;
}
return $this->getUrl($product, $params);
}
/**
* Format Key for URL
*
* @param string $str
* @return string
*/
public function formatUrlKey($str)
{
$urlKey = preg_replace('#[^0-9a-z]+#i', '-', Mage::helper('catalog/product_url')->format($str));
$urlKey = strtolower($urlKey);
$urlKey = trim($urlKey, '-');
return $urlKey;
}
/**
* Retrieve Product Url path (with category if exists)
*
* @param Mage_Catalog_Model_Product $product
* @param Mage_Catalog_Model_Category $category
*
* @return string
*/
public function getUrlPath($product, $category=null)
{
$path = $product->getData('url_path');
if (is_null($category)) {
/** @todo get default category */
return $path;
} elseif (!$category instanceof Mage_Catalog_Model_Category) {
Mage::throwException('Invalid category object supplied');
}
return Mage::helper('catalog/category')->getCategoryUrlPath($category->getUrlPath())
. '/' . $path;
}
/**
* Retrieve Product URL using UrlDataObject
*
* @param Mage_Catalog_Model_Product $product
* @param array $params
* @return string
*/
public function getUrl(Mage_Catalog_Model_Product $product, $params = array())
{
$routePath = '';
$routeParams = $params;
$storeId = $product->getStoreId();
if (isset($params['_ignore_category'])) {
unset($params['_ignore_category']);
$categoryId = null;
} else {
$categoryId = $product->getCategoryId() && !$product->getDoNotUseCategoryId()
? $product->getCategoryId() : null;
}
if ($product->hasUrlDataObject()) {
$requestPath = $product->getUrlDataObject()->getUrlRewrite();
$routeParams['_store'] = $product->getUrlDataObject()->getStoreId();
}
else {
$requestPath = $product->getRequestPath();
if (empty($requestPath)) {
$idPath = sprintf('product/%d', $product->getEntityId());
if ($categoryId) {
$idPath = sprintf('%s/%d', $idPath, $categoryId);
}
$rewrite = $this->getUrlRewrite();
$rewrite->setStoreId($storeId)
->loadByIdPath($idPath);
if ($rewrite->getId()) {
$requestPath = $rewrite->getRequestPath();
$product->setRequestPath($requestPath);
}
}
}
if (isset($routeParams['_store'])) {
$storeId = Mage::app()->getStore($routeParams['_store'])->getId();
}
if ($storeId != Mage::app()->getStore()->getId()) {
$routeParams['_store_to_url'] = true;
}
if (!empty($requestPath)) {
$routeParams['_direct'] = $requestPath;
}
else {
$routePath = 'catalog/product/view';
$routeParams['id'] = $product->getId();
$routeParams['s'] = $product->getUrlKey();
if ($categoryId) {
$routeParams['category'] = $categoryId;
}
}
// reset cached URL instance GET query params
if (!isset($routeParams['_query'])) {
$routeParams['_query'] = array();
}
return $this->getUrlInstance()->setStore($storeId)
->getUrl($routePath, $routeParams);
}
}