public static function cache_start($tag_arg, &$smarty)
 {
     if (!cms_cache_handler::can_cache()) {
         return '{';
     }
     $tmp = debug_backtrace();
     $bt = array();
     foreach ($tmp as $elem) {
         $bt[] = $elem['file'] . ':' . $elem['line'];
     }
     if (!is_array(self::$_cge_cache_keys)) {
         self::$_cge_cache_keys = array();
         self::$_cge_cache_keystack = array();
     }
     $nn = '';
     while ($nn == '' || $nn < 100) {
         $keyr = 'v' . md5(serialize($bt) . cms_utils::get_current_pageid() . cge_url::current_url());
         $key = $keyr . $nn;
         if (!in_array($key, self::$_cge_cache_keys)) {
             break;
         }
         if ($nn == '') {
             $nn = 1;
         }
         $nn = $nn++;
     }
     if ($key == '') {
         return '{';
     }
     self::$_cge_cache_keys[] = $key;
     self::$_cge_cache_keystack[] = $key;
     $output = "\${$key}=cms_cache_handler::get_instance()->get('{$key}','cge_cache'); if(\${$key}!=''){echo '<!--cge_cache-->'.\${$key};}else{ob_start();";
     return $output;
 }
#          The projects homepage is: cmsmadesimple.org
# Version: 0.9.4
# File   : event.Core.ContentPostRender.php
# Purpose: manages expiration of a page
# License: GPL
#
#-------------------------------------------------------------------------------
if (!function_exists('cmsms') || !is_object(cmsms())) {
    exit;
}
if ($this->GetPreference('use_advanced_pageoptions', 0)) {
    $config = cmsms()->GetConfig();
    $redirect = false;
    $db =& $this->GetDb();
    # get all content of type advanced content that need to be set to active/inactive
    $query = "SELECT C.content_id\r\n\t\tFROM " . cms_db_prefix() . "content C\r\n\t\tLEFT JOIN " . cms_db_prefix() . "content_props USE_EXP\r\n\t\t\tON USE_EXP.content_id = C.content_id\r\n\t\tLEFT JOIN " . cms_db_prefix() . "content_props START_DATE\r\n\t\t\tON START_DATE.content_id = C.content_id\r\n\t\tLEFT JOIN " . cms_db_prefix() . "content_props END_DATE\r\n\t\t\tON END_DATE.content_id = C.content_id\r\n\t\tWHERE\r\n\t\t\tC.type = ? AND\r\n\t\t\tUSE_EXP.prop_name = ? AND\r\n\t\t\tUSE_EXP.content = ? AND (\r\n\t\t\t\t(\r\n\t\t\t\t\tSTART_DATE.prop_name = ? AND\r\n\t\t\t\t\tSTART_DATE.content <= ? AND\r\n\t\t\t\t\tEND_DATE.prop_name = ? AND\r\n\t\t\t\t\tEND_DATE.content > ? AND\r\n\t\t\t\t\tC.active = ?\r\n\t\t\t\t)\r\n\t\t\t\tOR\r\n\t\t\t\t(\r\n\t\t\t\t\tEND_DATE.prop_name = ? AND\r\n\t\t\t\t\tEND_DATE.content <= ? AND\r\n\t\t\t\t\tC.active = ?\r\n\t\t\t\t)\r\n\t\t\t)\r\n\t";
    $dbresult = $db->Execute($query, array('advanced_content', 'use_expire_date', '1', 'start_date', time(), 'end_date', time(), 0, 'end_date', time(), 1));
    $contentops =& cmsms()->GetContentOperations();
    while ($dbresult && ($row = $dbresult->FetchRow())) {
        $content_obj = $contentops->LoadContentFromAlias($row['content_id']);
        $content_obj->SetActive(!$content_obj->Active());
        $content_obj->Save();
        if ($row['content_id'] == cms_utils::get_current_pageid()) {
            $redirect = $row['content_id'];
        }
    }
    if ($redirect) {
        $params['content'] = '';
        $this->RedirectContent($redirect);
    }
}
    $config = cmsms()->GetConfig();
    $redirect = false;
    $db =& $this->GetDb();
    # get all content of type advanced that need to be set to active/inactive
    $query = "SELECT C.content_id, C.active\r\n\t\tFROM " . cms_db_prefix() . "content C\r\n\t\tLEFT JOIN " . cms_db_prefix() . "content_props USE_EXP\r\n\t\t\tON USE_EXP.content_id = C.content_id\r\n\t\tLEFT JOIN " . cms_db_prefix() . "content_props START_DATE\r\n\t\t\tON START_DATE.content_id = C.content_id\r\n\t\tLEFT JOIN " . cms_db_prefix() . "content_props END_DATE\r\n\t\t\tON END_DATE.content_id = C.content_id\r\n\t\tWHERE\r\n\t\t\tC.type = ? AND\r\n\t\t\tUSE_EXP.prop_name = ? AND\r\n\t\t\tUSE_EXP.content = ? AND (\r\n\t\t\t\t(\r\n\t\t\t\t\tSTART_DATE.prop_name = ? AND\r\n\t\t\t\t\tSTART_DATE.content <= ? AND\r\n\t\t\t\t\tEND_DATE.prop_name = ? AND\r\n\t\t\t\t\tEND_DATE.content > ? AND\r\n\t\t\t\t\tC.active = ?\r\n\t\t\t\t)\r\n\t\t\t\tOR\r\n\t\t\t\t(\r\n\t\t\t\t\tEND_DATE.prop_name = ? AND\r\n\t\t\t\t\tEND_DATE.content <= ? AND\r\n\t\t\t\t\tC.active = ?\r\n\t\t\t\t)\r\n\t\t\t)\r\n\t\t";
    $dbresult = $db->Execute($query, array('content2', 'use_expire_date', '1', 'start_date', time(), 'end_date', time(), 0, 'end_date', time(), 1));
    $contents = array();
    while ($dbresult && ($row = $dbresult->FetchRow())) {
        if ($row['active']) {
            $contents[$row['content_id']] = 0;
        } else {
            $contents[$row['content_id']] = 1;
        }
    }
    if (count($contents)) {
        cms_content_cache::clear();
        #$this->smarty->clear_all_cache();
        $this->smarty->clear_compiled_tpl();
        foreach ($contents as $contentId => $active) {
            $query = "UPDATE " . cms_db_prefix() . "content\r\n\t\t\t\tSET active = ? WHERE content_id = ?";
            $dbresult = $db->Execute($query, array($active, $contentId));
            if ($contentId == cms_utils::get_current_pageid()) {
                $redirect = $contentId;
            }
        }
    }
    if ($redirect) {
        $params['content'] = '';
        $this->RedirectContent($redirect);
    }
}
 public static function cache_start($tag_arg, $smarty)
 {
     $output = '';
     if (!cms_cache_handler::get_instance()->can_cache()) {
         $output = '{';
     } else {
         $bt = debug_backtrace();
         if (!is_array(self::$_cge_cache_keys)) {
             self::$_cge_cache_keys = array();
             self::$_cge_cache_keystack = array();
         }
         $nn = '';
         while ($nn == '' || $nn < 100) {
             $keyr = 'v' . md5(serialize($bt) . cms_utils::get_current_pageid() . cge_url::current_url());
             $key = $keyr . $nn;
             if (!in_array($key, self::$_cge_cache_keys)) {
                 break;
             }
             if ($nn == '') {
                 $nn = 1;
             }
             $nn = $nn++;
         }
         if ($key == '') {
             return '{';
         }
         self::$_cge_cache_keys[] = $key;
         self::$_cge_cache_keystack[] = $key;
         $output = "\${$key}=cms_cache_handler::get_instance()->get('{$key}','cge_cache'); if(\${$key}!=''){echo '<!--cge_cache-->'.\${$key};}else{ob_start();";
     }
     if (version_compare(CMS_VERSION, '1.11-alpha0') < 0) {
         return $output;
     }
     return '<?php ' . $output . ' ?>';
 }
function module_action_link($params, &$smarty)
{
    $gCms = cmsms();
    $mid = 'm1_';
    $inline = FALSE;
    $module = $smarty->get_template_vars('nmodule');
    if (!$module) {
        $module = $smarty->get_template_vars('actionmodule');
    }
    $module = get_parameter_value($params, 'module', $module);
    if (!$module) {
        return;
    }
    unset($params['module']);
    $obj = cms_utils::get_module($module);
    if (!is_object($obj)) {
        return;
    }
    $text = $module;
    if (isset($params['text'])) {
        $text = trim($params['text']);
        unset($params['text']);
    }
    $title = '';
    if (isset($params['title'])) {
        $title = trim($params['title']);
        unset($params['title']);
    }
    $confmessage = '';
    if (isset($params['confmessage'])) {
        $confmessage = trim($params['confmessage']);
        unset($params['confmessage']);
    }
    $image = '';
    if (isset($params['image'])) {
        $image = trim($params['image']);
        unset($params['image']);
    }
    $class = 'systemicon';
    if (isset($params['class'])) {
        $class = trim($params['class']);
        unset($params['class']);
    }
    $action = 'default';
    if (isset($params['action'])) {
        $action = $params['action'];
        unset($params['action']);
    }
    if (isset($params['id'])) {
        $mid = $params['id'];
        $inline = TRUE;
        unset($params['id']);
    }
    $imageonly = false;
    if (isset($params['imageonly'])) {
        $imageonly = true;
        unset($params['imageonly']);
    }
    $pageid = cms_utils::get_current_pageid();
    if (isset($params['page'])) {
        // convert the page alias to an id
        $manager = $gCms->GetHierarchyManager();
        $node = $manager->sureGetNodeByAlias($params['page']);
        if (isset($node)) {
            $content = $node->GetContent();
            if (isset($content)) {
                $pageid = $content->Id();
            }
        } else {
            $node = $manager->sureGetNodeById($params['page']);
            if (isset($node)) {
                $pageid = $params['detailpage'];
            }
        }
        unset($params['page']);
    }
    $urlonly = cge_utils::to_bool(cge_utils::get_param($params, 'urlonly', false));
    if ($urlonly) {
        $urlonly = true;
        unset($params['urlonly']);
    }
    $jsfriendly = cge_utils::to_bool(cge_utils::get_param($params, 'jsfriendly', false));
    if ($jsfriendly) {
        $jsfriendly = true;
        $urlonly = true;
        unset($params['jsfriendly']);
    }
    $forjs = cge_utils::to_bool(cge_utils::get_param($params, 'forjs', false));
    if ($forjs) {
        $jsfriendly = true;
        $urlonly = true;
        unset($params['forjs']);
    }
    $forajax = cge_utils::to_bool(cge_utils::get_param($params, 'forajax', false));
    if ($forajax) {
        $jsfriendly = true;
        $urlonly = true;
        $forajax = true;
        unset($params['forajax']);
    }
    $assign = '';
    if (isset($params['assign'])) {
        $assign = trim($params['assign']);
        unset($params['assign']);
    }
    $addtext = '';
    if ($title) {
        $addtext = 'title="' . $title . '"';
    }
    if (!empty($image) && method_exists($obj, 'CreateImageLink') && $urlonly == false) {
        $output = $obj->CreateImageLink($mid, $action, $pageid, $text, $image, $params, $class, $confmessage, $imageonly, FALSE, $addtext);
    } else {
        $output = $obj->CreateLink($mid, $action, $pageid, $text, $params, $confmessage, $urlonly, $inline, $addtext);
        if ($urlonly && $jsfriendly) {
            $output = str_replace('amp;', '', $output);
        }
        if ($forajax) {
            if (strpos($output, '?') === FALSE) {
                $output .= '?showtemplate=false';
            } else {
                $output .= '&showtemplate=false';
            }
        }
    }
    // all done
    if (!empty($assign)) {
        $smarty->assign($assign, $output);
        return;
    }
    return $output;
}