* @copyright 2007-2013 PrestaShop SA
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
* International Registered Trademark & Property of PrestaShop SA
*/
require_once(dirname(__FILE__).'/../images.inc.php');
function bindDatepicker($id, $time)
{
if ($time)
echo '
var dateObj = new Date();
var hours = dateObj.getHours();
var mins = dateObj.getMinutes();
var secs = dateObj.getSeconds();
if (hours < 10) { hours = "0" + hours; }
if (mins < 10) { mins = "0" + mins; }
if (secs < 10) { secs = "0" + secs; }
var time = " "+hours+":"+mins+":"+secs;';
echo '
$(function() {
$("#'.Tools::htmlentitiesUTF8($id).'").datepicker({
prevText:"",
nextText:"",
dateFormat:"yy-mm-dd"'.($time ? '+time' : '').'});
});';
}
/**
* Deprecated since 1.5
* Use Controller::addJqueryUi('ui.datepicker') instead
*
* @param int|array $id id can be a identifier or an array of identifiers
* @param unknown_type $time
*/
function includeDatepicker($id, $time = false)
{
Tools::displayAsDeprecated();
echo '';
echo '';
echo '';
$iso = Db::getInstance()->getValue('SELECT iso_code FROM '._DB_PREFIX_.'lang WHERE `id_lang` = '.(int)Context::getContext()->language->id);
if ($iso != 'en')
echo '';
echo '';
}
/**
* Generate a new settings file, only transmitted parameters are updated
*
* @param string $baseUri Base URI
* @param string $theme Theme name (eg. default)
* @param array $arrayDB Parameters in order to connect to database
*/
function rewriteSettingsFile($baseUrls = NULL, $theme = NULL, $arrayDB = NULL)
{
$defines = array();
$defines['_MEDIA_SERVER_1_'] = ($baseUrls AND isset($baseUrls['_MEDIA_SERVER_1_'])) ? $baseUrls['_MEDIA_SERVER_1_'] : _MEDIA_SERVER_1_;
$defines['_MEDIA_SERVER_2_'] = ($baseUrls AND isset($baseUrls['_MEDIA_SERVER_2_'])) ? $baseUrls['_MEDIA_SERVER_2_'] : _MEDIA_SERVER_2_;
$defines['_MEDIA_SERVER_3_'] = ($baseUrls AND isset($baseUrls['_MEDIA_SERVER_3_'])) ? $baseUrls['_MEDIA_SERVER_3_'] : _MEDIA_SERVER_3_;
$defines['_PS_CACHING_SYSTEM_'] = _PS_CACHING_SYSTEM_;
$defines['_PS_CACHE_ENABLED_'] = _PS_CACHE_ENABLED_;
$defines['_DB_NAME_'] = (($arrayDB AND isset($arrayDB['_DB_NAME_'])) ? $arrayDB['_DB_NAME_'] : _DB_NAME_);
$defines['_MYSQL_ENGINE_'] = (($arrayDB AND isset($arrayDB['_MYSQL_ENGINE_'])) ? $arrayDB['_MYSQL_ENGINE_'] : _MYSQL_ENGINE_);
$defines['_DB_SERVER_'] = (($arrayDB AND isset($arrayDB['_DB_SERVER_'])) ? $arrayDB['_DB_SERVER_'] : _DB_SERVER_);
$defines['_DB_USER_'] = (($arrayDB AND isset($arrayDB['_DB_USER_'])) ? $arrayDB['_DB_USER_'] : _DB_USER_);
$defines['_DB_PREFIX_'] = (($arrayDB AND isset($arrayDB['_DB_PREFIX_'])) ? $arrayDB['_DB_PREFIX_'] : _DB_PREFIX_);
$defines['_DB_PASSWD_'] = (($arrayDB AND isset($arrayDB['_DB_PASSWD_'])) ? $arrayDB['_DB_PASSWD_'] : _DB_PASSWD_);
$defines['_COOKIE_KEY_'] = addslashes(_COOKIE_KEY_);
$defines['_COOKIE_IV_'] = addslashes(_COOKIE_IV_);
$defines['_PS_CREATION_DATE_'] = addslashes(_PS_CREATION_DATE_);
if (defined('_RIJNDAEL_KEY_'))
$defines['_RIJNDAEL_KEY_'] = addslashes(_RIJNDAEL_KEY_);
if (defined('_RIJNDAEL_IV_'))
$defines['_RIJNDAEL_IV_'] = addslashes(_RIJNDAEL_IV_);
$defines['_PS_VERSION_'] = addslashes(_PS_VERSION_);
$content = " $value)
$content .= 'define(\''.$k.'\', \''.addslashes($value).'\');'."\n";
copy(_PS_ADMIN_DIR_.'/../config/settings.inc.php', _PS_ADMIN_DIR_.'/../config/settings.old.php');
if ($fd = fopen(_PS_ADMIN_DIR_.'/../config/settings.inc.php', 'w'))
{
fwrite($fd, $content);
fclose($fd);
return true;
}
return false;
}
/**
* Display SQL date in friendly format
*
* @param string $sqlDate Date in SQL format (YYYY-MM-DD HH:mm:ss)
* @param boolean $withTime Display both date and time
* @todo Several formats (french : DD-MM-YYYY)
*/
function displayDate($sqlDate, $withTime = false)
{
return strftime('%Y-%m-%d'.($withTime ? ' %H:%M:%S' : ''), strtotime($sqlDate));
}
/**
* Return path to a product category
*
* @param string $urlBase Start URL
* @param integer $id_category Start category
* @param string $path Current path
* @param string $highlight String to highlight (in XHTML/CSS)
* @param string $type Category type (products/cms)
*/
function getPath($urlBase, $id_category, $path = '', $highlight = '', $categoryType = 'catalog', $home = false)
{
$context = Context::getContext();
if ($categoryType == 'catalog')
{
$category = Db::getInstance()->getRow('
SELECT id_category, level_depth, nleft, nright
FROM '._DB_PREFIX_.'category
WHERE id_category = '.(int)$id_category);
if (isset($category['id_category']))
{
$sql = 'SELECT c.id_category, cl.name, cl.link_rewrite
FROM '._DB_PREFIX_.'category c
LEFT JOIN '._DB_PREFIX_.'category_lang cl ON (cl.id_category = c.id_category'.Shop::addSqlRestrictionOnLang('cl').')
WHERE c.nleft <= '.(int)$category['nleft'].'
AND c.nright >= '.(int)$category['nright'].'
AND cl.id_lang = '.(int)$context->language->id.
($home ? ' AND c.id_category='.$id_category : '').'
AND c.id_category != '.(int)Category::getTopCategory()->id.'
GROUP BY c.id_category
ORDER BY c.level_depth ASC
LIMIT '.(!$home ? (int)($category['level_depth'] + 1) : 1);
$categories = Db::getInstance()->executeS($sql);
$fullPath = '';
$n = 1;
$nCategories = (int)sizeof($categories);
foreach ($categories AS $category)
{
$link = Context::getContext()->link->getAdminLink('AdminCategories');
$edit = ' ';
$fullPath .= $edit.
($n < $nCategories ? '' : '').
(!empty($highlight) ? str_ireplace($highlight, ''.htmlentities($highlight, ENT_NOQUOTES, 'UTF-8').'', $category['name']) : $category['name']).
($n < $nCategories ? '' : '').
(($n++ != $nCategories OR !empty($path)) ? ' > ' : '');
}
return $fullPath.$path;
}
}
elseif ($categoryType == 'cms')
{
$category = new CMSCategory($id_category, $context->language->id);
if (!$category->id)
return $path;
$name = ($highlight != NULL) ? str_ireplace($highlight, ''.$highlight.'', CMSCategory::hideCMSCategoryPosition($category->name)) : CMSCategory::hideCMSCategoryPosition($category->name);
$edit = '
';
if ($category->id == 1)
$edit = '
';
$path = $edit.'
'.$name.' > '.$path;
if ($category->id == 1)
return substr($path, 0, strlen($path) - 3);
return getPath($urlBase, $category->id_parent, $path, '', 'cms');
}
}
function getDirContent($path)
{
$content = array();
if (is_dir($path))
{
$d = dir($path);
while (false !== ($entry = $d->read()))
if ($entry{0} != '.')
$content[] = $entry;
$d->close();
}
return $content;
}
function createDir($path, $rights)
{
if (file_exists($path))
return true;
return @mkdir($path, $rights);
}
function checkPSVersion()
{
$upgrader = new Upgrader();
return $upgrader->checkPSVersion();
}
function translate($string)
{
global $_LANGADM;
if (!is_array($_LANGADM))
return str_replace('"', '"', $string);
$key = md5(str_replace('\'', '\\\'', $string));
$str = (key_exists('index'.$key, $_LANGADM)) ? $_LANGADM['index'.$key] : ((key_exists('index'.$key, $_LANGADM)) ? $_LANGADM['index'.$key] : $string);
return str_replace('"', '"', stripslashes($str));
}
/**
* Returns a new Tab object
*
* @param string $tab class name
* @return mixed(AdminTab, bool) tab object or false if failed
*/
function checkingTab($tab)
{
$tab = trim($tab);
$tab_lowercase = strtolower($tab);
if (!Validate::isTabName($tab))
return false;
$row = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('SELECT id_tab, module, class_name FROM `'._DB_PREFIX_.'tab` WHERE class_name = \''.pSQL($tab).'\'');
if (!$row['id_tab'])
{
if (isset(AdminTab::$tabParenting[$tab]))
Tools::redirectAdmin('?tab='.AdminTab::$tabParenting[$tab].'&token='.Tools::getAdminTokenLite(AdminTab::$tabParenting[$tab]));
echo sprintf(Tools::displayError('Page %s cannot be found..'),$tab);
return false;
}
// Class file is included in Dispatcher::dispatch() function
if (!class_exists($tab, false) OR !$row['id_tab'])
{
echo sprintf(Tools::displayError('The class %s cannot be found.'),$tab);
return false;
}
$adminObj = new $tab;
if (!$adminObj->viewAccess() AND ($adminObj->table != 'employee' OR Context::getContext()->employee->id != Tools::getValue('id_employee') OR !Tools::isSubmit('updateemployee')))
{
$adminObj->_errors = array(Tools::displayError('Access denied.'));
echo $adminObj->displayErrors();
return false;
}
return $adminObj;
}
/**
* @TODO deprecate for Tab::checkTabRights()
*/
function checkTabRights($id_tab)
{
static $tabAccesses = NULL;
if ($tabAccesses === NULL)
$tabAccesses = Profile::getProfileAccesses(Context::getContext()->employee->id_profile);
if (isset($tabAccesses[(int)($id_tab)]['view']))
return ($tabAccesses[(int)($id_tab)]['view'] === '1');
return false;
}
/**
* Converts a simpleXML element into an array. Preserves attributes and everything.
* You can choose to get your elements either flattened, or stored in a custom index that
* you define.
* For example, for a given element
*