Files
2019-11-17 19:14:07 +01:00

264 lines
9.6 KiB
PHP

<?php
class hooksmanager extends Module
{
function __construct()
{
ini_set("display_errors", 0);
error_reporting(0); //E_ALL
$this->name = 'hooksmanager';
$this->tab = 'administration';
$this->version = '1.3.2';
$this->author = 'MyPresta.eu';
$this->psver = $this->psversion();
parent::__construct();
$this->bootstrap = true;
$this->displayName = $this->l('Hooks Manager');
$this->description = $this->l('Manage hooks that are available in your store. Add and remove any hook you want.');
}
function install()
{
if (parent::install() == false)
{
return false;
}
return true;
}
public function renderForm()
{
// Select all available extra info tabs
$sql = 'SELECT * FROM ' . _DB_PREFIX_ . 'hook ORDER BY id_hook DESC';
if ($result = Db::getInstance()->ExecuteS($sql))
{
$this->fields_list = array(
'id_hook' => array(
'title' => 'ID',
'width' => 'auto',
'type' => 'id'
),
'name' => array(
'title' => $this->l('Name'),
'width' => 'auto',
'type' => 'text'
),
'title' => array(
'title' => $this->l('Title'),
'width' => 'auto',
'type' => 'text'
),
'description' => array(
'title' => $this->l('Description'),
'width' => 'auto',
'type' => 'text'
),
'position' => array(
'title' => $this->l('Visible'),
'width' => 'auto',
'type' => 'bool',
'icon' => array(
'0' => 'disabled.gif',
'1' => 'enabled.gif'
)
),
'live_edit' => array(
'title' => $this->l('Live edit'),
'width' => 'auto',
'type' => 'bool',
'icon' => array(
'0' => 'disabled.gif',
'1' => 'enabled.gif'
)
)
);
$helper = new HelperList();
$helper->actions = array('delete');
$helper->className = 'NewHook';
$helper->simple_header = true;
$helper->identifier = 'id_hook';
//$helper->actions = array('edit', 'delete');
$helper->show_toolbar = true;
$helper->title = $this->l('Available Hooks');
$helper->table = 'hook';
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name;
return ($helper->generateList($result, $this->fields_list));
}
}
public function AddForm()
{
$fields_form = array(
'form' => array(
'legend' => array(
'title' => $this->l('Add new hook'),
'icon' => 'icon-plus-square'
),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Hook Name'),
'name' => 'hook_name',
'class' => 'fixed-width-lg',
'required' => true,
'desc' => $this->l('Hook name is the most important thing. It must be unique.'),
),
array(
'type' => 'text',
'label' => $this->l('Hook Title'),
'name' => 'hook_title',
'class' => 'fixed-width-lg',
'required' => false,
'desc' => $this->l('Hook title appears in back office (for your eyes only)'),
),
array(
'type' => 'textarea',
'label' => $this->l('Hook Description'),
'name' => 'hook_description',
'class' => 'fixed-width-lg',
'required' => false,
'desc' => $this->l('Define short description of the Hook'),
),
array(
'type' => 'switch',
'label' => $this->l('Visibility'),
'name' => 'hook_visible',
'class' => 'fixed-width-lg',
'required' => false,
'desc' => $this->l('Visibility of the hook on Hooks list in your modules > positions section'),
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Enabled')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('Disabled')
)
),
),
array(
'type' => 'switch',
'label' => $this->l('Live edit'),
'name' => 'hook_live_edit',
'class' => 'fixed-width-lg',
'required' => false,
'desc' => $this->l('Possibility to use this hook in LIVE EDIT mode'),
'values' => array(
array(
'id' => 'active_on',
'value' => 1,
'label' => $this->l('Enabled')
),
array(
'id' => 'active_off',
'value' => 0,
'label' => $this->l('Disabled')
)
),
),
),
'submit' => array('title' => $this->l('Add'),)
),
);
$helper = new HelperForm();
$helper->submit_action = 'addNewHook';
$helper->token = Tools::getAdminTokenLite('AdminModules');
$helper->currentIndex = AdminController::$currentIndex . '&configure=' . $this->name;
return $this->advert() . $helper->generateForm(array($fields_form));
}
public function advert()
{
return ' <div style="diplay:block; clear:both; margin-bottom:20px;">
<iframe src="//apps.facepages.eu/somestuff/onlyexample.html" width="100%" height="150" border="0" style="border:none;"></iframe>
</div>';
}
public static function psversion($part = 1)
{
$version = _PS_VERSION_;
$exp = $explode = explode(".", $version);
if ($part == 1)
{
return $exp[1];
}
if ($part == 2)
{
return $exp[2];
}
if ($part == 3)
{
return $exp[3];
}
}
public function getContent()
{
if (Tools::getValue('deletehook', 'false') != 'false')
{
$hook = new Hook(Tools::getValue('id_hook'));
if ($hook->name == null)
{
$this->context->controller->errors[] = $this->l("Hook doesn't exist");
return $this->AddForm() . $this->renderForm();
}
if ($hook->delete())
{
$this->context->controller->confirmations[] = $this->l("Hook removed!");
}
else
{
$this->context->controller->errors[] = $this->l("Module can't remove this hook");
}
}
if (Tools::getValue('updatehook', 'false') != 'false')
{
$this->context->controller->errors[] = $this->l("You can't edit the hook. Please remove it and add new one.");
}
if (Tools::isSubmit('addNewHook'))
{
if (Hook::getIdByName(Tools::getValue('hook_name')))
{
$this->context->controller->errors[] = $this->l("Hook exists in your shop, you can't add second the same hook");
return $this->AddForm() . $this->renderForm();
}
$hook = new Hook();
$hook->name = Tools::getValue('hook_name');
$hook->title = Tools::getValue('hook_title');
$hook->description = Tools::getValue('hook_description');
$hook->position = Tools::getValue('hook_visible');
$hook->live_edit = Tools::getValue('hook_live_edit');
if ($hook->add())
{
$this->context->controller->confirmations[] = $this->l("Hook created properly!");
}
else
{
$this->context->controller->errors[] = $this->l("Module can't add this hook");
}
}
if (Tools::isSubmit('removeblock'))
{
$output .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="" /></div>';
Db::getInstance()->execute('DELETE FROM `' . _DB_PREFIX_ . 'ppb_block` WHERE id=' . Tools::getValue('removeblock') . ' ');
}
return $output . $this->displayForm();
}
public function displayForm()
{
return $this->AddForm() . $this->renderForm();
}
}
?>