View file cms-master/application/maxsite/admin/plugins/admin_comments/edit.php

File size: 10.53Kb
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');?>

<h1><?= t('Редактирование комментария') ?></h1>
<p><a href="<?= getinfo('site_admin_url') . 'comments' ?>"><?= t('К списку комментариев') ?></a></p>

<?php

	$CI = & get_instance();

	$id = mso_segment(4); // номер пользователя по сегменту url

	// проверим, чтобы это было число
	$id1 = (int) $id;
	if ( (string) $id != (string) $id1 ) $id = false; // ошибочный id

	if ($id) // есть корректный сегмент
	{
		require_once( getinfo('common_dir') . 'comments.php' ); // функции комментариев
		
		# отредактировать комментарий
		if ( $post = mso_check_post(array('f_session_id', 'f_submit', 'f_comments_content', 'f_comments_date', 'f_comments_author', 'f_comments_approved', 'f_comments_email_subscribe')) )
		{
			mso_checkreferer();
			// pr($post);

			$CI->db->where('comments_id', $id);

			$data = array(
				'comments_content' => $post['f_comments_content'],
				'comments_date' => $post['f_comments_date'],
				'comments_approved' => (int) $post['f_comments_approved']
			);

			if ( substr($post['f_comments_author'], 0, 1) == '0' )
			{
				if ( !isset($post['f_comments_author_name']) or trim($post['f_comments_author_name']) == '' )
				{
					$data['comments_author_name'] = t('Аноним');
				}
				else
				{
					$data['comments_author_name'] = mso_xss_clean(trim($post['f_comments_author_name']));
				}
				$data['comments_users_id'] = 0;
				$data['comments_comusers_id'] = 0;
			}
			elseif ( substr($post['f_comments_author'], 0, 1) == '1' )
			{
				$data['comments_users_id'] = (int) substr($post['f_comments_author'], 2);
				$data['comments_comusers_id'] = 0;
			}
			else
			{
				$data['comments_comusers_id'] = (int) substr($post['f_comments_author'], 2);
				$data['comments_users_id'] = 0;
			}

			if ($CI->db->update('comments', $data ) )
				echo '<div class="update">' . t('Обновлено!') . '</div>';
			else
				echo '<div class="error">' . t('Ошибка обновления') . '</div>';

			$CI->db->cache_delete_all();
			
			// синхронизация количества комментариев у комюзеров
			mso_comuser_update_count_comment();

			if ($post['f_comments_email_subscribe']) // разослать подписчикам
			{
				require_once( getinfo('common_dir') . 'comments.php' );

				// получим по номеру коммента номер страницы и её титул - нужно для отправки
				$CI->db->select('comments_page_id, page_title');
				$CI->db->from('comments, page');
				$CI->db->where('comments_page_id = page_id');
				$CI->db->where('comments_id', $id);

				$query = $CI->db->get();
				if ($query->num_rows() > 0)
				{
					$row = $query->row_array();

					mso_email_message_new_comment_subscribe(array(
						'id' => $id,
						'comments_approved' => (int) $post['f_comments_approved'],
						'comments_content' => $post['f_comments_content'],
						'comments_page_id' => $row['comments_page_id'],
						'page_title' => $row['page_title']
						));
				}
			}
		}
		elseif ($post = mso_check_post(array('f_session_id', 'f_submit_delete')))
		{
			// удалить комментарий
			mso_checkreferer();

			$CI->db->where_in('comments_id', $id);
			if ( $CI->db->delete('comments') )
			{
				mso_flush_cache();
				
				// синхронизация количества комментариев у комюзеров
				mso_comuser_update_count_comment();
				mso_redirect('admin/comments');
			}
			else 
			{
				echo '<div class="error">' . t('Ошибка удаления') . '</div>';
			}
		}

		# вывод данных комментария
		$CI->db->select('comments.*, users.users_nik, users.users_id, comusers.comusers_nik, page.page_title, page.page_slug, page.page_id');
		$CI->db->from('comments');
		$CI->db->join('users', 'users.users_id = comments.comments_users_id', 'left');
		$CI->db->join('comusers', 'comusers.comusers_id = comments.comments_comusers_id', 'left');
		$CI->db->join('page', 'page.page_id = comments.comments_page_id', 'left');
		$CI->db->where('comments_id', $id);

		$query = $CI->db->get();

		// если есть данные, то выводим
		if ($query->num_rows() > 0)
		{
			$row = $query->row_array();
			
			//pr($row);

			$info_page = '<p><a href="' . getinfo('siteurl') . 'page/' . $row['page_slug'] . '#comment-' . $id . '">'
				. t('Комментарий к ') . '«'. htmlspecialchars($row['page_title']) . '»</a>'
				. ' | <a href="' . getinfo('site_admin_url') . 'page_edit/' . $row['page_id'] . '">'
				. t('Редактировать запись') . '</a>'
				. '</p>';
			
			if ( $row['users_nik'] )
			{
				echo '<p><strong>' . t('Автор') . '</strong>: '
				. '<a href="' . getinfo('site_admin_url') . 'users/edit/' . $row['users_id'] . '">'
				. $row['users_nik']
				. '</a>'
				. ' | ' . $row['comments_author_ip']
				. '</p>'
				. $info_page;
				
			}
			elseif ( $row['comusers_nik'] )
			{
				echo '<p><strong>' . t('Автор') . '</strong>: '
				. '<a href="' . getinfo('site_admin_url') . 'comusers/edit/' . $row['comments_comusers_id'] . '">'
				. $row['comusers_nik'] . '</a>'
				. ' | <a href="' . getinfo('site_url') . 'users/' . $row['comments_comusers_id'] . '">' . t('Персональная страница') . '</a>'
				. ' | IP: ' . $row['comments_author_ip']
				. ' | № ' . $row['comments_comusers_id']
				. '</p>'
				. $info_page;
				
			}
			else 
			{
				echo '<p><strong>' . t('Автор') . '</strong>: '
				. htmlspecialchars($row['comments_author_name'])
				. ' | ' . $row['comments_author_ip']
				. '</p>'
				. $info_page;
			}
		

			echo '<form method="post" class="comment_edit">' . mso_form_session('f_session_id');
			//echo '<h3>' . t('Текст') . '</h3>';

			// хуки для текстового поля комментирования
			mso_hook('admin_comment_edit');
			mso_hook('comments_content_start');


			$text = mso_xss_clean($row['comments_content']);
			if ($text != $row['comments_content'])
			{
				echo '<div class="error">' . t('Внимание! Возможна XSS-атака! Полный текст комментария') . '</div><textarea rows="10">'
					. htmlspecialchars($row['comments_content']) . '</textarea><p>' . t('Исправленный текст комментария') . '</p>';
			}

			echo '<textarea name="f_comments_content" id="comments_content" rows="10">' . htmlspecialchars($text) . '</textarea>';

			echo '<h3>' . t('Дата') . '</h3>
				<p><input name="f_comments_date" type="text" value="' . htmlspecialchars($row['comments_date']) .'"></p>';

			$comments_author_name = trim(htmlspecialchars($row['comments_author_name']));
			if ( !($comments_author_name or $row['comments_users_id'] or $row['comments_comusers_id']) ) 
			{
				$comments_author_name = t('Аноним');
			}
			
			echo '<h3>' . t('Автор') . '</h3>';

			$out  = '<p><input name="f_comments_author_name" type="text" value="' . $comments_author_name . '"><select name="f_comments_author">' . NR;
			$out .= '<option value="0"' . ( (!($row['comments_users_id'] or $row['comments_comusers_id']))?(' selected="selected"'):('') ) . '>' . t('Аноним') . '</option>' . NR;

			$CI->db->select('users_id, users_nik');
			$users = $CI->db->get('users');
			if ($users->num_rows() > 0) // больше нуля, можно работать
			{
				$out .= '<optgroup label="' . t('Авторы') . '">' . NR;
				foreach ($users->result_array() as $user) // обходим в цикле
				{
					$out .= '<option value="1-'. $user['users_id']. '"'. ( ($row['comments_users_id'] == $user['users_id'])?(' selected="selected"'):('') ).'>' . $user['users_nik'] . '</option>'. NR;
				}
				$out .= '</optgroup>' . NR;
			}

			$CI->db->select('comusers_id , comusers_nik ');
			$users = $CI->db->get('comusers');
			if ($users->num_rows() > 0) // больше нуля, можно работать
			{
				$out .= '<optgroup label="' . t('Комментаторы') . '">' . NR;
				foreach ($users->result_array() as $user) // обходим в цикле
				{
					if (!$user['comusers_nik']) 
						$user['comusers_nik'] = '! ' . t('Комментатор') . ' ' . $user['comusers_id'];
					
					$user['comusers_nik'] = mso_xss_clean($user['comusers_nik']);
					
					$out .= '<option value="2-'. $user['comusers_id']. '"'. ( ($row['comments_comusers_id'] == $user['comusers_id'])?(' selected="selected"'):('') ).'>' . $user['comusers_nik'] . '</option>'. NR;
					
				}
				$out .= '</optgroup>' . NR;
			}
			
			$out .= '</select></p>' . NR;
			
			echo '<p>' . t('Выберите пользователя или комментатора, которого вы хотите назначить автором комментария, либо выберите «Аноним» и введите имя анонимного комментатора.') . '</p>' . $out;

			$checked1 = $checked2 = '';

			if ($row['comments_approved'])
				$checked1 = 'checked="checked"';
			else
				$checked2 = 'checked="checked"';

			echo '<p><b>'. t('Модерация') .':</b> <label class="padding10"><input type="radio" name="f_comments_approved" value="1" ' . $checked1 . '> ' . t('Одобрить')
				. '</label> <label><input type="radio" name="f_comments_approved" value="0" ' . $checked2 . '> ' . t('Запретить')
				. '</label></p>';

			echo '<p><input type="hidden" name="f_comments_email_subscribe" value="0"><label><input type="checkbox" name="f_comments_email_subscribe" value="1" ' . $checked2 . '> '
				. t('Сразу разослать подписчикам')
				. '</label></p>';
			echo '<p class="br"><button type="submit" name="f_submit" class="button i-save">' . t('Сохранить') . '</button>' 
				. ' <button type="submit" name="f_submit_delete" onClick="if(confirm(\'' . t('Уверены?') . '\')) {return true;} else {return false;}" class="button i-remove">' . t('Удалить комментарий') . '</button>'
				. '</p>';


			echo '</form>';
		}
		else echo '<div class="error">' . t('Ошибочный комментарий') . '</div>';
	}
	else
	{
		echo '<div class="error">' . t('Ошибочный запрос') . '</div>'; // id - ошибочный
	}
	
	
# end file