Pastebin

welcomerobeot listener.php

von chris1278

Dein Code:
  1. <?php
  2. /**
  3. *
  4. * @package Welcome Robot
  5. * @copyright eMosbat & (c) 2014 Ali Faraji(Ali@php) <alifaraji.mail@gmail.com> phpbbpersian.ir
  6. * @license GNU General Public License, version 2 (GPL-2.0)
  7. *
  8. */
  9. namespace alifaraji\welcomerobot\event;
  10.  
  11. /**
  12. * @ignore
  13. */
  14. if (!defined('IN_PHPBB'))
  15. {
  16.         exit;
  17. }
  18. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  19.  
  20. /**
  21. * Event listener
  22. */
  23. class listener implements EventSubscriberInterface
  24. {
  25.         static public function getSubscribedEvents()
  26.         {
  27.                 return array(
  28.                         'core.user_setup'               => 'send_topic',
  29.                 );
  30.         }
  31.  
  32.         /** @var \phpbb\config\config */
  33.         protected $config;
  34.  
  35.         /** @var \phpbb\db\driver\driver_interface */
  36.         protected $db;
  37.  
  38.         /** @var \phpbb\user */
  39.         protected $user;
  40.  
  41.         /** @var string phpBB root path */
  42.         protected $root_path;
  43.  
  44.         /** @var string PHP extension */
  45.         protected $phpEx;
  46.  
  47.         public function __construct(\phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\user $user, $root_path, $phpEx)
  48.         {
  49.                 $this->config = $config;
  50.                 $this->db = $db;
  51.                 $this->user = $user;
  52.                 $this->root_path = $root_path;
  53.                 $this->phpEx = $phpEx;
  54.         }
  55.  
  56.         public function send_topic()
  57.         {
  58.                 if ($this->user->data['is_registered'] && $this->user->data['user_lastvisit'] == 0)
  59.                 {
  60.                         $this->create_welcome_topic($this->user->data['user_id']);
  61.  
  62.                         $sql_ary = array(
  63.                                 'user_lastvisit'    => $this->user->data['session_last_visit'],
  64.                         );
  65.  
  66.                         $sql = 'UPDATE ' . USERS_TABLE . '
  67.                                 SET ' . $this->db->sql_build_array('UPDATE', $sql_ary) . '
  68.                                 WHERE user_id = ' . $this->user->data['user_id'];
  69.                         $result = $this->db->sql_query($sql);
  70.                         $this->db->sql_freeresult($result);
  71.                 }
  72.         }
  73.  
  74.         public function create_welcome_topic($user_id)
  75.         {
  76.                 if (!$this->config['welcomerobot_enable'])
  77.                         return false;
  78.                 if (!function_exists('get_username_string'))
  79.                 {
  80.                         include($this->root_path . 'includes/functions_content.' . $this->phpEx);
  81.                 }
  82.                 if (!function_exists('submit_post'))
  83.                 {
  84.                         include($this->root_path . 'includes/functions_posting.' . $this->phpEx);
  85.                 }
  86.  
  87.                 $sql = 'SELECT *
  88.                         FROM ' . USERS_TABLE . "
  89.                         WHERE user_id = " . intval($user_id) . "";
  90.                 $dbresult = $this->db->sql_query($sql);
  91.                 $row = $this->db->sql_fetchrow($dbresult);
  92.                 $this->db->sql_freeresult($dbresult);
  93.                 if (empty($row))
  94.                 {
  95.                         return false;
  96.                 }
  97.  
  98.                 $username = get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']);
  99.                 $clean_username = utf8_clean_string($row['username']);
  100.  
  101.                 $topic_title = str_replace(
  102.                                                                 array('%user','%robot','%board'),
  103.                                                                 array($clean_username, $this->config['welcomerobot_username'], $this->config['sitename']),
  104.                                                                 $this->config['welcomerobot_title']
  105.                 );
  106.                 $topic_content =   str_replace(
  107.                                                                 array('%user','%robot','%board'),
  108.                                                                 array($clean_username, $this->config['welcomerobot_username'], $this->config['sitename']),
  109.                                                                 $this->config['welcomerobot_detail']
  110.                 );
  111.  
  112.                 $poll = $uid = $bitfield = $options = '';
  113.                 // will be modified by generate_text_for_storage
  114.                 $allow_bbcode = $allow_urls = $allow_smilies = true;
  115.                 generate_text_for_storage($topic_content, $uid, $bitfield, $options, $allow_bbcode, $allow_urls, $allow_smilies);
  116.  
  117.                 $data = array(
  118.                 // General Posting Settings
  119.                 'forum_id'            => $this->config['welcomerobot_forum'], // The forum ID in which the post will be placed. (int)
  120.                 'topic_id'            => 0, // Post a new topic or in an existing one? Set to 0 to create a new one, if not, specify your topic ID here instead.
  121.                 'icon_id'            => false,    // The Icon ID in which the post will be displayed with on the viewforum, set to false for icon_id. (int)
  122.                 'robot_name'            => $this->config['welcomerobot_username'],
  123.  
  124.                 // Defining Post Options
  125.                 'enable_bbcode'    => true,    // Enable BBcode in this post. (bool)
  126.                 'enable_smilies'    => true,    // Enabe smilies in this post. (bool)
  127.                 'enable_urls'        => true,    // Enable self-parsing URL links in this post. (bool)
  128.                 'enable_sig'        => true,    // Enable the signature of the poster to be displayed in the post. (bool)
  129.  
  130.                 // Message Body
  131.                 'message'            => $topic_content,        // Your text you wish to have submitted. It should pass through generate_text_for_storage() before this. (string)
  132.                 'message_md5'    => md5($topic_content),// The md5 hash of your message
  133.  
  134.                 // Values from generate_text_for_storage()
  135.                 'bbcode_bitfield'    => $bitfield,    // Value created from the generate_text_for_storage() function.
  136.                 'bbcode_uid'        => $uid,        // Value created from the generate_text_for_storage() function.    // Other Options
  137.                 'post_edit_locked'    => 0,        // Disallow post editing? 1 = Yes, 0 = No
  138.                 'topic_title'        => $topic_title,    // Subject/Title of the topic. (string)    // Email Notification Settings
  139.                 'notify_set'        => false,        // (bool)
  140.                 'notify'            => false,        // (bool)
  141.                 'post_time'         => 0,        // Set a specific time, use 0 to let submit_post() take care of getting the proper time (int)
  142.                 'forum_name'        => '',        // For identifying the name of the forum in a notification email. (string)    // Indexing
  143.                 'enable_indexing'    => true,        // Allow indexing the post? (bool)    // 3.0.6
  144.                 'force_approved_state'    => true, // Allow the post to be submitted without going into unapproved queue
  145.                 );
  146.  
  147.                 submit_post('post', $topic_title, 'robot_name', POST_NORMAL, $poll, $data);
  148.  
  149.                 return true;
  150.         }
  151.  
  152. }

Quellcode

Hier kannst du den Code kopieren und ihn in deinen bevorzugten Editor einfügen. Alternativ kannst du den gesamten Eintrag auch als Datei herunterladen.