function txPageAddBulk() { global $DB, $C; VerifyAdministrator(); CheckAccessList(); $v = new Validator(); $v->Register($_REQUEST['ext'], V_EMPTY, 'The File Extension field must be filled in'); $v->Register($_REQUEST['num_pages'], V_REGEX, 'The Number of Pages field must be a numeric value', '~^\\d+$~'); if (empty($_REQUEST['category_id'])) { $v->Register($_REQUEST['prefix'], V_EMPTY, 'The Filename Prefix field must be filled in'); } // Check tags for proper format if (!IsEmptyString($_REQUEST['tags'])) { $_REQUEST['tags'] = FormatSpaceSeparated($_REQUEST['tags']); foreach (explode(' ', $_REQUEST['tags']) as $tag) { if (strlen($tag) < 4 || !preg_match('~^[a-z0-9_]+$~i', $tag)) { $v->SetError('All page tags must be at least 4 characters in length and contain only letters, numbers, and underscores'); break; } } } $v->Register($_REQUEST['base_url'], V_URL, 'The Base URL field is not a properly formatted HTTP URL'); $v->Register($_REQUEST['base_dir'], V_EMPTY, 'The Base Directory field must be filled in'); $base_dir = $_REQUEST['base_dir']; $base_url = $_REQUEST['base_url']; if (!is_dir($base_dir)) { $v->SetError('The Base Directory value must point to an already existing directory'); } if (!$v->Validate()) { return $v->ValidationError('txShPageAddBulk'); } // Get starting build order $build_order = $DB->Count('SELECT MAX(`build_order`) FROM `tx_pages`') + 1; // Load default template $template = file_get_contents("{$GLOBALS['BASE_DIR']}/templates/default-tgp.tpl"); NullIfEmpty($_REQUEST['category_id']); $pages =& GetBulkAddPages($base_url, $base_dir); $c = new Compiler(); $buffering = @ini_get('output_buffering'); include_once 'includes/header.php'; include_once 'includes/pages-add-bulk-progress.php'; if ($buffering) { echo '<span style="display: none">' . str_repeat('x', $buffering) . '</span>'; flush(); } foreach ($pages as $page) { if ($DB->Count('SELECT COUNT(*) FROM `tx_pages` WHERE `filename`=?', array($page['filename'])) < 1) { echo "Adding " . htmlspecialchars($page['page_url']) . "<br />"; if ($buffering) { echo '<span style="display: none">' . str_repeat('x', $buffering) . "</span>\n"; } flush(); $compiled = ''; $c->flags['category_id'] = $page['category_id']; $c->compile($template, $compiled); // Add page to the database $DB->Update('INSERT INTO `tx_pages` VALUES (?,?,?,?,?,?,?,?,?)', array(NULL, $page['filename'], $page['page_url'], $page['category_id'], $build_order++, intval($_REQUEST['locked']), $_REQUEST['tags'], $template, $compiled)); } } RenumberBuildOrder(); echo "</div>\n<div id=\"done\"></div>\n</body>\n</html>"; }
function tlxPageAddBulk() { global $DB, $C; VerifyAdministrator(); CheckAccessList(); $v = new Validator(); $v->Register($_REQUEST['ext'], V_EMPTY, 'The File Extension field must be filled in'); $v->Register($_REQUEST['num_pages'], V_REGEX, 'The Number of Pages field must be a numeric value', '~^\\d+$~'); if (empty($_REQUEST['category_id'])) { $v->Register($_REQUEST['prefix'], V_EMPTY, 'The Filename Prefix field must be filled in'); } // Check tags for proper format if (!IsEmptyString($_REQUEST['tags'])) { $_REQUEST['tags'] = FormatSpaceSeparated($_REQUEST['tags']); foreach (explode(' ', $_REQUEST['tags']) as $tag) { if (strlen($tag) < 4 || !preg_match('~^[a-z0-9_]+$~i', $tag)) { $v->SetError('All page tags must be at least 4 characters in length and contain only letters, numbers, and underscores'); break; } } } $v->Register($_REQUEST['base_url'], V_CONTAINS, 'For security purposes the Base URL may not contain the .. character sequence', '..'); $base_dir = ResolvePath($C['document_root'] . '/' . $_REQUEST['base_url']); if (!is_dir($base_dir)) { $v->SetError('The Base URL value must point to an already existing directory'); } if (!$v->Validate()) { return $v->ValidationError('tlxShPageAddBulk'); } // Get starting build order $build_order = $DB->Count('SELECT MAX(`build_order`) FROM `tlx_pages`') + 1; // Load default template $template = file_get_contents("{$GLOBALS['BASE_DIR']}/templates/default-ranking.tpl"); NullIfEmpty($_REQUEST['category_id']); $pages =& GetBulkAddPages($_REQUEST['base_url']); $buffering = @ini_get('output_buffering'); foreach ($pages as $page) { $page['filename'] = preg_replace('~^/~', '', $page['filename']); if ($DB->Count('SELECT COUNT(*) FROM `tlx_pages` WHERE `filename`=?', array($page['filename'])) < 1) { if ($buffering) { echo '<span style="display: none">' . str_repeat('x', $buffering) . "</span>\n"; } $compiled = ''; $c = new Compiler(); $c->flags['category_id'] = $page['category_id']; $c->compile($template, $compiled); // Add page to the database $DB->Update('INSERT INTO `tlx_pages` VALUES (?,?,?,?,?,?,?)', array(NULL, $page['filename'], $page['category_id'], $build_order++, $_REQUEST['tags'], $template, $compiled)); } } $GLOBALS['message'] = 'New ranking pages successfully added'; $GLOBALS['added'] = true; RenumberBuildOrder(); UnsetArray($_REQUEST); tlxShPageAddBulk(); }