Completed
Push — master ( 9515fd...5ff526 )
by Dmitry
02:10
created

MaintenanceController::actionUpdateExpired()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 9
nc 2
nop 0
1
<?php
2
3
namespace hiqdev\assetpackagist\console;
4
5
use hiqdev\assetpackagist\commands\PackageUpdateCommand;
6
use hiqdev\assetpackagist\components\StorageInterface;
7
use hiqdev\assetpackagist\models\AssetPackage;
8
use hiqdev\assetpackagist\repositories\PackageRepository;
9
use Yii;
10
use yii\console\Controller;
11
use yii\helpers\Console;
12
13
/**
14
 * Provides maintenance actions for the asset-packagist service
15
 * @package hiqdev\assetpackagist\console
16
 */
17
class MaintenanceController extends Controller
18
{
19
    /**
20
     * @var StorageInterface
21
     */
22
    protected $packageStorage;
23
24
    /**
25
     * @var PackageRepository
26
     */
27
    protected $packageRepository;
28
29
    /**
30
     * MaintenanceController constructor.
31
     * @param StorageInterface $packageStorage
32
     * @param PackageRepository $packageRepository
33
     * @inheritdoc
34
     */
35
    public function __construct($id, $module, StorageInterface $packageStorage, PackageRepository $packageRepository, $config = [])
36
    {
37
        parent::__construct($id, $module, $config);
38
39
        $this->packageStorage = $packageStorage;
40
        $this->packageRepository = $packageRepository;
41
    }
42
43
    /**
44
     * Synchronizes file system packages to the database
45
     */
46
    public function actionSyncToDb()
47
    {
48
        $packages = $this->packageStorage->listPackages();
49
50
        foreach ($packages as $name => $data) {
51
            $message = "Package %N$name%n ";
52
            $package = AssetPackage::fromFullName($name);
53
            $package->load();
54
55
            $message .= $this->packageRepository->exists($package)
56
                ? 'already exists. %BUpdated.%n'
57
                : 'does not exist. %GCreated.%n';
58
59
            $this->packageRepository->save($package);
60
61
            $this->stdout(Console::renderColoredString($message . "\n"));
62
        }
63
    }
64
65
    /**
66
     * Updates expired packages
67
     */
68
    public function actionUpdateExpired()
69
    {
70
        $packages = $this->packageRepository->getExpired();
71
72
        foreach ($packages as $package) {
73
            $package->load();
74
            Yii::$app->queue->push('package', Yii::createObject(PackageUpdateCommand::class, [$package]));
75
76
            $message = "Package %N" . $package->getFullName() . '%n';
77
            $message .= " was updated " . Yii::$app->formatter->asRelativeTime($package->getUpdateTime());
78
            $message .= ". %GAdded to queue for update%n\n";
79
            $this->stdout(Console::renderColoredString($message));
80
        }
81
    }
82
}
83