git-svn-id: https://192.168.0.254/svn/Proyectos.FundacionLQDVI_WebCongresos/trunk@2 94ccb1af-fd9d-d947-8d90-7f70ea60afc8
227 lines
8.4 KiB
PHP
227 lines
8.4 KiB
PHP
<?php
|
|
/**
|
|
* @version $Id: kunena.pdf.php 2059 2010-03-14 03:42:18Z mahagr $
|
|
* Kunena Component
|
|
* @package Kunena
|
|
*
|
|
* @Copyright (C) 2008 - 2009 Kunena Team All rights reserved
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
|
|
* @link http://www.kunena.com
|
|
*
|
|
* Based on FireBoard Component
|
|
* @Copyright (C) 2006 - 2007 Best Of Joomla All rights reserved
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
|
|
* @link http://www.bestofjoomla.com
|
|
*
|
|
* Based on Joomlaboard Component
|
|
* @copyright (C) 2000 - 2004 TSMF / Jan de Graaff / All Rights Reserved
|
|
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
|
|
* @author TSMF & Jan de Graaff
|
|
**/
|
|
|
|
defined( '_JEXEC' ) or die('Restricted access');
|
|
|
|
class fbpdfwrapper {
|
|
// small wrapper class for J1.5 to emulate Cezpdf-class
|
|
var $_title = '';
|
|
var $_header = '';
|
|
var $_text = '';
|
|
function __construct() { $this->_title = $this->_header = $this->_text = ''; }
|
|
function ezSetCmMargins($v1, $v2, $v3, $v4) {}
|
|
function selectFont($font) {}
|
|
function openObject() { return 0; }
|
|
function saveState() {}
|
|
function setStrokeColor($v1, $v2, $v3, $v4) {}
|
|
function line($v1, $v2, $v3, $v4) {}
|
|
function addText($v1, $v2, $v3, $text) {
|
|
if ($this->_title == '') { $this->_title = $text; } else { $this->_header = $text; }
|
|
}
|
|
function restoreState() {}
|
|
function closeObject() {}
|
|
function addObject($v1, $v2) {}
|
|
function ezSetDy($v1) {}
|
|
function ezText($text, $size) {
|
|
$this->_text .= '<font size='. ($size-11) .'>' . str_replace("\n", '<br/>', $text) . '</font><br/>';
|
|
}
|
|
function ezStream() {
|
|
$options = array('margin-header' => 5, 'margin-footer' => 10, 'margin-top' => 20,
|
|
'margin-bottom' => 20, 'margin-left' => 15, 'margin-right' => 15);
|
|
$pdfDoc =& JDocument::getInstance('pdf', $options);
|
|
$pdfDoc->setTitle($this->_title);
|
|
$pdfDoc->setHeader($this->_header);
|
|
$pdfDoc->setBuffer($this->_text);
|
|
header('Content-Type: application/pdf');
|
|
header('Content-disposition: inline; filename="file.pdf"', true);
|
|
echo $pdfDoc->render();
|
|
}
|
|
}
|
|
|
|
function dofreePDF($kunena_db)
|
|
{
|
|
global $aro_group;
|
|
|
|
$app =& JFactory::getApplication();
|
|
|
|
$kunena_acl = &JFactory::getACL();
|
|
$kunena_my = &JFactory::getUser();
|
|
$fbConfig =& CKunenaConfig::getInstance();
|
|
|
|
require_once (KUNENA_PATH_LIB .DS. 'kunena.authentication.php');
|
|
$is_Mod = 0;
|
|
|
|
$catid = JRequest::getInt('catid', 2);
|
|
|
|
if (!$is_admin)
|
|
{
|
|
$kunena_db->setQuery("SELECT userid FROM #__fb_moderation WHERE catid='{$catid}' AND userid='{$kunena_my->id}'");
|
|
|
|
if ($kunena_db->loadResult()) {
|
|
$is_Mod = 1;
|
|
}
|
|
}
|
|
else {
|
|
$is_Mod = 1;
|
|
} //superadmins always are
|
|
|
|
if (!$is_Mod)
|
|
{
|
|
//get all the info on this forum:
|
|
$kunena_db->setQuery("SELECT id, pub_access, pub_recurse, admin_access, admin_recurse FROM #__fb_categories WHERE id='{$catid}'");
|
|
$row = $kunena_db->loadObjectList();
|
|
check_dberror("Unable to load category detail.");
|
|
|
|
|
|
$allow_forum = explode(',', CKunenaTools::getAllowedForums($kunena_my->id, $aro_group->id, $kunena_acl));
|
|
}
|
|
|
|
if ($is_Mod || in_array($catid, $allow_forum))
|
|
{
|
|
$id = JRequest::getInt('id', 1);
|
|
$catid = JRequest::getInt('catid', 2);
|
|
//first get the thread id for the current post to later on determine the parent post
|
|
$kunena_db->setQuery("SELECT thread FROM #__fb_messages WHERE id='{$id}' AND catid='{$catid}'");
|
|
$threadid = $kunena_db->loadResult();
|
|
//load topic post and details
|
|
$kunena_db->setQuery("SELECT a.*, b.* FROM #__fb_messages AS a, #__fb_messages_text AS b WHERE a.thread='{$threadid}' AND a.catid='{$catid}' AND a.parent='0' AND a.id=b.mesid");
|
|
$row = $kunena_db->loadObjectList();
|
|
check_dberror("Unable to load message details.");
|
|
|
|
if (file_exists(KUNENA_ROOT_PATH .DS. 'includes/class.ezpdf.php')) {
|
|
include (KUNENA_ROOT_PATH .DS. 'includes/class.ezpdf.php');
|
|
$pdf = new Cezpdf('a4', 'P'); //A4 Portrait
|
|
} elseif (class_exists('JDocument')) {
|
|
$pdf = new fbpdfwrapper();
|
|
} else {
|
|
echo 'No supported pdf class found!';
|
|
exit;
|
|
}
|
|
|
|
if (empty($row)) { //if the messages doesn't exist don't need to continue
|
|
//Doesn't work Fatal error: Call to undefined method CKunenaLink::GetKunenaURL()
|
|
//$app->redirect ( CKunenaLink::GetKunenaURL(true), _KUNENA_PDF_NOT_GENERATED_MESSAGE_DELETED );
|
|
} else {
|
|
$mes_text = $row[0]->message;
|
|
filterHTML($mes_text);
|
|
|
|
$pdf->ezSetCmMargins(2, 1.5, 1, 1);
|
|
$pdf->selectFont('./fonts/Helvetica.afm'); //choose font
|
|
|
|
$all = $pdf->openObject();
|
|
$pdf->saveState();
|
|
$pdf->setStrokeColor(0, 0, 0, 1);
|
|
|
|
// footer
|
|
$pdf->line(10, 40, 578, 40);
|
|
$pdf->line(10, 822, 578, 822);
|
|
$pdf->addText(30, 34, 6, $fbConfig->board_title . ' - ' . $app->getCfg('sitename'));
|
|
|
|
$strtmp = _KUNENA_PDF_VERSION;
|
|
$strtmp = str_replace('%version%', "NEW VERSION GOES HERE" /*$fbConfig->version*/, $strtmp); // TODO: fxstein - Need to change version handling
|
|
$pdf->addText(250, 34, 6, $strtmp);
|
|
$strtmp = _KUNENA_PDF_DATE;
|
|
$strtmp = str_replace('%date%', date('j F, Y, H:i', CKunenaTools::fbGetShowTime()), $strtmp);
|
|
$pdf->addText(450, 34, 6, $strtmp);
|
|
|
|
$pdf->restoreState();
|
|
$pdf->closeObject();
|
|
$pdf->addObject($all, 'all');
|
|
$pdf->ezSetDy(30);
|
|
|
|
$txt0 = $row[0]->subject;
|
|
$pdf->ezText($txt0, 14);
|
|
$pdf->ezText(_VIEW_POSTED . " " . $row[0]->name . " - " . date(_DATETIME, $row[0]->time), 8);
|
|
$pdf->ezText("_____________________________________", 8);
|
|
//$pdf->line( 10, 780, 578, 780 );
|
|
|
|
$txt3 = "\n";
|
|
$txt3 .= stripslashes($mes_text);
|
|
$pdf->ezText($txt3, 10);
|
|
$pdf->ezText("\n============================================================================\n\n", 8);
|
|
//now let's try to see if there's more...
|
|
$kunena_db->setQuery("SELECT a.*, b.* FROM #__fb_messages AS a, #__fb_messages_text AS b WHERE a.catid='{$catid}' AND a.thread='{$threadid}' AND a.id=b.mesid AND a.parent!='0' ORDER BY a.time ASC");
|
|
$replies = $kunena_db->loadObjectList();
|
|
check_dberror("Unable to load messages & detail.");
|
|
|
|
$countReplies = count($replies);
|
|
|
|
if ($countReplies > 0)
|
|
{
|
|
foreach ($replies as $reply)
|
|
{
|
|
$mes_text = $reply->message;
|
|
filterHTML($mes_text);
|
|
|
|
$txt0 = $reply->subject;
|
|
$pdf->ezText($txt0, 14);
|
|
$pdf->ezText(_VIEW_POSTED . " " . $reply->name . " - " . date(_DATETIME, $reply->time), 8);
|
|
$pdf->ezText("_____________________________________", 8);
|
|
$txt3 = "\n";
|
|
$txt3 .= stripslashes($mes_text);
|
|
$pdf->ezText($txt3, 10);
|
|
$pdf->ezText("\n============================================================================\n\n", 8);
|
|
}
|
|
}
|
|
|
|
$pdf->ezStream();
|
|
}
|
|
}
|
|
else {
|
|
echo "You don't have access to this resource.";
|
|
}
|
|
} //function dofreepdf
|
|
|
|
function filterHTML(&$string)
|
|
{
|
|
// Ugly but needed to get rid of all the stuff the PDF class cant handle
|
|
$string = str_replace('<p>', "\n\n", $string);
|
|
$string = str_replace('<P>', "\n\n", $string);
|
|
$string = str_replace('<br />', "\n", $string);
|
|
$string = str_replace('<br>', "\n", $string);
|
|
$string = str_replace('<BR />', "\n", $string);
|
|
$string = str_replace('<BR>', "\n", $string);
|
|
$string = str_replace('<li>', "\n - ", $string);
|
|
$string = str_replace('<LI>', "\n - ", $string);
|
|
$string = strip_tags($string);
|
|
$string = str_replace('{mosimage}', '', $string);
|
|
$string = str_replace('{mospagebreak}', '', $string);
|
|
// bbcode
|
|
$string = preg_replace("/\[(.*?)\]/si", "", $string);
|
|
$string = decodeHTML($string);
|
|
}
|
|
|
|
function decodeHTML($string)
|
|
{
|
|
$string = strtr($string, array_flip(get_html_translation_table(HTML_ENTITIES)));
|
|
$string = preg_replace("/&#([0-9]+);/me", "chr('\\1')", $string);
|
|
return $string;
|
|
}
|
|
|
|
function get_php_setting($val)
|
|
{
|
|
$r = (ini_get($val) == '1' ? 1 : 0);
|
|
return $r ? 'ON' : 'OFF';
|
|
}
|
|
|
|
dofreePDF ($kunena_db);
|
|
?>
|