Created
September 4, 2023 05:39
-
-
Save tabsl/73c81541a256f11166bb6ba9de1e8e76 to your computer and use it in GitHub Desktop.
Syncs sendy list with oxid user group
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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