︙ | | | ︙ | |
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
|
* Renvoie TRUE si le plugin a besoin d'être mis à jour
* (si la version notée dans la DB est différente de la version notée dans garradin_plugin.ini)
* @return boolean TRUE si le plugin doit être mis à jour, FALSE sinon
*/
public function needUpgrade()
{
$infos = (object) parse_ini_file($this->path() . '/garradin_plugin.ini', false);
if (version_compare($this->plugin->version, $infos->version, '!='))
return true;
return false;
}
/**
|
|
|
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
|
* Renvoie TRUE si le plugin a besoin d'être mis à jour
* (si la version notée dans la DB est différente de la version notée dans garradin_plugin.ini)
* @return boolean TRUE si le plugin doit être mis à jour, FALSE sinon
*/
public function needUpgrade()
{
$infos = (object) parse_ini_file($this->path() . '/garradin_plugin.ini', false);
if (version_compare($this->plugin->version, $infos->version, '!='))
return true;
return false;
}
/**
|
︙ | | | ︙ | |
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
|
{
$plugin = $this;
include $this->path() . '/upgrade.php';
}
$infos = (object) parse_ini_file($this->path() . '/garradin_plugin.ini', false);
return DB::getInstance()->update('plugins',
['version' => $infos->version],
'id = :id',
['id' => $this->id]
);
}
/**
* Associer un signal à un callback du plugin
* @param string $signal Nom du signal (par exemple boucle.agenda pour la boucle de type AGENDA)
* @param mixed $callback Callback, sous forme d'un nom de fonction ou de méthode statique
* @return boolean TRUE
|
|
>
>
>
>
|
<
>
>
|
<
|
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
|
{
$plugin = $this;
include $this->path() . '/upgrade.php';
}
$infos = (object) parse_ini_file($this->path() . '/garradin_plugin.ini', false);
return DB::getInstance()->update('plugins', [
'nom' => $infos->nom,
'description'=> $infos->description,
'auteur' => $infos->auteur,
'url' => $infos->url,
'version' => $infos->version,
'menu' => (int)(bool)$infos->menu,
'menu_condition' => $infos->menu && isset($infos->menu_condition) ? trim($infos->menu_condition) : null,
], 'id = :id', ['id' => $this->id]);
}
/**
* Associer un signal à un callback du plugin
* @param string $signal Nom du signal (par exemple boucle.agenda pour la boucle de type AGENDA)
* @param mixed $callback Callback, sous forme d'un nom de fonction ou de méthode statique
* @return boolean TRUE
|
︙ | | | ︙ | |
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
|
{
if (!$row->menu_condition)
{
$row = $row->nom;
continue;
}
$query = 'SELECT 1 WHERE ' . preg_replace_callback('/\{\$user\.(\w+)\}/', function ($m) use ($user) { return $user->{$m[1]}; }, $row->menu_condition);
$st = $db->prepare($query);
if (!$st->readOnly())
{
throw new \LogicException('Requête plugin pour affichage dans le menu n\'est pas en lecture : ' . $query);
}
|
>
>
>
>
>
>
>
|
>
|
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
|
{
if (!$row->menu_condition)
{
$row = $row->nom;
continue;
}
$condition = strtr($row->menu_condition, [
'{Membres::DROIT_AUCUN}' => Membres::DROIT_AUCUN,
'{Membres::DROIT_ACCES}' => Membres::DROIT_ACCES,
'{Membres::DROIT_ECRITURE}' => Membres::DROIT_ECRITURE,
'{Membres::DROIT_ADMIN}' => Membres::DROIT_ADMIN,
]);
$condition = preg_replace_callback('/\{\$user\.(\w+)\}/', function ($m) use ($user) { return $user->{$m[1]}; }, $row->menu_condition);
$query = 'SELECT 1 WHERE ' .
$st = $db->prepare($query);
if (!$st->readOnly())
{
throw new \LogicException('Requête plugin pour affichage dans le menu n\'est pas en lecture : ' . $query);
}
|
︙ | | | ︙ | |
672
673
674
675
676
677
678
679
680
681
682
683
684
685
|
'officiel' => (int)(bool)$official,
'nom' => $infos->nom,
'description'=> $infos->description,
'auteur' => $infos->auteur,
'url' => $infos->url,
'version' => $infos->version,
'menu' => (int)(bool)$infos->menu,
'config' => $config,
]);
if (file_exists($path . '/install.php'))
{
$plugin = new Plugin($id);
require $plugin->path() . '/install.php';
|
>
|
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
|
'officiel' => (int)(bool)$official,
'nom' => $infos->nom,
'description'=> $infos->description,
'auteur' => $infos->auteur,
'url' => $infos->url,
'version' => $infos->version,
'menu' => (int)(bool)$infos->menu,
'menu_condition' => $infos->menu && isset($infos->menu_condition) ? trim($infos->menu_condition) : null,
'config' => $config,
]);
if (file_exists($path . '/install.php'))
{
$plugin = new Plugin($id);
require $plugin->path() . '/install.php';
|
︙ | | | ︙ | |