Exemple #1
0
/**
 * Exec de la page de destruction des tables de SPIP
**/
function exec_base_delete_all_dist()
{
    include_spip('inc/autoriser');
    if (!autoriser('detruire')) {
        include_spip('inc/minipres');
        echo minipres();
    } else {
        include_spip('base/dump');
        $res = base_lister_toutes_tables('', array(), array(), true);
        if (!$res) {
            include_spip('inc/minipres');
            spip_log("Erreur base de donnees");
            echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique') . "<p><tt>" . sql_errno() . " " . sql_error() . "</tt></p>");
        } else {
            $res = base_saisie_tables('delete', $res);
            include_spip('inc/headers');
            $res = "\n<ol style='text-align:left'><li>\n" . join("</li>\n<li>", $res) . '</li></ol>';
            $admin = charger_fonction('admin', 'inc');
            $res = $admin('delete_all', _T('titre_page_delete_all'), $res);
            if (!$res) {
                redirige_url_ecrire('install', '');
            } else {
                echo $res;
            }
        }
    }
}
Exemple #2
0
function sql_errorno($link = null)
{
    $result = sql_error();
    $resultno = sql_errno();
    $result = $resultno . ": " . $result;
    return $result;
}
Exemple #3
0
function trace_query_end($query, $start, $result, $erreur, $serveur=''){
	if ($start)
		trace_query_chrono($start, microtime(), $query, $result, $serveur);
	// tracer les erreurs, sauf pour select, c'est fait dans abstract_sql
	if ($erreur AND !preg_match('/^select\b/i', $query))
		erreur_squelette(array(sql_errno($serveur), $erreur, $query));
	return $result;
}
/**
 * Action de réparation de la base de données
 *
 * Tente de réparer les tables, recalcule les héritages et secteurs
 * de rubriques. Affiche les erreurs s'il y en a eu.
 *
 * @pipeline_appel base_admin_repair
 * @uses admin_repair_tables()
 * @uses calculer_rubriques()
 * @uses propager_les_secteurs()
 *
 * @param string $titre Inutilisé
 * @param string $reprise Inutilisé
 **/
function base_repair_dist($titre = '', $reprise = '')
{
    $res = admin_repair_tables();
    if (!$res) {
        $res = "<div class='error'>" . _T('avis_erreur_mysql') . ' ' . sql_errno() . ': ' . sql_error() . "</div>\n";
    } else {
        include_spip('inc/rubriques');
        calculer_rubriques();
        propager_les_secteurs();
    }
    include_spip('inc/minipres');
    $res .= pipeline('base_admin_repair', $res);
    echo minipres(_T('texte_tentative_recuperation'), $res . generer_form_ecrire('accueil', '', '', _T('public:accueil_site')));
}
Exemple #5
0
function sql_errorno($link = null)
{
    if (isset($link)) {
        $result = sql_error($link);
        $resultno = sql_errno($link);
    }
    if (!isset($link)) {
        $result = sql_error();
        $resultno = sql_errno();
    }
    if ($result == "" && $result === 0) {
        return "";
    }
    if ($result != "" && $result !== 0) {
        $result = $resultno . ": " . $result;
    }
    return $result;
}
Exemple #6
0
/**
 * fonction appliquee par ecrire/index sur le resultat de la precedente
 * en cas de refus de connexion.
 * Retourne un message a afficher ou redirige illico.
 *
 * @param  $raison
 * @return array|string
 */
function auth_echec($raison)
{
    include_spip('inc/minipres');
    include_spip('inc/headers');
    // pas authentifie. Pourquoi ?
    if (is_string($raison)) {
        // redirection vers une page d'authentification
        // on ne revient pas de cette fonction
        // sauf si pb de header
        $raison = redirige_formulaire($raison);
    } elseif (is_int($raison)) {
        // erreur SQL a afficher
        $raison = minipres(_T('info_travaux_titre'), _T('titre_probleme_technique') . "<p><tt>" . sql_errno() . " " . sql_error() . "</tt></p>");
    } elseif (@$raison['statut']) {
        // un simple visiteur n'a pas acces a l'espace prive
        spip_log("connexion refusee a " . @$raison['id_auteur']);
        $raison = minipres(_T('avis_erreur_connexion'), _T('avis_erreur_visiteur'));
    } else {
        // auteur en fin de droits ...
        $h = $raison['site'];
        $raison = minipres(_T('avis_erreur_connexion'), "<br /><br /><p>" . _T('texte_inc_auth_1', array('auth_login' => $raison['login'])) . " <a href='{$h}'>" . _T('texte_inc_auth_2') . "</a>" . _T('texte_inc_auth_3'));
    }
    return $raison;
}
Exemple #7
0
function base_admin_repair_dist($titre='', $reprise='') {

	$f = sql_repair('repair', NULL, true);
	if ($f) {
		$res = admin_repair_tables();
	} else {
		if ($titre)
		  spip_log("Pas d'instruction REPAIR dans ce serveur SQL");
		$res = '     ';
	}

	if (!$res) {
		$res = "<br /><br /><span style='color: red; font-weight: bold;'><tt>"._T('avis_erreur_mysql').' '.sql_errno().': '.sql_error() ."</tt></span><br /><br /><br />\n";
	} else {
		include_spip('inc/rubriques');
		calculer_rubriques();
		propager_les_secteurs();
	}
	include_spip('inc/minipres');
	$res .= pipeline('base_admin_repair',$res);
	$res .= admin_repair_plat();
	echo minipres(_T('texte_tentative_recuperation'),
			$res . generer_form_ecrire('accueil', '','',_T('public:accueil_site')));
}
/**
 * Effectue une requête de selection
 *
 * Fonction de selection (SELECT), retournant la ressource interrogeable par sql_fetch.
 *
 * @api
 * @see sql_fetch()      Pour boucler sur les resultats de cette fonction
 *
 * @param array|string $select
 *     Liste des champs a recuperer (Select)
 * @param array|string $from
 *     Tables a consulter (From)
 * @param array|string $where
 *     Conditions a remplir (Where)
 * @param array|string $groupby
 *     Critere de regroupement (Group by)
 * @param array|string $orderby
 *     Tableau de classement (Order By)
 * @param string $limit
 *     Critere de limite (Limit)
 * @param array $having
 *     Tableau des des post-conditions a remplir (Having)
 * @param string $serveur
 *     Le serveur sollicite (pour retrouver la connexion)
 * @param bool|string $option
 *     Peut avoir 3 valeurs :
 *
 *     - false -> ne pas l'exécuter mais la retourner,
 *     - continue -> ne pas echouer en cas de serveur sql indisponible,
 *     - true|array -> executer la requête.
 *     Le cas array est, pour une requete produite par le compilateur,
 *     un tableau donnnant le contexte afin d'indiquer le lieu de l'erreur au besoin
 *
 *
 * @return mixed
 *     Ressource SQL
 *
 *     - Ressource SQL pour sql_fetch, si la requete est correcte
 *     - false en cas d'erreur
 *     - Chaine contenant la requete avec $option=false
 *
 * Retourne false en cas d'erreur, apres l'avoir denoncee.
 * Les portages doivent retourner la requete elle-meme en cas d'erreur,
 * afin de disposer du texte brut.
 *
 **/
function sql_select($select = array(), $from = array(), $where = array(), $groupby = array(), $orderby = array(), $limit = '', $having = array(), $serveur = '', $option = true)
{
    $f = sql_serveur('select', $serveur, $option === 'continue' or $option === false);
    if (!is_string($f) or !$f) {
        return false;
    }
    $debug = (defined('_VAR_MODE') and _VAR_MODE == 'debug');
    if ($option !== false and !$debug) {
        $res = $f($select, $from, $where, $groupby, $orderby, $limit, $having, $serveur, is_array($option) ? true : $option);
    } else {
        $query = $f($select, $from, $where, $groupby, $orderby, $limit, $having, $serveur, false);
        if (!$option) {
            return $query;
        }
        // le debug, c'est pour ce qui a ete produit par le compilateur
        if (isset($GLOBALS['debug']['aucasou'])) {
            list($table, $id, ) = $GLOBALS['debug']['aucasou'];
            $nom = $GLOBALS['debug_objets']['courant'] . $id;
            $GLOBALS['debug_objets']['requete'][$nom] = $query;
        }
        $res = $f($select, $from, $where, $groupby, $orderby, $limit, $having, $serveur, true);
    }
    // en cas d'erreur
    if (!is_string($res)) {
        return $res;
    }
    // denoncer l'erreur SQL dans sa version brute
    spip_sql_erreur($serveur);
    // idem dans sa version squelette (prefixe des tables non substitue)
    $contexte_compil = sql_error_backtrace(true);
    erreur_squelette(array(sql_errno($serveur), sql_error($serveur), $res), $contexte_compil);
    return false;
}
Exemple #9
0
function spip_sql_erreur($serveur = '')
{
    $connexion = spip_connect($serveur);
    $e = sql_errno($serveur);
    $t = isset($connexion['type']) ? $connexion['type'] : 'sql';
    $m = "Erreur {$e} de {$t}: " . sql_error($serveur) . "\n" . $connexion['last'];
    $f = $t . $serveur;
    spip_log($m, $f . '.' . _LOG_ERREUR);
}
function spiplistes_sqlerror_log ($trace = '') {
	if($trace) $trace = " ($trace) ";
	spiplistes_log('DB ERROR'.$trace.": [" . sql_errno() . "] " . sql_error());
	return(true);
}
Exemple #11
0
function sql_select ($select = array(), $from = array(), $where = array(),
	$groupby = array(), $orderby = array(), $limit = '', $having = array(),
	$serveur='', $option=true) {
	$f = sql_serveur('select', $serveur,  $option==='continue' OR $option===false);
	if (!is_string($f) OR !$f) return false;

	$debug = (isset($GLOBALS['var_mode']) AND $GLOBALS['var_mode'] == 'debug' );
	if (($option !== false) AND !$debug) {
		$res = $f($select, $from, $where, $groupby, $orderby, $limit, $having, $serveur, is_array($option) ? true : $option);
	} else {
		$query = $f($select, $from, $where, $groupby, $orderby, $limit, $having, $serveur, false);
		if (!$option) return $query;
		// le debug, c'est pour ce qui a ete produit par le compilateur
		if (isset($GLOBALS['debug']['aucasou'])) {
			list($table, $id,) = $GLOBALS['debug']['aucasou'];
			$nom = $GLOBALS['debug_objets']['courant'] . $id;
			$GLOBALS['debug_objets']['requete'][$nom] = $query;
		}
		$res = $f($select, $from, $where, $groupby, $orderby, $limit, $having, $serveur, true);
	}

	if (!is_string($res)) return $res;
	// denoncer l'erreur SQL dans sa version brute
	spip_sql_erreur($serveur);
	// idem dans sa version squelette (prefixe des tables non substitue)
	erreur_squelette(array(sql_errno($serveur), sql_error($serveur), $res), $option);
	return false;
}
Exemple #12
0
function spip_sql_erreur($serveur='')
{
	$connexion = spip_connect($serveur);
	$e = sql_errno($serveur);
	$t = (isset($connexion['type']) ? $connexion['type'] : 'sql');
	$m = "Erreur $e de $t: " . sql_error($serveur) . "\n" . $connexion['last'];
	$f = $t . $serveur;
	spip_log($m, $f);
}
Exemple #13
0
 function set_var($key, $val)
 {
     global $db;
     if (!isset($this->old_vars[$key])) {
         if (!($result = $db->sql_query('ALTER TABLE ' . CONFIG_TABLE . ' ADD vars_' . $key . ' VARCHAR(255) NOT NULL', false) && sql_errno() != 1064)) {
             sql_error(true, 'ALTER TABLE ' . CONFIG_TABLE . ' ADD vars_' . $key . ' VARCHAR(255) NOT NULL');
         }
     }
     if (!isset($this->vars[$key]) || $this->vars[$key] != $val) {
         $this->vars[$key] = $val;
     }
     $this->old_vars[$key] = $val;
     if (is_numeric($val)) {
         $this->updates['vars_' . $key] = 'vars_' . $key . ' = ' . $val;
     } elseif (is_array($val) || is_object($val)) {
         $this->updates['vars_' . $key] = 'vars_' . $key . ' = \'' . quotes(serialize($val)) . '\'';
     } else {
         $this->updates['vars_' . $key] = 'vars_' . $key . ' = \'' . quotes($val) . '\'';
     }
 }