Beispiel #1
0
/**
 * 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;
        }
    }
}