$setting_data = ModuleSetting::load_setting(PAGE_GROUPS_CATEGORY, $uid); $leftModulesFromDB = $setting_data['left']; $middleModulesFromDB = $setting_data['middle']; $rightModulesFromDB = $setting_data['right']; $page = new Template(CURRENT_THEME_FSPATH . "/groups.tpl"); $page->set('current_theme_path', PA::$theme_url); //header of group page $optional_parameters = "onload=\"{$onload}\""; html_body($optional_parameters); //header of group page $header = new Template(CURRENT_THEME_FSPATH . "/header.tpl"); $header->set('current_theme_path', PA::$theme_url); $header->set('current_theme_rel_path', PA::$theme_rel); // find navigation link for header $navigation = new Navigation(); $navigation_links = $navigation->get_links(); $header->set('navigation_links', $navigation_links); $header->set('onload', $onload); $header->tier_one_tab = $main_tier; $header->tier_two_tab = $second_tier; $header->tier_three_tab = $third_tier; if (PA::$network_info) { $header->set_object('network_info', PA::$network_info); } // This block of code has to be removed when this page will be rendered using PageRenderer. $top_navigation_bar = new Template(CURRENT_THEME_FSPATH . "/top_navigation_bar.tpl"); $top_navigation_bar->set('navigation_links', $navigation_links); //left of group page foreach ($leftModulesFromDB as $leftModule) { $file = PA::$blockmodule_path . "/{$leftModule}/{$leftModule}.php"; require_once $file;
function __construct($cb, $page_id, $title, $page_template = "homepage_pa.tpl", $header_template = "header.tpl", $default_mode = PRI, $default_block_type = HOMEPAGE, $network_info_ = NULL, $onload = NULL, $setting_data = NULL) { global $app, $page; if (PA::$profiler) { PA::$profiler->startTimer('PageRenderer_init'); } // we may want to know the page_tpe elsewhere too PA::$config->page_type = $page_id; // NOTE: PA::$config->page_type var = $page_id and should be removed! $this->page_id = $page_id; $this->debugging = isset($_GET['debug']); $this->page_template = $page_template; $this->top_navigation_template = 'top_navigation_bar.tpl'; //TO DO: Remove this hardcoded text afterwards $this->header_template = $header_template; //settings for current network $this->network_info = $network_info_ ? $network_info_ : PA::$network_info; //FIXME: does this have to be a parameter? can't we just always use the global PA::$network_info? $this->module_arrays = array(); // the function hide_message_window is added here // so whenever html page is loaded the message window's ok button gets focus // here if previouly some function is defined as // onload = "ajax_call_method(ajax_titles, $uid, ajax_urls);" // now it will look like // onload = "ajax_call_method(ajax_titles, $uid, ajax_urls); hide_message_window();" $this->onload = "{$onload} hide_message_window('confirm_btn');"; $this->page_title = $title; $this->html_body_attributes = ""; // default settings for the tiers $this->main_tier = @$_GET['tier_one']; $this->second_tier = @$_GET['tier_two']; $this->third_tier = @$_GET['tier_three']; $navigation = new Navigation(); $this->navigation_links = $navigation->get_links(); $this->message_count = null; if (!isset(PA::$login_uid)) { PA::$login_uid = @$_SESSION['user']['id']; } if (PA::$login_uid) { $this->message_count = Message::get_new_msg_count(PA::$login_uid); } if (!isset($dynamic_page)) { $dynamic_page = new DynamicPage($this->page_id); if (!is_object($dynamic_page) or !$dynamic_page->docLoaded) { throw new Exception("Page XML config file for page ID: {$page_id} - not found!"); } $dynamic_page->initialize(); } if (false !== strpos($dynamic_page->page_type, 'group') && (!empty($_REQUEST['gid']) || !empty($_REQUEST['ccid']))) { // page is a group page - get group module settings $_gr_id = !empty($_REQUEST['gid']) ? $_REQUEST['gid'] : $_REQUEST['ccid']; $this->setting_data = ModuleSetting::load_setting($this->page_id, $_gr_id, 'group'); $this->page_template = $this->setting_data['page_template']; if (empty($this->setting_data['access_permission'])) { // no permissions required to access page $access_permission = true; } else { $access_permission = PermissionsHandler::can_group_user(PA::$login_uid, $_gr_id, array('permissions' => $this->setting_data['access_permission'])); } } else { if (false !== strpos($dynamic_page->page_type, 'user') && !empty(PA::$login_uid)) { // page is an user page - get user module settings // echo "POSTING TO USER PAGE"; die(); $this->setting_data = ModuleSetting::load_setting($this->page_id, PA::$login_uid, 'user'); $this->page_template = $this->setting_data['page_template']; if (empty($this->setting_data['access_permission'])) { // no permissions required to access page $access_permission = true; } else { $access_permission = PermissionsHandler::can_user(PA::$login_uid, array('permissions' => $this->setting_data['access_permission'])); } } else { // page is a network page - get network module settings $this->setting_data = ModuleSetting::load_setting($this->page_id, PA::$network_info->network_id, 'network'); $this->page_template = $this->setting_data['page_template']; if (empty($this->setting_data['access_permission'])) { // no permissions required to access page $access_permission = true; } else { $access_permission = PermissionsHandler::can_network_user(PA::$login_uid, PA::$network_info->network_id, array('permissions' => $this->setting_data['access_permission'])); } } } $this->page = new Template(CURRENT_THEME_FSPATH . "/" . $this->page_template); $this->page->set('current_theme_path', PA::$theme_url); $this->page->set('current_theme_rel_path', PA::$theme_rel); // Loading the templates variables for the Outer templates files $this->page->set('outer_class', get_class_name(PA::$config->page_type)); $this->top_navigation_bar = new Template(CURRENT_THEME_FSPATH . "/" . $this->top_navigation_template); $this->top_navigation_bar->set('current_theme_path', PA::$theme_url); $this->top_navigation_bar->set('current_theme_rel_path', PA::$theme_rel); $this->top_navigation_bar->set('navigation_links', $this->navigation_links); $this->setHeader($this->header_template); $this->footer = new Template(CURRENT_THEME_FSPATH . "/footer.tpl"); $this->footer->set('current_theme_path', PA::$theme_url); $this->footer->set('page_name', $title); $page = $this; $this->preInitialize($this->setting_data); $this->initNew($cb, $default_mode, $default_block_type, $this->setting_data); if (!$access_permission) { $configure = unserialize(ModuleData::get('configure')); if (PA::logged_in()) { $redir_url = PA::$url . PA_ROUTE_USER_PRIVATE; } else { if (!isset($configure['show_splash_page']) || $configure['show_splash_page'] == INACTIVE) { $redir_url = PA::$url . '/' . FILE_LOGIN; } else { $redir_url = PA::$url; } } $er_msg = urlencode("Sorry! you are not authorized to to access this page."); $this->showDialog($er_msg, $type = 'error', $redir_url, 10); } if (PA::$profiler) { PA::$profiler->stopTimer('PageRenderer_init'); } }
function __construct($cb, $page_type, $title, $page_template = "homepage_pa.tpl", $header_template = "header.tpl", $default_mode = PRI, $default_block_type = HOMEPAGE, $network_info_ = NULL, $onload = NULL, $setting_data = NULL) { global $login_uid, $page_uid, $uid, $path_prefix, $current_theme_path, $current_theme_rel_path, $base_url, $network_info, $current_blockmodule_path; $this->debugging = isset($_GET['debug']); $this->page_template = $page_template; $this->top_navigation_template = 'top_navigation_bar.tpl'; //TO DO: Remove this hardcoded text afterwards $this->header_template = $header_template; //settings for current network $this->network_info = $network_info_ ? $network_info_ : $network_info; //FIXME: does this have to be a parameter? can't we just always use the global $network_info? // the function hide_message_window is added here // so whenever html page is loaded the message window's ok button gets focus // here if previouly some function is defined as // onload = "ajax_call_method(ajax_titles, $uid, ajax_urls);" // now it will look like // onload = "ajax_call_method(ajax_titles, $uid, ajax_urls); hide_message_window();" $this->onload = "{$onload} hide_message_window('confirm_btn');"; $this->page_title = $title; $this->html_body_attributes = ""; // default settings for the tiers $this->main_tier = @$_GET['tier_one']; $this->second_tier = @$_GET['tier_two']; $this->third_tier = @$_GET['tier_three']; $navigation = new Navigation(); $navigation_links = $navigation->get_links(); $message_count = null; if ($login_uid) { $message_count = Message::get_new_msg_count($login_uid); } // load all templates $this->page =& new Template(CURRENT_THEME_FSPATH . "/" . $this->page_template); $this->page->set('current_theme_path', $current_theme_path); $this->page->set('current_theme_rel_path', $current_theme_rel_path); $this->page->set('base_url', $base_url); // Loading the templates variables for the Outer templates files $this->page->set('outer_class', get_class_name($page_type)); $this->top_navigation_bar =& new Template(CURRENT_THEME_FSPATH . "/" . $this->top_navigation_template); $this->top_navigation_bar->set('current_theme_path', $current_theme_path); $this->top_navigation_bar->set('current_theme_rel_path', $current_theme_rel_path); $this->top_navigation_bar->set('navigation_links', $navigation_links); $this->header =& new Template(CURRENT_THEME_FSPATH . "/" . $this->header_template); $this->header->set('current_theme_path', $current_theme_path); $this->header->set('current_theme_rel_path', $current_theme_rel_path); $this->header->set('base_url', $base_url); $this->header->set_object('network_info', $this->network_info); $this->header->set('message_count', $message_count['unread_msg']); $this->header->set('navigation_links', $navigation_links); $this->footer =& new Template(CURRENT_THEME_FSPATH . "/footer.tpl"); $this->footer->set('current_theme_path', $current_theme_path); $this->footer->set('page_name', $title); // load module settings // if we want to change the Module's arrangement then we give the setting_data to this function or we want to change the Ordering of the Modules ... if ($setting_data) { $this->setting_data = $setting_data; } else { $this->setting_data = !$page_type ? NULL : ModuleSetting::load_setting($page_type, $uid); } // render all modules $this->module_arrays = array(); foreach (array("left", "middle", "right") as $module_column) { $modulesFromDB = !$page_type ? NULL : @$this->setting_data[$module_column]; $array_modules = array(); // render all modules if ($modulesFromDB) { foreach ($modulesFromDB as $moduleName) { if (!$moduleName) { continue; } $file = "{$current_blockmodule_path}/{$moduleName}/{$moduleName}.php"; try { require_once $file; } catch (Exception $e) { echo "<p>Failed to require_once {$file}.</p>"; throw $e; } $obj = new $moduleName(); $obj->login_uid = (int) $login_uid; // uid of logged in user $obj->page_uid = (int) $page_uid; // uid specified in URL // standard column-specific initialization switch ($module_column) { case 'left': case 'right': if ($default_mode) { $obj->mode = $default_mode; } // some modules don't like to be set as PRI/HOMEPAGE switch ($moduleName) { case 'LogoModule': case 'AdsByGoogleModule': case 'GroupAccessModule': case 'GroupStatsModule': break; default: if ($default_block_type) { $obj->block_type = $default_block_type; } } break; case 'middle': break; } // now call the page callback and see if we need to skip // displaying this module $skipped = FALSE; if ($cb) { switch ($cb($module_column, $moduleName, $obj)) { case 'skip': $skipped = TRUE; break; } } // now render for display if (!$skipped) { $start_time = microtime(TRUE); $html = $obj->render(); $render_time = microtime(TRUE) - $start_time; $array_modules[] = $html; } if ($this->debugging) { $dhtml = "← {$moduleName} ({$obj->block_type}; {$obj->mode}; " . sprintf("%.3f s", $render_time) . ")"; if ($skipped) { $dhtml .= " SKIPPED"; } $dhtml .= "<br>"; $array_modules[] = $dhtml; } } } $this->module_arrays[$module_column] = $array_modules; } $pages = Advertisement::get_pages(); // get pages where ads is to be displayed $display_ad = FALSE; foreach ($pages as $page) { if ($page_type == $page['value']) { $display_ad = TRUE; break; } } if ($display_ad) { // get all ads $all_ads = Advertisement::get(array('direction' => 'ASC', 'sort_by' => 'orientation'), array('page_id' => $page_type, 'is_active' => ACTIVE)); if (!empty($all_ads)) { foreach ($all_ads as $ad) { $pos = $ad->orientation; $pos = explode(',', $ad->orientation); $x_loc = $pos[0]; //y_loc was not originally designed so for already created ads //FIX for already created ads if (array_key_exists(1, $pos)) { $y_loc = $pos[1]; } else { $y_loc = 1; //Ads created before this logic implementation should come on top } //horizontal and vertical position should not be empty if (!empty($x_loc) && !empty($y_loc)) { $array_of_data = array('links' => $ad); $inner_html = $this->add_block_module('AdvertisementModule', $array_of_data); $this->add_module_xy($x_loc, $y_loc, $inner_html); } } } //end of if all_ads } //end of display_ad }