/**
 * Migration des albums grappes vers media_collections
 * 
 * Appelée lors de l'installation du plugin
 */
function geol_albums_init()
{
    if ($grappes = sql_allfetsel('*', 'spip_grappes', sql_in('type', array('album_perso', 'album_coop', 'balade')))) {
        include_spip('action/editer_objet');
        include_spip('action/editer_liens');
        foreach ($grappes as $grappe) {
            // récupérer les infos des anciens albums (grappes)
            $set = array('id_admin' => $grappe['id_admin'], 'titre' => $grappe['titre'], 'descriptif' => $grappe['descriptif'], 'date' => $grappe['date']);
            if ($grappe['type'] == 'album_perso') {
                $set['type_collection'] = 'perso';
            } elseif ($grappe['type'] == 'album_coop') {
                $set['type_collection'] = 'coop';
            } elseif ($grappe['type'] == 'balade') {
                $set['type_collection'] = 'balade';
            }
            // créer des collections
            $id_collection = objet_inserer('collection');
            if ($id_collection > 0) {
                objet_modifier('collection', $id_collection, $set);
                objet_instituer('collection', $id_collection, array('statut' => 'publie'));
                // copie des liens de grappes_liens vers collections_liens pour les articles
                $articles = sql_allfetsel('*', 'spip_grappes_liens', "objet = 'article' AND id_grappe = " . $grappe['id_grappe']);
                foreach ($articles as $article) {
                    objet_associer(array('collection' => $id_collection), array($article['objet'] => $article['id_objet']), array('rang' => $article['rang']));
                }
                // associer l'auteur id_admin de la grappe à la collection
                objet_associer(array('auteur' => $grappe['id_admin']), array('collection' => $id_collection));
                // copie des liens de grappes_liens vers auteurs_liens pour les auteurs
                $auteurs = sql_allfetsel('*', 'spip_grappes_liens', "objet = 'auteur' AND id_grappe = " . $grappe['id_grappe']);
                foreach ($auteurs as $auteur) {
                    objet_associer(array($auteur['objet'] => $auteur['id_objet']), array('collection' => $id_collection));
                }
                // maj des liens des forums attachés aux grappes
                $forums = sql_allfetsel('id_forum', 'spip_forum', "objet = 'grappe' AND id_objet = " . $grappe['id_grappe']);
                foreach ($forums as $forum) {
                    sql_updateq('spip_forum', array('objet' => 'collection', 'id_objet' => $id_collection), 'id_forum = ' . $forum['id_forum']);
                }
                // maj des liens des points gis attachés aux grappes
                $points = sql_allfetsel('id_gis', 'spip_gis_liens', "objet = 'grappe' AND id_objet = " . $grappe['id_grappe']);
                foreach ($points as $point) {
                    sql_updateq('spip_gis_liens', array('objet' => 'collection', 'id_objet' => $id_collection), 'id_gis = ' . $point['id_gis']);
                }
            }
        }
    }
}
/**
 * Appelle toutes les fonctions de modification d'un objet
 * $err est un message d'erreur eventuelle
 *
 * @param string 'spip_reservation_credit_mouvement'
 * @param int $id
 * @param array|null $set
 * @return mixed|string
 */
function reservation_credit_modifier($id, $set = null)
{
    spip_log($ste, 'teste');
    $table_sql = 'spip_reservation_credits';
    $trouver_table = charger_fonction('trouver_table', 'base');
    $desc = $trouver_table($table_sql);
    if (!$desc or !isset($desc['field'])) {
        spip_log("Objet 'spip_reservation_credit_mouvement' inconnu dans objet_modifier", _LOG_ERREUR);
        return _L("Erreur objet 'spip_reservation_credit_mouvement' inconnu");
    }
    include_spip('inc/modifier');
    $champ_date = 'date_creation';
    $white = array_keys($desc['field']);
    // on ne traite pas la cle primaire par defaut, notamment car
    // sur une creation, id_x vaut 'oui', et serait enregistre en id_x=0 dans la base
    $white = array_diff($white, array($desc['key']['PRIMARY KEY']));
    if (isset($desc['champs_editables']) and is_array($desc['champs_editables'])) {
        $white = $desc['champs_editables'];
    }
    $c = collecter_requests($white, array($champ_date, 'statut', 'id_parent', 'id_secteur'), $set);
    $c['id_reservation_credit'] = $id_reservation_credit;
    // Si l'objet est publie, invalider les caches et demander sa reindexation
    if (objet_test_si_publie('reservation_credit', $id)) {
        $invalideur = "id='reservation_credit_mouvement/{$id}'";
        $indexation = true;
    } else {
        $invalideur = "";
        $indexation = false;
    }
    if ($err = objet_modifier_champs('reservation_credit', $id, array('nonvide' => '', 'invalideur' => $invalideur, 'indexation' => $indexation, 'date_modif' => isset($desc['field']['date_modif']) ? 'date_modif' : ''), $c)) {
        return $err;
    }
    // Modification de statut, changement de rubrique ?
    // FIXME: Ici lorsqu'un $set est passé, la fonction collecter_requests() retourne tout
    //         le tableau $set hors black liste, mais du coup on a possiblement des champs en trop.
    $c = collecter_requests(array($champ_date, 'statut', 'id_parent'), array(), $set);
    $err = objet_instituer('reservation_credit', $id, $c);
    return $err;
}
/**
 * Appelle toutes les fonctions de modification d'un objet
 * $err est un message d'erreur eventuelle
 *
 * @param int $id
 * @param array|null $set
 * @return mixed|string
 */
function reservation_credit_mouvement_modifier($id, $set = null)
{
    $table_sql = 'spip_reservation_credit_mouvements';
    $trouver_table = charger_fonction('trouver_table', 'base');
    $desc = $trouver_table($table_sql);
    if (!$desc or !isset($desc['field'])) {
        spip_log("Objet 'spip_reservation_credit_mouvement' inconnu dans objet_modifier", _LOG_ERREUR);
        return _L("Erreur objet 'spip_reservation_credit_mouvement' inconnu");
    }
    include_spip('inc/modifier');
    $champ_date = '';
    if (isset($desc['date']) and $desc['date']) {
        $champ_date = $desc['date'];
    } elseif (isset($desc['field']['date'])) {
        $champ_date = 'date';
    }
    $white = array_keys($desc['field']);
    // on ne traite pas la cle primaire par defaut, notamment car
    // sur une creation, id_x vaut 'oui', et serait enregistre en id_x=0 dans la base
    $white = array_diff($white, array($desc['key']['PRIMARY KEY']));
    if (isset($desc['champs_editables']) and is_array($desc['champs_editables'])) {
        $white = $desc['champs_editables'];
    }
    // Si il n'y pas encore de compte crédit pour l'email en question, on le crée
    $id_reservation_credit = _request('id_reservation_credit') ? _request('id_reservation_credit') : (isset($set['id_reservation_credit']) ? $set['id_reservation_credit'] : '');
    $email = _request('email') ? _request('email') : (isset($set['email']) ? $set['email'] : '');
    if (!$id_reservation_credit) {
        if (!($id_reservation_credit = sql_getfetsel('id_reservation_credit', 'spip_reservation_credits', 'email = ' . sql_quote($email)))) {
            $action = charger_fonction('editer_objet', 'action');
            $reservation_credit = $action('new', 'reservation_credit');
            $id_reservation_credit = $reservation_credit[0];
        }
    }
    $c = collecter_requests($white, array($champ_date, 'statut', 'id_parent', 'id_secteur'), $set);
    $c['id_reservation_credit'] = $id_reservation_credit;
    // Si l'objet est publie, invalider les caches et demander sa reindexation
    if (objet_test_si_publie('reservation_credit_mouvement', $id)) {
        $invalideur = "id='reservation_credit_mouvement/{$id}'";
        $indexation = true;
    } else {
        $invalideur = "";
        $indexation = false;
    }
    if ($err = objet_modifier_champs('reservation_credit_mouvement', $id, array('nonvide' => '', 'invalideur' => $invalideur, 'indexation' => $indexation, 'date_modif' => isset($desc['field']['date_modif']) ? 'date_modif' : ''), $c)) {
        return $err;
    }
    // Modification de statut, changement de rubrique ?
    // FIXME: Ici lorsqu'un $set est passé, la fonction collecter_requests() retourne tout
    //         le tableau $set hors black liste, mais du coup on a possiblement des champs en trop.
    $c = collecter_requests(array($champ_date, 'statut', 'id_parent'), array(), $set);
    $err = objet_instituer('reservation_credit_mouvement', $id, $c);
    // Actualiser le montant de crédit
    $sql = sql_select('montant,type,devise', 'spip_reservation_credit_mouvements', 'id_reservation_credit=' . $id_reservation_credit);
    $montant = array();
    while ($data = sql_fetch($sql)) {
        $id = isset($data['devise']) ? $data['devise'] : 'sans_devise';
        if ($data['type'] == 'credit') {
            $montant[$id] = $montant[$id] + $data['montant'];
        } elseif ($data['type'] == 'debit') {
            $montant[$id] = $montant[$id] - $data['montant'];
        }
    }
    sql_updateq('spip_reservation_credits', array('credit' => serialize($montant)), 'id_reservation_credit=' . $id_reservation_credit);
    return $err;
}
/**
 * Changer de statut si transaction en attente
 *
 * @pipeline trig_bank_reglement_en_attente
 *
 * @param array $flux
 * @return array
 */
function reservation_bank_trig_bank_reglement_en_attente($flux)
{
    $id_reservation = sql_getfetsel('id_reservation', 'spip_transactions', 'id_transaction=' . $flux['args']['id_transaction']);
    include_spip('action/editer_objet');
    objet_instituer('reservation', $id_reservation, array('statut' => 'attente_paiement'));
    return $flux;
}
Пример #5
0
/**
 * Traitements du formulaire instituer objet
 * 
 * @param string $objet
 *     Type d'objet
 * @param int $id_objet
 *     Identifiant de l'objet
 * @param string $retour
 *     URL de redirection après le traitement
 * @param bool $editable
 *     Indique si le statut est éditable ou non.
 * @return array
 *     Retour des traitements
 */
function formulaires_instituer_objet_traiter_dist($objet, $id_objet, $retour = "", $editable = true)
{
    $c = array('statut' => _request('statut'));
    // si on a envoye une 'date_posterieure', l'enregistrer
    // todo dans le HTML
    if ($d = _request('date_posterieure')) {
        $c['date'] = $d;
    }
    include_spip('action/editer_objet');
    if ($err = objet_instituer($objet, $id_objet, $c)) {
        $res = array('message_erreur' => $err);
    } else {
        $res = array('message_ok' => _T('info_modification_enregistree'));
        if ($retour) {
            $res['redirect'] = $retour;
        }
        set_request('statut');
        set_request('date_posterieure');
    }
    return $res;
}
Пример #6
0
function instituer_syndic($id_syndic, $c, $calcul_rub = true)
{
    include_spip('action/editer_objet');
    return objet_instituer('site', $id_syndic, $c, $calcul_rub);
}