Счетчик загрузки файлов

Как сделать?

#1 19 июля 2014 в 14:41
Привет. Подскажите как реализовать счетчик скачивания файлов?
#2 19 июля 2014 в 14:46

Подскажите как реализовать счетчик скачивания файлов?

Вадим Нарочный

— он уже реализован в системе и нормально работает…
( для более развернутого ответа не хватает информации в вопросе )
#3 21 июля 2014 в 13:13
• Mike •, как вывести показатель на странице?
#4 21 июля 2014 в 14:29
Вадим Нарочный, Чтобы вам отвечали достаточно корректно, подробно, по теме и так далее, нужно всего лишь правильно и развёрнуто формулировать свои мысли. Например в вашем случае — возникает много допвопросов, не зная ответов на которые просто нечего сказать вам.
1) Версия системы?
2) Куда выводить/на какой странице?
3) Вам нужен модуль, или вы хотите вписать в каждую страничку сайта циферки скачивания?
В общем, конкретизируйте пожалуйста.
#6 21 июля 2014 в 15:14
Блондинка приезжает в автосервис. Механик:
— Что сломалось?
Блондинка:
— Я в сервис приехала или куда? Это вы должны знать, что в машине чинить надо!
#7 21 июля 2014 в 15:20
В общем, надо ввести предложение, перед созданием темы реализовать вывод справки "для чайников", как правильно писать Не ссылка на правила, а именно большими буквами — пишите развёрнуто и со смыслом!
#8 21 июля 2014 в 18:44
Сколько много остряков.
В контенте (в любом) создаю поле файловое, загружаю файл. На странице с материалом, нужно вывести количество скачиваний?

Есть ещё вопросы?
#9 16 декабря 2014 в 17:27
• Mike •, подскажите пожалуйста, для второй ветки, нужно вывести счетчик скачиваний файла в записи и в списке. Реализована ли данная функция в двойке?
#10 18 ноября 2015 в 18:46

• Mike •, подскажите пожалуйста, для второй ветки, нужно вывести счетчик скачиваний файла в записи и в списке. Реализована ли данная функция в двойке?

ValeraK

Ап laugh
#11 25 декабря 2015 в 00:09
Ап для двойки
#12 25 декабря 2015 в 00:55
Поменяйте код в файле system/fields/file.php на нижеследующий и будет вам счастье )

  1. <?php
  2.  
  3. class fieldFile extends cmsFormField {
  4.  
  5. public $title = LANG_PARSER_FILE;
  6. public $sql = 'text';
  7.  
  8. public function getOptions(){
  9. $max_size = files_convert_bytes(ini_get('post_max_size')) / 1048576;
  10. return array(
  11. new fieldList('show_name', array(
  12. 'title' => LANG_PARSER_FILE_LABEL,
  13. 'default' => 1,
  14. 'items' => array(
  15. 0 => LANG_PARSER_FILE_LABEL_GET,
  16. 1 => LANG_PARSER_FILE_LABEL_NAME,
  17. )
  18. )),
  19. new fieldString('extensions', array(
  20. 'title' => LANG_PARSER_FILE_EXTS,
  21. 'hint' => LANG_PARSER_FILE_EXTS_HINT
  22. )),
  23. new fieldNumber('max_size_mb', array(
  24. 'title' => LANG_PARSER_FILE_MAX_SIZE,
  25. 'hint' => sprintf(LANG_PARSER_FILE_MAX_SIZE_PHP, $max_size)
  26. )),
  27. new fieldCheckbox('show_size', array(
  28. 'title' => LANG_PARSER_FILE_SHOW_SIZE,
  29. )),
  30. new fieldCheckbox('show_counter', array( //Patch file counter
  31. 'title' => 'Показывать счетчик скачиваний', //Patch file counter
  32. )), //Patch file counter
  33.  
  34. );
  35. }
  36.  
  37. public function parse($value){
  38.  
  39. $file = is_array($value) ? $value : cmsModel::yamlToArray($value);
  40. $files_model = cmsCore::getModel('files'); //Patch file counter
  41. $get_file = $files_model->getFile($file['id']); //Patch file counter
  42. $file['counter'] = $get_file['counter']; //Patch file counter
  43.  
  44.  
  45. if (!$file){ return; }
  46.  
  47. $name = $this->getOption('show_name') ? $file['name'] : LANG_PARSER_FILE_LABEL_GET;
  48.  
  49. $size_info = $this->getOption('show_size') ? '<span class="size">' . files_format_bytes($file['size']).'</span>' : '';
  50.  
  51. $counter_info = $this->getOption('show_counter') ? '<span class="size">Скачиваний: ' . $file['counter'] . '</span>' : ''; //Patch file counter
  52.  
  53. return '<a href="'.$this->getDownloadURL($file).'">'.$name.'</a> ' . $size_info . $counter_info;
  54.  
  55.  
  56. }
  57.  
  58. public function getStringValue($value){
  59.  
  60. $file = is_array($value) ? $value : cmsModel::yamlToArray($value);
  61.  
  62. if (!$file){ return false; }
  63.  
  64. $name = $this->getOption('show_name') ? $file['name'] : LANG_PARSER_FILE_LABEL_GET;
  65.  
  66. return $name;
  67.  
  68. }
  69.  
  70. public function getDownloadURL($file){
  71.  
  72. return href_to('files', 'download', array($file['id'], $file['url_key']));
  73.  
  74. }
  75.  
  76. public function store($value, $is_submitted, $old_value=null){
  77.  
  78. $config = cmsConfig::getInstance();
  79.  
  80. $files_model = cmsCore::getModel('files');
  81.  
  82. if ($value){
  83. $file = cmsModel::yamlToArray($old_value);
  84. $path = $config->upload_path . $file['path'];
  85. @unlink($path);
  86. $files_model->deleteFile($file['id']);
  87. $old_value = null;
  88. }
  89.  
  90. $uploader = new cmsUploader();
  91.  
  92. if (!$uploader->isUploaded($this->name)){
  93. return $old_value;
  94. }
  95.  
  96. $allowed_extensions = $this->getOption('extensions');
  97. $max_size_mb = $this->getOption('max_size_mb');
  98.  
  99. if (!trim($allowed_extensions)) { $allowed_extensions = false; }
  100. if (!$max_size_mb) { $max_size_mb = 0; }
  101.  
  102. $result = $uploader->upload($this->name, $allowed_extensions, $max_size_mb * 1048576);
  103.  
  104. if (!$result['success']){
  105. if (!empty($result['path'])){
  106. $uploader->remove($result['path']);
  107. }
  108. cmsUser::addSessionMessage($result['error'], 'error');
  109. return null;
  110. }
  111.  
  112. $file = $files_model->registerFile($result['url'], $result['name']);
  113.  
  114. return array(
  115. 'id' => $file['id'],
  116. 'url_key' => $file['url_key'],
  117. 'name' => $result['name'],
  118. 'size' => $result['size'],
  119. 'path' => $result['url']
  120. );
  121.  
  122. }
  123.  
  124. public function getFilterInput($value=false) {
  125.  
  126. return html_checkbox($this->name, (bool)$value);
  127.  
  128. }
  129.  
  130. public function applyFilter($model, $value) {
  131. return $model->filterNotNull($this->name);
  132. }
  133.  
  134. public function getInput($value){
  135.  
  136. $this->data['allowed_extensions'] = $this->getOption('extensions');
  137. $this->data['max_size_mb'] = $this->getOption('max_size_mb');
  138.  
  139. if($this->data['max_size_mb']){
  140. $this->data['max_size_mb'] *= 1048576;
  141. }else{
  142. $this->data['max_size_mb'] = files_convert_bytes(ini_get('post_max_size'));
  143. }
  144.  
  145. return parent::getInput($value);
  146.  
  147. }
  148.  
  149. }
  150.  
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.