示例#1
0
                    $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)));
                }
            }
示例#2
0
                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 = '';
示例#3
0
    $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);
 }
示例#5
0
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_';
示例#6
0
 /**
  * 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']);
 }
示例#7
0
    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);
    }
示例#8
0
         // 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);