Skip to content

Instantly share code, notes, and snippets.

@tabsl
Created September 4, 2023 05:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tabsl/73c81541a256f11166bb6ba9de1e8e76 to your computer and use it in GitHub Desktop.
Save tabsl/73c81541a256f11166bb6ba9de1e8e76 to your computer and use it in GitHub Desktop.
Syncs sendy list with oxid user group
<?php
if ($_GET['key'] != 'YOUR_KEY') {
exit;
}
// Sendy
$sendyHost = 'localhost';
$sendyUser = '';
$sendyPass = '';
$sendyDb = '';
$listId = 'SENDY_LIST_ID';
// OXID eShop
$oxidHost = 'localhost';
$oxidUser = '';
$oxidPass = '';
$oxidDb = '';
$kundengruppeId = 'OXID_GROUP_ID';
$countryId = 'OXID_COUNTRY_ID';
$sendyConn = new mysqli($sendyHost, $sendyUser, $sendyPass, $sendyDb);
if ($sendyConn->connect_error) {
die("Verbindung zu Sendy fehlgeschlagen: " . $sendyConn->connect_error);
}
$oxidConn = new mysqli($oxidHost, $oxidUser, $oxidPass, $oxidDb);
if ($oxidConn->connect_error) {
die("Verbindung zu OXID fehlgeschlagen: " . $oxidConn->connect_error);
}
$oxidConn->query('SET sql_mode = ""');
$sql = "SELECT email, name, unsubscribed FROM subscribers WHERE list = '" . $listId . "'";
$result = $sendyConn->query($sql);
if ($result->num_rows > 0) {
while ($row = $result->fetch_assoc()) {
$email = $row['email'];
$name = $row['name'];
$unsubscribed = $row['unsubscribed'];
$userCheck = $oxidConn->query("SELECT OXID FROM oxuser WHERE OXUSERNAME = '" . $email . "'");
if ($userCheck->num_rows == 0 && $unsubscribed == 0) {
$insertQuery = "INSERT INTO oxuser (OXID, OXUSERNAME, OXLNAME, OXCREATE, LF_REGISTERMAIL, OXRIGHTS, OXSHOPID, OXCOUNTRYID)
VALUES ('" . generateRandomOxid() . "', '" . $email . "', '" . $name . "', NOW(), NOW(), 'user', 1, '".$countryId."')";
if (!$oxidConn->query($insertQuery)) {
echo "Fehler beim Erstellen von Benutzer: " . $email . ". Fehler: " . $oxidConn->error . "<br>";
} else {
echo "Benutzer erstellt: " . $email . "<br>";
}
}
$result2 = $oxidConn->query("SELECT OXID FROM oxuser WHERE OXUSERNAME = '" . $email . "'");
if ($result2->num_rows > 0) {
$userId = $result2->fetch_assoc()['OXID'];
$groupCheck = $oxidConn->query("SELECT * FROM oxobject2group WHERE OXOBJECTID = '" . $userId . "' AND OXGROUPSID = '" . $kundengruppeId . "'");
if ($unsubscribed == 0) {
if ($groupCheck->num_rows == 0) {
$insertQuery2 = "INSERT INTO oxobject2group (OXID, OXOBJECTID, OXGROUPSID)
VALUES ('" . generateRandomOxid() . "', '" . $userId . "', '" . $kundengruppeId . "')";
if (!$oxidConn->query($insertQuery2)) {
echo "Fehler beim Hinzufügen von Benutzer: " . $email . " zur Kundengruppe. Fehler: " . $oxidConn->error . "<br>";
} else {
echo "Benutzer hinzugefügt: " . $email . "<br>";
}
}
} elseif ($groupCheck->num_rows > 0) {
$deleteQuery = "DELETE FROM oxobject2group WHERE OXOBJECTID = '" . $userId . "' AND OXGROUPSID = '" . $kundengruppeId . "'";
if (!$oxidConn->query($deleteQuery)) {
echo "Fehler beim Entfernen von Benutzer: " . $email . " aus der Kundengruppe. Fehler: " . $oxidConn->error . "<br>";
} else {
echo "Benutzer entfernt: " . $email . "<br>";
}
}
}
}
} else {
echo "Keine Abonnenten gefunden.";
}
$sendyConn->close();
$oxidConn->close();
function generateRandomOxid()
{
return bin2hex(random_bytes(16));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment