Example #1
0
function action_referencer_traduction_dist() {
	
	$securiser_action = charger_fonction('securiser_action', 'inc');
	$arg = $securiser_action();

	if (preg_match(",^(\d+)$,", $arg, $r)
	AND $trad = intval(_request('lier_trad'))) {
		include_spip('action/editer_article');
		if ($err = article_referent($r[1], array('lier_trad' => $trad)))
			redirige_par_entete(urldecode(_request('redirect')) . $err);
	} elseif (preg_match(",^(\d+)\D-(\d+)$,", $arg, $r))  {
	  // supprimer le lien de traduction
		sql_updateq("spip_articles", array("id_trad" => 0), "id_article=" . $r[1]);
		// Verifier si l'ancien groupe ne comporte plus qu'un seul article. Alors mettre a zero.
		$cpt = sql_countsel("spip_articles", "id_trad=" . $r[2]);

		if ($cpt == 1)
			sql_updateq("spip_articles", array("id_trad" => 0), "id_trad=" . $r[2]);
	} elseif (preg_match(",^(\d+)\D(\d+)\D(\d+)$,", $arg, $r)) {
	  // modifier le groupe de traduction de $r[1] (SQL le trouvera)
		sql_update('spip_articles', array("id_trad" => $r[3]), "id_trad=" . $r[2]);
	} elseif (preg_match(",^(\d+)\D(\d+)$,", $arg, $r)) {
		instituer_langue_article($r[1],$r[2]);
	} else {
		spip_log("action_referencer_traduction_dist $arg pas compris");
	}
}
Example #2
0
/**
 * il faut avoir un id_transaction et un transaction_hash coherents
 * pour se premunir d'une tentative d'appel exterieur
 *
 * 
 * @return array
 */
function presta_gratuit_call_response_dist()
{
    // recuperer la reponse en post et la decoder
    $id_transaction = _request('id_transaction');
    $transaction_hash = _request('hash');
    if (!($row = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction)))) {
        spip_log("id_transaction {$id_transaction} non trouve", 'gratuit.' . _LOG_ERREUR);
        return array($id_transaction, false);
    }
    if ($transaction_hash != $row['transaction_hash']) {
        spip_log("id_transaction {$id_transaction}, hash {$transaction_hash} non conforme", 'gratuit.' . _LOG_ERREUR);
        return array($id_transaction, false);
    }
    // verifier que la commande a bien un total nul, sinon ce mode de paiement n'est pas autorise
    if (intval($row['montant']) > 0 or floatval($row['montant']) > 0.0) {
        spip_log("id_transaction {$id_transaction}, montant " . $row['montant'] . ">0 interdit pour ce mode de paiement", 'gratuit.' . _LOG_CRITIQUE);
        return array($id_transaction, false);
    }
    // Ouf, le reglement a ete accepte
    sql_update("spip_transactions", array("mode" => sql_quote('gratuit'), "montant_regle" => 'montant', "date_paiement" => sql_quote(date('Y-m-d H:i:s')), "statut" => sql_quote('ok'), "reglee" => sql_quote('oui')), "id_transaction=" . intval($id_transaction));
    spip_log("gratuit_response : id_transaction {$id_transaction}, reglee", 'gratuit');
    $regler_transaction = charger_fonction('regler_transaction', 'bank');
    $regler_transaction($id_transaction, "", $row);
    return array($id_transaction, true);
}
function formulaires_ecatalogue_prices_group_traiter_dist()
{
    $result = array();
    $is_active = _request('is_active');
    $prices_group = _request('price');
    $elements_insert = _request('elements_insert');
    $isset_price_group = sql_select('*', 'spip_ecatalogue_prices_group');
    if ($isset_price_group) {
        while ($row = sql_fetch($isset_price_group)) {
            $id_price_group = $row['id_group'];
            if (isset($prices_group[$id_price_group])) {
                $name = $prices_group[$id_price_group];
                $status = isset($is_active[$id_price_group]) ? 1 : 0;
                sql_update('spip_ecatalogue_prices_group', array('titre' => '"' . $name . '"', 'is_active' => $status), 'id_group = ' . (int) $id_price_group);
            } else {
                sql_delete('spip_ecatalogue_prices_group', 'id_group = ' . $id_price_group);
                // Delete price group
            }
        }
    }
    if (is_array($elements_insert) && !empty($elements_insert)) {
        foreach ($elements_insert as $key => $value) {
            $name = $value['titre'];
            $is_active = isset($value['is_active']) ? 1 : 0;
            sql_insert('spip_ecatalogue_prices_group', '(titre,is_active)', '("' . $name . '",' . $is_active . ')');
        }
    }
    return $result;
}
Example #4
0
 function MyCommit($row)
 {
     // Переносим изображение
     if ($row['image'] && getimagesize('..' . $row['image']) && strpos($row['image'], 'plans') === false) {
         $object_id = sql_getValue('SELECT pid FROM obj_elem_plans WHERE id=' . $row['pid']);
         $dir = '../files/objects/' . $object_id;
         if (!is_dir($dir)) {
             mkdir($dir);
             mkdir($dir, 0770);
         }
         $dir .= '/plans';
         if (!is_dir($dir)) {
             mkdir($dir);
             mkdir($dir, 0770);
         }
         $new_name = $dir . '/' . basename($row['image']);
         rename('..' . $row['image'], $new_name);
         $row['image'] = substr($new_name, 2);
     }
     if ($_POST['id']) {
         sql_update($this->elem_table, $row, 'id = ' . $_POST['id']);
     } else {
         sql_insert($this->elem_table, $row);
     }
     $err = sql_getError();
     if (empty($err)) {
         return 1;
     }
     return $err;
 }
Example #5
0
/**
 * il faut avoir un id_transaction et un transaction_hash coherents
 * pour se premunir d'une tentative d'appel exterieur
 *
 * 
 * @return array
 */
function presta_cheque_call_response_dist()
{
    // recuperer la reponse en post et la decoder
    $id_transaction = _request('id_transaction');
    $transaction_hash = _request('hash');
    if (!($row = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction)))) {
        spip_log("id_transaction {$id_transaction} non trouve", 'gratuit.' . _LOG_ERREUR);
        return array($id_transaction, false);
    }
    if ($transaction_hash != $row['transaction_hash']) {
        spip_log("id_transaction {$id_transaction}, hash {$transaction_hash} non conforme", 'gratuit.' . _LOG_ERREUR);
        return array($id_transaction, false);
    }
    // l'autorisation refere l'id_auteur et le nom de celui qui accepte le cheque
    $autorisation = $GLOBALS['visiteur_session']['id_auteur'] . "/" . $GLOBALS['visiteur_session']['nom'];
    include_spip("inc/autoriser");
    if (!autoriser('encaissercheque', 'transaction', $id_transaction)) {
        spip_log("id_transaction {$id_transaction}, tentative d'encaisser un cheque par auteur #{$autorisation} pas autorise", 'cheque.' . _LOG_CRITIQUE);
        return array($id_transaction, false);
    }
    // OK, on peut accepter le reglement
    sql_update("spip_transactions", array("mode" => sql_quote('cheque'), "autorisation_id" => sql_quote($autorisation), "montant_regle" => 'montant', "date_paiement" => sql_quote(date('Y-m-d H:i:s')), "statut" => sql_quote('ok'), "reglee" => sql_quote('oui')), "id_transaction=" . intval($id_transaction));
    spip_log("cheque_response : id_transaction {$id_transaction}, reglee", 'cheque');
    $regler_transaction = charger_fonction('regler_transaction', 'bank');
    $regler_transaction($id_transaction, "", $row);
    return array($id_transaction, true);
}
/**
 * Cron de calcul des popularités des articles
 *
 * @uses genie_popularite_constantes()
 *
 * @param int $t
 *     Timestamp de la dernière exécution de cette tâche
 * @return int
 *     Positif si la tâche a été terminée, négatif pour réexécuter cette tâche
 **/
function genie_popularites_dist($t)
{
    // Si c'est le premier appel, ne pas calculer
    $t = $GLOBALS['meta']['date_popularites'];
    ecrire_meta('date_popularites', time());
    if (!$t) {
        return 1;
    }
    $duree = time() - $t;
    list($a, $b) = genie_popularite_constantes($duree);
    // du passe, faisons table (SQL) rase
    sql_update('spip_articles', array('maj' => 'maj', 'popularite' => "popularite * {$a}"), 'popularite>1');
    // enregistrer les metas...
    $row = sql_fetsel('MAX(popularite) AS max, SUM(popularite) AS tot', "spip_articles");
    ecrire_meta("popularite_max", $row['max']);
    ecrire_meta("popularite_total", $row['tot']);
    // Une fois par jour purger les referers du jour ; qui deviennent
    // donc ceux de la veille ; au passage on stocke une date_statistiques
    // dans spip_meta - cela permet au code d'etre "reentrant", ie ce cron
    // peut etre appele par deux bases SPIP ne partageant pas le meme
    // _DIR_TMP, sans tout casser...
    $aujourdhui = date("Y-m-d");
    if (($d = $GLOBALS['meta']['date_statistiques']) != $aujourdhui) {
        spip_log("Popularite: purger referer depuis {$d}");
        ecrire_meta('date_statistiques', $aujourdhui);
        if (strncmp($GLOBALS['connexions'][0]['type'], 'sqlite', 6) == 0) {
            spip_query("UPDATE spip_referers SET visites_veille=visites_jour, visites_jour=0");
        } else {
            sql_alter("TABLE spip_referers DROP visites_veille,\n\t\t\tCHANGE visites_jour visites_veille INT(10) UNSIGNED NOT NULL DEFAULT '0',\n\t\t\tADD visites_jour INT(10) UNSIGNED NOT NULL DEFAULT '0'");
        }
    }
    // et c'est fini pour cette fois-ci
    return 1;
}
Example #7
0
function auth_spip_dist ($login, $pass, $serveur='') {

	// retrouver le login
	$login = auth_spip_retrouver_login($login);
	// login inconnu, n'allons pas plus loin
	if (!$login) return array();

	$md5pass = $md5next = "";
	$shapass = $shanext = "";

	if (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64})\}$,i",$pass,$regs)){
		$shapass = $regs[1];
		$shanext = $regs[2];
		$pass="";
	}
	// compat avec une base mixte md5/sha256 : le js a envoye les 2 hash
	elseif (preg_match(",^\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\}$,i",$pass,$regs)){
		$shapass = $regs[1];
		$shanext = $regs[2];
		$md5pass = $regs[3];
		$md5next = $regs[4];
		$pass="";
	}

	// si envoi non crypte, crypter maintenant
	elseif ($pass) {
		$row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login="******"*", "spip_auteurs", "login="******" AND pass="******" AND statut<>'5poubelle'",'','','','',$serveur);

	// compat avec les anciennes bases en md5
	if (!$row AND $md5pass)
		$row = sql_fetsel("*", "spip_auteurs", "login="******" AND pass="******" AND statut<>'5poubelle'",'','','','',$serveur);

	// login/mot de passe incorrect
	if (!$row) return array();

	// fait tourner le codage du pass dans la base
	if ($shanext) {

		include_spip('inc/acces'); // pour creer_uniqid
		@sql_update('spip_auteurs', array('alea_actuel' => 'alea_futur', 'pass' => sql_quote($shanext), 'alea_futur' => sql_quote(creer_uniqid())), "id_auteur=" . $row['id_auteur'].' AND pass IN ('.sql_quote($shapass).', '.sql_quote($md5pass).')','',$serveur);
		// En profiter pour verifier la securite de tmp/
		// Si elle ne fonctionne pas a l'installation, prevenir
		if (!verifier_htaccess(_DIR_TMP) AND defined('_ECRIRE_INSTALL'))
			return false;
	}
	return $row;
}
function upgrade_evenements_articles_012()
{
    $res = sql_select("*", "spip_evenements_articles");
    while ($row = sql_fetch($res)) {
        $id_article = $row['id_article'];
        $id_evenement = $row['id_evenement'];
        sql_update("spip_evenements", array('id_article' => $id_article), 'id_evenement=' . intval($id_evenement));
    }
}
/**
 *  Processing function
 */
function formulaires_ecatalogue_product_excel_import_traiter_dist()
{
    if (isset($_POST['ids']) && is_array($_POST['ids'])) {
        foreach ($_POST['ids'] as $key => $value) {
            if ($value != '') {
                sql_update('spip_rubriques', array('id_import' => $value), 'id_rubrique = ' . $key);
            }
        }
    }
}
Example #10
0
File: spip.php Project: nursit/SPIP
/**
 * Authentifie et si ok retourne le tableau de la ligne SQL de l'utilisateur
 * Si risque de secu repere a l'installation retourne False
 *
 * @param string $login
 * @param string $pass
 * @param string $serveur
 * @param bool $phpauth
 * @return array|bool
 */
function auth_spip_dist($login, $pass, $serveur = '', $phpauth = false)
{
    // retrouver le login
    $login = auth_spip_retrouver_login($login);
    // login inconnu, n'allons pas plus loin
    if (!$login) {
        return array();
    }
    $md5pass = "";
    $shapass = $shanext = "";
    if (preg_match(",^\\{([0-9a-f]{64});([0-9a-f]{64})\\}\$,i", $pass, $regs)) {
        $shapass = $regs[1];
        $shanext = $regs[2];
    } elseif (preg_match(",^\\{([0-9a-f]{64});([0-9a-f]{64});([0-9a-f]{32});([0-9a-f]{32})\\}\$,i", $pass, $regs)) {
        $shapass = $regs[1];
        $shanext = $regs[2];
        $md5pass = $regs[3];
        //$md5next = $regs[4];
    } elseif ($pass) {
        $row = sql_fetsel("alea_actuel, alea_futur", "spip_auteurs", "login="******"*", "spip_auteurs", "login="******" AND pass="******" AND statut<>'5poubelle'", '', '', '', '', $serveur);
    // compat avec les anciennes bases en md5
    if (!$row and $md5pass) {
        $row = sql_fetsel("*", "spip_auteurs", "login="******" AND pass="******" AND statut<>'5poubelle'", '', '', '', '', $serveur);
    }
    // login/mot de passe incorrect
    if (!$row) {
        return array();
    }
    // fait tourner le codage du pass dans la base
    // sauf si phpauth : cela reviendrait a changer l'alea a chaque hit, et aucune action verifiable par securiser_action()
    if ($shanext and !$phpauth) {
        include_spip('inc/acces');
        // pour creer_uniqid
        @sql_update('spip_auteurs', array('alea_actuel' => 'alea_futur', 'pass' => sql_quote($shanext, $serveur, 'text'), 'alea_futur' => sql_quote(creer_uniqid(), $serveur, 'text')), "id_auteur=" . $row['id_auteur'] . ' AND pass IN (' . sql_quote($shapass, $serveur, 'text') . ', ' . sql_quote($md5pass, $serveur, 'text') . ')', '', $serveur);
        // En profiter pour verifier la securite de tmp/
        // Si elle ne fonctionne pas a l'installation, prevenir
        if (!verifier_htaccess(_DIR_TMP) and defined('_ECRIRE_INSTALL')) {
            return false;
        }
    }
    return $row;
}
Example #11
0
/**
 * Supprimer les referers
 * @param strinf $titre
 * @param bool $reprise
 * @return string
 */
function base_delete_referers_dist($titre = '', $reprise = '')
{
    if (!$titre) {
        return;
    }
    // anti-testeur automatique
    sql_delete("spip_referers");
    sql_delete("spip_referers_articles");
    sql_update("spip_articles", array('referers' => 0));
    // un pipeline pour detruire les tables de referers installees par les plugins ?
    //pipeline('delete_referers', '');
    spip_log("raz des referers operee redirige vers " . _request('redirect'));
}
function formulaires_ecatalogue_option_edit_traiter_dist()
{
    $table = "spip_ecatalogue_options";
    $exp = array('titre' => sql_quote(_request('titre')), 'descriptif' => sql_quote(_request('descriptif')), 'texte' => sql_quote(_request('texte')));
    $where = "id_option=" . _request('id_option');
    try {
        sql_update($table, $exp, $where);
        $result['message_ok'] = _T('ecatalogue:form_saved');
    } catch (Exception $e) {
        $result['message_erreur'] = _T('ecatalogue:form_error');
    }
    return $result;
}
function recountTagReferences($tagid)
{
    sql_where(array("hfmTag" => $tagid));
    $count = sql_count("helpdeskFAQTagMap");
    if ($count > 0) {
        sql_values(array("hftCount" => $count));
        sql_where(array("hftid" => $tagid));
        sql_update("helpdeskFAQTags");
    } else {
        sql_where(array("hftid" => $tagid));
        sql_delete("helpdeskFAQTags");
    }
}
function clevermail_post_queue($pst_id)
{
    if ($post = sql_fetsel("lst_id, pst_subject", "spip_cm_posts", "pst_id = " . intval($pst_id))) {
        $lst_id = $post['lst_id'];
        $lst_name = sql_getfetsel("lst_name", "spip_cm_lists", "lst_id = " . intval($lst_id));
        if (sql_countsel("spip_cm_posts", "pst_id = " . intval($pst_id) . " AND pst_date_sent = 0")) {
            // Si le script plante en cours, on ne renvoie pas deux fois aux premiers, tant pis pour ceux qui ne sont pas passes
            sql_update("spip_cm_posts", array('pst_date_sent' => time()), "pst_id = " . intval($pst_id));
            $subscribers = sql_select("sub_id", "spip_cm_lists_subscribers", "lst_id = " . intval($lst_id));
            while ($sub = sql_fetch($subscribers)) {
                sql_insertq("spip_cm_posts_queued", array('pst_id' => intval($pst_id), 'sub_id' => intval($sub['sub_id']), 'psq_date' => time()));
            }
            spip_log('Déclenchement de l\'envoi du message « ' . $post['pst_subject'] . ' » (id=' . $pst_id . ') de la liste « ' . $lst_name . ' » (id=' . $lst_id . ')', 'clevermail');
        }
    }
}
/**
 * Recevoir la notification d'un paiement par chèque ou virement. Pour les autres presta voir presta/$presta/inc/
 *
 * @return array
 */
function bank_recoit_notification($id_transaction, $transaction_hash, $mode, $notifier = true)
{
    $mode_autorises = array('cheque', 'virement');
    if (!($row_prec = sql_fetsel("*", "spip_commandes_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($transaction_hash)))) {
        spip_log("id_transaction invalide : {$id_transaction}/hash{$transaction_hash}", 'paiement_alter');
        return array(0, false);
    }
    if ($row_prec['reglee'] == 'oui') {
        return array($id_transaction, true);
    }
    // cette transaction a deja ete reglee. double entree, on ne fait rien
    if (!$mode or !in_array($mode, $mode_autorises)) {
        spip_log("Transaction {$id_transaction}:pas de mode paiement renseigné (chèque ou virement)", 'paiement_alter');
        $message = "Une erreur s'est produite pendant l'enregistrement de votre commande";
        return bank_echec_transaction($id_transaction, $message);
        // erreur sur la transaction
    }
    /*
       TODO traiter les autres possibilités d'échec ou de traitement de la commande à réception du chèque par un admin ? Pour le moment, on enregistre seulement le fait que le client indique vouloir payer par chèque.
    */
    $message = _T('vacarme_commande:message_ok_formulaire_paiements_alter');
    // commande en attente du reglement
    sql_update("spip_commandes_transactions", array("mode" => sql_quote($mode), "statut" => sql_quote('attente'), "message" => sql_quote($message)), "id_transaction=" . intval($id_transaction));
    spip_log("cheque_response : id_transaction {$id_transaction}, attente", $mode);
    // mise à jour de la commande correspondante
    $id_commande = sql_getfetsel("id_commande", "spip_commandes_transactions", "id_transaction=" . intval($id_transaction));
    sql_updateq("spip_commandes", array("paiement" => $mode, "statut" => "attente"), "id_commande=" . intval($id_commande));
    // mise à jour de l'abonnement s'il existe
    $id_commandes_detail = sql_allfetsel('id_commandes_detail', 'spip_commandes_details', 'id_commande=' . $id_commande . ' and objet="abonnement"');
    if ($id_commandes_detail) {
        foreach ($id_commandes_detail as $k) {
            foreach ($k as $id) {
                sql_updateq("spip_contacts_abonnements", array('statut_abonnement' => 'attente'), 'id_commandes_detail=' . $id);
            }
        }
    }
    // ensuite un pipeline de traitement, notification etc...
    $message = pipeline('bank_traiter_reglement', array('args' => array('id_transaction' => $id_transaction, 'new' => $row_prec['reglee'] !== 'oui', 'confirm' => $row_prec['reglee'] == 'oui', 'notifier' => $notifier, 'avant' => $row_prec), 'data' => $message));
    return array($id_transaction, true);
}
Example #16
0
 /**
  * Recalculer tous les threads
  *
  * Fonction du plugin forum recopiee ici pour assurer la montee
  * de version dans tous les cas de figure
  **/
 function maj_v018_calculer_threads()
 {
     // fixer les id_thread des debuts de discussion
     sql_update('spip_forum', array('id_thread' => 'id_forum'), "id_parent=0");
     // reparer les messages qui n'ont pas l'id_secteur de leur parent
     do {
         $discussion = "0";
         $precedent = 0;
         $r = sql_select("fille.id_forum AS id,\tmaman.id_thread AS thread", 'spip_forum AS fille, spip_forum AS maman', "fille.id_parent = maman.id_forum AND fille.id_thread <> maman.id_thread", '', "thread");
         while ($row = sql_fetch($r)) {
             if ($row['thread'] == $precedent) {
                 $discussion .= "," . $row['id'];
             } else {
                 if ($precedent) {
                     sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ({$discussion})");
                 }
                 $precedent = $row['thread'];
                 $discussion = $row['id'];
             }
         }
         sql_updateq("spip_forum", array("id_thread" => $precedent), "id_forum IN ({$discussion})");
     } while ($discussion != "0");
 }
function boites_privees_tri_auteurs_action() {
	// boite privee : tri les auteurs d'un article
	$id_article = _request('bp_article');
	$id_auteur = abs(_request('bp_auteur'));
	$monter = _request('bp_auteur')>0;

	if(!defined('_SPIP19300')) include_spip('outils/boites_privees'); // pour les fonctions sql
	$s = sql_select('id_auteur', 'spip_auteurs_articles', "id_article=$id_article");
	$i=0; $j=0;
	while ($a = sql_fetch($s)) {
		if($a['id_auteur']==$id_auteur) { $i = $a['id_auteur']; break; }
		$j = $a['id_auteur'];
	}
	if(!$monter && $i && ($a = sql_fetch($s))) $j = $a['id_auteur'];
	spip_log("action_rapide_tri_auteurs, article $id_article : echange entre l'auteur $i et l'auteur $j");
	if($i && $j) {
		sql_update("spip_auteurs_articles", array('id_auteur'=>-99), "id_article=$id_article AND id_auteur=$i");
		sql_update("spip_auteurs_articles", array('id_auteur'=>$i), "id_article=$id_article AND id_auteur=$j");
		sql_update("spip_auteurs_articles", array('id_auteur'=>$j), "id_article=$id_article AND id_auteur=-99");
	}
	// action terminee, pret pour la redirection exec !
	return;
}
Example #18
0
/**
 * il faut avoir un id_transaction et un transaction_hash coherents
 * pour se premunir d'une tentative d'appel exterieur
 * 
 */
function presta_simu_call_response_dist()
{
    // recuperer la reponse en post et la decoder
    $id_transaction = _request('id_transaction');
    $transaction_hash = _request('hash');
    if (!defined('_SIMU_BANK_ALLOWED')) {
        spip_log('simu pas autorisee', 'simu');
        return array($id_transaction, false);
    }
    if (!($row = sql_fetsel('*', 'spip_transactions', 'id_transaction=' . intval($id_transaction)))) {
        spip_log("id_transaction {$id_transaction} non trouve", 'simu');
        return array($id_transaction, false);
    }
    if ($transaction_hash != $row['transaction_hash']) {
        spip_log("id_transaction {$id_transaction}, hash {$transaction_hash} non conforme", 'simu');
        return array($id_transaction, false);
    }
    // Ouf, le reglement a ete accepte
    sql_update("spip_transactions", array("mode" => sql_quote('simu'), "montant_regle" => 'montant', "date_paiement" => 'NOW()', "statut" => sql_quote('ok'), "reglee" => sql_quote('oui')), "id_transaction=" . intval($id_transaction));
    spip_log("simu_response : id_transaction {$id_transaction}, reglee", 'simu');
    $regler_transaction = charger_fonction('regler_transaction', 'bank');
    $regler_transaction($id_transaction, "", $row);
    return array($id_transaction, true);
}
Example #19
0
$conn = connect();
$showrecs = 20;
$pagerange = 10;
$a = @$_GET["a"];
$recid = @$_GET["recid"];
$page = @$_GET["page"];
if (!isset($page)) {
    $page = 1;
}
$sql = @$_POST["sql"];
switch ($sql) {
    case "insert":
        sql_insert();
        break;
    case "update":
        sql_update();
        break;
    case "delete":
        sql_delete();
        break;
}
switch ($a) {
    case "add":
        addrec();
        break;
    case "view":
        viewrec($recid);
        break;
    case "edit":
        editrec($recid);
        break;
Example #20
0
function formular_cp($order, $revision = 0, $fieldsets_c = 1, $form_data = "", $page = "")
{
    if (isset($_GET["cp"])) {
        $cp = sec_input($_GET["cp"]);
    }
    if (!empty($form_data)) {
        foreach ($form_data as $key => $value) {
            ${$key} = $value;
        }
    }
    $data = sql_query("SELECT r.id, r.id_obj, r.meno, adresa, ico, telefon, email, komentar,\r\n                                    DATE_FORMAT(datum, '%d. %m. %Y, %H:%i') AS datum\r\n                                    FROM revizia r \r\n                                    \r\n                                    WHERE r.id={$revision} \r\n                                    LIMIT 1");
    $data = $data[0];
    //var_dump($data);
    $data_obj = sql_query("SELECT DATE_FORMAT(datum, '%d. %m. %Y, %H:%i') AS datum, c_obj, id_zakaznik\r\n                                    FROM objednavka \r\n                                    WHERE id=" . $data["id_obj"] . " LIMIT 1");
    $data_obj = $data_obj[0];
    //var_dump($data);
    $message = "";
    $message .= "<h1>Cenová ponuka pre objednávku č. " . $data_obj["c_obj"] . " / " . $data["id"] . "</h1>";
    $message .= "<h5>Objednávka zo dňa: " . $data_obj["datum"] . "</h5>";
    $message .= "<div class=\"print_hlavicka\">";
    if ($data_obj[id_zakaznik] > 0) {
        $meno_zakaznika = sql_query("SELECT meno, adresa, mesto, psc, ico, dic, telefon, email \r\n                                          \r\n                                        FROM uzivatel WHERE id={$data_obj['id_zakaznik']} LIMIT 1");
        $meno_zakaznika = $meno_zakaznika[0];
        $data[meno] = $meno_zakaznika[meno];
        $data[adresa] = $meno_zakaznika[adresa];
        $data[mesto] = $meno_zakaznika[mesto];
        $data[psc] = $meno_zakaznika[psc];
        $data[ico] = $meno_zakaznika[ico];
        $data[dic] = $meno_zakaznika[dic];
        $data[telefon] = $meno_zakaznika[telefon];
        $data[email] = $meno_zakaznika[email];
        //$cenova_hladina = sql_query("SELECT id_c_hladina FROM uzivatel WHERE id=$data_obj[id_zakaznik]");
        //$cenova_hladina = $cenova_hladina[0][id_c_hladina];
    }
    $message .= "<div class=\"print_odberatel\"><table class=\"print_odberatel\"><tr><td></td><td><strong>Objednávateľ:</strong></td></tr>";
    $message .= "<tr><td></td><td class=\"print_bigger\">" . $data["meno"] . "</td></tr>";
    $message .= "<tr><td></td><td>" . $data["adresa"] . "</td></tr>";
    $message .= "<tr><td></td><td>" . $data["psc"] . " " . $data["mesto"] . "</td></tr>";
    $message .= "<tr><td>IČO:</td><td>" . $data["ico"] . "</td></tr>";
    $message .= "<tr><td>DIČ:</td><td>" . $data["dic"] . "</td></tr>";
    $message .= "<tr><td>tel.:</td><td>" . $data["telefon"] . "</td></tr>";
    $message .= "<tr><td>email:</td><td>" . $data["email"] . "</td></tr>";
    $message .= "</table>";
    $message .= "</div>";
    //var_dump($dekor);
    echo "<div class=\"print\">";
    echo $message;
    echo "</div>";
    echo "</div>";
    echo "<div id=\"content\" class=\"print_hlavicka4\">";
    if (empty($page) or $page == 1) {
        if ($_POST["submit_page1"]) {
            $fieldsets_c = count($_POST["id"]);
            for ($i = 0; $i < $fieldsets_c; $i++) {
                $id_objednavka_row[] = sec_input(sec_sql($_POST["id"][$i]));
                $zlava[] = str_replace(',', '.', sec_input(sec_sql($_POST["zlava"][$i])));
                $product_price[] = str_replace(',', '.', sec_input(sec_sql($_POST["product_price"][$i])));
                $id_cp_product[] = sec_input(sec_sql($_POST["id_cp_product"][$i]));
                $ks[] = sec_input(sec_sql($_POST["ks"][$i]));
            }
            $form_data[id_objednavka_row] = $id_objednavka_row;
            $form_data[id_cp_product] = $id_cp_product;
            $form_data[ks] = $ks;
            $form_data[zlava] = $zlava;
            $form_data[product_price] = $product_price;
            //var_dump($order);
            //var_dump($revision);
            if (empty($error_msg)) {
                $query = "INSERT INTO cp ( id_objednavka, id_revizia, vytvoril )\r\n                    VALUES ( {$order}, {$revision}, {$_SESSION['username']} )\r\n                    ";
                //print_r($query);
                //die();
                mysql_query("BEGIN");
                $sql_cp = sql_insert($query);
                $cp_id = $sql_cp["inserted_id"];
                for ($i = 0; $i < count($form_data[id_objednavka_row]); $i++) {
                    if (empty($form_data[product_price][$i])) {
                        $product_price = sql_query("SELECT cena FROM cp_product WHERE id=" . $form_data[id_cp_product][$i] . " ORDER BY id DESC LIMIT 1")[0]["cena"];
                    } else {
                        $product_price = $form_data[product_price][$i];
                    }
                    //echo $product_price."<br>";
                    //$product_ks_sum = $product_ks_sum + sec_input($form_data["ks"][$i]);
                    $product_price_sum = $product_price * sec_input($form_data["ks"][$i]);
                    $products_prices_sums = $products_prices_sums + $product_price_sum;
                    $zlava_E = $product_price_sum * $form_data["zlava"][$i] / 100;
                    $po_zlave = $product_price_sum - $zlava_E;
                    $po_zlave_sum = $po_zlave_sum + $po_zlave;
                    $query_cp_row = "INSERT into cp_row (id_cp, id_objednavka_row, id_cp_product, \r\n                                                            ks, cena, zlava, sum)\r\n                                        VALUES ({$cp_id},\r\n                                        {$form_data[id_objednavka_row][$i]}, \r\n                                        \"{$form_data[id_cp_product][$i]}\", \r\n                                        {$form_data[ks][$i]},\r\n                                        \"{$form_data[product_price][$i]}\",\r\n                                        \"{$form_data[zlava][$i]}\",\r\n                                        \"{$po_zlave}\"\r\n                                        )";
                    //echo $query_cp_row."<br>";
                    sql_insert($query_cp_row);
                    //var_dump($query_poznamka);
                }
                sql_update("UPDATE cp SET all_sum={$po_zlave_sum} WHERE id={$cp_id}");
                mysql_query("COMMIT");
                //dd($form_data);
                //$_SESSION["posted_form_from_cp"]=$form_data;
                header("location: ?vyber=cp&order={$order}&revision={$revision}&action=display_all");
            } else {
                echo "<div id=error_message>" . implode("<br>", $error_msg) . "</div>";
            }
        }
        echo "<form method=\"POST\" id=\"formular\" enctype=\"multipart/form-data\">";
        echo "<fieldset id=\"cp_rows\">";
        // pre editaciu cenovej ponuky....
        //=========================================
        $data_row = sql_query("SELECT * \r\n                            FROM objednavka_row\r\n                            WHERE id_revizia = " . $revision . "\r\n                            ");
        //var_dump($data_row);
        $fieldsets_c = count($data_row);
        for ($i = 0; $i < $fieldsets_c; $i++) {
            $ks[$i] = $data_row[$i][ks];
            $id[$i] = $data_row[$i][id];
            $product_type[$i] = $data_row[$i][id_product_type];
            $product[$i] = $data_row[$i][id_product];
            $product_delivery[$i] = $data_row[$i][id_product_delivery];
            $atyp_text[$i] = $data_row[$i][atyp_text];
            $data_row_option = sql_query("SELECT id_product_atribute, id_product_atribute_option \r\n                                    FROM objednavka_row_atribute \r\n                                    WHERE id_revizia=\"{$revision}\" AND id_objednavka_row=\"{$data_row[$i][id]}\"");
            //dd($form_data_row_option);
            foreach ($data_row_option as $option) {
                $data_rows[$i][$option["id_product_atribute"]] = $option["id_product_atribute_option"];
            }
            if (isset($_GET["cp"]) and !empty($_GET["cp"])) {
                $query = "SELECT * from cp_row WHERE id_cp=" . sec_input(sec_sql($_GET["cp"])) . " AND id_objednavka_row=" . $data_row[$i][id] . "";
                $cp_row = sql_query($query)[0];
                $cena[$i] = $cp_row[cena];
                $zlava[$i] = $cp_row[zlava];
                //var_dump($cp_row);
            }
        }
        $data[id_all] = $id;
        $data[ks_all] = $ks;
        $data[product_type_all] = $product_type;
        $data[product_all] = $product;
        $data[product_delivery_all] = $product_delivery;
        $data[atyp_text_all] = $atyp_text;
        $data[product_atribute_options_all] = $data_rows;
        $data[product_price_all] = $cena;
        $data[zlava_all] = $zlava;
        $message = "<div class=\"print_hlavicka3\">\r\n            <table>\r\n               <tr>\r\n               <th></th>               \r\n               <th style=\"width: 380px;\">produkt</th>\r\n               <th style=\"width: 40px;\">množstvo</th>\r\n               <th style=\"width: 70px;\">doprava</th>              \r\n               <th style=\"width: 50px;\">j.cena</th>\r\n               <th style=\"width: 50px;\">Spolu</th>\r\n               <th style=\"width: 90px;\">zľava %</th>\r\n               <th style=\"width: 50px;\">po zľave</th>\r\n               </tr>";
        //echo hidden("name", "value");
        //var_dump($data);
        $fieldsets_c = count($data["ks_all"]);
        for ($i = 0; $i < $fieldsets_c; $i++) {
            $poradie = 0;
            $poradie = $i + 1;
            $message .= "<tr>\r\n                     <td class=\"form_poradie\">{$poradie}. </td>\r\n                     ";
            $product_type = sql_query("SELECT meno FROM product_type WHERE id=" . sec_sql(sec_input($data["product_type_all"][$i])) . " LIMIT 1");
            $product_type = $product_type[0];
            $product = sql_query("SELECT id, meno FROM product WHERE id=" . sec_sql(sec_input($data["product_all"][$i])) . " LIMIT 1")[0];
            $message .= hidden("id[]", $data["id_all"][$i]);
            $options_str = array();
            //var_dump($data);
            if (!isset($data["product_atribute_options_all"][$i]) or empty($data["product_atribute_options_all"][$i])) {
                $data["product_atribute_options_all"][$i] = array();
            }
            $option_c_hladina = 1;
            foreach ($data["product_atribute_options_all"][$i] as $option) {
                //var_dump($option);
                $options = sql_query("SELECT id, meno, id_c_hladina FROM product_atribute_option WHERE id=" . sec_sql(sec_input($option)) . " LIMIT 1");
                $options_str[] = $options[0]["meno"];
                if ($options[0]["id_c_hladina"] > $option_c_hladina) {
                    $option_c_hladina = $options[0]["id_c_hladina"];
                }
                //$options["price"] = sql_query("SELECT id, cena FROM product_atribute_option WHERE id=".sec_sql(sec_input($option))." LIMIT 1");
            }
            $options_str = empty($options_str) ? "" : " (" . join(", ", $options_str) . ")";
            $message .= "<td class=\"form_nazov_siroky\">" . $product_type["meno"] . " " . $product["meno"] . "" . $options_str . "" . (empty($data["atyp_text_all"][$i]) ? "" : "<br>Atyp: " . sec_input($data["atyp_text_all"][$i])) . "</td>";
            $product_delivery = sql_query("SELECT meno FROM product_delivery WHERE id=" . sec_sql(sec_input($data["product_delivery_all"][$i])) . " LIMIT 1");
            $product_delivery = $product_delivery[0];
            $message .= "<td class=\"form_ks\">" . sec_input($data["ks_all"][$i]) . " ks</td>";
            $message .= "<td class=\"form_hrana\">" . $product_delivery["meno"] . "</td>";
            $message .= hidden("ks[]", $data["ks_all"][$i]);
            if (empty($data[product_price_all][$i])) {
                $product_prices = sql_query("SELECT id, cena FROM cp_product WHERE id_c_hladina=" . $option_c_hladina . " AND id_product=" . $product["id"] . " ORDER BY id DESC LIMIT 1")[0];
                $product_price = $product_prices[cena];
            } else {
                $product_price = $data[product_price_all][$i];
            }
            $product_ks_sum = $product_ks_sum + sec_input($data["ks_all"][$i]);
            $product_price_sum = $product_price * sec_input($data["ks_all"][$i]);
            $message .= hidden("id_cp_product[]", $product_prices[id]);
            // spocitanie ceny spolu za vsetky produkty
            $products_prices_sums = $products_prices_sums + $product_price_sum;
            $zlava_E = $product_price_sum * $data[zlava_all][$i] / 100;
            $po_zlave = $product_price_sum - $zlava_E;
            $po_zlave_sum = $po_zlave_sum + $po_zlave;
            if (!empty($data["atyp_text_all"][$i])) {
                $product_price = textfield("product_price[{$i}]", $data[product_price_all][$i], "", 5, 3, "product_price");
            } else {
                $product_price = $product_price . " €";
            }
            $message .= "<td class=\"form_nazov ali-center product-price\">" . $product_price . "</td>";
            $message .= "<td class=\"form_nazov ali-center bold\"><span class=\"cena-spolu-product\">" . $product_price_sum . "</span> €</td>";
            $message .= "<td class=\"form_nazov\">" . textfield("zlava[]", $data[zlava_all][$i], "", 4, 2, "zlava") . "<span class=\"zlava-E bold\">" . ($zlava_E > 0 ? "-" . $zlava_E . " €" : "") . "</span></td>";
            $message .= "<td class=\"form_nazov ali-center po-zlave-sum\">" . $po_zlave . "</td>";
            $message .= "</tr>";
        }
        $message .= "<tr class=\"cp_spolu bold\">\r\n                            <td></td>\r\n                            <td>Spolu:</td>\r\n                            <td class=\"ali-center\">" . $product_ks_sum . " ks</td>\r\n                            <td></td>\r\n                            <td></td>\r\n                            <td class=\"ali-center\">" . $products_prices_sums . " €</td>\r\n                            <td></td>\r\n                            <td class=\"ali-center po-zlave-sum-all\">" . $po_zlave_sum . " €</td>\r\n                            \r\n                    <tr>";
        $message .= "</table></div>";
        echo $message;
        echo "</fieldset>";
        echo submit("submit_page1", "Pokračovať");
    }
    echo "</form>";
}
Example #21
0
/**
 * Effacement de la bidouille ci-dessus
 * Toutefois si la table des auteurs ne contient plus qu'elle
 * c'est que la copie etait incomplete et on restaure le compte
 * pour garder la connection au site
 *
 * (mais il doit pas etre bien beau
 * et ca ne marche que si l'id_auteur est sur moins de 3 chiffres)
 *
 * @param string $serveur
 */
function base_detruire_copieur_si_besoin($serveur = '')
{
    // rien a faire si ce n'est pas le serveur principal !
    if ($serveur == '') {
        if (sql_countsel("spip_auteurs", "id_auteur>0")) {
            spip_log("Detruire copieur id_auteur<0 pour le serveur '{$serveur}'", 'dump.' . _LOG_INFO_IMPORTANTE);
            sql_delete("spip_auteurs", "id_auteur<0", $serveur);
        } else {
            spip_log("Restaurer copieur id_auteur<0 pour le serveur '{$serveur}' (aucun autre auteur en base)", 'dump.' . _LOG_INFO_IMPORTANTE);
            sql_update('spip_auteurs', array('id_auteur' => '-id_auteur'), "id_auteur<0");
        }
    } else {
        spip_log("Pas de destruction copieur sur serveur '{$serveur}'", 'dump.' . _LOG_INFO_IMPORTANTE);
    }
}
Example #22
0
function optimiser_base_disparus($attente = 86400) {

	# format = 20060610110141, si on veut forcer une optimisation tout de suite
	$mydate = date("YmdHis", time() - $attente);

	$n = 0;

	//
	// Rubriques 
	//

	# les articles qui sont dans une id_rubrique inexistante
	# attention on controle id_rubrique>0 pour ne pas tuer les articles
	# specialement affectes a une rubrique non-existante (plugin,
	# cf. http://trac.rezo.net/trac/spip/ticket/1549 )
	$res = sql_select("articles.id_article AS id",
		        "spip_articles AS articles
		        LEFT JOIN spip_rubriques AS rubriques
		          ON articles.id_rubrique=rubriques.id_rubrique",
			 "articles.id_rubrique > 0
			 AND rubriques.id_rubrique IS NULL
		         AND articles.maj < $mydate");

	$n+= optimiser_sansref('spip_articles', 'id_article', $res);

	# les breves qui sont dans une id_rubrique inexistante
	$res = sql_select("breves.id_breve AS id",
		        "spip_breves AS breves
		        LEFT JOIN spip_rubriques AS rubriques
		          ON breves.id_rubrique=rubriques.id_rubrique",
			"rubriques.id_rubrique IS NULL
		         AND breves.maj < $mydate");

	$n+= optimiser_sansref('spip_breves', 'id_breve', $res);

	# les forums lies a une id_rubrique inexistante
	$res = sql_select("forum.id_forum AS id",
			"spip_forum AS forum
		        LEFT JOIN spip_rubriques AS rubriques
		          ON forum.id_rubrique=rubriques.id_rubrique",
			"rubriques.id_rubrique IS NULL
		         AND forum.id_rubrique>0");

	$n+= optimiser_sansref('spip_forum', 'id_forum', $res);

	# les droits d'auteurs sur une id_rubrique inexistante
	# (plusieurs entrees seront eventuellement detruites pour chaque rub)
	$res = sql_select("auteurs_rubriques.id_rubrique AS id",
	 	        "spip_auteurs_rubriques AS auteurs_rubriques
		        LEFT JOIN spip_rubriques AS rubriques
		          ON auteurs_rubriques.id_rubrique=rubriques.id_rubrique",
			"rubriques.id_rubrique IS NULL");

	$n+= optimiser_sansref('spip_auteurs_rubriques', 'id_rubrique', $res);

	# les liens des mots affectes a une id_rubrique inexistante
	$res = sql_select("mots_rubriques.id_rubrique AS id",
		      "spip_mots_rubriques AS mots_rubriques
		        LEFT JOIN spip_rubriques AS rubriques
		          ON mots_rubriques.id_rubrique=rubriques.id_rubrique",
			"rubriques.id_rubrique IS NULL");

	$n+= optimiser_sansref('spip_mots_rubriques', 'id_rubrique', $res);

	//
	// Articles
	//

	sql_delete("spip_articles", "statut='poubelle' AND maj < $mydate");

	# les liens d'auteurs d'articles effaces
	$res = sql_select("auteurs_articles.id_article AS id",
		      "spip_auteurs_articles AS auteurs_articles
		        LEFT JOIN spip_articles AS articles
		          ON auteurs_articles.id_article=articles.id_article",
			"articles.id_article IS NULL");

	$n+= optimiser_sansref('spip_auteurs_articles', 'id_article', $res);

	# les liens de mots affectes a des articles effaces
	$res = sql_select("mots_articles.id_article AS id",
		        "spip_mots_articles AS mots_articles
		        LEFT JOIN spip_articles AS articles
		          ON mots_articles.id_article=articles.id_article",
			"articles.id_article IS NULL");

	$n+= optimiser_sansref('spip_mots_articles', 'id_article', $res);

	# les forums lies a des articles effaces
	$res = sql_select("forum.id_forum AS id",
		        "spip_forum AS forum
		        LEFT JOIN spip_articles AS articles
		          ON forum.id_article=articles.id_article",
			"articles.id_article IS NULL
		         AND forum.id_article>0");

	$n+= optimiser_sansref('spip_forum', 'id_forum', $res);

	//
	// Breves
	//

	sql_delete("spip_breves", "statut='refuse' AND maj < $mydate");


	# les liens de mots affectes a des breves effacees
	$res = sql_select("mots_breves.id_breve AS id",
		        "spip_mots_breves AS mots_breves
		        LEFT JOIN spip_breves AS breves
		          ON mots_breves.id_breve=breves.id_breve",
			"breves.id_breve IS NULL");

	$n+= optimiser_sansref('spip_mots_breves', 'id_breve', $res);

	# les forums lies a des breves effacees
	$res = sql_select("forum.id_forum AS id",
		        "spip_forum AS forum
		        LEFT JOIN spip_breves AS breves
		          ON forum.id_breve=breves.id_breve",
			"breves.id_breve IS NULL
		         AND forum.id_breve>0");

	$n+= optimiser_sansref('spip_forum', 'id_forum', $res);


	//
	// Sites
	//

	sql_delete("spip_syndic", "maj < $mydate AND statut = 'refuse'");


	# les articles syndiques appartenant a des sites effaces
	$res = sql_select("syndic_articles.id_syndic AS id",
		      "spip_syndic_articles AS syndic_articles
		        LEFT JOIN spip_syndic AS syndic
		          ON syndic_articles.id_syndic=syndic.id_syndic",
			"syndic.id_syndic IS NULL");

	$n+= optimiser_sansref('spip_syndic_articles', 'id_syndic', $res);

	# les liens de mots affectes a des sites effaces
	$res = sql_select("mots_syndic.id_syndic AS id",
		        "spip_mots_syndic AS mots_syndic
		        LEFT JOIN spip_syndic AS syndic
		          ON mots_syndic.id_syndic=syndic.id_syndic",
			"syndic.id_syndic IS NULL");

	$n+= optimiser_sansref('spip_mots_syndic', 'id_syndic', $res);

	# les forums lies a des sites effaces
	$res = sql_select("forum.id_forum AS id",
		        "spip_forum AS forum
		        LEFT JOIN spip_syndic AS syndic
		          ON forum.id_syndic=syndic.id_syndic",
			"syndic.id_syndic IS NULL
		         AND forum.id_syndic>0");

	$n+= optimiser_sansref('spip_forum', 'id_forum', $res);

	//
	// Auteurs
	//

	# les liens d'articles sur des auteurs effaces
	$res = sql_select("auteurs_articles.id_auteur AS id",
		      "spip_auteurs_articles AS auteurs_articles
		        LEFT JOIN spip_auteurs AS auteurs
		          ON auteurs_articles.id_auteur=auteurs.id_auteur",
			"auteurs.id_auteur IS NULL");

	$n+= optimiser_sansref('spip_auteurs_articles', 'id_auteur', $res);

	# les liens de messages sur des auteurs effaces
	$res = sql_select("auteurs_messages.id_auteur AS id",
		      "spip_auteurs_messages AS auteurs_messages
		        LEFT JOIN spip_auteurs AS auteurs
		          ON auteurs_messages.id_auteur=auteurs.id_auteur",
			"auteurs.id_auteur IS NULL");

	$n+= optimiser_sansref('spip_auteurs_messages', 'id_auteur', $res);

	# les liens de rubriques sur des auteurs effaces
	$res = sql_select("auteurs_rubriques.id_rubrique AS id",
		      "spip_auteurs_rubriques AS auteurs_rubriques
		        LEFT JOIN spip_rubriques AS rubriques
		          ON auteurs_rubriques.id_rubrique=rubriques.id_rubrique",
			"rubriques.id_rubrique IS NULL");

	$n+= optimiser_sansref('spip_auteurs_rubriques', 'id_rubrique', $res);

	# effacer les auteurs poubelle qui ne sont lies a aucun article
	$res = sql_select("auteurs.id_auteur AS id",
		      	"spip_auteurs AS auteurs
		      	LEFT JOIN spip_auteurs_articles AS auteurs_articles
		          ON auteurs_articles.id_auteur=auteurs.id_auteur",
			"auteurs_articles.id_auteur IS NULL
		       	AND auteurs.statut='5poubelle' AND auteurs.maj < $mydate");

	$n+= optimiser_sansref('spip_auteurs', 'id_auteur', $res);

	# supprimer les auteurs 'nouveau' qui n'ont jamais donne suite
	# au mail de confirmation (45 jours pour repondre, ca devrait suffire)
	sql_delete("spip_auteurs", "statut='nouveau' AND maj < ". sql_quote(date('Y-m-d', time()-45*24*3600)));


	//
	// Documents
	//
	
	# les liens des documents qui sont lies a un objet inexistant
	$r = sql_select("DISTINCT objet","spip_documents_liens");
	while ($t = sql_fetch($r)){
		$type = $t['objet'];
		$spip_table_objet = table_objet_sql($type);
		$id_table_objet = id_table_objet($type);
		$res = sql_select("L.id_document AS id,id_objet",
			      "spip_documents_liens AS L
			        LEFT JOIN $spip_table_objet AS O
			          ON O.$id_table_objet=L.id_objet AND L.objet=".sql_quote($type),
				"O.$id_table_objet IS NULL");
		// sur une cle primaire composee, pas d'autres solutions que de virer un a un
		while ($row = sql_fetch($res)){
			sql_delete("spip_documents_liens", array("id_document=".$row['id'],"id_objet=".$row['id_objet'],"objet=".sql_quote($type)));
			spip_log("Entree ".$row['id']."/".$row['id_objet']."/$type supprimee dans la table spip_documents_liens");
		}
	}
	
	// on ne nettoie volontairement pas automatiquement les documents orphelins
	
	//
	// Messages prives
	//

	# supprimer les messages lies a un auteur disparu
	$res = sql_select("messages.id_message AS id",
		      "spip_messages AS messages
		        LEFT JOIN spip_auteurs AS auteurs
		          ON auteurs.id_auteur=messages.id_auteur",
			"auteurs.id_auteur IS NULL");

	$n+= optimiser_sansref('spip_messages', 'id_message', $res);

	//
	// Mots-cles
	//

	$result = sql_delete("spip_mots", "titre='' AND maj < $mydate");


	# les liens mots-articles sur des mots effaces
	$res = sql_select("mots_articles.id_mot AS id",
		        "spip_mots_articles AS mots_articles
		        LEFT JOIN spip_mots AS mots
		          ON mots_articles.id_mot=mots.id_mot",
			"mots.id_mot IS NULL");

	$n+= optimiser_sansref('spip_mots_articles', 'id_mot', $res);

	# les liens mots-breves sur des mots effaces
	$res = sql_select("mots_breves.id_mot AS id",
		        "spip_mots_breves AS mots_breves
		        LEFT JOIN spip_mots AS mots
		          ON mots_breves.id_mot=mots.id_mot",
			"mots.id_mot IS NULL");

	$n+= optimiser_sansref('spip_mots_breves', 'id_mot', $res);

	# les liens mots-forum sur des mots effaces
	$res = sql_select("mots_forum.id_mot AS id",
		        "spip_mots_forum AS mots_forum
		        LEFT JOIN spip_mots AS mots
		          ON mots_forum.id_mot=mots.id_mot",
			"mots.id_mot IS NULL");

	$n+= optimiser_sansref('spip_mots_forum', 'id_mot', $res);

	# les liens mots-rubriques sur des mots effaces
	$res = sql_select("mots_rubriques.id_mot AS id",
		      "spip_mots_rubriques AS mots_rubriques
		        LEFT JOIN spip_mots AS mots
		          ON mots_rubriques.id_mot=mots.id_mot",
			"mots.id_mot IS NULL");

	$n+= optimiser_sansref('spip_mots_rubriques', 'id_mot', $res);

	# les liens mots-syndic sur des mots effaces
	$res = sql_select("mots_syndic.id_mot AS id",
		        "spip_mots_syndic AS mots_syndic
		        LEFT JOIN spip_mots AS mots
		          ON mots_syndic.id_mot=mots.id_mot",
			"mots.id_mot IS NULL");

	$n+= optimiser_sansref('spip_mots_syndic', 'id_mot', $res);


	//
	// Forums
	//

	sql_delete("spip_forum", "statut='redac' AND maj < $mydate");


	# les liens mots-forum sur des forums effaces
	$res = sql_select("mots_forum.id_forum AS id",
		        "spip_mots_forum AS mots_forum
		        LEFT JOIN spip_forum AS forum
		          ON mots_forum.id_forum=forum.id_forum",
			"forum.id_forum IS NULL");

	$n+= optimiser_sansref('spip_mots_forum', 'id_forum', $res);
	
	$n = pipeline('optimiser_base_disparus', array(
			'args'=>array(
				'attente' => $attente,
				'date' => $mydate),
			'data'=>$n
	));


	//
	// CNIL -- Informatique et libertes
	//
	// masquer le numero IP des vieux forums
	//
	## date de reference = 4 mois
	## definir a 0 pour desactiver
	define('_CNIL_PERIODE', 3600*24*31*4);

	if (_CNIL_PERIODE) {
		$critere_cnil = 'date_heure<"'.date('Y-m-d', time()-_CNIL_PERIODE).'"'
			. ' AND statut != "spam"'
			. ' AND (ip LIKE "%.%" OR ip LIKE "%:%")'; # ipv4 ou ipv6

		$c = sql_countsel('spip_forum', $critere_cnil);

		if ($c>0) {
			spip_log("CNIL: masquer IP de $c forums anciens");
			sql_update('spip_forum', array('ip' => 'MD5(ip)'), $critere_cnil);
		}
	}


	if (!$n) spip_log("Optimisation des tables: aucun lien mort");
}
                // If vPod Status is 2 (Pending) & Reservation is Active
                if($sql_lab_vpd_grp_status=='2' && $sql_trx_rsv_grp!='0') {

                    // Update Pod Status to 3 (Provisioned)
                    $sql_update_values_grp = array(
                        'lab_vpd_grp_status'=>'3'
                        );

                    $sql_update_exec_grp = sql_update('lab_vpd_grp',$sql_update_values_grp,$lab_vpd_grp);

                } // if($sql_lab_vpd_grp_status=='2' && $sql_trx_rsv_grp!='0')

                ////

            } // if($sql_lab_vpd_grp!='0')

            // Update Job Group Status to Complete
            $sql_update_table = 'lab_job_grp';
            $sql_update_values = array(
                'lab_job_grp_date_complete' => date('Y-m-d H:i:s'),
                "lab_job_grp_status" => '4'
                );
            $sql_update_exec = sql_update($sql_update_table,$sql_update_values,$lab_job_grp);

            sdk_log('info','JOB GROUP COMPLETED','[User '.$sdk_act_usr.'] Job Group #'.$lab_job_grp.' has completed. Status set to Closed (4).','lab_job_grp',$lab_job_grp);



?>
Example #24
0
                        $sql_update_index = $sql_lab_job_uid;
                        $sql_update_values = array(
                            $sql_update_table.'_status' => '2'
                            );
                        $sql_update_exec = sql_update($sql_update_table,$sql_update_values,$sql_update_index);

                        // sdk_log('info','SQL UPDATE','[labstack-agent:/app/controllers/scrub.php] Job Instance #'.$sql_update_index.' is ready to execute. Status updated to Pending (2).',$sql_update_table,$sql_update_index);

                } // foreach($sql_list_trx_rsv_uid as $reservation_instance)

            /**
             *
             *   Update Job Group Status to Pending (Ready to Execute)
             *
             */

                $sql_update_table = 'lab_job_grp';
                $sql_update_index = $sql_lab_job_grp;
                $sql_update_values = array(
                    $sql_update_table.'_status' => '2'
                    );
                $sql_update_exec = sql_update($sql_update_table,$sql_update_values,$sql_update_index);

                // sdk_log('info','SQL UPDATE','[labstack-agent:/app/controllers/scrub.php] Job Group #'.$sql_update_index.' has all actions created and is ready to execute. Status updated to Pending (2).',$sql_update_table,$sql_update_index);

        } // if($sql_trx_rsv_grp_date_end<date('Y-m-d H:i:s'))

    } // foreach($sql_list_trx_rsv_grp as $reservation)

?>
Example #25
0
 $field[] = "username";
 $value[] = $username;
 $value[0] = $id;
 $sql = sql_update($table, $field, $value);
 $sql = str_replace("''", "NULL", $sql);
 $query = mysql_query($sql);
 if ($query == 1) {
     $msg = "Ubah pengguna berhasil. Id = " . $username . ".";
     $ocheck = xuserlevel("id, level", "username = '******'");
     $ncheck = mysql_num_rows($ocheck);
     if ($ncheck > 0) {
         $check = mysql_fetch_array($ocheck);
         if ($level != $check['level']) {
             $field = array("id", "level");
             $value = array($check['id'], $level);
             $sql = sql_update("xuserlevel", $field, $value);
             $query3 = mysql_query($sql);
             if ($query3 != 1) {
                 $msg .= " Ubah user level gagal. Error = " . mysql_error() . ".";
             }
         }
     } else {
         if ($level != "") {
             $field = get_field("xuserlevel");
             $value = array("", $username, $level);
             $sql = sql_insert("xuserlevel", $field, $value);
             $query3 = mysql_query($sql);
             if ($query3 != 1) {
                 $msg .= " Ubah user level gagal. Error = " . mysql_error() . ".";
             }
         }
Example #26
0
/**
 * Optimiser la base de donnee en supprimant les forums orphelins
 *
 * @param int $n
 * @return int
 */
function forum_optimiser_base_disparus($flux)
{
    $n =& $flux['data'];
    $mydate = $flux['args']['date'];
    # les forums lies a une id_objet inexistant
    $r = sql_select("DISTINCT objet", 'spip_forum');
    while ($t = sql_fetch($r)) {
        if ($type = $t['objet']) {
            $spip_table_objet = table_objet_sql($type);
            $id_table_objet = id_table_objet($type);
            # les forums lies a un objet inexistant
            $res = sql_select("forum.id_forum AS id", "spip_forum AS forum\n\t\t\t\t\t\t\t\tLEFT JOIN {$spip_table_objet} AS O\n\t\t\t\t\t\t\t\t\tON O.{$id_table_objet}=forum.id_objet", "forum.objet=" . sql_quote($type) . " AND O.{$id_table_objet} IS NULL AND forum.id_objet>0");
            $n += optimiser_sansref('spip_forum', 'id_forum', $res);
        }
    }
    //
    // Forums
    //
    sql_delete("spip_forum", "statut='redac' AND maj < {$mydate}");
    // nettoyer les documents des forums en spam&poubelle pour eviter de sortir des quota disques
    // bizarrement on ne nettoie jamais les messages eux meme ?
    include_spip('action/editer_liens');
    if (objet_associable('document')) {
        $res = sql_select('L.id_document,F.id_forum', "spip_documents_liens AS L JOIN spip_forum AS F ON (F.id_forum=L.id_objet AND L.objet='forum')", "F.statut IN ('off','spam')");
        while ($row = sql_fetch($res)) {
            include_spip('inc/autoriser');
            // si un seul lien (ce forum donc), on supprime le document
            // si un document est attache a plus d'un forum, c'est un cas bizarre ou gere a la main
            // on ne touche a rien !
            if (count(objet_trouver_liens(array('document' => $row['id_document']), '*')) == 1) {
                autoriser_exception('supprimer', 'document', $row['id_document']);
                if ($supprimer_document = charger_fonction('supprimer_document', 'action', true)) {
                    $supprimer_document($row['id_document']);
                }
            }
        }
    }
    //
    // CNIL -- Informatique et libertes
    //
    // masquer le numero IP des vieux forums
    //
    ## date de reference = 4 mois
    ## definir a 0 pour desactiver
    if (!defined('_CNIL_PERIODE')) {
        define('_CNIL_PERIODE', 3600 * 24 * 31 * 4);
    }
    if (_CNIL_PERIODE) {
        $critere_cnil = 'date_heure<"' . date('Y-m-d', time() - _CNIL_PERIODE) . '"' . ' AND statut != "spam"' . ' AND (ip LIKE "%.%" OR ip LIKE "%:%")';
        # ipv4 ou ipv6
        $c = sql_countsel('spip_forum', $critere_cnil);
        if ($c > 0) {
            spip_log("CNIL: masquer IP de {$c} forums anciens");
            sql_update('spip_forum', array('ip' => 'MD5(ip)'), $critere_cnil);
        }
    }
    return $flux;
}
Example #27
0
	function agenda_verifier_base(){
		$version_base = $GLOBALS['agenda_base_version'];
		$current_version = 0.0;
		if (   (!isset($GLOBALS['meta']['agenda_base_version']) )
				|| (($current_version = $GLOBALS['meta']['agenda_base_version'])!=$version_base)){
			include_spip('base/agenda_evenements');
			if ($current_version==0.0){
				include_spip('base/create');
				include_spip('base/abstract_sql');
				creer_base();
				maj_tables('spip_rubriques'); 
				ecrire_meta('agenda_base_version',$current_version=$version_base,'non');
			}
			if (version_compare($current_version,"0.11","<")){
				sql_alter("TABLE spip_evenements ADD `horaire` ENUM('oui','non') DEFAULT 'oui' NOT NULL AFTER `lieu`");
				ecrire_meta('agenda_base_version',$current_version=0.11,'non');
			}
			if (version_compare($current_version,"0.12","<")){
				sql_alter("TABLE spip_evenements ADD `id_article` bigint(21) DEFAULT '0' NOT NULL AFTER `id_evenement`");
				sql_alter("TABLE spip_evenements ADD INDEX ( `id_article` )");
				$res = sql_select("*", "spip_evenements_articles");
				while ($row = sql_fetch($res)){
					$id_article = $row['id_article'];
					$id_evenement = $row['id_evenement'];
					sql_update("spip_evenements", "id_article=$id_article", "id_evenement=$id_evenement");
				}
				sql_drop_table("spip_evenements_articles");
				ecrire_meta('agenda_base_version',$current_version=0.12,'non');
			}
			if (version_compare($current_version,"0.13","<")){
				include_spip('base/create');
				include_spip('base/abstract_sql');
				creer_base();
				ecrire_meta('agenda_base_version',$current_version=0.13,'non');
			}
			if (version_compare($current_version,"0.18","<")){
				include_spip('base/create');
				include_spip('base/abstract_sql');
				creer_base();
				sql_update('spip_groupes_mots',array('tables_liees'=>"concat(tables_liees,'evenements,')"),"evenements='oui'");
				sql_alter("TABLE spip_groupes_mots DROP evenements");
				ecrire_meta('agenda_base_version',$current_version=0.18,'non');
			}
			if (version_compare($current_version,"0.20","<")){
				include_spip('base/abstract_sql');
				sql_alter("TABLE spip_rubriques ADD agenda tinyint(1) DEFAULT 0 NOT NULL");
				ecrire_meta('agenda_base_version',$current_version=0.20,'non');
			}
			if (version_compare($current_version,"0.21","<")){
				include_spip('base/abstract_sql');
				sql_alter("TABLE spip_evenements ADD adresse text NOT NULL");
				sql_alter("TABLE spip_evenements ADD inscription text NOT NULL");
				sql_alter("TABLE spip_evenements ADD places text NOT NULL");
				ecrire_meta('agenda_base_version',$current_version=0.21,'non');
			}
			if (version_compare($current_version,"0.22","<")){
				include_spip('base/abstract_sql');
				include_spip('base/create');
				include_spip('base/auxiliaires');
				maj_tables('spip_evenements_participants');
				ecrire_meta('agenda_base_version',$current_version=0.22,'non');
			}
			if (version_compare($current_version,"0.23","<")){
				include_spip('base/abstract_sql');
				sql_alter("TABLE spip_evenements CHANGE titre titre text NOT NULL DEFAULT ''");
				sql_alter("TABLE spip_evenements CHANGE descriptif descriptif text NOT NULL DEFAULT ''");
				sql_alter("TABLE spip_evenements CHANGE lieu lieu text NOT NULL DEFAULT ''");
				sql_alter("TABLE spip_evenements CHANGE adresse adresse text NOT NULL DEFAULT ''");
				ecrire_meta('agenda_base_version',$current_version=0.23,'non');
			}
		}
	}
        //echo $i. "<br>";
        $query = "SELECT max(id) id from revizia WHERE id_obj IN (\r\n                        SELECT id FROM `objednavka` where vymaz=0 AND\r\n                        status<>" . def_value("default_obj_status_rozpracovana", "hodnota") . " AND \r\n                         status<>" . def_value("default_obj_status_cp", "hodnota") . " AND\r\n                        (datum between \"{$rok}-{$ij}-01 00:00:00\" AND \"{$rok}-{$ij}-31 23:59:59\")\r\n                            AND id_zakaznik={$uzivatel_item[id]}\r\n                       )\r\n                GROUP BY id_obj\r\n                ";
        //die();
        $last_revision = sql_query($query);
        //var_dump($last_revision);
        //echo $i ."-".$uzivatel_item[id]. " - ". $last_revision[id] ."<br>";
        // ====== statistiky pre stvoraky =============
        //=============================================
        foreach ($last_revision as $rev_id) {
            $query = "SELECT all_sum dlzka from cp \r\n                        WHERE id_revizia=\"{$rev_id["id"]}\" ORDER BY id DESC LIMIT 1";
            $all_sum = sql_query($query);
            //var_dump($all_sum);
            $cp_sum_all = $cp_sum_all + $all_sum[0][dlzka];
            //var_dump($stvorak_sum);
            //$hrana_sum[$ij][$hrana["id"]] = $hrana_sum[$ij][$hrana["id"]] / 1000;
            $cp_sum_all = round($cp_sum_all, 2);
            $stats_exists = sql_query("SELECT id from stats_uzivatel_cp\r\n                                        WHERE rok={$rok} AND mesiac={$ij} AND id_uzivatel=\"{$uzivatel_item[id]}\" LIMIT 1");
            //var_dump($cp_sum_all);
            if (count($stats_exists) == 1) {
                //echo "existuje<br>";
                sql_update("UPDATE stats_uzivatel_cp SET\r\n                            hodnota={$cp_sum_all} WHERE rok=\"{$rok}\" AND mesiac=\"{$ij}\" AND id_uzivatel=\"{$uzivatel_item["id"]}\" ");
            } else {
                //echo "neexistuje<br>";
                sql_insert("INSERT into stats_uzivatel_cp (rok, mesiac, id_uzivatel, hodnota)\r\n                            VALUES ({$rok}, {$ij}, {$uzivatel_item[id]}, {$cp_sum_all})");
            }
        }
    }
}
mysql_query("COMMIT");
//var_dump($uzivatel);
header("location: index.php?vyber=stats_users");
Example #29
0
            $field[25] = $value[25];
            $field[26] = $value[26];
            $field[27] = $value[27];
            $field[31] = $value[31];
            $field[32] = $value[32];
            $field[33] = $value[33];
            $field[37] = $value[37];
            $field[38] = $value[38];
            $field[39] = $value[39];
            $field[43] = $value[43];
            $field[44] = $value[44];
            $field[45] = $value[45];
            $field[49] = $value[49];
            $field[50] = $value[50];
            $field[51] = $value[51];
            $sql = sql_update($table, $field, $value);
            $rs = mysql_query($sql);
            if ($rs) {
                update_log($sql, $table, 1);
                $_SESSION['errmsg'] = "Ubah data berhasil!";
            } else {
                update_log($sql, $table, 0);
                $_SESSION['errmsg'] = "Ubah data gagal!";
            }
            ?>
				
				<meta http-equiv="refresh" content="0;URL=index.php?p=<?php 
            echo $p_next;
            ?>
&pagess=<?php 
            echo $pagess;
Example #30
0
/**
 * Recalcule les secteurs et les profondeurs des rubriques (et articles)
 *
 * Cherche les rubriques ayant des id_secteur ou profondeurs ne correspondant pas
 * avec leur parent, et les met à jour. De même avec les articles et leur id_secteur
 * On procede en iterant la profondeur de 1 en 1 pour ne pas risquer une boucle infinie sur reference circulaire
 * 
 * @return void
**/
function propager_les_secteurs()
{
    // Profondeur 0
    // Toutes les rubriques racines sont de profondeur 0
    // et fixer les id_secteur des rubriques racines
    sql_update('spip_rubriques', array('id_secteur' => 'id_rubrique', 'profondeur' => 0), "id_parent=0");
    // Toute rubrique non racine est de profondeur >0
    sql_updateq('spip_rubriques', array('profondeur' => 1), "id_parent<>0 AND profondeur=0");
    // securite : pas plus d'iteration que de rubriques dans la base
    $maxiter = sql_countsel("spip_rubriques");
    // reparer les rubriques qui n'ont pas l'id_secteur de leur parent
    // on fait profondeur par profondeur
    $prof = 0;
    do {
        $continuer = false;
        // Par recursivite : si toutes les rubriques de profondeur $prof sont bonnes
        // on fixe le profondeur $prof+1
        // Toutes les rubriques dont le parent est de profondeur $prof ont une profondeur $prof+1
        // on teste A.profondeur > $prof+1 car :
        // - toutes les rubriques de profondeur 0 à $prof sont bonnes
        // - si A.profondeur = $prof+1 c'est bon
        // - cela nous protege de la boucle infinie en cas de reference circulaire dans les rubriques
        $maxiter2 = $maxiter;
        while ($maxiter2-- and $rows = sql_allfetsel("A.id_rubrique AS id, R.id_secteur AS id_secteur, R.profondeur+1 as profondeur", "spip_rubriques AS A JOIN spip_rubriques AS R ON A.id_parent = R.id_rubrique", "R.profondeur=" . intval($prof) . " AND (A.id_secteur <> R.id_secteur OR A.profondeur > R.profondeur+1)", "", "R.id_secteur", "0,100")) {
            $id_secteur = null;
            $ids = array();
            while ($row = array_shift($rows)) {
                if ($row['id_secteur'] !== $id_secteur) {
                    if (count($ids)) {
                        sql_updateq("spip_rubriques", array("id_secteur" => $id_secteur, 'profondeur' => $prof + 1), sql_in('id_rubrique', $ids));
                    }
                    $id_secteur = $row['id_secteur'];
                    $ids = array();
                }
                $ids[] = $row['id'];
            }
            if (count($ids)) {
                sql_updateq("spip_rubriques", array("id_secteur" => $id_secteur, 'profondeur' => $prof + 1), sql_in('id_rubrique', $ids));
            }
        }
        // Toutes les rubriques de profondeur $prof+1 qui n'ont pas un parent de profondeur $prof sont decalees
        $maxiter2 = $maxiter;
        while ($maxiter2-- and $rows = sql_allfetsel("id_rubrique as id", "spip_rubriques", "profondeur=" . intval($prof + 1) . " AND id_parent NOT IN (" . sql_get_select("zzz.id_rubrique", "spip_rubriques AS zzz", "zzz.profondeur=" . intval($prof)) . ")", '', '', '0,100')) {
            $rows = array_map('reset', $rows);
            sql_updateq("spip_rubriques", array('profondeur' => $prof + 2), sql_in("id_rubrique", $rows));
        }
        // ici on a fini de valider $prof+1, toutes les rubriques de prondeur 0 a $prof+1 sont OK
        // si pas de rubrique a profondeur $prof+1 pas la peine de continuer
        // si il reste des rubriques non vues, c'est une branche morte ou reference circulaire (base foireuse)
        // on arrete les frais
        if (sql_countsel("spip_rubriques", "profondeur=" . intval($prof + 1))) {
            $prof++;
            $continuer = true;
        }
    } while ($continuer and $maxiter--);
    // loger si la table des rubriques semble foireuse
    // et mettre un id_secteur=0 sur ces rubriques pour eviter toute selection par les boucles
    if (sql_countsel("spip_rubriques", "profondeur>" . intval($prof + 1))) {
        spip_log("Les rubriques de profondeur>" . ($prof + 1) . " semblent suspectes (branches morte ou reference circulaire dans les parents)", _LOG_CRITIQUE);
        sql_update("spip_rubriques", array('id_secteur' => 0), "profondeur>" . intval($prof + 1));
    }
    // reparer les articles
    $r = sql_select("A.id_article AS id, R.id_secteur AS secteur", "spip_articles AS A, spip_rubriques AS R", "A.id_rubrique = R.id_rubrique AND A.id_secteur <> R.id_secteur");
    while ($row = sql_fetch($r)) {
        sql_update("spip_articles", array("id_secteur" => $row['secteur']), "id_article=" . $row['id']);
    }
    // avertir les plugins qui peuvent faire leur mises a jour egalement
    pipeline('trig_propager_les_secteurs', '');
}