This project does not seem to handle request data directly as such no vulnerable execution paths were found.
include
, or for example
via PHP's auto-loading mechanism.
These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | namespace Victoire\Bundle\WidgetBundle\Helper; |
||
4 | |||
5 | use Doctrine\Common\Util\ClassUtils; |
||
6 | use Symfony\Component\DependencyInjection\Container; |
||
7 | use Victoire\Bundle\WidgetBundle\Entity\Widget; |
||
8 | |||
9 | class WidgetHelper |
||
0 ignored issues
–
show
introduced
by
![]() |
|||
10 | { |
||
11 | private $container; |
||
12 | |||
13 | public function __construct(Container $container) |
||
0 ignored issues
–
show
|
|||
14 | { |
||
15 | $this->container = $container; |
||
16 | } |
||
17 | |||
18 | /** |
||
0 ignored issues
–
show
|
|||
19 | * The name of the widget. |
||
20 | * |
||
21 | * @return string |
||
22 | */ |
||
23 | public function getWidgetName(Widget $widget) |
||
24 | { |
||
25 | $widgets = $this->container->getParameter('victoire_core.widgets'); |
||
26 | foreach ($widgets as $widgetParams) { |
||
27 | if ($widgetParams['class'] === ClassUtils::getClass($widget)) { |
||
28 | return $widgetParams['name']; |
||
29 | } |
||
30 | } |
||
31 | |||
32 | throw new \Exception('Widget name not found for widget '.get_class($widget).'. Is this widget right declared in AppKernel ?'); |
||
33 | } |
||
34 | |||
35 | /** |
||
36 | * check if widget is allowed for slot. |
||
37 | * |
||
38 | * @param Widget $widget |
||
39 | * @param string $slot |
||
40 | * |
||
41 | * @return bool |
||
42 | */ |
||
43 | public function isWidgetAllowedForSlot(Widget $widget, $slot) |
||
44 | { |
||
45 | $widgetName = $this->getWidgetName($widget); |
||
46 | $slots = $this->slots; |
||
0 ignored issues
–
show
The property
slots does not exist. Did you maybe forget to declare it?
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code: class MyClass { }
$x = new MyClass();
$x->foo = true;
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: class MyClass {
public $foo;
}
$x = new MyClass();
$x->foo = true;
![]() |
|||
47 | |||
48 | return !empty($slots[$slot]) && (array_key_exists($widgetName, $slots[$slot]['widgets'])); |
||
49 | } |
||
50 | |||
51 | /** |
||
52 | * create a new WidgetRedactor. |
||
53 | * |
||
54 | * @param string $type |
||
55 | * @param string $mode |
||
56 | * |
||
57 | * @return Widget $widget |
||
58 | */ |
||
59 | public function newWidgetInstance($type, $mode) |
||
60 | { |
||
61 | $widgetAlias = 'victoire.widget.'.strtolower($type); |
||
62 | $widget = $this->container->get($widgetAlias); |
||
63 | |||
64 | $widget->setMode($mode); |
||
65 | |||
66 | return $widget; |
||
67 | } |
||
68 | |||
69 | /** |
||
70 | * Get the name of the template to display for an action. |
||
71 | * |
||
72 | * @param string $action |
||
73 | * @param Widget $widget |
||
74 | * |
||
75 | * @todo find a better way to get the requested template |
||
76 | * |
||
77 | * @return string |
||
78 | */ |
||
79 | public function getTemplateName($action, Widget $widget) |
||
80 | { |
||
81 | //the template displayed is in the widget bundle |
||
82 | $templateName = 'VictoireWidget'.$this->getWidgetName($widget).'Bundle::'.$action.'.html.twig'; |
||
83 | |||
84 | return $templateName; |
||
85 | } |
||
86 | |||
87 | /** |
||
88 | * Delete manually a widget with its id. |
||
89 | * |
||
90 | * @param int $widgetId |
||
91 | * |
||
92 | * @return string |
||
93 | */ |
||
94 | public function deleteById($widgetId) |
||
95 | { |
||
96 | $entityManager = $this->container->get('doctrine.orm.entity_manager'); |
||
97 | $connection = $entityManager->getConnection(); |
||
98 | $statement = $connection->prepare('DELETE FROM vic_widget WHERE id = :id'); |
||
99 | $statement->bindValue('id', $widgetId); |
||
100 | $statement->execute(); |
||
101 | } |
||
102 | |||
103 | /** |
||
104 | * Check in the driver chain if the given widget is enabled. |
||
105 | * |
||
106 | * @param Widget $widget |
||
107 | * |
||
108 | * @return bool |
||
109 | */ |
||
110 | public function isEnabled(Widget $widget) |
||
111 | { |
||
112 | $widgets = $this->container->getParameter('victoire_core.widgets'); |
||
113 | foreach ($widgets as $widgetParams) { |
||
114 | if ($widgetParams['class'] === ClassUtils::getClass($widget)) { |
||
115 | return true; |
||
116 | } |
||
117 | } |
||
118 | |||
119 | return false; |
||
120 | } |
||
121 | |||
122 | /** |
||
123 | * Check in the driver chain if the given widget is enabled. |
||
124 | * |
||
125 | * @param Widget $widget |
||
126 | * |
||
127 | * @return bool |
||
128 | */ |
||
129 | public function isCacheEnabled(Widget $widget) |
||
130 | { |
||
131 | $widgets = $this->container->getParameter('victoire_core.widgets'); |
||
132 | foreach ($widgets as $widgetParams) { |
||
133 | if ($widgetParams['class'] === ClassUtils::getClass($widget)) { |
||
134 | if (array_key_exists('cache', $widgetParams)) { |
||
135 | return $widgetParams['cache']; |
||
136 | } else { |
||
137 | return true; |
||
138 | } |
||
139 | } |
||
140 | } |
||
141 | |||
142 | throw new \Exception('Widget config not found for widget '.ClassUtils::getClass($widget).'. Is this widget right declared in AppKernel ?'); |
||
143 | } |
||
144 | |||
145 | /** |
||
146 | * Check in the driver chain if the given widget is enabled. |
||
147 | * |
||
148 | * @param Widget $widget |
||
149 | * |
||
150 | * @return bool |
||
151 | */ |
||
152 | public function getCacheTimeout(Widget $widget) |
||
153 | { |
||
154 | $widgets = $this->container->getParameter('victoire_core.widgets'); |
||
155 | foreach ($widgets as $widgetParams) { |
||
156 | if ($widgetParams['class'] === ClassUtils::getClass($widget)) { |
||
157 | if (array_key_exists('cache_timout', $widgetParams)) { |
||
158 | return $widgetParams['cache_timout']; |
||
159 | } else { |
||
160 | return 7 * 24 * 60 * 1000; // one week by default |
||
0 ignored issues
–
show
The return type of
return 7 * 24 * 60 * 1000; (integer ) is incompatible with the return type documented by Victoire\Bundle\WidgetBu...Helper::getCacheTimeout of type boolean .
If you return a value from a function or method, it should be a sub-type of the type that is given by the parent type f.e. an interface, or abstract method. This is more formally defined by the Lizkov substitution principle, and guarantees that classes that depend on the parent type can use any instance of a child type interchangably. This principle also belongs to the SOLID principles for object oriented design. Let’s take a look at an example: class Author {
private $name;
public function __construct($name) {
$this->name = $name;
}
public function getName() {
return $this->name;
}
}
abstract class Post {
public function getAuthor() {
return 'Johannes';
}
}
class BlogPost extends Post {
public function getAuthor() {
return new Author('Johannes');
}
}
class ForumPost extends Post { /* ... */ }
function my_function(Post $post) {
echo strtoupper($post->getAuthor());
}
Our function ![]() |
|||
161 | } |
||
162 | } |
||
163 | } |
||
164 | |||
165 | throw new \Exception('Widget config not found for widget '.ClassUtils::getClass($widget).'. Is this widget right declared in AppKernel ?'); |
||
166 | } |
||
167 | } |
||
168 |