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"'))); }
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'; } } }
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; ///} }
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'); } }
} 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');