wpml-tf-xml-rpc-feedback-update.php
1.72 KB
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
<?php
/**
* Class WPML_TF_XML_RPC_Feedback_Update
*
* @author OnTheGoSystems
*/
class WPML_TF_XML_RPC_Feedback_Update {
/** @var WPML_TF_Data_Object_Storage $feedback_storage */
private $feedback_storage;
/** @var WPML_TP_Project $tp_project */
private $tp_project;
public function __construct( WPML_TF_Data_Object_Storage $feedback_storage, WPML_TP_Project $tp_project ) {
$this->feedback_storage = $feedback_storage;
$this->tp_project = $tp_project;
}
public function set_status( array $args ) {
if ( $this->valid_arguments( $args ) ) {
$feedback = $this->get_feedback( $args['feedback']['id'] );
if ( $feedback ) {
/** @var WPML_TF_Feedback $feedback */
$feedback->set_status( $args['feedback']['status'] );
$this->feedback_storage->persist( $feedback );
}
}
}
/**
* @param array $args
*
* @return bool
*/
private function valid_arguments( array $args ) {
$valid = false;
if ( isset( $args['feedback']['id'], $args['feedback']['status'], $args['authorization_hash'] ) ) {
$expected_hash = sha1( $this->tp_project->get_id() . $this->tp_project->get_access_key() . $args['feedback']['id'] );
if ( $expected_hash === $args['authorization_hash'] ) {
$valid = true;
}
}
return $valid;
}
/**
* @param int $tp_feedback_id
*
* @return null|WPML_TF_Feedback
*/
private function get_feedback( $tp_feedback_id ) {
$feedback = null;
$filter_args = array(
'tp_feedback_id' => $tp_feedback_id,
);
$collection_filter = new WPML_TF_Feedback_Collection_Filter( $filter_args );
$collection = $this->feedback_storage->get_collection( $collection_filter );
if ( $collection->count() ) {
$feedback = $collection->current();
}
return $feedback;
}
}