Предоставляем срочную помощь по DLE, пишем эксклюзивные модули для вашего проекта, парсеры грабберы, исправляем базу данных, удаляем вирусы редиректы, обновляем скрипты, помощь с переездом на другой хостинг, перенос домена, большой опыт работы с высоконагруженными проектами, защита ddos атаки, ботов и спама, оптимизация модулей и серверов дле, более 10 лет работы, тысячи модификаций и доработок, короткие сроки, дорого, качественно. telegram: @histoo

[Решено] Удаление файлов вложений при удалении сообщений

  1. Онлайн

    Grey

    Администраторы

    Сообщений: 2130

    Bullet Energy не удаляет загруженные файлы вложений при удалении топиков и сообщений. Сделаем удаление как положено:

    В файле: /engine/bullet_energy/action/site/post.php
    Перед:
    
          //:TODO: $postData
          $update = parent::$helper->updatePositionPost($option['topic']['id'], true, $option['topic']['title']) ;
          parent::$helper->updateLastTopicInfo($option['topic']['id'], $update) ;
          parent::$helper->updateLastTreeInfo($option['topic']['id_parent']) ;
    


    Вставьте:
    
          //
          // delete attach data
          //
          parent::$db->query("SELECT * FROM " . PREFIX . "_be_attachment WHERE attachment_content_id IN ('" . parent::$globalParam['id'] . "')");     
          
    		  if (parent::$db->num_rows()) {
    		  
    				while($attachment = parent::$db->get_row()) {
    
    					@unlink(ROOT_DIR."/uploads/forum/files/".$attachment['attachment_name']);					
    					@unlink(ROOT_DIR."/uploads/forum/images/" . date("Y-m", $attachment['attachment_date']) . "/" . $attachment['attachment_name']);
    					@unlink(ROOT_DIR."/uploads/forum/images/" . date("Y-m", $attachment['attachment_date']) . "/thumbs/" . $attachment['attachment_name']);
            }
            
            parent::$db->query("DELETE FROM " . PREFIX . "_be_attachment WHERE attachment_content_id IN ('" . parent::$globalParam['id'] . "')");
    			
    			}	
          //
          //
          //
    


    В файле: /engine/bullet_energy/action/site/post_mass.php

    Находим:
    
      private function _delete()
      {
    

    Вставляем ниже:
    
            //
            // mass delete attach data
            //        
               parent::$db->query("SELECT * FROM " . PREFIX . "_be_attachment WHERE attachment_content_id IN ({$this->_id['string']})");     
          
               if (parent::$db->num_rows()) {
    		  
                while($attachment = parent::$db->get_row()) {
    
                  @unlink(ROOT_DIR."/uploads/forum/files/".$attachment['attachment_name']);					
                  @unlink(ROOT_DIR."/uploads/forum/images/" . date("Y-m", $attachment['attachment_date']) . "/" . $attachment['attachment_name']);
                  @unlink(ROOT_DIR."/uploads/forum/images/" . date("Y-m", $attachment['attachment_date']) . "/thumbs/" . $attachment['attachment_name']);
                }
            
                parent::$db->query("DELETE FROM " . PREFIX . "_be_attachment WHERE attachment_content_id IN ({$this->_id['string']})");
    			
               }	
            //
            //
            // 
    


    В файле: /engine/bullet_energy/action/site/set.php

    Находим:
    
          case 'delete':
    

    Вставляем ниже:
    
            //
            // mass delete attach data
            //
            parent::$db->query("SELECT id FROM " . DBNAME . "." . PREFIX . "_be_message WHERE id_topic IN ({$option['arrayIdTopic']})") ;
                    
            $temparr = array();
            
               while($row = parent::$db->get_row()) {				
                $temparr[] = $row['id'] ;
               }
              
           if(count($temparr)) {
               parent::$db->query("SELECT * FROM " . PREFIX . "_be_attachment WHERE attachment_content_id IN (" . implode(',', $temparr) . ")");     
          
               if (parent::$db->num_rows()) {
    		  
                while($attachment = parent::$db->get_row()) {
    
                  @unlink(ROOT_DIR."/uploads/forum/files/".$attachment['attachment_name']);					
                  @unlink(ROOT_DIR."/uploads/forum/images/" . date("Y-m", $attachment['attachment_date']) . "/" . $attachment['attachment_name']);
                  @unlink(ROOT_DIR."/uploads/forum/images/" . date("Y-m", $attachment['attachment_date']) . "/thumbs/" . $attachment['attachment_name']);
                }
            
                parent::$db->query("DELETE FROM " . PREFIX . "_be_attachment WHERE attachment_content_id IN (" . implode(',', $temparr) . ")");
    			
                }	
                
            }
            //
            //
            //
    


    Готово, теперь все файлы аттачей будут удаляться при удалении тем или сообщений.

    Вложения:

    1. delattach.txt

      Размер файла:
      3,94 Kb
      Скачиваний:
      819
    OTM_tm, Johan нравится это сообщение.
    Сообщение отредактировал Grey 20 декабря 2013 - 06:34

    сделаю любой модуль dle на заказ, если вам нужны услуги по dle
    скaйп rdn-team.com
    телегрaм @histoo

    20 декабря 2013 - 06:34 / #1
  2. Онлайн

    Grey

    Администраторы

    Сообщений: 2130

    Ревизия №2:
    - добавлено удаление аттачей при удалении темы из всплывающего окна.

    Вложения:

    1. delattach.r2.txt

      Размер файла:
      5,4 Kb
      Скачиваний:
      757
    OTM_tm, Johan нравится это сообщение.

    сделаю любой модуль dle на заказ, если вам нужны услуги по dle
    скaйп rdn-team.com
    телегрaм @histoo

    21 декабря 2013 - 17:33 / #2
  3. Оффлайн

    Vipper

    Посетители

    Сообщений: 22

    Аттачи не удаляются, если удаляем первое сообщение.
    То есть, создаем тему с аттачем в первом сообщении, потом заходим в тему и удаляем первое сообщение.
    Вместе с сообщением удаляется и сама тема, но при этом аттач остается и в базе и в паке uploads.
    Еще хоть убей, не нашел при каком событии срабатывает кусок кода который в файле post_mass.php.

    Во всех остальных вариантах удаления темы аттачи удаляются!
    19 сентября 2014 - 19:53 / #3
  4. Онлайн

    Grey

    Администраторы

    Сообщений: 2130

    Цитата: Vipper
    post_mass

    post_mass это галочки тем или сообщений при массовом редактировании насколько помню

    сделаю любой модуль dle на заказ, если вам нужны услуги по dle
    скaйп rdn-team.com
    телегрaм @histoo

    19 сентября 2014 - 22:09 / #4
  5. Оффлайн

    Vipper

    Посетители

    Сообщений: 22

    Цитата: Grey
    post_mass это галочки тем или сообщений при массовом редактировании насколько помн

    Скорее всего сообщений.

    А с удалением первого сообщения с аттачем нет мыслей куда еще аналогичный код тулить?
    20 сентября 2014 - 19:31 / #5
  6. Оффлайн

    proskripts

    Посетители

    Сообщений: 17

    Здравствуйте, если удалять через меню "Массовые действия над темами" то аттач вложенный в первый пост удаляется! А если зайти в пост и удалить пост, то аттач не удаляется, как решить эту проблему?

    ***добавлено через 6 минут, 10 секунд***

    А еще заметил что если загрузить файл, и написать короткий текст выйдет ошибка о том что "Текст вашего комментария слишком маленький." и аттач пропадает, но он будет загружен на сайт и там будет просто лежать и занимать дисковое пространство.
    12 января 2015 - 20:09 / #6
  7. Онлайн

    Grey

    Администраторы

    Сообщений: 2130

    proskripts,
    я тебя удивлю больше, если загрузить аттач и не отправить сообщение он так же останется на сервере.

    сделаю любой модуль dle на заказ, если вам нужны услуги по dle
    скaйп rdn-team.com
    телегрaм @histoo

    14 января 2015 - 03:59 / #7
  8. Онлайн

    Grey

    Администраторы

    Сообщений: 2130

    Удаление аттачей которые были загружены, но не отправлены в сообщении:
    файл /engine/modules/cron.php

    Вложения:

    1. clear.crap.txt

      Размер файла:
      1023 b
      Скачиваний:
      790

    сделаю любой модуль dle на заказ, если вам нужны услуги по dle
    скaйп rdn-team.com
    телегрaм @histoo

    20 января 2015 - 23:59 / #8
  9. Оффлайн

    Johan

    Посетители

    Сообщений: 89

    Цитата: Grey
    Bullet Energy не удаляет загруженные файлы вложений при удалении топиков и сообщений. Сделаем удаление как положено:

    Хак не работает на 10.4, на 10.3 работало. В чем может быть проблема?
    7 июля 2015 - 19:16 / #9
  10. Оффлайн

    Johan

    Посетители

    Сообщений: 89

    ЗЫ. Удаляется только по Ревизия №2 из всплывающего окна. Просто нажав кнопку удалить удаляется только сообщение, аттач не удаляется
    7 июля 2015 - 19:52 / #10
Модераторы форума: greyPowered by Bullet Energy Forum