[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Автоматическое добавление новостей в DLE
Vlad84
Здравствуйте!

Может ли кто-нибудь помочь в создании скрипта для автоматического добавления новостей в DLE на свой сайт?
В общем, есть инфа в следующем виде:

Код
<?
$title = "Заголовок новости";
$content = "Текст новости";
include 'add.php';
?>


Скрипт add.php должен будет использовать информацию из $title и $content для добавления в базу mysql.
При обращении к странице с этим скриптом, новость должна автоматически добавляться в базу, а на экран выводиться сообщение, что добавление прошло успешно. Это нужно для быстрого наполнения сайта контентом.
В add.php должны быть напрямую указаны логин и пароль пользователя и категория новостей (цифрами). А также всё остальное, необходимое для правильного добавления в базу.

$title - пойдёт в заголовок новости,
$content - пойдёт в full_story (разумеется, после предварительной обработки тегов),
а short_story будет сгенерирован из $content (скрипт для этого уже есть).

Можно ли это осуществить?

Содержимое файла addnews.php движка DLE 5.5:

Код
<?php

if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
}

if (isset ($_REQUEST['mod'])) $do = $_POST['mod']; else $mod = "";

include_once(ENGINE_DIR.'/inc/parse.class.php');
$parse = new ParseFilter(Array(), Array(), 1, 1);


if (isset($_REQUEST['mod']) AND $_REQUEST['mod'] == "addnews" AND $is_logged AND $user_group[$member_id['user_group']]['allow_adds']){

$allow_comm = intval($_POST['allow_comm']);
if ($user_group[$member_id['user_group']]['allow_main']) $allow_main = intval($_POST['allow_main']); else $allow_main = 0;
$approve = intval($_POST['approve']);
$allow_rating = intval($_POST['allow_rating']);
if ($user_group[$member_id['user_group']]['allow_fixed']) $news_fixed = intval($_POST['news_fixed']); else $news_fixed = 0;

//Список категорий
if (!count($_REQUEST['catlist'])) {$catlist = array (); $catlist[] = '0';} else $catlist = $_REQUEST['catlist'];
$category_list = $db->safesql(implode(',', $catlist));

if (!$user_group[$member_id['user_group']]['moderation']) {
$approve = 0;
$allow_comm = 1;
$allow_main = 1;
$allow_rating = 1;
$news_fixed = 0;
}

if ($approve) $msg = $lang['add_ok_1']; else $msg = $lang['add_ok_2'];

$allow_list = explode (',', $user_group[$member_id['user_group']]['cat_add']);

if ($user_group[$member_id['user_group']]['moderation']) {
foreach ($catlist as $selected) {
if ($allow_list[0] != "all" AND !in_array($selected, $allow_list) AND $member_id['user_group'] != "1") { $approve = 0; $msg = $lang['add_ok_3'];}
}
}

//Короткая и полная новость
if ($config['allow_site_wysiwyg'] == "yes"){
$full_story = $db->safesql($parse->BB_Parse($parse->process($_POST['full_story'])));
$short_story = $db->safesql($parse->BB_Parse($parse->process($_POST['short_story'])));
$allow_br = 0;
} else {
$full_story = $db->safesql($parse->BB_Parse($parse->process($_POST['full_story']), false));
$short_story = $db->safesql($parse->BB_Parse($parse->process($_POST['short_story']), false));
$allow_br = 1;
}

$parse->ParseFilter();
$title = $db->safesql($parse->process($_POST['title']));
$alt_name = trim($parse->process(stripslashes($_POST['alt_name'])));

$stop = "";

$add_module = "yes";
$xfieldsaction = "init";
$category = $catlist;
include(ENGINE_DIR.'/inc/xfields.php');

$filecontents = array ();

if ($config['safe_xfield']) {
$parse->ParseFilter();
$parse->safe_mode = true;
} else {
$parse = new ParseFilter(Array(), Array(), 1, 1);
}

if (!empty($postedxfields)) {
foreach ($postedxfields as $xfielddataname => $xfielddatavalue) {
if ($xfielddatavalue == "") { continue;}

$xfielddatavalue = $db->safesql($parse->BB_Parse($parse->process($xfielddatavalue), false));

$xfielddataname = $db->safesql($xfielddataname);

$xfielddataname = str_replace("|", "|", $xfielddataname);
$xfielddataname = str_replace("\r\n", "__NEWL__", $xfielddataname);
$xfielddatavalue = str_replace("|", "|", $xfielddatavalue);
$xfielddatavalue = str_replace("\r\n", "__NEWL__", $xfielddatavalue);
$filecontents[] = "$xfielddataname|$xfielddatavalue";
}

$filecontents = implode("||", $filecontents);
} else $filecontents = '';


if ($alt_name == "" or !$alt_name)
$alt_name = totranslit(stripslashes($title));
else
$alt_name = totranslit($alt_name);

if(trim($title) == "" or !$title){ $stop .= $lang['add_err_1']; }
if(strlen($title) > 200){ $stop .= $lang['add_err_2']; }
if(trim($short_story) == "" or !$short_story){ $stop .= $lang['add_err_5']; }
if ($stop) {$stop .= "<a href=\"java script:history.go(-1)\">$lang[all_prev]</a>"; msgbox ($lang['add_err_6'], $stop);}

if (!$stop){

$id = (isset($_REQUEST['id'])) ? intval($_REQUEST['id']) : 0;
$found = false;

if ($id) {
$row = $db->super_query("SELECT * FROM " . PREFIX . "_post where id = '$id' and approve = '0'");
if ($id == $row['id'] AND ($member_id['name'] == $row['autor'] OR $user_group[$member_id['user_group']]['allow_all_edit'])) $found = true; else $found = false;
}

if ($found) {

$db->query("UPDATE " . PREFIX . "_post set title='$title', short_story='$short_story', full_story='$full_story', xfields='$filecontents', category='$category_list', alt_name='$alt_name', allow_comm='$allow_comm', approve='$approve', allow_main='$allow_main', allow_rate='$allow_rating', fixed='$news_fixed', allow_br='$allow_br' where id='$id'");

} else {

$added_time = time()+ ($config['date_adjust']*60);
$thistime = date ("Y-m-d H:i:s", $added_time);

$db->query("INSERT INTO " . PREFIX . "_post (date, autor, short_story, full_story, xfields, title, category, alt_name, allow_comm, approve, allow_main, fixed, allow_rate, allow_br) values ('$thistime', '$member_id[name]', '$short_story', '$full_story', '$filecontents', '$title', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_rating', '$allow_br')");
$row = $db->super_query("SELECT id FROM " . PREFIX . "_post ORDER BY id desc LIMIT 0,1");
$db->query("UPDATE " . PREFIX . "_images set news_id='{$row['id']}' where author = '$member_id[name]' AND news_id = '0'");
$db->query("UPDATE " . PREFIX . "_users set news_num=news_num+1 where user_id='$member_id[user_id]'");

}

if ($config['allow_alt_url'] == "yes")
msgbox ($lang['add_ok'], "{$msg} <a href=\"{$config['http_home_url']}"."addnews.html\">$lang[add_noch]</a> $lang[add_or] <a href=\"{$config['http_home_url']}\">$lang[all_prev]</a>");
else
msgbox ($lang['add_ok'], "{$msg} <a href=\"$PHP_SELF?do=addnews\">$lang[add_noch]</a> $lang[add_or] <a href=\"{$config['http_home_url']}\">$lang[all_prev]</a>");

if ($approve) clear_cache();

}

} elseif ($is_logged AND $user_group[$member_id['user_group']]['allow_adds'])
{

$tpl->load_template('addnews.tpl');

$addtype = "addnews";

if ($config['allow_site_wysiwyg'] == "yes"){
$tpl->copy_template = "<script language=JavaScript src='".$config['http_home_url']."engine/editor/scripts/innovaeditor.js'></script>\n".$tpl->copy_template;
include_once ENGINE_DIR.'/editor/shortsite.php';
include_once ENGINE_DIR.'/editor/fullsite.php';
$bb_code = "";
}
else include_once ENGINE_DIR.'/modules/bbcode.php';

if ($config['allow_site_wysiwyg'] != "yes"){
$tpl->set('[not-wysywyg]','');
$tpl->set('[/not-wysywyg]','');
} else $tpl->set_block("'\\[not-wysywyg\\].*?\\[/not-wysywyg\\]'si",'');

if ($config['allow_site_wysiwyg'] == "yes"){
$tpl->set('{shortarea}',$shortarea);
$tpl->set('{fullarea}',$fullarea);

} else {
$tpl->set('{shortarea}','');
$tpl->set('{fullarea}','');
}


$id = (isset($_REQUEST['id'])) ? intval($_REQUEST['id']) : 0;
$found = false;

if ($id) {
$row = $db->super_query("SELECT * FROM " . PREFIX . "_post where id = '$id' and approve = '0'");
if ($id == $row['id'] AND ($member_id['name'] == $row['autor'] OR $user_group[$member_id['user_group']]['allow_all_edit'])) $found = true; else $found = false;
}

if ($found){
$cat_list = explode (',', $row['category']);
$categories_list = CategoryNewsSelection($cat_list, 0);
$tpl->set('{title}',$parse->decodeBBCodes($row['title'], false));
$tpl->set('{alt-name}',$row['alt_name']);

if ($config['allow_site_wysiwyg'] == "yes" OR $row['allow_br'] != '1'){
$row['short_story'] = $parse->decodeBBCodes($row['short_story'],TRUE,$config['allow_site_wysiwyg']);
$row['full_story'] = $parse->decodeBBCodes($row['full_story'],TRUE,$config['allow_site_wysiwyg']);
} else {
$row['short_story'] = $parse->decodeBBCodes($row['short_story'], false);
$row['full_story'] = $parse->decodeBBCodes($row['full_story'], false);
}

$tpl->set('{short-story}',$row['short_story']);
$tpl->set('{full-story}',$row['full_story']);

}
else {
$categories_list = CategoryNewsSelection(0, 0);
$tpl->set('{title}', '');
$tpl->set('{alt-name}','');
$tpl->set('{short-story}','');
$tpl->set('{full-story}','');

}

$xfieldsaction = "categoryfilter";
include(ENGINE_DIR.'/inc/xfields.php');

$cats ="<select class=rating name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this.value)\" style=\"width:150px;height:200px;\" multiple>";
$cats .= $categories_list;
$cats .= "</select>";

$tpl->set('{bbcode}',$bb_code);
$tpl->set('{category}',$cats);

if ($user_group[$member_id['user_group']]['moderation']){
$admintag = "<input type=\"checkbox\" name=\"allow_comm\" value=\"1\" checked>". $lang['add_al_com'];
if ($user_group[$member_id['user_group']]['allow_main']) $admintag .="&nbsp;&nbsp;&nbsp;&nbsp;<input type=\"checkbox\" name=\"allow_main\" value=\"1\" checked>". $lang['add_al_m'];
$admintag .= "<br><input type=\"checkbox\" name=\"approve\" value=\"1\" checked> $lang[add_al_ap]<br><input type=\"checkbox\" name=\"allow_rating\" value=\"1\" checked> $lang[addnews_allow_rate]";
if ($user_group[$member_id['user_group']]['allow_fixed']) $admintag .="<br><input type=\"checkbox\" name=\"news_fixed\" value=\"1\"> $lang[add_al_fix]";

$tpl->set('{admintag}',$admintag);
} else $tpl->set('{admintag}','');

if ($is_logged and $member_id['user_group'] < 3){
$tpl->set('[urltag]','');
$tpl->set('[/urltag]','');
} else $tpl->set_block("'\\[urltag\\].*?\\[/urltag\\]'si","");

if ($found) {

$xfieldsaction = "list";
$xfieldsid = $row['xfields'];
$xfieldscat = $row['category'];
include(ENGINE_DIR.'/inc/xfields.php');

} else {

$xfieldsaction = "list";
$xfieldsadd = true;
include(ENGINE_DIR.'/inc/xfields.php');

}

$tpl->set('{xfields}',$output);


$script = "
<script LANGUAGE=\"JavaScript\">
function preview(){";

if ($config['allow_site_wysiwyg'] == "yes"){
$script .= "document.getElementById('short_story').value = oEdit1.getXHTMLBody();
document.getElementById('full_story').value = oEdit2.getXHTMLBody();";
}

$script .= "if(document.entryform.short_story.value == '' || document.entryform.title.value == ''){ alert('$lang[add_err_7]'); }
else{
dd=window.open('','prv','height=400,width=750,resizable=0,scrollbars=1')
document.entryform.mod.value='preview';document.entryform.action='{$config['http_home_url']}engine/preview.php';document.entryform.target='prv'
document.entryform.submit();dd.focus()
setTimeout(\"document.entryform.mod.value='addnews';document.entryform.action='';document.entryform.target='_self'\",500)
}
}
</SCRIPT>";

if ($config['allow_site_wysiwyg'] == "yes")
$script .= "<form method=post name=\"entryform\" id=\"entryform\" onsubmit=\"document.getElementById('short_story').value = oEdit1.getXHTMLBody(); document.getElementById('full_story').value = oEdit2.getXHTMLBody(); if(document.entryform.title.value == '' || document.entryform.short_story.value == ''){alert('$lang[add_err_7]');return false}\" action=\"\">";
else
$script .= "<form method=post name=\"entryform\" id=\"entryform\" onsubmit=\"if(document.entryform.title.value == '' || document.entryform.short_story.value == ''){alert('$lang[add_err_7]');return false}\" action=\"\">";


$tpl->copy_template = $categoryfilter.$script.$tpl->copy_template."<input type=\"hidden\" name=\"mod\" value=\"addnews\"></form>";

$tpl->compile('content');
$tpl->clear();

} else msgbox ($lang['all_info'], "$lang[add_err_8]<br><a href=\"java script:history.go(-1)\">$lang[all_prev]</a>");
?>




Спустя 12 дней, 13 часов, 28 минут, 23 секунды (3.04.2008 - 00:14) qpayct написал(а):
а что значит DLE??
вобчем то это не сложно..
и зачем столько расписывать то??
навряд ли у кого то хватит терпения это разбирать....

Спустя 13 часов, 39 минут, 59 секунд (3.04.2008 - 13:54) qpayct написал(а):
http://magpierss.sourceforge.net/
полезная ссылочка по теме

Спустя 1 день, 1 час, 40 минут, 14 секунд (4.04.2008 - 15:34) Revan написал(а):
И та правда смотря на обьем кода даже профисионалы его читать не станут.

Спустя 1 год, 7 месяцев, 4 дня, 5 часов, 35 минут, 18 секунд (8.11.2009 - 22:10) Guest написал(а):
Ну а что-то поконкретнее, по-русски

Спустя 24 минуты, 1 секунда (8.11.2009 - 22:34) Grazor написал(а):
оффтопик:

оформляйте, пожалуйста, код в теги [ php] [ /php], длинные листинги скрывайте в [ more] [ /more]

не осилил всё это прочитать wacko.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.