Exemple #1
0
/**
 *
 **/
function getPagesList($fieldname, $selected, $add_empty = false)
{
    $pages_list = CAT_Helper_Page::getPages(CAT_Backend::isBackend());
    $deleted = CAT_Helper_Page::getPagesByVisibility('deleted');
    if (count($deleted)) {
        $arrh = CAT_Helper_Array::getInstance();
        foreach ($deleted as $page) {
            $arrh->ArrayRemove($page, $pages_list, 'page_id');
        }
    }
    if ($add_empty) {
        array_unshift($pages_list, array('page_id' => 0, 'parent' => 0, 'level' => 0, 'is_open' => false, 'menu_title' => CAT_Helper_Page::getInstance()->lang()->translate('[none (use internal)]')));
    }
    return CAT_Helper_ListBuilder::getInstance(true)->config(array('space' => '|-- '))->dropdown($fieldname, $pages_list, 0, $selected);
}
Exemple #2
0
 /**
  * Allows modules to register a file which should be allowed to load the
  * config.php directly.
  *
  * This is only allowed in installation context!
  *
  * @access public
  * @param  string  $module   - module name
  * @param  string  $filepath - relative file path
  **/
 public static function sec_register_file($module, $filepath)
 {
     global $admin;
     if (!CAT_Backend::isBackend() && !is_object($admin) && !defined('CAT_INSTALL')) {
         self::getInstance()->log()->logCrit("sec_register_file() called outside admin context!");
         self::$error = "sec_register_file() called outside admin context!";
         return false;
     }
     // check permissions
     if (!CAT_Users::checkPermission('Addons', 'modules_install') && !defined('CAT_INSTALL')) {
         self::getInstance()->log()->logCrit("sec_register_file() called without modules_install perms!");
         self::$error = "sec_register_file() called without modules_install perms!";
         return false;
     }
     // this will remove ../.. from $filepath
     $filepath = CAT_Helper_Directory::sanitizePath($filepath);
     if (!is_dir(CAT_PATH . '/modules/' . $module)) {
         self::getInstance()->log()->logCrit("sec_register_file() called for non existing module [{$module}] (path: [{$filepath}])");
         self::$error = "sec_register_file() called for non existing module [{$module}] (path: [{$filepath}])";
         return false;
     }
     if (!file_exists(CAT_Helper_Directory::sanitizePath(CAT_PATH . '/modules/' . $module . '/' . $filepath))) {
         self::getInstance()->log()->logCrit("sec_register_file() called for non existing file [{$filepath}] (module: [{$module}])");
         self::$error = "sec_register_file() called for non existing file [{$filepath}] (module: [{$module}])";
         return false;
     }
     $self = self::getInstance();
     $q = $self->db()->query('SELECT * FROM `:prefix:addons` WHERE directory=:dir', array('dir' => $module));
     if (!$q->rowCount()) {
         self::getInstance()->log()->logCrit("sec_register_file() called for non existing module [{$module}] (path: [{$filepath}]) - not found in addons table!");
         self::$error = "sec_register_file() called for non existing module [{$module}] (path: [{$filepath}]) - not found in addons table!";
         return false;
     }
     $row = $q->fetchRow();
     // remove trailing / from $filepath
     $filepath = preg_replace('~^/~', '', $filepath);
     $q = $self->db()->query('SELECT * FROM `:prefix:class_secure` WHERE module=:mod AND filepath=:path', array('mod' => $row['addon_id'], 'path' => '/modules/' . $module . '/' . $filepath));
     if (!$q->rowCount()) {
         $self->db()->query('REPLACE INTO `:prefix:class_secure` VALUES ( :id, :path )', array('id' => $row['addon_id'], 'path' => '/modules/' . $module . '/' . $filepath));
         return $self->db()->isError() ? false : true;
     }
     return true;
 }
Exemple #3
0
//**************************************************************************
if (!defined('SESSION_STARTED')) {
    session_name(APP_NAME . 'sessionid');
    $cookie_settings = session_get_cookie_params();
    session_set_cookie_params(3 * 3600, $cookie_settings["path"], $cookie_settings["domain"], strtolower(substr($_SERVER['SERVER_PROTOCOL'], 0, 5)) === 'https', true);
    unset($cookie_settings);
    session_start();
    CAT_Registry::register('SESSION_STARTED', true, true);
}
if (defined('ENABLED_ASP') && ENABLED_ASP && !isset($_SESSION['session_started'])) {
    $_SESSION['session_started'] = time();
}
//**************************************************************************
// frontend only
//**************************************************************************
if (!CAT_Backend::isBackend() && !defined('CAT_AJAX_CALL') && !defined('CAT_LOGIN_PHASE') && defined('ENABLE_CSRFMAGIC') && true === ENABLE_CSRFMAGIC) {
    CAT_Helper_Protect::getInstance()->enableCSRFMagic();
}
//**************************************************************************
// Get users language
//**************************************************************************
$val = CAT_Helper_Validate::getInstance();
$user_lang = $val->sanitizeGet('lang');
if ($user_lang && $user_lang != '' && !is_numeric($user_lang) && strlen($user_lang) == 2 && file_exists(CAT_PATH . '/languages/' . $user_lang . '.php')) {
    CAT_Registry::register('LANGUAGE', strtoupper($user_lang), true);
}
if (!CAT_Registry::exists('LANGUAGE')) {
    CAT_Registry::register('LANGUAGE', DEFAULT_LANGUAGE, true);
}
// Load Language file
if (!defined('LANGUAGE_LOADED')) {
// =========================================================
// ! Get display name of person who last modified the page
// =========================================================
$user = $users->get_user_details($results_array['modified_by']);
// =================================
// ! Add permissions to $data_dwoo
// =================================
$permission['pages'] = $users->checkPermission('Pages', 'pages') ? true : false;
$permission['pages_add'] = $users->checkPermission('Pages', 'pages_add') ? true : false;
$permission['pages_add_l0'] = $users->checkPermission('Pages', 'pages_add_l0') ? true : false;
$permission['pages_modify'] = $users->checkPermission('Pages', 'pages_modify') ? true : false;
$permission['pages_delete'] = $users->checkPermission('Pages', 'pages_delete') ? true : false;
$permission['pages_settings'] = $users->checkPermission('Pages', 'pages_settings') ? true : false;
$permission['pages_intro'] = $users->checkPermission('Pages', 'pages_intro') != true || INTRO_PAGE != 'enabled' ? false : true;
// list of all pages for dropdown, sorted by parent->child
$pages = CAT_Helper_ListBuilder::sort(CAT_Helper_Page::getPages(CAT_Backend::isBackend()), 0);
// =============================================
// ! Add result_array to the template variable
// =============================================
$ajax = array('description' => $results_array['description'], 'keywords' => $results_array['keywords'], 'language' => $results_array['language'], 'level' => $results_array['level'], 'menu' => $results_array['menu'], 'menu_title' => htmlspecialchars_decode($results_array['menu_title'], ENT_QUOTES), 'modified_when' => $results_array['modified_when'] != 0 ? CAT_Helper_DateTime::getDate($results_array['modified_when']) : 'Unknown', 'page_id' => $results_array['page_id'], 'page_title' => htmlspecialchars_decode($results_array['page_title'], ENT_QUOTES), 'parent' => $results_array['parent'], 'searching' => $results_array['searching'] == 0 ? false : true, 'short_link' => substr($results_array['link'], strripos($results_array['link'], '/') + 1), 'target' => $results_array['target'], 'template' => $results_array['template'], 'visibility' => $results_array['visibility'], 'display_name' => $user['display_name'], 'username' => $user['username'], 'DISPLAY_MENU_LIST' => MULTIPLE_MENUS != false ? true : false, 'DISPLAY_LANGUAGE_LIST' => PAGE_LANGUAGES != false ? true : false, 'DISPLAY_SEARCHING' => SEARCH != false ? true : false, 'admin_groups' => explode(',', str_replace('_', '', $results_array['admin_groups'])), 'viewing_groups' => explode(',', str_replace('_', '', $results_array['viewing_groups'])), 'parent_list' => $pages, 'PAGE_EXTENSION' => $backend->db()->query("SELECT `value` FROM `:prefix:settings` WHERE name = 'page_extension'")->fetchColumn());
$ajax['variants'] = array();
$info = CAT_Helper_Addons::checkInfo(CAT_PATH . '/templates/' . CAT_Helper_Page::getPageTemplate($results_array['page_id']));
if (isset($info['module_variants']) && is_array($info['module_variants']) && count($info['module_variants'])) {
    $ajax['variants'] = $info['module_variants'];
    array_unshift($ajax['variants'], '');
}
$ajax['template_variant'] = CAT_Helper_Page::getPageSettings($results_array['page_id'], 'internal', 'template_variant');
// ====================
// ! Return values
// ====================
print json_encode($ajax);
Exemple #5
0
 /**
  * returns a list of page_id's containing the children of given parent
  *
  * @access public
  * @param  integer  $parent (default:0)
  * @param  boolean  $add_sections (default:false)
  * @return array
  **/
 public static function getPagesByParent($parent = 0, $add_sections = false)
 {
     if (!count(self::$pages_by_parent)) {
         $pages = self::getPages(CAT_Backend::isBackend());
         foreach ($pages as $page) {
             self::$pages_by_parent[$page['parent']][] = $page['page_id'];
         }
     }
     return isset(self::$pages_by_parent[$parent]) ? self::$pages_by_parent[$parent] : array();
 }
Exemple #6
0
 /**
  * prints a formatted error message
  *
  * @access public
  * @param  string  $message - error message
  * @param  string  $link    - page to forward to
  * @param  boolean $print_header
  * @param  mixed   $args    - additional args to print
  *
  **/
 public static function printError($message = NULL, $link = 'index.php', $print_header = true, $args = NULL)
 {
     global $parser;
     $print_footer = false;
     $caller = debug_backtrace();
     // remove first item (it's the printError() method itself)
     array_shift($caller);
     // if called by printFatalError(), shift again...
     if (isset($caller[0]['function']) && $caller[0]['function'] == 'printFatalError') {
         array_shift($caller);
     }
     $caller_class = isset($caller[0]['class']) ? $caller[0]['class'] : NULL;
     // remove path info from file
     $file = isset($caller[1]) && isset($caller[1]['file']) ? basename($caller[1]['file']) : (isset($caller[0]) && isset($caller[0]['file']) ? basename($caller[0]['file']) : NULL);
     $line = isset($caller[1]) && isset($caller[1]['line']) ? $caller[1]['line'] : (isset($caller[0]) && isset($caller[0]['line']) ? $caller[0]['line'] : NULL);
     $function = isset($caller[1]) && isset($caller[1]['function']) ? $caller[1]['function'] : (isset($caller[0]) && isset($caller[0]['function']) ? $caller[0]['function'] : NULL);
     if (true === is_array($message)) {
         $message = implode("<br />", $message);
     }
     if ($file) {
         $logger = CAT_Helper_KLogger::instance(CAT_PATH . '/temp/logs', 2);
         $logger->logFatal(sprintf('Fatal error with message [%s] emitted in [%s] line [%s] method [%s]', $message, $file, $line, $function));
         if ($args) {
             $logger->logFatal(var_export($args, 1));
         }
     }
     $message = CAT_Object::lang()->translate($message);
     // avoid "headers already sent" error
     if (!headers_sent() && $print_header) {
         $print_footer = true;
         if (!is_object($parser) || !CAT_Backend::isBackend() && !defined('CAT_PAGE_CONTENT_DONE')) {
             self::err_page_header();
         }
     }
     if (!is_object($parser) || !CAT_Backend::isBackend() && !defined('CAT_PAGE_CONTENT_DONE')) {
         echo CAT_Object::lang()->translate('Ooops... A fatal error occured while processing your request!'), "<br /><br />", CAT_Object::lang()->translate('Error message'), ":<br />", CAT_Object::lang()->translate($message), "<br /><br />";
         echo CAT_Object::lang()->translate("We're sorry!");
     } else {
         $parser->output('error.tpl', array('message' => $message, 'file' => $file, 'line' => $line, 'function' => $function, 'link' => $link));
     }
     if ($print_footer && !is_object($parser)) {
         self::err_page_footer();
     }
 }
Exemple #7
0
foreach ($avail as $i => &$l) {
    if ($l['VALUE'] == $page['language']) {
        unset($avail[$i]);
        break;
    }
}
// remove already linked languages
if (is_array($items) && count($items)) {
    foreach ($items as $item) {
        $arrh->ArrayRemove($item['lang'], $avail, 'VALUE');
    }
}
// ===========
// ! get pages
// ===========
$pages_list = CAT_Helper_Page::getPages(CAT_Backend::isBackend());
// skip current page
$arrh->ArrayRemove($page_id, $pages_list, 'page_id');
// skip already linked pages
if (is_array($items) && count($items)) {
    foreach ($items as $item) {
        $arrh->ArrayRemove($item['link_page_id'], $pages_list, 'page_id');
    }
}
// skip deleted pages
$deleted = CAT_Helper_Page::getPagesByVisibility('deleted');
foreach ($deleted as $item) {
    $arrh->ArrayRemove($item['page_id'], $pages_list, 'page_id');
}
// =========================================================
// ! Get display name of person who last modified the page