Перейти к содержанию

Lafko

Пользователи
  • Постов

    205
  • Зарегистрирован

  • Посещение

Весь контент Lafko

  1. Что значит не актуальная? Я создал тему у себя на форуме, и пытаюсь оставить сообщение в этой же теме, но вот такое сообщение получаю, но в тоже время другой пользователь может оставить сообщение без этой ошибки. Подозреваю что это связано с объединением двух сообщений в один пост. Та же ошибка была после того как второй администратор попытался отредактировать моё сообщение. Я в разных местах получаю похожую ошибку, например в виджете когда пытаюсь добавить рекомендуемый продукт. Это началаось именно с 4.4.1 версии в 4.4.0 такого не было...
  2. После обновления до версии 4.4.1 не везде можно отправлять сообщения
  3. Так и сделал, осталось найти email отвечающий за продление Вопрос не по теме но может кто-то знает как распарсить json в переменные?
  4. Подскажите как сломать счета продления? Чтобы их нельзя было продлевать даже если доступна кнопка продления. Дело в том что IPS не генерирует лицензионный ключ если не включена функция продления счета Дело в том что у меня на форуме при покупке данный ключ используется для доступа к программе и если пользователь случайно оплатит счет продления то новый ключ ему не придет. Новый ключ приходит только при новой покупке. Я думал что поможет указать счет продления через пару лет, но кривой IPS формирует его сразу Мне надо убрать эту кнопку
  5. для 4.4 есть возможность достать?
  6. У меня старая и нету .xml есть вариант просто файлы скинуть но я хз какие ещё sql запросы нужны
  7. Если у кого-то из способов оплаты пропали методы оплаты то вам надо в файл по пути /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; }
  8. Посмотрел изменения в 4.4.1 Commerce Removed Braintree option for new payment gateways. Что это значит?
  9. У меня слдетели модули оплаты после обновления до 4.4.1 подскажите как восстановить? Или может быть у кого-то есть https://invisioncommunity.com/files/file/7658-robokassa-payment-gateway/ ?
  10. Упс. Вы были правы. Теперь всё работает. Большое спасибо!
  11. К сожалению не работает если expire получает значение после метода save то скорее всего надо в другой метод вставлять код, только я вот без понятия в какой
  12. Вот что мне надо "Из таблицы _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(); }
  13. Помогите пожалуйста переделать запрос так чтобы он брал 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
  14. public function set_purchase( \IPS\nexus\Purchase $purchase ) { $this->_data['purchase'] = $purchase->id; $this->_data['member'] = $purchase->member->member_id; }
  15. И второй вопрос, как мне получить из другой таблицы форума количество оставшихся дней подписки? SELECT * FROM `_nexus_purchases`.`ps_expire` WHERE `ps_member` LIKE '$purchase->member->member_id' Только вот $purchase->member->member_id - не получает id пользователя
  16. siv1987 И ещё 2 вопроса. При переносе ключа мне в это-же поле ещё надо добавить данные подскажи пожалуйста как это сделать. Я думал вот так \IPS\Db::i('remote_database_name')->insert('your_table', array('license_key' => $this->key, 'ban' => 1));
  17. Есть ли доступ у форума к базе данных в которую мне надо внести ключ? Нет нету. Соединение надо создать заново Вот так работать будет? 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(); }
  18. Не совсем понял вопрос про пользователя который имеет доступ но я думаю что нет? Мне надо создать новое подключение. А куда код вставлять? Вот весь код файла 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(); } }
  19. Совершенно верно, мне надо скопировать ключ в другую БД Очень напрягает что на этом форуме нельзя редактировать свой текст. Дело в том что в том php я не могу почему то создать новое подключение использую $mysqli_key = new mysqli("****", "****", "****", "****"); Может быть ты в курсе где искать "использовать нативный метод \IPS\Db::i()->query с указанием таблицы другой базы данных INSERT INTO other_db.your_table"
×
×
  • Создать...