Как сделать?
Подскажите как реализовать счетчик скачивания файлов?
— он уже реализован в системе и нормально работает…
( для более развернутого ответа не хватает информации в вопросе )
1) Версия системы?
2) Куда выводить/на какой странице?
3) Вам нужен модуль, или вы хотите вписать в каждую страничку сайта циферки скачивания?
В общем, конкретизируйте пожалуйста.
— Что сломалось?
Блондинка:
— Я в сервис приехала или куда? Это вы должны знать, что в машине чинить надо!
В контенте (в любом) создаю поле файловое, загружаю файл. На странице с материалом, нужно вывести количество скачиваний?
Есть ещё вопросы?
• Mike •, подскажите пожалуйста, для второй ветки, нужно вывести счетчик скачиваний файла в записи и в списке. Реализована ли данная функция в двойке?
Ап
<?php class fieldFile extends cmsFormField { public $title = LANG_PARSER_FILE; public $sql = 'text'; public function getOptions(){ 'title' => LANG_PARSER_FILE_LABEL, 'default' => 1, 0 => LANG_PARSER_FILE_LABEL_GET, 1 => LANG_PARSER_FILE_LABEL_NAME, ) )), 'title' => LANG_PARSER_FILE_EXTS, 'hint' => LANG_PARSER_FILE_EXTS_HINT )), 'title' => LANG_PARSER_FILE_MAX_SIZE, )), 'title' => LANG_PARSER_FILE_SHOW_SIZE, )), 'title' => 'Показывать счетчик скачиваний', //Patch file counter )), //Patch file counter ); } public function parse($value){ $files_model = cmsCore::getModel('files'); //Patch file counter $get_file = $files_model->getFile($file['id']); //Patch file counter $file['counter'] = $get_file['counter']; //Patch file counter if (!$file){ return; } $name = $this->getOption('show_name') ? $file['name'] : LANG_PARSER_FILE_LABEL_GET; $size_info = $this->getOption('show_size') ? '<span class="size">' . files_format_bytes($file['size']).'</span>' : ''; $counter_info = $this->getOption('show_counter') ? '<span class="size">Скачиваний: ' . $file['counter'] . '</span>' : ''; //Patch file counter return '<a href="'.$this->getDownloadURL($file).'">'.$name.'</a> ' . $size_info . $counter_info; } public function getStringValue($value){ if (!$file){ return false; } $name = $this->getOption('show_name') ? $file['name'] : LANG_PARSER_FILE_LABEL_GET; return $name; } public function getDownloadURL($file){ } public function store($value, $is_submitted, $old_value=null){ $config = cmsConfig::getInstance(); $files_model = cmsCore::getModel('files'); if ($value){ $file = cmsModel::yamlToArray($old_value); $path = $config->upload_path . $file['path']; $files_model->deleteFile($file['id']); $old_value = null; } $uploader = new cmsUploader(); if (!$uploader->isUploaded($this->name)){ return $old_value; } $allowed_extensions = $this->getOption('extensions'); $max_size_mb = $this->getOption('max_size_mb'); if (!$max_size_mb) { $max_size_mb = 0; } $result = $uploader->upload($this->name, $allowed_extensions, $max_size_mb * 1048576); if (!$result['success']){ $uploader->remove($result['path']); } cmsUser::addSessionMessage($result['error'], 'error'); return null; } $file = $files_model->registerFile($result['url'], $result['name']); 'id' => $file['id'], 'url_key' => $file['url_key'], 'name' => $result['name'], 'size' => $result['size'], 'path' => $result['url'] ); } public function getFilterInput($value=false) { return html_checkbox($this->name, (bool)$value); } public function applyFilter($model, $value) { return $model->filterNotNull($this->name); } public function getInput($value){ $this->data['allowed_extensions'] = $this->getOption('extensions'); $this->data['max_size_mb'] = $this->getOption('max_size_mb'); if($this->data['max_size_mb']){ $this->data['max_size_mb'] *= 1048576; }else{ } return parent::getInput($value); } }