| Current Path : /home/bateauecpx/www/components/com_jevents/controllers/ |
| Current File : /home/bateauecpx/www/components/com_jevents/controllers/modcal.php |
<?php
/**
* JEvents Component for Joomla! 3.x
*
* @version $Id: modcal.php 3549 2012-04-20 09:26:21Z geraintedwards $
* @package JEvents
* @copyright Copyright (C) 2008-2019 GWE Systems Ltd
* @license GNU/GPLv2, see http://www.gnu.org/licenses/gpl-2.0.html
* @link http://www.jevents.net
*/
defined( 'JPATH_BASE' ) or die( 'Direct Access to this location is not allowed.' );
jimport('joomla.application.component.controller');
class ModCalController extends JControllerLegacy {
var $modid = null;
/* parameters form module or component */
var $displayLastMonth = null;
var $disp_lastMonthDays = null;
var $disp_lastMonth = null;
var $displayNextMonth = null;
var $disp_nextMonthDays = null;
var $disp_nextMonth = null;
var $linkCloaking = null;
/* component only parameter */
var $com_starday = null;
/* module only parameters */
var $inc_ec_css = null;
var $minical_showlink = null;
var $minical_prevyear = null;
var $minical_prevmonth = null;
var $minical_actmonth = null;
var $minical_actyear = null;
var $minical_nextmonth = null;
var $minical_nextyear = null;
/* class variables */
var $catidsOut = null;
var $modcatids = null;
var $catidList = "";
var $aid = null;
var $lang = null;
var $myItemid = 0;
var $cat = "";
/* modules parameter object */
var $modparams = null;
// data model for module
var $datamodel = null;
function __construct($config = array())
{
if (!isset($config['base_path'])){
$config['base_path']=JEV_PATH;
}
parent::__construct($config);
// TODO get this from config
$this->registerDefaultTask( 'calendar' );
$cfg = JEVConfig::getInstance();
$theme = ucfirst(JEV_CommonFunctions::getJEventsViewName());
JLoader::register('JEvents'.ucfirst($theme).'View',JEV_VIEWS."/".$theme."/abstract/abstract.php");
include_once(JEV_LIBS."/modfunctions.php");
if (!isset($this->_basePath)){
$this->_basePath = $this->basePath;
$this->_task = $this->task;
}
}
function ajax() {
$modid = intval((JRequest::getVar('modid', 0)));
if ($modid<=0){
echo "<script>alert('bad mod id');</script>";
return;
}
// load language constants
JEVHelper::loadLanguage('modcal');
list($year,$month,$day) = JEVHelper::getYMD();
$user = JFactory::getUser();
$query = "SELECT id, params"
. "\n FROM #__modules AS m"
. "\n WHERE m.published = 1"
. "\n AND m.id = ". $modid
. "\n AND m.access IN (" . JEVHelper::getAid($user, 'string') . ")"
. "\n AND m.client_id != 1";
$db = JFactory::getDbo();
$db->setQuery( $query );
$modules = $db->loadObjectList();
if (count($modules)<=0){
if (!$modid<=0){
echo "<script>alert('bad mod id');</script>";
return;
}
}
$params = new JRegistry( $modules[0]->params );
$cfg = JEVConfig::getInstance();
$theme = JEV_CommonFunctions::getJEventsViewName();
$comptheme = $params->get("com_calViewName","global");
$theme = ($comptheme=="global")?$theme : $comptheme;
$modtheme = $params->get("com_calViewName", $theme);
if ($modtheme=="" || $modtheme=="global" ){
$modtheme=$theme;
}
$theme=$modtheme;
//require(JModuleHelper::getLayoutPath('mod_jevents_cal',$theme.'/'."calendar"));
require_once (JPATH_SITE.'/modules/mod_jevents_cal/helper.php');
$jevhelper = new modJeventsCalHelper();
$viewclass = $jevhelper->getViewClass($theme, 'mod_jevents_cal',$theme.'/'."calendar", $params);
$modview = new $viewclass($params, $modid);
$modview->jevlayout = $theme;
$content = $modview->getAjaxCal($modid,$month,$year);
$content = str_replace("<script style='text/javascript'>xyz=1;", "XYZ", $content);
$content = str_replace("zyx=1;</script>", "ZYX", $content);
// ungreedy match
preg_match("/XYZ(.*)ZYX/sU", $content, $match);
$script = "";
if (isset($match[1])){
$script = $match[1];
$content = str_replace($match[0],"", $content);
}
$json = array("data" => $content, "modid"=>$modid, "script"=>$script);
ob_end_clean();
// commmended out - see https://www.jevents.net/forum/viewtopic.php?f=24&t=40917&p=192337#p192337
//ob_end_flush();
if (JRequest::getCmd("callback", 0)){
echo JRequest::getCmd("callback", 0)."(". json_encode($json),");";
exit();
}
else if (JRequest::getInt("json")==1){
$encoded = json_encode($json);
if ($encoded === false && json_last_error() == JSON_ERROR_UTF8) {
$encoded = json_encode($this->utf8ize($json));
}
echo $encoded;
exit();
}
else {
?>
<script type="text/javascript">
var doitdone = false;
function doit(){
if (doitdone) return;
doitdone = true;
var sillydiv=document.getElementById('silly');
parent.navLoaded(sillydiv,<?php echo $modid;?>);
}
window.onload=doit;
</script>
<?php
echo "<div id='silly'>";
echo $modview->getAjaxCal($modid,$month,$year);
echo "</div>";
?>
<script type="text/javascript">
doit();
</script>
<?php
}
}
// see http://php.net/manual/en/function.json-last-error.php
private function utf8ize($mixed) {
if (is_array($mixed)) {
foreach ($mixed as $key => $value) {
$mixed[$key] = $this->utf8ize($value);
}
} elseif (is_string($mixed)) {
return mb_convert_encoding($mixed, "UTF-8", "UTF-8");
}
return $mixed;
}
function getViewName(){
$cfg = JEVConfig::getInstance();
$theme = JEV_CommonFunctions::getJEventsViewName();
return $theme;
}
/**
* Pseudo Constructor
*
*/
function setup(&$params, $modid) {
$this->modid = $modid;
$user = JFactory::getUser();
$cfg = JEVConfig::getInstance();
$db = JFactory::getDbo();
$this->datamodel =new JEventsDataModel();
// component config object
$jevents_config = JEVConfig::getInstance();
$this->modparams = & $params;
$this->aid = JEVHelper::getAid($user, 'string'); // RSH modified getAid to handle different return types 10/26/10
$tmplang = JFactory::getLanguage();
// get params exclusive to module
$this->inc_ec_css = $this->modparams->get('inc_ec_css', 0);
$this->minical_showlink = $this->modparams->get('minical_showlink', 1);;
$this->minical_prevyear = $this->modparams->get('minical_prevyear', 1);;
$this->minical_prevmonth = $this->modparams->get('minical_prevmonth', 1);;
$this->minical_actmonth = $this->modparams->get('minical_actmonth', 1);;
$this->minical_actmonth = $this->modparams->get('minical_actmonth', 1);;
$this->minical_actyear = $this->modparams->get('minical_actyear', 1);;
$this->minical_nextmonth = $this->modparams->get('minical_nextmonth', 1);;
$this->minical_nextyear = $this->modparams->get('minical_nextyear', 1);;
// get params exclusive to component
$this->com_starday = intval($jevents_config->get('com_starday',0));
// make config object (module or component) current
if (intval($this->modparams->get('modcal_useLocalParam', 0)) == 1) {
$myparam = & $this->modparams;
} else {
$myparam = & $jevents_config;
}
// get com_event config parameters for this module
$this->displayLastMonth = $myparam->get('modcal_DispLastMonth', 'NO');
$this->disp_lastMonthDays = $myparam->get('modcal_DispLastMonthDays', 0);
$this->linkCloaking = $myparam->get('modcal_LinkCloaking', 0);
$t_datenow = JEVHelper::getNow();
$this->timeWithOffset = $t_datenow->toUnix(true);
switch($this->displayLastMonth) {
case 'YES_stop':
$this->disp_lastMonth = 1;
break;
case 'YES_stop_events':
$this->disp_lastMonth = 2;
break;
case 'ALWAYS':
$this->disp_lastMonthDays = 0;
$this->disp_lastMonth = 1;
break;
case 'ALWAYS_events':
$this->disp_lastMonthDays = 0;
$this->disp_lastMonth = 2;
break;
case 'NO':
default:
$this->disp_lastMonthDays = 0;
$this->disp_lastMonth = 0;
break;
}
$this->displayNextMonth = $myparam->get('modcal_DispNextMonth', 'NO');
$this->disp_nextMonthDays = $myparam->get('modcal_DispNextMonthDays', 0);
switch($this->displayNextMonth) {
case 'YES_stop':
$this->disp_nextMonth = 1;
break;
case 'YES_stop_events':
$this->disp_nextMonth = 2;
break;
case 'ALWAYS':
$this->disp_nextMonthDays = 0;
$this->disp_nextMonth = 1;
break;
case 'ALWAYS_events':
$this->disp_nextMonthDays = 0;
$this->disp_nextMonth = 2;
break;
case 'NO':
default:
$this->disp_nextMonthDays = 0;
$this->disp_nextMonth = 0;
break;
}
// find appropriate Itemid and setup catids for datamodel
$this->myItemid = $this->datamodel->setupModuleCatids($this->modparams);
$this->cat = $this->datamodel->getCatidsOutLink(true);
$this->linkpref = 'index.php?option='.JEV_COM_COMPONENT.'&Itemid='.$this->myItemid.$this->cat.'&task=';
}
}