PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.33
OttoKit: All-in-One Automation Platform v1.1.33
1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / wp-polls / wp-polls.php
suretriggers / src / Integrations / wp-polls Last commit date
triggers 2 years ago wp-polls.php 3 months ago
wp-polls.php
106 lines
1 <?php
2 /**
3 * WP-Polls core integrations file
4 *
5 * @since 1.0.0
6 * @package SureTrigger
7 */
8
9 namespace SureTriggers\Integrations\WpPolls;
10
11 use SureTriggers\Controllers\IntegrationsController;
12 use SureTriggers\Integrations\Integrations;
13 use SureTriggers\Traits\SingletonLoader;
14
15 /**
16 * Class SureTrigger
17 *
18 * @package SureTriggers\Integrations\WpPolls
19 */
20 class WpPolls extends Integrations {
21
22 use SingletonLoader;
23
24 /**
25 * ID
26 *
27 * @var string
28 */
29 protected $id = 'WpPolls';
30
31 /**
32 * SureTrigger constructor.
33 */
34 public function __construct() {
35 $this->name = __( 'WP-Polls', 'suretriggers' );
36 $this->description = __( 'WP-Polls is a WordPress polls plugin.', 'suretriggers' );
37 $this->icon_url = SURE_TRIGGERS_URL . 'assets/icons/wppolls.svg';
38
39 parent::__construct();
40 }
41
42 /**
43 * Get Poll context data.
44 *
45 * @param string $selected_answers_ids Selected Answers IDs.
46 * @param int $poll_id Poll ID.
47 *
48 * @return array
49 */
50 public static function get_poll_context( $selected_answers_ids, $poll_id ) {
51 $context = [];
52 $context['poll_id'] = $poll_id;
53
54 // Sanitize answer IDs — cast each to integer to prevent SQL injection.
55 $selected_answers_ids = implode( ',', array_map( 'intval', explode( ',', $selected_answers_ids ) ) );
56
57 global $wpdb;
58 $poll_data = $wpdb->get_row(
59 // phpcs:disable
60 $wpdb->prepare(
61 "
62 SELECT
63 p.pollq_question AS question,
64 GROUP_CONCAT(a.polla_answers SEPARATOR ', ') AS answers,
65 p.pollq_timestamp AS start_date,
66 p.pollq_expiry AS end_date,
67 sa.selected_answers
68 FROM {$wpdb->prefix}pollsq p
69 LEFT JOIN {$wpdb->prefix}pollsa a ON p.pollq_id = a.polla_qid
70 LEFT JOIN (
71 SELECT polla_qid, GROUP_CONCAT(polla_answers SEPARATOR ', ') AS selected_answers
72 FROM {$wpdb->prefix}pollsa
73 WHERE polla_aid IN ($selected_answers_ids)
74 GROUP BY polla_qid -- Group by polla_qid to avoid duplicate rows
75 ) AS sa ON p.pollq_id = sa.polla_qid
76 WHERE p.pollq_id = %d
77 GROUP BY p.pollq_question, p.pollq_timestamp, p.pollq_expiry
78 ",
79 $poll_id
80 )
81 // phpcs:enable
82 );
83
84 if ( ! empty( $poll_data ) ) {
85 $context['question'] = $poll_data->question;
86 $context['answers'] = $poll_data->answers;
87 $context['start_date'] = gmdate( 'Y-m-d H:i:s', $poll_data->start_date );
88 $context['end_date'] = 0 == $poll_data->end_date ? 'Not set' : gmdate( 'Y-m-d H:i:s', $poll_data->end_date );
89 $context['selected_answers'] = $poll_data->selected_answers;
90 }
91
92 return $context;
93 }
94
95 /**
96 * Is Plugin depended on plugin is installed or not.
97 *
98 * @return bool
99 */
100 public function is_plugin_installed() {
101 return defined( 'WP_POLLS_VERSION' );
102 }
103 }
104
105 IntegrationsController::register( WpPolls::class );
106