function admin_form(&$qa_content)
 {
     //	Process form input
     $saved = false;
     if (qa_clicked('event_logger_save_button')) {
         qa_opt('event_logger_to_database', (int) qa_post_text('event_logger_to_database_field'));
         qa_opt('event_logger_to_files', qa_post_text('event_logger_to_files_field'));
         qa_opt('event_logger_directory', qa_post_text('event_logger_directory_field'));
         qa_opt('event_logger_hide_header', !qa_post_text('event_logger_hide_header_field'));
         $saved = true;
         //	Create the database table if database logging was switched on
         if (qa_opt('event_logger_to_database')) {
             require_once QA_INCLUDE_DIR . 'qa-app-users.php';
             require_once QA_INCLUDE_DIR . 'qa-db-maxima.php';
             qa_db_query_sub('CREATE TABLE IF NOT EXISTS ^eventlog (' . 'datetime DATETIME NOT NULL,' . 'ipaddress VARCHAR (15) CHARACTER SET ascii,' . 'userid ' . qa_get_mysql_user_column_type() . ',' . 'handle VARCHAR(' . QA_DB_MAX_HANDLE_LENGTH . '),' . 'cookieid BIGINT UNSIGNED,' . 'event VARCHAR (20) CHARACTER SET ascii NOT NULL,' . 'params VARCHAR (800) NOT NULL,' . 'KEY datetime (datetime),' . 'KEY ipaddress (ipaddress),' . 'KEY userid (userid),' . 'KEY event (event)' . ') ENGINE=MyISAM DEFAULT CHARSET=utf8');
         }
     }
     //	Check the validity of the currently entered directory (if any)
     $directory = qa_opt('event_logger_directory');
     $note = null;
     $error = null;
     if (!strlen($directory)) {
         $note = 'Please specify a directory that is writable by the web server.';
     } elseif (!file_exists($directory)) {
         $error = 'This directory cannot be found. Please enter the full path.';
     } elseif (!is_dir($directory)) {
         $error = 'This is a file. Please enter the full path of a directory.';
     } elseif (!is_writable($directory)) {
         $error = 'This directory is not writable by the web server. Please choose a different directory, use chown/chmod to change permissions, or contact your web hosting company for assistance.';
     }
     //	Create the form for display
     qa_set_display_rules($qa_content, array('event_logger_directory_display' => 'event_logger_to_files_field', 'event_logger_hide_header_display' => 'event_logger_to_files_field'));
     return array('ok' => $saved && !isset($error) ? 'Event log settings saved' : null, 'fields' => array(array('label' => 'Log events to <code>' . QA_MYSQL_TABLE_PREFIX . 'eventlog</code> database table', 'tags' => 'NAME="event_logger_to_database_field"', 'value' => qa_opt('event_logger_to_database'), 'type' => 'checkbox'), array('label' => 'Log events to daily log files', 'tags' => 'NAME="event_logger_to_files_field" ID="event_logger_to_files_field"', 'value' => qa_opt('event_logger_to_files'), 'type' => 'checkbox'), array('id' => 'event_logger_directory_display', 'label' => 'Directory for log files (enter full path):', 'value' => qa_html($directory), 'tags' => 'NAME="event_logger_directory_field"', 'note' => $note, 'error' => $error), array('id' => 'event_logger_hide_header_display', 'label' => 'Include header lines at top of each log file', 'type' => 'checkbox', 'tags' => 'NAME="event_logger_hide_header_field"', 'value' => !qa_opt('event_logger_hide_header'))), 'buttons' => array(array('label' => 'Save Changes', 'tags' => 'NAME="event_logger_save_button"')));
 }
示例#2
0
 public function init_queries($table_list)
 {
     if (qa_opt('event_logger_to_database')) {
         $tablename = qa_db_add_table_prefix('eventlog');
         if (!in_array($tablename, $table_list)) {
             require_once QA_INCLUDE_DIR . 'app/users.php';
             require_once QA_INCLUDE_DIR . 'db/maxima.php';
             return 'CREATE TABLE ^eventlog (' . 'datetime DATETIME NOT NULL,' . 'ipaddress VARCHAR (15) CHARACTER SET ascii,' . 'userid ' . qa_get_mysql_user_column_type() . ',' . 'handle VARCHAR(' . QA_DB_MAX_HANDLE_LENGTH . '),' . 'cookieid BIGINT UNSIGNED,' . 'event VARCHAR (20) CHARACTER SET ascii NOT NULL,' . 'params VARCHAR (800) NOT NULL,' . 'KEY datetime (datetime),' . 'KEY ipaddress (ipaddress),' . 'KEY userid (userid),' . 'KEY event (event)' . ') ENGINE=MyISAM DEFAULT CHARSET=utf8';
         }
     }
 }
示例#3
0
 function init_queries($tableslc)
 {
     //qw_check_for_new_version(false);
     include_once QA_INCLUDE_DIR . 'qa-app-users.php';
     //if(qa_get_logged_in_level() >= QA_USER_LEVEL_ADMIN){
     $queries = array();
     $queries = qw_apply_filter('init_queries', $queries, $tableslc);
     $tablename = qa_db_add_table_prefix('ra_userevent');
     if (!in_array($tablename, $tableslc)) {
         require_once QA_INCLUDE_DIR . 'qa-app-users.php';
         require_once QA_INCLUDE_DIR . 'qa-db-maxima.php';
         $queries[] = 'CREATE TABLE ^ra_userevent (' . 'id bigint(20) NOT NULL AUTO_INCREMENT,' . 'datetime DATETIME NOT NULL,' . 'userid ' . qa_get_mysql_user_column_type() . ',' . 'postid int(10) unsigned DEFAULT NULL,' . 'effecteduserid ' . qa_get_mysql_user_column_type() . ' unsigned DEFAULT NULL,' . 'event VARCHAR (20) CHARACTER SET utf8 NOT NULL,' . 'params text NOT NULL,' . '`read` tinyint(1) NOT NULL DEFAULT "0",' . 'PRIMARY KEY (id),' . 'KEY datetime (datetime),' . 'KEY userid (userid),' . 'KEY event (event)' . ') ENGINE=MyISAM DEFAULT CHARSET=utf8';
     }
     return $queries;
     ///}
 }
示例#4
0
function qa_db_user_column_type_verify()
{
    $coltype = strtoupper(qa_get_mysql_user_column_type());
    switch ($coltype) {
        case 'SMALLINT':
        case 'MEDIUMINT':
        case 'INT':
        case 'BIGINT':
        case 'SMALLINT UNSIGNED':
        case 'MEDIUMINT UNSIGNED':
        case 'INT UNSIGNED':
        case 'BIGINT UNSIGNED':
            // these are all OK
            break;
        default:
            if (!preg_match('/VARCHAR\\([0-9]+\\)/', $coltype)) {
                qa_fatal_error('Specified user column type is not one of allowed values - please read documentation');
            }
            break;
    }
    return $coltype;
}
    function init_queries($tableslc)
    {
        $tablename = qa_db_add_table_prefix('eventlog');
        // check if event logger has been initialized already (check for one of the options and existing table)
        require_once QA_INCLUDE_DIR . 'qa-app-options.php';
        if (qa_opt('event_logger_to_database') && in_array($tablename, $tableslc)) {
            // options exist, but check if really enabled
            if (qa_opt('event_logger_to_database') == '' && qa_opt('event_logger_to_files') == '') {
                // enabled database logging
                qa_opt('event_logger_to_database', 1);
            }
        } else {
            // not enabled, let's enable the event logger
            // set option values for event logger
            qa_opt('event_logger_to_database', 1);
            qa_opt('event_logger_to_files', '');
            qa_opt('event_logger_directory', '');
            qa_opt('event_logger_hide_header', '');
            if (!in_array($tablename, $tableslc)) {
                require_once QA_INCLUDE_DIR . 'qa-app-users.php';
                require_once QA_INCLUDE_DIR . 'qa-db-maxima.php';
                return 'CREATE TABLE IF NOT EXISTS ^eventlog (' . 'datetime DATETIME NOT NULL,' . 'ipaddress VARCHAR (15) CHARACTER SET ascii,' . 'userid ' . qa_get_mysql_user_column_type() . ',' . 'handle VARCHAR(' . QA_DB_MAX_HANDLE_LENGTH . '),' . 'cookieid BIGINT UNSIGNED,' . 'event VARCHAR (20) CHARACTER SET ascii NOT NULL,' . 'params VARCHAR (800) NOT NULL,' . 'KEY datetime (datetime),' . 'KEY ipaddress (ipaddress),' . 'KEY userid (userid),' . 'KEY event (event)' . ') ENGINE=MyISAM DEFAULT CHARSET=utf8';
            }
        }
        // memo: would be best to check if plugin is installed in qa-plugin folder or using plugin_exists()
        // however this functionality is not available in q2a v1.6.3
        // create table qa_usermeta which stores the last visit of each user
        $tablename2 = qa_db_add_table_prefix('usermeta');
        if (!in_array($tablename2, $tableslc)) {
            qa_db_query_sub('CREATE TABLE IF NOT EXISTS ^usermeta (
					meta_id bigint(20) unsigned NOT NULL AUTO_INCREMENT,
					user_id bigint(20) unsigned NOT NULL,
					meta_key varchar(255) DEFAULT NULL,
					meta_value longtext,
					PRIMARY KEY (meta_id),
					UNIQUE (user_id,meta_key)
					) ENGINE=MyISAM  DEFAULT CHARSET=utf8');
        }
    }
示例#6
0
}
if (is_resource(qa_db_connection(false)) && !@$pass_failure_from_install) {
    $check = qa_db_check_tables();
    // see where the database is at
    switch ($check) {
        case 'none':
            if (@$pass_failure_errno == 1146) {
                // don't show error if we're in installation process
                $errorhtml = '';
            }
            $errorhtml .= 'Welcome to Question2Answer. It\'s time to set up your database!';
            if (QA_FINAL_EXTERNAL_USERS) {
                if (defined('QA_FINAL_WORDPRESS_INTEGRATE_PATH')) {
                    $errorhtml .= "\n\nWhen you click below, your Question2Answer site will be set up to integrate with the users of your WordPress site <a href=\"" . qa_html(get_option('home')) . "\" target=\"_blank\">" . qa_html(get_option('blogname')) . "</a>. Please consult the online documentation for more information.";
                } else {
                    $errorhtml .= "\n\nWhen you click below, your Question2Answer site will be set up to integrate with your existing user database and management. Users will be referenced with database column type " . qa_html(qa_get_mysql_user_column_type()) . ". Please consult the online documentation for more information.";
                }
                $buttons = array('create' => 'Create Database');
            } else {
                $errorhtml .= "\n\nWhen you click below, your Question2Answer database will be set up to manage user identities and logins internally.\n\nIf you want to offer a single sign-on for an existing user base or website, please consult the online documentation before proceeding.";
                $buttons = array('create' => 'Create Database including User Management');
            }
            break;
        case 'old-version':
            if (!@$pass_failure_from_install) {
                $errorhtml = '';
            }
            // don't show error if we need to upgrade
            $errorhtml .= 'Your Question2Answer database needs to be upgraded for this version of the software.';
            // don't show error before this
            $buttons = array('upgrade' => 'Upgrade Database');