Ganz so trivial ist das ganze nun auch wieder nicht...
Damit jeder einer Umfrage neue Auswahlmöglichkeiten hinzufügen kann, mußst Du den sogenannten permissions_check-Plugin Hook verwenden. Dafür ist folgendes in der start.php des Polls-Plugins hinzuzufügen:
Zuest die folgende Zeile in der polls_init()-Funktion:
elgg_register_plugin_hook_handler('permissions_check', 'object', 'polls_write_permission_check');
und dann die polls_write_permission_check()-Funktion z.B. am Ende von start.php selbst:
function polls_write_permission_check($hook, $entity_type, $returnvalue, $params)
{
if ($params['entity']->getSubtype() == 'poll') {
$user = $params['user'];
if ($user) {
return true;
}
}
}
Durch Modifizieren des Codes in dieser Weise, wird jedem Mitglied Deiner Seite Schreibzugriff auf alle Polls-Elggobjekte gegeben. Das haben standardmäßig nur derjenige, der die Umfrage gestartet hat und Admins. Allerdings wird es durch diese Modifizierung allein auch jedem Mitglied möglich sein, jede Umfrage nicht nur zu verändern sondern auch zu löschen.
Was allerdings nach Änderung der Umfrageoptionen nicht möglich ist, ist die schon getroffene Abstimmungsentscheidung zu revidieren. Das Plugin sieht eine solche Möglichkeit nicht vor.
Das mit dem Löschen ist vielleicht auch noch recht einfach zu implementieren, aber die Möglichkeit, seine Meinung bei einer Umfrage zu ändern (ohne das die Stimme dann gleich zweimal gezählt wird) ist dann schon etwas komplizierten und zeitaufwändiger umzusetzen.
Ich glaube nicht, dass Dir das einer für umsonst zeitnah liefern wird. Wenn Du unbedingt darauf angewiesen bist, würde ich mal bei Kevin Jardine nachfragen, ob er sein Polls-Plugin Deinen Wünschen entsprechend erweitert. Da er aber eine professioneller Entwickler ist (also zum Lebensunterhalt Geld verdienen muss), wird er das wohl kaum für umsonst machen.
Vielen, vielen Dank.
Das hilft mir schonmal weiter. Das mit der Bezahlung des Wntwicklers ist so eine Sache...viel Geld möchte ich da jetzt auch nicht investieren. Zur Not werde ich irgendeine Elgg unabhängige Lösung wählen müssen. Das würde mich direkt zu einer nächsten Frage bringen: Welche Methode wäre am klügsten um eine Nutzersitzung, also den Login etc. auf eine eigene php-Anwendung zu übertragen? Hantiert man da am besten mit der Session, oder ist es besser den Login extra zu machen und auf die Elgg Datenbank zuzugreifen?
Ich hoffe das mein Gedankengang deutlich geworden ist...
Sorry, aber wie genau Du eine externe Anwendung einbindest, kann ich Dir leider nicht sagen. Ich denke, es kommt in ersten Linie schon mal darauf an, was für Möglichkeiten zur Nutzeridentifizierung diese Anwendung liefert. Im Prinzip kannst Du auf die Elgg-Funktionen innerhalb eines externen PHP-Skripts zurückgreifen, wenn Du ein Include von engine/start.php von Elgg in dieses Skript einfügst. Damit wäre auch eine Benutzervalidierung/-identifizierung über die Session möglich. Dann mußt Du natürlich trotzdem diese externe Anwendung "auf den Schirm" kriegen, d.h. irgendwie innerhalb Deiner Elgg-Seite einbinden.
Eine solche Einbindung läuft mehr oder weniger darauf hinaus, ein Elgg-Plugin dafür zu schreiben - sei es um nur einen Menulink zu haben, der einen auf die Seite der externen Anwendung leitet. Wenn die Integration so sein soll, dass ein Nutzer gar nicht merkt, dass er auf eine externe Anwendung zugreift, ist der Aufwand wahrscheinlich genau so gross wie eine Anpassung der Polls-Plugins. Du kannst aber u.U. auch einfach ein iframe innerhalb einer Seite auf Deiner Elgg-Installation einblenden. Innerhalb des iframes wäre dann die externe Anwendung. Das setzt aber vorraus, das diese Anwendung über die aufgerufene URL den Nutzer identifizieren kann (get_input) und die ganze Verwaltung von Abstimmungen selbst getrennt von der Elgg-Datenbank vornimmt.
Um direkt auf die Elgg-Datenbank zuzugreifen, gibt es wohl auch Möglichkeiten über die RestAPI von Elgg. Da hab ich allerdings noch nie was damit zu tun gehabt.
info@elgg.org
Security issues should be reported to security@elgg.org!
©2014 the Elgg Foundation
Elgg is a registered trademark of Thematic Networks.
Cover image by Raül Utrera is used under Creative Commons license.
Icons by Flaticon and FontAwesome.