Копилка от Goodmade

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 2.X

Не работает виджет и поле в списке записей

#1 15 сентября 2021 в 12:51

Всем привет. Если кто не знал то Денис Goodmade отошел от дел и до ухода он отдал мне поле «Копилка, сбор средств» addons.instantcms.ru/addons/goodmade-kopilka.html, само поле вроде работает, но только в записи. Виджет не работает выдает такую ошибку при выборе категории:

Изображение

 

Если добавить

  1. 'disable_array_key_rules' => true,

 

В

  1. new fieldList('options:category_id', array(
  2. 'title' => 'Рубрика',
  3. 'parent' => array(
  4. 'list' => 'options:ctype_id',
  5. 'url' => href_to('content', 'widget_cats_ajax')
  6. ),
  7. 'items' => $cats_list
  8. )),

 

Ошибка пропадает, но при загрузке страницы где указан виджет, получаем такую ошибку:

Fatal error: Uncaught ArgumentCountError: Too few arguments to function modelKopilka::getContentItem(), 1 passed in /var/тут путь к моему сайту/system/controllers/kopilka/widgets/kopilka/widget.php on line 84 and at least 2 expected in /var/тут путь к моему сайту/system/controllers/kopilka/model.php:25 Stack trace: #0 /var/тут путь к моему сайту/system/controllers/kopilka/widgets/kopilka/widget.php(84): modelKopilka->getContentItem('1') #1 /var/тут путь к моему сайту/system/core/core.php(901): widgetKopilkaKopilka->run() #2 /var/тут путь к моему сайту/system/core/core.php(853): cmsCore->runWidget(Array) #3 /var/тут путь к моему сайту/index.php(51): cmsCore->runWidgets() #4 {main} thrown in /var/тут путь к моему сайту/system/controllers/kopilka/model.php on line 25

#2 15 сентября 2021 в 13:17

Почему то весь текст в тему не влез...

 

  1. <?php
  2.  
  3. class modelKopilka extends cmsModel {
  4.  
  5.  
  6.  
  7. public $table_prefix = '';
  8.  
  9.  
  10. protected $approved_filter_disabled = false;
  11. protected $approved_filtered = false;
  12.  
  13. public function setTablePrefix($prefix){
  14. $this->table_prefix = $prefix;
  15. return $this;
  16. }
  17.  
  18.  
  19. public function getContentItems($ctype_name, $cat_id=true, $limit=false){
  20. $base = cmsDataBase::getInstance();
  21. $sql_limit = "LIMIT ".$limit;
  22. return $base->getRows("kopilka","ctype='{$ctype_name}' AND is_pub = 1","*");
  23. }
  24.  
  25. public function getContentItem($target_id,$ctype,$is_binds=true){
  26. $base = cmsDataBase::getInstance();
  27. $kop = $base->getRow("kopilka","target_id='{$target_id}' AND ctype='{$ctype}'","*");
  28. if(!$kop){ return false; }
  29.  
  30. if($is_binds){
  31.  
  32. $binds = $this->
  33. filterEqual('kop_id',$id)->
  34. select('SUM(i.bind)','sum')->
  35. select('MAX(i.bind)','max')->
  36. select('MIN(i.bind)','min')->
  37. select('round(AVG(i.bind),-1)','avg')->
  38. select('COUNT(i.id)','count')->
  39. get("kopilka_binds");
  40.  
  41. if($binds){
  42. $kop['binds'] = end($binds);
  43. $kop['binds_total'] = $kop['binds']['sum'];
  44. $kop['binds_count'] = $kop['binds']['count'];
  45. $kop['actual_sum'] = $kop['max_bind'] - $kop['binds']['sum'];
  46. }else{
  47. $kop['binds_total'] = 0;
  48. $kop['binds_count'] = 0;
  49. $kop['actual_sum'] = $kop['max_bind'];
  50. }
  51. }
  52.  
  53. $kop['kop_options'] = !empty($kop['kop_options']) ? cmsModel::yamlToArray($kop['kop_options']) : $kop['kop_options'];
  54.  
  55. return $kop;
  56. }
  57.  
  58. public function getKop($id,$is_binds=true){
  59. $base = cmsDataBase::getInstance();
  60. $kop = $base->getRow("kopilka","id='{$id}'","*");
  61. if(!$kop){ return false; }
  62. if($is_binds){
  63. $binds = $this->
  64. filterEqual('kop_id',$id)->
  65. select('SUM(i.bind)','sum')->
  66. select('MAX(i.bind)','max')->
  67. select('MIN(i.bind)','min')->
  68. select('round(AVG(i.bind),-1)','avg')->
  69. select('COUNT(i.id)','count')->
  70. get("kopilka_binds");
  71.  
  72. if($binds){
  73. $kop['binds'] = end($binds);
  74. $kop['binds_total'] = $kop['binds']['sum'];
  75. $kop['binds_count'] = $kop['binds']['count'];
  76. $kop['actual_sum'] = $kop['max_bind'] - $kop['binds']['sum'];
  77. }else{
  78. $kop['binds_total'] = 0;
  79. $kop['binds_count'] = 0;
  80. $kop['actual_sum'] = $kop['max_bind'];
  81. }
  82. }
  83. $kop['kop_options'] = !empty($kop['kop_options']) ? cmsModel::yamlToArray($kop['kop_options']) : $kop['kop_options'];
  84.  
  85. return $kop;
  86. }
  87.  
  88.  
  89.  
  90. public function countSimBinds($user_id, $kop_id, $target, $target_id=false){
  91.  
  92.  
  93. if($target_id){
  94. $this->filterEqual('target_id',$target_id);
  95. }
  96. $count = $this->filterEqual('user_id',$user_id)->filterEqual('kop_id',$kop_id)->filterEqual('target',$target)->getCount('kopilka_sim_binds');
  97. return $count;
  98. }
  99.  
  100.  
  101. public function updateContentItem($id, $item){
  102.  
  103. $table_name = 'kopilka';
  104.  
  105. $update_item = $item;
  106. $update_item['date_last_modified'] = null;
  107. if(!empty($update_item['pub_days'])){
  108. $update_item['pub_days'] = $update_item['pub_days'] ? $update_item['pub_days'] : 0;
  109. }
  110. $this->update($table_name, $id, $update_item);
  111.  
  112. return $item;
  113. }
  114.  
  115.  
  116.  
  117.  
  118.  
  119.  
  120. }

При включении показа в списке контента, получаем такую ошибку.

Изображение

Да в каталоге указано что поддерживается версия 2.14.0, а у меня 2.14.2. 

Просить самого разработчика обновить нет смысла, во-первых он отдал бесплатно свою разработку, во-вторых как я и сказал он отошел от дел.

Поэтому обращаюсь с просьбой к знающим людям, как причесать поле и виджет полностью к 2.14.2, после того как компонент на 100 процентов заработает, обещаю поделиться безвозмездно этим полем с сообществом InstantCMS.  

 

 

Добавлено спустя 19 минут

Походу я форум сломал, но я не специально)) 

#3 15 сентября 2021 в 14:22

Почему то весь текст в тему не влез...

CEH9I

Потому что такие портянки публиковать моветон) Можно же прикрепить к сообщению файл или архив файлов.

Походу я форум сломал, но я не специально)) 

CEH9I

Починили. Больше огромные сообщения просто не даст добавить.

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.