Review   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Coupling/Cohesion

Components 2
Dependencies 2

Importance

Changes 0
Metric Value
wmc 5
lcom 2
cbo 2
dl 0
loc 71
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A getName() 0 4 1
A create() 0 15 1
A getProductId() 0 8 2
1
<?php
2
3
/**
4
 * @package Faker
5
 * @author Iurii Makukh <[email protected]>
6
 * @copyright Copyright (c) 2017, Iurii Makukh <[email protected]>
7
 * @license https://www.gnu.org/licenses/gpl-3.0.en.html GNU General Public License 3.0
8
 */
9
10
namespace gplcart\modules\faker\models\generators;
11
12
use gplcart\core\models\Review as ReviewModel,
13
    gplcart\core\models\Product as ProductModel;
14
use gplcart\modules\faker\models\Generator as FakerModuleGenerator;
15
16
/**
17
 * Manages basic behaviors and data related to reviews
18
 */
19
class Review extends FakerModuleGenerator
20
{
21
22
    /**
23
     * Review model instance
24
     * @var \gplcart\core\models\Review $review
25
     */
26
    protected $review;
27
28
    /**
29
     * Product model instance
30
     * @var \gplcart\core\models\Product $product
31
     */
32
    protected $product;
33
34
    /**
35
     * @param ReviewModel $review
36
     * @param ProductModel $product
37
     */
38
    public function __construct(ReviewModel $review, ProductModel $product)
39
    {
40
        parent::__construct();
41
42
        $this->review = $review;
43
        $this->product = $product;
44
    }
45
46
    /**
47
     * Returns the generator name
48
     * @return string
49
     */
50
    public function getName()
51
    {
52
        return $this->translation->text('Review');
53
    }
54
55
    /**
56
     * Generate a single review
57
     * @return bool
58
     */
59
    public function create()
60
    {
61
        $created = $this->faker->dateTimeBetween('-1 year')->getTimestamp();
62
63
        $data = array(
64
            'created' => $created,
65
            'modified' => $created + 86400,
66
            'user_id' => $this->getUserId(),
67
            'text' => $this->faker->text(1000),
68
            'status' => $this->faker->boolean(),
69
            'product_id' => $this->getProductId()
70
        );
71
72
        return (bool) $this->review->add($data);
73
    }
74
75
    /**
76
     * Get a random product ID
77
     * @staticvar array|null $products
78
     * @return integer
79
     */
80
    protected function getProductId()
81
    {
82
        static $products = null;
83
        if (!isset($products)) {
84
            $products = $this->product->getList(array('limit' => array(0, 100)));
85
        }
86
        return (int) array_rand($products);
87
    }
88
89
}
90