форум vBSupport.ru > vBulletin > Old vB versions (3.0.x & 2.x.x) > vBulletin 3.6.x > vBulletin [3.6] Troubleshooting and Problems
Register Меню vBsupport Изображения Files Manager О рекламе Today's Posts Search
  • Родная гавань
  • Блок РКН снят
  • Premoderation
  • For English speaking users
  • Каталог Фрилансеров
  • If you want to buy some product or script
  • Администраторам
VBsupport перешел с домена .ORG на родной .RU Ура! Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей

Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
for English speaking users:
You may be surprised with restriction of access to the attachments of the forum. The reason is the recent change in vbsupport.org strategy:

- users with reputation < 10 belong to "simple_users" users' group
- if your reputation > 10 then administrator (kerk, Luvilla) can decide to move you into an "improved" group, but only manually

Main idea is to increase motivation of community members to share their ideas and willingness to support to each other. You may write an article for the subject where you are good enough, you may answer questions, you may share vbulletin.com/org content with vbsupport.org users, receiving "thanks" equal your reputation points. We should not only consume, we should produce something.

- you may:
* increase your reputation (doing something useful for another members of community) and being improved
* purchase temporary access to the improved category:
10 $ for 3 months. - this group can download attachments, reputation/posts do not matter.
20 $ for 3 months. - this group can download attachments, reputation/posts do not matter + adds eliminated + Inbox capacity increased + files manager increased permissions.

Please contact kerk or Luvilla regarding payments.

Important!:
- if your reputation will become less then 0, you will be moved into "simple_users" users' group automatically.*
*for temporary groups (pre-paid for 3 months) reputation/posts do not matter.
Уважаемые пользователи!

На форуме открыт новый раздел "Каталог фрилансеров"

и отдельный раздел для платных заказов "Куплю/Закажу"

Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже:
Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота.
Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
 
 
 
 
SerV
Продвинутый
Default автоматическое создание темы из результатов MySQL
0

Доброго вечера господа

подскажите по такой темке...

есть новости на сайте - я перенес их отдельным модом на форум (версия 3.6.5), выполняя sql запрос - переводя в хтмл форму.

PHP Code:
$row mysql_fetch_array($result)) {
  print 
"<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'><title></title></head><BODY>";
  print 
"<table width='100%' border='0' cellspacing='0' cellpadding='0' align='center'>";
        print     
"<tr>".
             
"<td width='5%' valign='middle' class='style1'><font class='style1'>".$row['DATE_CREATE']."</font></td>".
    
"<td width='10' valign='middle'>".
                
"<td width='15%' valign='middle' class='style1'><a class='style1' target='_blank' href='http://.ru/news/detail.php?ID=".$row['XML_ID']."'>".$row['NAME']."</a></td>".
    
"<td width='10' valign='middle'>".
             
"<td valign='middle' class='style1'><font class='style1'>".$row['PREVIEW_TEXT']."</font></td>".
             
"</tr>";
    }
  print 
"</table>";
  print 
"</BODY></HTML>"
дальше пытаюсь из полученной инфы автоматически создать тему под юзверем.

PHP Code:
<?php
// #################### DEFINE IMPORTANT CONSTANTS #######################
//SetCookie("News","$login $pass",time()+3600);
//$_COOKIE['?']
define('GET_EDIT_TEMPLATES'true);
define('THIS_SCRIPT''any');
// ######################### REQUIRE BACK-END ############################
define('FWD','/htdocs/forum');
define('BWD', (($getcwd getcwd()) ? $getcwd '.'));
chdir(FWD);
require_once(
'./global.php');
require_once(
DIR '/includes/functions_newpost.php');
require_once(
DIR '/includes/functions_editor.php');
require_once(
DIR '/includes/functions_bigthree.php');
// #######################################################################
// ######################## START MAIN SCRIPT ############################
// #######################################################################
// ### STANDARD INITIALIZATIONS ###
$checked = array();
$newpost = array();
$postattach = array();
// ############################### start post thread ###############################
// Variables reused in templates
($hook vBulletinHook::fetch_hook('newthread_post_start')) ? eval($hook) : false;
$forumid 197; ; // id форума в который вставляем тему
$foruminfo fetch_foruminfo($forumid);
$newpost['message'] = '$row['PREVIEW_TEXT']';
$newpost['title'] = '$row['NAME']';
$newpost['iconid'] = 1// id иконки поста
$newpost['parseurl'] = 1// автоматически вставлять ссылки в тексте
$newpost['signature'] = 0// 1 показывать подпись автора, 0 - нет
$newpost['preview'] = 0;
$newpost['disablesmilies'] = 0// Если 1, то смайлы будут отключены в тексте
$newpost['rating'] = 0;
$newpost['username'] = $vbulletin->userinfo['username'];
$newpost['postpoll'] = 0// добавить ли опрос
$newpost['polloptions'] = ''// Опции опроса
$newpost['folderid'] = 0// id папки для вашей подписки на тему
$newpost['emailupdate'] = 0;
$newpost['poststarttime'] = time(); // Timestamp сообщения
$newpost['posthash'] = md5($newpost['message']);
// moderation options
$newpost['stickunstick'] = 0// Если 1, тему закрепят
$newpost['openclose'] = 0// Если 1 тему закроют
build_new_post('thread'$foruminfo, array(), array(), $newpost$errors); // Добавлена тема
// Опционально
//$lth = $db->query_first("SELECT threadid FROM " . TABLE_PREFIX . "thread ORDER BY threadid DESC LIMIT 1");
//echo $lth['threadid']; // id только что добавленной темы
?>
</body>
</html>
собственно все бы ничего если бы не 2 проблемы


1)

//SetCookie("News","$login $pass",time()+3600);
//$_COOKIE['?']
нужно писать от имени юзера "News"
при выполнении скрипта - берутся кукисы того кто нажал обновить.
$_COOKIE - не срабатывает


2)
PHP код:
$newpost['message'] = '$row['PREVIEW_TEXT']';
$newpost['title'] = '$row['NAME']';
$newpost['message'] и $newpost['title'] - это элементы новой темы.
проблема в том, что они воспринимают простой текст, а я бы хотел чтобы они брали результат полученный из базы.

т.е. если я напишу

$newpost['message'] = 'ТЕКСТ';
$newpost['title'] = 'ТЕКСТ';

то создастся тема с названием "ТЕКСТ" и содержанием "ТЕКСТ"
но от моего имени...

а хотелось бы от имени другого юзера...
и взять данные полученные из sql запроса, а именно $row['NAME'] и $row['PREVIEW_TEXT']

где ошибка?

Last edited by SerV : 05-30-2007 at 08:14 PM.
Bot
Yandex Bot Yandex Bot is online now
 
Join Date: 05.05.2005
Реклама на форуме А что у нас тут интересного? =)
 
 
netwind
Гуру
 
netwind's Avatar
Default
1

эт где ты этот код взял? какой-то кустарный.
поищи как создавать темы через datamanager-ы, там все работает
 
 
Malcolm Reed
Эксперт
 
Malcolm Reed's Avatar
Default
1

ищи темы вроде "создание темы прямым запросом".
 
 
SerV
Продвинутый
Default
0

Quote:
Originally Posted by Malcolm Reed View Post
ищи темы вроде "создание темы прямым запросом".
спасибо. нашел:
http://www.vbsupport.ru/forum/showthread.php?t=1838

но
PHP Code:
<?
$cwd 
getcwd(); //запоминаем нашу текущую директорию
chdir('.'); //переходим в директорию форума (путь относительно исполняемого скрипта)
require_once('./global.php');
require_once(
'./includes/class_dm.php');
require_once(
'./includes/class_dm_threadpost.php');
$threaddm = new vB_DataManager_Thread_FirstPost($vbulletinERRTYPE_STANDARD);
$forumid 197// индификатор раздела в котором будет создана тема
$postuserid 1395//пользователь от которого будет создана тема
$userid 1395//пользователь от которого будет создано сообщение
$username 'News'//имя пользователя, которое будет отображатся в списке тем
$pagetext 'Сообщение тут';
$title 'Заголовок тут';
$visible '1';
$threaddm->do_set('forumid'$forumid);
$threaddm->do_set('postuserid'$postuserid);
$threaddm->do_set('userid'$userid);
$threaddm->do_set('username'$username);
$threaddm->do_set('pagetext'$pagetext);
$threaddm->do_set('title'$title);
$threaddm->do_set('visible'$visible);
$threaddm->do_set('allowsmilie''0'); //включить смайлики, значения 1/0
$threaddm->save();

//$threaddm->do_set('dateline', ''); //время создания темы, переменная типа timestamp
//$threaddm->do_set('views', '0'); //количество просмотров темы
//$threaddm->do_set('open', '1'); //закрытая тема 0, открытая 1 

require_once('./includes/functions_databuild.php'); 
build_forum_counters($forumid);
chdir($cwd); //конец, возвращаем рабочую директорию скрипта обратно
$new_treadid $threaddm->save();
?>
получаю
Fatal error: Cannot pass parameter 2 by reference in /home/www/htdocs/forum/site_q_test_passed_4_aim3.php on line 84

line 84 === $threaddm->do_set('allowsmilie', '0');
 
 
netwind
Гуру
 
netwind's Avatar
Default
1

ну значит там шото неправильно, у меня работает такой вариант:
Code:
$forumid=(int)qpc_post('forumid');
$foruminfo = fetch_foruminfo($forumid);
$threaddm =& datamanager_init('Thread_FirstPost', $vbulletin, ERRTYPE_ARRAY, 'threadpost');
$threaddm->set('forumid', $forumid);
$threaddm->set('userid', qpc_post('userid'));
$threaddm->set('title', qpc_post('title'));
$threaddm->set('pagetext', qpc_post('pagetext'));
$threaddm->set('allowsmilie', '1');
$threaddm->set('visible', '1');
$threaddm->set_info('forum', $foruminfo);
$threaddm->pre_save();
$threadid=0;
if(count($threaddm->errors) >= 1) {
  for($i=0; $i<count($threaddm->errors); $i++) {
     print "error:{$i}:{$threaddm->errors[$i]}\n";
  }
  exit;
}
$threadid = $threaddm->save();
build_thread_counters($threadid);
build_forum_counters($forumid);

Last edited by netwind : 05-31-2007 at 02:21 PM.
 
 
SerV
Продвинутый
Default
0

Quote:
Originally Posted by netwind View Post
ну значит там шото неправильно, у меня работает такой вариант:
Code:
$forumid=(int)qpc_post('forumid');
$foruminfo = fetch_foruminfo($forumid);
$threaddm =& datamanager_init('Thread_FirstPost', $vbulletin, ERRTYPE_ARRAY, 'threadpost');
$threaddm->set('forumid', $forumid);
$threaddm->set('userid', qpc_post('userid'));
$threaddm->set('title', qpc_post('title'));
$threaddm->set('pagetext', qpc_post('pagetext'));
$threaddm->set('allowsmilie', '1');
$threaddm->set('visible', '1');
$threaddm->set_info('forum', $foruminfo);
$threaddm->pre_save();
$threadid=0;
if(count($threaddm->errors) >= 1) {
  for($i=0; $i<count($threaddm->errors); $i++) {
     print "error:{$i}:{$threaddm->errors[$i]}\n";
  }
  exit;
}
$threadid = $threaddm->save();
build_thread_counters($threadid);
build_forum_counters($forumid);
таким методом функция не определена
Fatal error: Call to undefined function: qpc_post() in /home/www/htdocs/forum/site_q_test_passed_4_aim3.php on line 25


line 25 === $forumid=(int)qpc_post('forumid');

Добавлено через 7 минут
в любом случае вторая часть проблемы осталась:
что в первом варианте:
$newpost['message'] = 'aaaaaaaaaaaaaaa';
$newpost['title'] = 'aaaaaaaaaaaaaaaaa';

что во втором:
$pagetext = 'Сообщение тут';
$title = 'Заголовок тут';


возможно лишь создание текста.
а хотелось бы усложнить задачу
и вместо простого текста подставить $row['NAME'] и $row['PREVIEW_TEXT']

как правильно выполнить запрос?

вариант:
$newpost['message'] = $row['NAME'];
$newpost['title'] = $row['PREVIEW_TEXT'];

не работает. (хотя и ошибок не выдает)

Last edited by SerV : 05-31-2007 at 02:41 PM. Reason: Добавлено сообщение
 
 
netwind
Гуру
 
netwind's Avatar
Default
0

ну да, это же кусок кода, на который нужно посмотреть и сделать как тебе нужно.
 
 
SerV
Продвинутый
Default
0

Quote:
Originally Posted by netwind View Post
ну да, это же кусок кода, на который нужно посмотреть и сделать как тебе нужно.
это если знать КАК сделать.
вобщем понятно, жаль, хотелось конкретики, но спасибо за советы.
 
 
netwind
Гуру
 
netwind's Avatar
Default
1

КАК тебе нужно знаешь только ты)

документация, кстати http://www.vbulletin.com/docs/html/data_managers

функцию gpc_post просто не используй, у тебя же будут данные уже из mysql
 
 
SerV
Продвинутый
Default
0

Quote:
Originally Posted by netwind View Post
КАК тебе нужно знаешь только ты)
Премножественно благодарен
я хоть и ламер, но нашел несколько полезных идеи.
в итоге - еще раз просмотрев код, нашел несколько ошибок.
итого - имеем 2 рабочих скрипта:

первый вынимает новость из базы данных сайта и выводит в html, который и виден пользователям

PHP Code:
<?
function ShowTable($name){
  
MYSQL_CONNECT("хост""пароль""логин") OR DIE("Unable to connect");
  @
MYSQL_SELECT_DB("база_данных") OR DIE("Unable to select database");
  
$query "select DATE_CREATE,NAME,PREVIEW_TEXT,XML_ID
                    from 
$name
                                                WHERE IBLOCK_ID ='55'
                                                UNION
                                                select DATE_CREATE,NAME,PREVIEW_TEXT,XML_ID
                  from 
$name
                                                WHERE IBLOCK_ID ='45'
                                                UNION
                                                select DATE_CREATE,NAME,PREVIEW_TEXT,XML_ID
                  from 
$name
                                                WHERE IBLOCK_ID ='33'
                                                UNION
                                                select DATE_CREATE,NAME,PREVIEW_TEXT,XML_ID
                  from 
$name
                                                WHERE IBLOCK_ID ='29'
                                                ORDER BY DATE_CREATE DESC LIMIT 1"
;
  
$result MYSQL_QUERY($query);
  
$total_rows mysql_num_rows($result);
  if (!
$total_rows) {
    print 
"<HTML><BODY><h1>новостей нет :(</h1></BODY></HTML>";
    return;
  }
while (
$row mysql_fetch_array($result)) {
  print 
"<html><head><meta http-equiv='Content-Type' content='text/html; charset=windows-1251'><title></title></head><BODY>";
  print 
"<table width='100%' border='0' cellspacing='0' cellpadding='0' align='center'>";
        print     
"<tr>".
             
"<td width='5%' valign='middle' class='style1'><font class='style1'>".$row['DATE_CREATE']."</font></td>".
    
"<td width='10' valign='middle'>".
                
"<td width='15%' valign='middle' class='style1'><a class='style1' target='_blank' href='detail.php?ID=".$row['XML_ID']."'>".$row['NAME']."</a></td>".
    
"<td width='10' valign='middle'>".
             
"<td valign='middle' class='style1'><font class='style1'>".$row['PREVIEW_TEXT']."</font></td>".
             
"</tr>";
    }
  print 
"</table>";
  print 
"</BODY></HTML>";
}
?>
<?php
ShowTable
("b_iblock_element");
?>

второй - по идее должен создать сообщение в форуме, с данными полученными из базы сайта... если быть точным то эти данные:
$row['NAME']
и
$row['PREVIEW_TEXT']

PHP Code:
<?php
require_once('./global.php');
require_once(
'./includes/class_dm.php');
require_once(
'./includes/class_dm_threadpost.php');

$threaddm = new vB_DataManager_Thread_FirstPost($vbulletinERRTYPE_STANDARD);

$forumid 197;
$userid 1395;
$username 'News';
$pagetext 'Сообщение тут';
$title 'Заголовок тут';
$foruminfo fetch_foruminfo($forumid);
$threaddm->set('forumid'$forumid);
$threaddm->set('userid'$userid);
$threaddm->set('title'$title);
$threaddm->set('pagetext'$pagetext);
$threaddm->set('allowsmilie''1');
$threaddm->set('visible''1');
$threaddm->set_info('forum'$foruminfo);
$threaddm->pre_save();
$threadid=0;
if(
count($threaddm->errors) >= 1) {
  for(
$i=0$i<count($threaddm->errors); $i++) {
     print 
"error:{$i}:{$threaddm->errors[$i]}\n";
  }
  exit;
}
$threadid $threaddm->save();

require_once(
'./includes/functions_databuild.php');

build_thread_counters($threadid);
build_forum_counters($forumid);
?>
как бы заставить, вместо
$pagetext = 'Сообщение тут';
$title = 'Заголовок тут';

забрать данные из первого скрипта...

или может быть сохранить результаты первого в файл?
а потом как то подключить к
$pagetext =
$title =

?
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off




All times are GMT +4. The time now is 07:19 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.