Перейти к контенту
  • 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

 

 

 

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

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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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