$error[] = $form_error; } if (!sizeof($error)) { if ($action == 'approve') { $queue->approve($public_notes); // Install the style on the demo board? if ($contrib->contrib_type == TITANIA_TYPE_STYLE && isset($_POST['style_demo_install']) && titania::$config->demo_style_path) { // Reload the contrib, it hath changed $contrib->load((int) $queue->contrib_id); $revision = $queue->get_revision(); $sql = 'SELECT attachment_directory, physical_filename FROM ' . TITANIA_ATTACHMENTS_TABLE . ' WHERE attachment_id = ' . (int) $revision->attachment_id; $result = phpbb::$db->sql_query($sql); $row = phpbb::$db->sql_fetchrow($result); phpbb::$db->sql_freeresult($result); $contrib_tools = new titania_contrib_tools(titania::$config->upload_path . utf8_basename($row['attachment_directory']) . '/' . utf8_basename($row['physical_filename'])); if (!($style_id = $contrib_tools->install_demo_style(TITANIA_ROOT . titania::$config->demo_style_path, $contrib))) { // Oh noez, we habz error trigger_error(implode('<br />', $contrib_tools->error)); } else { // Update the demo link $contrib->contrib_demo = sprintf(titania::$config->demo_style_url, $style_id); $contrib->submit(); } } } else { $queue->deny(); } redirect(titania_url::append_url($base_url, array('q' => $queue->queue_id))); } }
continue; } $revision = new titania_revision(titania::$contrib, $revision_id); if (!$revision->load()) { trigger_error('NO_REVISION'); } $revision_attachment = new titania_attachment(TITANIA_CONTRIB); $revision_attachment->attachment_id = $revision->attachment_id; if (!$revision_attachment->load()) { trigger_error('ERROR_NO_ATTACHMENT'); } $zip_file = titania::$config->upload_path . '/' . utf8_basename($revision_attachment->attachment_directory) . '/' . utf8_basename($revision_attachment->physical_filename); $download_package = titania_url::build_url('download', array('id' => $revision_attachment->attachment_id)); $new_dir_name = titania::$contrib->contrib_name_clean . '_' . preg_replace('#[^0-9a-z]#', '_', strtolower($revision->revision_version)); // Start up the machine $contrib_tools = new titania_contrib_tools($zip_file, $new_dir_name); // Automod testing time $details = ''; $html_results = $bbcode_results = array(); $sql = 'SELECT row_id, phpbb_version_branch, phpbb_version_revision FROM ' . TITANIA_REVISIONS_PHPBB_TABLE . ' WHERE revision_id = ' . $revision->revision_id; $result = phpbb::$db->sql_query($sql); while ($row = phpbb::$db->sql_fetchrow($result)) { $version_string = $row['phpbb_version_branch'][0] . '.' . $row['phpbb_version_branch'][1] . '.' . $row['phpbb_version_revision']; $phpbb_path = $contrib_tools->automod_phpbb_files($version_string); if ($phpbb_path === false) { $error = array_merge($error, $contrib_tools->error); continue; } phpbb::$template->assign_vars(array('PHPBB_VERSION' => $version_string, 'TEST_ID' => $row['row_id'])); $html_result = $bbcode_result = '';
$sql = 'SELECT aq.*, a.attachment_directory, a.physical_filename, c.contrib_id, c.contrib_name_clean, r.revision_version, r.revision_status FROM ' . TITANIA_AUTOMOD_QUEUE_TABLE . ' aq, ' . TITANIA_REVISIONS_TABLE . ' r, ' . TITANIA_ATTACHMENTS_TABLE . ' a, ' . TITANIA_CONTRIBS_TABLE . ' c WHERE r.revision_id = aq.revision_id AND a.attachment_id = r.attachment_id AND c.contrib_id = r.contrib_id'; $result = phpbb::$db->sql_query_limit($sql, 2); while ($row = phpbb::$db->sql_fetchrow($result)) { // Delete here in case any errors come up from the test so that it does't get stuck. $sql = 'DELETE FROM ' . TITANIA_AUTOMOD_QUEUE_TABLE . ' WHERE row_id = ' . $row['row_id']; phpbb::$db->sql_query($sql); $new_dir_name = $row['contrib_name_clean'] . '_' . preg_replace('#[^0-9a-z]#', '_', strtolower($row['revision_version'])); $version = $row['phpbb_version_branch'][0] . '.' . $row['phpbb_version_branch'][1] . '.' . $row['phpbb_version_revision']; $zip = titania::$config->upload_path . utf8_basename($row['attachment_directory']) . '/' . utf8_basename($row['physical_filename']); $details = $results = $bbcode_results = ''; $contrib_tools = new titania_contrib_tools($zip, $new_dir_name); $package_root = $contrib_tools->find_root(); $contrib_tools->restore_root($package_root); if (sizeof($contrib_tools->error)) { continue; } if (!($phpbb_path = $contrib_tools->automod_phpbb_files($version))) { continue; } if ($contrib_tools->automod($phpbb_path, $details, $results, $bbcode_results)) { $sql_ary = array('revision_id' => $row['revision_id'], 'contrib_id' => $row['contrib_id'], 'phpbb_version_branch' => $row['phpbb_version_branch'], 'phpbb_version_revision' => get_real_revision_version($row['phpbb_version_revision']), 'revision_validated' => $row['revision_status'] == TITANIA_REVISION_APPROVED ? true : false); phpbb::$db->sql_query('INSERT INTO ' . TITANIA_REVISIONS_PHPBB_TABLE . ' ' . phpbb::$db->sql_build_array('INSERT', $sql_ary)); } $contrib_tools->remove_temp_files(); unset($contrib_tools); }
public function __construct($original_zip, $new_dir_name) { parent::__construct($original_zip, $new_dir_name); }
if (!$contrib->load((int) $revision['contrib_id']) || $revision['revision_status'] != TITANIA_REVISION_APPROVED) { clr_error('SORRY_AUTH_VIEW_ATTACH'); } if (!$contrib->has_colorizeit()) { clr_error('CLR_ERROR_NOSAMPLE'); } /** * Get file options */ if (!strlen($revision['revision_clr_options'])) { $zip_file = titania::$config->upload_path . utf8_basename($attachment['attachment_directory']) . '/' . utf8_basename($attachment['physical_filename']); if (!@file_exists($zip_file)) { clr_error('ERROR_NO_ATTACHMENT'); } $new_dir_name = md5(serialize($_SERVER)) . '_' . microtime(); $contrib_tools = new titania_contrib_tools($zip_file, $new_dir_name); $phpbb_data = clr_phpbb_data($contrib_tools->unzip_dir); $contrib_tools->remove_temp_files(); // save data $revision['revision_clr_options'] = serialize($phpbb_data); $sql_ary = array('revision_clr_options' => $revision['revision_clr_options']); $sql = 'UPDATE ' . TITANIA_REVISIONS_TABLE . ' SET ' . phpbb::$db->sql_build_array('UPDATE', $sql_ary) . ' WHERE revision_id = ' . $revision['revision_id']; phpbb::$db->sql_query($sql); } /** * Build XML data */ $data = unserialize($revision['revision_clr_options']); $base_url = titania::$config->titania_script_path . 'download/id_';
/** * Function that will be run when a revision of this type is uploaded * * @param $revision_attachment titania_attachment * @return array (error array, empty for no errors) */ public function upload_check($revision_attachment) { $zip_file = titania::$config->upload_path . '/' . utf8_basename($revision_attachment->attachment_directory) . '/' . utf8_basename($revision_attachment->physical_filename); $new_dir_name = phpbb::$user->data['user_id'] . '_' . microtime(); $contrib_tools = new titania_contrib_tools($zip_file, $new_dir_name); foreach (scandir($contrib_tools->unzip_dir) as $item) { if ($item == '.' || $item == '..') { continue; } // Allow the license to be either in the main directory or under one subdirectory if (is_dir($contrib_tools->unzip_dir . '/' . $item)) { foreach (scandir($contrib_tools->unzip_dir . '/' . $item) as $sub_item) { if ($sub_item == 'license.txt') { // License file found $contrib_tools->remove_temp_files(); return array(); } } } if ($item == 'license.txt') { // License file found $contrib_tools->remove_temp_files(); return array(); } } $contrib_tools->remove_temp_files(); return array(phpbb::$user->lang['LICENSE_FILE_MISSING']); }
public function automod_test(&$contrib, &$revision, &$revision_attachment, &$contrib_tools, $download_package) { $new_dir_name = $contrib->contrib_name_clean . '_' . preg_replace('#[^0-9a-z]#', '_', strtolower($revision->revision_version)); // Start up the machine $contrib_tools = new titania_contrib_tools($contrib_tools->original_zip, $new_dir_name); // Automod testing time $details = ''; $error = $html_results = $bbcode_results = array(); $sql = 'SELECT row_id, phpbb_version_branch, phpbb_version_revision FROM ' . TITANIA_REVISIONS_PHPBB_TABLE . ' WHERE revision_id = ' . $revision->revision_id; $result = phpbb::$db->sql_query($sql); while ($row = phpbb::$db->sql_fetchrow($result)) { $version_string = $row['phpbb_version_branch'][0] . '.' . $row['phpbb_version_branch'][1] . '.' . $row['phpbb_version_revision']; $phpbb_path = $contrib_tools->automod_phpbb_files($version_string); if ($phpbb_path === false) { $error = array_merge($error, $contrib_tools->error); continue; } phpbb::$template->assign_vars(array('PHPBB_VERSION' => $version_string, 'TEST_ID' => $row['row_id'])); $html_result = $bbcode_result = ''; $installed = $contrib_tools->automod($phpbb_path, $details, $html_result, $bbcode_result); $html_results[] = $html_result; $bbcode_results[] = $bbcode_result; } phpbb::$db->sql_freeresult($result); if (is_array($details)) { $revision->install_time = $details['INSTALLATION_TIME']; switch ($details['INSTALLATION_LEVEL']) { case 'easy': $revision->install_level = 1; break; case 'intermediate': $revision->install_level = 2; break; case 'advanced': $revision->install_level = 3; break; } $revision->submit(); } $html_results = implode('<br /><br />', $html_results); $bbcode_results = implode("\n\n", $bbcode_results); // Update the queue with the results $queue = $revision->get_queue(); $queue->automod_results = $bbcode_results; $queue->submit(); phpbb::$template->assign_var('AUTOMOD_RESULTS', $html_results); // Remove our temp files $contrib_tools->remove_temp_files(); return array('error' => $error); }
// Subscriptions $queue = $revision->get_queue(); if ($queue) { $email_vars = array('NAME' => phpbb::$user->lang['VALIDATION'] . ' - ' . titania::$contrib->contrib_name . ' - ' . $revision->revision_version, 'U_VIEW' => titania_url::build_url('manage/queue', array('q' => $queue->queue_id))); titania_subscriptions::send_notifications(TITANIA_QUEUE, titania::$contrib->contrib_type, 'subscribe_notify_forum.txt', $email_vars, phpbb::$user->data['user_id']); } redirect(titania::$contrib->get_url()); } phpbb::$template->assign_var('S_NEW_REVISION_SUBMITTED', true); break; } $zip_file = titania::$config->upload_path . '/' . utf8_basename($revision_attachment->attachment_directory) . '/' . utf8_basename($revision_attachment->physical_filename); $new_dir_name = titania::$contrib->contrib_name_clean . '_' . preg_replace('#[^0-9a-z]#', '_', strtolower($revision_version)); $download_package = titania_url::build_url('download', array('id' => $revision_attachment->attachment_id)); // Start up the machine $contrib_tools = new titania_contrib_tools($zip_file, $new_dir_name); // Clean the package $contrib_tools->clean_package(); // Restore the root package directory if (is_array(titania_types::$types[titania::$contrib->contrib_type]->root_search)) { $package_root = $contrib_tools->find_root(false, titania_types::$types[titania::$contrib->contrib_type]->root_search); } else { $package_root = $contrib_tools->find_root(); } if ($package_root === false) { $error[] = phpbb::$user->lang(titania_types::$types[titania::$contrib->contrib_type]->root_not_found_key); } else { $contrib_tools->restore_root($package_root); // Copy the modx install file if (titania_types::$types[titania::$contrib->contrib_type]->display_install_file) { $contrib_tools->copy_modx_install(titania::$config->modx_storage_path . $revision->revision_id);