VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
дальше пытаюсь из полученной инфы автоматически создать тему под юзверем.
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'] - это элементы новой темы.
проблема в том, что они воспринимают простой текст, а я бы хотел чтобы они брали результат полученный из базы.
<?
$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($vbulletin, ERRTYPE_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
таким методом функция не определена
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']
функцию gpc_post просто не используй, у тебя же будут данные уже из mysql
@SerV
Продвинутый
Join Date: Aug 2005
Location: Moscow
Posts: 21
Версия vB: 3.6.5
Reputation:
Опытный 17
Репутация в разделе: 9
0
Quote:
Originally Posted by netwind
КАК тебе нужно знаешь только ты)
Премножественно благодарен
я хоть и ламер, но нашел несколько полезных идеи.
в итоге - еще раз просмотрев код, нашел несколько ошибок.
итого - имеем 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']