HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/confeduphaar/backip-old-files/plugins/jnews/jnewsbot/jnewsbot.php
<?php
defined('_JEXEC') OR die('Access Denied!');
### © 2006-2020 Joobi. All rights reserved.
### http://www.gnu.org/copyleft/gpl.html GNU/GPL



if(strtolower(substr(JPATH_ROOT, strlen(JPATH_ROOT) - 13)) == 'administrator')
{
    $adminPath = strtolower(substr(JPATH_ROOT, strlen(JPATH_ROOT) - 13));
}
else
{
    $adminPath = JPATH_ROOT;
}

jimport('joomla.filesystem.file');
$mainAdminPathDefined = $adminPath .DIRECTORY_SEPARATOR. 'components' .DIRECTORY_SEPARATOR. 'com_jnews' .DIRECTORY_SEPARATOR. 'defines.php';
if(JFile::exists($mainAdminPathDefined))
{
    require_once( $mainAdminPathDefined );
    $jNewsMainFrame = JFactory::getApplication();
    $jNewsMainFrame->registerEvent('jnewsbot_editabs', 'jnewsbot_content_editab');
    $jNewsMainFrame->registerEvent('jnewsbot_transformall', 'jnewsbot_content_transformall');
    $jNewsMainFrame->registerEvent('jnewsbot_transformall', 'jnewsbot_jcalpro_transformall');
    $jNewsMainFrame->registerEvent('jnewsbot_transformfinal', 'jnewsbot_class_transformfinal');
}


function jnewsbot_content_editab($forms)
{

    if(version_compare(JVERSION, '3.0.0', '<'))
    {
        JHTML::_('behavior.mootools');
    }
    else
    {
        JHtmlBehavior::framework();
    }

    $siteContent = new siteContent();
//	$limit = -1;
    $limit = 5;

    $limittotal = $siteContent->countSiteCount();
    $setLimit = jnews::setLimitPagination($limittotal);

    $action = JRequest::getVar('act', '', '', 'WORD');
    $task = JRequest::getVar('task','','','WORD');
    $contentsearch = JRequest::getVar('contentsearch', '', '', 'STRING' );

    echo $forms['main'];
    $hidden = '<input type="hidden" name="option" value="' . JNEWS_OPTION . '" />';
    $hidden .= '<input type="hidden" name="limit" value="' . $limit . '" />';
    $toSearch = new stdClass();
    $toSearch->forms = '';
    $toSearch->hidden = $hidden;
    $toSearch->listsearch = $contentsearch;
    $toSearch->id = 'contentsearch';
    $app = JFactory::getApplication();

    $setSort = new stdClass();


    if( ! isset($_POST['c_filter_order']))
    {
        $setSort->orderValue = "a.id";
    }
    else
        $setSort->orderValue = $_POST['filter_order'];
    //$setSort->orderValue = $app->getUserStateFromRequest(JNEWS_OPTION . '.content.filter_order', 'filter_order', 'a.id', 'cmd');


    $setSort->orderDir = $app->getUserStateFromRequest(JNEWS_OPTION . '.content.filter_order_Dir', 'filter_order_Dir', 'desc', 'word');
//$setSort->orderValue  = "a.id";


    $contentItems = jnewsbot_content_getitems($contentsearch, $setLimit, $setSort);
    ob_start();
    $js = "function setContentTag(id, url, changeType , hide_title)
           {

                if(hide_title ==undefined)
                {
                    var check_title =  document.getElementById('hide_title_no').checked;
                    if(check_title) hide_title = 0;
                    else            hide_title = 1;

                }



                var form = document.adminForm;
                if(!form)
                {
                        form = document.mosForm;
                }

                if(form.content_type[2].checked === false)
                {
                        document.getElementById('hide_title_yes').disabled=false;
                }
                else
                {
                      document.getElementById('hide_title_no').click();
                      hide_title = 0;
                      document.getElementById('hide_title_yes').disabled=true;
                }
                if(id!=null)
                {
                        for (i=0; i<form.content_type.length; i++)
                        {
                                if (form.content_type[i].checked)
                                {
                                        var content_type = form.content_type[i].value;
                                }
                        }";

                    //   if ( @include_once( JNEWSPATH_ADMIN . 'social' .DIRECTORY_SEPARATOR. 'class.social.php' ) ) {
                        if((!$GLOBALS[JNEWS . 'use_tags'] AND class_exists('jNews_Social')) OR (!$GLOBALS[JNEWS . 'use_tags'] AND $GLOBALS[JNEWS . 'level'] > 2))
                        {
                            $js .="
                            if(changeType!=null)
                                id = document.getElementById('insertbot').value;

                            template = window.top.document.getElementById('template_id');
                            templateid = template.value;

                            var tag =  id;
                            if(id != 0)
                                getContent(id, content_type, url,templateid);

                            form.contenttag.value = tag;
                    }
                    //if id == null
                    else
                    {
                            var tag = form.contentreplace.value;";
                            if(version_compare(JVERSION, '1.6.0', '<'))
                            {//1.5
                                $js .= " if(window.top.insertTag(tag)){window.top.document.getElementById('sbox-window').close();}";
                            }
                            else if(version_compare(JVERSION, '3.0.0', '<'))
                            {
                                $js .= ' if(window.top.insertTag(tag)) {window.parent.SqueezeBox.close();}';
                            }
                            else
                            {
                                $js .= 'if(window.top.insertTag(tag))
                                        {
                                            var need_click = jQuery(window.top.document).find("div.modal-backdrop");
                                            if(need_click.length == 0) window.parent.SqueezeBox.close();
                                            else    jQuery(window.top.document).find("div.modal-backdrop").click();}';
                            }
                            $js .=      "}
                      }";

                            }
                            else
                            {
                                $js .="
                                if(changeType==null)
                                        form.botID.value= id;

                                var tag = '{contentitem:' + form.botID.value + '|' + content_type +'|'+hide_title+ '}';

                                form.contenttag.value = tag;
                    }
                    //if id -- null
                    else
                    {

                                var tag = form.contenttag.value;";
                                if(version_compare(JVERSION, '1.6.0', '<'))
                                {//1.5
                                    $js .= " if(window.top.insertTag(tag)){window.top.document.getElementById('sbox-window').close();}";
                                }
                                else if(version_compare(JVERSION, '3.0.0', '<'))
                                {
                                    $js .= ' if(window.top.insertTag(tag)) {window.parent.SqueezeBox.close();}';
                                }
                                else
                                {
                                    $js .= ' if(window.top.insertTag(tag)) {
                                                var need_click = jQuery(window.top.document).find("div.modal-backdrop");
                                                if(need_click.length == 0) window.parent.SqueezeBox.close();
                                                else    jQuery(window.top.document).find("div.modal-backdrop").click();}';
                                }
                                $js .= "}
                            }";
                            }//end function

    if(version_compare(JVERSION, '1.6.0', '<'))
    {//1.5
        $js .="

 			function getContent(id, content_type, url, templateid){

 				var ajax = new Ajax(url,
 					{data: 'artId='+id+'&content_type='+content_type+'&templateid='+templateid,
 					method: 'POST',
 					onComplete : function(result){insertContent(result, id); }
 					}
 				);
 				ajax.request();
 			}";
    }
    else
    {
        $js .="
 			function getContent(id, content_type, url,templateid){

				var ajax = new Request({
				url : url,
				data: 'artId='+id+'&content_type='+content_type+'&templateid='+templateid,
				method: 'POST',
				onComplete : function(result){insertContent(result, id); }
				});
				ajax.send();
 			}";
    }


    $js .= "
 			function insertContent(html, id){
				var form = document.adminForm;
				if(!form){
					form = document.mosForm;
				}

				var root = document.createElement('div');

				root.innerHTML = html;
				var body = document.getElementsByTagName('body')[0].appendChild(root);

				root.setAttribute(\"style\", \"width:150px; display:none\");
				var element = document.getElementById('artcontent_'+id);

				form.contentreplace.value = element.innerHTML;

				document.getElementsByTagName('body')[0].removeChild(root);
			}
			";

    $url = jNews_Tools::completeLink('option=' . JNEWS_OPTION . '&act=mailing&task=articleContent', false, false, true);

    $doc = JFactory::getDocument();
    $doc->addScriptDeclaration($js);
    ?>

    <style type="text/css">
        table.smartcontent {
            border: 1px solid #D5D5D5;
            background-color: #F6F6F6;
            width: 100%;
            margin-bottom: 10px;
            -moz-border-radius:3px;
            -webkit-border-radius:3px;
            padding: 5px;
        }
        table.smartcontent td.key {
            background-color: #f6f6f6;
            text-align: left;
            width: 140px;
            color: #666;
            font-weight: bold;
            border-bottom: 1px solid #e9e9e9;
            border-right: 1px solid #e9e9e9;
        }
    </style>
    <div id="element-box">
        <div class="t">
            <div class="t">
                <div class="t"></div>
            </div>
        </div>
        <div class="m">




    <!--<form name="adminForm" method="post" action="index.php?option=<?php echo JNEWS_OPTION; ?>&tmpl=component">-->
            <table class="smartcontent" width="100%"">
                   <tr>
                    <td width="185" class="key">
                        <span class="editlinktip">
                            <?php
                            $tip = _JNEWS_AUTONEWS_TYPE_TIPS;
                            $title = _JNEWS_AUTONEWS_TYPE;
                            echo jNews_Tools::toolTip($tip, '', 280, 'tooltip.png', $title, '', 0);
                            ?>
                        </span>
                    </td>
                    <td style="vertical-align: top;">
                        <span class="editlinktip">
    <?php
    $tip = _JNEWS_TITLE_ONLY_TIPS;
    $title = _JNEWS_TITLE_ONLY;
    $title_only = "<span class=\"editlinktip\">" . jNews_Tools::toolTip($tip, '', 280, 'tooltip.png', $title, '', 0) . "</span>";

    $tip = _JNEWS_INTRO_ONLY_TIPS;
    $title = _JNEWS_INTRO_ONLY;
    $intro_only = "<span class=\"editlinktip\">" . jNews_Tools::toolTip($tip, '', 280, 'tooltip.png', $title, '', 0) . "</span>";

    $tip = _JNEWS_FULL_ARTICLE_TIPS;
    $title = _JNEWS_FULL_ARTICLE;
    $full_article = "<span class=\"editlinktip\">" . jNews_Tools::toolTip($tip, '', 280, 'tooltip.png', $title, '', 0) . "</span>";

//                                $tip =  _JNEWS_HIDE_TITTLE_ARTICLE_TIPS;
//				$title =  _JNEWS_HIDE_TITLE ;
//				$hide_title = "<span class=\"editlinktip\">" . jNews_Tools::toolTip( $tip, '', 280, 'tooltip.png', $title, '', 0 ) . "</span>";
    ?>
                        </span>
                        <span class="editlinktip">
                            <input id="content_type" type="radio" name="content_type" value="0" checked="checked" onclick="setContentTag(1,'<?php echo $url ?>', 0);"/><?php echo $full_article; ?>
                            <input id="content_type" type="radio" name="content_type" value="1" onclick="setContentTag(1, '<?php echo $url ?>', 1);"/><?php echo $intro_only; ?>
                            <input id="content_type" type="radio" name="content_type" value="2" onclick="setContentTag(1, '<?php echo $url ?>', 2);"/><?php echo $title_only; ?>
                            <!--<input id="content_type" type="radio" name="content_type" value="3" onclick="setContentTag(1, '<?php //echo $url ?>', 3);"/><?php //echo $hide_title;  ?>-->
                        </span>

                    </td>
                    <td rowspan="2">
                        <input onclick="setContentTag(null,'<?php echo $url; ?>')" class="inserttag" type="button" label="Insert Content" name="Insert Content" value="Insert Content"/>
                    </td>
                </tr>

                <tr>
                    <td width="185" class="key">
                        <span class="editlinktip">
    <?php
    $tip = _JNEWS_CONTENT_TIP;
    $title = _JNEWS_CONTENT_ID;
    echo jNews_Tools::toolTip($tip, '', 280, 'tooltip.png', $title, '', 0);
    ?>
                        </span>
                    </td>
                    <td style="vertical-align: top;">
                                    <!--  <input type="text" onchange="setCaptionTags();" size="60px" name="jnewstagcaption"> -->
                        <input id="insertbot" type="text" size="20px" name="contenttag" value="0"/>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input id="insertbot" type="hidden" size="60px" name="contentreplace" />
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <input id="botID" size="10px" name="botID" value="0" type="hidden"/>
                    </td>
                </tr>


                <tr>
                    <td width="185" class="key">
                        <span class="editlinktip">
                    <?php
                    $tip = _JNEWS_HIDE_TITTLE_ARTICLE_TIPS;
                    $title = _JNEWS_HIDE_TITLE;
                    echo jNews_Tools::toolTip($tip, '', 280, 'tooltip.png', $title, '', 0);
                    ?>
                        </span>
                    </td>
                    <td style="vertical-align: top;">
                        <input id="hide_title_no" onclick="setContentTag(1, '<?php echo $url ?>', 2, 0);" type="radio" name="hide_title" value="0" checked="checked" /><?php echo 'No'; ?>
                        <input id="hide_title_yes" onclick="setContentTag(1, '<?php echo $url ?>', 2, 1);" type="radio" name="hide_title" value="1" /><?php echo 'Yes'; ?>

                    </td>
                </tr>
            </table>
            <div id="element-box">
                <div class="t">
                    <div class="t">
                        <div class="t"></div>
                    </div>
                </div>
                <div class="m" style="position:relative;">
                                    <?php
                                    echo jnews::setTop($toSearch, null);
				    $select_cat =  version_compare(JVERSION, '1.6.0', '<') ? 'SELECT CATEGORY' : 'JOPTION_SELECT_CATEGORY';

 			    ?>
                    <div style="position:absolute;top:5px; left:55%;">
                    <?php $sort_select = JRequest::getVar('filter_category_id', '', 'POST', 'int');?>
                        <select name="filter_category_id" class="inputbox" onchange="this.form.submit()">
                            <option value=""><?php echo JText::_($select_cat);?></option>
                            <?php if( version_compare(JVERSION, '1.6.0', '<'))
			    {
				 echo  getCatListFromJoomla15($sort_select);
			    }
			    else
			    {
				echo JHtml::_('select.options', JHtml::_('category.options', 'com_content'), 'value', 'text', $sort_select);
			    }

				?>
                        </select>
                    </div>
<!--                          border: 1px solid #CCCCCC;-->
                    <table class="joobilist" cellpadding="0" cellspacing="0">
                        <tbody>
                        <thead>
                            <tr>
                                <th class="title">
                                      <?php if($setSort->orderDir == 'asc') $new_sort= "desc"; else $new_sort = "asc";?>
                                                <a class="hasTip" title="" onclick="Joomla.tableOrdering('a.title','<?php echo $new_sort;?>', 'content');" href="#">
                                                    <?php echo JText::_(_JNEWS_TAGPICKLIST_TITLE);?>
                                                    <?php if(($setSort->orderValue == 'a.title')):?><i class="icon-arrow-<?php echo($new_sort == "asc") ?  "up" : "down";?>"></i><?php endif;?>
                                                </a>
    <?php
    //echo _JNEWS_TAGPICKLIST_TITLE;
   // echo jnews::HTML_GridSort(_JNEWS_TAGPICKLIST_TITLE, 'a.title', $setSort->orderDir, $setSort->orderValue);
    ?>
                                </th>
                                <th width="80px" class="title">
                        <?php
                        //echo _JNEWS_TAG_ARTICLESECTION;
                        if(version_compare(JVERSION, '1.6.0', '<'))
                        { 
                            echo jnews::HTML_GridSort(_JNEWS_TAG_ARTICLESECTION, 'b.title', $setSort->orderDir, $setSort->orderValue);
                        }
                        else
                        {?>

                              <?php if($setSort->orderDir == 'asc') $new_sort= "desc"; else $new_sort = "asc";?>
                                    <a class="hasTip" title="" onclick="Joomla.tableOrdering('c.title_2','<?php echo $new_sort;?>', 'content');" href="#">
                                        <?php echo JText::_(_JNEWS_TAG_ARTICLESECTION);?>
                                         <?php if(($setSort->orderValue == 'c.title_2')):?><i class="icon-arrow-<?php echo($new_sort == "asc") ?  "up" : "down";?>"></i><?php endif;?>
                                    </a>

<!--                            echo jnews::HTML_GridSort(_JNEWS_TAG_ARTICLESECTION, 'b.title', $setSort->orderDir, $setSort->orderValue);-->
                        <?php }
                        ?>
                                </th>
                                <th width="80px" class="title">
                                <?php if($setSort->orderDir == 'asc') $new_sort= "desc"; else $new_sort = "asc";?>
                                    <a class="hasTip" title="" onclick="Joomla.tableOrdering('c.title','<?php echo $new_sort;?>', 'content');" href="#">
                                        <?php echo JText::_(_JNEWS_TAG_ARTICLECATEGORY);?>
                                         <?php if(($setSort->orderValue == 'c.title')):?><i class="icon-arrow-<?php echo($new_sort == "asc") ?  "up" : "down";?>"></i><?php endif;?>
                                    </a>
                    <?php
                    //echo _JNEWS_TAG_ARTICLECATEGORY;
                   // echo jnews::HTML_GridSort(_JNEWS_TAG_ARTICLECATEGORY, 'c.title', $setSort->orderDir, $setSort->orderValue);
                    ?>
                                </th>
                                <th width="30px" class="title">
                                    <?php if($setSort->orderDir == 'asc') $new_sort= "desc"; else $new_sort = "asc";?>
                                        <a class="hasTip" title="" onclick="Joomla.tableOrdering('a.id','<?php echo $new_sort;?>', 'content');" href="#">
                                            ID
                                             <?php if(($setSort->orderValue == 'a.id')):?><i class="icon-arrow-<?php echo($new_sort == "asc") ?  "up" : "down";?>"></i><?php endif;?>
                                        </a>
                                        <?php
                                        //echo jnews::HTML_GridSort('ID', 'a.id', $setSort->orderDir, $setSort->orderValue, 'task');
                                        ?>
                                </th>
                            </tr>
                        </thead>
    <?php
    if(sizeof($contentItems) > 0)
    {
        $k = 0;
        foreach($contentItems as $contentItem)
        {
            if(empty($contentItem->section))
                $contentItem->section = JText::_('Uncategorised');
            if(empty($contentItem->category))
                $contentItem->category = JText::_('Uncategorised');
            echo '<tr style="cursor:pointer" class="row' . $k . '" onclick="setContentTag(\'' . $contentItem->id . '\',\'' . $url . '\');" ><td>' . $contentItem->title . '</td><td nowrap="nowrap" align="center">' . $contentItem->section . '</td><td nowrap="nowrap" align="center">' . $contentItem->category . '</td><td nowrap="nowrap" align="center">' . $contentItem->id . '</td></tr>';
            //echo '<tr style="cursor:pointer" class="row'.$k.'" onclick="setContentTag(\''.$contentItem->id.'\',\''.$url.'\');" ><td>'.$contentItem->title.'</td><td nowrap="nowrap" align="center">'.$contentItem->section.'</td><td nowrap="nowrap" align="center">'.$contentItem->category.'</td><td nowrap="nowrap" align="center">'.$contentItem->id.'</td></tr>';

            $k = 1 - $k;
        }
    }
    ?>
                        </tbody>
                    </table>
    <?php
    echo jnews::setPaginationBot($setLimit, 'margin:auto;');
    ?>
                    <input type="hidden" value="<?php echo JNEWS_OPTION; ?>" name="option"/>
                    <input type="hidden" value="<?php echo $action; ?>" name="act"/>
                    <input type="hidden" value="<?php echo $task; ?>" name="task"/>
                    <input type="hidden" value="<?php echo $setSort->orderValue; ?>" name="c_filter_order"/>
                    <input type="hidden" value="<?php echo $setSort->orderValue; ?>" name="filter_order"/>
                    <input type="hidden" value="<?php echo $setSort->orderDir; ?>" name="filter_order_Dir"/>
                    </form>
                </div>
                <div class="b">
                    <div class="b">
                        <div class="b"></div>
                    </div>
                </div>
            </div>
        </div>
        <div class="b">
            <div class="b">
                <div class="b"></div>
            </div>
        </div>
    </div>
    <?php
    $return = ob_get_contents();
    ob_end_clean();
    return array(_JNEWS_CONTENT_ITEM, $return);
}

function getCatListFromJoomla15($sort = "")
{
       $db = JFactory::getDBO();
       $query = "SELECT `cat`.`title`,`cat`.`id` from `#__content` AS `con`  JOIN `#__categories` AS `cat` ON `con`.`catid` = `cat`.`id`";
       $db->setQuery($query);
       $listCats = $db->loadObjectList();
       $return_str = "";
       if(is_array($listCats) && !empty($listCats))
       {

	   foreach($listCats as $onecat)
	   {
	       if(isset($onecat->id) && isset($onecat->title) && $onecat->id != 0 && $onecat->title != "")
	       {
		     $selected = (isset($sort) && $sort==$onecat->id )?  "selected" : "";
		     $return_str .= "<option $selected value=\"$onecat->id\">$onecat->title</option>";
	       }
	   }
       }
       return  $return_str;
}



function jnewsbot_content_getitems($contentsearch = '', $setLimit = null, $setSort = null)
{

    if($setLimit->end < 5)
        $setLimit->end = 5;

    jimport('joomla.html.parameter');
    $db = JFactory::getDBO();
    //get the parameters from the plugin
    $plugin = JPluginHelper::getPlugin('jnews', 'jnewsbot');
   $registry = new JRegistry;
	  if( ! method_exists($registry,'loadString')) {
            $data = trim($plugin->params);
            $options = array('processSections' => false);
            if ((substr($data, 0, 1) != '{') && (substr($data, -1, 1) != '}'))
            {
                    $ini = JRegistryFormat::getInstance('INI');
                    $obj = $ini->stringToObject($data, $options);
            }
            else
            {
                    $obj = json_decode($data);
            }
            $registry->loadObject($obj);
        } else {
              $registry->loadString( $plugin->params );
        }

	$params = $registry;
    //get the limit parameter
    $content_limit = $params->get('content_limit', '5000');
    $displaycontent = $params->get('displaycontent', '1');
    //sort of categories
    $sort = JRequest::getVar('filter_category_id', '', 'POST', 'int');
    if(isset($sort) && !empty($sort))
    {
        $sort_query = ' AND c.id = "'.$sort.' "';
    }
    else
    {
        $sort_query = "";
    }
    //if($setSort->orderValue == 'c.title_2') { unset($setSort->orderValue); $setSort->orderValue = 'c.title';}

    if(version_compare(JVERSION, '1.6.0', '<'))
    { 
        $query = "SELECT a.id as id, a.title as title, b.title as section, c.title as category FROM #__content as a LEFT JOIN #__sections as b ON a.sectionid = b.id LEFT JOIN #__categories AS c ON a.catid = c.id";

        if(!empty($contentsearch))
        {
            $query .= ' WHERE a.title LIKE  \'%' . $db->escape($contentsearch) . '%\' AND ';
        }
        else
        {
            $query .= ' WHERE ';
        }
//			$query .= " WHERE ";
        if(!$displaycontent)
            $query .= "a.created > '" . date('Y-m-d H:i:s', time() - 30240000) . "' AND ";
        $query .= "  a.state=1";
        $query .= $sort_query;
        if(!empty($setSort))
        {
            $val_sort = ($setSort->orderValue == 'c.title_2') ? "c.title" : $setSort->orderValue ;
            $query .= " ORDER BY " . $db->escape($val_sort) . " " . $db->escape($setSort->orderDir);
        }
        else
        {
            $query .= " ORDER BY ";
            switch($params->get('content_order', '0'))
            {
                case '1':
                    $query .= " a.sectionid, a.catid ASC ";
                    break;
                case '2':
                    $query .= " a.created DESC ";
                    break;
                case '3':
                    $query .= " a.title ASC ";
                    break;
                case '0':
                default:
                    $query .= " a.id DESC ";
                    //					$query .= " a.sectionid, a.catid, a.created DESC ";
                    break;
            }
        }
        //$query .= " LIMIT ".$content_limit;
        if(!is_null($setLimit) && $setLimit->start != -1 && $setLimit->end)
            $query .= ' LIMIT ' . (int)$setLimit->start . ', ' . (int)$setLimit->end;
    }else
    { 

        $query = "SELECT a.id as id, a.title as title, c.title as category FROM #__content as a LEFT JOIN #__categories AS c ON a.catid = c.id";

        if(!empty($contentsearch))
        {
            $query .= ' WHERE a.title LIKE  \'%' . $db->escape($contentsearch) . '%\' AND ';
        }
        else
        {
            $query .= ' WHERE ';
        }

        $query .= "  c.extension = 'com_content' AND ";
        if(!$displaycontent)
            $query .= " a.created > '" . date('Y-m-d H:i:s', time() - 30240000) . "' AND ";
        $query .= " a.state=1";
        $query .= $sort_query;
        if(!empty($setSort))
        {
            $val_sort = ($setSort->orderValue == 'c.title_2') ? "c.title" : $setSort->orderValue ;
            $query .= " ORDER BY " . $db->escape($val_sort) . " " . $db->escape($setSort->orderDir);

        }
        else
        {
            $query .= " ORDER BY ";
            switch($params->get('content_order', '0'))
            {
                case '1':
                    $query .= " a.catid ASC, c.lft ASC ";
                    break;
                case '2':
                    $query .= " a.created DESC, c.lft ASC ";
                    break;
                case '3':
                case '0':
                default:
                    $query .= " a.id DESC ";
                    //					$query .= " a.title ASC, c.lft ASC ";
                    break;
            }
        }
        //$query .= " LIMIT ".$content_limit;
        if(!is_null($setLimit) && $setLimit->start != -1 && $setLimit->end)
            $query .= ' LIMIT ' . (int)$setLimit->start . ', ' . (int)$setLimit->end;
    }

    $db->setQuery($query);
    $contentitems = $db->loadObjectList();
    return $contentitems;
}



function jnewsbot_content_transformall(&$html, &$text, &$subject, $queueInfo = null)
{
    global $mainframe;

    $contentItemsNew = array();
    $contentItemsOld = array();
    preg_match_all('/\{contentitem:(.{1,8})\|(.{1})\|(.{1})}/', $html, $contentItemsNew, PREG_SET_ORDER);
    preg_match_all('/\{contentitem:(.{1,8})\|(.{1})}/', $html, $contentItemsOld, PREG_SET_ORDER);
    $content_items = jnewsbot_class_transform_mergeArray($contentItemsNew, $contentItemsOld);

    /*$contentItemsNew
            [0] => {contentitem:10|0|1}
            [1] => 10
            [2] => 0
            [3] => 1   */

    foreach($content_items as $content_item)
    {

        if(version_compare(JVERSION, '1.6.0', '<'))
            $Itemid = $mainframe->getItemId($content_item[1]);

        if(empty($Itemid))
        {
            $Itemid = $GLOBALS[JNEWS . 'itemidAca'];
        }

        $replacement = jnewsbot_content_getitem($content_item[1]);
        if ( empty($replacement) ){continue;}
        if($GLOBALS[JNEWS . 'show_author'] == 1)
        {
            $author = '<br />' . $replacement->created_by_alias;
        }
        else
        {
            $author = '';
        }
        //hide title or no
        if(isset($content_item[3]))
        {
            if($content_item[3] == 1 && $content_item[2] != 2 )  $replacement->title = "";
        }

        if($content_item[2] == 0)
        {

            $html = str_replace($content_item[0], '<div class="aca_content"><span class="aca_title">' . $replacement->title . '</span>' . "\r\n" . $author . '<br />' . $replacement->introtext . '<br />' . "\r\n" . $replacement->fulltext . "\r\n" . '</div>', $html);
        }
        else
        {

            $link = 'option=com_content&view=article&id=' . $content_item[1] . '&Itemid=' . $Itemid;
            $link = jNews_Tools::completeLink($link, false, $GLOBALS[JNEWS . 'use_sef']);

            if($content_item[2] == 1)
            {
                if(empty($replacement->fulltext) && !empty($GLOBALS[JNEWS . 'word_wrap']))
                {
                    //Limit the number of words
                    if(strlen($replacement->introtext) > $GLOBALS[JNEWS . 'word_wrap'])
                    {
                        static $requiredOnce = true;
                        if($requiredOnce)
                        {
                            require_once( JNEWSPATH_CLASS . 'content.php' );
                            $requiredOnce = false;
                        }
                        $convertContent = new jNews_Content;
                        $fulltext = $convertContent->HTMLtoText($replacement->introtext, false, false);

//             			$fulltext = strip_tags($replacement->introtext,'<br><img>');
                        if(strlen($fulltext) > $GLOBALS[JNEWS . 'word_wrap'])
                        {
                            //We make sure we won't cut any html tag :
//	             			$open = 0;
//	             			$limitText = strlen($fulltext) - 1;
//	             			for($i=0;$i<strlen($fulltext);$i++){
//	             				if($replacement->introtext[$i] == '<'){ $open++; continue;}
//	             				if($replacement->introtext[$i] == '>'){$open--; continue;}
//	             				if($replacement->introtext[$i] == " " AND $i>$GLOBALS[JNEWS.'word_wrap'] AND $open == 0){
//	             					$limitText = $i-1;
//	             					break;
//	             				}
//	             			}
                            $replacement->introtext = substr($fulltext, 0, $GLOBALS[JNEWS . 'word_wrap'] - 3) . '...';
                        }
                        else
                        {
                            $replacement->introtext = $fulltext . '...';
                        }
                    }
                }
                $html = str_replace($content_item[0], '<div class="aca_content"><span class="aca_title">' . $replacement->title . '</span>' . "\r\n" . $author . '<br />' . $replacement->introtext . '<br />' . "\r\n" . '<a href="' . $link . '"><span class="aca_readmore">' . _JNEWS_READMORE . '</span></a>' . "\r\n" . '</div>', $html);
            }
            else
            {
                $html = str_replace($content_item[0], '<a href="' . $link . '"><span class="aca_title">' . $replacement->title . '</span></a>', $html);
            }
        }

        $images = jnewsbot_content_getimage($replacement->images);

        foreach($images as $image)
        {
            $image_string = '<img src="' . JNEWS_JPATH_LIVE_NO_HTTPS . '/images/stories/' . $image['image'] . '" align="' . $image['align'] . '" alt="' . $image['alttext'] . '" border="' . $image['border'] . '" />';
            $html = preg_replace('/{mosimage}/', $image_string, $html, 1);
        }
    }//endfcy

    $contentItemsNew = array();
    $contentItemsOld = array();
    //use to be {contentitem:(.{1,5})\|(.{1})}
    preg_match_all('/\{contentitem:(.{1,8})\|(.{1})\|(.{1})}/', $text, $contentItemsNew, PREG_SET_ORDER);
    preg_match_all('/\{contentitem:(.{1,8})\|(.{1})}/', $text, $contentItemsOld, PREG_SET_ORDER);
    $content_items = jnewsbot_class_transform_mergeArray($contentItemsNew, $contentItemsOld);

    foreach($content_items as $content_item)
    {
        if(version_compare(JVERSION, '1.6.0', '<'))
            $Itemid = $mainframe->getItemId($content_item[1]);

        if(empty($Itemid))
        {
            $Itemid = $GLOBALS[JNEWS . 'itemidAca'];
        }
        $replacement = jnewsbot_content_getitem($content_item[1]);
        if ( empty($replacement) ){continue;}
        if($GLOBALS[JNEWS . 'show_author'] == 1)
        {
            $author = "\r\n" . $replacement->created_by_alias;
        }
        else
        {
            $author = '';
        }

        $replacement->title = "<b>" . strtoupper(jNews_ProcessMail::htmlToText($replacement->title)) . "</b>";
        $replacement->introtext = jNews_ProcessMail::htmlToText($replacement->introtext);
        $replacement->fulltext = jNews_ProcessMail::htmlToText($replacement->fulltext);
           //hide title or no
        if(isset($content_item[3]))
        {
            if($content_item[3] == 1 && $content_item[2] != 2 )  $replacement->title = "";
        }
        if($content_item[2] == 0)
        {
            $text = str_replace($content_item[0], $replacement->title . $author . "\r\n" . $replacement->introtext . "\r\n" . $replacement->fulltext . "\r\n", $text);
        }
        else
        {

            $link = 'option=com_content&view=article&id=' . $content_item[1] . '&Itemid=' . $Itemid;
            $link = jNews_Tools::completeLink($link, false, $GLOBALS[JNEWS . 'use_sef']);

            if($content_item[2] == 1)
            {
                if(empty($replacement->fulltext) AND !empty($GLOBALS[JNEWS . 'word_wrap']))
                {
                    if(strlen($replacement->introtext) > $GLOBALS[JNEWS . 'word_wrap'])
                    {
                        $replacement->introtext = substr(strip_tags($replacement->introtext), 0, $GLOBALS[JNEWS . 'word_wrap']) . '...';
                    }
                }
                $text = str_replace($content_item[0], $replacement->title . $author . "\r\n" . $replacement->introtext . "\r\n" . '* ' . _JNEWS_READMORE . ' ( ' . $link . ' )' . "\r\n", $text);
            }
            else
            {
                $text = str_replace($content_item[0], $replacement->title . ' ( ' . $link . ' )', $text);
            }
        }
        $text = str_replace('{mosimage}', '', $text);
    }

    $html = str_replace('{mospagebreak}', '<div style="clear: both;" ></div>', $html);
    $text = str_replace('{mospagebreak}', "\r\n \r\n", $text);
}



function jnewsbot_content_getitem($id)
{

    $db = JFactory::getDBO();
    if($id == 0)
        return '';

    $query = "SELECT a.title as title";

    if(version_compare(JVERSION, '1.6.0', '<'))
    {
        $query .= ", a.sectionid as sectionid";
    }

    $query .= ", a.catid as catid, a.introtext as introtext, b.name as name, a.created_by_alias as created_by_alias, a.fulltext as `fulltext`, a.images as images FROM #__content as a LEFT JOIN #__users as b ON a.created_by = b.id WHERE a.id = $id";

    $db->setQuery($query);
    $content_item = $db->loadObject();
    if( empty($content_item) ) return null;

    if($content_item->created_by_alias == '')
    {
        $content_item->created_by_alias = $content_item->name;
    }

    if(get_magic_quotes_runtime())
    {
        $content_item->title = "<b>" . stripslashes($content_item->title) . "</b>";
        $content_item->introtext = stripslashes($content_item->introtext);
        $content_item->fulltext = stripslashes($content_item->fulltext);
        $content_item->images = stripslashes($content_item->images);
        $content_item->created_by_alias = stripslashes($content_item->created_by_alias);
    }

    return $content_item;
}



function jnewsbot_content_getimage($images)
{

    $first = @explode("\n", $images);

    for($i = 0, $n = count($first); $i < $n; $i++)
    {
        $second = explode('|', $first[$i] . '|||');
        $third[$i]['image'] = $second[0];
        $third[$i]['align'] = $second[1];
        $third[$i]['alttext'] = $second[2];
        $third[$i]['border'] = $second[3];
    }
    return $third;
}



function jnewsbot_jcalpro_transformall(&$html, &$text, &$subject, $queueInfo = null)
{

    $db = JFactory::getDBO();

    $Itemid = $GLOBALS[JNEWS . 'itemidAca'];

    preg_match_all('#{jcalevent:.{7,15}}#', $html . $text, $tags);
    $replace = array();
    $replacebyHTML = array();
    $replacebyText = array();
    if(!empty($tags[0]))
    {
        foreach($tags[0] as $tag)
        {
            $isolate = explode(':', $tag);
            if(count($isolate) != 2)
                continue;
            $parameters = explode('|', $isolate[1]);
            if(count($parameters) != 4)
                continue;
            if(!empty($replace[$tag]))
                continue;
            $replace[$tag] = $tag;
            $query = 'SELECT `title`, `description`, `end_date`, `start_date`, `extid` from #__jcalpro2_events where `extid` = ' . intval($parameters[0]);
            $db->setQuery($query);
            $event = $db->loadObject();
            $db->loadObject($event);

            if(empty($event->extid))
            {
                $replacebyHTML[$tag] = '';
                $replacebyText[$tag] = '';
                continue;
            }

            if(get_magic_quotes_runtime())
            {
                $event->title = stripslashes($event->title);
                $event->description = stripslashes($event->description);
            }

            $eventhtml = '';
            if($parameters[2])
            {
                $eventhtml .= '<div class="aca_jcalcontent">';
            }
            $eventhtml .= '<span class="aca_jcaltitle">' . $event->title . '</span>';
            $eventtext = strtoupper(jNews_ProcessMail::htmlToText($event->title));

            if($parameters[1])
            {
                $start_date_array = (explode('-', $event->start_date));
                $start_time_array = (explode(':', substr($event->start_date, 10, 15)));
                $date = strftime(JText::_('DATE_FORMAT_LC'), mktime($start_time_array[0], $start_time_array[1], 0, $start_date_array[1], $start_date_array[2], $start_date_array[0]));
                $eventhtml.= '<br/>' . $date;
                $eventtext.= "\r\n" . $date;
            }
            if($parameters[2])
            {
                $eventhtml.= '<br/>' . $event->description;
                $eventtext.= "\r\n" . jNews_ProcessMail::htmlToText($event->description);
            }
            if($parameters[3])
            {
                $link = 'option=com_jcalpro&extmode=view&extid=' . $event->extid . '&Itemid=' . $Itemid;
                $link = jNews_Tools::completeLink($link, false, $GLOBALS[JNEWS . 'use_sef']);

                $eventhtml.= '<br/><a href="' . $link . '"><span class="aca_readmore">' . _JNEWS_READMORE . '</span></a>';
                $eventtext.= "\r\n" . ' * ' . _JNEWS_READMORE . ' ( ' . $link . ' )';
            }

            if($parameters[2])
            {
                $eventhtml .= '</div>';
            }

            $replacebyHTML[$tag] = $eventhtml;
            $replacebyText[$tag] = $eventtext;
        }
    }

    $html = str_replace($replace, $replacebyHTML, $html);
    $text = str_replace($replace, $replacebyText, $text);
}



function jnewsbot_class_transformfinal(&$html, $text, $params = null)
{

    $db = JFactory::getDBO();

    $replace = array();
    $replaceby = array();
    $i = 0;
    if(!empty($params))
    {
        foreach($params as $class => $style)
        {
            if(preg_match('#class_#', $class) AND !empty($style))
            {
                $class = str_replace('class_', '', $class);
                $replace[$i] = 'class="' . $class . '"';
                $replaceby[$i] = 'style="' . $style . '"';
                $i++;
            }
        }
    }

    $html = str_replace($replace, $replaceby, $html);
}



function jnewsbot_class_transform_mergeArray($contentItemsNew, $contentItemsOld)
{

    if(empty($contentItemsNew))
    {
        return ( empty($contentItemsOld) ? array() : $contentItemsOld );
    }
    else
    {
        if(empty($contentItemsOld))
        {
            return $contentItemsNew;
        }
        else
        {
            //merge
            $newArray = $contentItemsNew;
            //get all tags
            $allTagA = array();
            foreach($contentItemsNew as $ONEcontentItemsNew)
                $allTagA[] = $ONEcontentItemsNew[0];

            foreach($contentItemsOld as $ONEcontentItemsOld)
            {
                if(!in_array($ONEcontentItemsOld[0], $allTagA))
                    $newArray[] = $ONEcontentItemsOld;
            }

            return $newArray;
        }
    }
}



class siteContent
{

    function countSiteCount()
    {
        $db = JFactory::getDBO();

        $sort = JRequest::getVar('filter_category_id', '', 'POST', 'int');
        if(isset($sort) && !empty($sort))
        {
            $query_add = " AND c.id = '".(int)$sort." '";
        }
        else
        {
             $query_add = " ";
        }
        if(version_compare(JVERSION, '1.6.0', '<'))
        { 
            $query = 'SELECT count(a.`id`) FROM `#__content`AS a WHERE a.`state`=1';
            $db->setQuery($query);
            $db->query();
            $count = $db->loadResult();
        }
        else
        {
            $query = 'SELECT count(a.`id`) FROM `#__content` as a LEFT JOIN #__categories AS c ON a.catid = c.id WHERE c.extension = "com_content" AND a.`state`=1'.$query_add;
            $db->setQuery($query);
            $db->query();
            $count = $db->loadResult();
        }
        return $count;
    }

}