Pablo Marcolino Posted November 14, 2015 Share Posted November 14, 2015 por favor me ajudar a corrigir este erro: Warning: Invalid argument fornecido para o foreach () in /home/pbligado/public_html/lojagraffite/wa_ps_1_5_2_0/classes/Hook.php na linha 190 <? php / * * 2007-2012 PrestaShop * * AVISO DE LICENÇA * * Este arquivo de origem está sujeito à Licença Open Software (OSL 3.0) * Que é fornecido com este pacote no LICENSE.txt arquivo. * Também está disponível através da world-wide-web no endereço: * Http://opensource.org/licenses/osl-3.0.php * Se você não recebeu uma cópia da licença e são incapazes de * Obtê-lo através da world-wide-web, por favor envie um e-mail * Até [email protected]~~V para que possamos enviar-lhe uma cópia imediatamente. * * AVISO LEGAL * * Não editar ou adicionar a este arquivo se você deseja atualizar PrestaShop ao mais recente * Versões no futuro. Se você deseja personalizar PrestaShop para o seu * Necessidades consulte http://www.prestashop.com para mais informações. * *author PrestaShop SA <[email protected]> *Copyright 2007-2012 PrestaShop SA *version De lançamento: $ Revision: 7025 $ *license Http://opensource.org/licenses/osl-3.0.php Software Open License (OSL 3.0) * Marca Registrada Internacional e Propriedade de PrestaShop SA * / classe HookCore estende ObjectModel { / ** *var Identificador seqüência de nome de gancho * / nome $ pública; / ** *var Título seqüência Hook (exibido em BO) * / $ title pública; / ** *var Seqüência de descrição de gancho * / $ descrição pública; / ** *var Bool * / $ position pública = false; / ** *var Bool É este gancho utilizável com edição ao vivo? * / $ live_edit pública = false; / ** * Matrizvar Lista de ganchos executados nesta página * / públicas $ executed_hooks estáticos = array (); / ** *see ObjectModel :: $ definição * / $ definição public static = array ( 'table' => 'gancho', 'primário' => 'id_hook', = 'campos'> array ( 'name' => array ('tipo' => self :: TYPE_STRING, 'validar' => 'isHookName', 'required' => true, 'tamanho' => 64), 'title' => array ('tipo' => self :: TYPE_STRING), 'description' => array ('tipo' => self :: TYPE_HTML), 'posição' => array ('tipo' => self :: TYPE_BOOL), 'live_edit' => array ('tipo' => self :: TYPE_BOOL), ), ); / ** *deprecated 1.5.0 * / protegido static $ _hook_modules_cache = null; / ** *deprecated 1.5.0 * / protegido static $ _hook_modules_cache_exec = null; public function add ($ AutoDate = true, $ null_values = false) { Cache :: clean ('hook_idbyname _' $ this-> nome.); pai voltar :: add ($ AutoDate, $ null_values); } / ** * Retorno Lista Hooks * *param Bool $ position *return Matriz Lista Hooks * / getHooks public static function ($ position = false) { Db voltar :: getInstance (_PS_USE_SQL_SLAVE _) -> executa (' SELECT * do `'._DB_PREFIX _.' Hook` h ". ($ position? 'WHERE h.`position` = 1': '') '. ORDER BY `title` ' ); } / ** * ID Retorno gancho de nome * * @ Param string $ nome hook_name gancho *return Int Gancho ID * / getIdByName função pública estático ($ hook_name) { if (! Validar :: isHookName ($ hook_name)) return false; $ cache_id = '_ hook_idbyname' $ hook_name.; if (! Cache :: isStored ($ cache_id)) { $ retro_hook_name = gancho :: getRetroHookName ($ hook_name); Cache :: loja ($ cache_id, Db :: getInstance () -> getValue (' Selecione `id_hook` Do `'._DB_PREFIX _.' Hook` ONDE `name` = \ '.' Psql ($ hook_name). '\' OU `name` = \ '.' Psql ($ retro_hook_name). '\' ')); } retornar Cache :: recuperar ($ cache_id); } / ** * Lista de alias de gancho Obter * *since 1.5.0 * Arrayreturn * / public static function getHookAliasList () { $ cache_id = ''; hook_alias if (! Cache :: isStored ($ cache_id)) { $ hook_alias_list = Db :: getInstance () -> executa ("SELECT * FROM` '._DB_PREFIX _' hook_alias`. '); hook_alias $ = array (); if ($ hook_alias_list) foreach ($ hook_alias_list quanto $ ha) $ hook_alias [strtolower ($ ha ['alias'])] = $ ha ['name']; Cache :: loja ($ cache_id, $ hook_alias); } retornar Cache :: recuperar ($ cache_id); } / ** * Retorno nome gancho retrocompatible * *since 1.5.0 * @ Param string $ nome hook_name gancho *return Int Gancho ID * / getRetroHookName função pública estático ($ hook_name) { $ alias_list = gancho :: getHookAliasList (); if (isset ($ alias_list [strtolower ($ hook_name)])) return $ alias_list [strtolower ($ hook_name)]; $ retro_hook_name = array_search ($ hook_name, $ alias_list); if ($ retro_hook_name === false) Retorna ''; return $ retro_hook_name; } / ** * Lista de todos os ganchos registrados com módulos Obter * *since 1.5.0 * Arrayreturn * / public static function getHookModuleList () { $ cache_id = 'hook_module_list'; if (! Cache :: isStored ($ cache_id)) { $ results = Db :: getInstance (_PS_USE_SQL_SLAVE _) -> executa (' H.id_hook SELECT, h.name como h_name, título, descrição, Posição H, live_edit, hm.position como hm_position, m.id_module, m.name, Ativo Do `'._DB_PREFIX _.' Hook` h INNER JOIN `'._DB_PREFIX _.' Hook_module` hm ON (h.id_hook = hm.id_hook E hm.id_shop = '(int) Context :: getContext (.) -> Shop-> id.) INNER JOIN `'._DB_PREFIX _.' Module` como m ON (m.id_module = hm.id_module) ORDER BY hm.position '); $ list = array (); foreach ($ resultados como $ result) { if (! isset ($ list [$ result ['id_hook']])) $ list [$ result ['id_hook']] = array (); $ list [$ result [] 'id_hook'] [$ result ['id_module']] = array ( 'id_hook' => $ result ['id_hook'], 'title' => $ result ['title'], 'description' => $ result ['description'], 'hm.position' => $ result ['posição'], 'live_edit' => $ result ['live_edit'], 'm.position' => $ result ['hm_position'], 'id_module' => $ result ['id_module'], 'name' => $ result ['name'], 'ativo' => $ result ['ativo'], ); } Cache :: loja ($ cache_id, $ lista); //todo Remover esta em 1,6, nós mantê-lo em 1,5 por retrocompatibility Gancho :: $ _ $ hook_modules_cache = lista; } retornar Cache :: recuperar ($ cache_id); } / ** * Retorno Lista Hooks * *since 1.5.0 * @ Param int $ id_hook * @ Param int $ id_module * Lista Módulos de matrizreturn * / public static function getModulesFromHook ($ id_hook, $ id_module = null) { $ hm_list = gancho :: getHookModuleList (); $ module_list = (isset ($ hm_list [$ id_hook]))? $ hm_list [$ id_hook]: array (); if ($ id_module) retorno (isset ($ module_list [$ id_module]))? array ($ module_list [$ id_module]): array (); return $ module_list; } / ** * Lista de módulos que podem ser executadas por gancho Obter * *since 1.5.0 *param String $ hook_name lista de módulos para este gancho Obter se dado * Arrayreturn * / getHookModuleExecList função pública estático ($ hook_name = null) { $ context = Context :: getContext (); $ cache_id = 'hook_module_exec_list' ((isset ($ context> cliente)) '_' $ context> cliente-> id:?. '.'); if (! Cache :: isStored ($ cache_id) || $ hook_name == 'displayPayment') { $ frontend = true; $ groups = array (); if (isset ($ context> empregado)) { shop_list $ = array ((int) $ context> shop-> id); $ frontend = false; } outro { // Obter lojas e grupos lista $ shop_list = Loja :: getContextListShopID (); if (isset ($ context> cliente) && $ context> cliente-> isLogged ()) $ groups = $ context> cliente-> getgroups (); elseif (isset ($ context> cliente) && $ context> cliente-> isLogged (true)) $ groups = array ((int) Configuração :: get ('PS_GUEST_GROUP')); outro $ groups = array ((int) Configuração :: get ('PS_UNIDENTIFIED_GROUP')); } // Pedido de SQL $ sql = new DBQuery (); $ SQL-> selecione ('h.`name` como gancho, m.`id_module`, h.`id_hook`, m.`name` como módulo, h.`live_edit`'); $ SQL-> a partir de ('module', 'm'); $ SQL-> innerJoin ('hook_module', 'hm', 'hm.`id_module` = m.`id_module`'); $ SQL-> innerJoin ('gancho', 'h', 'hm.`id_hook` = h.`id_hook`'); $ SQL-> onde ('(SELECT COUNT (*) FROM' ._DB_PREFIX _. 'module_shop ms ONDE ms.id_module = m.id_module E ms.id_shop IN (' .implode (',', $ shop_list). ')) = '.count ($ shop_list)); if ($ hook_name! = 'displayPayment') $ SQL-> onde ('h.name = "displayPayment"!'); // Para os módulos de pagamento, verificamos que eles estão disponíveis no país contextual elseif ($ frontend) { if (Validar :: isLoadedObject ($ context> país)) $ SQL-> onde ('(h.name = "displayPayment" E (SELECT id_country FROM' ._DB_PREFIX _. 'module_country mc ONDE mc.id_module = m.id_module E id_country ='. (int) $ context> país-> id 'LIMIT 1) =' (int) $ context> país-> id ')')...; if (Validar :: isLoadedObject ($ context> moeda)) $ SQL-> onde ('(h.name = "displayPayment" E (SELECT id_currency FROM' ._DB_PREFIX _. 'module_currency mcr ONDE mcr.id_module = m.id_module E id_currency IN ('. (int) $ context> cambiais > ', -2) LIMIT 1) IN (' (int) $ context> cambiais> id id ', -2))')...; } if (Validar :: isLoadedObject ($ context> shop)) $ SQL-> onde ('hm.id_shop =' (int) $ context> shop-> id.); if ($ frontend) { $ SQL-> leftJoin ('module_group "," mg "," mg.`id_module` = m.`id_module`'); $ SQL-> onde ('mg.`id_group` IN (' .implode (',', $ grupos) ').'); $ SQL-> groupBy ('hm.id_hook, hm.id_module'); } SQL-$> orderBy ('hm.`position`'); // Armazena resultados por nome de gancho $ results = Db :: getInstance (_PS_USE_SQL_SLAVE _) -> executa ($ sql); $ list = array (); // Pega todos módulo de pagamento disponíveis payment_modules $ = array (); if (isset ($ context> shop-> id)) foreach (Módulo :: getPaymentModules () como $ módulo) $ [] = $ módulo ['name'] payment_modules; if ($ resultados) foreach ($ resultados como $ row) { if ($ row ['gancho'] == 'displayPayment' &&! in_array ($ row ['module'], $ payment_modules)) continuar; $ row ['gancho'] = strtolower ($ row ['gancho']); if (! isset ($ list [$ linha ['gancho']])) $ list [$ linha ['gancho']] = array (); $ list [$ linha ['gancho']] [] = array ( 'id_hook' => $ row ['id_hook'], 'module' => $ row ['module'], 'id_module' => $ row ['id_module'], 'live_edit' => $ row ['live_edit'], ); } if ($ hook_name! = 'displayPayment') { Cache :: loja ($ cache_id, $ lista); //todo Remover esta em 1,6, nós mantê-lo em 1,5 por retrocompatibility self :: $ _ $ hook_modules_cache_exec = lista; } } outro $ list = Cache :: recuperar ($ cache_id); // Se hook_name é dado, apenas lista de módulos para obter este gancho if ($ hook_name) { $ retro_hook_name = gancho :: getRetroHookName ($ hook_name); $ hook_name = strtolower ($ hook_name); $ return = array (); if (isset ($ list [$ hook_name])) $ return = $ list [$ hook_name]; if (isset ($ list [$ retro_hook_name])) $ return = array_merge ($ retorno, $ list [$ retro_hook_name]); if (count ($ regresso)> 0) return $ regresso; return false; } outro return $ lista; } / ** * Executar módulos de gancho especificado * * @ Param string $ hook_name gancho Nome *param Array $ hook_args Parâmetros para as funções * @ Param int $ id_module Executar gancho para este módulo só * Saída de módulos de cordasreturn * / função pública exec estático ($ hook_name, hook_args $ = array (), $ id_module = null) { // Verifique argumentos validade if (($ id_module &&! is_numeric ($ id_module)) ||! Validar :: isHookName ($ hook_name)) throw new PrestaShopException ('id_module ou hook_name inválido'); // Se não houver módulos associados a hook_name ou nome gancho recompatible, paramos a função if (! $ module_list = Gancho :: getHookModuleExecList ($ hook_name)) Retorna ''; // Verifique se existe gancho if (! $ id_hook = Gancho :: getIdByName ($ hook_name)) return false; // Lista loja de ganchos executados nesta página Gancho :: $ executed_hooks [$ id_hook] = $ hook_name; $ live_edit = false; $ context = Context :: getContext (); if (isset! ($ hook_args ['cookie']) ||! $ hook_args ['cookie']) $ hook_args ['cookie'] = $ context> biscoito; if (isset! ($ hook_args ['carrinho']) ||! $ hook_args ['carrinho']) $ hook_args ['carrinho'] = $ context> carrinho; $ retro_hook_name = gancho :: getRetroHookName ($ hook_name); // Olha para a lista de módulos Altern $ = 0; $ output = ''; foreach ($ module_list quanto $ array) { // Verifique os erros if ($ id_module && $ id_module! = $ array ['id_module']) continuar; if (! ($ moduleInstance = Module :: getInstanceByName ($ array ['module']))) continuar; // Verifique as permissões $ exceções = $ moduleInstance-> getExceptions ($ array ['id_hook']); if (in_array (Dispatcher :: getInstance () -> getController (), $ exceções)) continuar; if (Validar :: isLoadedObject ($ context> empregado) &&! $ moduleInstance-> GetPermission ('view', $ context> empregado)) continuar; // Verifique que / se é que pode ser chamado método $ hook_callable = is_callable (array ($ moduleInstance, 'gancho' $ hook_name).); $ hook_retro_callable = is_callable (array ($ moduleInstance, 'gancho' $ retro_hook_name).); if (($ hook_callable || $ hook_retro_callable) && Module :: preCall ($ moduleInstance-> nome)) { $ hook_args ['altern'] = ++ $ altern; // Método gancho Chamada if ($ hook_callable) $ display = $ moduleInstance -> {. 'gancho' $ hook_name} ($ hook_args); else if ($ hook_retro_callable) $ display = $ moduleInstance -> {. 'gancho' $ retro_hook_name} ($ hook_args); // Editar vivo if ($ array ['live_edit'] && Ferramentas :: isSubmit ('live_edit') && Ferramentas :: getValue ('ad') && Ferramentas :: getValue ('liveToken') == Tools::getAdminToken('AdminModulesPositions'.(int)Tab::getIdFromClassName('AdminModulesPositions').(int)Tools::getValue('id_employee'))) { $ live_edit = true; $ output = self :: wrapLiveEdit ($ visor, $ moduleInstance, $ array ['id_hook'].); } outro . $ output = $ visor; } } // Retorna html cadeia retorno ($ live_edit '<script type = "text / javascript"> hooks_list.push (\' '$ hook_name' \ ');?.. </ script> <div id = class = estilo "dndHook" "'. $ hook_name.'" = "min-height: 50px"> ':' ') $ output ($ live_edit' </ div> ':..?' ') ; } wrapLiveEdit função pública estático ($ visor, $ moduleInstance, id_hook $) { retorno '<script type = "text / javascript"> modules_list.push (\'. 'Ferramentas :: safeOutput ($ moduleInstance-> nome)' \ '.); </ script> <. div id = "_ gancho '. (int) $ id_hook módulo .'_ _' (int) $ moduleInstance-> id .'_ moduleName _ 'str_replace (.' _ ',' - ', Ferramentas :: safeOutput ($ moduleInstance-> nome)).'" class = estilo "dndModule" = "border: 1px pontilhada vermelha;". (!? strlen ($ display) 'height: 50px;': '') '. "> <span style = "font-family: Georgia; font-size: 13px; font-style: italic;"> <img style = "padding-right: 5px;" src = "" ._ MODULE_DIR_.Tools::safeOutput($moduleInstance->name). '/ logo.gif ">' <Span style = .Tools :: safeOutput ($ moduleInstance-> displayName) '. "Float: right"> <a href="#" id="'.(int)$id_hook.'_'.(int)$moduleInstance-> id '. "class =" moveModule "> <img src = "" ._ PS_ADMIN_IMG _. 'arrow_out.png "> </a> <a href="#" id="'.(int)$id_hook.'_'.(int)$moduleInstance-> id '. "class =" unregisterHook "> <img src = "" ._ PS_ADMIN_IMG _. 'Delete.gif "> </ span> </a> </ span> '.. $ display' </ div> '; } / ** *deprecated 1.5.0 * / public static function updateOrderStatus ($ newOrderStatusId, id_order $) { Ferramentas :: displayAsDeprecated (); $ order = nova Ordem ((int) ($ id_order)); $ newOS = new OrderState ((int) ($ newOrderStatusId), $ ordem-> id_lang); $ regresso = ((int) ($ newOS-> id) == Configuração :: get ('PS_OS_PAYMENT'))? Gancho :: exec ('paymentConfirm', array ('id_order' => (int) ($ ordem-> id))): true; $ return = Gancho :: exec ('updateOrderStatus', array ('newOrderStatus' => $ newOS, 'id_order' => (int) ($ ordem-> id))) && $ regresso; return $ regresso; } / ** *deprecated 1.5.0 * / public static function postUpdateOrderStatus ($ newOrderStatusId, id_order $) { Ferramentas :: displayAsDeprecated (); $ order = nova Ordem ((int) ($ id_order)); $ newOS = new OrderState ((int) ($ newOrderStatusId), $ ordem-> id_lang); $ return = Gancho :: exec ('postUpdateOrderStatus', array ('newOrderStatus' => $ newOS, 'id_order' => (int) ($ ordem-> id))); return $ regresso; } / ** *deprecated 1.5.0 * / orderConfirmation função pública estático ($ id_order) { Ferramentas :: displayAsDeprecated (); if (Validar :: isUnsignedId ($ id_order)) { $ params = array (); $ order = nova Ordem ((int) $ id_order); $ moeda = new Moeda ((int) $ ordem-> id_currency); if (Validar :: isLoadedObject ($ ordem)) { $ = new carrinho de Compras ((int) $ ordem-> id_cart); $ params ['total_to_pay'] = $ carrinho-> getOrderTotal (); $ params ['moeda'] = $ cambiais> sinal; $ params ['objOrder'] = $ ordem; $ params ['currencyObj'] = $ moeda; Gancho retorno :: exec ('orderConfirmation', $ params); } } return false; } / ** *deprecated 1.5.0 * / paymentReturn função pública estático ($ id_order, id_module $) { Ferramentas :: displayAsDeprecated (); if (Validar :: isUnsignedId ($ id_order) && Validar :: isUnsignedId ($ id_module)) { $ params = array (); $ order = nova Ordem ((int) ($ id_order)); $ moeda = new Moeda ((int) ($ ordem-> id_currency)); if (Validar :: isLoadedObject ($ ordem)) { $ = new carrinho de Compras ((int) $ ordem-> id_cart); $ params ['total_to_pay'] = $ carrinho-> getOrderTotal (); $ params ['moeda'] = $ cambiais> sinal; $ params ['objOrder'] = $ ordem; $ params ['currencyObj'] = $ moeda; Gancho retorno :: exec ('paymentReturn', $ params, (int) ($ id_module)); } } return false; } / ** *deprecated 1.5.0 * / PDFInvoice função pública estático ($ pdf, id_order $) { Ferramentas :: displayAsDeprecated (); if (! is_object ($ pdf) ||! Validar :: isUnsignedId ($ id_order)) return false; Gancho retorno :: exec ('PDFInvoice', array ('pdf' => $ pdf, 'id_order' => $ id_order)); } / ** *deprecated 1.5.0 * / backBeforePayment função pública estático ($ módulo) { Ferramentas :: displayAsDeprecated (); $ params ['module'] = strval ($ módulo); if (! $ params ['module']) return false; Gancho retorno :: exec ('backBeforePayment', $ params); } / ** *deprecated 1.5.0 * / updateCarrier função pública estático ($ id_carrier, $ transportador) { Ferramentas :: displayAsDeprecated (); if (! Validar :: isUnsignedId ($ id_carrier) ||! is_object ($ transportador)) return false; Gancho retorno :: exec ('updateCarrier', array ('id_carrier' => $ id_carrier, "portador" => $ transportador)); } / ** * Cache de módulos pré-carga de gancho * *deprecated 1.5.0 uso Gancho :: getHookModuleList () em vez *return Boolean preload_needed * / public static function preloadHookModulesCache () { Ferramentas :: displayAsDeprecated (); if (! is_null (self :: $ _ hook_modules_cache)) return false; self :: $ _ hook_modules_cache = Gancho :: getHookModuleList (); return true; } / ** * ID Retorno gancho de nome * *param String $ nome gancho hookName *return Inteiro Gancho ID * *deprecated Desde 1.5.0 uso Gancho :: getIdByName () em vez * / public function get estático ($ hookName) { Ferramentas :: displayAsDeprecated (); if (! Validar :: isHookName ($ hookName)) morrer (Ferramentas :: DisplayError ()); $ result = Db :: getInstance () -> getRow (' SELECIONE `id_hook`,` name` Do `'._DB_PREFIX _.' Hook` ONDE `name` = \ '' psql ($ hookName).. '\' '); retorno ($ result $ result ['id_hook']: false); } / ** * Chamado quando a quantidade de um produto é atualizado. * * @ Param Produto * @ Param Ordem * / NewOrder public static function ($ carrinho, $ fim, $ cliente, $ moeda, $ OrderStatus) { Ferramentas :: displayAsDeprecated (); Gancho retorno :: exec ('NewOrder', array ( 'carrinho' => $ carrinho, 'ordem' => $ pedido, => $ cliente 'cliente', 'moeda' => $ moeda, 'OrderStatus' => $ OrderStatus)); } / ** *deprecated 1.5.0 * / updateQuantity public static function ($ produto, $ order = null) { Ferramentas :: displayAsDeprecated (); Gancho retorno :: exec ('updateQuantity', array (=> $ product 'produto', 'ordem' => $ ordem)); } / ** *deprecated 1.5.0 * / productFooter função pública estático ($ produto, categoria $) { Ferramentas :: displayAsDeprecated (); Gancho retorno :: exec ('productFooter', array (=> $ product 'produto', 'categoria' => $ category)); } / ** *deprecated 1.5.0 * / productOutOfStock função pública estático ($ product) { Ferramentas :: displayAsDeprecated (); Gancho retorno :: exec ('productOutOfStock', array (=> $ product 'produto')); } / ** *deprecated 1.5.0 * / addProduct função pública estático ($ product) { Ferramentas :: displayAsDeprecated (); Gancho retorno :: exec ('addProduct', array (=> $ product 'produto')); } / ** *deprecated 1.5.0 * / UpdateProduct função pública estático ($ product) { Ferramentas :: displayAsDeprecated (); Gancho retorno :: exec ('UpdateProduct', array (=> $ product 'produto')); } / ** *deprecated 1.5.0 * / deleteProduct função pública estático ($ product) { Ferramentas :: displayAsDeprecated (); Gancho retorno :: exec ('deleteProduct', array (=> $ product 'produto')); } / ** *deprecated 1.5.0 * / public static function updateProductAttribute ($ id_product_attribute) { Ferramentas :: displayAsDeprecated (); Gancho retorno :: exec ('updateProductAttribute', array ('id_product_attribute' => $ id_product_attribute)); } } Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now