function revisions_repair_unserialized_fragments()
{
    $res = sql_select("*", "spip_versions_fragments", "compress=" . intval(-1));
    $n = sql_count($res);
    spip_log("{$n} fragments a verifier", "maj");
    while ($row = sql_fetch($res)) {
        $fragment = $row['fragment'];
        $set = array('compress' => 0);
        // verifier que le fragment est bien serializable
        if (unserialize($fragment) === false and strncmp($fragment, "corrompu", 8) !== 0) {
            $dir_tmp = sous_repertoire(_DIR_TMP, "versions_fragments_corrompus");
            $set['fragment'] = revisions_repair_serialise($fragment);
            if (strncmp($set['fragment'], "corrompu", 8) == 0) {
                $f = $row['id_fragment'] . "-" . $row['objet'] . "-" . $row['id_objet'];
                spip_log("Fragment serialize corrompu {$f}", "maj" . _LOG_ERREUR);
                $f = $f . "-serialize.txt";
                ecrire_fichier($dir_tmp . $f, $fragment);
            }
        }
        sql_updateq("spip_versions_fragments", $set, $w = "id_fragment=" . intval($row['id_fragment']) . " AND id_objet=" . intval($row['id_objet']) . " AND objet=" . sql_quote($row['objet']) . " AND version_min=" . intval($row['version_min']));
        #spip_log($w,"maj");
        if (time() > _TIME_OUT) {
            return;
        }
    }
}
Ejemplo n.º 2
0
function formulaires_delete_traiter_dist($id_article = 'new', $retour = '', $ajaxload = 'oui')
{
    include_spip('base/abstract_sql');
    include_spip('inc/texte');
    include_spip('action/editer_article');
    include_spip('inc/autoriser');
    $article = _request('article');
    $id_auteur = $GLOBALS['visiteur_session']['id_auteur'];
    include_spip('inc/autoriser');
    if (!autoriser('modifier', 'article', $article)) {
        $id_article = false;
        $result = sql_select('*', 'spip_auteurs_liens', 'id_objet=' . intval($article) . ' AND objet=' . sql_quote("article"));
        if ($row = sql_fetch($result)) {
            if ($row['id_auteur'] == $id_auteur) {
                $id_article = $article;
            }
        }
    } else {
        $id_article = $article;
    }
    if ($id_article) {
        // 2 actualizampos los campos del articulo
        sql_updateq('spip_articles', array('statut' => 'poubelle'), 'id_article=' . intval($id_article));
        // message
        return array("editable" => true, "message_ok" => _T('cgeomap:message_delete') . ':' . $id_article);
    } else {
        // message
        return array("editable" => false, "message_erreur" => _T('cgeomap:not_allowed'));
    }
}
function formulaires_ecatalogue_article_option_charger_dist($id_article)
{
    $valeurs = array();
    if ($res = sql_select('id_rubrique', 'spip_articles', 'id_article=' . $id_article)) {
        while ($r = sql_fetch($res)) {
            $id_rubrique = $r['id_rubrique'];
        }
    }
    $rubriques = array($id_rubrique);
    $rubrique_mdl = new PdkRubriqueModel();
    do {
        // get all parents id
        $rubrique = $rubrique_mdl->select_by_id($id_rubrique);
        $id_rubrique = $rubrique['id_parent'];
        $rubriques[] = $id_rubrique;
    } while ($id_rubrique != '0');
    $groupe_ids = array();
    if ($res = sql_select('id_groupe', 'spip_ecatalogue_rubriques_groupes', 'id_rubrique in (' . implode(',', $rubriques) . ')')) {
        while ($r = sql_fetch($res)) {
            $groupe_ids[] = $r['id_groupe'];
        }
    }
    $valeurs['groupe_ids'] = $groupe_ids;
    $ao_mdl = new ArticleOptionModel();
    $connections = $ao_mdl->select('id_article=' . $id_article);
    foreach ($connections as $connection) {
        $valeurs["options[" . $connection['id_option'] . "]"] = $connection['id_option'];
    }
    return $valeurs;
}
Ejemplo n.º 4
0
function migrer_articles($where_articles, $champ_date_debut, $champ_date_fin, $horaire, $where_mots)
{
    include_spip('action/editer_evenement');
    $where_mots = implode(' AND ', $where_mots);
    $nb = 0;
    $res = sql_select('*', 'spip_articles', $where_articles);
    while ($row = sql_fetch($res)) {
        $id_evenement = evenement_inserer($row['id_article']);
        // mettre les champs
        $set = array('date_debut' => $row[$champ_date_debut], 'date_fin' => $row[$champ_date_fin], 'titre' => $row['titre'], 'horaire' => $horaire ? 'oui' : 'non');
        evenement_modifier($id_evenement, $set);
        // associer les mots : en sql pour ne pas exploser si plein de mots en base
        $mots = sql_allfetsel('M.id_mot', 'spip_mots AS M JOIN spip_mots_liens AS L ON (M.id_mot=L.id_mot AND L.objet=' . sql_quote('article') . ')', 'id_objet=' . intval($row['id_article']) . ' AND (' . $where_mots . ')');
        if (count($mots)) {
            $insert = array();
            foreach ($mots as $mot) {
                $insert[] = array('id_mot' => $mot['id_mot'], 'objet' => 'evenement', 'id_objet' => $id_evenement);
            }
            sql_insertq_multi('spip_mots_liens', $insert);
        }
        // publier l'evenement
        evenement_modifier($id_evenement, array('statut' => 'publie'));
        $nb++;
    }
    return $nb;
}
Ejemplo n.º 5
0
/**
* url: /?p=api_key
* Returns api_key for user by basic authentication
* {
*   api_token: "TOKEN"
*  }
*/
function getAPIKey()
{
    header("Content-Type: application/json; charset=utf-8");
    $user = $_SERVER["PHP_AUTH_USER"];
    $password = $_SERVER["PHP_AUTH_PW"];
    if ($user == "" || $password == "") {
        // user is not authenticated
        header("WWW-Authenticate: Basic realm=Authorization Required");
        header("HTTP/1.1 401 unauthorized");
        echo "{\"error\": \"please send basic auth header\"}";
        die;
    } else {
        // check user
        $foundUser = sql_select("SELECT * FROM `User` WHERE `Nick`='" . sql_escape($user) . "'");
        // find user by username
        if (count($foundUser) == 1) {
            $user = $foundUser[0];
            if (verify_password($password, $user['Passwort'], $user['UID'])) {
                echo "{\"api_token\": \"" . $user["api_key"] . "\"}";
            }
        } else {
            // TODO: handle wrong auth
            header("HTTP/1.1 403 Forbidden");
            echo "{\"error\": \"forbidden\"}";
        }
        die;
    }
}
Ejemplo n.º 6
0
function formulaires_editer_json_article_traiter_dist($id_article = 'new', $retour = '')
{
    $message = array('editable' => true, 'message_ok' => '');
    $vhplab_json = _request('vhplab_json');
    $vhplab_json_num = intval($vhplab_json);
    if ($vhplab_json_num > 0) {
        // comprobamos si el articulo ya ha sido relacionado con un id
        $result = sql_select('*', 'spip_vhplab_json_liens', 'id_objet=' . intval($id_article) . ' AND objet=' . sql_quote("article"));
        if ($row = sql_fetch($result)) {
            // si el articulo ya ha sido relacionado con un id actualizamos el enlace
            sql_updateq('spip_vhplab_json', array('id_json' => $vhplab_json_num), 'id_vhplab_json=' . intval($row['id_vhplab_json']));
            $message['message_ok'] = _T('vhplab:json_update_ok');
        } else {
            // si el articulo no ha sido relacionado con ningún id creamos un enlace
            $id_vhplab = sql_insertq("spip_vhplab_json", array('id_json' => $vhplab_json_num));
            sql_insertq('spip_vhplab_json_liens', array('id_vhplab_json' => intval($id_vhplab), 'id_objet' => intval($id_article), 'objet' => 'article'));
            $message['message_ok'] = _T('vhplab:json_insert_ok');
        }
    }
    if ($retour) {
        include_spip('inc/headers');
        $message['message_ok'] .= redirige_formulaire($retour);
    }
    return $message;
}
Ejemplo n.º 7
0
function action_documenter_post($r)
{
	// - sign indique le portfolio image ou document, dans le cas de
	// la page exec=articles
	// - id est l'id_objet (id_article ou id_rubrique etc)
	// - type est 'article' (ou 'rubrique')
	// - id_document le doc a supprimer ou a delier de l'objet
	//   SI VIDE, on supprime tous les documents du type SIGN
	//   (bouton "supprimer tous les documents")
	list(, $sign, $id, $type, ,$id_document) = $r;

	if ($id_document) {
		supprimer_lien_document($id_document, $type, $id);
	}
	else {
		$obj = "id_objet=".intval($id)." AND objet=".sql_quote($type);
		$typdoc = sql_in('docs.extension', array('gif', 'jpg', 'png'), $sign  ? '' : 'NOT');

		$s = sql_select('docs.id_document AS id_doc', "spip_documents AS docs LEFT JOIN spip_documents_liens AS l ON l.id_document=docs.id_document", "$obj AND docs.mode='document' AND $typdoc");
		while ($t = sql_fetch($s)) {
			supprimer_lien_document($t['id_doc'], $type, $id);
		}
	}

	if ($type == 'rubrique') {
		include_spip('inc/rubriques');
		depublier_branche_rubrique_if($id);
	}
}
 function __construct($userid = 0, $server = "", $database = "", $username = "", $password = "")
 {
     $this->userid = $userid;
     $this->server_mysql = $server;
     $this->user_mysql = $username;
     $this->passw_mysql = $password;
     $this->database_mysql = $database;
     //
     if ($server == "" or $database == "" or $username == "" or $password == "") {
         // busca datos de conexion
         echo "<pre>";
         echo "server_mysql----->{$this->server_mysql}<br>";
         echo "database_mysql--->{$this->database_mysql}<br>";
         echo "user_mysql------->{$this->user_mysql}<br>";
         echo "pass_mysql------->{$this->passw_mysql}<br>";
         echo "</pre>";
         //
         $query = "SELECT  `id`,`username`,`password`,`server`,`database`\n                    FROM    `users`\n                    WHERE   `usertype`='mysql' AND\n                            `userid`={$userid}";
         echo "query---->{$query}<br>";
         if (sql_select($query, $results)) {
             if ($connection = $results->fetch(PDO::FETCH_ASSOC)) {
                 $this->server_mysql = $connection['server'];
                 $this->database_mysql = $connection['database'];
                 $this->user_mysql = $connection['username'];
                 $this->passw_mysql = $connection['password'];
             }
         }
     }
     $this->rowCount = 0;
     if (!($this->dblink = new PDO('mysql:host=' . $this->server_mysql . ';dbname=' . $this->database_mysql . ';charset=utf8', $this->user_mysql, $this->passw_mysql))) {
         echo "No es posible conectar con la base de datos " . $base_datos . "<br>";
         return false;
     }
 }
Ejemplo n.º 9
0
function action_supprimer_rubrique($r)
{
	list(,,$id_rubrique) = $r;
	sql_delete("spip_rubriques", "id_rubrique=$id_rubrique");
	sql_delete("spip_mots_rubriques", "id_rubrique=$id_rubrique");
	// Les admin restreints qui n'administraient que cette rubrique
	// deviennent redacteurs
	// (il y a sans doute moyen de faire ca avec un having)

	$q = sql_select("id_auteur", "spip_auteurs_rubriques", "id_rubrique=$id_rubrique");

	while ($r = sql_fetch($q)) {
		$id_auteur = $r['id_auteur'];
		sql_delete("spip_auteurs_rubriques", "id_rubrique=$id_rubrique AND id_auteur=$id_auteur");
		$n = sql_countsel("spip_auteurs_rubriques", "id_auteur=$id_auteur");
		if (!$n)
			sql_updateq("spip_auteurs", array("statut" => '1comite'), "id_auteur=$id_auteur");
	}
	// menu_rubriques devra recalculer
	effacer_meta("date_calcul_rubriques");

	// Une rubrique supprimable n'avait pas le statut "publie"
	// donc rien de neuf pour la rubrique parente
	include_spip('inc/rubriques');
	calculer_langues_rubriques();

	// invalider les caches marques de cette rubrique
	include_spip('inc/invalideur');
	suivre_invalideur("id='id_rubrique/$id_rubrique'");
}
/**
 * Supprimer les révisions des objets disparus
 */
function optimiser_base_revisions()
{
    /**
     * On commence par récupérer la liste des types d'objet ayant au moins une révision
     */
    $objets_revises = sql_select('objet', 'spip_versions', 'id_version=1', 'objet');
    /**
     * Pour chaque objet, on va contruire un tableau des identifiants disparus
     * On supprimera ensuite les occurences dans spip_versions et spip_versions_fragments
     */
    while ($objet = sql_fetch($objets_revises)) {
        $in = array();
        $table = table_objet_sql($objet['objet']);
        $id_table_objet = id_table_objet($objet['objet']);
        $res = sql_select("A.id_objet AS id_objet, A.objet AS objet", "spip_versions AS A LEFT JOIN {$table} AS R\n\t\t\t\t\t\t\tON R.{$id_table_objet}=A.id_objet AND A.objet=" . sql_quote($objet['objet']), "R.{$id_table_objet} IS NULL AND A.objet=" . sql_quote($objet['objet']) . " AND A.id_objet > 0", "A.id_objet", "A.id_objet");
        while ($row = sql_fetch($res)) {
            $in[$row['id_objet']] = true;
        }
        sql_free($res);
        /**
         * Si on a un array
         * On supprime toute occurence des objets disparus dans :
         * -* spip_versions
         * -* spip_versions_fragments
         */
        if ($in) {
            foreach (array('spip_versions', 'spip_versions_fragments') as $table) {
                sql_delete($table, sql_in('id_objet', array_keys($in)) . " AND objet=" . sql_quote($objet['objet']));
            }
        }
    }
}
Ejemplo n.º 11
0
/**
 * Effacer une rubrique
 *
 * http://doc.spip.org/@action_supprimer_dist
 *
 * @param null $id_rubrique
 * @return void
 */
function action_supprimer_rubrique_dist($id_rubrique = null)
{
    if (is_null($id_rubrique)) {
        $securiser_action = charger_fonction('securiser_action', 'inc');
        $id_rubrique = $securiser_action();
    }
    if (intval($id_rubrique)) {
        sql_delete("spip_rubriques", "id_rubrique=" . intval($id_rubrique));
        // Les admin restreints qui n'administraient que cette rubrique
        // deviennent redacteurs
        // (il y a sans doute moyen de faire ca avec un having)
        $q = sql_select("id_auteur", "spip_auteurs_liens", "objet='rubrique' AND id_objet=" . intval($id_rubrique));
        while ($r = sql_fetch($q)) {
            $id_auteur = $r['id_auteur'];
            // degrader avant de supprimer la restriction d'admin
            // section critique sur les droits
            $n = sql_countsel("spip_auteurs_liens", "objet='rubrique' AND id_objet!=" . intval($id_rubrique) . " AND id_auteur=" . intval($id_auteur));
            if (!$n) {
                include_spip('action/editer_auteur');
                auteurs_set($id_auteur, array("statut" => '1comite'));
            }
            sql_delete("spip_auteurs_liens", "objet='rubrique' AND id_objet=" . intval($id_rubrique) . " AND id_auteur=" . intval($id_auteur));
        }
        // menu_rubriques devra recalculer
        effacer_meta("date_calcul_rubriques");
        // Une rubrique supprimable n'avait pas le statut "publie"
        // donc rien de neuf pour la rubrique parente
        include_spip('inc/rubriques');
        calculer_langues_rubriques();
        // invalider les caches marques de cette rubrique
        include_spip('inc/invalideur');
        suivre_invalideur("id='rubrique/{$id_rubrique}'");
    }
}
Ejemplo n.º 12
0
function exec_editer_mots_args($id_objet, $objet)
{
	$base="";
	if (!$id_objet OR !$objet)
		$droit = false;
	elseif ($GLOBALS['connect_toutes_rubriques']) // pour eviter SQL
		$droit = true;
	elseif ($objet == 'article')
		$droit = autoriser('modifier','article',$id_objet);
	elseif ($objet == 'rubrique')
		$droit = autoriser('publierdans','rubrique',$id_objet);
	else {
		if ($objet == 'breve')
			$droit = sql_select("id_rubrique", "spip_breves", "id_breve=".sql_quote($id_objet));
		else
			$droit = sql_select("id_rubrique", "spip_syndic", "id_syndic=".sql_quote($id_objet));
		$droit = autoriser('publierdans','rubrique',$droit['id_rubrique']);
	}
	$bases = array('article'=>'articles','breve'=>'breves_voir','rubrique'=>'naviguer','syndic'=>'sites');
	if (isset($bases[$objet]))
		$base = $bases[$objet];

	if (!$droit) {
		include_spip('inc/minipres');
		echo minipres();
	} else {

		$ch = _request('cherche_mot');
		$id_groupe = _request('select_groupe');
		$editer_mots = charger_fonction('editer_mots', 'inc');
		ajax_retour($editer_mots($objet, $id_objet, $ch, $id_groupe, 'ajax',false,$base)); 
	}
}
Ejemplo n.º 13
0
/**
 * Generer un ticket resume de la transaction
 * pour les admins indiques dans la configuration
 * 
 * @param <type> $id_transaction
 * @return <type>
 */
function inc_bank_editer_ticket_admin_dist($id_transaction)
{
    // il faut avoir configure un ou des emails de notification
    $c = unserialize($GLOBALS['meta']['bank_paiement']);
    if (!strlen($email = $c['email_ticket_admin'])) {
        spip_log(var_export($GLOBALS['meta']['bank_paiement'], true), 'bank_ticket');
        return;
    }
    $ticket = "";
    $res = sql_select("*", "spip_transactions", "id_transaction=" . intval($id_transaction));
    if ($row = sql_fetch($res)) {
        $montant = $row['montant_regle'];
        $ticket .= "<h2>Transaction {$id_transaction}</h2>\n<table border='1'>";
        foreach ($row as $k => $v) {
            $ticket .= "<tr><td>{$k}</td><td>{$v}</td>";
        }
        $ticket .= "</table>";
    }
    // ensuite un pipeline pour editer le ticket
    $ticket = pipeline('bank_editer_ticket_reglement', array('args' => array('id_transaction' => $id_transaction), 'data' => $ticket));
    $ticket = "<html>{$ticket}</html>";
    $header = "MIME-Version: 1.0\n" . "Content-Type: text/html; charset=" . $GLOBALS['meta']['charset'] . "\n" . "Content-Transfer-Encoding: 8bit\n";
    $sujet = "Transaction OK #{$id_transaction} [" . affiche_monnaie($montant) . "]";
    $url = parse_url($GLOBALS['meta']['adresse_site']);
    $envoyer_mail = charger_fonction('envoyer_mail', 'inc');
    $envoyer_mail($email, $sujet, $ticket, 'reglements@' . $url['host'], $header);
}
Ejemplo n.º 14
0
/**
 * Retourne les valeurs à charger pour un formulaire d'édition d'un objet
 *
 * Lors d'une création, certains champs peuvent être préremplis
 * (c'est le cas des traductions)
 *
 * @param string $type
 *     Type d'objet (article, breve...)
 * @param string|int $id_objet
 *     Identifiant de l'objet, ou "new" pour une création
 * @param int $id_rubrique
 *     Identifiant éventuel de la rubrique parente
 * @param int $lier_trad
 *     Identifiant éventuel de la traduction de référence
 * @param string $champ_titre
 *     Nom de la colonne SQL de l'objet donnant le titre : pas vraiment idéal !
 *     On devrait pouvoir le savoir dans la déclaration de l'objet
 * @return array
 *     Couples clés / valeurs des champs du formulaire à charger.
 **/
function precharger_objet($type, $id_objet, $id_rubrique = 0, $lier_trad = 0, $champ_titre = 'titre')
{
    $table = table_objet_sql($type);
    $_id_objet = id_table_objet($table);
    // si l'objet existe deja, on retourne simplement ses valeurs
    if (is_numeric($id_objet)) {
        return sql_fetsel("*", $table, "{$_id_objet}={$id_objet}");
    }
    // ici, on demande une creation.
    // on prerempli certains elements : les champs si traduction,
    // les id_rubrique et id_secteur si l'objet a ces champs
    $desc = lister_tables_objets_sql($table);
    # il faudrait calculer $champ_titre ici
    $is_rubrique = isset($desc['field']['id_rubrique']);
    $is_secteur = isset($desc['field']['id_secteur']);
    // si demande de traduction
    // on recupere les valeurs de la traduction
    if ($lier_trad) {
        if ($select = charger_fonction("precharger_traduction_" . $type, 'inc', true)) {
            $row = $select($id_objet, $id_rubrique, $lier_trad);
        } else {
            $row = precharger_traduction_objet($type, $id_objet, $id_rubrique, $lier_trad, $champ_titre);
        }
    } else {
        $row[$champ_titre] = '';
        if ($is_rubrique) {
            $row['id_rubrique'] = $id_rubrique;
        }
    }
    // calcul de la rubrique
    # note : comment faire pour des traductions sur l'objet rubriques ?
    if ($is_rubrique) {
        // appel du script a la racine, faut choisir
        // admin restreint ==> sa premiere rubrique
        // autre ==> la derniere rubrique cree
        if (!$row['id_rubrique']) {
            if ($GLOBALS['connect_id_rubrique']) {
                $row['id_rubrique'] = $id_rubrique = current($GLOBALS['connect_id_rubrique']);
            } else {
                $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "", "", "id_rubrique DESC", 1);
                $row['id_rubrique'] = $id_rubrique = $row_rub['id_rubrique'];
            }
            if (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique'])) {
                // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises
                $res = sql_select("id_rubrique", "spip_rubriques", "id_parent=0");
                while (!autoriser('creerarticledans', 'rubrique', $row['id_rubrique']) && ($row_rub = sql_fetch($res))) {
                    $row['id_rubrique'] = $row_rub['id_rubrique'];
                }
            }
        }
    }
    // recuperer le secteur, pour affecter les bons champs extras
    if ($id_rubrique and $is_secteur) {
        if (!$row['id_secteur']) {
            $row_rub = sql_getfetsel("id_secteur", "spip_rubriques", "id_rubrique=" . sql_quote($id_rubrique));
            $row['id_secteur'] = $row_rub;
        }
    }
    return $row;
}
Ejemplo n.º 15
0
function admin_repair_plat(){
	spip_log("verification des documents joints");
	$out = "";
	$repertoire = array();
	include_spip('inc/getdocument');
	$res = sql_select('*','spip_documents',"fichier REGEXP CONCAT('^',extension,'[^/\]') AND distant='non'");

	while ($row=sql_fetch($res)){
		$ext = $row['extension'];
		if (!$ext) {
			spip_log("document sans extension: " . $row['id_document']);
			continue;
		}
		if (!isset($repertoire[$ext])){
			if (@file_exists($plat = _DIR_IMG. $ext .".plat"))
				spip_unlink($plat);
			$repertoire[$ext] = creer_repertoire_documents($ext);
			if (preg_match(',_$,',$repertoire[$ext]))
				$repertoire[$ext] = false;
		}
		if ($d=$repertoire[$ext]){
			$d = substr($d,strlen(_DIR_IMG));
			$src = $row['fichier'];
			$dest = $d . substr($src,strlen($d));
			if (deplacer_fichier_upload(_DIR_IMG . $src, _DIR_IMG . $dest)) {
				sql_updateq('spip_documents',array('fichier'=>$dest),'id_document='.intval($row['id_document']));
				spip_unlink(_DIR_IMG . $src);
				$out .= "$src => $dest<br />";				
			}
		}
	}

	return $out;
}
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;
}
function genie_clevermail_auto_ajout_abonnes_dist()
{
    if ($autoListes = sql_select("lst_id, lst_name, lst_auto_subscribers, lst_auto_subscribers_mode", "spip_cm_lists", "lst_auto_subscribers != '' AND lst_auto_subscribers_updated < " . (time() - 60 * 60 * 24))) {
        include_spip('inc/distant');
        while ($liste = sql_fetch($autoListes)) {
            if ($adresses = recuperer_page($liste['lst_auto_subscribers'])) {
                if (!clevermail_verification_adresses_email($adresses)) {
                    // XXX : log en chaîne de langue
                    spip_log('Le format des adresses e-mail ne semble pas bon dans le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail');
                } else {
                    $retour = clevermail_abonnes_ajout(array($liste['lst_id']), intval($liste['lst_auto_subscribers_mode']), $adresses);
                    sql_updateq("spip_cm_lists", array('lst_auto_subscribers_updated' => time()), "lst_id=" . $liste['lst_id']);
                    // XXX : log en chaîne de langue
                    $msg = 'Ajout automatique d\'abonnés à la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') à partir du fichier ' . $liste['lst_auto_subscribers'] . ' : ';
                    if ($retour === false) {
                        $msg .= _T('clevermail:aucun_nouvel_abonne');
                    } else {
                        $msg .= $retour['nb_nouv'] > 0 ? $retour['nb_nouv'] . _T('clevermail:n_nouveaux_abonnes') : _T('clevermail:aucun_nouvel_abonne');
                        $msg .= $retour['nb_nouv'] > 0 && $retour['nb_maj'] > 0 ? _T('clevermail:nouveaux_abonnes_et') : '';
                        $msg .= $retour['nb_maj'] > 0 ? $retour['nb_maj'] . _T('clevermail:changements_mode_abonnement') : '';
                        spip_log($msg, 'clevermail');
                    }
                }
            } else {
                // XXX : log en chaîne de langue
                spip_log('Impossible de télécharger le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail');
            }
        }
    }
    return 1;
}
Ejemplo n.º 18
0
function user_atom()
{
    global $ical_shifts, $user, $DISPLAY_NEWS;
    if (isset($_REQUEST['key']) && preg_match("/^[0-9a-f]{32}\$/", $_REQUEST['key'])) {
        $key = $_REQUEST['key'];
    } else {
        die("Missing key.");
    }
    $user = User_by_api_key($key);
    if ($user === false) {
        die("Unable to find user.");
    }
    if ($user == null) {
        die("Key invalid.");
    }
    if (!in_array('atom', privileges_for_user($user['UID']))) {
        die("No privilege for atom.");
    }
    $news = sql_select("SELECT * FROM `News` " . (empty($_REQUEST['meetings']) ? '' : 'WHERE `Treffen` = 1 ') . "ORDER BY `ID` DESC LIMIT " . sql_escape($DISPLAY_NEWS));
    header('Content-Type: application/atom+xml; charset=utf-8');
    $html = '<?xml version="1.0" encoding="utf-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title>Engelsystem</title>
  <id>' . $_SERVER['HTTP_HOST'] . htmlspecialchars(preg_replace('#[&?]key=[a-f0-9]{32}#', '', $_SERVER['REQUEST_URI'])) . '</id>
  <updated>' . date('Y-m-d\\TH:i:sP', $news[0]['Datum']) . "</updated>\n";
    foreach ($news as $news_entry) {
        $html .= "  <entry>\n    <title>" . htmlspecialchars($news_entry['Betreff']) . "</title>\n    <link href=\"" . page_link_to_absolute("news_comments&amp;nid=") . "{$news_entry['ID']}\"/>\n    <id>" . preg_replace('#^https?://#', '', page_link_to_absolute("news")) . "-{$news_entry['ID']}</id>\n    <updated>" . date('Y-m-d\\TH:i:sP', $news_entry['Datum']) . "</updated>\n    <summary type=\"html\">" . htmlspecialchars($news_entry['Text']) . "</summary>\n    </entry>\n";
    }
    $html .= "</feed>";
    header("Content-Length: " . strlen($html));
    echo $html;
    die;
}
/**
 * Preselectionner la rubrique lors de la creation
 * desactive par defaut suite a remontee utilisateur mais activable par define
 * ou surchargeable
 *
 * @param string $objet
 * @param array $row
 * @return string
 */
function inc_preselectionner_parent_nouvel_objet_dist($objet, $row)
{
    if (!_AUTO_SELECTION_RUBRIQUE) {
        return '';
    }
    if (!isset($row['id_rubrique'])) {
        return '';
    }
    $id_rubrique = '';
    if ($GLOBALS['connect_id_rubrique']) {
        // si admin restreint : sa rubrique
        $id_rubrique = $GLOBALS['connect_id_rubrique'][0];
    } else {
        // sinon la derniere rubrique cree
        $row_rub = sql_fetsel("id_rubrique", "spip_rubriques", "", "", "id_rubrique DESC", "0,1");
        $id_rubrique = $row_rub['id_rubrique'];
    }
    // si le choix ne convient pas, on cherche dans un secteur
    if (!autoriser('creer' . $objet . 'dans', 'rubrique', $id_rubrique)) {
        $id_rubrique = '';
        // manque de chance, la rubrique n'est pas autorisee, on cherche un des secteurs autorises
        $res = sql_select("id_rubrique", "spip_rubriques", "id_parent=0");
        while (!$id_rubrique and $row_rub = sql_fetch($res)) {
            if (autoriser('creer' . $objet . 'dans', 'rubrique', $row_rub['id_rubrique'])) {
                $id_rubrique = $row_rub['id_rubrique'];
            }
        }
    }
    return $id_rubrique;
}
Ejemplo n.º 20
0
 function action($a, $r)
 {
     $this->result = '';
     switch ($a) {
         case "default":
             $this->result = 'Welcome!';
             break;
         case "video":
             $this->result = '<object width=322 height=259><param name="allowfullscreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="flashvars" value="channel=TEST&broadcast=true"></param><param name="movie" value="http://talxy.com/i/p2p.swf"></param><embed src="http://talxy.com/i/p2p.swf" allowfullscreen="true" allowscriptaccess="always" flashvars="channel=TEST&broadcast=true" type="application/x-shockwave-flash" width=322 height=259></embed></object>';
             break;
         case "patient":
             $this->result = sql_select("select * from objects where type='{$a}'", "table");
             break;
         case "doctor":
             $this->result = sql_select("select name, CONCAT('<img src=\"images/', image, '\" width=\"128\" />') as img from jos151_contact_details", "table");
             break;
         case "illness":
             $this->result = sql_select("select count(addr) as cnt, agent from log group by agent order by cnt desc limit 25", "table");
             break;
         case "center":
             $this->result = sql_select("select * from objects where type='{$a}'", "table");
             break;
         case "search":
             //$this->result=$r["query"];
             $this->result = mail($r["query"], 'subject', 'Тестовое сообщение');
             break;
         case "login":
             $this->result = $r["login"];
             break;
         case "mvc":
             $this->result = '<object width=100% height=380><param name="allowfullscreen" value="true"></param><param name="allowscriptaccess" value="always"></param><param name="flashvars" value="channel=TEST&broadcast=true"></param><param name="movie" value="media/MVC.jpg"></param><embed src="media/MVC.jpg" allowfullscreen="true" allowscriptaccess="always" flashvars="channel=TEST&broadcast=true" type="application/x-shockwave-flash" width=100% height=380></embed></object>';
             break;
     }
 }
function action_clevermail_list_subscriber_clear_dist()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    if (sql_countsel("spip_cm_lists_subscribers AS list, spip_cm_subscribers AS sub", "list.sub_id = sub.sub_id AND sub.sub_email LIKE '*****@*****.**'")) {
        $subscribers = sql_select("sub.sub_id", "spip_cm_lists_subscribers AS list, spip_cm_subscribers AS sub", "list.sub_id = sub.sub_id AND sub.sub_email LIKE '*****@*****.**'", "list.sub_id", "", "");
        $sub_deleted = "";
        while ($subscriber = sql_fetch($subscribers)) {
            sql_delete("spip_cm_lists_subscribers", "sub_id = " . intval($subscriber['sub_id']));
            sql_delete("spip_cm_pending", "sub_id = " . intval($subscriber['sub_id']));
            $sub_deleted = $sub_deleted . ' ' . intval($subscriber['sub_id']);
        }
        spip_log('Suppression des abonnements ' . $sub_deleted, 'clevermail');
    } else {
        spip_log('Il n\'y a pas d\'abonnement à supprimer', 'clevermail');
    }
    if (sql_countsel("spip_cm_lists_subscribers", "", "lsr_id", "count(lsr_id) > 1") > 1) {
        $doublons = sql_select("lsr_id", "spip_cm_lists_subscribers", "", "lsr_id", "", "", "count(lsr_id) > 1");
        while ($doublon = sql_fetch($doublons)) {
            $lists = sql_select("lst_id, sub_id", "spip_cm_lists_subscribers", "lsr_id ='" . $doublon['lsr_id'] . "'");
            while ($list = sql_fetch($lists)) {
                sql_updateq("spip_cm_lists_subscribers", array('lsr_id' => md5('subscribe#' . intval($list['lst_id']) . '#' . intval($list['sub_id']) . '#' . time())), "lst_id=" . sql_quote($list['lst_id']) . " AND sub_id=" . sql_quote($list['sub_id']));
            }
        }
    }
    //Récupération du timestamp du mois dernier
    $today = time();
    $date_today = date("d:m:Y", $today);
    $today_exploded = explode(":", $date_today);
    $mois = (int) $today_exploded[1];
    $mois = --$mois;
    $valid_date = mktime(0, 0, 0, $mois, $today_exploded[0], $today_exploded[2]);
    sql_delete("spip_cm_pending", "pnd_action_date <" . $valid_date);
    spip_log('Suppression des abonnements en attente depuis plus d\'un mois', 'clevermail');
}
Ejemplo n.º 22
0
function action_supprimer_tous_orphelins()
{
    $securiser_action = charger_fonction('securiser_action', 'inc');
    $arg = $securiser_action();
    //on recupere le contexte pour ne supprimer les orphelins que de ce dernier
    list($media, $distant, $statut, $sanstitre) = explode('/', $arg);
    //critere sur le media
    if ($media) {
        $select = "media=" . sql_quote($media);
    }
    //critere sur le distant
    if ($distant) {
        $where[] = "distant=" . sql_quote($distant);
    }
    //critere sur le statut
    if ($statut) {
        $where[] = "statut REGEXP " . sql_quote("({$statut})");
    }
    //critere sur le sanstitre
    if ($sanstitre) {
        $where[] = "titre=''";
    }
    //on isole les orphelins
    $select = sql_get_select("DISTINCT id_document", "spip_documents_liens as oooo");
    $cond = "spip_documents.id_document NOT IN ({$select})";
    $where[] = $cond;
    $ids_doc_orphelins = sql_select("id_document", "spip_documents", $where);
    $supprimer_document = charger_fonction('supprimer_document', 'action');
    while ($row = sql_fetch($ids_doc_orphelins)) {
        $supprimer_document($row['id_document']);
        // pour les orphelins du contexte, on traite avec la fonction existante
    }
}
Ejemplo n.º 23
0
/**
 * Vérifier si une table a crashé
 *
 * Pour cela, on vérifie si on peut se connecter à la base de données.
 * 
 * @see message_crash_tables()
 *
 * @return bool|array
 *     Si pas de table de crashée, on retourne `false`.
 *     Sinon,  retourne un tableau contenant tous les noms
 *     des tables qui ont crashé.
 */
function verifier_crash_tables()
{
    if (spip_connect()) {
        include_spip('base/serial');
        include_spip('base/auxiliaires');
        $crash = array();
        foreach (array('tables_principales', 'tables_auxiliaires') as $com) {
            foreach ($GLOBALS[$com] as $table => $desc) {
                if (!sql_select('*', $table, '', '', '', 1) and !defined('spip_interdire_cache')) {
                    # cas "LOST CONNECTION"
                    $crash[] = $table;
                }
            }
        }
        #$crash[] = 'test';
        if ($crash) {
            ecrire_meta('message_crash_tables', serialize($crash));
            spip_log('crash des tables', 'err');
            spip_log($crash, 'err');
        } else {
            effacer_meta('message_crash_tables');
        }
        return $crash;
    }
    return false;
}
function balise_ECATALOGUE_OPTION_FILTER_LINK_dyn($id_rubrique = 0)
{
    include_spip('functions/pdk_url');
    $rubriques = array($id_rubrique);
    $rubrique_mdl = new PdkRubriqueModel();
    do {
        // get all parents id
        $rubrique = $rubrique_mdl->select_by_id($id_rubrique);
        $id_rubrique = $rubrique['id_parent'];
        $rubriques[] = $id_rubrique;
    } while ($id_rubrique != '0');
    $rubriques = array_unique($rubriques);
    //на всякий случай
    $options = array();
    //get required options
    $result = sql_select(array('id_option'), array('spip_ecatalogue_articles_options as ao', 'spip_articles as a', 'spip_ecatalogue_products as p'), array('id_rubrique in (' . implode(',', $rubriques) . ')', 'p.id_article=a.id_article', 'a.id_article=ao.id_article', 'statut="publie"', 'quantity>0'), array('id_option'));
    while ($row = sql_fetch($result)) {
        $options[] = $row['id_option'];
    }
    //get proprietes by options
    $result = sql_select(array('p.id_propriete', 'p.titre as p_titre', 'type', 'id_option', 'o.titre as o_titre'), array('spip_ecatalogue_proprietes as p', 'spip_ecatalogue_options as o'), array('o.id_propriete=p.id_propriete', 'id_option in (' . implode(',', $options) . ')'), '', array('p.titre'));
    while ($row = sql_fetch($result)) {
        if (isset($proprietes[$row['id_propriete']])) {
            //if exits add option to this propriete
            $proprietes[$row['id_propriete']]['options'][$row['id_option']] = $row['o_titre'];
        } else {
            //register new propriete
            $proprietes[$row['id_propriete']] = array('titre' => $row['p_titre'], 'type' => $row['type'], 'options' => array($row['id_option'] => $row['o_titre']));
        }
    }
    return array('balise/ecatalogue_option_filter_link', 0, array('proprietes' => $proprietes));
}
function genie_ajouter_date_redac_articles_dist($t)
{
    //spip_log("Mon travail c est juste une ligne de log....",_LOG_INFO_IMPORTANTE);
    // echo "1";
    if ($resultats = sql_select("*", "spip_articles", "id_secteur=115 AND statut='publie' AND date_redac=0000-00-00")) {
        // boucler sur les resultats
        while ($res = sql_fetch($resultats)) {
            // utiliser les resultats
            // hierarchie des rubriques de l'article via la fonction de spip
            include_spip("inc/rubriques");
            $hierarchie = calcul_hierarchie_in($res['id_rubrique'], true);
            // la date_numero et l'id_rubrique de la rubrique Numéro.
            $numero = sql_fetsel("date_numero,id_rubrique", "spip_rubriques", array(sql_in('id_rubrique', $hierarchie), 'profondeur=1'));
            // la date du numéro est à 0. On ne vérifie que l'année (?)
            if (substr($numero['date_numero'], 0, 4) == '0000') {
                spip_log("Article #" . $res['id_article'] . " : la date_redac n'a pas pu être modifiée. La rubrique #" . $numero['id_rubrique'] . " correspondant au numéro n'a pas de date valide.", 'vacarme_cron' . _LOG_INFO_IMPORTANTE);
                // return 1; // 0 ou 1 ?
            } else {
                spip_log("Mise à jour de l'article #" . $res['id_article'], 'vacarme_cron' . _LOG_INFO_IMPORTANTE);
                sql_updateq("spip_articles", array('date_redac' => $numero['date_numero']), "id_article=" . intval($res['id_article']));
                // return 1;
            }
        }
    }
    return 1;
}
Ejemplo n.º 26
0
function upgrade_evenements_statut_025()
{
    include_spip('action/editer_evenement');
    $res = sql_select('id_evenement', 'spip_evenements', "statut='0'");
    while ($row = sql_fetch($res)) {
        evenement_modifier($row['id_evenement'], array());
    }
}
Ejemplo n.º 27
0
function exec_documents_liste_dist()
{

//
// Recupere les donnees
//

$commencer_page = charger_fonction('commencer_page', 'inc');
echo $commencer_page(_T('titre_page_documents_liste'), "naviguer", "documents");
echo debut_gauche('', true);


//////////////////////////////////////////////////////
// Boite "voir en ligne"
//

echo debut_boite_info(true);

echo propre(_T('texte_recapitiule_liste_documents'));

echo fin_boite_info(true);



echo debut_droite('', true);

	// recupere les titres des types
	$res = sql_select('extension, titre', "spip_types_documents");
	while ($row = sql_fetch($res))
		$types[$row['extension']] = $row;

	$result = sql_select("docs.id_document AS id_doc, docs.extension AS extension, docs.fichier AS fichier, docs.date AS date, docs.titre AS titre, docs.descriptif AS descriptif, R.id_rubrique AS id_rub, R.titre AS titre_rub", "spip_documents AS docs, spip_documents_liens AS lien, spip_rubriques AS R", "docs.id_document = lien.id_document AND R.id_rubrique = lien.id_objet AND lien.objet='rubrique' AND docs.mode = 'document'", "", "docs.date DESC");

	while ($row=sql_fetch($result)){
		$titre=$row['titre'];
		$descriptif=$row['descriptif'];
		$date=$row['date'];
		$id_document=$row['id_doc'];
		$id_rubrique=$row['id_rub'];
		$titre_rub = typo($row['titre_rub']);
		$fichier = $row['fichier'];

		if (!$titre) $titre = _T('info_document').' '.$id_document;

		debut_cadre_relief("doc-24.gif");
		echo "<b>$titre</b> (" . $types[$row['extension']]['titre'] . ', ' . affdate($date) . ")";
		if ($descriptif)
			echo propre($descriptif);
		else
			echo "<p><tt>$fichier</tt>" . '</p>';

		echo "<p>"._T('info_dans_rubrique')." <a href='" . generer_url_ecrire("naviguer","id_rubrique=$id_rubrique") . "'>$titre_rub</a></p>";
		echo fin_cadre_relief(true);
	}

	echo fin_gauche(), fin_page();
}
Ejemplo n.º 28
0
function sql_wrap()
{
    global $g;
    //if ($g["sql"]["connected"] == "true") return;
    //$g["sql"]["connected"] = "true";
    sql_connect();
    sql_select();
    return 0;
}
Ejemplo n.º 29
0
function privileges_for_group($group_id)
{
    $privileges = array();
    $groups_privs = sql_select("SELECT * FROM `GroupPrivileges` JOIN `Privileges` ON (`GroupPrivileges`.`privilege_id` = `Privileges`.`id`) WHERE `group_id`='" . sql_escape($group_id) . "'");
    foreach ($groups_privs as $guest_priv) {
        $privileges[] = $guest_priv['name'];
    }
    return $privileges;
}
Ejemplo n.º 30
0
/**
 * Calcul du total des impressions/clics pour une publicité
 *
 * @param int $id_pub
 *     Identifiant de la publicité
 * @param string $type_stat
 *    valeurs possibles : impressions|clics
 * @return int
 */
function total_stats($id_pub, $type_stat)
{
    $total = 0;
    $res = sql_select($type_stat, 'spip_stats_pubs', 'id_publicite=' . intval($id_pub));
    while ($r = sql_fetch($res)) {
        $total = $total + $r[$type_stat];
    }
    return $total;
}