Перейти к контенту
  • 0

О редактировании заголовков тем


Dekker

Вопрос

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

 

что я забыл?

Изменено пользователем Dekker
Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

что-то у меня не появляются ... где я что потер интересно ...

 

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

Ссылка на комментарий
Поделиться на других сайтах

  • 0
в старых темах титл и дескрипшн редактируются через кнопку "редактировать", в новых нет

Посмотри через пхп-админ в таблице ibf_posts, в новых темах у первых сообщений что в поле first_post?

Ссылка на комментарий
Поделиться на других сайтах

  • 0

FatCat

 

ага, все вроде поля потыкал уже, про это забыл, она у меня не first_post а new_topic (v. 1.2) и конечно она зануленная, где занулил, когда и зачем, пойду искать

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Вот условие по которому определяется возможность редактирования названия темы:

		//-----------------------------
	// // Do we have edit topic abilities?
	//-----------------------------

	if ( $this->orig_post['new_topic'] == 1 )
	{
		if ($ibforums->member['g_is_supmod'] == 1)
		{
			$this->edit_title = 1;
		}

		else if ($this->moderator['edit_topic'] == 1)
		{
			if ( $ibforums->member['id'] == $this->topic['starter_id'] )
			{
				$this->edit_title = 1;
			}
		}
		else if ($ibforums->member['g_edit_topic'] == 1 )
		{
			$this->edit_title = 1;
		}
	}

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Song

 

да я знаю, у меня поле new_topic в базе зануленное с какой-то радости ... временно изменил условие

 

if ( $this->orig_post['new_topic'] == 0 )

 

старые темы теперь не редактируются, новые редактируются согласно розданных прав

Ссылка на комментарий
Поделиться на других сайтах

  • 0

не, фигня, а не решение, теперь все кому разрешено редактирование заголовков своих тем могут редактировать в чужой теме как свой пост, так и заголовок :D

 

где этот чертов запрос, ткните пальцем? где-то же в post_new_post по идее

 

нашел, при утановке мультиаттача потер $this->post['new_topic'] = 1;

 

ЗЫ с умилением глянул на исходники семилетней 1,2 от IBR ;) ностальджи

Изменено пользователем Dekker
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Dekker, в таблице topics должны быть указатели на первый пост. К сожалению, в жизни не видел стуктуры таблиц версии 1.3, но для двойки, чтобы вернуть все new_topic на место, достаточно было бы запроса:

UPDATE ibf_posts SET new_topic = '1' WHERE EXISTS (SELECT * FROM ibf_topics WHERE ibf_topics.topic_firstpost = ibf_posts.pid);

Ссылка на комментарий
Поделиться на других сайтах

  • 0
где-то же в post_new_post по идее

Ага, там. В 1.3 это выглядит так (добавил комментарии к кодам):

		$DB->query("INSERT INTO ibf_topics (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")"); // Создали новую заись в таблице топиков
	$this->post['topic_id']  = $DB->get_insert_id(); // Получили айдишник нового топика
	$this->topic['tid']	  = $this->post['topic_id']; // Передали айдишник нового топика для

	//-------------------------------------------------
	// Update the post info with the upload array info
	//-------------------------------------------------

	$this->post['attach_id']   = $this->upload['attach_id'];
	$this->post['attach_type'] = $this->upload['attach_type'];
	$this->post['attach_hits'] = $this->upload['attach_hits'];
	$this->post['attach_file'] = $this->upload['attach_file'];
	$this->post['new_topic']   = 1; // Здесь-то и кроется заветная единичка первого поста

	//-------------------------------------------------
	// Unqueue the post if we're starting a new topic
	//-------------------------------------------------

	if ( $class->obj['moderate'] == 3 ) // Если топик идет на премодерацию
	{
		$this->post['queued'] = 0;
	}
	$db_string = $DB->compile_db_insert_string( $this->post ); // Компоновка строки запроса

	$DB->query("INSERT INTO ibf_posts (" .$db_string['FIELD_NAMES']. ") VALUES (". $db_string['FIELD_VALUES'] .")"); // Заносим в базу первый пост нового топика

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Ritsuka благодарю, но народ как-то жил без редактирования, проживут и дальше (старые темы у которых new_topic занулен) :D а с новыми темами и так порядок

 

FatCat ну вот я при установке мультиаттача потер весь блок

 

$this->post['attach_id']   = $this->upload['attach_id'];
	$this->post['attach_type'] = $this->upload['attach_type'];
	$this->post['attach_hits'] = $this->upload['attach_hits'];
	$this->post['attach_file'] = $this->upload['attach_file'];
	$this->post['new_topic']   = 1;

 

вчера строку $this->post['new_topic'] = 1 вернул на место

 

всем спасибо ;)

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Dekker

Дык можно всё проапдейтить. Тоже мне нашли проблему.

 

 

Так..

вот так MySQL не позволяет сделать для MyISAM таблиц:

 

update ibf_posts set new_topic=1 where pid in (
 select pp.first_post from ibf_posts p, (
 select topic_id, min(pid) as first_post from ibf_posts group by topic_id) pp 
 where p.pid = pp.first_post and p.new_topic=0
)

 

Млин.. а так к ораклу привык :D

Так...

 

Ну тогда излюбленный приём для MySQL:

 

select concat('update ibf_posts set new_topic=1 where pid=', pp.first_post ,'; -- topic_id=',pp.topic_id) as queries_to_run_in_phpMyAdmin from ibf_posts p, (
 select topic_id, min(pid) as first_post from ibf_posts group by topic_id) pp 
 where p.pid = pp.first_post and p.new_topic=0
 LIMIT 2000

 

Ну и на всякий случай можно отсекать те темы, в которых new_topic стоит но не соответствует минимальному pid'у (чтобы не получилось два поста с new_topic=1):

select concat('update ibf_posts set new_topic=1 where pid=', pp.first_post ,'; -- topic_id=',pp.topic_id) as queries_to_run_in_phpMyAdmin from ibf_posts p, (
 select topic_id, min(pid) as first_post from ibf_posts group by topic_id) pp
 where p.pid = pp.first_post and p.new_topic=0 and pp.topic_id not in ( select topic_id
                                      from ibf_posts where topic_id=pp.topic_id and new_topic=1)
 LIMIT 2000

 

 

 

Я вот у себя таких много нашёл ;)

заодно и себе исправил всё

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.