Управление опросами к публикациям


В механизме массового управления новостями DLE не хватает важного момента - массового редактирования опросов. Попробуем добавить этот функционал самостоятельно с помощью хака. Изменения будут вноситься в файлы editnews.php и massactions.php. Конечный функционал позволит очищать и удалять опросы у новостей.


Установка:
1. Открыть engine/inc/editnews.php и найти:
<option value="mass_clear_cloud">{$lang['mass_clear_cloud']}</option>

Добавить ниже:
<option value="mass_poll_clear">Очистить результаты опроса</option>
<option value="mass_poll_delete">Удалить опрос</option>

2. Открыть engine/inc/massactions.php и найти:
elseif( $action == "mass_clear_cloud" ) {
	$field = "tags";
	$value = "";
	$k_mass = true;
	$title = $lang['mass_clear_cloud_2'];
	$lang['mass_confirm'] = $lang['mass_clear_cloud_1'];
	$lang['mass_confirm_1'] = $lang['mass_confirm_2'];
}

Добавить ниже:
elseif( $action == "mass_poll_clear" ) {
	$field = "poll_clear";
	$value = 1;
	$k_mass = true;
	$title = "Очистить результаты опроса";
	$lang['mass_confirm'] = "Выполнить очистку результатов голосования в выбранных статьях?";
} elseif( $action == "mass_poll_delete" ) {
	$field = "poll_delete";
	$value = 0;
	$k_mass = true;
	$title = "Удалить опрос";
	$lang['mass_confirm'] = "Удалить опросы в выбраных статьях?";
}

Найти далее:
      if (in_array($field, array("news_read", "allow_rate", "rating", "vote_num", "disable_index" ) )) {
        $db->query( "UPDATE " . PREFIX . "_post_extras SET {$field} = '{$value}' WHERE news_id = '{$id}'" );
      } else	$db->query( "UPDATE " . PREFIX . "_post SET {$field} = '{$value}' WHERE id = '{$id}'" );

Заменить на:
		// poll clear mod
    if ( $field != "poll_clear" AND $field != "poll_delete" ) {
    
      if (in_array($field, array("news_read", "allow_rate", "rating", "vote_num", "disable_index" ) )) {
        $db->query( "UPDATE " . PREFIX . "_post_extras SET {$field} = '{$value}' WHERE news_id = '{$id}'" );
      } else	$db->query( "UPDATE " . PREFIX . "_post SET {$field} = '{$value}' WHERE id = '{$id}'" );
		
		}
		//      

Найти далее:
		if ( $field == "news_read" ) {

			$db->query( "DELETE FROM " . PREFIX . "_views WHERE news_id = '{$id}'" );

		}

Добавить ниже:
		// poll clear mod
		if ( $field == "poll_clear" ) {

      $db->query( "UPDATE  " . PREFIX . "_poll set votes = '0' WHERE news_id = '{$id}'" );
			$db->query( "DELETE FROM " . PREFIX . "_poll_log WHERE news_id = '{$id}'" );	

		}	
		
		if ( $field == "poll_delete" ) {

			$db->query( "UPDATE " . PREFIX . "_post_extras SET votes = '0' WHERE news_id='{$id}'" );
			$db->query( "DELETE FROM " . PREFIX . "_poll WHERE news_id = '{$id}'" );
			$db->query( "DELETE FROM " . PREFIX . "_poll_log WHERE news_id = '{$id}'" );			

		}			
		//	

Готово!
 
Версия DLE: 9.х
Автор: Grey
Источник
Информация
Посетители, находящиеся в группе Гость, не могут оставлять комментарии к данной публикации.