C:\xampp\htdocs\landing\wp-content\updraft\plugins-old\totalpoll\src\Poll\Commands\LogVote.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php

namespace TotalPoll\Poll\Commands;
defined'ABSPATH' ) && exit();


use 
TotalPoll\Contracts\Log\Repository;
use 
TotalPoll\Contracts\Poll\Model;

/**
 * Class LogVote
 * @package TotalPoll\Poll\Commands
 */
class LogVote extends \TotalPollVendors\TotalCore\Helpers\Command {
    protected 
$poll;
    protected 
$repository;

    
/**
     * LogVote constructor.
     *
     * @param Model      $poll
     * @param Repository $repository
     */
    
public function __constructModel $pollRepository $repository ) {
        
$this->poll       $poll;
        
$this->repository $repository;
    }

    
/**
     * Log vote.
     *
     * @return mixed
     */
    
protected function handle() {

        
/**
         * Fires before saving the log entry.
         *
         * @param \TotalPoll\Contracts\Poll\Model $poll Poll model object.
         *
         * @since 4.0.0
         */
        
do_action'totalpoll/actions/before/poll/command/log'$this->poll );
        
$details = [];
        
$choices = [];

        
$error           $this->poll->getErrorMessage();
        
$receivedChoices $this->poll->getReceivedChoices();

        if ( 
$error ):
            
$details['error'] = $this->poll->getErrorMessage();
        endif;

        if ( 
$receivedChoices ):
            
$details['choices'] = [];
            foreach ( 
$receivedChoices as $choice ):
                
$choices[]            = $choice['uid'];
                
$details['choices'][] = $choice['label'];
            endforeach;
        endif;

        
$questions $this->poll->getQuestions();
        
$receivedQuestions $this->poll->getReceivedQuestions();
        
$details['skipped'] = [];

        foreach (
$questions as $question) {
            if(! 
in_array($question['uid'], $receivedQuestions)) {
                
$details['skipped'][] = $question['uid'];
            }
        }

        if(empty(
$details['skipped'])) {
            unset(
$details['skipped']);
        }

        
$log $this->repository->create(
            
apply_filters(
                
'totalpoll/filters/poll/command/log/attributes',
                [
                    
'poll_id' => $this->poll->getId(),
                    
'action'  => 'vote',
                    
'status'  => $this->poll->getError() ? 'rejected' 'accepted',
                    
'choices' => $choices,
                    
'details' => $details,
                ]
            )
        );

        
/**
         * Fires after saving the log entry.
         *
         * @param \TotalPoll\Contracts\Log\Model  $log  Log entry model object.
         * @param \TotalPoll\Contracts\Poll\Model $poll Poll model object.
         *
         * @since 4.0.0
         */
        
do_action'totalpoll/actions/after/poll/command/log'$log$this->poll );

        if ( 
$log ):
            
self::share'log'$log );
        endif;

        return 
$log;
    }
}
x

Windows NT KPTV 6.2 build 9200 (Windows Server 2012 Datacenter Edition) i586