PageRenderTime 45ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/titania/contributions/revision.php

https://github.com/bogtom/customisation-db
PHP | 628 lines | 430 code | 101 blank | 97 comment | 77 complexity | b640723e2805b0da1691ff164e79ddd0 MD5 | raw file
  1. <?php
  2. /**
  3. *
  4. * @package titania
  5. * @version $Id$
  6. * @copyright (c) 2008 phpBB Customisation Database Team
  7. * @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
  8. *
  9. */
  10. /**
  11. * @ignore
  12. */
  13. if (!defined('IN_TITANIA'))
  14. {
  15. exit;
  16. }
  17. titania::_include('functions_posting', 'generate_type_select');
  18. load_contrib();
  19. if (!titania::$contrib->is_author && !titania::$contrib->is_active_coauthor && !titania_types::$types[titania::$contrib->contrib_type]->acl_get('moderate'))
  20. {
  21. titania::needs_auth();
  22. }
  23. else if (in_array(titania::$contrib->contrib_status, array(TITANIA_CONTRIB_CLEANED, TITANIA_CONTRIB_DISABLED)) && !titania_types::$types[titania::$contrib->contrib_type]->acl_get('moderate'))
  24. {
  25. // Editing cleaned/disabled contribs requires moderation permissions
  26. titania::needs_auth();
  27. }
  28. $step = request_var('step', 0);
  29. $revision_id = request_var('revision_id', 0);
  30. //$phpbb_versions = titania::$cache->get_phpbb_versions();
  31. //$revision_phpbb_versions = request_var('revision_phpbb_versions', array(''));
  32. $disagree = request_var('disagree', false);
  33. if ($disagree)
  34. {
  35. // Did not agree to the agreement.
  36. redirect(titania::$contrib->get_url());
  37. }
  38. // Repack a revision
  39. $repack = request_var('repack', 0);
  40. if ($repack)
  41. {
  42. $old_revision = new titania_revision(titania::$contrib, $repack);
  43. if (!$old_revision->load())
  44. {
  45. trigger_error('NO_REVISION');
  46. }
  47. if (!($old_queue = $old_revision->get_queue()))
  48. {
  49. titania::add_lang('manage');
  50. trigger_error('NO_QUEUE_ITEM');
  51. }
  52. // Check auth
  53. if (!titania_types::$types[titania::$contrib->contrib_type]->acl_get('moderate') && !$old_queue->allow_author_repack)
  54. {
  55. titania::needs_auth();
  56. }
  57. $old_revision->load_phpbb_versions();
  58. generate_phpbb_version_select($old_revision->get_selected_branches());
  59. // Assign some defaults
  60. phpbb::$template->assign_vars(array(
  61. 'REVISION_NAME' => $old_revision->revision_name,
  62. 'REVISION_VERSION' => $old_revision->revision_version,
  63. 'REVISION_LICENSE' => $old_revision->revision_license,
  64. 'S_REPACK' => true,
  65. ));
  66. }
  67. else
  68. {
  69. if (titania::$contrib->in_queue())
  70. {
  71. trigger_error('REVISION_IN_QUEUE');
  72. }
  73. generate_phpbb_version_select();
  74. if (titania::$config->use_queue && titania_types::$types[titania::$contrib->contrib_type]->use_queue)
  75. {
  76. $queue = new titania_queue();
  77. // Load the message object
  78. $message_object = new titania_message($queue);
  79. $message_object->set_auth(array(
  80. 'bbcode' => phpbb::$auth->acl_get('u_titania_bbcode'),
  81. 'smilies' => phpbb::$auth->acl_get('u_titania_smilies'),
  82. ));
  83. $message_object->set_settings(array(
  84. 'display_error' => false,
  85. 'display_subject' => false,
  86. ));
  87. $queue->post_data($message_object);
  88. $message_object->display();
  89. }
  90. }
  91. do{
  92. $revision_attachment = $revision = false;
  93. $display_main = false; // Display the main upload page?
  94. $next_step = $step + 1; // Default to the next step...
  95. $try_again = false; // Try again? Used when skip steps
  96. $error = array();
  97. switch ($step)
  98. {
  99. case 0 :
  100. $display_main = true;
  101. break;
  102. case 1 :
  103. // Upload the revision
  104. $revision_attachment = new titania_attachment(TITANIA_CONTRIB, titania::$contrib->contrib_id);
  105. $revision_attachment->is_orphan = false;
  106. $revision_attachment->upload();
  107. $revision_version = utf8_normalize_nfc(request_var('revision_version', '', true));
  108. $queue_allow_repack = request_var('queue_allow_repack', 0);
  109. $revision_license = utf8_normalize_nfc(request_var('revision_license', '', true));
  110. // Check for errors
  111. $error = array_merge($error, $revision_attachment->error);
  112. if (!$revision_attachment->uploaded)
  113. {
  114. $error[] = phpbb::$user->lang['NO_REVISION_ATTACHMENT'];
  115. }
  116. if (!$revision_version)
  117. {
  118. $error[] = phpbb::$user->lang['NO_REVISION_VERSION'];
  119. }
  120. if (sizeof(titania_types::$types[titania::$contrib->contrib_type]->license_options) && !titania_types::$types[titania::$contrib->contrib_type]->license_allow_custom && !in_array($revision_license, titania_types::$types[titania::$contrib->contrib_type]->license_options))
  121. {
  122. $error[] = phpbb::$user->lang['INVALID_LICENSE'];
  123. }
  124. // Do some simple error checking on the versions
  125. /*if (empty($revision_phpbb_versions))
  126. {
  127. $error[] = phpbb::$user->lang['MUST_SELECT_ONE_VERSION'];
  128. }
  129. else
  130. {
  131. foreach ($revision_phpbb_versions as $revision_phpbb_version)
  132. {
  133. if (!$revision_phpbb_version || strlen($revision_phpbb_version) < 5 || $revision_phpbb_version[1] != '.' || $revision_phpbb_version[3] != '.')
  134. {
  135. $error[] = sprintf(phpbb::$user->lang['BAD_VERSION_SELECTED'], $revision_phpbb_version);
  136. }
  137. }
  138. }*/
  139. // phpBB branches
  140. $allowed_branches = array_keys(get_allowed_phpbb_branches());
  141. if (sizeof($allowed_branches) == 1)
  142. {
  143. $selected_branches = $allowed_branches;
  144. }
  145. else
  146. {
  147. $selected_branches = request_var('phpbb_branch', array(0));
  148. $selected_branches = array_intersect($selected_branches, $allowed_branches);
  149. if (!sizeof($selected_branches))
  150. {
  151. $error[] = phpbb::$user->lang['NO_PHPBB_BRANCH'];
  152. }
  153. }
  154. // Send the file to the type class so it can do custom error checks
  155. if ($revision_attachment->uploaded)
  156. {
  157. $error = array_merge($error, titania_types::$types[titania::$contrib->contrib_type]->upload_check($revision_attachment));
  158. }
  159. if (!sizeof($error))
  160. {
  161. // Success, create a new revision to start
  162. $revision = new titania_revision(titania::$contrib);
  163. $revision->__set_array(array(
  164. 'attachment_id' => $revision_attachment->attachment_id,
  165. 'revision_name' => utf8_normalize_nfc(request_var('revision_name', '', true)),
  166. 'revision_version' => $revision_version,
  167. 'queue_allow_repack' => $queue_allow_repack,
  168. 'revision_license' => ($revision_license != phpbb::$user->lang['CUSTOM_LICENSE'] || !titania_types::$types[titania::$contrib->contrib_type]->license_allow_custom) ? $revision_license : utf8_normalize_nfc(request_var('revision_custom_license', '', true)),
  169. ));
  170. $revision->phpbb_versions = $selected_branches;
  171. /*$revision->phpbb_versions = array();
  172. foreach ($revision_phpbb_versions as $revision_phpbb_version)
  173. {
  174. if (!isset($versions[(int) $revision_phpbb_version[0] . (int) $revision_phpbb_version[2] . substr($revision_phpbb_version, 4)]))
  175. {
  176. // Have we added some new phpBB version that does not exist? We need to purge the cache then
  177. titania::$cache->destroy('_titania_phpbb_versions');
  178. }
  179. // Update the list of phpbb_versions for the revision to update
  180. $revision->phpbb_versions[] = array(
  181. 'phpbb_version_branch' => (int) $revision_phpbb_version[0] . (int) $revision_phpbb_version[2],
  182. 'phpbb_version_revision' => substr($revision_phpbb_version, 4),
  183. );
  184. }*/
  185. $revision->submit();
  186. $revision_id = $revision->revision_id;
  187. // Create the queue
  188. $revision->update_queue();
  189. $queue = $revision->get_queue();
  190. // Add queue values to the queue table
  191. if ($queue)
  192. {
  193. // Load the message object
  194. $message_object = new titania_message($queue);
  195. $message_object->set_auth(array(
  196. 'bbcode' => phpbb::$auth->acl_get('u_titania_bbcode'),
  197. 'smilies' => phpbb::$auth->acl_get('u_titania_smilies'),
  198. ));
  199. $message_object->set_settings(array(
  200. 'display_error' => false,
  201. 'display_subject' => false,
  202. ));
  203. $queue->post_data($message_object);
  204. $queue->queue_allow_repack = $queue_allow_repack;
  205. $queue->submit();
  206. }
  207. if (!titania_types::$types[titania::$contrib->contrib_type]->clean_and_restore_root)
  208. {
  209. // Skip the whole thing if we have nothing else to do
  210. if (!titania_types::$types[titania::$contrib->contrib_type]->mpv_test && !titania_types::$types[titania::$contrib->contrib_type]->automod_test && !titania_types::$types[titania::$contrib->contrib_type]->validate_translation)
  211. {
  212. // Repack if that's what we want
  213. if ($repack)
  214. {
  215. $revision->repack($old_revision);
  216. }
  217. $revision->revision_submitted = true;
  218. $revision->allow_author_repack = false;
  219. $revision->submit();
  220. // After revision is set to submitted we must update the queue
  221. $revision->update_queue();
  222. if ($repack)
  223. {
  224. if (titania_types::$types[titania::$contrib->contrib_type]->acl_get('moderate') && titania::$config->use_queue && titania_types::$types[titania::$contrib->contrib_type]->use_queue)
  225. {
  226. redirect(titania_url::build_url('manage/queue', array('q' => $revision->revision_queue_id)));
  227. }
  228. $old_queue->allow_author_repack = false;
  229. $old_queue->submit();
  230. redirect(titania::$contrib->get_url());
  231. }
  232. // Subscriptions
  233. $queue = $revision->get_queue();
  234. if ($queue)
  235. {
  236. $email_vars = array(
  237. 'NAME' => phpbb::$user->lang['VALIDATION'] . ' - ' . titania::$contrib->contrib_name . ' - ' . $revision->revision_version,
  238. 'U_VIEW' => titania_url::build_url('manage/queue', array('q' => $queue->queue_id)),
  239. );
  240. titania_subscriptions::send_notifications(TITANIA_QUEUE, titania::$contrib->contrib_type, 'subscribe_notify_forum.txt', $email_vars, phpbb::$user->data['user_id']);
  241. }
  242. redirect(titania::$contrib->get_url());
  243. }
  244. phpbb::$template->assign_var('S_NEW_REVISION_SUBMITTED', true);
  245. break;
  246. }
  247. $zip_file = titania::$config->upload_path . '/' . utf8_basename($revision_attachment->attachment_directory) . '/' . utf8_basename($revision_attachment->physical_filename);
  248. $new_dir_name = titania::$contrib->contrib_name_clean . '_' . preg_replace('#[^0-9a-z]#', '_', strtolower($revision_version));
  249. $download_package = titania_url::build_url('download', array('id' => $revision_attachment->attachment_id));
  250. // Start up the machine
  251. $contrib_tools = new titania_contrib_tools($zip_file, $new_dir_name);
  252. // Clean the package
  253. $contrib_tools->clean_package();
  254. // Restore the root package directory
  255. if (is_array(titania_types::$types[titania::$contrib->contrib_type]->root_search))
  256. {
  257. $package_root = $contrib_tools->find_root(false, titania_types::$types[titania::$contrib->contrib_type]->root_search);
  258. }
  259. else
  260. {
  261. $package_root = $contrib_tools->find_root();
  262. }
  263. if ($package_root === false)
  264. {
  265. $error[] = phpbb::$user->lang(titania_types::$types[titania::$contrib->contrib_type]->root_not_found_key);
  266. }
  267. else
  268. {
  269. $contrib_tools->restore_root($package_root);
  270. // Copy the modx install file
  271. if (titania_types::$types[titania::$contrib->contrib_type]->display_install_file)
  272. {
  273. $contrib_tools->copy_modx_install(titania::$config->modx_storage_path . $revision->revision_id);
  274. }
  275. }
  276. $error = array_merge($error, $contrib_tools->error);
  277. if (!sizeof($error))
  278. {
  279. phpbb::$template->assign_var('S_NEW_REVISION_SUBMITTED', true);
  280. // Replace the uploaded zip package with the new one
  281. $contrib_tools->replace_zip();
  282. if (titania_types::$types[titania::$contrib->contrib_type]->mpv_test && titania::$config->use_queue && titania_types::$types[titania::$contrib->contrib_type]->use_queue)
  283. {
  284. phpbb::$template->assign_var('MPV_TEST_WARNING', true);
  285. }
  286. }
  287. // Remove our temp files
  288. $contrib_tools->remove_temp_files();
  289. }
  290. break;
  291. case 2 :
  292. if (!titania_types::$types[titania::$contrib->contrib_type]->mpv_test || !titania::$config->use_queue || !titania_types::$types[titania::$contrib->contrib_type]->use_queue)
  293. {
  294. $step = 3;
  295. $try_again = true;
  296. continue;
  297. }
  298. $revision = new titania_revision(titania::$contrib, $revision_id);
  299. if (!$revision->load())
  300. {
  301. trigger_error('NO_REVISION');
  302. }
  303. $revision_attachment = new titania_attachment(TITANIA_CONTRIB);
  304. $revision_attachment->attachment_id = $revision->attachment_id;
  305. if (!$revision_attachment->load())
  306. {
  307. trigger_error('ERROR_NO_ATTACHMENT');
  308. }
  309. $zip_file = titania::$config->upload_path . '/' . utf8_basename($revision_attachment->attachment_directory) . '/' . utf8_basename($revision_attachment->physical_filename);
  310. $download_package = titania_url::build_url('download', array('id' => $revision_attachment->attachment_id));
  311. // Start up the machine
  312. $contrib_tools = new titania_contrib_tools($zip_file);
  313. // Run MPV
  314. $mpv_results = $contrib_tools->mpv($download_package);
  315. if ($mpv_results === false)
  316. {
  317. // Assign this error separately, it's not something wrong with the package but some server issue
  318. phpbb::$template->assign_var('NOTICE', implode('<br />', $contrib_tools->error));
  319. }
  320. else
  321. {
  322. $uid = $bitfield = $flags = false;
  323. generate_text_for_storage($mpv_results, $uid, $bitfield, $flags, true, true, true);
  324. // Add the MPV Results to the queue
  325. $queue = $revision->get_queue();
  326. $queue->mpv_results = $mpv_results;
  327. $queue->mpv_results_bitfield = $bitfield;
  328. $queue->mpv_results_uid = $uid;
  329. $queue->submit();
  330. $mpv_results = titania_generate_text_for_display($mpv_results, $uid, $bitfield, $flags);
  331. phpbb::$template->assign_var('MPV_RESULTS', $mpv_results);
  332. phpbb::$template->assign_var('S_AUTOMOD_TEST', titania_types::$types[titania::$contrib->contrib_type]->automod_test);
  333. }
  334. break;
  335. case 3 :
  336. if (!titania_types::$types[titania::$contrib->contrib_type]->automod_test || !titania::$config->use_queue || !titania_types::$types[titania::$contrib->contrib_type]->use_queue)
  337. {
  338. $step = 4;
  339. $try_again = true;
  340. continue;
  341. }
  342. $revision = new titania_revision(titania::$contrib, $revision_id);
  343. if (!$revision->load())
  344. {
  345. trigger_error('NO_REVISION');
  346. }
  347. $revision_attachment = new titania_attachment(TITANIA_CONTRIB);
  348. $revision_attachment->attachment_id = $revision->attachment_id;
  349. if (!$revision_attachment->load())
  350. {
  351. trigger_error('ERROR_NO_ATTACHMENT');
  352. }
  353. $zip_file = titania::$config->upload_path . '/' . utf8_basename($revision_attachment->attachment_directory) . '/' . utf8_basename($revision_attachment->physical_filename);
  354. $download_package = titania_url::build_url('download', array('id' => $revision_attachment->attachment_id));
  355. $new_dir_name = titania::$contrib->contrib_name_clean . '_' . preg_replace('#[^0-9a-z]#', '_', strtolower($revision->revision_version));
  356. // Start up the machine
  357. $contrib_tools = new titania_contrib_tools($zip_file, $new_dir_name);
  358. // Automod testing time
  359. $details = '';
  360. $html_results = $bbcode_results = array();
  361. $sql = 'SELECT row_id, phpbb_version_branch, phpbb_version_revision FROM ' . TITANIA_REVISIONS_PHPBB_TABLE . '
  362. WHERE revision_id = ' . $revision->revision_id;
  363. $result = phpbb::$db->sql_query($sql);
  364. while ($row = phpbb::$db->sql_fetchrow($result))
  365. {
  366. $version_string = $row['phpbb_version_branch'][0] . '.' . $row['phpbb_version_branch'][1] . '.' .$row['phpbb_version_revision'];
  367. $phpbb_path = $contrib_tools->automod_phpbb_files($version_string);
  368. if ($phpbb_path === false)
  369. {
  370. $error = array_merge($error, $contrib_tools->error);
  371. continue;
  372. }
  373. phpbb::$template->assign_vars(array(
  374. 'PHPBB_VERSION' => $version_string,
  375. 'TEST_ID' => $row['row_id'],
  376. ));
  377. $html_result = $bbcode_result = '';
  378. $installed = $contrib_tools->automod($phpbb_path, $details, $html_result, $bbcode_result);
  379. $html_results[] = $html_result;
  380. $bbcode_results[] = $bbcode_result;
  381. }
  382. phpbb::$db->sql_freeresult($result);
  383. $html_results = implode('<br /><br />', $html_results);
  384. $bbcode_results = implode("\n\n", $bbcode_results);
  385. // Update the queue with the results
  386. $queue = $revision->get_queue();
  387. $queue->automod_results = $bbcode_results;
  388. $queue->submit();
  389. phpbb::$template->assign_var('AUTOMOD_RESULTS', $html_results);
  390. // Remove our temp files
  391. $contrib_tools->remove_temp_files();
  392. break;
  393. // Translation validation
  394. case 4 :
  395. if (!titania_types::$types[titania::$contrib->contrib_type]->validate_translation)
  396. {
  397. $step = 5;
  398. $try_again = true;
  399. continue;
  400. }
  401. $revision = new titania_revision(titania::$contrib, $revision_id);
  402. if (!$revision->load())
  403. {
  404. trigger_error('NO_REVISION');
  405. }
  406. $revision_attachment = new titania_attachment(TITANIA_CONTRIB);
  407. $revision_attachment->attachment_id = $revision->attachment_id;
  408. if (!$revision_attachment->load())
  409. {
  410. trigger_error('ERROR_NO_ATTACHMENT');
  411. }
  412. titania::_include('library/translations/translation_validation');
  413. $zip_file = titania::$config->upload_path . '/' . utf8_basename($revision_attachment->attachment_directory) . '/' . utf8_basename($revision_attachment->physical_filename);
  414. $new_dir_name = titania::$contrib->contrib_name_clean . '_' . preg_replace('#[^0-9a-z]#', '_', strtolower($revision->revision_version));
  415. $validation_tools = new translation_validation($zip_file, $new_dir_name);
  416. $sql = 'SELECT row_id, phpbb_version_branch, phpbb_version_revision FROM ' . TITANIA_REVISIONS_PHPBB_TABLE . '
  417. WHERE revision_id = ' . $revision->revision_id;
  418. $result = phpbb::$db->sql_query($sql);
  419. while ($row = phpbb::$db->sql_fetchrow($result))
  420. {
  421. $version_string = $row['phpbb_version_branch'][0] . '.' . $row['phpbb_version_branch'][1] . '.' .$row['phpbb_version_revision'];
  422. $reference_filepath = $validation_tools->automod_phpbb_files($version_string); // path to files against which we will validate the package
  423. }
  424. $errors = $validation_tools->check_package($reference_filepath);
  425. if (!empty($errors))
  426. {
  427. trigger_error(implode('<br /><br />', $errors));
  428. }
  429. $validation_tools->remove_temp_files();
  430. phpbb::$template->assign_var('S_PASSED_TRANSLATION_VALIDATION', true);
  431. break;
  432. case 5 :
  433. $revision = new titania_revision(titania::$contrib, $revision_id);
  434. if (!$revision->load())
  435. {
  436. trigger_error('NO_REVISION');
  437. }
  438. // Repack if that's what we want
  439. if ($repack)
  440. {
  441. $revision->repack($old_revision);
  442. }
  443. // Update the revision to be submitted, which unhides the queue topic and updates the contrib_last_update time
  444. $revision->revision_submitted = true;
  445. $revision->submit();
  446. // Update the queue (make visible)
  447. $revision->update_queue();
  448. if ($repack && titania::$config->use_queue && titania_types::$types[titania::$contrib->contrib_type]->use_queue)
  449. {
  450. redirect(titania_url::build_url('manage/queue', array('q' => $revision->revision_queue_id)));
  451. }
  452. // Subscriptions
  453. $queue = $revision->get_queue();
  454. if ($queue)
  455. {
  456. $email_vars = array(
  457. 'NAME' => phpbb::$user->lang['VALIDATION'] . ' - ' . titania::$contrib->contrib_name . ' - ' . $revision->revision_version,
  458. 'U_VIEW' => titania_url::build_url('manage/queue', array('q' => $queue->queue_id)),
  459. );
  460. titania_subscriptions::send_notifications(TITANIA_QUEUE, titania::$contrib->contrib_type, 'subscribe_notify_forum.txt', $email_vars, phpbb::$user->data['user_id']);
  461. }
  462. redirect(titania::$contrib->get_url());
  463. break;
  464. }
  465. } while($try_again);
  466. phpbb::$template->assign_vars(array(
  467. 'ERROR_MSG' => (sizeof($error)) ? implode('<br />', $error) : '',
  468. 'NEXT_STEP' => $next_step,
  469. 'REVISION_ID' => $revision_id,
  470. 'AGREEMENT_NOTICE' => (titania_types::$types[titania::$contrib->contrib_type]->upload_agreement) ? ((isset(phpbb::$user->lang[titania_types::$types[titania::$contrib->contrib_type]->upload_agreement])) ? nl2br(phpbb::$user->lang[titania_types::$types[titania::$contrib->contrib_type]->upload_agreement]): nl2br(titania_types::$types[titania::$contrib->contrib_type]->upload_agreement)) : false,
  471. 'QUEUE_ALLOW_REPACK' => true,
  472. 'S_POST_ACTION' => ($repack) ? titania_url::append_url(titania::$contrib->get_url('revision'), array('repack' => $repack)) : titania::$contrib->get_url('revision'),
  473. ));
  474. // Output the available license options
  475. foreach (titania_types::$types[titania::$contrib->contrib_type]->license_options as $option)
  476. {
  477. phpbb::$template->assign_block_vars('license_options', array(
  478. 'NAME' => $option,
  479. 'VALUE' => $option,
  480. ));
  481. }
  482. // Display the list of phpBB versions available
  483. /*$allowed_branches = get_allowed_phpbb_branches();
  484. foreach ($phpbb_versions as $version => $name)
  485. {
  486. if (!isset($allowed_branches[substr($version, 0, 2)]))
  487. {
  488. continue;
  489. }
  490. $template->assign_block_vars('phpbb_versions', array(
  491. 'VERSION' => $name,
  492. 'S_SELECTED' => (in_array($name, $revision_phpbb_versions)) ? true : false,
  493. ));
  494. }*/
  495. // Display the main page
  496. if ($display_main || sizeof($error))
  497. {
  498. if (sizeof($error))
  499. {
  500. if ($revision_attachment !== false)
  501. {
  502. $revision_attachment->delete();
  503. }
  504. if ($revision !== false)
  505. {
  506. $revision->delete();
  507. }
  508. }
  509. $revision_attachment = new titania_attachment(TITANIA_CONTRIB, titania::$contrib->contrib_id);
  510. phpbb::$template->assign_vars(array(
  511. 'REVISION_NAME' => utf8_normalize_nfc(request_var('revision_name', '', true)),
  512. 'REVISION_VERSION' => utf8_normalize_nfc(request_var('revision_version', '', true)),
  513. 'REVISION_LICENSE' => utf8_normalize_nfc(request_var('revision_license', '', true)),
  514. 'REVISION_CUSTOM_LICENSE' => utf8_normalize_nfc(request_var('revision_custom_license', '', true)),
  515. 'QUEUE_ALLOW_REPACK' => request_var('queue_allow_repack', 0),
  516. 'NEXT_STEP' => 1,
  517. 'S_CUSTOM_LICENSE' => (utf8_normalize_nfc(request_var('revision_license', '', true)) == phpbb::$user->lang['CUSTOM_LICENSE']) ? true : false,
  518. 'S_ALLOW_CUSTOM_LICENSE' => (titania_types::$types[titania::$contrib->contrib_type]->license_allow_custom) ? true : false,
  519. ));
  520. // Assign separately so we can output some data first
  521. phpbb::$template->assign_var('REVISION_UPLOADER', $revision_attachment->parse_uploader('posting/attachments/revisions.html'));
  522. }
  523. add_form_key('postform');
  524. titania::page_header(titania::$contrib->contrib_name . ' - ' . phpbb::$user->lang['NEW_REVISION']);
  525. titania::page_footer(true, 'contributions/contribution_revision.html');