Page 1 of 1

remove config var

Posted: Sat Jan 08, 2011 12:52 pm
by Timbalu
Hi

Ich steckte gerade fest, in dem ich versuchte aus einem Plugin zur Verifikation eine alte und nicht mehr benutzte config variable zu löschen. Ich kenne nur die klassischen set_config() und get_config(), um Variablen zu setzen bzw zu holen. In der Entwicklung eines Plugins kann es aber durchaus vorkommen eine Variable umbenennen bzw löschen zu müssen.

Es existiert ja noch cleanup(), doch scheint diese gar nicht auf aktiv gesetzt und nur true zurückzuliefern und das eigentliche serendipity_plugin_api::remove_plugin_value($this->instance, array('title', 'description'));
funktioniert als angewendetes Beispiel im Plugin nur auf diese Weise:

Code: Select all

//wenn Bedingung
    $this->set_config('oldvar', '');  // remove_plugin_value removes empty vars only
    serendipity_plugin_api::remove_plugin_value($this->instance, array('oldvar', ''));
Könnten wir nicht so etwas wie eine unset_config() o.ä. einführen?

Grüße
Ian

Re: remove config var

Posted: Sat Jan 08, 2011 1:23 pm
by garvinhicking
Hi!

Für sowas würde ich dann per phpMyAdmin in der sernedipity_config Tabelle einfach den Wert löschen. So etwas ist ja eigentlich wirklich meist nur während der Entwicklung relevant, und sollte im finalen Plugin dann garnicht erscheinen, da es ja dann unnötig variablen löschen würde die beim normalen user nie existierten...

In der Tat greift remove_plugin_value ja auf "value=''" zu, vermutlich gibt es da auch irgendeinen Grund für, um nicht gefüllte Werte aus versehen zu löschen.

Für so eine selten genutzte Funktion würde ich eigentlich ungerne die plugn api weiter aufblähen, letztlich sind es ja nur zwei zeilen mit denen man im plugin dasselbe emulieren kann...

Viele Grüße,
Garvin

Re: remove config var

Posted: Sat Jan 08, 2011 2:15 pm
by Timbalu
Ok danke. Bei mir kam das allerdings doch vor... und somit ist PhpMyAdmin keine Wahl.
...vermutlich gibt es da auch irgendeinen Grund für, um nicht gefüllte Werte aus versehen zu löschen.
Das verstehe ich gerad nicht. Wie meinst du das?

Ich würde dann aber vorschlagen das auskommentierte cleanup() Beispiel
serendipity_plugin_api::remove_plugin_value($this->instance, array('title', 'description'));
in sowas wie
serendipity_plugin_api::remove_plugin_value($this->instance, array('name1', 'name2', ...));
zu ändern, da remove_plugin_value das array als ['{instance}/{key}_%' AND value=''] zum Suchen und Löschen benutzt. Das 'description' verwirrt da nur und lockt einen auf falsche Schlüsse.

Komischerweise nutzte meine zu löschende config var gar keinen Unterstrich, wurde aber trotzdem gelöscht. Wie kann das sein?

Ian

Re: remove config var

Posted: Sat Jan 08, 2011 11:34 pm
by garvinhicking
Hi!

Okay, guter punkt! Habe ich im Code aktualisiert, danke!

Gelöscht wurde es wohl weil "_" ja auch ein SQL-Platzhalter für ein beliebiges Zeichen ist :)

Grüße,
Garvin