-
Постов
205 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Загрузки
База знаний IPS Community Suite 4
База знаний IP.Board 3.x
Форумы
События
Магазин
Совместные покупки
Сообщения, опубликованные Lafko
-
-
-
В 21.04.2018 в 01:11, CRAZy_Str сказал:
Unitpay модуля нету случаем? Если нет то цена вопроса?
+1 куплю
-
7 минут назад, siv1987 сказал:
Найти в шаблоне и убрать, не?
Так и сделал, осталось найти email отвечающий за продление
Вопрос не по теме но может кто-то знает как распарсить json в переменные?
-
Подскажите как сломать счета продления? Чтобы их нельзя было продлевать даже если доступна кнопка продления.
Дело в том что IPS не генерирует лицензионный ключ если не включена функция продления счета
Дело в том что у меня на форуме при покупке данный ключ используется для доступа к программе и если пользователь случайно оплатит счет продления то новый ключ ему не придет. Новый ключ приходит только при новой покупке. Я думал что поможет указать счет продления через пару лет, но кривой IPS формирует его сразуМне надо убрать эту кнопку
-
В 27.01.2019 в 15:31, Daniil145 сказал:
для 4.4 есть возможность достать?
-
7 минут назад, MegaGameMode сказал:
Тоже интересует
-
4 часа назад, zxcoikio сказал:
кинь лучше робокассу))
У меня старая и нету .xml есть вариант просто файлы скинуть но я хз какие ещё sql запросы нужны
-
Если у кого-то из способов оплаты пропали методы оплаты то вам надо в файл по пути /applications/nexus/sources/Gateway/Gateway.php добавить в функцию gateways() ваш метод оплаты. Пример ниже.
public static function gateways() { $return = array( 'Stripe' => 'IPS\nexus\Gateway\Stripe', 'Braintree' => 'IPS\nexus\Gateway\Braintree', 'PayPal' => 'IPS\nexus\Gateway\PayPal', 'AuthorizeNet' => 'IPS\nexus\Gateway\AuthorizeNet', 'TwoCheckout' => 'IPS\nexus\Gateway\TwoCheckout', 'Manual' => 'IPS\nexus\Gateway\Manual', 'Robokassa' => 'IPS\nexus\Gateway\Robokassa', 'Payeer' => 'IPS\nexus\Gateway\Payeer', ); if ( \IPS\NEXUS_TEST_GATEWAYS ) { $return['Test'] = 'IPS\nexus\Gateway\Test'; } return $return; }
-
2 часа назад, Lafko сказал:
У меня слдетели модули оплаты после обновления до 4.4.1 подскажите как восстановить?
Или может быть у кого-то есть
https://invisioncommunity.com/files/file/7658-robokassa-payment-gateway/ ?Посмотрел изменения в 4.4.1
Commerce
-
Removed Braintree option for new payment gateways.
Что это значит?
-
Removed Braintree option for new payment gateways.
-
У меня слдетели модули оплаты после обновления до 4.4.1 подскажите как восстановить?
Или может быть у кого-то есть
https://invisioncommunity.com/files/file/7658-robokassa-payment-gateway/ ? -
8 минут назад, WaNted сказал:
В таблице nexus_purchases найдите связанную покупку с ключом и посмотрите есть ли там значение ps_expire отличное от 0.
Упс. Вы были правы. Теперь всё работает. Большое спасибо!
-
Только что, WaNted сказал:
Значение expire в самой строке хоть есть? Потому что в противном случае вернется NULL.
В какой строке?
-
3 минуты назад, WaNted сказал:
$this->purchase->expire возвращает объект \IPS\DateTime. Попробуйте использовать $this->purchase->expire->getTimestamp().
К сожалению не работает
если expire получает значение после метода save то скорее всего надо в другой метод вставлять код, только я вот без понятия в какой
-
1 час назад, WaNted сказал:
Вы можете нормально описать что в итоге Вам нужно? Зачем Вы трогаете запрос который относится к \IPS\nexus\Purchase::tree()? Покажите весь Ваш код (именно Ваш, а не весь класс целиком). Если все Ваши изменения находятся в классе IPS\nexus\Purchase\LicenseKey, то не нужно посылать никакие запросы, информация о покупке текущего ключа находится в переменной $this->purchase. Нужное Вам значение (ps_expire - ps_start) можно получить так: $this->purchase->expire - $this->purchase->start.
Вот что мне надо "Из таблицы _nexus_purchases взять значение ps_expire - ps_start где в таблице xxxxxxx_nexus_licensekeys.lkey_purchase как xxxxxxx_nexus_purchases.ps_id"
Выше я привел пример нужного мне запроса т.к. я не знаю как его составить.
$this->purchase->expire - $this->purchase->start - не работают, а точнее в них пустые значения если я пытаюсь их использовать из метода saveЯ не понимаю какой именно код вы хотите увидеть.
public function save() { if ( !$this->key ) { do { $this->key = $this->generate(); } while ( \count( \IPS\Db::i()->select( '*', 'nexus_licensekeys', array( 'lkey_key=?', $this->key ) ) ) ); /* create external connect */ \IPS\Db::i( 'xxxxxxx_nexus_purchases', array( 'sql_host' => '***', 'sql_user' => '***', 'sql_pass' => '***', 'sql_database' => '***', ) ); $purchase = $this->get_purchase(); \IPS\Db::i('_nexus_purchases')->insert('_nexus_purchases', array( 'ps_k' => $this->key, 'ps_a' => '1', 'Res' => $purchase->member->member_id, 'ps_time_k' => $this->purchase->expire, /* вот сюда не передаеться нужное мне значение */ )); } return parent::save(); }
-
Помогите пожалуйста переделать запрос так чтобы он брал 2 нужных мне значения из другой таблицы делал вычитание и присваивал результат в переменную
\IPS\Db::i()->select( '*', 'nexus_purchases', $where, 'ps_start DESC', $limit ), 'IPS\nexus\Purchase' ) as $purchase )
Из таблицы _nexus_purchases взять значение ps_expire - ps_start где в таблице xxxxxxx_nexus_licensekeys.lkey_purchase как xxxxxxx_nexus_purchases.ps_id
-
10 часов назад, siv1987 сказал:
Да не в коде, а в переменной. Где вы хотите получить, там и смотрите.
$purchase->expire
Если в том же месте где находится код для вставки в другую бд, то скорее всего так
$purchase = $this->get_purchase(); $purchase->expire;
9 часов назад, WaNted сказал:Если так же в методе save(), то $this->purchase->expire
Нет, не работает
-
4 минуты назад, siv1987 сказал:
В $purchase что? Смотрели?
public function set_purchase( \IPS\nexus\Purchase $purchase ) { $this->_data['purchase'] = $purchase->id; $this->_data['member'] = $purchase->member->member_id; }
-
15 минут назад, siv1987 сказал:
В таблицу?
\IPS\Db::i('remote_database_name')->insert('your_table', array( 'license_key' => $this->key, 'field2' => 'value2', 'field3' => 'value2', ));
И второй вопрос, как мне получить из другой таблицы форума количество оставшихся дней подписки?
SELECT * FROM `_nexus_purchases`.`ps_expire` WHERE `ps_member` LIKE '$purchase->member->member_id'
Только вот $purchase->member->member_id - не получает id пользователя
-
siv1987 И ещё 2 вопроса.
При переносе ключа мне в это-же поле ещё надо добавить данные подскажи пожалуйста как это сделать.
Я думал вот так
\IPS\Db::i('remote_database_name')->insert('your_table', array('license_key' => $this->key, 'ban' => 1));
-
3 минуты назад, siv1987 сказал:
Нет.
if ( !$this->key ) { do { $this->key = $this->generate(); } while ( \count( \IPS\Db::i()->select( '*', 'nexus_licensekeys', array( 'lkey_key=?', $this->key ) ) ) ); /* create external connect */ \IPS\Db::i( 'remote_database_name', array( 'sql_host' => 'host', 'sql_user' => 'user', 'sql_pass' => 'pass', 'sql_database' => 'database', ) ); \IPS\Db::i('remote_database_name')->insert('your_table', array('license_key' => $this->key)); }
Великолепно, работает. Огромное спасибо!
-
2 минуты назад, siv1987 сказал:
SHOW TABLES FROM your_databases
Пишите сами не копируйте запросы, чтото форум ломает при копирование текст
SHOW DATABASES
Нету
-
3 минуты назад, siv1987 сказал:
Есть ли доступ у форума к базе данных в которую мне надо внести ключ? Нет нету. Соединение надо создать заново
Вот так работать будет?
public function save() { \IPS\Db::i( 'remote_database_name', array( 'sql_host' => 'host', 'sql_user' => 'user', 'sql_pass' => 'pass', 'sql_database' => 'database', ) ); if ( !$this->key ) { do { $this->key = $this->generate(); } while ( \count( \IPS\Db::i()->select( '*', 'nexus_licensekeys', array( 'lkey_key=?', $this->key ) ) ) ); while ( \count( \IPS\Db::i('remote_database_name')->insert('you_table', array('license_key' => $this->key) ) ) ); } return parent::save(); }
-
2 минуты назад, siv1987 сказал:
mysql пользователь который использует форум имеет доступ к этой базе данных? Если да, то запрос можно выполнить от текущего подключения.
Если нет то http://ipbskins.ru/forum/topic15779.html#entry105651
/* create external connect */ \IPS\Db::i( 'remote_database_name', array( 'sql_host' => 'host', 'sql_user' => 'user', 'sql_pass' => 'pass', 'sql_database' => 'database', ) ); \IPS\Db::i('remote_database_name')->insert('you_table', array('license_key' => $this->key));
Не совсем понял вопрос про пользователя который имеет доступ но я думаю что нет? Мне надо создать новое подключение.
А куда код вставлять?
Вот весь код файла LicenseKey.php если я всё плавильно понял в конце функция save() отвечает за кол-во ключей которое купили
<?php /** * @brief License Key Model * @author <a href='https://www.invisioncommunity.com'>Invision Power Services, Inc.</a> * @copyright (c) Invision Power Services, Inc. * @license https://www.invisioncommunity.com/legal/standards/ * @package Invision Community * @subpackage Nexus * @since 30 Apr 2014 */ namespace IPS\nexus\Purchase; /* To prevent PHP errors (extending class does not exist) revealing path */ if ( !\defined( '\IPS\SUITE_UNIQUE_KEY' ) ) { header( ( isset( $_SERVER['SERVER_PROTOCOL'] ) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0' ) . ' 403 Forbidden' ); exit; } /** * License Key Model */ abstract class _LicenseKey extends \IPS\Patterns\ActiveRecord { /** * License Key Types * * @return array */ public static function licenseKeyTypes() { return array( 'Standard' => 'IPS\nexus\Purchase\LicenseKey\Standard', 'Mdfive' => 'IPS\nexus\Purchase\LicenseKey\Mdfive', ); } /** * @brief Multiton Store */ protected static $multitons; /** * @brief Database Table */ public static $databaseTable = 'nexus_licensekeys'; /** * @brief Database Prefix */ public static $databasePrefix = 'lkey_'; /** * @brief [ActiveRecord] Database ID Column */ public static $databaseColumnId = 'key'; /** * @brief [ActiveRecord] Database ID Fields */ protected static $databaseIdFields = array( 'lkey_purchase' ); /** * @brief [ActiveRecord] Multiton Map */ protected static $multitonMap = array(); /** * Construct ActiveRecord from database row * * @param array $data Row from database table * @param bool $updateMultitonStoreIfExists Replace current object in multiton store if it already exists there? * @return static */ public static function constructFromData( $data, $updateMultitonStoreIfExists = TRUE ) { $classname = 'IPS\nexus\Purchase\LicenseKey\\' . mb_ucfirst( $data['lkey_type'] ); /* Initiate an object */ $obj = new $classname; $obj->_new = FALSE; /* Import data */ foreach ( $data as $k => $v ) { if( static::$databasePrefix AND mb_strpos( $k, static::$databasePrefix ) === 0 ) { $k = \substr( $k, \strlen( static::$databasePrefix ) ); } $obj->_data[ $k ] = $v; } $obj->changed = array(); /* Init */ if ( method_exists( $obj, 'init' ) ) { $obj->init(); } /* Return */ return $obj; } /** * Set Default Values * * @return void */ public function setDefaultValues() { $exploded = explode( '\\', \get_class( $this ) ); $this->type = mb_strtolower( array_pop( $exploded ) ); $this->active = TRUE; $this->uses = 0; $this->activate_data = array(); $this->generated = new \IPS\DateTime; } /** * Set purchase * * @param \IPS\nexus\Purchase $purchase The purchase * @return void */ public function set_purchase( \IPS\nexus\Purchase $purchase ) { $this->_data['purchase'] = $purchase->id; $this->_data['member'] = $purchase->member->member_id; } /** * Set purchase * * @return \IPS\nexus\Purchase */ public function get_purchase() { return \IPS\nexus\Purchase::load( $this->_data['purchase'] ); } /** * Set activate data * * @param array $data The data * @return void */ public function set_activate_data( array $data ) { $this->_data['activate_data'] = json_encode( $data ); } /** * Set activate data * * @return \IPS\DateTime */ public function get_activate_data() { return json_decode( $this->_data['activate_data'], TRUE ); } /** * Set generated time * * @param \IPS\DateTime $generated Generated time * @return void */ public function set_generated( \IPS\DateTime $generated ) { $this->_data['generated'] = $generated->getTimestamp(); } /** * Set generated time * * @return \IPS\DateTime */ public function get_generated() { return \IPS\DateTime::ts( $this->_data['generated'] ); } /** * Save Changed Columns * * @return void */ public function save() { if ( !$this->key ) { do { $this->key = $this->generate(); } while ( \count( \IPS\Db::i()->select( '*', 'nexus_licensekeys', array( 'lkey_key=?', $this->key ) ) ) ); } return parent::save(); } }
-
1 час назад, siv1987 сказал:
А чем таблица форума не устраивает? Можно создать mysql триггер таблицы при inserte чтобы данные копировались в другую таблицы.
wanted, достаточно будет в конце условия добавить
\IPS\Db::i()->insert( 'your_table', array( 'license_key' => $this->key ) );
Только насколько я понял ТС нужно вставить еще и в другую бд. Тут либо создать другое подключение, либо если у mysql пользователя есть доступ к этой бд, использовать нативный метод \IPS\Db::i()->query с указанием таблицы другой базы данных INSERT INTO other_db.your_table
Совершенно верно, мне надо скопировать ключ в другую БД
1 час назад, siv1987 сказал:А чем таблица форума не устраивает? Можно создать mysql триггер таблицы при inserte чтобы данные копировались в другую таблицы.
wanted, достаточно будет в конце условия добавить
\IPS\Db::i()->insert( 'your_table', array( 'license_key' => $this->key ) );
Только насколько я понял ТС нужно вставить еще и в другую бд. Тут либо создать другое подключение, либо если у mysql пользователя есть доступ к этой бд, использовать нативный метод \IPS\Db::i()->query с указанием таблицы другой базы данных INSERT INTO other_db.your_table
Очень напрягает что на этом форуме нельзя редактировать свой текст.
Дело в том что в том php я не могу почему то создать новое подключение
использую$mysqli_key = new mysqli("****", "****", "****", "****");
1 час назад, siv1987 сказал:А чем таблица форума не устраивает? Можно создать mysql триггер таблицы при inserte чтобы данные копировались в другую таблицы.
wanted, достаточно будет в конце условия добавить
\IPS\Db::i()->insert( 'your_table', array( 'license_key' => $this->key ) );
Только насколько я понял ТС нужно вставить еще и в другую бд. Тут либо создать другое подключение, либо если у mysql пользователя есть доступ к этой бд, использовать нативный метод \IPS\Db::i()->query с указанием таблицы другой базы данных INSERT INTO other_db.your_table
Может быть ты в курсе где искать "использовать нативный метод \IPS\Db::i()->query с указанием таблицы другой базы данных INSERT INTO other_db.your_table"
Не отправляются сообщения
в Техническая поддержка Invision Community
Опубликовано
Что значит не актуальная? Я создал тему у себя на форуме, и пытаюсь оставить сообщение в этой же теме, но вот такое сообщение получаю, но в тоже время другой пользователь может оставить сообщение без этой ошибки. Подозреваю что это связано с объединением двух сообщений в один пост. Та же ошибка была после того как второй администратор попытался отредактировать моё сообщение. Я в разных местах получаю похожую ошибку, например в виджете когда пытаюсь добавить рекомендуемый продукт. Это началаось именно с 4.4.1 версии в 4.4.0 такого не было...