Ejemplo n.º 1
0
 function process_event($event, $userid, $handle, $cookieid, $params)
 {
     qw_do_action('qw_event_' . $event, $event, $userid, $handle, $cookieid, $params);
     if (qa_opt('event_logger_to_database')) {
         $paramstring = '';
         foreach ($params as $key => $value) {
             $value_to_text = $this->value_to_text($value, $key);
             $value = is_array($value) ? 'array(' . count($value) . ')' . "\t" . $value_to_text : $value_to_text;
             $paramstring .= (strlen($paramstring) ? "\t" : '') . $key . '=' . $value;
         }
         $paramstring = strtr($paramstring, "\n\r", '   ');
         qa_db_query_sub('INSERT INTO ^eventlog (datetime, ipaddress, userid, handle, cookieid, event, params) ' . 'VALUES (NOW(), $, $, $, #, $, $)', qa_remote_ip_address(), $userid, $handle, $cookieid, $event, $paramstring);
     }
     if (qa_opt('event_logger_to_files')) {
         //	Substitute some placeholders if certain information is missing
         if (!strlen($userid)) {
             $userid = 'no_userid';
         }
         if (!strlen($handle)) {
             $handle = 'no_handle';
         }
         if (!strlen($cookieid)) {
             $cookieid = 'no_cookieid';
         }
         $ip = qa_remote_ip_address();
         if (!strlen($ip)) {
             $ip = 'no_ipaddress';
         }
         //	Build the log file line to be written
         $fixedfields = array('Date' => date('Y\\-m\\-d'), 'Time' => date('H\\:i\\:s'), 'IPaddress' => $ip, 'UserID' => $userid, 'Username' => $handle, 'CookieID' => $cookieid, 'Event' => $event);
         $fields = $fixedfields;
         foreach ($params as $key => $value) {
             $fields['param_' . $key] = $key . '=' . $this->value_to_text($value, $key);
         }
         $string = implode("\t", $fields);
         //	Build the full path and file name
         $directory = qa_opt('event_logger_directory');
         if (substr($directory, -1) != '/') {
             $directory .= '/';
         }
         $filename = $directory . 'q2a-log-' . date('Y\\-m\\-d') . '.txt';
         //	Open, lock, write, unlock, close (to prevent interference between multiple writes)
         $exists = file_exists($filename);
         $file = @fopen($filename, 'a');
         if (is_resource($file)) {
             if (flock($file, LOCK_EX)) {
                 if (!$exists && filesize($filename) === 0 && !qa_opt('event_logger_hide_header')) {
                     $string = "Question2Answer " . QA_VERSION . " log file generated by Event Logger plugin.\n" . "This file is formatted as tab-delimited text with UTF-8 encoding.\n\n" . implode("\t", array_keys($fixedfields)) . "\textras...\n\n" . $string;
                 }
                 fwrite($file, $string . "\n");
                 flock($file, LOCK_UN);
             }
             fclose($file);
         }
     }
 }
Ejemplo n.º 2
0
 function UpdateVote($newevent, $postid, $userid, $params, $eventname, $value)
 {
     $effecteduserid = $this->GetUseridFromPost($postid);
     $posts = qa_db_read_all_values(qa_db_query_sub('SELECT params FROM ^ra_userevent WHERE postid=$ AND event=$', $postid, $newevent));
     if (!isset($effecteduserid)) {
         return;
     }
     // post from anonymous user
     if (count($posts) == 0) {
         // Add New Event
         if ($eventname != 'q_vote_nil' && $eventname != 'a_vote_nil' && $eventname != 'unfavorite') {
             $question = $this->GetQuestion($params);
             $params['qtitle'] = $question['title'];
             $params['qid'] = $question['postid'];
             $params['newvotes'] = $value;
             $params[$eventname] = 1;
             $this->AddEvent($postid, $userid, $effecteduserid, $params, $newevent);
             if (qw_check_pref_for_event($effecteduserid, $newevent, $all_preferences)) {
                 qw_do_action('user_event_' . $newevent, $postid, $userid, $effecteduserid, $params, $newevent);
             }
         }
     } else {
         $postparams = json_decode($posts[0], true);
         if ($eventname == 'q_vote_nil' || $eventname == 'a_vote_nil') {
             $netvotes = $this->GetVotesFromPost($postid);
             $params['newvotes'] = $netvotes;
             $diffrence = (int) $postparams['newvotes'] - (int) $netvotes;
             switch ($eventname) {
                 case 'q_vote_nil':
                     if ($diffrence == 1) {
                         //upvote cancelled
                         $params['q_vote_up'] = (int) $postparams['q_vote_up'] - 1;
                     } elseif ($diffrence == -1) {
                         //downvote cancelled
                         $params['q_vote_down'] = (int) $postparams['q_vote_down'] - 1;
                     }
                     break;
                 case 'a_vote_nil':
                     if ($diffrence == 1) {
                         //upvote cancelled
                         $params['a_vote_up'] = (int) $postparams['a_vote_up'] - 1;
                     } elseif ($diffrence == -1) {
                         //downvote cancelled
                         $params['a_vote_down'] = (int) $postparams['a_vote_down'] - 1;
                     }
                     break;
             }
         } else {
             if (isset($postparams[$eventname]) && ($eventname == 'favorite' || $eventname == 'unfavorite')) {
                 $params[$eventname] = (int) $postparams[$eventname] + $value;
             } else {
                 $params[$eventname] = (int) $postparams[$eventname] + 1;
                 $params['newvotes'] = (int) $postparams['newvotes'] + $value;
             }
         }
         foreach ($postparams as $key => $value) {
             if (!isset($params[$key])) {
                 $params[$key] = $value;
             }
         }
         $paramstring = $this->ParamToString($params);
         qa_db_query_sub("UPDATE ^ra_userevent SET datetime=NOW(), userid=\$, effecteduserid=\$, postid=\$, event=\$, params=\$ WHERE postid=\$ AND event=\$", $userid, $effecteduserid, $postid, $newevent, $paramstring, $postid, $newevent);
         if (qw_check_pref_for_event($effecteduserid, $newevent, $all_preferences)) {
             qw_do_action('user_event_' . $newevent, $postid, $userid, $effecteduserid, $params, $newevent);
         }
     }
 }
Ejemplo n.º 3
0
less_css('dude');
$context->ra_builder_css();
$css = qw_get_all_styles($context->template);
if (!empty($css)) {
    foreach ($css as $css_src) {
        if (isset($css_src['file']) && filter_var($css_src['file'], FILTER_VALIDATE_URL) !== FALSE) {
            echo '<link rel="stylesheet" type="text/css" href="' . $css_src['file'] . '"/>';
        }
    }
}
if (!empty($context->content['notices'])) {
    echo '<style><!--', '.qa-body-js-on .qa-notice {display:none;}', '//--></style>';
}
//register a hook
if (qw_hook_exist('head_script')) {
    echo qw_do_action('head_script', $context);
}
$scripts = qw_get_all_scripts($context->template);
echo '<script> ajax_url = "' . QW_CONTROL_URL . '/ajax.php"; theme_url = "' . Q_THEME_URL . '"; site_url = "' . QW_BASE_URL . '";</script>';
if (!empty($scripts)) {
    foreach ($scripts as $script_src) {
        if (filter_var($script_src['file'], FILTER_VALIDATE_URL) !== FALSE) {
            echo '<script type="text/javascript" src="' . $script_src['file'] . '"></script>';
        }
    }
}
?>
		<link rel="stylesheet" type="text/css" href="<?php 
echo DUDE_THEME_URL;
?>
/font/style.css">
Ejemplo n.º 4
0
<?php

//	Output this header as early as possible
header('Content-Type: text/plain; charset=utf-8');
//	Ensure no PHP errors are shown in the Ajax response
//@ini_set('display_errors', 0);
//	Load the Q2A base file which sets up a bunch of crucial functions
require_once '../../qa-include/qa-base.php';
qa_report_process_stage('init_ajax');
//	Get general Ajax parameters from the POST payload, and clear $_GET
qa_set_request(qa_post_text('qa_request'), qa_post_text('qa_root'));
require_once QA_INCLUDE_DIR . 'qa-app-users.php';
require_once QA_INCLUDE_DIR . 'qa-app-cookies.php';
require_once QA_INCLUDE_DIR . 'qa-app-votes.php';
require_once QA_INCLUDE_DIR . 'qa-app-format.php';
require_once QA_INCLUDE_DIR . 'qa-app-options.php';
require_once QA_INCLUDE_DIR . 'qa-db-selects.php';
if (isset($_REQUEST['action'])) {
    $action = 'qw_ajax_' . $_REQUEST['action'];
    qw_do_action($action, array());
}