Current Path : /var/www/html/clients/rebirth.e-nk.ru/sources/action_public/ |
Current File : /var/www/html/clients/rebirth.e-nk.ru/sources/action_public/portal.php |
<?php /* +-------------------------------------------------------------------------- | Invision Power Board | ======================================== | by Matthew Mecham | (c) 2001 - 2004 Invision Power Services | Nullified by Terabyte | ======================================== | | | +--------------------------------------------------------------------------- | | > IPB Portal Core Module | > Module written by Matt Mecham | > Date started: Tuesday 2nd August 2005 (12:37) +-------------------------------------------------------------------------- */ class portal { /** * IPSCLASS * * @var object */ var $ipsclass; /** * Object of portal stuff * * @var array */ var $portal_object = array(); /** * Array of replacement tags * * @var array */ var $replace_tags = array(); /** * Array of tags to module... * * @var array */ var $remap_tags_module = array(); /** * Array of tags to function... * * @var array */ var $remap_tags_function = array(); /** * Array of module objects * * @var array */ var $module_objects = array(); /** * Array of basic tags * * @var array */ var $basic_tags = array( 'BASIC:SITENAV' => '_show_sitenav', 'BASIC:AFFILIATES' => '_show_affiliates' ); /*-------------------------------------------------------------------------*/ // AUTO-RUN /*-------------------------------------------------------------------------*/ function auto_run() { //----------------------------------------- // INIT //----------------------------------------- $conf_groups = array(); $found_tags = array(); $found_modules = array(); //----------------------------------------- // Get settings... //----------------------------------------- foreach( $this->ipsclass->cache['portal'] as $portal_data ) { if ( $portal_data['pc_settings_keyword'] ) { $conf_groups[] = "'".$portal_data['pc_settings_keyword']."'"; } //----------------------------------------- // Remap tags //----------------------------------------- if ( is_array( $portal_data['pc_exportable_tags'] ) AND count( $portal_data['pc_exportable_tags'] ) ) { foreach( $portal_data['pc_exportable_tags'] as $tag => $tag_data ) { $this->remap_tags_function[ $tag ] = $tag_data[0]; $this->remap_tags_module[ $tag ] = $portal_data['pc_key']; } } } //----------------------------------------- // Now really get them... //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'c.conf_key, c.conf_value, c.conf_default', 'from' => array( 'conf_settings' => 'c' ), 'add_join' => array( 0 => array( 'select' => 't.conf_title_id, t.conf_title_keyword', 'from' => array( 'conf_settings_titles' => 't' ), 'where' => 'c.conf_group=t.conf_title_id', 'type' => "left" ) ), 'where' => 't.conf_title_keyword IN('.implode(",",$conf_groups).") OR conf_key LIKE 'csite%'" ) ); $this->ipsclass->DB->simple_exec(); //----------------------------------------- // Set 'em up //----------------------------------------- while( $r = $this->ipsclass->DB->fetch_row() ) { $value = $r['conf_value'] != "" ? $r['conf_value'] : $r['conf_default']; if ( $r['conf_key'] == 'csite_nav_contents' or $r['conf_key'] == 'csite_fav_contents' ) { $this->raw[ $r['conf_key'] ] = str_replace( ''', "'", str_replace( "\r\n", "\n", $value ) ); } else { $this->ipsclass->vars[ $r['conf_key'] ] = $value; } } //----------------------------------------- // Require the HTML and language modules //----------------------------------------- if ( ! $this->ipsclass->vars['csite_on'] ) { $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'csite_not_enabled') ); } //----------------------------------------- // Get global skin and language files //----------------------------------------- $this->ipsclass->load_language('lang_portal'); $this->ipsclass->load_template('skin_portal'); //----------------------------------------- // Load and config the post parser //----------------------------------------- require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" ); $this->portal_object['parser'] = new parse_bbcode(); $this->portal_object['parser']->ipsclass =& $this->ipsclass; $this->portal_object['parser']->allow_update_caches = 1; $this->portal_object['parser']->bypass_badwords = intval($this->ipsclass->member['g_bypass_badwords']); //----------------------------------------- // Get forums we're allowed to read // - Use forum cache incase we have NO perms //----------------------------------------- foreach( $this->ipsclass->cache['forum_cache'] as $f ) { if ( ($this->ipsclass->check_perms($f['read_perms']) != TRUE) or ($f['password'] != "" ) ) { $this->portal_object['bad_forum'][] = $f['id']; } else { $this->portal_object['good_forum'][] = $f['id']; } } //----------------------------------------- // Assign skeletal template ma-doo-bob //----------------------------------------- $this->template = $this->ipsclass->compiled_templates['skin_portal']->csite_skeleton_template(); //----------------------------------------- // Grab all special tags //----------------------------------------- preg_match_all( "#<!--\:\:(.+?)\:\:-->#", $this->template, $match ); //----------------------------------------- // Assign functions //----------------------------------------- for ( $i=0; $i < count($match[0]); $i++ ) { $tag = $match[1][$i]; if ( $this->remap_tags_module[ $tag ] OR $this->basic_tags[ $tag ] ) { $found_tags[ $tag ] = 1; if ( $this->remap_tags_module[ $tag ]) { $found_modules[ $this->remap_tags_module[ $tag ] ] = 1; } } } //----------------------------------------- // Require modules... //----------------------------------------- if ( is_array( $found_modules ) AND count( $found_modules ) ) { foreach( $found_modules as $mod_name => $pointless ) { if ( ! is_object( $this->module_objects[ $mod_name ] ) ) { if ( file_exists( ROOT_PATH . 'sources/portal_plugins/'.$mod_name.'.php' ) ) { require_once( ROOT_PATH . 'sources/portal_plugins/'.$mod_name.'.php' ); $constructor = 'ppi_'.$mod_name; $this->module_objects[ $mod_name ] = new $constructor; $this->module_objects[ $mod_name ]->ipsclass =& $this->ipsclass; $this->module_objects[ $mod_name ]->portal_object =& $this->portal_object; $this->module_objects[ $mod_name ]->init(); } } } } //----------------------------------------- // Get the tag replacements... //----------------------------------------- if ( is_array( $found_tags ) AND count( $found_tags ) ) { foreach( $found_tags as $tag_name => $even_more_pointless ) { foreach( $this->basic_tags as $btag => $bfunction ) { if ( $tag_name == $btag ) { $this->replace_tags[ $tag_name ] = $this->$bfunction(); continue; } } $mod_obj = $this->remap_tags_module[ $tag_name ]; $fun_obj = $this->remap_tags_function[ $tag_name ]; if ( method_exists( $this->module_objects[ $mod_obj ], $fun_obj ) ) { $this->replace_tags[ $tag_name ] = $this->module_objects[ $mod_obj ]->$fun_obj(); continue; } } } $this->_do_output(); } /*-------------------------------------------------------------------------*/ // Do OUTPUT /*-------------------------------------------------------------------------*/ function _do_output() { //----------------------------------------- // SITE REPLACEMENTS //----------------------------------------- foreach( $this->replace_tags as $sbk => $sbv ) { $this->template = str_replace( "<!--::".$sbk."::-->", $sbv, $this->template ); } //----------------------------------------- // Pass to print... //----------------------------------------- $this->ipsclass->print->add_output( $this->template ); $this->ipsclass->print->do_output( array( 'TITLE' => $this->ipsclass->vars['csite_title'] ) ); exit(); } /*-------------------------------------------------------------------------*/ // Navigation Stuff /*-------------------------------------------------------------------------*/ function _show_sitenav() { if ( ! $this->ipsclass->vars['csite_nav_show'] ) { return; } $links = ""; $raw_nav = $this->raw['csite_nav_contents']; foreach( explode( "\n", $raw_nav ) as $l ) { preg_match( "#^(.+?)\[(.+?)\]$#is", trim($l), $matches ); $matches[1] = trim($matches[1]); $matches[2] = trim($matches[2]); if ( $matches[1] and $matches[2] ) { $matches[1] = str_replace( '&', '&', str_replace( '&', '&', $matches[1] ) ); $links .= $this->ipsclass->compiled_templates['skin_portal']->tmpl_links_wrap( str_replace( '{board_url}', $this->ipsclass->base_url, $matches[1] ), $matches[2] ); } } return $this->ipsclass->compiled_templates['skin_portal']->tmpl_sitenav($links); } /*-------------------------------------------------------------------------*/ // Affiliates /*-------------------------------------------------------------------------*/ function _show_affiliates() { if ( ! $this->ipsclass->vars['csite_fav_show'] ) { return; } return $this->ipsclass->compiled_templates['skin_portal']->tmpl_affiliates($this->raw['csite_fav_contents']); } } ?>