Example #1
0
 /**
  * Finalises the installation by creating the database and writing all the supplied data to the database.
  *
  * @return void
  **/
 function process_form_finalise_installation()
 {
     require_once BB_PATH . 'bb-admin/includes/functions.bb-upgrade.php';
     require_once BB_PATH . 'bb-admin/includes/functions.bb-admin.php';
     $this->inject_form_values_into_data(2);
     $this->inject_form_values_into_data(3);
     $data2 =& $this->data[2]['form'];
     $data3 =& $this->data[3]['form'];
     $data4 =& $this->data[4]['form'];
     $error_log = array();
     $installation_log = array();
     // Check the referer
     bb_check_admin_referer('bbpress-installer');
     $installation_log[] = __('Referrer is OK, beginning installation…');
     global $bbdb;
     // Setup user table variables and constants if available
     if ($data2['toggle_2_2']['value']) {
         $installation_log[] = '>>> ' . __('Setting up custom user table constants');
         global $bb;
         global $bb_table_prefix;
         if (!empty($data2['wp_table_prefix']['value'])) {
             $bb->wp_table_prefix = $data2['wp_table_prefix']['value'];
         }
         if (!empty($data2['user_bbdb_name']['value'])) {
             $bb->user_bbdb_name = $data2['user_bbdb_name']['value'];
         }
         if (!empty($data2['user_bbdb_user']['value'])) {
             $bb->user_bbdb_user = $data2['user_bbdb_user']['value'];
         }
         if (!empty($data2['user_bbdb_password']['value'])) {
             $bb->user_bbdb_password = $data2['user_bbdb_password']['value'];
         }
         if (!empty($data2['user_bbdb_host']['value'])) {
             $bb->user_bbdb_host = $data2['user_bbdb_host']['value'];
         }
         if (!empty($data2['user_bbdb_charset']['value'])) {
             $bb->user_bbdb_charset = preg_replace('/[^a-z0-9_-]/i', '', $data2['user_bbdb_charset']['value']);
         }
         if (!empty($data2['user_bbdb_collate']['value'])) {
             $bb->user_bbdb_collate = preg_replace('/[^a-z0-9_-]/i', '', $data2['user_bbdb_collate']['value']);
         }
         bb_set_custom_user_tables();
         // Add custom user database if required
         if (isset($bb->custom_databases['user'])) {
             $bbdb->add_db_server('user', $bb->custom_databases['user']);
         }
         // Add custom tables if required
         if (isset($bb->custom_tables)) {
             $bbdb->tables = array_merge($bbdb->tables, $bb->custom_tables);
             if (is_wp_error($bbdb->set_prefix($bb_table_prefix))) {
                 die(__('Your user table prefix may only contain letters, numbers and underscores.'));
             }
         }
     }
     // Create the database
     $installation_log[] = "\n" . __('Step 1 - Creating database tables');
     if (!$this->database_tables_are_installed()) {
         // Hide db errors
         $bbdb->hide_errors();
         // Install the database
         $alterations = bb_install();
         // Show db errors
         $bbdb->show_errors();
         if (isset($alterations['errors']) && is_array($alterations['errors'])) {
             $error_log = array_merge($error_log, $alterations['errors']);
         }
         if (isset($alterations['messages']) && is_array($alterations['messages'])) {
             $installation_log = array_merge($installation_log, $alterations['messages']);
         }
         if (!$this->database_tables_are_installed()) {
             $installation_log[] = '>>> ' . __('Database installation failed!!!');
             $installation_log[] = '>>>>>> ' . __('Halting installation!');
             $error_log[] = __('Database installation failed!!!');
             $this->step_status[4] = 'incomplete';
             $this->strings[4]['h2'] = __('Installation failed!');
             $this->strings[4]['messages']['error'][] = __('The database failed to install. You may need to replace bbPress with a fresh copy and start again.');
             $data4['installation_log']['value'] = join("\n", $installation_log);
             $data4['error_log']['value'] = join("\n", $error_log);
             return 'incomplete';
         }
     } else {
         $installation_log[] = '>>> ' . __('Database is already installed!!!');
     }
     // Integration settings passed from step 2
     // These are already validated provided that the referer checks out
     $installation_log[] = "\n" . __('Step 2 - WordPress integration (optional)');
     if ($data2['toggle_2_0']['value']) {
         if ($data2['toggle_2_1']['value']) {
             bb_update_option('wp_siteurl', $data2['wp_siteurl']['value']);
             $installation_log[] = '>>> ' . __('WordPress address (URL):') . ' ' . $data2['wp_siteurl']['value'];
             bb_update_option('wp_home', $data2['wp_home']['value']);
             $installation_log[] = '>>> ' . __('Blog address (URL):') . ' ' . $data2['wp_home']['value'];
             $config_result = $this->write_lines_to_file(BB_PATH . 'bb-config.php', false, array("define( 'BB_AUTH_KEY" => array("'" . BB_AUTH_KEY . "'", "'" . $data2['wp_auth_key']['value'] . "'"), "define( 'BB_SECURE_A" => array("'" . BB_SECURE_AUTH_KEY . "'", "'" . $data2['wp_secure_auth_key']['value'] . "'"), "define( 'BB_LOGGED_I" => array("'" . BB_LOGGED_IN_KEY . "'", "'" . $data2['wp_logged_in_key']['value'] . "'")));
             switch ($config_result) {
                 case 1:
                     $installation_log[] = '>>> ' . __('WordPress cookie keys set.');
                     break;
                 default:
                     $error_log[] = '>>> ' . __('WordPress cookie keys not set.');
                     $error_log[] = '>>>>>> ' . __('Your "bb-config.php" file was not writable.');
                     $error_log[] = '>>>>>> ' . __('You will need to manually re-define "BB_AUTH_KEY", "BB_SECURE_AUTH_KEY" and "BB_LOGGED_IN_KEY" in your "bb-config.php" file.');
                     $installation_log[] = '>>> ' . __('WordPress cookie keys not set.');
                     break;
             }
             if (!empty($data2['wp_auth_salt']['value'])) {
                 bb_update_option('bb_auth_salt', $data2['wp_auth_salt']['value']);
                 $installation_log[] = '>>> ' . __('WordPress "auth" cookie salt set from input.');
             }
             if (!empty($data2['wp_secure_auth_salt']['value'])) {
                 bb_update_option('bb_secure_auth_salt', $data2['wp_secure_auth_salt']['value']);
                 $installation_log[] = '>>> ' . __('WordPress "secure auth" cookie salt set from input.');
             }
             if (!empty($data2['wp_logged_in_salt']['value'])) {
                 bb_update_option('bb_logged_in_salt', $data2['wp_logged_in_salt']['value']);
                 $installation_log[] = '>>> ' . __('WordPress "logged in" cookie salt set from input.');
             }
         }
         if ($data2['toggle_2_2']['value']) {
             if (!bb_get_option('bb_auth_salt') || !bb_get_option('bb_secure_auth_salt') || !bb_get_option('bb_logged_in_salt')) {
                 $installation_log[] = '>>> ' . __('Fetching missing WordPress cookie salts.');
                 $_prefix = $bb->wp_table_prefix;
                 if (!empty($data2['wordpress_mu_primary_blog_id']['value'])) {
                     $_prefix .= $data2['wordpress_mu_primary_blog_id']['value'] . '_';
                 }
                 if (isset($bb->custom_databases['user'])) {
                     $bbdb->tables['options'] = array('user', $_prefix . 'options');
                 } else {
                     $bbdb->tables['options'] = $_prefix . 'options';
                 }
                 unset($_prefix);
                 $bbdb->set_prefix($bb_table_prefix);
                 if (!bb_get_option('bb_auth_salt')) {
                     $wp_auth_salt = $bbdb->get_var("SELECT `option_value` FROM {$bbdb->options} WHERE `option_name` = 'auth_salt' LIMIT 1");
                     if ($wp_auth_salt) {
                         bb_update_option('bb_auth_salt', $wp_auth_salt);
                         $installation_log[] = '>>>>>> ' . __('WordPress "auth" cookie salt set.');
                     } else {
                         $error_log[] = '>>> ' . __('WordPress "auth" cookie salt not set.');
                         $error_log[] = '>>>>>> ' . __('Could not fetch "auth" cookie salt from the WordPress options table.');
                         $error_log[] = '>>>>>> ' . __('You will need to manually define the "auth" cookie salt in your database.');
                         $installation_log[] = '>>>>>> ' . __('WordPress "auth" cookie salt not set.');
                     }
                 }
                 if (!bb_get_option('bb_secure_auth_salt')) {
                     $wp_secure_auth_salt = $bbdb->get_var("SELECT `option_value` FROM {$bbdb->options} WHERE `option_name` = 'secure_auth_salt' LIMIT 1");
                     if ($wp_secure_auth_salt) {
                         bb_update_option('bb_secure_auth_salt', $wp_secure_auth_salt);
                         $installation_log[] = '>>>>>> ' . __('WordPress "secure auth" cookie salt set.');
                     } else {
                         // This cookie salt is sometimes empty so don't error
                         $installation_log[] = '>>>>>> ' . __('WordPress "secure auth" cookie salt not set.');
                     }
                 }
                 if (!bb_get_option('bb_logged_in_salt')) {
                     $wp_logged_in_salt = $bbdb->get_var("SELECT `option_value` FROM {$bbdb->options} WHERE `option_name` = 'logged_in_salt' LIMIT 1");
                     if ($wp_logged_in_salt) {
                         bb_update_option('bb_logged_in_salt', $wp_logged_in_salt);
                         $installation_log[] = '>>>>>> ' . __('WordPress "logged in" cookie salt set.');
                     } else {
                         $error_log[] = '>>> ' . __('WordPress "logged in" cookie salt not set.');
                         $error_log[] = '>>>>>> ' . __('Could not fetch "logged in" cookie salt from the WordPress options table.');
                         $error_log[] = '>>>>>> ' . __('You will need to manually define the "logged in" cookie salt in your database.');
                         $installation_log[] = '>>>>>> ' . __('WordPress "logged in" cookie salt not set.');
                     }
                 }
             }
             if (!empty($data2['wp_table_prefix']['value'])) {
                 bb_update_option('wp_table_prefix', $data2['wp_table_prefix']['value']);
                 $installation_log[] = '>>> ' . __('User database table prefix:') . ' ' . $data2['wp_table_prefix']['value'];
             }
             if (!empty($data2['wordpress_mu_primary_blog_id']['value'])) {
                 bb_update_option('wordpress_mu_primary_blog_id', $data2['wordpress_mu_primary_blog_id']['value']);
                 $installation_log[] = '>>> ' . __('WordPress MU primary blog ID:') . ' ' . $data2['wordpress_mu_primary_blog_id']['value'];
             }
             if ($data2['toggle_2_3']['value']) {
                 if (!empty($data2['user_bbdb_name']['value'])) {
                     bb_update_option('user_bbdb_name', $data2['user_bbdb_name']['value']);
                     $installation_log[] = '>>> ' . __('User database name:') . ' ' . $data2['user_bbdb_name']['value'];
                 }
                 if (!empty($data2['user_bbdb_user']['value'])) {
                     bb_update_option('user_bbdb_user', $data2['user_bbdb_user']['value']);
                     $installation_log[] = '>>> ' . __('User database user:'******' ' . $data2['user_bbdb_user']['value'];
                 }
                 if (!empty($data2['user_bbdb_password']['value'])) {
                     bb_update_option('user_bbdb_password', $data2['user_bbdb_password']['value']);
                     $installation_log[] = '>>> ' . __('User database password:'******' ' . $data2['user_bbdb_password']['value'];
                 }
                 if (!empty($data2['user_bbdb_host']['value'])) {
                     bb_update_option('user_bbdb_host', $data2['user_bbdb_host']['value']);
                     $installation_log[] = '>>> ' . __('User database host:') . ' ' . $data2['user_bbdb_host']['value'];
                 }
                 if (!empty($data2['user_bbdb_charset']['value'])) {
                     bb_update_option('user_bbdb_charset', $data2['user_bbdb_charset']['value']);
                     $installation_log[] = '>>> ' . __('User database character set:') . ' ' . $data2['user_bbdb_charset']['value'];
                 }
                 if (!empty($data2['user_bbdb_collate']['value'])) {
                     bb_update_option('user_bbdb_collate', $data2['user_bbdb_collate']['value']);
                     $installation_log[] = '>>> ' . __('User database collation:') . ' ' . $data2['user_bbdb_collate']['value'];
                 }
                 if (!empty($data2['custom_user_table']['value'])) {
                     bb_update_option('custom_user_table', $data2['custom_user_table']['value']);
                     $installation_log[] = '>>> ' . __('User database "user" table:') . ' ' . $data2['custom_user_table']['value'];
                 }
                 if (!empty($data2['custom_user_meta_table']['value'])) {
                     bb_update_option('custom_user_meta_table', $data2['custom_user_meta_table']['value']);
                     $installation_log[] = '>>> ' . __('User database "user meta" table:') . ' ' . $data2['custom_user_meta_table']['value'];
                 }
             }
         }
     } else {
         $installation_log[] = '>>> ' . __('Integration not enabled');
     }
     // Site settings passed from step 3
     // These are already validated provided that the referer checks out
     $installation_log[] = "\n" . __('Step 3 - Site settings');
     bb_update_option('name', $data3['name']['value']);
     $installation_log[] = '>>> ' . __('Site name:') . ' ' . $data3['name']['value'];
     bb_update_option('uri', $data3['uri']['value']);
     $installation_log[] = '>>> ' . __('Site address (URL):') . ' ' . $data3['uri']['value'];
     bb_update_option('from_email', $data3['keymaster_user_email']['value']);
     $installation_log[] = '>>> ' . __('From email address:') . ' ' . $data3['keymaster_user_email']['value'];
     // Create the key master
     $keymaster_created = false;
     switch ($data3['keymaster_user_type']['value']) {
         case 'new':
             // Check to see if the user login already exists
             if ($keymaster_user = bb_get_user($data3['keymaster_user_login']['value'], array('by' => 'login'))) {
                 // The keymaster is an existing bbPress user
                 $installation_log[] = '>>> ' . __('Key master could not be created!');
                 $installation_log[] = '>>>>>> ' . __('That login is already taken!');
                 $error_log[] = __('Key master could not be created!');
                 if ($keymaster_user->bb_capabilities['keymaster']) {
                     // The existing user is a key master - continue
                     $bb_current_user = bb_set_current_user($keymaster_user->ID);
                     $installation_log[] = '>>>>>> ' . __('Existing key master entered!');
                     $data4['keymaster_user_password']['value'] = __('Your bbPress password');
                     $data3['keymaster_user_email']['value'] = $keymaster_user->user_email;
                     bb_update_option('from_email', $keymaster_user->user_email);
                     $installation_log[] = '>>>>>> ' . __('Re-setting admin email address.');
                     $keymaster_created = true;
                 } else {
                     // The existing user is a non-key master user - halt installation
                     $installation_log[] = '>>>>>> ' . __('Existing user without key master role entered!');
                     $installation_log[] = '>>>>>>>>> ' . __('Halting installation!');
                     $this->step_status[4] = 'incomplete';
                     $this->strings[4]['h2'] = __('Installation failed!');
                     $this->strings[4]['messages']['error'][] = __('The key master could not be created. An existing user was found with that user login.');
                     $data4['installation_log']['value'] = join("\n", $installation_log);
                     $data4['error_log']['value'] = join("\n", $error_log);
                     return 'incomplete';
                 }
                 break;
             }
             // Helper function to let us know the password that was created
             global $keymaster_password;
             function bb_get_keymaster_password($user_id, $pass)
             {
                 global $keymaster_password;
                 $keymaster_password = $pass;
             }
             add_action('bb_new_user', 'bb_get_keymaster_password', 10, 2);
             // Create the new user (automattically given key master role when BB_INSTALLING is true)
             if ($keymaster_user_id = bb_new_user($data3['keymaster_user_login']['value'], $data3['keymaster_user_email']['value'], '')) {
                 $bb_current_user = bb_set_current_user($keymaster_user_id);
                 $data4['keymaster_user_password']['value'] = $keymaster_password;
                 $installation_log[] = '>>> ' . __('Key master created');
                 $installation_log[] = '>>>>>> ' . __('Username:'******' ' . $data3['keymaster_user_login']['value'];
                 $installation_log[] = '>>>>>> ' . __('Email address:') . ' ' . $data3['keymaster_user_email']['value'];
                 $installation_log[] = '>>>>>> ' . __('Password:'******' ' . $data4['keymaster_user_password']['value'];
                 $keymaster_created = true;
             } else {
                 $installation_log[] = '>>> ' . __('Key master could not be created!');
                 $installation_log[] = '>>>>>> ' . __('Halting installation!');
                 $error_log[] = __('Key master could not be created!');
                 $this->step_status[4] = 'incomplete';
                 $this->strings[4]['h2'] = __('Installation failed!');
                 $this->strings[4]['messages']['error'][] = __('The key master could not be created. You may need to replace bbPress with a fresh copy and start again.');
                 $data4['installation_log']['value'] = join("\n", $installation_log);
                 $data4['error_log']['value'] = join("\n", $error_log);
                 return 'incomplete';
             }
             break;
         case 'old':
             if ($keymaster_user = bb_get_user($data3['keymaster_user_login']['value'], array('by' => 'login'))) {
                 // The keymaster is an existing bbPress or WordPress user
                 $bb_current_user = bb_set_current_user($keymaster_user->ID);
                 $bb_current_user->set_role('keymaster');
                 $data4['keymaster_user_password']['value'] = __('Your existing password');
                 $installation_log[] = '>>> ' . __('Key master role assigned to existing user');
                 $installation_log[] = '>>>>>> ' . __('Username:'******' ' . $data3['keymaster_user_login']['value'];
                 $installation_log[] = '>>>>>> ' . __('Email address:') . ' ' . $data3['keymaster_user_email']['value'];
                 $installation_log[] = '>>>>>> ' . __('Password:'******' ' . $data4['keymaster_user_password']['value'];
                 $keymaster_created = true;
             } else {
                 $installation_log[] = '>>> ' . __('Key master role could not be assigned to existing user!');
                 $installation_log[] = '>>>>>> ' . __('Halting installation!');
                 $error_log[] = __('Key master could not be created!');
                 $this->step_status[4] = 'incomplete';
                 $this->strings[4]['h2'] = __('Installation failed!');
                 $this->strings[4]['messages']['error'][] = __('The key master could not be assigned. You may need to replace bbPress with a fresh copy and start again.');
                 $data4['installation_log']['value'] = join("\n", $installation_log);
                 $data4['error_log']['value'] = join("\n", $error_log);
                 return 'incomplete';
             }
             break;
     }
     // Don't create an initial forum if any forums already exist
     if (!$bbdb->get_results('SELECT `forum_id` FROM `' . $bbdb->forums . '` LIMIT 1;')) {
         if ($this->language != BB_LANG) {
             global $locale, $l10n;
             $locale = BB_LANG;
             unset($l10n['default']);
             bb_load_default_textdomain();
         }
         $description = __('Just another bbPress community');
         bb_update_option('description', $description);
         if ($this->language != BB_LANG) {
             $locale = $this->language;
             unset($l10n['default']);
             bb_load_default_textdomain();
         }
         $installation_log[] = '>>> ' . __('Description:') . ' ' . $description;
         if ($forum_id = bb_new_forum(array('forum_name' => $data3['forum_name']['value']))) {
             $installation_log[] = '>>> ' . __('Forum name:') . ' ' . $data3['forum_name']['value'];
             if ($this->language != BB_LANG) {
                 $locale = BB_LANG;
                 unset($l10n['default']);
                 bb_load_default_textdomain();
             }
             $topic_title = __('Your first topic');
             $topic_id = bb_insert_topic(array('topic_title' => $topic_title, 'forum_id' => $forum_id, 'tags' => 'bbPress'));
             $post_text = __('First Post!  w00t.');
             bb_insert_post(array('topic_id' => $topic_id, 'post_text' => $post_text));
             if ($this->language != BB_LANG) {
                 $locale = $this->language;
                 unset($l10n['default']);
                 bb_load_default_textdomain();
             }
             $installation_log[] = '>>>>>> ' . __('Topic:') . ' ' . $topic_title;
             $installation_log[] = '>>>>>>>>> ' . __('Post:') . ' ' . $post_text;
         } else {
             $installation_log[] = '>>> ' . __('Forum could not be created!');
             $error_log[] = __('Forum could not be created!');
         }
     } else {
         $installation_log[] = '>>> ' . __('There are existing forums in this database.');
         $installation_log[] = '>>>>>> ' . __('No new forum created.');
         $error_log[] = __('Forums already exist!');
     }
     if (defined('BB_PLUGIN_DIR') && BB_PLUGIN_DIR && !file_exists(BB_PLUGIN_DIR)) {
         // Just suppress errors as this is not critical
         if (@mkdir(BB_PLUGIN_DIR, 0750)) {
             $installation_log[] = '>>> ' . sprintf(__('Making plugin directory at %s.'), BB_PLUGIN_DIR);
         }
     }
     if (defined('BB_THEME_DIR') && BB_THEME_DIR && !file_exists(BB_THEME_DIR)) {
         // Just suppress errors as this is not critical
         if (@mkdir(BB_THEME_DIR, 0750)) {
             $installation_log[] = '>>> ' . sprintf(__('Making theme directory at %s.'), BB_THEME_DIR);
         }
     }
     if ($keymaster_created) {
         $keymaster_email_message = sprintf(__("Your new bbPress site has been successfully set up at:\n\n%1\$s\n\nYou can log in to the key master account with the following information:\n\nUsername: %2\$s\nPassword: %3\$s\n\nWe hope you enjoy your new forums. Thanks!\n\n--The bbPress Team\nhttp://bbpress.org/"), bb_get_uri(null, null, BB_URI_CONTEXT_TEXT), $data3['keymaster_user_login']['value'], $data4['keymaster_user_password']['value']);
         if (bb_mail($data3['keymaster_user_email']['value'], __('New bbPress installation'), $keymaster_email_message)) {
             $installation_log[] = '>>> ' . __('Key master email sent');
         } else {
             $installation_log[] = '>>> ' . __('Key master email not sent!');
             $error_log[] = __('Key master email not sent!');
         }
     }
     if (count($error_log)) {
         $this->strings[4]['h2'] = __('Installation completed with some errors!');
         $this->strings[4]['messages']['error'][] = __('Your installation completed with some minor errors. See the error log below for more specific information.');
         $installation_log[] = "\n" . __('There were some errors encountered during installation!');
     } else {
         $this->strings[4]['messages']['message'][] = __('Your installation completed successfully.');
         $installation_log[] = "\n" . __('Installation complete!');
     }
     $this->step_status[4] = 'complete';
     $data4['installation_log']['value'] = join("\n", $installation_log);
     $data4['error_log']['value'] = join("\n", $error_log);
     return 'complete';
 }
/**
 * Sends an email with the user's new password
 *
 * {@internal Missing Long Description}}
 *
 * @since 0.7.2
 * @global bbdb $bbdb {@internal Not used}}
 *
 * @param int|string $user
 * @param string $pass
 * @return bool
 */
function bb_send_pass($user, $pass)
{
    if (!($user = bb_get_user($user))) {
        return false;
    }
    $message = sprintf(__("Your username is: %1\$s \nYour password is: %2\$s \nYou can now log in: %3\$s \n\nEnjoy!"), $user->user_login, $pass, bb_get_uri(null, null, BB_URI_CONTEXT_TEXT));
    $message = apply_filters('bb_send_pass_message', $message, $user, $pass);
    $subject = sprintf(__('%s: Password'), bb_get_option('name'));
    $subject = apply_filters('bb_send_pass_subject', $subject, $user);
    return bb_mail(bb_get_user_email($user->ID), $subject, $message);
}
Example #3
0
function blocklist_check($post_id = 0, $wall = false)
{
    if (bb_current_user_can('moderate') || bb_current_user_can('throttle')) {
        return;
    }
    if ($wall) {
        $bb_post = user_wall_get_post($post_id);
    } else {
        $bb_post = bb_get_post($post_id);
    }
    if (empty($post_id) || empty($bb_post) || !empty($bb_post->post_status)) {
        return;
    }
    global $blocklist, $bbdb;
    blocklist_initialize();
    if (empty($blocklist['data'])) {
        return;
    }
    (array) ($data = explode("\r\n", $blocklist['data']));
    $user = bb_get_user($bb_post->poster_id);
    foreach ($data as $item) {
        if (empty($item) || strlen($item) < 4 || ord($item) == 35) {
            continue;
        }
        if (preg_match('/^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}/', $item)) {
            // is IP
            if (strpos($bb_post->poster_ip, $item) === 0) {
                $found = "IP address";
                $bad = $item;
                break;
            }
        } else {
            // is word
            $qitem = preg_quote($item);
            if (preg_match('/\\b' . $qitem . '/simU', $user->user_email)) {
                $found = "email";
                $bad = $item;
                break;
            }
            if (preg_match('/\\b' . $qitem . '/simU', $user->user_login)) {
                $found = "username";
                $bad = $item;
                break;
            }
            if (preg_match('/\\b' . $qitem . '/simU', $bb_post->post_text)) {
                $found = "post text";
                $bad = $item;
                break;
            } elseif (!$wall && $bb_post->post_position == 1) {
                if (empty($topic)) {
                    $topic = get_topic($bb_post->topic_id);
                }
                if (!empty($topic->topic_title) && preg_match('/\\b' . $qitem . '/simU', $topic->topic_title)) {
                    $found = "topic title";
                    $bad = $item;
                    break;
                }
            }
        }
        if (!empty($bad)) {
            break;
        }
    }
    if (!empty($bad)) {
        if ($wall) {
            user_wall_delete_post($post_id, 2);
            $uri = bb_get_option('uri') . "bb-admin/admin-base.php?post_status=2&plugin=user_wall_admin&user-wall-recent=1";
        } else {
            bb_delete_post($post_id, 2);
            if (empty($topic)) {
                $topic = get_topic($bb_post->topic_id);
            }
            if (empty($topic->topic_posts)) {
                bb_delete_topic($topic->topic_id, 2);
            }
            // if no posts in topic, also set topic to spam
            $uri = bb_get_option('uri') . 'bb-admin/' . (defined('BACKPRESS_PATH') ? '' : 'content-') . 'posts.php?post_status=2';
        }
        if (empty($blocklist['email'])) {
            return;
        }
        (array) ($email = explode("\r\n", $blocklist['email']));
        $message = "The blocklist has been triggered... \r\n\r\n";
        $message .= "Matching entry " . '"' . $bad . '"' . " found in {$found}.\r\n";
        $message .= "{$uri}\r\n\r\n";
        $message .= sprintf(__('Username: %s'), stripslashes($user->user_login)) . "\r\n";
        $message .= sprintf(__('Profile: %s'), get_user_profile_link($user->ID)) . "\r\n";
        $message .= sprintf(__('Email: %s'), stripslashes($user->user_email)) . "\r\n";
        $message .= sprintf(__('IP address: %s'), $_SERVER['REMOTE_ADDR']) . "\r\n";
        $message .= sprintf(__('Agent: %s'), substr(stripslashes($_SERVER["HTTP_USER_AGENT"]), 0, 255)) . "\r\n\r\n";
        foreach ($email as $to) {
            if (empty($to) || strlen($to) < 8) {
                continue;
            }
            @bb_mail($to, "[" . bb_get_option('name') . "] blocklist triggered", $message);
        }
    }
}
Example #4
0
/**
 * Sends notification emails for new posts.
 *
 * Gets new post's ID and check if there are subscribed
 * user to that topic, and if there are, send notifications
 *
 * @since 1.1
 *
 * @param int $post_id ID of new post
 */
function bb_notify_subscribers($post_id)
{
    global $bbdb, $bb_ksd_pre_post_status;
    if (!empty($bb_ksd_pre_post_status)) {
        return false;
    }
    if (!($post = bb_get_post($post_id))) {
        return false;
    }
    if (!($topic = get_topic($post->topic_id))) {
        return false;
    }
    $post_id = $post->post_id;
    $topic_id = $topic->topic_id;
    if (!($poster_name = get_post_author($post_id))) {
        return false;
    }
    do_action('bb_pre_notify_subscribers', $post_id, $topic_id);
    if (!($user_ids = $bbdb->get_col($bbdb->prepare("SELECT `{$bbdb->term_relationships}`.`object_id`\n\t\tFROM {$bbdb->term_relationships}, {$bbdb->term_taxonomy}, {$bbdb->terms}\n\t\tWHERE `{$bbdb->term_relationships}`.`term_taxonomy_id` = `{$bbdb->term_taxonomy}`.`term_taxonomy_id`\n\t\tAND `{$bbdb->term_taxonomy}`.`term_id` = `{$bbdb->terms}`.`term_id`\n\t\tAND `{$bbdb->term_taxonomy}`.`taxonomy` = 'bb_subscribe'\n\t\tAND `{$bbdb->terms}`.`slug` = 'topic-%d'", $topic_id)))) {
        return false;
    }
    foreach ((array) $user_ids as $user_id) {
        if ($user_id == $post->poster_id) {
            continue;
        }
        // don't send notifications to the person who made the post
        $user = bb_get_user($user_id);
        if (!($message = apply_filters('bb_subscription_mail_message', __("%1\$s wrote:\n\n%2\$s\n\nRead this post on the forums: %3\$s\n\nYou're getting this email because you subscribed to '%4\$s.'\nPlease click the link above, login, and click 'Unsubscribe' at the top of the page to stop receiving emails from this topic."), $post_id, $topic_id))) {
            continue;
        }
        /* For plugins */
        bb_mail($user->user_email, apply_filters('bb_subscription_mail_title', '[' . bb_get_option('name') . '] ' . $topic->topic_title, $post_id, $topic_id), sprintf($message, $poster_name, strip_tags($post->post_text), get_post_link($post_id), strip_tags($topic->topic_title)));
    }
    do_action('bb_post_notify_subscribers', $post_id, $topic_id);
}
function approve_user_registration_reject_user($user_id)
{
    global $bbdb;
    $user = defined('BACKPRESS_PATH') ? new BP_User($user_id) : new BB_User($user_id);
    $user->remove_cap('waitingapproval');
    $user->remove_cap('member');
    $user->add_cap('blocked');
    $user = bb_get_user($user_id);
    $message = __("Your user %1\$s has been rejected by the administrator. This may be due to an unsuitable username, or perhaps your email address looks suspicious. If you think you have been rejected in error please contact the site administrator.");
    return bb_mail(bb_get_user_email($user->ID), bb_get_option('name') . ': ' . __('User Rejected'), sprintf($message, $user->user_login));
}
/**
 * Sends an email with the user's new password
 *
 * {@internal Missing Long Description}}
 *
 * @since 0.7.2
 * @global bbdb $bbdb {@internal Not used}}
 *
 * @param int|string $user
 * @param string $pass
 * @return bool
 */
function bb_send_pass($user, $pass)
{
    if (!($user = bb_get_user($user))) {
        return false;
    }
    $message = __("Your username is: %1\$s \nYour password is: %2\$s \nYou can now log in: %3\$s \n\nEnjoy!");
    return bb_mail(bb_get_user_email($user->ID), bb_get_option('name') . ': ' . __('Password'), sprintf($message, $user->user_login, $pass, bb_get_uri(null, null, BB_URI_CONTEXT_TEXT)));
}