예제 #1
0
 /**
  * The main page handler, outputs a 1x1 pixel image.
  */
 public function get()
 {
     if ($t = Request::get('t', 'encrypted')) {
         // Track an encrypted link.
         if (!Tracker::trackLink($t)) {
             Logger::error('Failed to track encrypted link: ' . Encryption::aesDecrypt($t, Configuration::get('tracker.key')));
         }
     } elseif (Configuration::get('tracker.allow_unencrypted') && ($tracker = Request::get('tracker', 'int'))) {
         // Track an unencrypted link.
         $user = Request::get('user', 'int') ?: ClientUser::createInstance()->id;
         $sub = Request::get('sub', 'int');
         Tracker::trackEventID($tracker, $sub, $user);
     }
     // Output a single pixel image.
     header('Content-Type: image/png');
     echo base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=');
     exit;
 }
예제 #2
0
 /**
  * Called whenever mysql returns an error executing a query.
  *
  * @param array $error
  *   The PDO error.
  * @param string $sql
  *   The original query.
  *
  * @throws Exception
  *   When a mysql error occurs.
  */
 public function errorHandler($error, $sql)
 {
     $errors = array();
     // Add a header.
     $errors[] = "MYSQL ERROR ({$error['0']}:{$error['1']}): {$error['2']}";
     // Add the full query.
     $errors[] = $sql;
     // Show the stack trace.
     $backtrace = debug_backtrace();
     foreach ($backtrace as $call) {
         if (empty($call['file'])) {
             $errors[] = 'Called from: ' . $call['class'] . ' : ' . $call['function'];
         } elseif (!preg_match('/class_database\\.php$/', $call['file'])) {
             $errors[] = 'Called from: ' . $call['file'] . ' : ' . $call['line'];
         }
     }
     // Show actual mysql error.
     $errors[] = $error[2];
     if ($this->verbose) {
         // Add a footer.
         // @todo change this so it doesn't require an input.
         foreach ($errors as $e) {
             Messenger::error($e);
         }
         throw new Exception("***** MYSQL ERROR *****");
     } else {
         foreach ($errors as $e) {
             Logger::error($e);
         }
         Logger::error($sql);
     }
     exit;
 }