Создать наблюдатель наблюдателя в классе в Zen Cart 2.1.0Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Создать наблюдатель наблюдателя в классе в Zen Cart 2.1.0

Сообщение Anonymous »

Я пытаюсь написать класс наблюдения за наблюдателем в моем плагине zen cart in ez-feeds. < /p>
Существует 86 ez_feeds _... Настройки configuration_key в таблице конфигурации, и эти значения коррелируют для значений Field /Column в таблице настроек поставщика, EZFEEDS_Datafeed_Setting. Таблица ezfeeds заключается в том, чтобы помнить, как каждые уникальные настройки поставщиков для каждого из 86 значений конфигурации.
В настоящее время я использую код ниже на моей странице инструмента администратора, Admin/ezfeeds.php, что аналогично конфигурации. Php, но высоко измененные. форма. < /p>
if($cfgKey !== 'EZ_FEEDS_DEFAULT_TASK' && $cfgKey !== 'EZ_FEEDS_DEFAULT_FEED' && EZ_FEEDS_SAVE_DATAFEED_OPTION_SETTINGS === TEXT_YES || $cfgTitle === TITLE_SAVE_DATAFEED_OPTIONS) {
$db->execute("update " . TABLE_EZ_FEEDS_DATAFEED_DEFAULTS . " set `" . $cfgTitle . "` = '" . zen_db_input($configuration_value) . "' where " . TITLE_CHOOSE_DATAFEED . " like '%" . EZ_FEEDS_DEFAULT_FEED . "%' "); $messageStack->add_session(TEXT_DATAFEED_DEFAULT . $cfgTitle . TEXT_EQUALS . zen_db_input($configuration_value), TEXT_SUCCESS);
zen_record_admin_activity(TEXT_CONFIGURATION_CHANGED . $result->fields['configuration_key'] . ': ' . $configuration_value, 'warning');
}
< /code>
Я перевернул PHP -код выше, в функцию и подключил вызов к функции в несколько мест в моем коде, и он работает, но это кажется хакерской ... таким образом, необходимость создать наблюдателя. < /p>
function ezfeeds_update_suppliers_table($cfgKey, $cfgTitle, $configuration_value) {
global $db, $messageStack, $result;

if($cfgKey !== 'EZ_FEEDS_DEFAULT_TASK' && $cfgKey !== 'EZ_FEEDS_DEFAULT_FEED' && EZ_FEEDS_SAVE_DATAFEED_OPTION_SETTINGS === TEXT_YES || $cfgTitle === TITLE_SAVE_DATAFEED_OPTIONS) {
$db->execute("update " . TABLE_EZ_FEEDS_DATAFEED_DEFAULTS . " set `" . $cfgTitle . "` = '" . zen_db_input($configuration_value) . "' where " . TITLE_CHOOSE_DATAFEED . " like '%" . EZ_FEEDS_DEFAULT_FEED . "%' "); $messageStack->add_session(TEXT_DATAFEED_DEFAULT . $cfgTitle . TEXT_EQUALS . zen_db_input($configuration_value), TEXT_SUCCESS);
zen_record_admin_activity(TEXT_CONFIGURATION_CHANGED . $result->fields['configuration_key'] . ': ' . $configuration_value, 'warning');
}
}
< /code>
Вот призыв к функции, разбросанной по моим сценариям: < /p>
ezfeeds_update_suppliers_table($cfgKey, $cfgTitle, $configuration_value);
< /code>
После нескольких дней исследований на форуме поддержки Zen Cart, Google AI и других страницах, похоже, мне нужен наблюдатель, который будет обновлять значения настройки таблицы поставщиков всякий раз, когда изменяются значения таблицы конфигурации ... если моя опция для сохранения установлена ​​на корзина « /p>
Я приходил с этим кодом и вставлен в zen -корзину». zc_plugins/ez-feeds/v1.0.8/admin/incluct/classers/stemervers/auto.ezfeeds.php, но я не могу заставить его работать ... Ошибки журнала, перечисленные ниже код наблюдателя.
/**
* Ezfeeds Observer to update a specific suppliers ezfeeds_datafeeds_default value when the equivalent configuration setting is changed.
* Copyright 2006-2025 Jest Country Enterprises
* Created by mikeel100 2025 Aug 23 Modified in v2.1.0 @
* IN DEVELOPMENT...
*/
class ezfeeds_update_supplier_settings_table_on_configuration_update extends base
{
/**
* @param $callingClass object Reference to the class calling the event.
* @param $eventID string The ID of the event.
*/
function __construct()
{
$this->attach($this, array('NOTIFY_ADMIN_CONFIG_UPDATE'));
}

/**
* Update the ezfeeds_datafeeds_default table when a specific configuration setting is changed.
*
* @param $callingClass object Reference to the class calling the event.
* @param $eventID string The ID of the event.
*/
function update(&$callingClass, $eventID)
{
global $db;

// Check if the specific configuration key we want to monitor was updated.
// Replace 'YOUR_CONFIG_KEY_TO_WATCH' with the actual key, e.g., 'EZFEEDS_FEED_URL'.
if ($callingClass->cfgKey == 'EZ_FEEDS_AUDIBLE_TONE') {
$newValue = $callingClass->cfgValue;

// Log the update for debugging.
zen_mail(STORE_NAME, STORE_OWNER_EMAIL_ADDRESS, 'EZFeeds config update', "Configuration key EZ_FEEDS_AUDIBLE_TONE was changed to: " . $newValue, STORE_OWNER, STORE_OWNER_EMAIL_ADDRESS);

// Perform the database update on the ezfeeds_datafeeds_default table.
// Replace 'ezfeeds_column_to_update' with the correct column name.
$sql = "UPDATE " . DB_PREFIX . "ezfeeds_datafeeds_default
SET 'Option - Audible Tone' = :newValue
WHERE " . TITLE_CHOOSE_DATAFEED . " like '%" . EZ_FEEDS_DEFAULT_FEED . "%' ";
// Add a WHERE clause if necessary to target a specific row.

$sql_data = $db->bind_array('newValue', $newValue, 'string');

$db->Execute($sql, $sql_data);
}
}
}
< /code>
Ошибки журнала ссылка на init_observers.php. Я не внес изменения в этот файл, поэтому я предполагаю, что что-то в коде моего наблюдателя вызывает это, но я не знаю, что? Адрес:
###.##.#.#., Идентификатор языка 1
#0 C: \ myserver \ htdocs \ zc210 \ включает \ init_includes \ init_observers.php (56):
zen_debug_error_handler ()
#1 C: \ myserver \ htdocs \ zc210 \ incluct \ autoload_func.php (31): include_once ('c: \ myserver ...')
#2 c: \ myserver \ htdocs \ zc210 \ my_admin \ incluct \ application_top.php (40): требуется ('c: \ mysiser ...#)
[23-aug-2025 11:47:44 Америка /new_york] запросить URI:
/ZC210/MY_ADMIN/INDEX.PHP? />C:\myserver\htdocs\zc210\includes\init_includes\init_observers.php:56
Stack Trace:
#0 C: \ myserver \ htdocs \ zc210 \ incluct \ autoload_func. C: \ myserver \ htdocs \ zc210 \ my_admin \ incluct \ application_top.php (40): require ('c: \ myserver ...')
#2 c: \ myserver \ htdocs \ zc210 \ zc_plugins \ ez-feeds \ v1.0.8 \ addran \ ezfeeds.ph /> require('c: C: \ myserver \ htdocs \ zc210 \ incluct \ init_includes \ init_observers.php on
line 56. < /p>
< /blockquote>
Среда: < /p>

host: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx XXXXXXXXXXXX ХОРОД ДОМ:
C:/myserver/htdocs/xxxxx/Сервер ОС: Windows nt My Computer 10.0
Build 19045 (Windows 10) AMD64 Сервер Дата: 23.08.2025 11:52:23

Сервер Время. (WIN64)
Openssl/3.1.6 PHP /8.3.21 Версия PHP: 8.3.21 (Zend: 4.3.21) PHP-файл
uploads: при загрузке макс. (xxxxxxxxxxxxxx) Дата базы данных: 23.08.2025 11:52:23 База данных
Размер данных: 6,417 КБ. /> Режим: strict_trans_tables, error_for_division_by_zero,
no_auto_create_user, no_engine_substitution Просмотр базы данных
parmables < /p>
< /blockquote>
может кто -то указывать на меня в правильном направлении?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... cart-2-1-0
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»