Files
interblue.pl/modules/adminmenu/adminmenu.php
2024-10-25 14:16:28 +02:00

229 lines
9.5 KiB
PHP

<?php
/**
* PrestaShop module created by VEKIA, a guy from official PrestaShop community ;-)
*
* @author VEKIA https://www.prestashop.com/forums/user/132608-vekia/
* @copyright 2010-2017 VEKIA
* @license This program is not free software and you can't resell and redistribute it
*
* CONTACT WITH DEVELOPER http://mypresta.eu
* support@mypresta.eu
*/
class adminmenu extends Module
{
public function __construct()
{
$this->name = 'adminmenu';
$this->displayName = $this->l('Admin menu manager');
$this->description = $this->l('Module that allows to manage back office menu exactly as it was in old prestashop 1.6');
$this->tab = 'administration';
$this->author = 'MyPresta.eu';
$this->bootstrap = true;
$this->mypresta_link = 'https://mypresta.eu/modules/advertising-and-marketing/voucher-code-after-registration.html';
$this->module_key = '3ec1ba193b0e3c189c4f14761c9188e9';
$this->version = '1.2.0';
parent::__construct();
$this->checkforupdates();
}
public function psversion() {
return 7;
}
public function install()
{
if (!parent::install() || !$this->inDelMenu('install', 'AdminMenuTabs', $this->l('Menu'), 'AdminAdvancedParameters'))
{
return false;
}
return true;
}
public function checkforupdates($display_msg = 0, $form = 0)
{
// ---------- //
// ---------- //
// VERSION 12 //
// ---------- //
// ---------- //
$this->mkey = "nlc";
if (@file_exists('../modules/' . $this->name . '/key.php'))
{
@require_once('../modules/' . $this->name . '/key.php');
}
else
{
if (@file_exists(dirname(__FILE__) . $this->name . '/key.php'))
{
@require_once(dirname(__FILE__) . $this->name . '/key.php');
}
else
{
if (@file_exists('modules/' . $this->name . '/key.php'))
{
@require_once('modules/' . $this->name . '/key.php');
}
}
}
if ($form == 1)
{
return '
<div class="panel" id="fieldset_myprestaupdates" style="margin-top:20px;">
' . ($this->psversion() == 6 || $this->psversion() == 7 ? '<div class="panel-heading"><i class="icon-wrench"></i> ' . $this->l('MyPresta updates') . '</div>' : '') . '
<div class="form-wrapper" style="padding:0px!important;">
<div id="module_block_settings">
<fieldset id="fieldset_module_block_settings">
' . ($this->psversion() == 5 ? '<legend style="">' . $this->l('MyPresta updates') . '</legend>' : '') . '
<form action="' . $_SERVER['REQUEST_URI'] . '" method="post">
<label>' . $this->l('Check updates') . '</label>
<div class="margin-form">' . (Tools::isSubmit('submit_settings_updates_now') ? ($this->inconsistency(0) ? '' : '') . $this->checkforupdates(1) : '') . '
<button style="margin: 0px; top: -3px; position: relative;" type="submit" name="submit_settings_updates_now" class="button btn btn-default" />
<i class="process-icon-update"></i>
' . $this->l('Check now') . '
</button>
</div>
<label>' . $this->l('Updates notifications') . '</label>
<div class="margin-form">
<select name="mypresta_updates">
<option value="-">' . $this->l('-- select --') . '</option>
<option value="1" ' . ((int)(Configuration::get('mypresta_updates') == 1) ? 'selected="selected"' : '') . '>' . $this->l('Enable') . '</option>
<option value="0" ' . ((int)(Configuration::get('mypresta_updates') == 0) ? 'selected="selected"' : '') . '>' . $this->l('Disable') . '</option>
</select>
<p class="clear">' . $this->l('Turn this option on if you want to check MyPresta.eu for module updates automatically. This option will display notification about new versions of this addon.') . '</p>
</div>
<label>' . $this->l('Module page') . '</label>
<div class="margin-form">
<a style="font-size:14px;" href="' . $this->mypresta_link . '" target="_blank">' . $this->displayName . '</a>
<p class="clear">' . $this->l('This is direct link to official addon page, where you can read about changes in the module (changelog)') . '</p>
</div>
<div class="panel-footer">
<button type="submit" name="submit_settings_updates"class="button btn btn-default pull-right" />
<i class="process-icon-save"></i>
' . $this->l('Save') . '
</button>
</div>
</form>
</fieldset>
<style>
#fieldset_myprestaupdates {
display:block;clear:both;
float:inherit!important;
}
</style>
</div>
</div>
</div>';
}
else
{
if (defined('_PS_ADMIN_DIR_'))
{
if (Tools::isSubmit('submit_settings_updates'))
{
Configuration::updateValue('mypresta_updates', Tools::getValue('mypresta_updates'));
}
if (Configuration::get('mypresta_updates') != 0 || (bool)Configuration::get('mypresta_updates') == false)
{
if (Configuration::get('update_' . $this->name) < (date("U") - 259200))
{
$actual_version = adminmenuUpdate::verify($this->name, (isset($this->mkey) ? $this->mkey : 'nokey'), $this->version);
}
if (adminmenuUpdate::version($this->version) < adminmenuUpdate::version(Configuration::get('updatev_' . $this->name)))
{
$this->warning = $this->l('New version available, check http://MyPresta.eu for more informations');
}
}
if ($display_msg == 1)
{
if (adminmenuUpdate::version($this->version) < adminmenuUpdate::version(adminmenuUpdate::verify($this->name, (isset($this->mkey) ? $this->mkey : 'nokey'), $this->version)))
{
return "<span style='color:red; font-weight:bold; font-size:16px; margin-right:10px;'>" . $this->l('New version available!') . "</span>";
}
else
{
return "<span style='color:green; font-weight:bold; font-size:16px; margin-right:10px;'>" . $this->l('Module is up to date!') . "</span>";
}
}
}
}
}
private function InDelMenu($what, $controller, $name = null, $parent = null)
{
if ($what == 'install')
{
if ($parent == null)
{
return;
}
$tab = new Tab();
$tab->class_name = $controller;
$tab->id_parent = Tab::getIdFromClassName($parent);
$tab->module = $this->name;
$languages = Language::getLanguages(false);
foreach ($languages as $lang)
{
$tab->name[$lang['id_lang']] = $name;
}
if ($tab->save())
{
return true;
}
}
elseif ($what == 'uninstall')
{
$tab = new Tab(Tab::getIdFromClassName($controller));
if ($tab->delete())
{
return true;
}
}
return false;
}
}
class adminmenuUpdate extends adminmenu
{
public static function version($version)
{
$version = (int)str_replace(".", "", $version);
if (strlen($version) == 3)
{
$version = (int)$version . "0";
}
if (strlen($version) == 2)
{
$version = (int)$version . "00";
}
if (strlen($version) == 1)
{
$version = (int)$version . "000";
}
if (strlen($version) == 0)
{
$version = (int)$version . "0000";
}
return (int)$version;
}
public static function encrypt($string)
{
return base64_encode($string);
}
public static function verify($module, $key, $version)
{
if (ini_get("allow_url_fopen"))
{
if (function_exists("file_get_contents"))
{
$actual_version = @file_get_contents('http://dev.mypresta.eu/update/get.php?module=' . $module . "&version=" . self::encrypt($version) . "&lic=$key&u=" . self::encrypt(_PS_BASE_URL_ . __PS_BASE_URI__));
}
}
Configuration::updateValue("update_" . $module, date("U"));
Configuration::updateValue("updatev_" . $module, $actual_version);
return $actual_version;
}
}
?>