/** * Verifier/creer l'auteur d'une souscription * @param $id_souscription * @param $champs * @param bool $notifier * @return mixed|string */ function profils_verifier_auteur_souscription($id_souscription, &$champs, $notifier = true) { $id_auteur = 0; $message = ""; $cadeau = false; if (!($souscription = sql_fetsel("*", "spip_souscriptions", "id_souscription=" . intval($id_souscription)))) { return ""; } $souscription_m = array_merge($souscription, $champs); // attention si c'est un cadeau prendre l'email du destinataire du cadeau // et l'auteur eventuellement deja cree pour lui if (isset($souscription_m['cadeau']) and $cadeau = $souscription_m['cadeau'] and $cadeau = unserialize($cadeau)) { $email = $cadeau['courriel']; $id_auteur = isset($cadeau['id_auteur']) ? $cadeau['id_auteur'] : 0; } else { $email = $souscription_m['courriel']; if (isset($champs['id_auteur']) and $champs['id_auteur']) { $id_auteur = $champs['id_auteur']; } if (!$id_auteur) { $id_auteur = $souscription['id_auteur']; } } // est-ce que l'auteur existe bien ? // $id_auteur == -1 pour ne pas creer d'auteur if ($id_auteur > 0 and !sql_countsel('spip_auteurs', 'id_auteur=' . intval($id_auteur))) { $id_auteur = 0; } // si pas d'id_auteur deja connu pour la souscription if (!$id_auteur and $email) { // cet auteur existe deja ? if ($row = sql_fetsel("*", "spip_auteurs", "email=" . sql_quote($email) . " AND statut<>" . sql_quote("5poubelle"))) { $id_auteur = $row['id_auteur']; $message = _T('profils:message_souscription_info_deja_profil', array('email' => $email)); } else { include_spip("inc/profils"); if ($cadeau and !isset($champs['cadeau'])) { $champs['cadeau'] = serialize($cadeau); } if ($id_auteur = profils_creer_depuis_souscription($souscription, $notifier)) { $message = _T('profils:message_souscription_info_creation_profil', array('email' => $email)); } } if ($id_auteur) { if ($cadeau) { $cadeau['id_auteur'] = $id_auteur; $champs['cadeau'] = serialize($cadeau); // si jamais l'auteur de la souscription est connu, on lui attribue la souscription, c'est mieux if (($email2 = $souscription_m['courriel'] or $email2 = $souscription['courriel']) and $id2 = sql_getfetsel("id_auteur", "spip_auteurs", "email=" . sql_quote($email2) . " AND statut<>" . sql_quote("5poubelle"))) { $champs['id_auteur'] = $id2; } } else { $champs['id_auteur'] = $id_auteur; // doit on le loger ? oui si pas d'historique de souscription (a confirmer) if (!sql_countsel("spip_souscriptions", "id_auteur=" . intval($id_auteur) . " AND id_souscription<>" . intval($id_souscription))) { // TODO : loger l'auteur ? } } } } return $message; }
function profils_importer_vieilles_souscriptions() { $sous = sql_allfetsel("*", "spip_souscriptions", "id_auteur=0 AND (abo_statut<>" . sql_quote('non') . " OR recu_fiscal=" . sql_quote("on") . ")"); #var_dump(count($sous)); foreach ($sous as $sou) { #var_dump($sou); $email = $sou['courriel']; if ($row = sql_fetsel("*", "spip_auteurs", "email=" . sql_quote($email) . " AND statut<>" . sql_quote("5poub"))) { $id_auteur = $row['id_auteur']; sql_updateq("spip_souscriptions", array('id_auteur' => $id_auteur), "id_auteur=0 AND id_souscription=" . intval($sou['id_souscription'])); } else { include_spip("inc/profils"); $id_auteur = profils_creer_depuis_souscription($sou, false); } if ($id_auteur) { $trans = sql_allfetsel("id_objet", "spip_souscriptions_liens", "id_souscription=" . intval($sou['id_souscription']) . " AND objet=" . sql_quote('transaction')); $trans = array_map('reset', $trans); sql_updateq("spip_transactions", array('id_auteur' => $id_auteur), "id_auteur=0 AND " . sql_in('id_transaction', $trans)); } #var_dump($id_auteur); if (time() > _TIME_OUT) { return; } } }