function AdkAdmin() { global $txt, $context, $settings, $adkportal, $boardurl, $adkFolder; //Is allowed to manage adkportal isAllowedTo('adk_portal'); //Load my template adktemplate('Adk-Admin'); //Load Adk Language adkLanguage('Adk-Admin'); $subActions = array('view' => 'view', 'adksettings' => 'adksettings', 'adksavesettings' => 'adksavesettings', 'manageicons' => 'manageicons'); //Set subactions for standalone mode if ($adkportal['adk_enable'] == 2) { $subActions += array('standalone' => 'SettingsStandAlone', 'save_stand' => 'SaveSettingsStandAlone'); } $context['html_headers'] .= getCss('admin_adkportal'); $context['html_headers'] .= getJs('admin'); $context[$context['admin_menu_name']]['tab_data'] = array('title' => $txt['adkadmin_settings'], 'description' => $txt['adkadmin_news_desc'], 'tabs' => array('view' => array('description' => $txt['adkadmin_news_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/news.png" /> ' . $txt['adkadmin_news']), 'adksettings' => array('description' => $txt['adkadmin_setting_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/settings.png" /> ' . $txt['adkadmin_setting']), 'manageicons' => array('description' => $txt['adkadmin_icons_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/icons.png" /> ' . $txt['adkadmin_icons']))); //The last thing... print the stand alone menu if ($adkportal['adk_enable'] == 2) { $context[$context['admin_menu_name']]['tab_data']['tabs']['standalone'] = array('description' => $txt['adkadmin_stand_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $adkFolder['images'] . '/php.png" /> ' . $txt['adkadmin_stand']); } // Follow the sa or just go to View function if (!empty($_GET['sa']) && !empty($subActions[$_GET['sa']])) { $subActions[@$_GET['sa']](); } else { $subActions['view'](); } }
function AdkSeoMain() { global $context, $txt, $scripturl, $settings, $boardurl; //Set css $context['html_headers'] .= getCss('admin_adkportal'); //Load Basic Info isAllowedTo('adk_portal'); adktemplate('Adk-AdminSeo'); //Load Adk Language adkLanguage('Adk-Admin'); //What are my subactions? $subActions = array('htaccess' => 'AdkCreateHtaccess', 'savehtaccess' => 'AdkSaveHtaccess', 'deletehtaccess' => 'AdkDeleteHtaccess', 'settings' => 'AdkSeoSettings', 'savesettings' => 'AdkSaveSettings', 'robotstxt' => 'AdkCreateRobotstxt', 'saverobots' => 'AdkSaveRobotstxt'); //Set icons $context[$context['admin_menu_name']]['tab_data'] = array('title' => $txt['adkmod_seo_manage'], 'description' => $txt['adkportal_seo_manage_desc'], 'tabs' => array('htaccess' => array('description' => '', 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/htaccess.png" />' . $txt['adkmod_seo_htaccess']), 'settings' => array('description' => '', 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/settings.png" />' . $txt['adkadmin_setting']), 'robotstxt' => array('description' => '', 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/robot.png" />' . $txt['adkmod_seo_robots']))); // Follow the sa or just go to View function if (!empty($_GET['sa']) && !empty($subActions[$_GET['sa']])) { $subActions[@$_GET['sa']](); } else { $subActions['htaccess'](); } }
function AdkBlocksGeneral() { global $txt, $context, $sourcedir, $boardurl, $settings, $adkFolder; //Permisos isAllowedTo('adk_portal'); //Load my template adktemplate('Adk-AdminBlocks'); //Load my language adkLanguage('Adk-AdminBlocks'); $subActions = array('checktemplates' => 'LoadBlocksTemplates', 'newtemplate' => 'createNewTemplate', 'save_template' => 'saveNewTemplate', 'edittemplate' => 'editTemplate', 'save_edit_template' => 'saveEditTemplate', 'deletetemplate' => 'deleteTemplate', 'approve_template' => 'approveTemplate', 'viewblocks' => 'viewblocks', 'settingsblocks' => 'SettingsBlocks', 'savesettingsblocks2' => 'SaveSettingsBlocks2', 'deleteblocks' => 'deleteblocks', 'editblocks' => 'editblocks', 'saveeditblocks' => 'saveeditblocks', 'newblocks' => 'LoadTheNewBlocksToCreate', 'savenewblocks' => 'savenewblocks', 'showeditnews' => 'showeditnews', 'showdeletenews' => 'showdeletenews', 'showsaveeditnews' => 'showsaveeditnews', 'createnews' => 'createnews', 'savecreatenews' => 'savecreatenews', 'uploadblock' => 'uploadblock', 'saveuploadblock' => 'saveuploadblock', 'previewblock' => 'PreviewBlockAdKPortal', 'permissions' => 'PermissionBlock', 'savepermissions' => 'SavePermissionBlock', 'download' => 'DownloadNewBlock', 'add_smf_block' => 'AddSMFPersonalBlock', 'shoutboxdeleteall' => 'DeleteShoutboxMessages'); //Load CSS $context['html_headers'] .= getCss('admin_adkportal'); $context['html_headers'] .= javaScript_blocks(); $context['html_headers'] .= getJs('admin'); $context[$context['admin_menu_name']]['tab_data'] = array('title' => $txt['adkmod_block_manage'], 'description' => $txt['adkblock_first_descrip'], 'tabs' => array('checktemplates' => array('description' => $txt['adkblock_templates_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $adkFolder['images'] . '/wrench_orange.png" /> ' . $txt['adkblock_templates']), 'viewblocks' => array('description' => '', 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/blocks.png" /> ' . $txt['adkmod_block_title']), 'settingsblocks' => array('description' => $txt['adkblock_settings_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $adkFolder['images'] . '/admin.png" /> ' . $txt['adkmod_block_settings']), 'newblocks' => array('description' => $txt['adkblock_newblocks_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/createblock.png" /> ' . $txt['adkmod_block_add']), 'createnews' => array('description' => $txt['adkblock_news_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/createnews.png" /> ' . $txt['adkmod_block_add_news']), 'download' => array('description' => $txt['adkblock_download_personal_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $adkFolder['images'] . '/drive_add.png" /> ' . $txt['adkmod_block_download']))); // Follow the sa or just go to View function if (!empty($_GET['sa']) && !empty($subActions[$_GET['sa']])) { $subActions[@$_GET['sa']](); } else { $subActions['checktemplates'](); } }
function ShowDownloadsMainAdmin() { global $context, $txt, $smcFunc, $settings, $sourcedir; //Load AdkDownloads Sources file require_once $sourcedir . '/AdkPortal/Subs-adkdownloads.php'; //Set the subactions $subActions = array('settings' => 'AdkDownloadSettings', 'savesettings' => 'AdkDownloadSaveSettings', 'addcategory' => 'AdkDownloadAddCategory', 'savecategory' => 'AdkDownloadSaveCategory', 'allcategories' => 'AdkDownloadAllCategories', 'editcategory' => 'AdkDownloadEditCategory', 'saveeditcategory' => 'AdkDownloadSaveEditCategory', 'deletecategory' => 'AdkDownloadDeleteCategory', 'approvedownloads' => 'ApproveDownloadsAdmin'); //Unnaproved downloads $TotalUnApproved = getTotal('adk_down_file', 'approved = {int:cero}', array('cero' => 0)); //Permisos isAllowedTo('adk_downloads_manage'); //Load Template and language adktemplate('Adk-AdminDownloads'); adkLanguage('Adk-AdminDownloads'); $context[$context['admin_menu_name']]['tab_data'] = array('title' => $txt['adkeds_main_title'], 'description' => $txt['adkeds_main_desc'], 'tabs' => array('settings' => array('description' => '', 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/settings.png" />' . $txt['adkeds_settings']), 'addcategory' => array('description' => $txt['adkeds_add_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/addcategory.png" />' . $txt['adkmod_eds_add']), 'allcategories' => array('description' => $txt['adkeds_current_cat_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/editcategory.png" />' . $txt['adkmod_eds_categories']), 'approvedownloads' => array('description' => $txt['adkeds_approve_desc'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/approve.png" />' . $txt['adkeds_approve'] . ' (' . $TotalUnApproved . ')'))); //print the subaction if (!empty($_GET['sa']) && !empty($subActions[$_GET['sa']])) { $subActions[@$_GET['sa']](); } else { $subActions['settings'](); } }
function AdkModules() { global $context, $txt, $settings, $boardurl, $adkFolder; isAllowedTo('adk_portal'); adktemplate('Adk-AdminModules'); adkLanguage('Adk-AdminModules'); $subActions = array('intro' => 'introAdk', 'viewadminpages' => 'viewadminpages', 'createpages' => 'createpages', 'savecreatedpages' => 'savecreatedpages', 'editpages' => 'editpages', 'saveeditpages' => 'saveeditpages', 'deletepages' => 'deletepages', 'uploadanyimage' => 'UploadNewImage', 'saveuploadimg' => 'SaveUploadNewImage', 'manageimagesadk' => 'ManageImagesAdk', 'deleteimagesadk' => 'DeleteImagesAdk', 'contact' => 'ContactAdmin', 'save_contact' => 'SaveContactAdmin', 'enable_page_menu' => 'EnablePageMenu', 'enable_comments' => 'EnableComments', 'enable_notifications' => 'EnableNotifications'); $context[$context['admin_menu_name']]['tab_data'] = array('title' => $txt['adkmodules_modules_settings'], 'description' => $txt['adkmodules_first_modules'], 'tabs' => array('intro' => array('description' => $txt['adkmodules_first_modules'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/intro.png" /> ' . $txt['adkmod_modules_intro']), 'viewadminpages' => array('description' => $txt['adkmodules_second_modules'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/pages.png" /> ' . $txt['adkmod_modules_pages']), 'contact' => array('description' => $txt['adkmodules_desc_contacto'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $adkFolder['images'] . '/newmsg.png" /> ' . $txt['adkmod_modules_contacto']), 'uploadanyimage' => array('description' => $txt['adkmodules_tirth_modules'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/imagesadvanced.png" /> ' . $txt['adkmod_modules_images']), 'manageimagesadk' => array('description' => $txt['adkmodules_fourth_modules'], 'label' => '<img style="vertical-align: middle;" alt="" src="' . $settings['default_theme_url'] . '/images/admin/images.png" /> ' . $txt['adkmod_modules_manage_images']))); // Hooks menu integrations call_integration_hook('integrate_modules_menu', array(&$context[$context['admin_menu_name']]['tab_data'])); // Hooks sa integration call_integration_hook('modules_subactions', array(&$subActions)); //Hooks pre includes adkportal_include_hooks('integrate_pre_include_modules'); $context['html_headers'] .= getCss('admin_adkportal'); $context['html_headers'] .= getJs('admin'); // Follow the sa or just go to View function if (!empty($_GET['sa']) && !empty($subActions[$_GET['sa']])) { $subActions[@$_GET['sa']](); } else { $subActions['intro'](); } }
function Adk_portal_pre_load() { global $context; // Adk Portal Language is needed all the time adkLanguage('Adk-Modifications'); getAdkportalSettings(); }
function AdkDownloadFile() { global $modSettings, $txt, $context, $smcFunc, $user_info, $boarddir, $adkFolder; if (!empty($_REQUEST['id'])) { $id = (int) $_REQUEST['id']; } else { fatal_lang_error('adkfatal_require_id_file', false); } $sql = $smcFunc['db_query']('', ' SELECT a.id_file, a.id_attach, a.filename, a.orginalfilename, d.id_cat, d.id_file, d.id_member, d.approved FROM {db_prefix}adk_down_attachs AS a, {db_prefix}adk_down_file AS d INNER JOIN {db_prefix}members AS m ON (m.id_member = d.id_member) WHERE id_attach = {int:a} AND a.id_file = d.id_file', array('a' => $id)); $row = $smcFunc['db_fetch_assoc']($sql); //Empty file? if ($smcFunc['db_num_rows']($sql) == 0) { fatal_lang_error('adkfatal_require_id_file', false); } $smcFunc['db_free_result']($sql); if ($row['approved'] == 0 && $user_info['id'] != $row['id_member'] && !allowedTo('adk_downloads_manage')) { fatal_lang_error('adkfatal_this_download_not_approved', false); } verifyCatPermissions('view', $row['id_cat']); $last = time(); $smcFunc['db_query']('', "UPDATE {db_prefix}adk_down_file\n\t\tSET totaldownloads = totaldownloads + 1, lastdownload = {int:l} WHERE id_file = {int:id} LIMIT 1", array('id' => $row['id_file'], 'l' => $last)); $real_filename = $row['orginalfilename']; $filename = $adkFolder['eds'] . '/' . $row['filename']; $ext = explode('.', $real_filename); $file_ext = $ext[count($ext) - 1]; // This is done to clear any output that was made before now. (would use ob_clean(), but that's PHP 4.2.0+...) ob_end_clean(); if (!empty($modSettings['enableCompressedOutput']) && @version_compare(PHP_VERSION, '4.2.0') >= 0 && @filesize($filename) <= 4194304 && in_array($file_ext, array('txt', 'html', 'htm', 'js', 'doc', 'pdf', 'docx', 'rtf', 'css', 'php', 'log', 'xml', 'sql', 'c', 'java'))) { @ob_start('ob_gzhandler'); } else { ob_start(); header('Content-Encoding: none'); } // No point in a nicer message, because this is supposed to be an attachment anyway... if (!file_exists($filename)) { adkLanguage('Errors'); header('HTTP/1.0 404 ' . $txt['attachment_not_found']); header('Content-Type: text/plain; charset=' . (empty($context['character_set']) ? 'ISO-8859-1' : $context['character_set'])); // We need to die like this *before* we send any anti-caching headers as below. die('404 - ' . $txt['attachment_not_found']); } // If it hasn't been modified since the last time this attachement was retrieved, there's no need to display it again. if (!empty($_SERVER['HTTP_IF_MODIFIED_SINCE'])) { list($modified_since) = explode(';', $_SERVER['HTTP_IF_MODIFIED_SINCE']); if (strtotime($modified_since) >= filemtime($filename)) { ob_end_clean(); // Answer the question - no, it hasn't been modified ;). header('HTTP/1.1 304 Not Modified'); exit; } } // Check whether the ETag was sent back, and cache based on that... $eTag = '"' . substr($_REQUEST['id'] . $real_filename . filemtime($filename), 0, 64) . '"'; if (!empty($_SERVER['HTTP_IF_NONE_MATCH']) && strpos($_SERVER['HTTP_IF_NONE_MATCH'], $eTag) !== false) { ob_end_clean(); header('HTTP/1.1 304 Not Modified'); exit; } // Send the attachment headers. header('Pragma: '); if (!$context['browser']['is_gecko']) { header('Content-Transfer-Encoding: binary'); } header('Expires: ' . gmdate('D, d M Y H:i:s', time() + 525600 * 60) . ' GMT'); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($filename)) . ' GMT'); header('Accept-Ranges: bytes'); header('Connection: close'); header('ETag: ' . $eTag); // IE 6 just doesn't play nice. As dirty as this seems, it works. if ($context['browser']['is_ie6'] && isset($_REQUEST['image'])) { unset($_REQUEST['image']); } elseif (isset($_REQUEST['image']) && !empty($mime_type) && strpos($mime_type, 'image/') !== 0) { unset($_REQUEST['image']); } elseif (!empty($mime_type) && (isset($_REQUEST['image']) || !in_array($file_ext, array('jpg', 'gif', 'jpeg', 'x-ms-bmp', 'png', 'psd', 'tiff', 'iff')))) { header('Content-Type: ' . strtr($mime_type, array('image/bmp' => 'image/x-ms-bmp'))); } else { header('Content-Type: ' . ($context['browser']['is_ie'] || $context['browser']['is_opera'] ? 'application/octetstream' : 'application/octet-stream')); if (isset($_REQUEST['image'])) { unset($_REQUEST['image']); } } // Convert the file to UTF-8, cuz most browsers dig that. $utf8name = !$context['utf8'] && function_exists('iconv') ? iconv($context['character_set'], 'UTF-8', $real_filename) : (!$context['utf8'] && function_exists('mb_convert_encoding') ? mb_convert_encoding($real_filename, 'UTF-8', $context['character_set']) : $real_filename); $fixchar = create_function('$n', ' if ($n < 32) return \'\'; elseif ($n < 128) return chr($n); elseif ($n < 2048) return chr(192 | $n >> 6) . chr(128 | $n & 63); elseif ($n < 65536) return chr(224 | $n >> 12) . chr(128 | $n >> 6 & 63) . chr(128 | $n & 63); else return chr(240 | $n >> 18) . chr(128 | $n >> 12 & 63) . chr(128 | $n >> 6 & 63) . chr(128 | $n & 63);'); $disposition = !isset($_REQUEST['image']) ? 'attachment' : 'inline'; // Different browsers like different standards... if ($context['browser']['is_firefox']) { header('Content-Disposition: ' . $disposition . '; filename*=UTF-8\'\'' . rawurlencode(preg_replace_callback('~&#(\\d{3,8});~', 'fixchar__callback', $utf8name))); } elseif ($context['browser']['is_opera']) { header('Content-Disposition: ' . $disposition . '; filename="' . preg_replace_callback('~&#(\\d{3,8});~', 'fixchar__callback', $utf8name) . '"'); } elseif ($context['browser']['is_ie']) { header('Content-Disposition: ' . $disposition . '; filename="' . urlencode(preg_replace_callback('~&#(\\d{3,8});~', 'fixchar__callback', $utf8name)) . '"'); } else { header('Content-Disposition: ' . $disposition . '; filename="' . $utf8name . '"'); } // If this has an "image extension" - but isn't actually an image - then ensure it isn't cached cause of silly IE. if (!isset($_REQUEST['image']) && in_array($file_ext, array('gif', 'jpg', 'bmp', 'png', 'jpeg', 'tiff'))) { header('Cache-Control: no-cache'); } else { header('Cache-Control: max-age=' . 525600 * 60 . ', private'); } if (empty($modSettings['enableCompressedOutput']) || filesize($filename) > 4194304) { header('Content-Length: ' . filesize($filename)); } // Try to buy some time... @set_time_limit(600); // Recode line endings for text files, if enabled. if (!empty($modSettings['attachmentRecodeLineEndings']) && !isset($_REQUEST['image']) && in_array($file_ext, array('txt', 'css', 'htm', 'html', 'php', 'xml'))) { if (strpos($_SERVER['HTTP_USER_AGENT'], 'Windows') !== false) { $callback = create_function('$buffer', 'return preg_replace(\'~[\\r]?\\n~\', "\\r\\n", $buffer);'); } elseif (strpos($_SERVER['HTTP_USER_AGENT'], 'Mac') !== false) { $callback = create_function('$buffer', 'return preg_replace(\'~[\\r]?\\n~\', "\\r", $buffer);'); } else { $callback = create_function('$buffer', 'return preg_replace(\'~[\\r]?\\n~\', "\\n", $buffer);'); } } // Since we don't do output compression for files this large... if (filesize($filename) > 4194304) { // Forcibly end any output buffering going on. if (function_exists('ob_get_level')) { while (@ob_get_level() > 0) { @ob_end_clean(); } } else { @ob_end_clean(); @ob_end_clean(); @ob_end_clean(); } $fp = fopen($filename, 'rb'); while (!feof($fp)) { if (isset($callback)) { echo $callback(fread($fp, 8192)); } else { echo fread($fp, 8192); } flush(); } fclose($fp); } elseif (isset($callback) || @readfile($filename) == null) { echo isset($callback) ? $callback(file_get_contents($filename)) : file_get_contents($filename); } obExit(false); }
function AdkContact() { if (!empty($_REQUEST['sa']) && $_REQUEST['sa'] == 'send') { $function = 'AdkContactSend'; } else { $function = 'AdkContactWrite'; } //Load our Custom language adkLanguage('Adk-echomodules'); adktemplate('Adk-echomodules'); if (!allowedToViewContactPage()) { fatal_lang_error('adkfatal_shout_now_allowed', false); } $function(); }