Beiträge von SLM

    ja, geht problemlos. Man muss in der user.class.php bei der Funktion BuildvCard es auch so machen: 'firma' => $this->_row['company']. Sonst wird das Keyword firma nicht angesprochen. Deine Änderungen (bis auf die Anrede, siehe dazu separates Thema Anrede) habe ich soweit übernommen und ist im letzten Commit enthalten.

    OK, aber man muss halt zusätzlich die user.class.php anpassen. Zusätzliche Änderungen wollte ich vermeiden ;) Meine Installation werde ich dann irgendwann auch entpsrechend anpassen, sonst gibts später bei eventuellen Updates ja wieder Probleme.

    Um auch auf die Themen Datenschutz und Datensicherheit mal ein wenig einzugehen:

    • Es sollte künftig ermöglicht werden, dass Daten nicht mehr in Klartext sondern verschlüsselt in der Datenbank abgelegt werden (wahlweise)
    • Bei der Speichermethode (Dateisystem: Eine Datei pro Objekt) ist ebenfalls anzudenken, dass die Dateien verschlüsselt werden (können).

    Ergänzung #1:

    • DSGVO-kompatibles Captcha.

    Weitere Vorschläge diesbezüglich?

    Das Feld "firma" in den Kontaktdaten des Users wurde über Jahre bislang schlichtweg vergessen. Deshalb habe ich mir selbst diese Lösung mit Firma + UST-ID gebaut, vor allem, weil kunden das Fehlen reklamiert haben.

    Sebijk kannst du bitte mal prüfen, ob die Visitenkarte (anzuhängen beim E-Mailversand) auch die richtigen Daten aus deinem Feld "company" statt "firma" enthält? Die vcard.class.php verwendet nämlich den Wert "firma" beim erstellen der Datei den Wert "firma". Mit meiner Version wird die Firma in die Visitenkarte übernommen:

    Code
    else if($key == 'firma')
                {
                    $lines[] = 'ORG:' . $value;
                }

    Mein Rechnungstemplate kann ich nicht anhängen, da ich über die Jahre zu viele Änderungen am Original vorgenommen habe. Das Original-Rechnungstemplate um die beiden Tags zu erweitern sollte nicht so schwer sein.

    Zum Thema Code: Da ich - wie bereits mehrfach erwähnt - kein Entwickler bin und lediglich die Anpassungen / Änderungen die ich beitragen kann mit euch teilen möchte, kann ich das nur in der mir möglichen Form.

    Danke für den Hinweis mit dem Hinweis auf die Tabelle bm60_adressen.

    Für alle, die die kompletten Daten bei der Registrierung abfragen muss auch noch die index.php im Abschnitt "signup" und das "signup.tpl" angepasst werden. Da ich diese Daten bei der Registrierung nicht abfrage, habe ich das bei mir nicht umgesetzt.

    Hat sich schon jemand Gedanken über das Template für den internen Bereich gemacht? Es sollte auf jeden Fall responsive sein und letztendlich die mobile Version gleich mit ersetzen.

    Ich würde gerne eure Vorschläge hören/lesen, in welche Richtung das ganze gehen soll und mit welcher/m Technik / Framework es umgesetzt werden sollte.

    Schon jemand ein Beispiel an dem man mitarbeiten und helfen könnte?

    • Freigegebene Ordner können nur per eindeutiger Url geöffnet werden (/share/?folder=asd8fasdfasdfasdg), der Hash wird z.B. anhand der Ordner ID und Timestamp erstellt
      • Als Konsequenz können nicht mehr alle freigegebenen Ordner eines Benutzers angezeigt werden
    • Als Option kann angegeben werden ob man Daten hochladen kann oder nicht (aber nur falls ein Passwort angegeben wurde)

    Super!

    Toll wäre es, wenn man im UCP auswählen könnte, ob der Link zur Freigabe generell (dauerhaft) oder zeitlich limitiert gültig ist.

    Die zeitliche Limitierung könnte man dann noch gruppenabhängig machen.

    • Grundfunktion: Link dauerhaft erreichbar.
    • Premiumfunktion: Link zu Ordner zeitlich limitiert gültig.

    Wenn ich dich unterstützen kann (z.B. beim Testen) sag Bescheid.

    Wichtiger Hinweis: viele Nutzer haben als optionales Profilfeld bereits Firma/Verein angelegt, dieses sollte dann genutzt werden oder in neue Spalte übernommen und aus Profilfeldern gelöscht werden !!!

    Tabelle firma und inv_firma Länge 255 statt 50, da sonst Firmennamen abgeschnitten werden beim speichern!

    Profilfeld kam nicht in Frage, da nicht mehrsprachig. Und genau darum, weil jeder so seine eigene Lösung zwischenzeitlich gebastelt hat, sollte man die beiden Felder mal fest integrieren, zumal diese Angaben heutzutage überall Standard sind.

    Patrick hat früher oft schon Vorschläge oder Plugins irgendwann in das System integriert, wenn er einen Mehrwert gesehen hat.

    Mein Vorschlag ist ja nicht in Stein gemeißelt, soll nur einen Lösungsansatz darstellen. Den Längenwert auf 255 Zeichen anzupassen ist eine gute Idee ;)

    Ich hab mir mal die Anpassungen vorgenommen die für gewerbliche Kunden notwendig sind, da diese bislang nicht im System vorgesehen waren. Dazu zählen die Felder "Firma" und "USt-ID bzw. Steuer-Nr." Dazu habe ich noch den Wert "Divers" hinzugefügt, der für eventuelle genderneutrale Installationen wichtig ist.

    Basis sind die Dateien meiner Installation, also b1gMail 7.4PL2. Der Wert "firma" und nicht "company" wurde gewählt, da der Wert "firma" bereits in der serverlib/vcard.class.php systemseitig verwendet wird. "taxid" habe ich in Anlehnung an den schon vorhandenen Begriff "tax" verwendet.

    ----------------------------------

    Datenbankanpassungen:


    Neue Spalten in DB einfügen: 


    Tabelle bm60_users: „firma“ und „taxid“ - varchar(50) 

    Tabelle bm60_orders: „inv_firma“ und „inv_taxid“ - varchar(50)


    Anrede Auswahlmenü anpassen: 

    Tabelle bm60_users: Spalte „anrede“ ergänzt: 'herr','frau',‘divers‘,'firma' 

    ----------------------------------

    Geänderte Dateien (anhängend):

    - prefs.php

    - serverlib/payment.class.php

    - serverlib/user.class.php

    Templates angepasst (anhängend):

    • plugins/templates/pacc.nli.order.tpl
    • plugins/templates/pacc.user.order.tpl
    • li/payment.form.tpl
    • li/prefs.contact.tpl


    Sprachdateien müssen selbst angepasst werden:

    - languages/deutsch.lang.php

    - languages/english.lang.php


    $lang_user['divers'] = 'Divers';

    $lang_user['firma'] = 'Firma';

    $lang_user['taxid'] = 'USt-ID';

    $lang_user['yourtaxid'] = 'Ihre USt-ID';

    $lang_user['divers'] = 'Divers';

    $lang_user['firma'] = 'Company';

    $lang_user['taxid'] = 'VAT';

    $lang_user['yourtaxid'] = 'Your VAT';



    Die Sprachvariable „yourtaxid“ wird nur im Rechnungstemplate verwendet. 


    Rechnungstemplate (muss selbst ergänzt werden):


    Adressfeld um Firma ergänzen: 

    {if $firma}{$firma}<br />{/if} 

    Steuer-Nr / Ust-ID. des Kunden ergänzen: 

    {if $taxid}<br /><strong>{lng p="yourtaxid"}:</strong> {$taxid}{/if} 


    Der Adminbereich (ACP):

    • admin/templates/users.edit.tpl
    • admin/users.php

    kann ggfls. selbst um die Felder und Werte ergänzt werden.

    --------------

    Die Datei serverlib/vcard.class.php muss ggfls. noch um die zusätzliche Anrede ergänzt werden, das habe ich bislang noch nicht geschafft.

    Sebijk / ManDal eventuell könnt ihr das ja direkt bei den neuen Releases mit berücksichtigen. Falls noch etwas fehlt oder falsch ist wäre es nett, wenn wir das gemeinsam ergänzen / ändern.


    Wichtig: Bitte vorher ausgiebig testen und dann erst in Produktionsumgebung einsetzen!

    Ich übernehmen keine Garantie und hafte nicht bei eventuell auftrendenden Schäden an euren Systemen ;)

    Hat jemand eine Ahnung wie die App und die Toolbox auf die Daten zugreifen?

    Für die Toolbox wäre Patrick der richtige Ansprechpartner. Die App greift soweit ich weiß über eine API und PHP auf b1gMail zu. Genaueres könnte dir da aber Martin / @möp sagen.

    Da ich sehr viele Webdisk Nutzer*Innen habe, kann ich aus Erfahrung und Feedback folgende Punkte als wichtig einstufen:

    • Fehlerhandling verbessern: Beim Upload von Dateien, die zu groß gemäß den im ACP definierten Limits sind, erhält man keinerlei Feedback. Das Script bricht nur irgendwann ab. Beim Upload sollte direkt angezeigt werden, dass eine Datei nicht den Vorgaben und/oder Limits entspricht.
    • Einfaches herunterladen eines kompletten Ordners bzw. dessen Inhalts - ohne ZIP. Hier bitte auch Ordnerinhalte größer 1GB berücksichtigen - ohne PHP-Timeout. Aktuell muss man umständlich jede Datei einzeln bzw. mehrere Dateien markieren um sie dann herunterladen zu können.
    • Bild- und PDF-Vorschau: Eventuell kann man damit auch das Plugin Webdiskgalerie ersetzen.
    • Fotoalbum-Modus / Lightbox-Gallerie intern als auch im Sharebereich anzeigen.
    • Einzelne Dateien (Beispiel Wetransfer) und einzelne Ordner per Link freigeben statt alle freigegebenen Ordner anzuzeigen.
    • Einzelne Dateien freigeben: Größenlimit pro versendbarer Datei und Transferlimit separat in ACP-Gruppeneinstellung defnieren (so gewinnt man auch Premiumnutzer dazu).
    • Einfacheres Kopieren von Dateien und Ordnern
    • Freigabe-Link anonymisieren. Die E-Mailadresse hat in der Freigabe / im Freigabelink nichts zu suchen. Mein System habe ich vor Längerem schon umgerüstet und zeige nur die UserID (share/?user=111) an. Das ist nur eine Notlösung gewesen, aber wenig sinnvoll. Die Freigabe sollte aus Sicherheits- und Datenschutzgründen eine zufällige ID erhalten.
    • Hochladen von Daten vereinfachen (Auswahl der Upload Felder)
    • Drag & Drop sollte auf jeden Fall weiterhin möglich sein.

    Deswegen halte ich es sinnvoll, wenn es jemand gibt, der die Webdisk pflegen möchte.

    Leider bin ich kein Entwickler und kann da nicht aktiv mithelfen (von kleineren Anpassungen mal abgesehen). Ich helfe selbstverständlich mit wo ich kann. Z.B. irgendwelche Layoutsachen oder dergleichen, wenn der Rahmen vorgegeben ist.

    Und abgesehen von der MP-App sollte trotzdem drauf geachtet werden, dass es ein geschlossenes System bleibt.

    Bei externen Lösungen ist man auch immer darauf angewiesen, dass sich ein anderer Entwickler darum kümmert. Außerdem sind Schnittstellen zu externen Tools oft fehleranfällig und bilden immer eine Schwachstelle im System, die man nicht selbst kontrollieren kann.

    Das Problem mit einer externen Cloudlösung: Ihr vergesst dabei die mobilen Nutzer, die per App auf die Webdisk zugreifen und man kann damit die App von @möp / Martin nicht mehr nutzen. Das erfordert wieder eine zusätzliche App, noch dazu mit einem falschen Branding -> Aus meiner Sicht der falsche Ansatz.

    Bedenkt bitte bei allen euren Entwicklungen immer, dass das Wichtigste Ziel sein muss, den User / die Userin auf der eigenen Plattform bzw. im b1g-Universum zu halten und den Kunden gar nicht erst in Versuchung zu führen und nicht zu verleiten, Fremdsysteme zu nutzen.

    • Länderliste internationalisieren. Meine Vorstellung: Statt mit Länderbezeichnung mit Ländercodes arbeiten und diese in der Sprachdatei referenzieren (oder als Kennzeichnung die ID benutzen). Bisher ist die Länderliste immer in Deutsch.

    Das ist eine sehr gute Idee. Hierfür sollte die offiziellen ISO-Ländercodes verwendet werden: https://de.wikipedia.org/wiki/ISO-3166-1-Kodierliste

    ManDal hat das vorausschauend ja schon mal in seinem Wetter-Widget in die Tabelle {pre}_staaten eingebaut. Die Möglichkeit die Daten anzuzeigen und zu editieren habe ich in die Templates integriert (siehe Anhang).

    Nur hab ich noch keine Möglichkeit gefunden, die ISO-Codes mit der Sprachdatei zu referenzieren und das Länder-Auswahlmenü damit zu bestücken :/

    Juhu, Wunschkonzert ^^

    Allgemein:

    • Einheitliches und Responsives Template. Das bedeutet auch, dass die Mobile-Variante entfallen kann (weniger Pflegeaufwand).
    • Entwicklung ergänzend hin zu Collaboration / Teamfähigkeit
    • Backup-Funktion im UCP aktivierbar (gruppenabhängig).
    • Profilfelder mehrsprachig
    • Möglichkeit, mehrere System-E-Mailadressen anzulegen. Z.B. für die Willkommensmail, für den Newsletterversand, für Mail2SMS-Benachrichtigungen etc.

    Sicherheit:

    • Login mit Alternativ-Begriff ermöglichen dabei gleichzeitig oder als Option Login per E-Mail deaktivieren.
    • Sofern es irgendwie möglich wäre, sollte die Session-ID nicht mehr im Browser angezeigt werden.

    Kontaktdaten und alle notwendigen Dateien / Rechnungstemplate etc. erweitern:

    • Firma / Organisation.
    • Steuernummer / UST-ID (Sollte man eventuell nur abhängig voneinander anzeigen)

    E-Mail:

    • E-Mailverschlüsselung per OpenPGP / PGP, ähnlich wie es in den neuen Thunderbird-Versionen möglich ist. Das ist einfach zu benutzen und dann auch für jede/n verwendbar.
    • E-Mails zeitlich versetzt senden
    • E-Mails markieren und bestimmten Kontakten zuordnen
    • E-Mail-Ordner Anzahl begrenzen (gruppenabhängig)
    • Zeitsteuerung für Autoresponder

    Kalender:

    • Kalender um iCal-Funktion erweitern
    • Kalender teilen
    • Terminerinnerungen auch an alle Teilnehmer versenden

    Webdisk:

    • Möglichkeit, einzelne Dateien per Link mit einstellbarem Ablaufdatum zu versenden statt einen Ordner freigeben zu müssen.
    • Möglichkeit, einzelne Dateien oder Ordner zu verschlüsseln
    • Order Anzahl begrenzen (gruppenabhängig)

    Premiumplugin:

    • Automatische, wiederkehrende Zahlungen anlegen. Sollte beim Bestellen als Option für jeden Kunden auswählbar sein.
    • Möglichkeit, Aktionen zeitlich befristet anzulegen (z.B. 15% Rabatt von bis) im Paket XY).

    Newsletter:

    • Newslettersystem überarbeiten
    • Newsletter vorbereiten, Versandzeit einstellbar. Versand erfolgt dann automatisch im Hintergrund.
    • Bounce-Mails automatisch kennzeichnen und Empfängeradresse für den nächsten Versand sperren.

    Welchen Vorteil hat die Verwendung von b1gZip statt dem PHP-eigenen?

    Der Einsatz wäre m.E. sinnvoll, wenn man damit z.B. Laufzeitprobleme umgehen / lösen könnte. Laufzeitprobleme treten oft auf, wenn man z.B. große Datenmengen aus dem Posteingang herunterladen möchte. Mit der Standard-Zipvariante hört das System irgendwann einfach auf und es erscheint eine weiße Seite. Ohne Fehlermeldung etc. Das Zip wird dann einfach nicht erstellt.

    Einsatzgebiete:

    - Sicherung des Maildatenbestands per Download

    - Sicherung z.B. auch bei Beschlagnahmung von ganzen Postfächern


    2003 wurde b1gZIP veröffentlicht. Es nutzt die ZipArchive-Bibliothek von Artpool Software. b1gZIP dient zum Erstellen von Zip-Archiven und seit der Veröffentlichung hat sich nichts geändert. In b1gMail kommt b1gZIP vorrangig zum Erstellen von ZIP-Archiven in Einsatz (falls Modul existiert), bevor es auf die Zip-Klasse zurückgreift.

    Sourcecode inkl. Anleitung zum Kompilieren findet sich hier: https://github.com/b1gMail-OSS/php-b1gzip

    Ich habe heute die Erweiterung an PHP7 und 8 angepasst, so dass sie sich dort auch kompilieren und ausführen lässt.

    Was interessant wäre, wenn jemand mal die Zeit hätte, die Performance von b1gZip mit der vom php-zip oder anderen PHP Zip-Klassen zu vergleichen.