%PDF- %PDF-
| Direktori : /home1/lightco1/www/lightingrepublic.com.au/plugins/content/articletool/ |
| Current File : //home1/lightco1/www/lightingrepublic.com.au/plugins/content/articletool/articletool.php |
<?php
/*
* @name article tool 1.0
* Created By Guarneri Iacopo
* http://www.iacopo-guarneri.me/
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
*/
defined( '_JEXEC' ) or die( 'Restricted access' );
jimport( 'joomla.plugin.plugin' );
$app = JFactory::getApplication();
if ($app->isSite()){
require_once("plugins/content/articletool/dompdf/autoload.inc.php");
}
use Dompdf\Dompdf;
class Charset extends JFactory{
function get(){
$charset=$this->createDocument();
return $charset->_charset;
}
}
class plgContentarticletool extends JPlugin
{
function onContentPrepare( $context, &$article, &$params, $page = 0)
{
if(!function_exists('relative_to_absolute')) {
function relative_to_absolute($article,$home){
preg_match_all('/src="(.+?)"/', $article->text, $src);
preg_match_all('/href="(.+?)"/', $article->text, $href);
$urls=array_merge($src[1], $href[1]);
foreach($urls as $url){
if(!strstr($url,"http://") && !strstr($url,"https://")){
$path=str_replace("/","",str_replace("index.php","",$_SERVER["SCRIPT_NAME"]));
$newurl=$home."/".$url;
$n_replace=1;
while(substr_count($newurl, "/".$path."/")>1){
$oldurl=$newurl;
$newurl=preg_replace('/'.preg_quote($path, '/').'/', "", $newurl, 1);
if($oldurl==$newurl)
break;
}
while(strstr($newurl,"//"))
$newurl=str_replace("//","/",$newurl);
$newurl=str_replace("http:/","http://",$newurl);
$newurl=str_replace("https:/","https://",$newurl);
$article->text=str_replace('"'.$url.'"', $newurl, $article->text);
}
}
return $article->text;
}
}
if(!function_exists('get_article_by_get')) {
function get_article_by_get($use_curl){
$articleId=JRequest::getVar('id', 0, 'get');
$db = JFactory::getDBO();
$sql = "SELECT * FROM #__content WHERE id = ".$articleId;
$db->setQuery($sql);
if($use_curl=="1"){
$rows = $db->loadObjectList();
foreach ( $rows as $row )
$articleLink[$row->id] = $row->catid;
$content=get_web_page(JURI::base().ContentHelperRoute::getArticleRoute($articleId, $articleLink[$articleId])."&articletoolcurl=1");
preg_match("/\[ARTICLETOOL\](.*?)\[\/ARTICLETOOL\]/ims", $content, $matches);
$ret=$matches[1];
$ret=preg_replace("/<div class='article_tool_container'>(.*?)<\/div>/ims", "", $ret);
return $ret;
} else {
$fullArticle = $db->loadAssocList();
return $fullArticle[0]["introtext"].$fullArticle[0]["fulltext"];
}
}
}
if(!function_exists('get_web_page')) {
function get_web_page( $url )
{
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYPEER => false // Disabled SSL Cert checks
);
$ch = curl_init( $url );
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
$err = curl_errno( $ch );
$errmsg = curl_error( $ch );
$header = curl_getinfo( $ch );
curl_close( $ch );
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $content;
}
}
$input = JFactory::getApplication()->input;
$view = $input->get('view');
if(strstr(@$_SERVER["HTTP_REFERER"],"view=form") && strstr(@$_SERVER["HTTP_REFERER"],"layout=edit")){return false;}
$cosa_mostrare=$this->params->get("cosa_mostrare");
if(!is_array($cosa_mostrare)){$cosa_mostrare=array($cosa_mostrare);}
$cats=$this->params->get("category");
if(!is_array($cats)){$cats=array($cats);}
$counter=$this->params->get("counter","0");
$position=$this->params->get("position","top");
$css=$this->params->get("css","color:#000; font-family: DejaVu Sans, sans-serif; font-size:14px; line-height:19px; padding:20px;");
$memory_limit=$this->params->get("memory_limit","25");
$visual_pdf=$this->params->get("visual_pdf","0");
$show_in_blog=$this->params->get("show_in_blog","0");
$icon_position=$this->params->get("icon_position","left");
$show_subcategory=$this->params->get("show_subcategory","0");
$use_curl=$this->params->get("use_curl","0");
if($show_in_blog==0 && ($view=="featured" || $view=="category")){return false;}
if($icon_position=="right"){
$document = JFactory::getDocument();
$style = '.stButton {
float: right !important;
}';
$document->addStyleDeclaration( $style );
}
if($visual_pdf==1){$visual_pdf=0;}else{$visual_pdf=1;}
//se l'articolo non รจ della giusta categoria esce subito
$database = JFactory::getDBO();
$categoria_presente=0;
foreach($cats as $cat){
if(@$article->catid==$cat){
$categoria_presente=1;
} else if($show_subcategory=="1" && !is_null($article->catid)){
$database->setQuery('SELECT * FROM #__categories WHERE id='.@$article->catid);
$results = $database->loadAssocList();
$parent=$results[0]["parent_id"];
while($parent!="1"){
$database->setQuery('SELECT * FROM #__categories WHERE id='.$parent);
$results = $database->loadAssocList();
$parent=$results[0]["parent_id"];
if($results[0]["id"]==$cat)
$categoria_presente=1;
}
}
if($categoria_presente!=0)
break;
}
if($categoria_presente==0){return false;}
else{
if(JRequest::getVar('download', 0, 'get')!=1)
echo '<link rel="stylesheet" href="'.JURI::base().'plugins/content/articletool/style/style.css" type="text/css" />';
if(JRequest::getVar('print', 0, 'get')!=1 && JRequest::getVar('download', 0, 'get')!=1){
//inserisce gli script per far funzionare sharethis
foreach($cosa_mostrare as $ico){
if($ico!="stampa" && $ico!="scarica"){
$http="";
if($_SERVER["REQUEST_SCHEME"]=="https")
$http="s";
$article->text.='<script type="text/javascript">var switchTo5x=true;</script>
<script type="text/javascript" src="http'.$http.'://w'.$http.'.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">stLight.options({publisher: "cf4e376e-1d9c-43b1-8df7-617e403ae918", doNotHash: false, doNotCopy: false, hashAddressBar: false});</script>';
break;
}
}
$icone="";
$uri = JFactory::getURI();
//mostro le icone dei social, invia per mail, stampa e scarica
foreach($cosa_mostrare as $ico){
if($ico=="stampa"){
$uri->setVar('print', 1);
$uri->setVar('download', 0);
$uri->setVar('id', $article->id);
if($counter==0){
$icone.="
<span class='stButton stButton_print'>
<a id='article_tool_print' href='".$uri->toString()."' target='_blank'>
<img src='".JURI::base()."plugins/content/articletool/images/print.png' />
</a></span>";
}else{
$icone.="<a id='article_tool_print' href='".$uri->toString()."' target='_blank'>
<span class='stButton'><span class='stButton_gradient'>
<img src='".JURI::base()."plugins/content/articletool/images/print.png' />
<span class='chicklets chicklets_article_tool_print'>Print</span></span></span></a>";
}
}else if($ico=="scarica"){
$uri->setVar('print', 0);
$uri->setVar('download', 1);
$uri->setVar('id', $article->id);
if($counter==0){
$icone.="
<span class='stButton stButton_pdf'>
<a id='article_tool_pdf' href='".$uri->toString()."' target='_blank'>
<img src='".JURI::base()."plugins/content/articletool/images/pdf.png' />
</a></span>";
}else{
$icone.="<a id='article_tool_pdf' href='".$uri->toString()."' target='_blank'>
<span class='stButton'><span class='stButton_gradient'>
<img src='".JURI::base()."plugins/content/articletool/images/pdf.png' />
<span class='chicklets chicklets_article_tool_pdf'>Download</span></span></span></a>";
}
}else{
$url_corrente=substr(JURI::base(),0,-1).JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catid));
if($counter==0){$type="large";}else{$type="hcount";}
$icone.='<span class="st_'.$ico.'_'.$type.'" st_url="'.$url_corrente.'" displayText="'.$ico.'"></span>';
}
$uri->delVar('print');
$uri->delVar('download');
$uri->delVar('id');
}
if($position=="top"){
$article->text = "<div class='article_tool_container'>".$icone."</div><div class='article_tool_separator'></div>".$article->text;
}
if($position=="bottom"){
$article->text.="<div class='article_tool_container'>".$icone."</div><div class='article_tool_separator'></div>";
}
}
//$article->text=relative_to_absolute($article,JURI::base());
$charset=new Charset();
if(JRequest::getVar('print', 0, 'get')==1){
$article->text=get_article_by_get($use_curl);
$article->text=relative_to_absolute($article,JURI::base());
$article->text.='
<script type="text/javascript">
window.print();
setTimeout(function(){window.close();}, 1000);
</script>
';
echo "<meta http-equiv='content-type' content='text/html; charset=".$charset->get()."' /><div style='".$css."'><h2>".$article->title."</h2>".$article->text."</div>";
JFactory::getApplication()->close();
die("");
}
if(JRequest::getVar('download', 0, 'get')==1){
$article->text=get_article_by_get($use_curl);
$article->text=relative_to_absolute($article,JURI::base());
//$txt_to_rend=file_get_contents(JURI::current());
$txt_to_rend="<meta http-equiv='content-type' content='text/html; charset=".$charset->get()."' /><div style='".$css."'><h2>".$article->title."</h2>".$article->text."</div>";
if ( get_magic_quotes_gpc() )
$txt_to_rend = stripslashes($txt_to_rend);
$txt_to_rend=str_replace("undefinedpx","12px",$txt_to_rend);
$old_limit = ini_set("memory_limit", $memory_limit."M");
$dompdf = new DOMPDF();
$dompdf->loadHtml($txt_to_rend);
$dompdf->setPaper("portrait","letter");
$dompdf->render();
/*i pdf possono essere messi in cache, vedere se nella jed ci sono componenti article to pdf*/
$dompdf->stream($article->title.".pdf", array("Attachment" => $visual_pdf));
JFactory::getApplication()->close();
die("");
}
if(JRequest::getVar('articletoolcurl', 0, 'get')==1){
$article->text="[ARTICLETOOL]".$article->text."[/ARTICLETOOL]";
}
return true;
}
}
}