• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

orchestral / canvas / 3848713348

pending completion
3848713348

push

github

Mior Muhammad Zaki
Merge branch '7.x'

772 of 799 relevant lines covered (96.62%)

19.07 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.65
/src/Processors/GeneratesPolicyCode.php
1
<?php
2

3
namespace Orchestra\Canvas\Processors;
4

5
use Illuminate\Support\Str;
6
use Orchestra\Canvas\Core\GeneratesCode;
7

8
/**
9
 * @property \Orchestra\Canvas\Commands\Policy $listener
10
 *
11
 * @see https://github.com/laravel/framework/blob/9.x/src/Illuminate/Foundation/Console/PolicyMakeCommand.php
12
 */
13
class GeneratesPolicyCode extends GeneratesCode
14
{
15
    /**
16
     * Build the class with the given name.
17
     */
18
    protected function buildClass(string $name): string
19
    {
20
        $stub = $this->replaceUserNamespace(
3✔
21
            parent::buildClass($name)
3✔
22
        );
3✔
23

24
        $model = $this->options['model'];
3✔
25

26
        return ! empty($model) ? $this->replaceModel($stub, $model) : $stub;
3✔
27
    }
28

29
    /**
30
     * Replace the User model namespace.
31
     */
32
    protected function replaceUserNamespace(string $stub): string
33
    {
34
        $model = $this->userProviderModel();
3✔
35

36
        if (! $model) {
3✔
37
            return $stub;
×
38
        }
39

40
        return str_replace(
3✔
41
            $this->rootNamespace().'\User',
3✔
42
            $model,
3✔
43
            $stub
3✔
44
        );
3✔
45
    }
46

47
    /**
48
     * Replace the model for the given stub.
49
     */
50
    protected function replaceModel(string $stub, string $model): string
51
    {
52
        $model = str_replace('/', '\\', $model);
2✔
53

54
        if (Str::startsWith($model, '\\')) {
2✔
55
            $namespacedModel = trim($model, '\\');
×
56
        } else {
57
            $namespacedModel = $this->preset->modelNamespace().'\\'.$model;
2✔
58
        }
59

60
        $model = class_basename(trim($model, '\\'));
2✔
61

62
        $dummyUser = class_basename($this->userProviderModel());
2✔
63

64
        $dummyModel = Str::camel($model) === 'user' ? 'model' : $model;
2✔
65

66
        $replace = [
2✔
67
            'NamespacedDummyModel' => $namespacedModel,
2✔
68
            '{{ namespacedModel }}' => $namespacedModel,
2✔
69
            '{{namespacedModel}}' => $namespacedModel,
2✔
70
            'DummyModel' => $model,
2✔
71
            '{{ model }}' => $model,
2✔
72
            '{{model}}' => $model,
2✔
73
            'dummyModel' => Str::camel($dummyModel),
2✔
74
            '{{ modelVariable }}' => Str::camel($dummyModel),
2✔
75
            '{{modelVariable}}' => Str::camel($dummyModel),
2✔
76
            'DocDummyModel' => Str::snake($dummyModel, ' '),
2✔
77
            '{{ modelDoc }}' => Str::snake($dummyModel, ' '),
2✔
78
            '{{modelDoc}}' => Str::snake($dummyModel, ' '),
2✔
79
            'DocDummyPluralModel' => Str::snake(Str::pluralStudly($dummyModel), ' '),
2✔
80
            '{{ modelDocPlural }}' => Str::snake(Str::pluralStudly($dummyModel), ' '),
2✔
81
            '{{modelDocPlural}}' => Str::snake(Str::pluralStudly($dummyModel), ' '),
2✔
82
            'DummyUser' => $dummyUser,
2✔
83
            '{{ user }}' => $dummyUser,
2✔
84
            '{{user}}' => $dummyUser,
2✔
85
        ];
2✔
86

87
        $stub = str_replace(
2✔
88
            array_keys($replace), array_values($replace), $stub
2✔
89
        );
2✔
90

91
        return str_replace(
2✔
92
            "use {$namespacedModel};\nuse {$namespacedModel};", "use {$namespacedModel};", $stub
2✔
93
        );
2✔
94
    }
95
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc