ajim/ajim.php
author Dan
Sat, 08 Dec 2007 13:25:13 -0500
changeset 1 7785b3e99977
parent 0 2f9b67edc9b1
child 2 b0e58c67304b
permissions -rw-r--r--
Updated for compatibility with newer Enano releases. Oops.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
     1
<?php
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
     2
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
     3
/**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
     4
 * AjIM - the Asynchronous Javascript Instant Messenger
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
     5
 * A shoutbox/chatbox framework that uses PHP, AJAX, MySQL, and Javascript
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
     6
 * Version: 1.0 RC 1
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
     7
 * Copyright (C) 2006-2007 Dan Fuhry
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
     8
 *
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
     9
 * This program is Free Software; you can redistribute and/or modify it under the terms of the GNU General Public License
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    10
 * as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    11
 *
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    12
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    13
 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. 
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    14
 */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    15
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    16
error_reporting(E_ALL);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    17
class ajim {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    18
  var $table_prefix, $conn, $id, $admin, $iface, $prune, $formatfunc, $config, $bad_words;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    19
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    20
   * Die and be friendly about it.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    21
   * @param string $text - should be the text to show to the user, include mysql_error() value if applicable
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    22
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    23
  function kill($text) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    24
    die('AjIM: Database error<br />'.$text);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    25
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    26
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    27
   * Make a SQL query. This function contains some error correction that performs automatic database upgrades if needed.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    28
   * @param string $q - The query text to send to MySQL.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    29
   * @return resource - or, kills the connection and bails out if the query failed
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    30
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    31
  function sql($q) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    32
    $r = mysql_query($q, $this->conn);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    33
    if(!$r)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    34
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    35
      if(strstr(mysql_error(), 'Unknown column \'time_id\''))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    36
      {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    37
        $this->sql('ALTER TABLE '.$this->table_prefix.'ajim ADD COLUMN time_id int(11) NOT NULL DEFAULT 0;');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    38
        $r = mysql_query($q, $this->conn);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    39
      }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    40
      elseif(strstr(mysql_error(), 'Unknown column \'sid\''))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    41
      {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    42
        $this->sql('ALTER TABLE '.$this->table_prefix.'ajim ADD COLUMN sid varchar(40) NOT NULL DEFAULT \'\';');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    43
        $r = mysql_query($q, $this->conn);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    44
      }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    45
      elseif(strstr(mysql_error(), 'Unknown column \'ip_addr\''))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    46
      {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    47
        $this->sql('ALTER TABLE '.$this->table_prefix.'ajim ADD COLUMN ip_addr varchar(15) NOT NULL DEFAULT \'\';');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    48
        $r = mysql_query($q, $this->conn);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    49
      }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    50
      $this->kill('Error during query:<br /><pre>'.htmlspecialchars($q).'</pre><br />MySQL said: '.mysql_error().'<br /><br />Depending on the error, AjIM may be able to automatically repair it. Just hang tight for about ten seconds. Whatever you do, don\'t close this browser window!');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    51
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    52
    return $r;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    53
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    54
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    55
   * Get the user's SID (unique ID used for editing authorization) or generate a new one.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    56
   * @return string
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    57
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    58
  function get_sid()
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    59
  {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    60
    // Tag the user with a unique ID that can be used to edit posts
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    61
    // This is used to essentially track users, but only for the purpose of letting them edit posts
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    62
    if(!isset($_COOKIE['ajim_sid']))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    63
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    64
      $hash = sha1(microtime());
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    65
      setcookie('ajim_sid', $hash, time()+60*60*24*365); // Cookies last for one year
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    66
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    67
    else
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    68
      $hash = $_COOKIE['ajim_sid'];
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    69
      
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    70
    return $hash;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    71
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    72
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    73
   * Set the default value for a configuration field.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    74
   * @param string $key - name of the configuration key
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    75
   * @param string $value - the default value
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    76
   * @param array $confarray - needs to be the array passed as the first param on the constructor
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    77
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    78
  function config_default($key, $value, &$confarray)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    79
  {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    80
    if(!isset($confarray[$key]))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    81
      $confarray[$key] = $value;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    82
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    83
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    84
   * Set up some basic vars and a database connection
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    85
   * @param array $config - a configuration array, with either the key db_connection_handle (a valid MySQL connection resource) or the keys dbhost, dbname, dbuser, and dbpass
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    86
   * @param string $table_prefix - the text prepended to the "ajim" table, should match ^([A-z0-9_]+)$
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    87
   * @param string $handler - URL to the backend script, for example in Enano this would be the plugin file plugins/ajim.php
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    88
   * @param string $admin - string containing the MD5 hash of the user's password, IF AND ONLY IF the user should be allowed to use the moderation function. In all other cases this should be false.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    89
   * @param string $id - used to carry over the randomly generated instance ID between requests. Should be false if the class is being initialized for displaying the inital HTML, in all other cases should be the value of the class variable AjIM::$id
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    90
   * @param bool $can_post - true if the user is allowed to post, false otherwise. Defaults to true.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    91
   * @param mixed $formatfunc - a string containing the name of a function that can be called to format text before posts are sent to the user. If you need to call a class method, this should be an array with key 0 being the class name and key 1 being the method name.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    92
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    93
  function __construct($config, $table_prefix, $handler, $admin = false, $id = false, $can_post = true, $formatfunc = false) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    94
    // CONFIGURATION
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    95
    // $this->prune: a limit on the number of posts in the chat box. Usually this should be set to 40 or 50. Default is 40.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    96
    // Set to -1 to disable pruning.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    97
    $this->prune = -1;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    98
    
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
    99
    $this->get_sid();
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   100
    
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   101
    if(!is_array($config))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   102
      $this->kill('$config passed to the AjIM constructor should be an associative array with either the keys dbhost, dbname, dbuser, and dbpass, or the key db_connection_handle.');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   103
    if(isset($config['db_connection_handle']))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   104
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   105
      if(!is_resource($config['db_connection_handle'])) $this->kill('$config[\'db_connection_handle\'] is not a valid resource');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   106
      $this->conn = $config['db_connection_handle'];
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   107
      if(!$this->conn) $this->kill('Error verifying database connection: '.mysql_error());
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   108
    } elseif(isset($config['dbhost']) && isset($config['dbname']) && isset($config['dbuser']) && isset($config['dbpass'])) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   109
      $this->conn = mysql_connect($config['dbhost'], $config['dbuser'], $config['dbpass']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   110
      if(!$this->conn) $this->kill('Error connecting to the database: '.mysql_error());
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   111
      $this->sql('USE '.$config['dbname']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   112
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   113
    
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   114
    $this->bad_words = Array('viagra', 'phentermine', 'pharma', 'rolex', 'genital', 'penis', 'ranitidine', 'prozac', 'acetaminophen', 'acyclovir', 'ionamin', 'denavir', 'nizoral', 'zoloft', 'estradiol', 'didrex', 'aciphex', 'seasonale', 'allegra', 'lexapro', 'famvir', 'propecia', 'nasacort');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   115
    if(isset($config['bad_words']) && is_array($config['bad_words']))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   116
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   117
      $this->bad_words = array_values(array_merge($this->bad_words, $config['bad_words']));
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   118
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   119
    
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   120
    // Don't change these values here - change them by passing values to the config array in this constructor's params!
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   121
    $this->config_default('sb_color_background', '#FFFFFF', $config);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   122
    $this->config_default('sb_color_foreground', '#000000', $config);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   123
    $this->config_default('sb_color_editlink',   '#00C000', $config);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   124
    $this->config_default('sb_color_deletelink', '#FF0000', $config);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   125
    $this->config_default('sb_color_userlink',   '#0000FF', $config);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   126
    
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   127
    $this->config = $config;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   128
    
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   129
    if($id) $this->id = $id;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   130
    else    $this->id = 'ajim_'.time();
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   131
    $this->admin = $admin;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   132
    $this->formatfunc = $formatfunc;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   133
    $this->can_post = $can_post;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   134
    $this->table_prefix = $table_prefix;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   135
    $this->sql('CREATE TABLE IF NOT EXISTS '.$this->table_prefix.'ajim(
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   136
        post_id mediumint(8) NOT NULL auto_increment,
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   137
        name text,
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   138
        website text,
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   139
        post text,
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   140
        time_id int(11) NOT NULL DEFAULT 0,
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   141
        PRIMARY KEY ( post_id )
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   142
      );');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   143
    $this->iface = $handler;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   144
    if(isset($_GET['ajimmode'])) $this->handler();
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   145
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   146
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   147
   * A dummy function used for PHP4 compatibility.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   148
   * @see AjIM::__construct()
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   149
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   150
  function ajim($config, $table_prefix, $handler, $admin = false, $id = false, $can_post = true, $formatfunc = false) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   151
    $this->__construct($config, $table_prefix, $handler, $admin, $id, $can_post, $formatfunc);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   152
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   153
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   154
   * Generates the initial HTML UI to be sent to the user, used internally.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   155
   * @access private
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   156
   * @param string $ajimPath - path to the AjIM connector (not this file), relative to document root, with initial slash.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   157
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   158
  function html($ajimPath) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   159
    
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   160
    $enstr = $this->can_post ? '' : ' disabled="disabled"';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   161
    $html = '';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   162
    $html .= '<script type="text/javascript" src="'.$ajimPath.'/ajim.php?js&amp;id='.$this->id.'&amp;path='.urlencode($this->iface).'&amp;pfx='.$this->table_prefix.'"></script>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   163
    if($this->admin) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   164
    $html.= '<script type="text/javascript" src="'.$ajimPath.'/ajim.php?jsadmin&amp;id='.$this->id.'&amp;path='.urlencode($this->iface).'&amp;pfx='.$this->table_prefix.'"></script>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   165
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   166
    $html .= '<div id="'.$this->id.'_master" style="padding: 5%; width: 90%;">
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   167
             <div id="'.$this->id.'_c" style="text-align: center; color: '.$this->config['sb_color_foreground'].';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   168
             font-family: arial, sans-serif; font-size: 7pt; background-color: '.$this->config['sb_color_background'].';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   169
             text-align: left; border: 1px solid #000000; border-bottom: none; margin-bottom: 0; padding: 5%; width: 90%;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   170
             height: 200px; clip: rect(0px,auto,200px,0px); overflow: auto;"><noscript><p>You need to have JavaScript support to use this shoutbox.</p></noscript></div>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   171
      // This is the post form div
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   172
    if($this->can_post)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   173
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   174
    $html .= '<div style="font-family: arial; font-size: 7pt; margin-top: 0; border: 1px solid #000000; border-top-width: 0; width: 100%;">
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   175
            <form action="#" onsubmit="'.$this->id.'_form(); return false;" method="get">
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   176
             <table border="0" style="margin: 0; padding: 0; width: 90%;">
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   177
              <tr><td><span style="font-family: arial; font-size: 7pt; ">Name:</span></td>   <td><input style="font-family: arial; font-size: 7pt; border: 1px solid #000; height: 15px; width: 65px; padding: 1px;" id="'.$this->id.'_name" name="name"'.$enstr.' /></td></tr>
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   178
              <tr><td><span style="font-family: arial; font-size: 7pt; ">Website:</span></td><td><input style="font-family: arial; font-size: 7pt; border: 1px solid #000; height: 15px; width: 65px; padding: 1px;" id="'.$this->id.'_website" name="website"'.$enstr.' /></td></tr>
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   179
              <tr><td colspan="2"><span style="font-family: arial; font-size: 7pt; ">Message:</span></td></tr>
1
7785b3e99977 Updated for compatibility with newer Enano releases. Oops.
Dan
parents: 0
diff changeset
   180
              <tr><td colspan="2"><textarea'.$enstr.' rows="2" cols="16" style="width: auto; margin: 0 auto;" id="'.$this->id.'_post" name="post"></textarea></td></tr>
0
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   181
              <tr><td colspan="2" align="center"><input'.$enstr.' type="submit" value="Submit post" /><br />
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   182
              <span style="font-family: arial; font-size: 6pt; color: #000000;">AjIM powered</span></td></tr>
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   183
              ';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   184
    $html .= '</table>
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   185
            </form>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   186
    if($this->admin) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   187
      $html .= '<table border="0" style="margin: 0; padding: 0; width: 90%;" align="center"><tr><td colspan="2" align="center"><span id="'.$this->id.'_admin"><a href="#" onclick="'.$this->id.'_prompt(); return false;">Administration</a></span></td></tr></table>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   188
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   189
    $html.='</div></div>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   190
    } else {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   191
      $html .= '<div style="font-family: arial; font-size: 7pt; margin: 5px; margin-top: 0; border: 1px solid #000000; border-top: none;">';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   192
      if(isset($this->config['cant_post_notice'])) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   193
        $html .= '<div style="margin: 0; padding: 5px;">'.$this->config['cant_post_notice'].'</div>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   194
      }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   195
      $html .= '</div></div>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   196
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   197
    $html.='<script type="text/javascript">
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   198
    document.getElementById(\''.$this->id.'_c\').innerHTML = unescape(\'%3Cdiv align="center" style="width:95%;"%3EInitializing...%3C\/div%3E\');';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   199
    if($this->can_post) $html .= 'if('.$this->id.'readCookie("ajim_password") && ( typeof "'.$this->id.'_login_bin" == "string" || typeof "'.$this->id.'_login_bin" == "function" )) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   200
      '.$this->id.'_login_bin('.$this->id.'readCookie("ajim_password"));
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   201
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   202
    if('.$this->id.'readCookie("ajim_name")) document.getElementById("'.$this->id.'_name").value = '.$this->id.'readCookie("ajim_name");
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   203
    if('.$this->id.'readCookie("ajim_website")) document.getElementById("'.$this->id.'_website").value = '.$this->id.'readCookie("ajim_website");';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   204
    $html .= ''.$this->id.'_refresh();
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   205
    </script>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   206
    
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   207
    return $html;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   208
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   209
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   210
   * Kills the database connection
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   211
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   212
  function destroy() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   213
    mysql_close($this->conn);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   214
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   215
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   216
   * Strips all traces of HTML, XML, and PHP from text, and prepares it for being inserted into a MySQL database.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   217
   * @access private
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   218
   * @param string $text - the text to sanitize
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   219
   * @return string
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   220
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   221
  function sanitize($text) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   222
    $text = rawurldecode($text);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   223
    $text = preg_replace('#<(.*?)>#is', '&lt;\\1&gt;', $text);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   224
    $text = str_replace("\n", '<br />', $text);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   225
    $text = mysql_real_escape_string($text);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   226
    return $text;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   227
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   228
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   229
   * Scrutinizes a string $text for any traces of the word $word, returns true if the text is clean.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   230
   * For example, if $word is "viagra" and the text contains "\/|@6r/\" this returns false, else you would get true.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   231
   * @access private
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   232
   * @param string $text - the text to check
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   233
   * @param string $word - word to look for.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   234
   * @return bool
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   235
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   236
  function spamcheck($text, $word)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   237
  {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   238
    // build an array, with each key containing one letter (equiv. to str_split() in PHP 5)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   239
    $chars = Array();
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   240
    for($i=0;$i<strlen($word);$i++)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   241
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   242
      $chars[] = substr($word, $i, 1);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   243
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   244
    // This is our rule list - all the known substitutions for a given letter (e.g. "\/" in place of "V", etc.), needs to be escaped for regex use
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   245
    $subs = Array(
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   246
      'a'=>'a|\/\\\\|@',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   247
      'b'=>'b|\|o',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   248
      'c'=>'c|\(|',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   249
      'd'=>'d|o\|',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   250
      'e'=>'e|3',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   251
      'f'=>'f',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   252
      'g'=>'g|6|9',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   253
      'h'=>'h|\|n',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   254
      'i'=>'i|\!|1|\|',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   255
      'j'=>'j|\!|1|\|',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   256
      'k'=>'k|\|<|\|&lt;',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   257
      'l'=>'l|\!|1|\|',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   258
      'm'=>'m|nn|rn',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   259
      'n'=>'n|h|u\\|\\\\\|',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   260
      'o'=>'o|\(\)|0|@',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   261
      'p'=>'p',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   262
      'q'=>'q',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   263
      'r'=>'r|\|\^',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   264
      's'=>'s',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   265
      't'=>'t|\+',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   266
      'u'=>'u|n',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   267
      'v'=>'v|\\\\\/', // "\/"
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   268
      'w'=>'w|vv|\\\\\/\\\\\/', // allows for "\/\/"
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   269
      'x'=>'x|><|&gt;<|>&lt;|&gt;&lt;',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   270
      'y'=>'y',
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   271
      'z'=>'z|\|\\\\\|' // |\|
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   272
      );
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   273
    $regex = '#([\s]){0,1}';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   274
    foreach($chars as $c)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   275
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   276
      $lc = strtolower($c);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   277
      if(isset($subs[$lc]))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   278
      {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   279
        $regex .= '('.$subs[$lc].')';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   280
      } else {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   281
        die('0 $subs['.$lc.'] is not set');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   282
        $regex .= preg_quote($c);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   283
      }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   284
      $regex .= '(.|)';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   285
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   286
    $regex .= '([\s]){0,1}#is';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   287
    //echo($word.': '.$regex.'<br />');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   288
    if(preg_match($regex, $text)) return false;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   289
    return true;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   290
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   291
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   292
   * Processes AJAX requests. Usually called if $_GET['ajimmode'] is set.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   293
   * @access private
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   294
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   295
  function handler() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   296
    if(isset($_GET['ajimmode'])) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   297
      switch($_GET['ajimmode']) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   298
      default:
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   299
        die('');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   300
        break;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   301
      case 'getsource':
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   302
      case 'getpost':
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   303
        if(!preg_match('#^([0-9]+)$#', $_GET['p'])) die('SQL injection attempt');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   304
        $q = $this->sql('SELECT post,sid,ip_addr FROM '.$this->table_prefix.'ajim WHERE post_id='.$_GET['p']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   305
        $r = mysql_fetch_assoc($q);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   306
        if( ( ( isset($_GET['ajim_auth']) && (!$this->admin || ($this->admin != $_GET['ajim_auth']) ) ) || !isset($_GET['ajim_auth']) ) && ( $this->get_sid() != $r['sid'] || $_SERVER['REMOTE_ADDR'] != $r['ip_addr'] ) ) die('Hacking attempt');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   307
        if($_GET['ajimmode']=='getpost')
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   308
          if($this->formatfunc)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   309
          {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   310
            $p = @call_user_func($this->formatfunc, $r['post']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   311
            if($p) $r['post'] = $p;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   312
            unset($p); // Free some memory
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   313
          }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   314
        echo $r['post'];
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   315
        break;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   316
      case "savepost":
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   317
        if(!preg_match('#^([0-9]+)$#', $_POST['p'])) die('SQL injection attempt');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   318
        $q = $this->sql('SELECT sid,ip_addr FROM '.$this->table_prefix.'ajim WHERE post_id='.$_POST['p']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   319
        $r = mysql_fetch_assoc($q);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   320
        if( ( ( isset($_POST['ajim_auth']) && (!$this->admin || ($this->admin != $_POST['ajim_auth']) ) ) || !isset($_POST['ajim_auth']) ) && ( $this->get_sid() != $r['sid'] || $_SERVER['REMOTE_ADDR'] != $r['ip_addr'] ) ) die('Hacking attempt');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   321
        $post = $this->sanitize($_POST['post']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   322
        $post = $this->make_clickable($post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   323
        $post = preg_replace('#_(.*?)_#is', '<i>\\1</i>', $post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   324
        $post = preg_replace('#\*(.*?)\*#is', '<b>\\1</b>', $post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   325
        $bad_words = Array('viagra', 'phentermine', 'pharma');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   326
        foreach($bad_words as $w)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   327
        {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   328
          die('0000 checking');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   329
          if(!$this->spamcheck($post, $w)) die('34567 <span style="color: red">The word "'.$w.'" has been detected in your message and as a result your post has been blocked.</span> Don\'t argue, that will only get you banned.');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   330
        }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   331
        if(!$this->can_post) die('Access to posting messages has been denied because the administrator has set that you must be logged into this website in order to post.');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   332
        
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   333
        $this->sql('UPDATE '.$this->table_prefix.'ajim SET post=\''.$post.'\' WHERE post_id='.$_POST['p'].';');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   334
        
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   335
        if($this->formatfunc)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   336
        {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   337
          $p = @call_user_func($this->formatfunc, $post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   338
          if($p) $post = $p;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   339
          unset($p); // Free some memory
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   340
        }    
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   341
        die($post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   342
        break;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   343
      case 'delete':
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   344
        if(!preg_match('#^([0-9]+)$#', $_POST['p'])) die('SQL injection attempt');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   345
        $q = $this->sql('SELECT sid,ip_addr FROM '.$this->table_prefix.'ajim WHERE post_id='.$_POST['p']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   346
        $r = mysql_fetch_assoc($q);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   347
        if( ( ( isset($_POST['ajim_auth']) && (!$this->admin || ($this->admin != $_POST['ajim_auth']) ) ) || !isset($_POST['ajim_auth']) ) && ( $this->get_sid() != $r['sid'] || $_SERVER['REMOTE_ADDR'] != $r['ip_addr'] ) ) die('Hacking attempt'); 
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   348
        $this->sql('DELETE FROM '.$this->table_prefix.'ajim WHERE post_id='.$_POST['p']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   349
        die('good');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   350
        break;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   351
      case 'post':
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   352
        if(!preg_match('#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)$#is', $_POST['website'])) $_POST['website']='';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   353
        // Now for a clever anti-spam trick: blacklist the words "viagra" and "phentermine" using one wicked regex:
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   354
        // #([\s]){1}(v|\\\\\/)(.*){1}(i|\||l|1)(.*){1}(a|@|\/\\\\)(.*){1}(g|6)(.*){1}r(.*){1}(a|@|\/\\\\)(\s){1}#is
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   355
        $name    = $this->sanitize($_POST['name']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   356
        $website = $this->sanitize($_POST['website']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   357
        $post    = $this->sanitize($_POST['post']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   358
        foreach($this->bad_words as $w)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   359
        {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   360
          if(!$this->spamcheck($post, $w)) die('<span style="color: red">The word "'.$w.'" has been detected in your message and as a result your post has been blocked.</span> Don\'t argue, that will only get you banned.');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   361
        }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   362
        $post = $this->make_clickable($post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   363
        $post = preg_replace('#_(.*?)_#is', '<i>\\1</i>', $post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   364
        $post = preg_replace('#\*(.*?)\*#is', '<b>\\1</b>', $post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   365
        if(!$this->can_post) die('Access to posting messages has been denied because the administrator has set that you must be logged into this website in order to post.');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   366
        $this->sql('INSERT INTO '.$this->table_prefix.'ajim ( name, website, post, time_id, sid, ip_addr ) VALUES(\''.$name.'\', \''.$website.'\', \''.$post.'\', '.time().', \''.mysql_real_escape_string($this->get_sid()).'\', \''.mysql_real_escape_string($_SERVER['REMOTE_ADDR']).'\');');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   367
      case 'view':
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   368
        // if(isset($_GET['ajim_auth']))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   369
        //   die('Auth: '.$_GET['ajim_auth']); // .'<br />Pw:   '.$this->admin);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   370
        if(isset($_GET['latest']) && ( isset($this->config['allow_looping']) && $this->config['allow_looping'] == true ))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   371
        {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   372
          // Determine max execution time
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   373
          $max_exec = intval(@ini_get('max_execution_time'));
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   374
          if(!$max_exec) $max_exec = 30;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   375
          $time_left = $max_exec - 1;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   376
        }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   377
        $q = $this->sql('SELECT name, website, post, post_id, time_id, sid, ip_addr FROM '.$this->table_prefix.'ajim ORDER BY post_id;');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   378
        if(mysql_num_rows($q) < 1) echo '0 <span style="color: #666666">No posts.</span>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   379
        else {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   380
          // Prune the table
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   381
          if($this->prune > 0) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   382
            $nr = mysql_num_rows($q);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   383
            $nr = $nr - $this->prune;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   384
            if($nr > 0) $this->sql('DELETE FROM '.$this->table_prefix.'ajim LIMIT '.$nr.';');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   385
          }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   386
          // Alright, what we want to do here is grab the entire table, load it into an array, and then display the posts in reverse order.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   387
          for($i = 1; $i<=mysql_num_rows($q); $i++) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   388
            $t[$i] = mysql_fetch_object($q);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   389
          }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   390
          
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   391
          $s = sizeof($t);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   392
          
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   393
          if(isset($_GET['latest']) && ( isset($this->config['allow_looping']) && $this->config['allow_looping'] == true ))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   394
          {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   395
            // When I was coding this, I immediately thought "use labels and goto!" Here's hoping, PHP6 :-)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   396
            $latest_from_user = intval($_GET['latest']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   397
            $latest_from_db   = intval($t[$s]->time_id);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   398
            while(true)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   399
            {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   400
              if($latest_from_user == $latest_from_db && $time_left > 5)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   401
              {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   402
                $time_left = $time_left - 5;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   403
                sleep(5);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   404
                mysql_free_result($q);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   405
                $q = $this->sql('SELECT name, website, post, post_id, time_id, sid, ip_addr FROM '.$this->table_prefix.'ajim ORDER BY post_id;');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   406
                $t = Array();
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   407
                for($i = 1; $i<=mysql_num_rows($q); $i++) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   408
                  $t[$i] = mysql_fetch_object($q);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   409
                }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   410
                $s = sizeof($t);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   411
                $latest_from_user = intval($_GET['latest']);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   412
                $latest_from_db   = intval($t[$s]->time_id);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   413
                //echo (string)$latest_from_db.'<br />';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   414
                //flush();
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   415
                //exit;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   416
                if($latest_from_user != $latest_from_db)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   417
                  break;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   418
                continue;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   419
              }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   420
              elseif($latest_from_user == $latest_from_db && $time_left < 5)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   421
              {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   422
                die('[E] No new posts');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   423
              }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   424
              break;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   425
            }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   426
          }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   427
          
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   428
          echo $t[$s]->time_id . ' ';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   429
          
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   430
          // This is my favorite array trick - it baffles everyone who looks at it :-D
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   431
          // What it does is the same as for($i=0;$i<sizeof($t);$i++), but it processes the
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   432
          // array in reverse order.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   433
          
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   434
          for($i = $s; $i > 0; $i--) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   435
            if($this->formatfunc)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   436
            {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   437
              $p = @call_user_func($this->formatfunc, $t[$i]->post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   438
              if($p) $t[$i]->post = $p;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   439
              unset($p); // Free some memory
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   440
              $good_tags = Array('b', 'i', 'u', 'br');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   441
              $gt = implode('|', $good_tags);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   442
              
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   443
              // Override any modifications that may have been made to the HTML
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   444
              $t[$i]->post = preg_replace('#&lt;('.$gt.')&gt;([^.]+)&lt;/\\1&gt;#is', '<\\1>\\2</\\1>', $t[$i]->post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   445
              $t[$i]->post = preg_replace('#&lt;('.$gt.')([ ]*?)/&gt;#is', '<\\1 />', $t[$i]->post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   446
              $t[$i]->post = preg_replace('#&lt;('.$gt.')&gt;#is', '<\\1 />', $t[$i]->post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   447
            }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   448
            echo '<div style="border-bottom: 1px solid #BBB; width: 98%;"><table border="0" cellspacing="0" cellpadding="0" width="100%"><tr><td><span style="font-weight: bold">';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   449
            if($t[$i]->website != '') echo '<a href="'.$t[$i]->website.'" style="color: #0000FF">'.$t[$i]->name.'</a>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   450
            else echo ''.$t[$i]->name.'';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   451
            echo '</span> ';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   452
            if( $this->can_post && ($t[$i]->sid == $this->get_sid() && $t[$i]->ip_addr == $_SERVER['REMOTE_ADDR'] ) || ( isset($_GET['ajim_auth']) && $_GET['ajim_auth']==$this->admin ) )
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   453
            echo '</td><td style="text-align: right"><a href="#" onclick="void('.$this->id.'_delete_post(\''.$t[$i]->post_id.'\')); return false;" style="color: '.$this->config['sb_color_deletelink'].'">Delete</a> <a href="javascript:void('.$this->id.'_edit_post(\''.$t[$i]->post_id.'\'));" id="'.$this->id.'_editbtn_'.$t[$i]->post_id.'" style="color: '.$this->config['sb_color_editlink'].'">Edit</a>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   454
            echo '</td></tr></table><span style="color: #CCC; font-style: italic;">Posted on '.date('n/j, g:ia', $t[$i]->time_id).'</span></div>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   455
            echo '<div style="border-bottom: 1px solid #CCC; width: 98%;" id="'.$this->id.'_post_'.$t[$i]->post_id.'">'.$t[$i]->post.'</div>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   456
            echo '<br />';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   457
          }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   458
        }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   459
        break;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   460
      case 'auth':
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   461
        if($_POST['ajim_auth']==$this->admin) echo 'good';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   462
        else echo 'The password you entered is invalid.';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   463
        break;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   464
      }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   465
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   466
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   467
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   468
  /**
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   469
   * Replace URLs within a block of text with anchors
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   470
   * Written by Nathan Codding, copyright (C) phpBB Group
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   471
   * @param string $text - the text to process
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   472
   * @return string
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   473
   */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   474
  function make_clickable($text)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   475
  {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   476
    $text = preg_replace('#(script|about|applet|activex|chrome):#is', "\\1&#058;", $text);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   477
    $ret = ' ' . $text;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   478
    $ret = preg_replace('#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is', '\\1<a href="\\2" target="_blank">\\2</a>', $ret);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   479
    $ret = preg_replace("#(^|[\ n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", '\\1<a href="http://\\2" target="_blank">\\2</a>', $ret);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   480
    $ret = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", '\\1<a href="mailto:\\2@\\3">\\2@\\3</a>', $ret);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   481
    $ret = substr($ret, 1);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   482
    return($ret);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   483
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   484
}
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   485
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   486
// The client-side javascript and CSS code
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   487
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   488
if(isset($_GET['js']) && isset($_GET['id']) && isset($_GET['path']) && isset($_GET['pfx'])) {
1
7785b3e99977 Updated for compatibility with newer Enano releases. Oops.
Dan
parents: 0
diff changeset
   489
  if ( !preg_match('/^([a-z0-9_]+)$/', $_GET['id']) )
7785b3e99977 Updated for compatibility with newer Enano releases. Oops.
Dan
parents: 0
diff changeset
   490
    die('XSS');
0
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   491
  header('Content-type: text/javascript');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   492
  ?>
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   493
  // <script>
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   494
  var <?php echo $_GET['id']; ?>id='<?php echo $_GET['id']; ?>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   495
  var path='<?php echo $_GET['path']; ?>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   496
  var pfx='<?php echo $_GET['pfx']; ?>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   497
  var authed = false; // Don't even try to hack this var; it contains the MD5 of the password that *you* enter, setting it to true will just botch up all the requests
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   498
                      // authed is always set to false unless your password has been verified by the server, and it is sent to the server with every request.
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   499
  var shift;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   500
  var <?php echo $_GET['id']; ?>editlist = new Array();
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   501
  var <?php echo $_GET['id']; ?>_latestpost = 0;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   502
  var <?php echo $_GET['id']; ?>_allowrequest = true;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   503
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   504
  var <?php echo $_GET['id']; ?>_refcount = 0;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   505
  var <?php echo $_GET['id']; ?>_refcount_current = 0;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   506
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   507
  var <?php echo $_GET['id']; ?>interval = setInterval('<?php echo $_GET['id']; ?>_refresh();', 5000);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   508
  var ajim_editlevels = 0;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   509
                      
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   510
  // Add the AjIM stylesheet to the HTML header
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   511
  var link = document.createElement('link');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   512
  link.href = path+'?title=null&css&id='+<?php echo $_GET['id']; ?>id+'&path='+path+'&pfx='+pfx+'&ajimmode=';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   513
  link.rel  = 'stylesheet';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   514
  link.type = 'text/css';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   515
  var head = document.getElementsByTagName('head');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   516
  head = head[0];
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   517
  head.appendChild(link);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   518
  
1
7785b3e99977 Updated for compatibility with newer Enano releases. Oops.
Dan
parents: 0
diff changeset
   519
  var <?php echo $_GET['id']; ?>_onload = function(e)
0
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   520
  {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   521
    if(document.getElementById('<?php echo $_GET['id']; ?>_post'))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   522
    {
1
7785b3e99977 Updated for compatibility with newer Enano releases. Oops.
Dan
parents: 0
diff changeset
   523
      document.getElementById('<?php echo $_GET['id']; ?>_post').onkeyup = <?php echo $_GET['id']; ?>_keyhandler;
0
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   524
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   525
  }
1
7785b3e99977 Updated for compatibility with newer Enano releases. Oops.
Dan
parents: 0
diff changeset
   526
  addOnloadHook(<?php echo $_GET['id']; ?>_onload);
0
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   527
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   528
  function <?php echo $_GET['id']; ?>readCookie(name) {var nameEQ = name + "=";var ca = document.cookie.split(';');for(var i=0;i < ca.length;i++){var c = ca[i];while (c.charAt(0)==' ') c = c.substring(1,c.length);if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);}return null;}
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   529
  function <?php echo $_GET['id']; ?>setCookie(name,value,days){if (days){var date = new Date();date.setTime(date.getTime()+(days*24*60*60*1000));var expires = "; expires="+date.toGMTString();}else var expires = "";document.cookie = name+"="+value+expires+"; path=/";}
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   530
  function <?php echo $_GET['id']; ?>eraseCookie(name) {createCookie(name,"",-1);}
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   531
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   532
  function strpos(haystack, needle)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   533
  {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   534
    if(typeof(haystack) != 'string') return false;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   535
    if(typeof(needle) != 'string')   return false;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   536
    len = needle.length;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   537
    for(i=0;i<haystack.length;i++)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   538
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   539
      if ( haystack.substr(i, len) == needle )
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   540
        return i;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   541
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   542
    return 0;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   543
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   544
                      
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   545
  function <?php echo $_GET['id']; ?>_newReq(what2call) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   546
    if (window.XMLHttpRequest) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   547
      request = new XMLHttpRequest();
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   548
    } else {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   549
      if (window.ActiveXObject) {           
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   550
        request = new ActiveXObject("Microsoft.XMLHTTP");
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   551
      } else {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   552
        alert('Your browser does not support AJAX. Get Firefox 2.0!');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   553
        return false;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   554
      }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   555
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   556
    request.onreadystatechange = what2call;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   557
    return request;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   558
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   559
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   560
  function <?php echo $_GET['id']; ?>_refresh(force) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   561
    <?php echo $_GET['id']; ?>_refcount++;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   562
    <?php echo $_GET['id']; ?>_refcount_current = <?php echo $_GET['id']; ?>_refcount;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   563
    if(!<?php echo $_GET['id']; ?>_allowrequest && !force)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   564
      return false;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   565
    <?php echo $_GET['id']; ?>_allowrequest = false;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   566
    var r = <?php echo $_GET['id']; ?>_newReq(function() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   567
       if(r.readyState == 4)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   568
       {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   569
         // Prevent an old request from taking over a more recent one
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   570
         if(<?php echo $_GET['id']; ?>_refcount > <?php echo $_GET['id']; ?>_refcount_current)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   571
           return;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   572
         if(r.responseText != '[E] No new posts')
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   573
         {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   574
           time = r.responseText.substr(0, strpos(r.responseText, ' '));
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   575
           <?php echo $_GET['id']; ?>_latestpost = parseInt(time);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   576
           text = r.responseText.substr(strpos(r.responseText, ' ')+1, r.responseText.length);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   577
           document.getElementById('<?php echo $_GET['id']; ?>_c').innerHTML = text;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   578
         }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   579
         <?php echo $_GET['id']; ?>_allowrequest = true;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   580
       }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   581
    });
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   582
    if(force)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   583
      latest = '';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   584
    else
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   585
      latest = '&latest='+<?php echo $_GET['id']; ?>_latestpost;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   586
    if(authed) r.open('GET', path+'?title=null&ajimmode=view&id='+<?php echo $_GET['id']; ?>id+'&pfx='+pfx+latest+'&ajim_auth='+authed, true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   587
    else       r.open('GET', path+'?title=null&ajimmode=view&id='+<?php echo $_GET['id']; ?>id+'&pfx='+pfx+latest, true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   588
    r.send(null);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   589
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   590
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   591
  function <?php echo $_GET['id']; ?>_submit(name, website, post) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   592
    var r = <?php echo $_GET['id']; ?>_newReq(function() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   593
       if(r.readyState == 4)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   594
       {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   595
         if(r.responseText != '[E] No new posts')
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   596
         {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   597
           if(parseInt(r.responseText.substr(0,1)) != 0)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   598
           {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   599
             time = r.responseText.substr(0, strpos(r.responseText, ' '));
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   600
             <?php echo $_GET['id']; ?>_latestpost = parseInt(time);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   601
             text = r.responseText.substr(strpos(r.responseText, ' ')+1, r.responseText.length);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   602
           }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   603
           else
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   604
           {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   605
             text = r.responseText;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   606
           }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   607
           document.getElementById('<?php echo $_GET['id']; ?>_c').innerHTML = text;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   608
         }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   609
       }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   610
    })
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   611
    if(authed) var parms = 'name='+name+'&website='+website+'&post='+post+'&ajim_auth='+authed;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   612
    else       var parms = 'name='+name+'&website='+website+'&post='+post;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   613
    r.open('POST', path+'?title=null&ajimmode=post&id='+<?php echo $_GET['id']; ?>id+'', true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   614
    r.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   615
    r.setRequestHeader("Content-length", parms.length);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   616
    r.setRequestHeader("Connection", "close");
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   617
    r.send(parms);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   618
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   619
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   620
  function <?php echo $_GET['id']; ?>_form() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   621
    var name = document.getElementById(<?php echo $_GET['id']; ?>id+'_name').value;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   622
    var website = document.getElementById(<?php echo $_GET['id']; ?>id+'_website').value;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   623
    var post = document.getElementById(<?php echo $_GET['id']; ?>id+'_post').value;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   624
    if(name.length < 1) { alert('Please enter your name.'); return; }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   625
    if(post.length < 1) { alert('Please enter a post.'); return; }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   626
    <?php echo $_GET['id']; ?>setCookie('ajim_name', name, 60*60*24*365*10);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   627
    <?php echo $_GET['id']; ?>setCookie('ajim_website', website, 60*60*24*365*10);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   628
    <?php echo $_GET['id']; ?>_submit(name, website, post);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   629
    document.getElementById(<?php echo $_GET['id']; ?>id+'_post').value = '';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   630
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   631
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   632
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   633
  function <?php echo $_GET['id']; ?>_keyhandler(e)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   634
  {
1
7785b3e99977 Updated for compatibility with newer Enano releases. Oops.
Dan
parents: 0
diff changeset
   635
    if ( !e )
7785b3e99977 Updated for compatibility with newer Enano releases. Oops.
Dan
parents: 0
diff changeset
   636
      return false;
7785b3e99977 Updated for compatibility with newer Enano releases. Oops.
Dan
parents: 0
diff changeset
   637
    if ( e.keyCode == 13 )
0
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   638
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   639
      val = document.getElementById(<?php echo $_GET['id']; ?>id+'_post').value;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   640
      if(!shift)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   641
      {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   642
        document.getElementById(<?php echo $_GET['id']; ?>id+'_post').value = val.substr(0, val.length - 1);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   643
        <?php echo $_GET['id']; ?>_form();
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   644
      }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   645
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   646
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   647
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   648
  function <?php echo $_GET['id']; ?>keysensor(event)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   649
  {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   650
    if (event.shiftKey==1)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   651
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   652
      shift = true;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   653
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   654
    else
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   655
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   656
      shift = false;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   657
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   658
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   659
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   660
  if(window.onkeydown)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   661
  {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   662
    var kttemp = window.onkeydown;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   663
    window.onkeydown = function(e) { kttemp(e); <?php echo $_GET['id']; ?>keysensor(e); }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   664
  } else {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   665
    window.onkeydown = function(e) { <?php echo $_GET['id']; ?>keysensor(e); }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   666
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   667
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   668
  if(window.onkeyup)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   669
  {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   670
    var kttemp = window.onkeyup;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   671
    window.onkeyup = function(e) { kttemp(e); <?php echo $_GET['id']; ?>keysensor(e); }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   672
  } else {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   673
    window.onkeyup = function(e) { <?php echo $_GET['id']; ?>keysensor(e); }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   674
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   675
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   676
  function <?php echo $_GET['id']; ?>_edit_post(pid)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   677
  {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   678
    if(<?php echo $_GET['id']; ?>editlist[pid])
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   679
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   680
      var r = <?php echo $_GET['id']; ?>_newReq(function() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   681
        if(r.readyState == 4) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   682
           document.getElementById('<?php echo $_GET['id']; ?>_post_'+pid).innerHTML = r.responseText;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   683
           document.getElementById('<?php echo $_GET['id']; ?>_editbtn_'+pid).innerHTML = 'Edit';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   684
           ajim_editlevels--;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   685
           <?php echo $_GET['id']; ?>editlist[pid] = false;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   686
           if(ajim_editlevels < 1)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   687
            {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   688
              <?php echo $_GET['id']; ?>interval = setInterval('<?php echo $_GET['id']; ?>_refresh();', 5000);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   689
            }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   690
        }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   691
      });
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   692
      if(authed) r.open('GET', path+'?title=null&ajimmode=getpost&id='+<?php echo $_GET['id']; ?>id+'&pfx='+pfx+'&p='+pid+'&ajim_auth='+authed, true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   693
      else       r.open('GET', path+'?title=null&ajimmode=getpost&id='+<?php echo $_GET['id']; ?>id+'&pfx='+pfx+'&p='+pid, true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   694
      r.send(null);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   695
    } else {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   696
      clearInterval(<?php echo $_GET['id']; ?>interval);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   697
      var r = <?php echo $_GET['id']; ?>_newReq(function() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   698
        if(r.readyState == 4) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   699
           document.getElementById('<?php echo $_GET['id']; ?>_post_'+pid).innerHTML = '<textarea rows="4" cols="17" id="<?php echo $_GET['id']; ?>_editor_'+pid+'">'+r.responseText+'</textarea><br /><a href="#" onclick="<?php echo $_GET['id']; ?>_save_post(\''+pid+'\'); return false;" style="font-size: 7pt; color: #00C000;">save</a>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   700
           document.getElementById('<?php echo $_GET['id']; ?>_editbtn_'+pid).innerHTML = 'Cancel';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   701
           ajim_editlevels++;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   702
           <?php echo $_GET['id']; ?>editlist[pid] = true;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   703
        }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   704
      });
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   705
      if(authed) r.open('GET', path+'?title=null&ajimmode=getsource&id='+<?php echo $_GET['id']; ?>id+'&pfx='+pfx+'&p='+pid+'&ajim_auth='+authed, true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   706
      else       r.open('GET', path+'?title=null&ajimmode=getsource&id='+<?php echo $_GET['id']; ?>id+'&pfx='+pfx+'&p='+pid, true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   707
      r.send(null);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   708
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   709
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   710
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   711
  var ajim_global_pid;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   712
  function <?php echo $_GET['id']; ?>_save_post(pid) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   713
    ajim_global_pid = pid;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   714
    if(!document.getElementById('<?php echo $_GET['id']; ?>_editor_'+pid))
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   715
    {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   716
      alert('AjIM internal error: bad post ID '+pid+': editor is not open');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   717
      return false;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   718
    }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   719
    var r = <?php echo $_GET['id']; ?>_newReq(function() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   720
      if(r.readyState == 4)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   721
      {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   722
        ajim_editlevels--;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   723
        <?php echo $_GET['id']; ?>editlist[pid] = false;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   724
        document.getElementById('<?php echo $_GET['id']; ?>_editbtn_'+ajim_global_pid).innerHTML = 'Edit';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   725
        document.getElementById('<?php echo $_GET['id']; ?>_post_'+ajim_global_pid).innerHTML = r.responseText;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   726
        if(ajim_editlevels < 1)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   727
        {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   728
          <?php echo $_GET['id']; ?>_refresh(true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   729
          <?php echo $_GET['id']; ?>interval = setInterval('<?php echo $_GET['id']; ?>_refresh();', 5000);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   730
        }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   731
      }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   732
    });
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   733
    var parms = 'post='+escape(document.getElementById('<?php echo $_GET['id']; ?>_editor_'+pid).value.replace('+', '%2B'))+'&ajim_auth='+authed+'&p='+pid;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   734
    r.open('POST', path+'?title=null&ajimmode=savepost&id='+<?php echo $_GET['id']; ?>id+'', true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   735
    r.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   736
    r.setRequestHeader("Content-length", parms.length);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   737
    r.setRequestHeader("Connection", "close");
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   738
    r.send(parms);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   739
    return null;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   740
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   741
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   742
  function <?php echo $_GET['id']; ?>_delete_post(pid) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   743
    //document.getElementById(<?php echo $_GET['id']; ?>id+'_admin').innerHTML = '<span style="font-family: arial; font-size: 7pt; ">Loading...</span>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   744
    var r = <?php echo $_GET['id']; ?>_newReq(function() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   745
       if(r.readyState == 4)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   746
         if(r.responseText=="good") {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   747
           <?php echo $_GET['id']; ?>_refresh(true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   748
         } else alert(r.responseText);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   749
    });
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   750
    var parms = 'ajim_auth='+authed+'&p='+pid;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   751
    r.open('POST', path+'?title=null&ajimmode=delete&id='+<?php echo $_GET['id']; ?>id+'', true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   752
    r.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   753
    r.setRequestHeader("Content-length", parms.length);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   754
    r.setRequestHeader("Connection", "close");
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   755
    r.send(parms);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   756
    return null;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   757
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   758
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   759
  <?php
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   760
} elseif(isset($_GET['jsadmin']) && isset($_GET['id']) && isset($_GET['path'])) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   761
  header('Content-type: text/javascript');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   762
  ?>
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   763
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   764
  var abuffer;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   765
  function <?php echo $_GET['id']; ?>_prompt() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   766
    abuffer = document.getElementById(<?php echo $_GET['id']; ?>id+'_admin').innerHTML;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   767
    document.getElementById(<?php echo $_GET['id']; ?>id+'_admin').innerHTML = '<form action="javascript:void(0)" onsubmit="'+<?php echo $_GET['id']; ?>id+'_login()" method="get"><span style="font-family: arial; font-size: 7pt; ">Password:</span>  <input style="font-family: arial; font-size: 7pt; border: 1px solid #000; height: 15px; width: 65px" id="'+<?php echo $_GET['id']; ?>id+'_passfield" name="pass" type="password" /> <input style="font-family: arial; font-size: 7pt; border: 1px solid #000; height: 15px; width: 65px" type="submit" value="OK" /></form>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   768
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   769
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   770
  function <?php echo $_GET['id']; ?>_login() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   771
    pass = document.getElementById(<?php echo $_GET['id']; ?>id+'_passfield').value;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   772
    pass = hex_md5(pass);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   773
    <?php echo $_GET['id']; ?>_login_bin(pass);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   774
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   775
  function <?php echo $_GET['id']; ?>_login_bin(pass) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   776
    document.getElementById(<?php echo $_GET['id']; ?>id+'_admin').innerHTML = '<span style="font-family: arial; font-size: 7pt; ">Loading...</span>';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   777
    var r = <?php echo $_GET['id']; ?>_newReq(function() {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   778
       if(r.readyState == 4)
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   779
       {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   780
         if(r.responseText=="good") {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   781
           authed = pass;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   782
           <?php echo $_GET['id']; ?>setCookie('ajim_password', authed, 60*60*24*365*10);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   783
           <?php echo $_GET['id']; ?>_latestpost = 0;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   784
           <?php echo $_GET['id']; ?>_refresh(true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   785
           document.getElementById(<?php echo $_GET['id']; ?>id+'_admin').innerHTML = '';
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   786
         }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   787
         else
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   788
         {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   789
           alert(r.responseText); 
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   790
           document.getElementById(<?php echo $_GET['id']; ?>id+'_admin').innerHTML = '<span style="font-family: arial; font-size: 7pt; color: #ff0000">Invalid password!</span><br />'+abuffer;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   791
         }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   792
       }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   793
    })
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   794
    var parms = 'ajim_auth='+pass;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   795
    r.open('POST', path+'?title=null&ajimmode=auth&id='+<?php echo $_GET['id']; ?>id+'', true);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   796
    r.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   797
    r.setRequestHeader("Content-length", parms.length);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   798
    r.setRequestHeader("Connection", "close");
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   799
    r.send(parms);
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   800
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   801
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   802
  var hexcase = 0; var b64pad  = ""; var chrsz   = 8; function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));}; function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));}; function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));}; function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); }; function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); }; function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); }; function md5_vm_test() { return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; }; function core_md5(x, len) { x[len >> 5] |= 0x80 << ((len) % 32); x[(((len + 64) >>> 9) << 4) + 14] = len; var a =  1732584193; var b = -271733879; var c = -1732584194; var d =  271733878; for(var i = 0; i < x.length; i += 16) { var olda = a; var oldb = b; var oldc = c; var oldd = d; a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936);d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586);c = md5_ff(c, d, a, b, x[i+ 2], 17,  606105819);b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330);a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897);d = md5_ff(d, a, b, c, x[i+ 5], 12,  1200080426);c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341);b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983);a = md5_ff(a, b, c, d, x[i+ 8], 7 ,  1770035416);d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417);c = md5_ff(c, d, a, b, x[i+10], 17, -42063);b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162);a = md5_ff(a, b, c, d, x[i+12], 7 ,  1804603682);d = md5_ff(d, a, b, c, x[i+13], 12, -40341101);c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290);b = md5_ff(b, c, d, a, x[i+15], 22,  1236535329);a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510);d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632);c = md5_gg(c, d, a, b, x[i+11], 14,  643717713);b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302);a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691);d = md5_gg(d, a, b, c, x[i+10], 9 ,  38016083);c = md5_gg(c, d, a, b, x[i+15], 14, -660478335);b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848);a = md5_gg(a, b, c, d, x[i+ 9], 5 ,  568446438);d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690);c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961);b = md5_gg(b, c, d, a, x[i+ 8], 20,  1163531501);a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467);d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784);c = md5_gg(c, d, a, b, x[i+ 7], 14,  1735328473);b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734);a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558);d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463);c = md5_hh(c, d, a, b, x[i+11], 16,  1839030562);b = md5_hh(b, c, d, a, x[i+14], 23, -35309556);a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060);d = md5_hh(d, a, b, c, x[i+ 4], 11,  1272893353);c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632);b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640);a = md5_hh(a, b, c, d, x[i+13], 4 ,  681279174);d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222);c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979);b = md5_hh(b, c, d, a, x[i+ 6], 23,  76029189);a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487);d = md5_hh(d, a, b, c, x[i+12], 11, -421815835);c = md5_hh(c, d, a, b, x[i+15], 16,  530742520);b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651);a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844);d = md5_ii(d, a, b, c, x[i+ 7], 10,  1126891415);c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905);b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055);a = md5_ii(a, b, c, d, x[i+12], 6 ,  1700485571);d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606);c = md5_ii(c, d, a, b, x[i+10], 15, -1051523);b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799);a = md5_ii(a, b, c, d, x[i+ 8], 6 ,  1873313359);d = md5_ii(d, a, b, c, x[i+15], 10, -30611744);c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380);b = md5_ii(b, c, d, a, x[i+13], 21,  1309151649);a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070);d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379);c = md5_ii(c, d, a, b, x[i+ 2], 15,  718787259);b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); a = safe_add(a, olda); b = safe_add(b, oldb); c = safe_add(c, oldc); d = safe_add(d, oldd); } return Array(a, b, c, d); }; function md5_cmn(q, a, b, x, s, t) { return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); }; function md5_ff(a, b, c, d, x, s, t) { return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); }; function md5_gg(a, b, c, d, x, s, t) { return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); }; function md5_hh(a, b, c, d, x, s, t) { return md5_cmn(b ^ c ^ d, a, b, x, s, t); }; function md5_ii(a, b, c, d, x, s, t) { return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); }; function core_hmac_md5(key, data) { var bkey = str2binl(key); if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz); var ipad = Array(16), opad = Array(16); for(var i = 0; i < 16; i++) { ipad[i] = bkey[i] ^ 0x36363636; opad[i] = bkey[i] ^ 0x5C5C5C5C; } var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz); return core_md5(opad.concat(hash), 512 + 128); }; function safe_add(x, y) {var lsw = (x & 0xFFFF) + (y & 0xFFFF);var msw = (x >> 16) + (y >> 16) + (lsw >> 16);return (msw << 16) | (lsw & 0xFFFF); }; function bit_rol(num, cnt) { return (num << cnt) | (num >>> (32 - cnt)); }; function str2binl(str) { var bin = Array(); var mask = (1 << chrsz) - 1; for(var i = 0; i < str.length * chrsz; i += chrsz) bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); return bin; }; function binl2str(bin) { var str = ""; var mask = (1 << chrsz) - 1; for(var i = 0; i < bin.length * 32; i += chrsz) str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); return str; }; function binl2hex(binarray) { var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; var str = ""; for(var i = 0; i < binarray.length * 4; i++) { str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + hex_tab.charAt((binarray[i>>2] >> ((i%4)*8  )) & 0xF); } return str; }; function binl2b64(binarray) { var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; var str = ""; for(var i = 0; i < binarray.length * 4; i += 3) { var triplet = (((binarray[i >> 2] >> 8 * ( i   %4)) & 0xFF) << 16) | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) |  ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); for(var j = 0; j < 4; j++) { if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); } } return str; };
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   803
  
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   804
  <?php
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   805
} elseif(isset($_GET['css']) && isset($_GET['id']) && isset($_GET['path'])) {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   806
  header('Content-type: text/css');
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   807
  ?>
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   808
  div#<?php echo $_GET['id']; ?>_master {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   809
    margin: 0;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   810
    padding: 0;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   811
    /* background-color: #DDD; */
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   812
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   813
  div#<?php echo $_GET['id']; ?>_master a {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   814
    display: inline;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   815
    color: #0000FF;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   816
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   817
  div#<?php echo $_GET['id']; ?>_master textarea {
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   818
    font-family: arial;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   819
    font-size: 7pt;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   820
    border: 1px solid #000;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   821
    padding: 0;
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   822
  }
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   823
  <?php
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   824
}
2f9b67edc9b1 Initial repository population
dan@fuhry
parents:
diff changeset
   825
?>