[ Index ]
 

Code source de e107 0.7.8

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/e107_plugins/pm/ -> pm_class.php (source)

   1  <?php
   2  /*
   3  + ----------------------------------------------------------------------------+
   4  |     e107 website system
   5  |
   6  |     ©Steve Dunstan 2001-2002
   7  |     http://e107.org
   8  |     jalist@e107.org
   9  |
  10  |     Released under the terms and conditions of the
  11  |     GNU General Public License (http://gnu.org).
  12  |
  13  |     $Source: /cvsroot/e107/e107_0.7/e107_plugins/pm/pm_class.php,v $
  14  |     $Revision: 1.18 $
  15  |     $Date: 2007/02/17 17:31:15 $
  16  |     $Author: mcfly_e107 $
  17  +----------------------------------------------------------------------------+
  18  */
  19  
  20  if (!defined('e107_INIT')) { exit; }
  21  
  22  class private_message
  23  {
  24  	function pm_mark_read($pm_id, $pm_info)
  25      {
  26          $now = time();
  27          global $pm_prefs, $sql;
  28          if($pm_prefs['read_delete'])
  29          {
  30              $this->del($pm_id);
  31          }
  32          else
  33          {
  34              $sql->db_Select_gen("UPDATE #private_msg SET pm_read = {$now} WHERE pm_id=".intval($pm_id));
  35              if(strpos($pm_info['pm_option'], "+rr") !== FALSE)
  36              {
  37                  $this->pm_send_receipt($pm_info);
  38              }
  39          }
  40      }
  41  
  42  	function pm_get($pmid)
  43      {
  44          global $sql;
  45          $qry = "
  46          SELECT pm.*, ut.user_image AS sent_image, ut.user_name AS sent_name, uf.user_image AS from_image, uf.user_name AS from_name, uf.user_email as from_email, ut.user_email as to_email  FROM #private_msg AS pm
  47          LEFT JOIN #user AS ut ON ut.user_id = pm.pm_to
  48          LEFT JOIN #user AS uf ON uf.user_id = pm.pm_from
  49          WHERE pm.pm_id='".intval($pmid)."'
  50          ";
  51          if ($sql->db_Select_gen($qry))
  52          {
  53              $row = $sql->db_Fetch();
  54              return $row;
  55          }
  56          return FALSE;
  57      }
  58  
  59  	function add($vars)
  60      {
  61          global $pm_prefs, $tp, $sql;
  62          $vars['options'] = "";
  63          $pmsize = 0;
  64          $attachlist = "";
  65          $pm_options = "";
  66          if(isset($vars['receipt']) && $vars['receipt']) {$pm_options .= "+rr+";    }
  67          if(isset($vars['uploaded']))
  68          {
  69              foreach($vars['uploaded'] as $u)
  70              {
  71                  if(!isset($u['error']))
  72                  {
  73                      $pmsize += $u['size'];
  74                      $a_list[] = $u['name'];
  75                  }
  76              }
  77              $attachlist = implode(chr(0), $a_list);
  78          }
  79          $pmsize += strlen($vars['pm_message']);
  80  
  81          $pm_subject = $tp->toDB($vars['pm_subject']);
  82          $pm_message = $tp->toDB($vars['pm_message']);
  83          $sendtime = time();
  84          if(isset($vars['to_userclass']) || isset($vars['to_array']))
  85          {
  86              if(isset($vars['to_userclass']))
  87              {
  88                  require_once(e_HANDLER."userclass_class.php");
  89                  $toclass = r_userclass_name($vars['pm_userclass']);
  90                  $tolist = $this->get_users_inclass($vars['pm_userclass']);
  91                  $ret .= LAN_PM_38.": {$vars['to_userclass']}<br />";
  92                  $class = TRUE;
  93              }
  94              else
  95              {
  96                  $tolist = $vars['to_array'];
  97                  $class = FALSE;
  98              }
  99              foreach($tolist as $u)
 100              {
 101                  set_time_limit(30);
 102                  if($pmid = $sql->db_Insert("private_msg", "0, '".intval($vars['from_id'])."', '".$tp -> toDB($u['user_id'])."', '".intval($sendtime)."', '0', '{$pm_subject}', '{$pm_message}', '1', '0', '".$tp -> toDB($attachlist)."', '".$tp -> toDB($pm_options)."', '".intval($pmsize)."'"))
 103                  {
 104                      if($class == FALSE)
 105                      {
 106                          $toclass .= $u['user_name'].", ";
 107                      }
 108                      if(check_class($pm_prefs['notify_class'], $u['user_class']))
 109                      {
 110                          $vars['to_info'] = $u;
 111                          $this->pm_send_notify($u['user_id'], $vars, $pmid, count($a_list));
 112                      }
 113                  }
 114                  else
 115                  {
 116                      $ret .= LAN_PM_39.": {$u['user_name']} <br />";
 117                  }
 118              }
 119              if(!$pmid = $sql->db_Insert("private_msg", "0, '".intval($vars['from_id'])."', '".$tp -> toDB($toclass)."', '".intval($sendtime)."', '1', '{$pm_subject}', '{$pm_message}', '0', '0', '".$tp -> toDB($attachlist)."', '".$tp -> toDB($pm_options)."', '".intval($pmsize)."'"))
 120              {
 121                  $ret .= LAN_PM_41."<br />";
 122              }
 123              
 124          }
 125          else
 126          {
 127              if($pmid = $sql->db_Insert("private_msg", "0, '".intval($vars['from_id'])."', '".$tp -> toDB($vars['to_info']['user_id'])."', '".intval($sendtime)."', '0', '{$pm_subject}', '{$pm_message}', '0', '0', '".$tp -> toDB($attachlist)."', '".$tp -> toDB($pm_options)."', '".intval($pmsize)."'"))
 128              {
 129                  if(check_class($pm_prefs['notify_class'], $vars['to_info']['user_class']))
 130                  {
 131                      set_time_limit(30);
 132                      $this->pm_send_notify($vars['to_info']['user_id'], $vars, $pmid, count($a_list));
 133                  }
 134                  $ret .= LAN_PM_40.": {$vars['to_info']['user_name']}<br />";
 135              }
 136          }
 137          return $ret;
 138      }
 139  
 140  	function del($pmid)
 141      {
 142          global $sql;
 143          $ret = "";
 144          $del_pm = FALSE;
 145          $newvals = "";
 146          if($sql->db_Select("private_msg", "*", "pm_id = ".intval($pmid)." AND (pm_from = ".USERID." OR pm_to = ".USERID.")"))
 147          {
 148              $row = $sql->db_Fetch();
 149              if($row['pm_to'] == USERID)
 150              {
 151                  $newvals = "pm_read_del = 1";
 152                  $ret .= LAN_PM_42."<br />";
 153                  if($row['pm_sent_del'] == 1) { $del_pm = TRUE; }
 154              }
 155              if($row['pm_from'] == USERID)
 156              {
 157                  if($newvals != "") { $del_pm = TRUE; }
 158                  $newvals = "pm_sent_del = 1";
 159                  $ret .= LAN_PM_43."<br />";
 160                  if($row['pm_read_del'] == 1) { $del_pm = TRUE; }
 161              }
 162  
 163              if(count($newvals) == 2 || $del_pm == TRUE)
 164              {
 165                  // Delete any attachments and remove PM from db
 166                  $attachments = explode(chr(0), $row['pm_attachments']);
 167                  foreach($attachments as $a)
 168                  {
 169                      $filename = getcwd()."/attachments/{$a}";
 170                      unlink($filename);
 171                  }
 172                  $sql->db_Delete("private_msg", "pm_id = ".intval($pmid));
 173              }
 174              else
 175              {
 176                  $sql->db_Update("private_msg", $newvals." WHERE pm_id = ".intval($pmid));
 177              }
 178              return $ret;
 179          }
 180      }
 181  
 182  	function pm_send_notify($uid, $pminfo, $pmid, $attach_count = 0)
 183      {
 184          require_once(e_HANDLER."mail.php");
 185          global $PLUGINS_DIRECTORY;
 186          $subject = LAN_PM_100.SITENAME;
 187          $pmlink = SITEURL.$PLUGINS_DIRECTORY."pm/pm.php?show.{$pmid}";
 188          $txt = LAN_PM_101.SITENAME."\n\n";
 189          $txt .= LAN_PM_102.USERNAME."\n";
 190          $txt .= LAN_PM_103.$pminfo['pm_subject']."\n";
 191          if($attch_count > 0)
 192          {
 193              $txt .= LAN_PM_104.$attach_count."\n";
 194          }
 195          $txt .= LAN_PM_105."\n".$pmlink."\n";
 196          sendemail($pminfo['to_info']['user_email'], $subject, $txt, $pminfo['to_info']['user_name']);
 197      }
 198  
 199  	function pm_send_receipt($pminfo)
 200      {
 201          require_once(e_HANDLER."mail.php");
 202          global $PLUGINS_DIRECTORY;
 203          $subject = LAN_PM_106.$pminfo['sent_name'];
 204          $pmlink = SITEURL.$PLUGINS_DIRECTORY."pm/pm.php?show.{$pminfo['pm_id']}";
 205          $txt = str_replace("{UNAME}", $pminfo['sent_name'], LAN_PM_107).date('l F dS Y h:i:s A')."\n\n";
 206          $txt .= LAN_PM_108.date('l F dS Y h:i:s A', $pminfo['pm_sent'])."\n";
 207          $txt .= LAN_PM_103.$pminfo['pm_subject']."\n";
 208          $txt .= LAN_PM_105."\n".$pmlink."\n";
 209          sendemail($pminfo['from_email'], $subject, $txt, $pminfo['from_name']);
 210      }
 211  
 212  	function block_get($to = USERID)
 213      {
 214          global $sql, $tp;
 215          $ret = array();
 216          if($sql->db_Select("private_msg_block", "pm_block_from", "pm_block_to = '".$tp -> toDB($to)."'"))
 217          {
 218              while($row = $sql->db_Fetch())
 219              {
 220                  $ret[] = $row['pm_block_from'];
 221              }
 222          }
 223          return $ret;
 224      }
 225  
 226  	function block_add($from, $to = USERID)
 227      {
 228          global $sql, $tp;
 229          if($sql->db_Select("user", "user_name", "user_id = '".intval($from)."'"))
 230          {
 231              $uinfo = $sql->db_Fetch();
 232              if(!$sql->db_Count("private_msg_block", "(*)", "WHERE pm_block_from = '".intval($from)."' AND pm_block_to = '".$tp -> toDB($to)."'"))
 233              {
 234                  if($sql->db_Insert("private_msg_block", "0, '".intval($from)."', '".$tp -> toDB($to)."', '".time()."', '0'"))
 235                  {
 236                      return str_replace('{UNAME}', $uinfo['user_name'], LAN_PM_47);
 237                  }
 238                  else
 239                  {
 240                      return LAN_PM_48;
 241                  }
 242              }
 243              else
 244              {
 245                  return str_replace('{UNAME}', $uinfo['user_name'], LAN_PM_49);
 246              }
 247          }
 248          else
 249          {
 250              return LAN_PM_17;
 251          }
 252      }
 253  
 254  	function block_del($from, $to = USERID)
 255      {
 256          global $sql;
 257          if($sql->db_Select("user", "user_name", "user_id = '".intval($from)."'"))
 258          {
 259              $uinfo = $sql->db_Fetch();
 260              if($sql->db_Select("private_msg_block", "pm_block_id", "pm_block_from = '".intval($from)."' AND pm_block_to = '".intval($to)."'"))
 261              {
 262                  $row = $sql->db_Fetch();
 263                  if($sql->db_Delete("private_msg_block", "pm_block_id = '".intval($row['pm_block_id'])."'"))
 264                  {
 265                      return str_replace("{UNAME}", $uinfo['user_name'], LAN_PM_44);
 266                  }
 267                  else
 268                  {
 269                      return LAN_PM_45;
 270                  }
 271              }
 272              else
 273              {
 274                  return str_replace("{UNAME}", $uinfo['user_name'], LAN_PM_46);
 275              }
 276          }
 277          else
 278          {
 279              return LAN_PM_17;
 280          }
 281      }
 282  
 283  	function pm_getuid($var)
 284      {
 285          global $sql, $tp;
 286          $var = trim($var);
 287          if($sql->db_Select("user", "user_id, user_name, user_class, user_email", "user_name LIKE '".$tp->toDB($var)."' LIMIT 1"))
 288          {
 289              $row = $sql->db_Fetch();
 290              return $row;
 291          }
 292          return FALSE;
 293      }
 294  
 295  	function get_users_inclass($class)
 296      {
 297          global $sql, $tp;
 298          if($class == e_UC_MEMBER)
 299          {
 300              $qry = "SELECT user_id, user_name, user_email, user_class FROM #user WHERE 1";
 301          }
 302          elseif($class == e_UC_ADMIN)
 303          {
 304              $qry = "SELECT user_id, user_name, user_email, user_class FROM #user WHERE user_admin = 1";
 305          }
 306          elseif($class)
 307          {
 308              $regex = "(^|,)(".$tp -> toDB($class).")(,|$)";
 309              $qry = "SELECT user_id, user_name, user_email, user_class FROM #user WHERE user_class REGEXP '{$regex}'";
 310          }
 311          if($sql->db_Select_gen($qry))
 312          {
 313              $ret = $sql->db_getList();
 314              return $ret;
 315          }
 316          return FALSE;
 317      }
 318  
 319  	function pm_get_inbox($uid = USERID, $from = 0, $limit = 10)
 320      {
 321          global $sql;
 322          $ret = "";
 323          if($total_messages = $sql->db_Count("private_msg", "(*)", "WHERE pm_to='{$uid}' AND pm_read_del=0"))
 324          {
 325              $qry = "
 326              SELECT pm.*, u.user_image, u.user_name FROM #private_msg AS pm
 327              LEFT JOIN #user AS u ON u.user_id = pm.pm_from
 328              WHERE pm.pm_to='{$uid}' AND pm.pm_read_del=0
 329              ORDER BY pm.pm_sent DESC
 330              LIMIT ".intval($from).", ".intval($limit)."
 331              ";
 332              if($sql->db_Select_gen($qry))
 333              {
 334                  $ret['messages'] = $sql->db_getList();
 335                  $ret['total_messages'] = $total_messages;
 336              }
 337              return $ret;
 338          }
 339      }
 340  
 341  	function pm_get_outbox($uid = USERID, $from = 0, $limit = 10)
 342      {
 343          global $sql;
 344          if(intval($limit < 1)) { $limit = 10; }
 345          if($total_messages = $sql->db_Count("private_msg", "(*)", "WHERE pm_from='{$uid}' AND pm_sent_del=0"))
 346          {
 347              $qry = "
 348              SELECT pm.*, u.user_image, u.user_name FROM #private_msg AS pm
 349              LEFT JOIN #user AS u ON u.user_id = pm.pm_to
 350              WHERE pm.pm_from='{$uid}' AND pm.pm_sent_del=0
 351              ORDER BY pm.pm_sent DESC
 352              LIMIT ".intval($from).", ".intval($limit)."
 353              ";
 354              if($sql->db_Select_gen($qry))
 355              {
 356                  $ret['messages'] = $sql->db_getList();
 357                  $ret['total_messages'] = $total_messages;
 358              }
 359          }
 360          return $ret;
 361      }
 362  
 363  	function send_file($pmid, $filenum)
 364      {
 365          global $pref;
 366          $pm_info = $this->pm_get($pmid);
 367          $attachments = explode(chr(0), $pm_info['pm_attachments']);
 368          if(!isset($attachments[$filenum]))
 369          {
 370              return FALSE;
 371          }
 372          $fname = $attachments[$filenum];
 373          list($timestamp, $fromid, $rand, $file) = explode("_", $fname, 4);
 374          $filename = getcwd()."/attachments/{$fname}";
 375  
 376          if($fromid != $pm_info['pm_from'])
 377          {
 378              return FALSE;
 379          }
 380          if(!is_file($filename))
 381          {
 382              return FALSE;
 383          }
 384          @set_time_limit(10 * 60);
 385          @e107_ini_set("max_execution_time", 10 * 60);
 386          while (@ob_end_clean()); // kill all output buffering else it eats server resources
 387          if (connection_status() == 0)
 388          {
 389              if (strstr($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
 390                  $file = preg_replace('/\./', '%2e', $file, substr_count($file, '.') - 1);
 391              }
 392              if (isset($_SERVER['HTTP_RANGE']))
 393              {
 394                  $seek = intval(substr($_SERVER['HTTP_RANGE'] , strlen('bytes=')));
 395              }
 396              $bufsize = 2048;
 397              ignore_user_abort(true);
 398              $data_len = filesize($filename);
 399              if ($seek > ($data_len - 1)) $seek = 0;
 400              $res =& fopen($filename, 'rb');
 401              if ($seek)
 402              {
 403                  fseek($res , $seek);
 404              }
 405              $data_len -= $seek;
 406              header("Expires: 0");
 407              header("Cache-Control: max-age=30" );
 408              header("Content-Type: application/force-download");
 409              header("Content-Disposition: attachment; filename={$file}");
 410              header("Content-Length: {$data_len}");
 411              header("Pragma: public");
 412              if ($seek)
 413              {
 414                  header("Accept-Ranges: bytes");
 415                  header("HTTP/1.0 206 Partial Content");
 416                  header("status: 206 Partial Content");
 417                  header("Content-Range: bytes {$seek}-".($data_len - 1)."/{$data_len}");
 418              }
 419              while (!connection_aborted() && $data_len > 0)
 420              {
 421                  echo fread($res , $bufsize);
 422                  $data_len -= $bufsize;
 423              }
 424              fclose($res);
 425          }
 426      }
 427  }
 428  ?>


Généré le : Sun Apr 1 01:23:32 2007 par Balluche grâce à PHPXref 0.7