function wha_check_offer_dist($id_abonnement) { $res = spip_query('SELECT * FROM spip_abonnements WHERE id_abonnement=' . intval($id_abonnement)); if (!($row = spip_fetch_array($res))) { return false; } if ($row['mode_paiement'] != 'wha' or !($uoid = $row['abonne_uid'])) { spip_log("wha_check_offer :Erreur : abonnement {$id_abonnement} n'a pas ete souscrit avec wha (ou pas d'uoid)", 'wha_abo_check'); return false; } if (!($confirm = $row['confirm']) or !($confirm = unserialize($confirm))) { spip_log("wha_check_offer :Erreur : abonnement {$id_abonnement} n'a pas d'url node enregistree", 'wha_abo_check'); return false; } $config = array('MERCHANT_ID' => $confirm['partner'], 'KEY_ID' => $confirm['key'], 'node' => $confirm['node']); $url_check = wha_url_check_abo($uoid, 'love', $config); include_spip('inc/distant'); $ack = @recuperer_page($url_check); spip_log($t = "wha_check_offer : reponse a {$url_check} : {$ack}", 'wha_abo_check'); if (!$ack or !($unsign = wha_unsign($ack)) or !($args = wha_extract_args(reset($unsign)))) { spip_log($t = "wha_check_offer : pas de reponse valide {$url_check} : {$ack}", 'wha_abo_check'); return null; } if (isset($args['c']) and $args['c'] == 'ack') { return true; } if (isset($args['e']) and in_array($args['e'], array(0, 1, 14, 15))) { return false; } return null; }
function getenfant($leparent,$rubselected){ static $i = 0, $premier = 1; $i++; $query="SELECT * FROM spip_rubriques WHERE id_parent='$leparent' ORDER BY titre"; $result = spip_query($query); while($row=spip_fetch_array($result)){ $my_rubrique=$row['id_rubrique']; $titre=typo($row['titre']); $style = ""; $espace=""; for ($count=1;$count<$i;$count++){ $espace.=" "; } switch ($i) { case 1: $espace= ""; $style .= "font-weight: bold;"; break; case 2: $style .= "color: #202020;"; break; case 3: $style .= "color: #404040;"; break; case 4: $style .= "color: #606060;"; break; case 5: $style .= "color: #808080;"; break; default; $style .= "color: #A0A0A0;"; break; } if (!(($pospoint = strpos($titre,'.')) === FALSE)) { $titre = substr($titre,$pospoint + 2); } $titre = substr($titre,0, 50); // largeur maxi //if ($i == 1 && !$premier) { $option = "<option value='$my_rubrique' style=\"$style\""; if ($rubselected == $my_rubrique) { $option .= " selected"; } echo "$option>$espace".$titre."</option>\n"; $premier = 0; getenfant($my_rubrique,$rubselected); } $i=$i-1; }
function maj_1_934() { // attention, en cas de mutualisation _DIR_IMG contient quelque chose comme sites/urldusite/IMG/ // essayons en ne prenant que le dernier segment $dir_img = basename(_DIR_IMG) . '/'; $res = spip_query("SELECT fichier FROM spip_documents WHERE fichier LIKE " . _q($dir_img . '%') . " LIMIT 0,1"); if (!($row = spip_fetch_array($res))) { //Êsinon on essaye avec le chemin complet // il faut donc verifier qu'on a bien le bon nom de repertoire $dir_img = substr(_DIR_IMG, strlen(_DIR_RACINE)); } $n = strlen($dir_img) + 1; spip_query("UPDATE spip_documents SET `fichier`=substring(fichier,{$n}) WHERE `fichier` LIKE " . _q($dir_img . '%')); }
function cs_titre_sql($table, $where) { $titre = cs_titre_champ($table); // Utiliser la bonne requete en fonction de la version de SPIP if(function_exists('sql_getfetsel') && function_exists('table_objet_sql')) { // SPIP 2.0 if($r = sql_getfetsel($titre, table_objet_sql($table), $where)) return $r; } else { if($r = spip_query("SELECT $titre FROM spip_$table WHERE $where")) // s'il existe un champ, on le retourne if($row = spip_fetch_array($r)) return $row[$titre]; } // sinon, rien ! return ''; }
function affvisit() { $query = 'SELECT SUM(visites) AS total_absolu FROM spip_visites'; $result = spip_query($query); $visites_today = 0; if ($row = spip_fetch_array($result)) { $total_absolu = $row['total_absolu']; } $query = 'SELECT visites FROM spip_visites WHERE date=NOW()'; $result = spip_query($query); if ($row = @spip_fetch_array($result)) { $visites_today = $row['visites']; } $total_gen = $total_absolu + $visites_today; return $total_gen; }
function _action_auteur($action, $id_auteur, $nom_alea) { if (!$id_auteur) { global $connect_id_auteur, $connect_pass; $id_auteur = $connect_id_auteur; $pass = $connect_pass; } else { $result = spip_query("SELECT password FROM lcm_author WHERE id_author={$id_auteur}"); if ($result) { if ($row = spip_fetch_array($result)) { $pass = $row['password']; } } } $alea = read_meta($nom_alea); return md5($action . $id_auteur . $pass . $alea); }
function type_urls_URL_objet_191_exec() { global $type_urls; $type = _request('type_objet'); $table = $type.($type=='syndic'?'':'s'); $id_objet = intval(_request('id_objet')); $r0 = "SELECT url_propre, titre FROM spip_$table WHERE id_$type=$id_objet"; $r = spip_query($r0); if ($r AND $r = spip_fetch_array($r)) { $url_1 = $r['url_propre']; $titre = $r['titre']; } if(!function_exists($fct = 'generer_url_'.($type=='syndic'?'site':$type))) { if($f = include_spip('urls/'.$type_urls, false)) include_once($f); } $url = function_exists($fct)?$fct($id_objet):'??'; $r = spip_query($r0); if ($r AND $r = spip_fetch_array($r)) $url_2 = $r['url_propre']; // url propre en base || titre || url complete || type d'URLs || URL recalculee include_spip('inc/charsets'); echo _request('format')=='iframe' ?"<span style='font-family:Verdana,Arial,Sans,sans-serif; font-size:10px;'>[<a href='../$url' title='$url' target='_blank'>"._T('couteau:urls_propres_lien').'</a>]</span>' :$url_1.'||'.charset2unicode($titre).'||'.$url.'||'.$type_urls.'||'.$url_2; }
function balise_FORMULAIRE_CONTACT_dyn($id_machin) { /* c’est ici qu’on met le traitement des données (insertion en base etc). Elle reçoit les valeures retournées par la fonction _stat et doit retourner soit : * un message d’erreur * un tableau représentant un squelette SPIP : 1. le nom du fond (e.g. "formulaires/formulaire_forum") 2. le délais 3. un tableau des paramètres à passer à ce squelette (ensuite accessible par #ENV) On peut acceder ici aux variables postées par le formulaire en utilisation la fonction _request('name'); et faire des traitements en fonction de celles ci pour faire l’insertion en base, envoyer un mail etc... */ global $_FILES, $_HTTP_POST_FILES; // ces variables sont indispensables pour récuperer les documents joints // Récupération de id de la rubrique en cours $rubrique = intval(_request('id_rubrique')); // on recuperer l'id de l'auteur anonymous $connect_id_auteur = intval(_request('id_auteur')); // si il n'est pas dans la base => plugins openpublishing mal installé if (!$connect_id_auteur) { echo "Attention votre URL ne comporte pas d'id_auteur !"; die("Veuillez modifier l'appelle à cette page pour y inclure cet identifiant auteur"); } // récupération des variables du formulaire HTML // données actions $previsualiser = _request('previsualiser'); $valider = _request('valider'); $media = _request('media'); $abandonner = _request('abandonner'); // on quitte et renvoie vers le sommaire if ($abandonner) { $retour = '<div align="center"> <h3>Vous avez abandonné la création d\'un article. <br /> <br /> Aucne information na été enregistrée.</h3> </div>'; $message = '<META HTTP-EQUIV="refresh" content="3; url=spip.php?page=rubrique&id_rubrique=' . $rubrique . '">'; $message = $message . $retour; return $message; } // on recupere l'id article (sinon on créer un nouveau article à chaque prévisualisation ou ajout de document ... $article = intval(stripslashes(_request('article'))); // données pour formulaire document $formulaire_documents = stripslashes(_request('formulaire_documents')); $doc = stripslashes(_request('doc')); $type_doc = stripslashes(_request('type')); // donnée article $surtitre = stripslashes(_request('surtitre')); $titre = stripslashes(_request('titre')); $soustitre = stripslashes(_request('soustitre')); $descriptif = stripslashes(_request('descriptif')); $nom_site = stripslashes(_request('nom_site')); $url_site = stripslashes(_request('url_site')); $chapo = stripslashes(_request('chapo')); $texte = stripslashes(_request('texte')); $ps = stripslashes(_request('ps')); // déclarations de variables supplémentaires (pour la fonction ajout_document) $documents_actifs = array(); // autres variables $lang = _request('var_lang'); $nom = 'changer_lang'; lang_dselect(); $langues = liste_options_langues($nom, $lang); // remise à zero $formulaire_previsu = ''; $bouton = ''; $mess_error = ''; $erreur_document = 0; // filtrage des zones de texte si elles sont emplies if ($titre) { $titre = entites_html($titre); } // on demande un nouvel identifiant if ($previsualiser || $media || $valider) { if (!$article) { $article = op_request_new_id($connect_id_auteur); } } // l'auteur demande la publication de son article if ($valider) { // statut de l'article : proposé $statut = 'prop'; /****** préparation de la mise en base de donnée ********/ // on recupere le secteur et la langue associée $s = spip_query("SELECT id_secteur, lang FROM spip_rubriques WHERE id_rubrique = '{$rubrique}' "); if ($r = spip_fetch_array($s)) { $id_secteur = $r["id_secteur"]; $lang = $r["lang"]; // L'article existe déjà, on fait donc un UPDATE, et non un INSERT $retour = spip_query('UPDATE spip_articles SET titre = ' . spip_abstract_quote($titre) . ', id_rubrique = ' . spip_abstract_quote($rubrique) . ', texte = ' . spip_abstract_quote($texte) . ', statut = ' . spip_abstract_quote($statut) . ', lang = ' . spip_abstract_quote($lang) . ', id_secteur = ' . spip_abstract_quote($id_secteur) . ', ps =' . spip_abstract_quote($ps) . ', nom_site =' . spip_abstract_quote($nom_site) . ', url_site =' . spip_abstract_quote($url_site) . ', surtitre =' . spip_abstract_quote($surtitre) . ', soustitre =' . spip_abstract_quote($soustitre) . ', chapo =' . spip_abstract_quote($chapo) . ', descriptif =' . spip_abstract_quote($descriptif) . ', date = NOW()' . ', date_redac = NOW()' . ', date_modif = NOW()' . ' WHERE id_article = ' . spip_abstract_quote($article)); if ($retour == 1) { // tout c'est bien passé $retour = ''; } else { $retour = "Erreur lors de l'insertion de votre article dans la base de donnée, veuillez contactez les responsables du site"; } } $retour = '<div align="center"> <h3>Votre article a bien été enregistré. <br /> <br /> Il sera publié après validation.</h3> </div>'; $message = '<META HTTP-EQUIV="refresh" content="3; url=spip.php?page=rubrique&id_rubrique=' . $rubrique . '">'; $message = $message . $retour; return $message; } else { // statut de l'article : en préparation $statut = "prepa"; // si l'auteur demande la prévisualisation if ($previsualiser) { // quelques petites vérifications if (strlen($titre) < 3) { $erreur .= _T('forum_attention_trois_caracteres'); } if (!$erreur) { $bouton = _T('Proposer'); } // on rempli le formulaire de prévisualisation $formulaire_previsu = inclure_balise_dynamique(array('formulaires/FORMULAIRE_CONTACT_previsu', 0, array('date_redac' => $date_redac, 'titre' => interdire_scripts(typo($titre)), 'texte' => propre($texte), 'ps' => propre($ps), 'nom_site' => propre($nom_site), 'url_site' => propre($url_site), 'surtitre' => propre($surtitre), 'soustitre' => propre($soustitre), 'chapo' => propre($chapo), 'descriptif' => propre($descriptif), 'erreur' => $erreur)), false); // aucune idée de ce que c'est, mais ça à l'air important $formulaire_previsu = preg_replace("@<(/?)f(orm[>[:space:]])@ism", "<\\1no-f\\2", $formulaire_previsu); } // si l'auteur ajoute un documents if ($media) { // compatibilité php < 4.1 if (!$_FILES) { $_FILES = $GLOBALS['HTTP_POST_FILES']; } // récupération des variables $fichier = $_FILES['doc']['name']; $size = $_FILES['doc']['size']; $tmp = $_FILES['doc']['tmp_name']; $type = $_FILES['doc']['type']; $error = $_FILES['doc']['error']; // vérification si upload OK if (!is_uploaded_file($tmp)) { echo $error; $mess_error = "Erreur d'upload ! le fichier temporaire est introuvable. <br /> Il ce peut que vous tentiez d'uploader un fichier trop volumineux. <br /> La taille maximale autorisée est de 5 Mo"; $erreur_document = 1; } else { inc_ajouter_documents_dist($tmp, $fichier, "article", $article, $type_doc, $id_document, &$documents_actifs); } } // cas d'un nouvel article ou re-affichage du formulaire // Gestion des documents $bouton = "Ajouter un nouveau document"; $formulaire_documents = inclure_balise_dynamique(array('formulaires/formulaire_documents', 0, array('id_article' => $article, 'bouton' => $bouton)), false); // Liste des documents associés à l'article op_liste_vignette($article); // le bouton valider $bouton = _T('Proposer'); // et on remplit le formulaire avec tout ça return array('formulaires/formulaire_contact', 0, array('formulaire_documents' => $formulaire_documents, 'formulaire_previsu' => $formulaire_previsu, 'formulaire_agenda' => $formulaire_agenda, 'bouton' => $bouton, 'article' => $article, 'rubrique' => $rubrique, 'surtitre' => $surtitre, 'soustitre' => $soustitre, 'descriptif' => $descriptif, 'nom_site' => $nom_site, 'url_site' => $url_site, 'chapo' => $chapo, 'ps' => $ps, 'mess_error' => $mess_error, 'url' => $url, 'titre' => interdire_scripts(typo($titre)), 'texte' => $texte)); } }
/** * Retirer les auteurs des zones. **/ function galettonuts_dissocier_zones($zones) { $auteurs = spip_query("SELECT `id_auteur` as `id` FROM `spip_galettonuts`;"); if (!spip_num_rows($auteurs)) { return; } while ($auteur = spip_fetch_array($auteurs)) { $auteur = _q($auteur['id']); foreach ($zones as $zone) { $zone = _q($zone); spip_query("DELETE FROM `spip_zones_auteurs` WHERE `id_zone`={$zone} AND `id_auteur`={$auteur};"); } } }
function get_id_doc($fichier) { if (trim($fichier)=="") return false; spip_log("get_id_doc cherche : ".$fichier,"snippets"); $sql = "SELECT id_document FROM spip_documents WHERE fichier='".addslashes(filtrer_entites($fichier))."'"; $result = spip_query($sql); while ($row = spip_fetch_array($result)) { spip_log("get_id_doc trouve : ".$row['id_document'],"snippets"); return $row['id_document']; } // inconnu ... spip_log("get_id_doc trouve pas :( ","snippets"); return false ; }
function liste_rv($query, $type) { global $spip_lang_rtl, $spip_lang_left, $spip_lang_right; if ($type == annonces) { $titre = _T('info_annonces_generales'); $couleur_titre = "ccaa00"; $couleur_texte = "black"; $couleur_fond = "#ffffee"; } else { if ($type == pb) { $titre = _T('infos_vos_pense_bete'); $couleur_titre = "#3874B0"; $couleur_fond = "#EDF3FE"; $couleur_texte = "white"; } else { if ($type == rv) { $titre = _T('info_vos_rendez_vous'); $couleur_titre = "#666666"; $couleur_fond = "#eeeeee"; $couleur_texte = "white"; } } } $result = spip_query($query); if (spip_num_rows($result) > 0) { debut_cadre_enfonce("", false, "", $titre); echo "<table width='100%' border='0' cellpadding='0' cellspacing='2'>"; while ($row = spip_fetch_array($result)) { if (preg_match("/^=([^[:space:]]+)\$/", $row['texte'], $match)) { $url = $match[1]; } else { $url = "message.php3?id_message=" . $row['id_message']; } $type = $row['type']; $rv = $row['rv']; $date = $row['date_heure']; $date_fin = $row['date_fin']; if ($type == "normal") { $bouton = "message"; } elseif ($type == "pb") { $bouton = "pense-bete"; } elseif ($type == "affich") { $bouton = "annonce"; } else { $bouton = "message"; } $titre = typo($row['titre']); if ($rv == "oui") { echo "<tr><td colspan='2'>"; $date_jour = affdate_jourcourt($date); if ($date_jour != $date_rv) { echo "<div class='arial11'><b>{$date_jour}</b></div>"; } echo "</td></tr>"; } echo "<tr>"; echo "<td width='24' valign='middle'>"; echo "<a href='{$url}'>"; if ($rv == "oui") { echo "<img src='img_pack/rv.gif' style='background: url(img_pack/{$bouton}.gif) no-repeat;' border='0'>"; } else { echo "<img src='img_pack/{$bouton}.gif' border='0'>"; } echo "</a>"; echo "</td>"; echo "<td valign='middle'>"; if ($rv == "oui") { if (affdate($date) == affdate($date_fin)) { echo "<div class='arial0' style='float: {$spip_lang_left}; line-height: 12px; color: #666666; margin-{$spip_lang_right}: 3px; padding-{$spip_lang_right}: 4px; background: url(img_pack/fond-agenda.gif) {$spip_lang_right} center no-repeat;'>" . heures($date) . ":" . minutes($date) . "<br />" . heures($date_fin) . ":" . minutes($date_fin) . "</div>"; } else { echo "<div class='arial0' style='float: {$spip_lang_left}; line-height: 12px; color: #666666; margin-{$spip_lang_right}: 3px; padding-{$spip_lang_right}: 4px; background: url(img_pack/fond-agenda.gif) {$spip_lang_right} center no-repeat; text-align: center;'>" . heures($date) . ":" . minutes($date) . "<br />...</div>"; } } echo "<div><b><a href='{$url}' class='arial1' style='color: #333333;'>{$titre}</a></b></div>"; echo "</td>"; echo "</tr>\n"; $date_rv = $date_jour; } echo "</table>"; fin_cadre_enfonce(); } }
function spip_get_lock($nom, $timeout = 0) { global $lcm_mysql_db, $table_prefix; if ($table_prefix) { $nom = "{$table_prefix}:{$nom}"; } if ($lcm_mysql_db) { $nom = "{$lcm_mysql_db}:{$nom}"; } $nom = addslashes($nom); list($lock_ok) = spip_fetch_array(spip_query("SELECT GET_LOCK('{$nom}', {$timeout})")); return $lock_ok; }
function vst_total_pages_visitees() { $query = "SELECT SUM(visites) AS nbPages FROM spip_visites_articles"; $result = spip_query($query); if ($row = spip_fetch_array($result)) { return $row['nbPages']; } else { return "0";} }
if (!function_exists('sql_fetch')) { function sql_fetch($req) { return spip_fetch_array($req) ; } }
function spiplistes_listes_selectionner_elligibles ( $non_abonnes , $nb_non_abonnes , $id_liste , $tri , $script_action , $script_exec , $id_grosse_boite , $args_action = '' , $retour_ajax = false ) { static $bouton_id; $bouton_id++; $type_ajout = ($script_action == _SPIPLISTES_ACTION_MOD_GERER) ? "mod" : "abo"; // si retour de formulaire, les vars sont dans le $_POST $cherche_auteur = trim(urldecode(_request('cherche_auteur'))); $icone_loupe = trim(urldecode(_request('icone_loupe'))); if(empty($icone_loupe)) { // En ajax, find_in_path() ne trouve pas le chemin correct. // Oblige' de le noter au premier appel // et le transmettre dans le form. $icone_loupe = find_in_path('images/loupe.png'); } foreach(array('id_grosse_boite', 'script_exec', 'script_action') as $key) { if(empty($$key)) { $$key = urldecode(_request($key)); } } $select_abo = ""; $btn_ajouter = "" . "<span><input type='submit' value='"._T('bouton_ajouter')."' " . " onclick=\"return AjaxSqueeze(this.form, '$id_grosse_boite')\" " . " class='fondo' id='btn_ajouter_id_".$type_ajout."'/></span>\n" ; if(empty($args_action)) { $args_action = "id_liste=$id_liste"; } $action = generer_action_auteur($script_action, $args_action); $exec = generer_url_ecrire($script_exec, $args_action); // retour de formulaire ? if(!empty($cherche_auteur) && $id_liste) { $statut_liste = spiplistes_listes_liste_statut($id_liste); $nb_elligibles = 0; $sql_from = "spip_auteurs AS a"; $sql_where = array( "a.nom LIKE '%$cherche_auteur%'" , "LENGTH(a.email)" , "(statut=".sql_quote('0minirezo')." OR statut=".sql_quote('1comite') // si pas une liste privée, complète le where . (($statut_liste != _SPIPLISTES_LIST_PRIVATE) ? " OR statut=".sql_quote('6forum') : "") . ")" , "NOT EXISTS (SELECT NULL FROM spip_auteurs_listes AS l WHERE l.id_auteur = a.id_auteur AND l.id_liste = ".sql_quote($id_liste).")" ); /* * la requete ci-dessus en + clair *//* $sql_query = "SELECT id_auteur,nom,statut FROM spip_auteurs AS a WHERE nom LIKE '%$cherche_auteur%' AND LENGTH(a.email) AND (statut='0minirezo' OR statut='1comite' OR statut='6forum') AND NOT EXISTS (SELECT NULL FROM spip_auteurs_listes AS l WHERE l.id_auteur = a.id_auteur AND l.id_liste = $id_liste)"; */ // demande la liste des elligibles recherches $sql_result = sql_select("id_auteur,nom,statut", $sql_from, $sql_where, '', array('statut','nom')); if($sql_result) { $elligibles = array(); while($row = spip_fetch_array($sql_result)) { if(!isset($elligibles[$row['statut']])) { $elligibles[$row['statut']] = array(); } $elligibles[$row['statut']][$row['id_auteur']] = $row['nom']; $nb_elligibles++; } $select_abo = spiplistes_elligibles_select ($elligibles, $nb_elligibles, $type_ajout) . $btn_ajouter; } else { spiplistes_sqlerror_log("listes_selectionner_elligibles"); } } if(empty($select_abo) && ($nb_non_abonnes <= _SPIPLISTES_SELECT_MIN_AUTEURS)) { $select_abo = spiplistes_elligibles_select ($non_abonnes, $nb_non_abonnes, $type_ajout) . $btn_ajouter; } // au dela de _SPIPLISTES_SELECT_MIN_AUTEURS, afficher la boite de recherche. else { $select_abo = "" . "<div>" . "<label id='spiplistes_l_recherche'>" // en ajax, http_img_pack() ne retrouve pas son petit //. http_img_pack("loupe.png", _T('info_rechercher'), "width='26' height='20'") . "<img src='$icone_loupe' alt='"._T('info_rechercher')."' width='26' height='20' />" . "<input type='text' name='cherche_auteur' id='in_cherche_auteur' class='fondl' value='' size='20' style='margin:0 4px' />\n" . "</label>\n" . "<span><input type='submit' value='"._T('bouton_chercher')."' " . " id='btn_chercher_id' name='spiplistes_bouton_chercher'" // recherche ne rafraichit que ce formulaire . " onclick=\"return AjaxSqueeze(this.form, '"._SPIPLISTES_ID_FROM_ELLIGIBL."$bouton_id')\" " . " class='fondo' /></span>\n" . "</div>" . $select_abo ; } $result = "" // si retour ajax, ne pas ajouter le conteneur dans le conteneur ;-) . (($retour_ajax) ? "" : "<div id='"._SPIPLISTES_ID_FROM_ELLIGIBL."$bouton_id'>\n") . "<form style='margin:0px; border:0px' action='$action' method='post'>\n" . "<div id='boite_selection_elligibles_$bouton_id' style='padding:0;margin:0.5em 0 0'>\n" . $select_abo . "</div>\n" . "<input name='arg' type='hidden' value='$id_liste' />\n" . "<input name='action' type='hidden' value='".$script_action."' />\n" . "<input name='redirect' type='hidden' value='".$exec."' />\n" . "<input name='id_liste' type='hidden' value='$id_liste' />\n" . "<input name='tri' type='hidden' value='$tri' />\n" . "<input name='script_action' type='hidden' value='$script_action' />\n" . "<input name='script_exec' type='hidden' value='$script_exec' />\n" . "<input name='id_grosse_boite' type='hidden' value='$id_grosse_boite' />\n" . "<input name='icone_loupe' type='hidden' value='$icone_loupe' />\n" . "</form>\n" . (($retour_ajax) ? "" : "</div>\n") ; return($result); }
function snippets_articles_importer($id_target,$arbre,$contexte){ include_spip('base/serial'); include_spip('base/abstract_sql'); include_spip('inc/snippets'); $table_prefix = $GLOBALS['table_prefix'] ; $champs_non_importables = array("id_article","id_rubrique","id_secteur","maj","export","visites","referers","popularite","id_trad","idx","id_version","url_propre"); $champs_non_ajoutables = array('titre','date','date_redac','lang'); $champs_jointures = array('auteur','mot'); $champs_defaut_values = array('statut'=>'lememe'); $table = 'spip_articles'; $primary = 'id_article'; $fields = $GLOBALS['tables_principales']['spip_articles']['field']; $tag_objets="articles"; $tag_objet="article"; $translations = array(); $forcer_id = false ; // mettre true pour garder les meme id que dans le XML $forcer_maj = false ; // mettre true pour mettre a jour un lot d'articles de meme titre que dans le spip cible if ($arbre && isset($arbre[$tag_objets])) foreach($arbre[$tag_objets] as $objets){ foreach($objets[$tag_objet] as $objet){ spip_log($objet['titre'],"snippets"); $creation = false; $auteur_connu = false ; // mettre a jour des articles deja en bdd avec le xml fournit if($forcer_maj){ $id_target = ''; $id_article_trouve = sql_fetsel("id_article","spip_articles","titre=".sql_quote($objet['titre'][0])); // ajouter la rub courrante $id_target = $id_article_trouve['id_article'] ; if(!intval($id_target)) spip_log($objet['titre'][0].$id_target,"snippets_titres_erreur"); } include_spip('action/editer_article'); // si c'est une creation, creer le formulaire avec les infos d'entete if (!($id_objet=intval($id_target))){ if (preg_match(",id_rubrique=([0-9]*),i",$contexte,$regs)) $id_rubrique=intval($regs[1]); $id_objet = insert_article($id_rubrique); // forcer l'id if($forcer_id){ $champs_non_importables = array("id_rubrique","id_secteur","maj","export","visites","referers","popularite","id_trad","idx","id_version","url_propre"); $sql = "UPDATE ".$table_prefix."_articles SET id_article = '".$objet['id_article'][0]."' WHERE id_article = '$id_objet'"; spip_query($sql); $id_objet = $objet['id_article'][0] ; } $creation = true; } // sinon on ajoute chaque champ, sauf le titre $row = spip_fetch_array(spip_query("SELECT * FROM $table WHERE $primary="._q($id_objet))); foreach (array_keys($row) as $key) if ( !in_array($key,$champs_non_importables) AND !in_array($key,$champs_jointures) AND ($creation OR !in_array($key,$champs_non_ajoutables) OR !$row[$key]) AND isset($objet[$key])){ $v=trim(spip_xml_aplatit($objet[$key])); $row[$key] = ($creation or $forcer_maj)?$v:($row[$key].$v); } revisions_articles($id_objet , $row); $translations[] = array($table,$objet[$primary],$id_objet); // gerer l'import de liens eventuels if ($id AND isset($objet['liens'])){ foreach($objet['liens'] as $liens){ // A FAIRE } } $id_article = $id_objet ; if ( $objet['auteur'] AND ($creation OR $forcer_maj)){ $auteur_connu = true ; sql_delete("spip_auteurs_articles","id_article=".sql_quote($id_article)); foreach($objet['auteur'] as $nom){ // ajouter l'auteur spip_log($nom,"snippets"); $id_auteur = get_id_auteur($nom); if ($id_auteur) { spip_log($nom.$id_auteur,"snippets"); $sql="INSERT INTO ".$table_prefix."_auteurs_articles (id_auteur, id_article) VALUES ($id_auteur, $id_article)"; spip_query($sql); } } } if($auteur_connu){ // se virer soi-meme $connect_id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ; $sql = "DELETE FROM ".$table_prefix."_auteurs_articles WHERE id_auteur = '$connect_id_auteur' AND id_article = '$id_article'"; spip_query($sql); } // statut de l'article if($champs_defaut_values['statut'] != 'prepa'){ $sql = "UPDATE ".$table_prefix."_articles SET statut = '".$objet['statut'][0]."' WHERE id_article = '$id_article'"; spip_query($sql); } if ( $objet['mot'] AND ($creation OR $forcer_maj)){ sql_delete("spip_mots_articles","id_article=".sql_quote($id_article)); foreach($objet['mot'] as $mot){ spip_log($mot,"snippets"); // ajouter le mot cle $id_article = $id_objet ; $table_prefix = $GLOBALS['table_prefix'] ; $id_mot = get_id_mot($mot); if ($id_mot) { $sql="INSERT INTO ".$table_prefix."_mots_articles (id_mot, id_article) VALUES ($id_mot, $id_article)"; spip_query($sql); } } } if ( $objet['document'] AND ($creation OR $forcer_maj)){ sql_delete("spip_documents_liens","id_objet=".sql_quote($id_article)." and objet='article'"); foreach($objet['document'] as $doc){ spip_log("--> ".$doc,"snippets"); // ajouter le doc list($id,$fichier,$extension,$titre,$descriptif) = explode('|',$doc) ; spip_log("--- $id,$fichier,$extension,$titre","snippets"); spip_log("hop ".$fichier,"snippets"); $table_prefix = $GLOBALS['table_prefix'] ; $id_doc = get_id_doc($fichier); if ($id_doc) { spip_log("hop doc".$fichier."trouve".$id_doc,"snippets"); $sql="INSERT INTO ".$table_prefix."_documents_liens (id_document, id_objet, objet) VALUES ($id_doc, $id_article,'article')"; spip_query($sql); }else{ // au cas ou, on creer un doc, mais il vaut mieux transferer les doc avec toutes les infos avant de snippet $a = array( 'date' => 'NOW()', 'distant' => 'non', 'mode' => 'image', 'titre'=> $titre, 'descriptif'=> $descriptif, 'extension'=> $extension, 'fichier' => $fichier ); //'largeur' => $largeur, //'hauteur' => $hauteur, //'taille' => $taille, if($forcer_id) $a['id_document'] = $id ; $id = sql_insertq("spip_documents", $a); spip_log ("ajout du document $fichier $titre (M 'image' T 'article' L '$id_article' D '$id')","snippets"); sql_insertq("spip_documents_articles", array('id_document' => $id, 'id_article' => $id_article)); } } } } } return $translations; }
function exec_admin_galettonuts() { // Seuls les super-admins sont authorisés réaliser des synchros, // et par conséquent de configurer le plugin if (!('0minirezo' === $GLOBALS['auteur_session']['statut'] && $GLOBALS['connect_toutes_rubriques'])) { echo minipres(_T('avis_non_acces_page')); exit; } $erreurs = array(); $icone_base = _DIR_PLUGIN_GALETTONUTS . 'img_pack/galettonuts-sql_status-'; $icone_src = 'config-168.png'; $icone_title = _T('galettonuts:icone_db_config'); include_spip('inc/galettonuts_fonctions'); // Lecture de la configuration if (!class_exists('L2_Spip_Plugin_Metas')) { include_spip('lib/L2/Spip/Plugin/Metas.class'); } $config = new L2_Spip_Plugin_Metas('galettonuts_config'); $contexte = $config->lire(); $activer_cron = array_key_exists('activer_cron', $contexte) ? $contexte['activer_cron'] : true; // {{{ Traitement des données reçues if (_request('_galettonuts_ok')) { $champs = array('adresse_db' => _request('adresse_db'), 'login_db' => _request('login_db'), 'pass_db' => _request('pass_db'), 'prefix_db' => _request('prefix_db'), 'choix_db' => _request('choix_db')); // Des champs sont-ils vides ? $champs = array_map('trim', $champs); if (false === (!in_array(null, $champs) || !in_array('', $champs))) { $erreurs[] = _T('galettonuts:texte_erreur_1'); } // Activer la synchronisation automatique ? if ('oui' == _request('activer_cron')) { $activer_cron = true; } else { $activer_cron = false; } if ($activer_cron) { $champs['heures'] = intval(_request('heures')); $champs['minutes'] = intval(_request('minutes')); $synchro = new L2_Spip_Plugin_Metas('galettonuts_synchro'); $frequence = 3600 * $champs['heures'] + 60 * $champs['minutes']; if ($frequence !== $synchro->lire('frequence')) { $synchro->ajouter(array('frequence' => $frequence), true); $fichier = '<?php define(\'_GALETTONUTS_DELAIS_CRON\', ' . $frequence . '); ?>'; ecrire_fichier(_DIR_TMP . 'galettonuts_cron.php', $fichier, true); unset($fichier); } } else { // On s'assure de bien supprimer le fichier de vérouillage // pour forcer la resynchronisation tenant compte de la nouvelle // configuration. if (file_exists(_DIR_TMP . 'galettonuts_cron.lock')) { unlink(_DIR_TMP . 'galettonuts_cron.lock'); } if (file_exists(_DIR_TMP . 'galettonuts_cron.php')) { unlink(_DIR_TMP . 'galettonuts_cron.php'); } } $contexte['activer_cron'] = $activer_cron; // Prise en compte dans le contexte $contexte = array_merge($contexte, $champs); unset($champs); // Test de connexion à la BDD Galette if (!count($erreurs)) { $link = galettonuts_galette_db($contexte['adresse_db'], $contexte['login_db'], $contexte['pass_db']); if (-1 === $link) { $erreurs[] = _T('galettonuts:avis_connexion_echec_1'); $icone_src = 'error-168.png'; $icone_title = _T('galettonuts:icone_db_erreur'); } else { if (-2 === galettonuts_galette_db($contexte['choix_db'], $link)) { $erreurs[] = _T('galettonuts:avis_connexion_echec_2'); $icone_src = 'error-168.png'; $icone_title = _T('galettonuts:icone_db_erreur'); } else { $icone_src = 'ok-168.png'; $icone_title = _T('galettonuts:icone_db_ok'); $contexte['db_ok'] = true; } } if (0 < $link) { mysql_close($link); } unset($link); } // Interraction avec Accès Restreint if (defined('_DIR_PLUGIN_ACCESRESTREINT')) { if ($config->existe('zones')) { galettonuts_dissocier_zones($config->lire('zones')); } $zones = _request('zones'); if (is_array($zones) && 0 < count($zones)) { $contexte['zones'] = $zones; } else { $config->supprimer(array('zones' => null)); unset($contexte['zones']); } unset($zones); } // Mémorisation de la configuration à la base de données Galette if (!count($erreurs)) { $config->ajouter($contexte, true); } // Lancer une synchronisation if (0 == count($erreurs)) { galettonuts_synchroniser(true); } } else { if (!empty($contexte['adresse_db']) && !empty($contexte['login_db']) && !empty($contexte['pass_db'])) { $link = galettonuts_galette_db($contexte['adresse_db'], $contexte['login_db'], $contexte['pass_db']); if (0 > $link) { $icone_src = 'error-168.png'; $icone_title = _T('galettonuts:icone_db_erreur'); $config->ajouter(array('db_ok' => false)); } else { $icone_src = 'ok-168.png'; $icone_title = _T('galettonuts:icone_db_ok'); $config->ajouter(array('db_ok' => true)); mysql_close($link); unset($link); } } } // }}} // {{{ Affichage // Haut de page $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('galettonuts:titre_page_admin'), '', 'galettonuts'), '<br/><br/><br/>'; gros_titre(_T('galettonuts:titre_admin')); // Boîte d'informations debut_gauche(); debut_boite_info(); echo _T('galettonuts:texte_info_admin'); fin_boite_info(); // Message(s) d'erreur(s) debut_droite(); if ($c = count($erreurs)) { if (1 == $c) { $erreur_titre = _T('galettonuts:texte_erreur'); $erreur_texte = (string) $erreurs[0]; } else { $erreur_titre = _T('galettonuts:texte_erreurs'); $erreur_texte = '<ul>'; for ($i = 0; $c < $i; ++$i) { $erreur_texte .= '<li>' . $erreurs[$i] . '</li>'; } $erreur_texte .= '</ul>'; } echo '<div style="background-color:#fee;color:red;border:1px solid red;padding:.5em;margin-bottom:25px" class="verdana2"><strong>', $erreur_titre, '</strong> :<br />', $erreur_texte, '</div>'; } echo generer_url_post_ecrire('admin_galettonuts'); // Accès à la BDD debut_cadre_trait_couleur('base-24.gif', false, '', _T('galettonuts:info_bdd')); echo '<div style="float:right;width:175px" class="verdana2">', _T('galettonuts:texte_info_bdd'), '<div>', '<div style="position:absolute;bottom:35px;width:168px;height:168px">', '<img src="', $icone_base, $icone_src, '" width="168" height="168" alt="" title="', $icone_title, '" />', '</div>', '</div>', '</div>'; echo '<div style="width:298px">'; debut_cadre_couleur(); echo '<p><label for="adresse_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_adresse'), '</label><br/>', '<input type="text" name="adresse_db" value="', $contexte['adresse_db'], '" id="adresse_db" class="fondl" style="width:278px" tabindex="504"/>', '</p>'; echo '<p><label for="login_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_login'), '</label><br/>', '<input type="text" name="login_db" value="', $contexte['login_db'], '" id="login_db" class="fondl" style="width:278px" tabindex="508"/>', '</p>'; echo '<p><label for="pass_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_mdp'), '</label><br/>', '<input type="password" name="pass_db" value="', $contexte['pass_db'], '" id="pass_db" class="fondl" style="width:278px" tabindex="512"/>', '</p>'; echo '<p><label for="prefix_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_prefix'), '</label><br/>', '<input type="text" name="prefix_db" value="', $contexte['prefix_db'], '" id="prefix_db" class="fondl" style="width:278px" tabindex="516"/>', '</p>'; echo '<p><label for="choix_db" style="font-weight:bold;cursor:pointer">', _T('galettonuts:entree_db_choix'), '</label><br/>', '<input type="text" name="choix_db" value="', $contexte['choix_db'], '" id="choix_db" class="fondl" style="width:278px" tabindex="520"/>', '</p>'; fin_cadre_couleur(); echo '</div>'; echo '<div style="text-align:right;padding:0 2px;margin-top:.5em" id="buttons">', '<input type="submit" name="_galettonuts_ok" value="', _T('bouton_valider'), '" class="fondo" style="cursor:pointer" tabindex="560"/></div>'; fin_cadre_trait_couleur(); // Synchronisation automatique echo '<br />'; debut_cadre_relief('synchro-24.gif', false, '', _T('galettonuts:info_cron')); echo '<p class="verdana2">', _T('galettonuts:texte_info_cron'), '</p>'; echo '<p class="verdana2">', '<label', $activer_cron ? ' style="font-weight:bold"' : '', '>', '<input type="radio" name="activer_cron" value="oui" id="activer_cron_oui" tabindex="602" ', $activer_cron ? ' checked="checked" ' : '', 'onclick="changeVisible(this.checked, \'config-cron\', \'block\', \'none\');"', '/>', _T('galettonuts:entree_cron_utiliser'), '</label><br />', '<label', !$activer_cron ? ' style="font-weight:bold"' : '', '>', '<input type="radio" name="activer_cron" value="non" id="activer_cron_non" tabindex="604" ', !$activer_cron ? ' checked="checked" ' : '', 'onclick="changeVisible(this.checked, \'config-cron\', \'none\', \'block\');"', '/>', _T('galettonuts:entree_cron_utiliser_non'), '</label>', '</p>'; echo '<div id="config-cron"', !$activer_cron ? ' style="display:none"' : '', '><hr />'; echo '<p class="verdana2">', _T('galettonuts:frequence'), '</p>'; echo '<p class="verdana2" style="text-align:center">', '<input type="text" name="heures" value="', $contexte['heures'], '" id="cron_heures" size="2" maxlength="2" tabindex="606" class="fondl" style="text-align:right"/>', '<label for="cron_heures" style="font-weight:bold;cursor:pointer">', _T('galettonuts:heures'), '</label>', '<input type="text" name="minutes" value="', $contexte['minutes'], '" id="cron_minutes" size="2" maxlength="2" tabindex="606" class="fondl" style="text-align:right"/>', '<label for="cron_minutes" style="font-weight:bold;cursor:pointer">', _T('galettonuts:minutes'), '</label>', '</p>'; echo '</div>'; echo '<div style="text-align:right;padding:0 2px;margin-top:.5em" id="buttons">', '<input type="submit" name="_galettonuts_ok" value="', _T('bouton_valider'), '" class="fondo" style="cursor:pointer" tabindex="660"/></div>'; fin_cadre_relief(); // Liaison avec le plugin Accès restreint if (defined('_DIR_PLUGIN_ACCESRESTREINT')) { $zones = spip_query("SELECT `id_zone`, `titre`, `descriptif` FROM `spip_zones` WHERE 1;"); if (spip_num_rows($zones)) { global $couleur_foncee; $i = 0; $zone['num'] = _T('accesrestreint:colonne_id'); $zone['titre'] = _T('accesrestreint:titre'); $zone['descriptif'] = _T('accesrestreint:descriptif'); $tabindex = 700; $tab_zones = <<<HTML <table class="arial2" border="0" cellpadding="2" cellspacing="0" style="width:100%;border:1px solid #AAA;"> <thead> <tr style="background-color:{$couleur_foncee};color:#fff;font-weight=bold"> <th scope="col" style="text-align:left;padding-left:5px;padding-right:5px" width="40">{$zone['num']}</th> <th scope="col" style="text-align:left;border-left:1px inset #fff;padding-left:5px;padding-right:5px">{$zone['titre']}</th> <th scope="col" style="text-align:left;border-left:1px inset #fff;padding-left:5px;padding-right:5px">{$zone['descriptif']}</th> <th scope="col" style="text-align:center;border-left:1px inset #fff;padding-left:5px;padding-right:5px" width="16"> </th> </tr> </thead> <tbody> HTML; while ($zone = spip_fetch_array($zones)) { ++$tabindex; $bgcolor = alterner(++$i, '#FEFEFE', '#EEE'); if (array_key_exists('zones', $contexte)) { $checked = in_array($zone['id_zone'], $contexte['zones']) ? ' checked="checked"' : ''; } else { $checked = ''; } $tab_zones .= <<<HTML <tr style="background-color:{$bgcolor}"> <td style="text-align:left;padding-left:5px;padding-right:5px">{$zone['id_zone']}</td> <td style="text-align:left;padding-left:5px;padding-right:5px">{$zone['titre']}</td> <td style="text-align:left;padding-left:5px;padding-right:5px">{$zone['descriptif']}</td> <td style="text-align:center"> <input type="checkbox" name="zones[]" value="{$zone['id_zone']}" class="fondl" tabindex="{$tabindex}"{$checked} /> </td> </tr> HTML; } $tab_zones .= '</tbody></table>'; echo '<br />'; debut_cadre_relief(_DIR_PLUGIN_ACCESRESTREINT . 'img_pack/zones-acces-24.gif', false, '', _T('galettonuts:info_liaison_access_restreint')); echo '<p class="verdana2">', _T('galettonuts:texte_liaison_access_restreint_1'), '</p>'; echo '<p class="verdana2">', _T('galettonuts:texte_liaison_access_restreint_2'), '</p>'; echo $tab_zones; echo '<div style="text-align:right;padding:0 2px;margin-top:.5em" id="buttons">', '<input type="submit" name="_galettonuts_ok" value="', _T('bouton_valider'), '" class="fondo" style="cursor:pointer" tabindex="760"/></div>'; fin_cadre_relief(); } } echo '</form>'; // Fin de page echo fin_gauche() . fin_page(); // }}} }
function spiplistes_import( $filename , $realname , $abos_liste , $format_abo = 'non' , $separateur = "\t" , $flag_admin , $listes_autorisees , $forcer_abo = false ) { $result_affiche = ''; if(is_readable($filename)) { // abonner les adresses importees // aux listes... if(!is_array($abos_liste)) { if(($ii = intval($abos_liste)) <= 0) { return(false); } $abos_liste = array($ii); } else { $abos_liste = array_map('intval', $abos_liste); } // recupere les logins et mails existants dans la base // pour eviter les doublons $current_entries = array(); $sql_result = sql_select(array('id_auteur', 'login', 'email', 'nom'), 'spip_auteurs'); while($row = spip_fetch_array($sql_result)) { // ne prendre que les comptes qui ont un email if($m = $row['email']) { $m = strtolower($m); $current_entries[$m] = array('login' => strtolower($row['login']) , 'id_auteur' => $row['id_auteur'] , 'nom' => $row['nom'] ); } } //syslog(LOG_NOTICE, 'memory_get_usage[2]: ' . memory_get_usage()); // spiplistes_log('import fichier '.$filename); $new_entries = file($filename); //syslog(LOG_NOTICE, 'memory_get_usage[3]: ' . memory_get_usage()); $nb_new_entries = count($new_entries); $bad_dupli = $bad_email = 0; $statuts_auteurs = array('6forum', '1comite', '0minirezo'); // charger la table des abonnements en ram afin d'eviter les petites requettes $abonnements = array(); if(($sql_result = sql_select('id_auteur,id_liste' , 'spip_auteurs_listes') ) !== false) { while($row = sql_fetch($sql_result)) { if(!isset($abonnements[$row['id_liste']])) { $abonnements[$row['id_liste']] = array(); } $abonnements[$row['id_liste']][] = $row['id_auteur']; } } else { spiplistes_sqlerror_log('module import (abonnements)'); } if($forcer_abo) { $auteurs_format = array(); // charger la table des formats afin d'eviter les petites requettes if(($sql_result = sql_select("id_auteur,`spip_listes_format` AS format" , 'spip_auteurs_elargis')) !== false) { while($row = sql_fetch($sql_result)) { $auteurs_format[$row['id_auteur']] = $row['format']; } } else { spiplistes_sqlerror_log("module import (format)"); } } // les formats $modifier_format = array(); $err_import = _T('spiplistes:erreur_import_base'); //syslog(LOG_NOTICE, 'memory_get_usage[2]: ' . memory_get_usage()); //syslog(LOG_NOTICE, 'memory_get_peak_usage[2]: ' . memory_get_peak_usage()); $start_time = microtime(1); $stack_new_auteurs = array(); // statut temporaire $tmp_statut = '6abo'.date('YmdGis'); for($jj = 0; $jj < $nb_new_entries; $jj++) { $nouvelle_entree = trim($new_entries[$jj]); if(!empty($nouvelle_entree) // ni une ligne de commentaire && !ereg("^[/#]", $nouvelle_entree)) { list($email, $login, $nom) = explode($separateur, $nouvelle_entree); $email = strtolower(trim($email)); $mail_exist = false; if(($email = email_valide($email)) && ( !($mail_exist = array_key_exists($email, $current_entries)) || $forcer_abo ) ) { if(!$mail_exist) { // si le compte n'existe pas, le creer // commencer par calculer le login $login = trim($login); if(empty($login)) { $login = spiplistes_login_from_email($email); } else { $login = strtolower($login); } // puis le nom $nom = trim($nom); if(empty($nom)) { $nom = ucfirst($login); } // ajoute l'invite' dans la table des auteurs $pass = creer_pass_aleatoire(8, $email); // nouvel abo dans la pile des "a creer" $stack_new_auteurs[] = array( 'nom' => $nom , 'email' => $email , 'login' => $login , 'pass' => md5($pass) , 'statut' => $tmp_statut , 'htpass' => generer_htpass($pass) ); } // end if(!$mail_exist) // adresse mail existe dans la base // si on passe par ici, c'est sous-entendu $forcer_abo (abonne' un compte existant) else { $id_auteur = intval($current_entries[$email]['id_auteur']); // forcer le format dans la foulee if(!isset($auteurs_format[$id_auteur])) { $modifier_format[] = '(' . sql_quote($id_auteur) . ',' . sql_quote($format_abo) . ')'; } } // est-ce vraiment utile (voir plus bas) } else { if($mail_exist) { $bad_dupli++; spiplistes_log('import dupli: '.$mail); } else { $bad_email++; spiplistes_log('import bad: '.$mail); } } } } // end for($jj = 0; $jj < $nb_new_entries; $jj++) // importer les nouveaux abonnés if(count($stack_new_auteurs)) { $sql_col_names = '('.implode(',', array_keys($stack_new_auteurs[0])).')'; $sql_col_values = ''; //syslog(LOG_NOTICE, 'memory_get_usage[5]: ' . memory_get_usage()); foreach($stack_new_auteurs as $auteur) { $values = array_map('sql_quote', $auteur); $sql_col_values .= '('.implode(',', $values).'),'; } $sql_col_values = rtrim($sql_col_values,','); $r = sql_insert('spip_auteurs', $sql_col_names, $sql_col_values); spiplistes_debug_log ('size of imported values: ' . strlen($sql_col_values)); //syslog(LOG_NOTICE, 'memory_get_usage[6]: ' . memory_get_usage()); // nouveaux abonnements foreach($abos_liste as $id_liste) { // un INSERT sans VALUES // @todo: vérifier compatibilite sqlite et pg if(sql_query( 'INSERT INTO spip_auteurs_listes (id_auteur,id_liste) SELECT a.id_auteur,'.$id_liste .' FROM spip_auteurs AS a WHERE a.statut='.sql_quote($tmp_statut)) === false ) { spiplistes_sqlerror_log('import nouveaux abos dans spip_auteurs_listes'); } } // format pour les nouveaux auteurs // un INSERT sans VALUES // @todo: vérifier compatibilite sqlite et pg if(sql_query( 'INSERT INTO spip_auteurs_elargis (id_auteur,`spip_listes_format`) SELECT a.id_auteur,'.sql_quote($format_abo) .' FROM spip_auteurs AS a WHERE a.statut='.sql_quote($tmp_statut)) === false ) { spiplistes_sqlerror_log('import nouveauxformats dans spip_auteurs_elargis'); } } // Comptes deja existants, inclus dans le fichier import // - changer son format de réception ? // - l'ajouter aux listes sélectionnées ? // - ou ignorer ? if(count($modifier_format)) { // pour l'instant: ignorer ! // } // redonner le bon statut visiteur aux nouveaux sql_update(array('spip_auteurs'), array('statut' => sql_quote('6forum')), array('statut='.sql_quote($tmp_statut))); // fin des req $result_affiche .= ($tt = ($ii = count($stack_new_auteurs)) + ($jj = count($modifier_format))) ? '<ul>'.PHP_EOL . '<li class="verdana2">'._T('spiplistes:nb_comptes_importees_en_ms_dont_' , array('nb' => $tt, 'ms' => (microtime(1) - $start_time))) . '<ul>'.PHP_EOL . '<li>'._T('spiplistes:nb_fiches_crees', array('nb' => $ii)).'</li>'.PHP_EOL //. '<li>'._T('spiplistes:nb_comptes_modifies', array('nb' => $jj)).'</li>'.PHP_EOL . '<li>'._T('spiplistes:nb_comptes_ignores', array('nb' => $jj)).'</li>'.PHP_EOL . '</ul>'.PHP_EOL . '</li>'.PHP_EOL . '</ul>'.PHP_EOL : '<br />'._T('spiplistes:pas_dimport').PHP_EOL ; if($bad_dupli) { $result_affiche .= '<br />'._T('pass_erreur').' email: '._T('spiplistes:n_duplicata_mail', array('n' => $bad_dupli)).PHP_EOL; } if($bad_email) { $result_affiche .= '<br />'._T('pass_erreur').' email: '._T('spiplistes:n_incorrect_mail', array('n' => $bad_email)).PHP_EOL; } $result_affiche = _T('spiplistes:fichier_') . ' : <strong>'.$realname.'</strong><br />'.PHP_EOL . _T('spiplistes:' . ((count($abos_liste) > 1) ? 'Listes_de_destination_s' : 'Liste_de_destination_s') , array('s' => '#' . implode(',#', $abos_liste))) .'<br />'.PHP_EOL . $result_affiche ; } return($result_affiche); }
function spiplistes_courrier_id_auteur_get ($id_courrier) { if(($id_courrier = intval($id_courrier)) > 0) { if($sql_result = sql_select('id_auteur', 'spip_courriers', "id_courrier=".sql_quote($id_courrier), '', '', 1)) { if($row = spip_fetch_array($sql_result)) { return($row['id_auteur']); } } } return(false); }
function exec_spiplistes_voir_journal () { static $eol = PHP_EOL; global $connect_statut , $connect_toutes_rubriques , $connect_id_auteur ; // la configuration est réservée aux admins tt rubriques $autoriser = ($connect_statut == "0minirezo") && $connect_toutes_rubriques; $taille_cache = spip_fetch_array(spip_query("SELECT SUM(taille) AS n FROM spip_caches WHERE type='t'")); $message_gauche = ($taille_cache = $taille_cache['n']) ? _T('taille_cache_octets', array('octets' => taille_en_octets($taille_cache))) : _T('taille_cache_vide') ; $message_gauche = '<p class="verdana2">' . $message_gauche . '</p>' . $eol; //////////////////////////////////// // PAGE CONTENU //////////////////////////////////// $titre_page = spiplistes_journal_titre(); // Permet entre autres d'ajouter les classes a' la page : <body class='$rubrique $sous_rubrique'> $rubrique = _SPIPLISTES_PREFIX; $sous_rubrique = 'voir_journal'; $commencer_page = charger_fonction('commencer_page', 'inc'); echo($commencer_page(_T('spiplistes:spiplistes') . ' - ' . trim($titre_page), $rubrique, $sous_rubrique)); if(!$autoriser) { die (spiplistes_terminer_page_non_autorisee() . fin_page()); } $page_result = '' . '<br style="line-height:3em" />' . $eol . spiplistes_gros_titre($titre_page, '', true) . barre_onglets($rubrique, $sous_rubrique) . debut_gauche($rubrique, true) . spiplistes_boite_meta_info(_SPIPLISTES_PREFIX) . $message_gauche . pipeline('affiche_gauche', array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) //. creer_colonne_droite($rubrique, true) // spiplistes_boite_raccourcis() s'en occupe . spiplistes_boite_raccourcis(true) . spiplistes_boite_autocron() // ne pas gener l'edition . spiplistes_boite_info_spiplistes(true) . pipeline('affiche_droite', array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) . debut_droite($rubrique, true) ; // affiche milieu $page_result .= '' . debut_cadre_trait_couleur("administration-24.gif", true, '', $titre_page) . spiplistes_journal_lire(_SPIPLISTES_PREFIX) . fin_cadre_trait_couleur(true) ; // Fin de la page echo($page_result); echo pipeline('affiche_milieu',array('args'=>array('exec'=>$sous_rubrique),'data'=>'')) , spiplistes_html_signature(_SPIPLISTES_PREFIX) , fin_gauche(), fin_page(); }
### DBG fich_debug("DBG >> login : $login\n"); // Si l'utilisateur figure deja dans la base, y recuperer les infos $result = spip_query("SELECT * FROM spip_auteurs WHERE login="******" AND source='ldap'"); if (!sql_count($result)) { ### DBG fich_debug("DBG >> Login : $login n'est pas dans la base.\n"); fich_debug("DBG >> statut : ".$GLOBALS['meta']["ldap_statut_import"]."\n"); fich_debug("DBG >> ldap_base : ".$GLOBALS['ldap_base']."\n"); $desc['nom'] = $user["fullname"]; $desc['statut'] = "1comite"; $desc['login'] = $login; $desc['source'] = 'ldap'; $desc['pass'] = ''; $r = sql_insertq('spip_auteurs', $desc); $result = spip_query("SELECT * FROM spip_auteurs WHERE login="******" AND source='ldap'"); } $row_auteur = spip_fetch_array($result); ### DBG fich_debug("DBG >> statut :".$row_auteur['statut']."\n"); if ($row_auteur['statut'] == '0minirezo') $cookie_admin = "@".$session_login; $var_f = charger_fonction('session', 'inc'); $cookie_session = $var_f($row_auteur); ### DBG fich_debug("DBG >> $cookie_session\n"); // On poste le cookie de session spip_setcookie('spip_session', $cookie_session); // On loge l'authentification spip_log("login de $login depuis LCS");
function snippets_rubriques_importer($id_target,$arbre,$contexte){ include_spip('base/serial'); include_spip('base/abstract_sql'); include_spip('inc/snippets'); include_spip('snippets/articles/importer'); $table_prefix = $GLOBALS['table_prefix'] ; $champs_non_importables = array('id_article',"id_rubrique","id_secteur","maj","export","visites","referers","popularite","id_trad","idx","id_version","url_propre"); $champs_non_ajoutables = array('titre',"statut",'date','date_redac','lang'); $champs_jointures = array('auteur','mot'); $champs_defaut_values = array('statut'=>'prop'); $table = 'spip_rubriques'; $primary = 'id_rubrique'; $fields = $GLOBALS['tables_principales']['spip_rubriques']['field']; $tag_objets="rubriques"; $tag_objet="rubrique"; $translations = array(); if ($arbre && isset($arbre[$tag_objets])) foreach($arbre[$tag_objets] as $objets){ foreach($objets[$tag_objet] as $objet){ include_spip('action/editer_rubrique'); // si c'est une creation, creer le formulaire avec les infos d'entete if (!($id_objet=intval($id_target))){ if (preg_match(",id_rubrique=([0-9]*),i",$contexte,$regs)) $id_rubrique=intval($regs[1]); $id_objet = insert_rubrique($id_rubrique); $creation = true; } // sinon on ajoute chaque champ, sauf le titre $row = spip_fetch_array(spip_query("SELECT * FROM $table WHERE $primary="._q($id_objet))); foreach (array_keys($row) as $key) if ( !in_array($key,$champs_non_importables) AND !in_array($key,$champs_jointures) AND ($creation OR !in_array($key,$champs_non_ajoutables) OR !$row[$key]) AND isset($objet[$key])){ $v=trim(spip_xml_aplatit($objet[$key])); $row[$key] = $creation?$v:($row[$key].$v); } revisions_rubriques($id_objet , $row); //$translations[] = array($table,$objet[$primary],$id_objet); // gerer l'import de liens eventuels if ( $objet['liste_articles']){ snippets_articles_importer("",$objet['liste_articles'][0],"id_rubrique=$id_objet") ; } if ($objet['liste_rubriques']){ snippets_rubriques_importer("",$objet['liste_rubriques'][0],"id_rubrique=$id_objet"); } } } return ""; }
function exec_admin_couteau_suisse() { cs_log("INIT : exec_admin_couteau_suisse()"); global $spip_lang_right; global $outils, $afficher_outil, $metas_vars, $metas_outils; // cette valeur par defaut n'est pas definie sous SPIP 1.92 @define('_ID_WEBMESTRES', 1); cs_minipres(); $cmd = _request('cmd'); $exec = _request('exec'); include_spip('inc/cs_outils'); cs_init_plugins(); // id de l'auteur en session if(defined('_SPIP19300')) $connect_id_auteur = $GLOBALS['auteur_session']['id_auteur']; else global $connect_id_auteur; // reset general if($cmd=='resetall'){ spip_log("Reset General du Couteau Suisse par l'auteur id=$connect_id_auteur"); foreach(array_keys($GLOBALS['meta']) as $meta) { if(strpos($meta, 'tweaks_') === 0) effacer_meta($meta); if(strpos($meta, 'cs_') === 0) effacer_meta($meta); } $metas_vars = $metas_outils = array(); // ici, pas d'initialisation... include_spip('cout_lancement'); cout_exec_redirige('cmd=resetjs'); } // installation personnalisee if(strlen($pack = _request('pack')) && isset($GLOBALS['cs_installer'][$pack]['outils'])) { if($cmd=='install'){ spip_log("Installation personnalisee de '$pack' par l'auteur id=$connect_id_auteur"); // installer le pack et rediriger cout_install_pack($pack, true); } elseif($cmd=='delete'){ spip_log("Suppression de '$pack' par l'auteur id=$connect_id_auteur"); $p = preg_quote($pack,'/'); $r = "[$]GLOBALS\['cs_installer'\]\['$p'\] *="; cs_ecrire_config( array("/$r/", "/# [^\\n\\r]+[\\n\\r]+if\(0\) {$r}.*?# $p #[\\n\\r]+/s"), array('if(0) \0', '')); // simplement prendre en compte la supression cout_exec_redirige('cmd=pack', false); } } // reset des variables d'un outil if($cmd=='reset' && strlen($_GET['outil'])){ spip_log("Reset des variables de '$_GET[outil]' par l'auteur id=$connect_id_auteur"); global $outils; include_spip('cout_utils'); include_spip('config_outils'); if(autoriser('configurer', 'outil', 0, NULL, $outils[$_GET['outil']])) { include_spip('inc/cs_outils'); cs_initialisation_d_un_outil($_GET['outil'], charger_fonction('description_outil', 'inc'), true); foreach ($outils[$_GET['outil']]['variables'] as $a) if(autoriser('configurer', 'variable', 0, NULL, array('nom'=>$a, 'outil'=>$outils[$_GET['outil']]))) unset($metas_vars[$a]); else spip_log("Reset interdit de la variable %$a% !!"); ecrire_meta('tweaks_variables', serialize($metas_vars)); } // tout recompiler cout_exec_redirige("cmd=descrip&outil={$_GET[outil]}#cs_infos"); } // reset de l'affichage if($cmd=='showall'){ spip_log("Reset de tous les affichages du Couteau Suisse par l'auteur id=$connect_id_auteur"); effacer_meta('tweaks_caches'); cout_exec_redirige(); } // afficher la description d'un outil ? $afficher_outil = ($cmd=='descrip' OR $cmd=='switch')?$_GET['outil']:''; // initialisation generale forcee : recuperation de $outils; cs_initialisation(true, $cmd!='noinclude'); cs_installe_outils(); // mise a jour des donnees si envoi via formulaire // sinon fait une passe de verif sur les outils if($cmd=='switch' OR $cmd=='hide'){ enregistre_modif_outils($cmd); cout_exec_redirige(strlen($_GET['outil'])?"cmd=descrip&outil={$_GET[outil]}#cs_infos":''); } // else // verif_outils(); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('couteauprive:titre'), "configuration", 'couteau_suisse'); // pour la version du plugin include_spip('inc/plugin'); if(isset($GLOBALS['meta']['plugin'])) { $t = unserialize($GLOBALS['meta']['plugin']); $dir = $t['COUTEAU_SUISSE']['dir']; $dir_type = $t['COUTEAU_SUISSE']['dir_type']; $bt_dir = $t['BARRETYPOENRICHIE']['dir']; $bt_version = $t['BARRETYPOENRICHIE']['version']; } if(!strlen($dir)) $dir = 'couteau_suisse'; if(!strlen($bt_dir)) $bt_dir = 'barre_typo_v2'; $get_infos = defined('_SPIP20100')?charger_fonction('get_infos','plugins'):'plugin_get_infos'; if (isset($dir_type)) { $t = $get_infos($dir, false, constant($dir_type)); } else { $t = $get_infos($dir); } $cs_version_base = $t['version_base']; $cs_version = $t['version']; // mises a jour eventuelles de la base installe_un_plugin($dir, $t, $dir_type); unset($t); if(!strlen($bt_version)) { $bt_version = $get_infos($bt_dir); $bt_version = $bt_version['version']; } $cs_revision = ((lire_fichier(_DIR_PLUGIN_COUTEAU_SUISSE.'svn.revision',$t)) && (preg_match(',<revision>(\d+)</revision>,',$t,$r))) ?'<br/>'._T('couteauprive:version_revision', array('revision'=>$r[1])):""; include_spip('public/assembler'); echo recuperer_fond('exec/admin_couteau_suisse_head', array( 'force' => in_array(_request('var_mode'), array('calcul', 'recalcul'))?'oui':null, 'cs_version' => $cs_version, 'exec' => _request('exec'), )); echo "<br /><br /><br />"; gros_titre(_T('couteauprive:titre'), '', false); echo barre_onglets("configuration", 'couteau_suisse'); echo '<div style="font-size:85%">'; // verification d'une base venant de SPIP 1.8 $res = spip_query("DESCRIBE spip_meta valeur"); $resultat = function_exists('spip_fetch_array')?spip_fetch_array($res):sql_fetch($res); if($resultat['Type']!='text') echo "<p style=\"color:red;\">Attention : votre base semble ancienne et le Couteau Suisse ne va pas bien fonctionner.</p><p>La table 'spip_meta' a pour type de valeur '$resultat[Type]' au lieu de 'text'.</p>"; // verification de la barre typo V2 $mini = '2.5.3'; if(strlen($bt_version) and (version_compare($bt_version,$mini,'<'))) echo "<p>"._T('couteauprive:erreur:bt', array('version'=>$bt_version, 'mini'=>$mini))."</p>"; echo "<script type=\"text/javascript\"><!-- if(!window.jQuery) document.write('".str_replace('/','\/',addslashes(propre('<p>'._T('couteauprive:erreur:jquery').'</p>')))."'); //--></script>"; echo '</div>'; // chargement des outils include_spip('inc/cs_outils'); list($outils_affiches_actifs, $liste_outils) = liste_outils(); // cadre de gauche echo debut_gauche('', true); // pour la liste des docs sur spip-contrib $contribs = isset($GLOBALS['meta']['tweaks_contribs'])?unserialize($GLOBALS['meta']['tweaks_contribs']):array(); foreach($contribs as $i=>$v) $contribs[$i] = preg_replace_callback('/@@(.*?)@@/', 'cs_couper_25', $v); sort($contribs); $aide = ''; if(isset($GLOBALS['cs_installer'])) foreach(array_keys($GLOBALS['cs_installer']) as $pack) $aide .= "\n_ " . _T('couteauprive:pack_du', array('pack'=>"{[{$pack}|"._T('couteauprive:pack_installe').'->' . generer_url_ecrire($exec,'cmd=install&pack='.urlencode($pack)) . ']}')); // si le plugin est installe par procedure automatique, on permet la mise a jour directe (SPIP >= 2.0) $arg_chargeur = $GLOBALS['spip_version_base']>=15828?'url_zip_plugin2':'url_zip_plugin'; // eq. SPIP >= 2.1.2 $form_update = preg_match(',plugins/auto/couteau_suisse/$,',_DIR_PLUGIN_COUTEAU_SUISSE)? "<input type='hidden' name='$arg_chargeur' value='http://files.spip.org/spip-zone/couteau_suisse.zip' />" . "<br/><div class='cs_sobre'><input type='submit' value='• " . attribut_html(_T('couteauprive:version_update')) . "' class='cs_sobre' title='" . attribut_html(_T('couteauprive:version_update_title')) . "' /></div>" :""; // un lien si le plugin plugin "Telechargeur" est present (SPIP < 2.0) if(!strlen($form_update) && defined('_DIR_PLUGIN_CHARGEUR')) $form_update = "<br/>• <a title='" . attribut_html(_T('couteauprive:version_update_chargeur_title')) . "' href='../spip.php?action=charger&plugin=couteau_suisse&url_retour=".urlencode(generer_url_ecrire('admin_couteau_suisse'))."'>"._T('couteauprive:version_update_chargeur').'</a>'; // compilation du bandeau gauche $aide = _T('couteauprive:help2', array( 'version' => $cs_version.$cs_revision.'<br/>'. (defined('_CS_PAS_DE_DISTANT')?'('._T('couteauprive:version_distante_off').')':'<span class="cs_version">'._T('couteauprive:version_distante').'</span>') )) . $form_update . '<br/>• ['._T('couteauprive:pack_titre') . '|' . _T('couteauprive:pack_alt') . '->' . generer_url_ecrire($exec,'cmd=pack#cs_infos') . "]\n\n" . _T('couteauprive:help3', array( 'reset' => generer_url_ecrire($exec,'cmd=resetall'), 'hide' => generer_url_ecrire($exec,'cmd=showall'), 'contribs' => join('', $contribs), 'install' => $aide )); if(function_exists('redirige_action_post')) $aide = redirige_action_post('charger_plugin', '', 'admin_couteau_suisse', '', $aide); // SPIP >= 2.0 $aide = '<div class="cs_aide">'._T('couteauprive:help')."\n\n$aide</div>"; echo debut_boite_info(true), propre($aide), fin_boite_info(true); $aide = cs_aide_raccourcis(); if(strlen($aide)) echo debut_boite_info(true), $aide, fin_boite_info(true); $aide = cs_aide_pipelines($outils_affiches_actifs); if(strlen($aide)) echo debut_boite_info(true), $aide, fin_boite_info(true); echo pipeline('affiche_gauche',array('args'=>array('exec'=>$exec),'data'=>'')); echo creer_colonne_droite('', true); echo pipeline('affiche_droite',array('args'=>array('exec'=>$exec),'data'=>'')), debut_droite('', true), debut_cadre_trait_couleur(find_in_path('img/couteau-24.gif'),true,'',' '._T('couteauprive:outils_liste')), _T('couteauprive:outil_intro'), "\n<table border='0' cellspacing='0' cellpadding='5' style='width:100%;'><tr><td class='sansserif'>"; $_GET['source'] = $exec; echo '<div class="conteneur">', $liste_outils, '</div><br class="conteneur" /><div class="cs_patience"><br />'.http_img_pack('searching.gif','*','').' ...</div>'; flush(); echo '<div class="conteneur"><div id="cs_infos" class="cs_infos">', $cmd=='pack'?cs_description_pack():description_outil2($afficher_outil), '</div><script type="text/javascript"><!-- var cs_descripted = "', $afficher_outil, '"; document.write("<style type=\'text/css\'>#csjs{display:none;}<\/style>"); //--></script><div id="csjs" style="color:red;"><br/>', _T('couteauprive:erreur:js'),'</div> <noscript><style type="text/css">#csjs{display:none;}</style><div style="color:red;"><br/>', _T('couteauprive:erreur:nojs'), $_GET['modif']=='oui'?'<br/>'._T('couteauprive:vars_modifiees').'.':'','</div></noscript>', '</div></td></tr></table>', '<style type="text/css">.cs_patience{display:none;}</style>', fin_cadre_trait_couleur(true), pipeline('affiche_milieu',array('args'=>array('exec'=>$exec),'data'=>'')), fin_gauche(), fin_page(); cs_log(" FIN : exec_admin_couteau_suisse()"); }
function cs_champ_sql($id, $champ='texte', $objet='article') { // Utiliser la bonne requete en fonction de la version de SPIP if(function_exists('sql_getfetsel')) { // SPIP 2.0 // TODO : fonctions SPIP pour trouver la table et l'id_objet if($r = sql_getfetsel($champ, 'spip_'.$objet.'s', 'id_'.$objet.'='.intval($id))) return $r; } else { if($r = spip_query('SELECT '.$champ.' FROM spip_'.$objet.'s WHERE id_'.$objet.'='.intval($id))) // s'il existe un champ, on le retourne if($row = spip_fetch_array($r)) return $row[$champ]; } // sinon rien ! return ''; }
function exec_rec_mc_dist(){ // elements spip global $connect_statut, $connect_toutes_rubriques, $connect_id_auteur, $couleur_claire, $couleur_foncee; //#plug(11-07) : fonctions requises...(construction de la liste des rubriques, ...) include_spip("inc/rec_mc_inc_fonct"); //#plug(11-07) : Initialisation de l'id rubrique . Mis a -1 pour le premier affichage $rub = -1; //#plug(11-07) : Recupération de l'id rubrique si $_post if (isset($_POST['rub'])) $rub = $_POST['rub']; elseif (isset($_GET['rub'])) $rub = $_GET['rub']; $Refresh = ""; if (isset($_POST['refresh'])) { $Refresh = $_POST['refresh']; } elseif (isset($_GET['refresh'])) { $Refresh = $_GET['refresh']; } //#plug(11-07) : construction des "blocs" include_spip("inc/rec_mc_inc_pres"); $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page(_T('rmc:titre_page_admin'), "suivi", "rec_mc"); echo "<a name='haut_page'></a><br />"; echo gros_titre(_T('rmc:titre_page_admin'),'',false); echo debut_gauche('', true); //#plug(11-07) : TODO : Etat des lieux... menu_admin() ; creer_colonne_droite(); //#plug(11-07) : vers popup aide bloc_ico_aide_ligne(); //#plug(11-07) : signature echo "<br />"; echo debut_boite_info(true); echo _T('rmc:signature'); echo fin_boite_info(true); echo "<br />"; echo debut_droite('', true); echo debut_cadre_relief( _DIR_IMG_REC_MC."rec_mc-24.png"); echo gros_titre(_T('rmc:titre_config'),'',false); echo _T('rmc:info_config'); echo "<br />"; //#plug(11-07) : verif de l'existence d'au moins une rubrique $r=mysql_query("SELECT * FROM spip_rubriques"); $nb_r=mysql_num_rows($r); //#plug(11-07) : verif de l'existence d'au moins un groupe de mots $g=mysql_query("SELECT * FROM spip_groupes_mots"); $nb_g=mysql_num_rows($g); if($nb_r==0){ echo debut_boite_erreur(_T('rmc:erreur_rubrique')) ; }else if($nb_g==0){ echo debut_boite_erreur(_T('rmc:erreur_groupes_mots')) ; }else{ //#plug(11-07) : Selectionner une rubrique echo debut_cadre_trait_couleur('',true, '', _T('rmc:rubriques')); echo _T('rmc:text_select_rubrique')." <br /><br />"; echo "<form action=\" ".$PHP_SELF." \" method=\"POST\">"; //#plug(11-07) : Commentaire Dom : ma ligne qui merde !!!! ne merde plus!!!!!!!!!!!!!! echo "<select style=\"width:100%;\" name=\"rub\" onchange=\"window.location=('".generer_url_ecrire("rec_mc","rub='+this.options[this.selectedIndex].value").")\">"; if ($rub == -1) echo "<option value=\"-1\" selected><b>"._T('rmc:select_rubrique')."</b>"; else echo "<option value=\"-1\"><b>"._T('rmc:select_rubrique')."</b>"; if ($rub == 0) echo "<option value=\"0\" selected style=\"font-weight:bold\">"._T('rmc:select_ttes_rubriques'); else echo "<option value=\"0\" style=\"font-weight:bold\">"._T('rmc:select_ttes_rubriques'); $query = "SELECT id_parent FROM spip_rubriques order by titre"; $result=spip_query($query); while($row=spip_fetch_array($result)){ $parent_parent=$row['id_parent']; } getenfant(0,$rub); echo "</select><BR>\n"; echo "</form>"; echo fin_cadre_trait_couleur(true); } $idgroupeprec = 0; if ($rub != -1) { echo debut_cadre_trait_couleur ('', true, '', _T('rmc:groupes_mots')); //#plug(11-07) : formulaire - envoi du traitement vers action/rec_mc_ajoutgroupes echo '<form action="'.generer_url_action('rec_mc_ajoutgroupes').'" method="post">'; echo "<input type='hidden' name='redirect' value='".generer_url_ecrire("rec_mc", "rub=".$rub)."' />\n"; echo "<input type='hidden' name='hash' value='".calculer_action_auteur("ajoutgroupes-rien")."' />\n"; echo "<input type='hidden' name='id_auteur' value='".$connect_id_auteur."' />\n"; echo "<input type='hidden' name='rub' value='$rub'>"; if ($rub > -1) { $sql = "SELECT spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre AS titremot, spip_mots.id_mot as id_mot, spip_rmc_rubs_groupes.id_rubrique AS idrub FROM spip_groupes_mots INNER JOIN spip_mots ON spip_mots.id_groupe = spip_groupes_mots.id_groupe INNER JOIN spip_rmc_rubs_groupes ON spip_rmc_rubs_groupes.id_groupe = spip_groupes_mots.id_groupe WHERE id_rubrique = $rub GROUP BY spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre ORDER BY spip_groupes_mots.id_groupe"; } $result = spip_query($sql); $aff_groupes_select=""; $listidgrp = ""; $compt = 0; $nbr = 0; if ($result) { while ($row = mysql_fetch_assoc($result)) { extract($row); if ($idgroupeprec != $id_groupe) { $aff_groupes_select.=" <br /><div style=\"background-color:#ccc; border:1px solid ".$couleur_foncee."; font-size:1.2em; font-weight:bold\"><input type=checkbox name=\"idgrp[]\" value=\"$id_groupe\" checked />$titre</div>"; $nbr = ++$nbr; if ($compt == 0) { $listidgrp .= "$id_groupe"; $compt = 1; $nb_groupes = ++$ng; } else $listidgrp .= ",$id_groupe"; } $s="SELECT id_mot_exclu FROM spip_rmc_mots_exclus WHERE id_mot_exclu=$id_mot AND id_rubrique=$rub"; $r=spip_query($s); $rw=spip_fetch_array($r); if($rw['id_mot_exclu']==$id_mot){ $aff_groupes_select.= "<div style=\"border:1px solid ".$couleur_foncee."; background-color:#eee; font-size:.9em;height:18px;\" ><span style='float:right;color:red;font-weight:bold;'>"._T('rmc:mot_exclu')."<input type=checkbox name='motsexclus[]' value='$id_mot' style='margin:0 2px;padding:0;' checked='checked' /></span> $titremot</div>"; }else{ $aff_groupes_select.= "<div style=\"border:1px solid ".$couleur_foncee."; background-color:#eee; font-size:.9em;height:18px;\" ><span style='float:right;color:red;'>"._T('rmc:mot_exclure')."<input type=checkbox name='motsexclus[]' value='$id_mot' style='margin:0 2px;padding:0;'/></span> $titremot</div>"; } $idgroupeprec = $id_groupe; } mysql_free_result($result); } if ($rub > -1) { if ($listidgrp != "") $sql = "SELECT spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre AS titremot FROM spip_groupes_mots INNER JOIN spip_mots ON spip_mots.id_groupe = spip_groupes_mots.id_groupe WHERE spip_groupes_mots.id_groupe not IN ($listidgrp) GROUP BY spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre ORDER BY spip_groupes_mots.id_groupe"; else $sql = "SELECT spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre AS titremot FROM spip_groupes_mots INNER JOIN spip_mots ON spip_mots.id_groupe = spip_groupes_mots.id_groupe GROUP BY spip_groupes_mots.titre, spip_groupes_mots.id_groupe, spip_mots.titre ORDER BY spip_groupes_mots.id_groupe"; } $result = spip_query($sql); $idgroupeprc = 0; $aff_groupes_noselected = ""; $j=0; if ($result) { while ($row = mysql_fetch_assoc($result)) { extract($row); if ($idgroupeprec != $id_groupe) { $aff_groupes_noselected.=" <br /><div style=\"background-color:#ccc; border:1px solid ".$couleur_foncee."; font-size:1.2em; font-weight:bold\"><input type=checkbox name=\"idgrp[]\" value=\"$id_groupe\">$titre</div>"; $nb_groupes_at = ++$j; } $aff_groupes_noselected.= "<div style=\"border:1px solid ".$couleur_foncee."; background-color:#eee; font-size:.9em\" > $titremot</div>"; $idgroupeprec = $id_groupe; } mysql_free_result($result); } //#plug(11-07) : Affichage //#plug(11-07) : Affichage des groupes attribues (deja selectionnes) if($nbr >0){ echo debut_cadre_relief(_DIR_IMG_PACK."groupe-mot-24.gif"); debut_band_titre($couleur_foncee, "verdana3", "bold"); if($idrub==0 ){ echo _T('rmc:groupes_toutes_rubriques'); }else{ echo _T('rmc:groupes_mots_attribues'); } echo fin_bloc(); echo "$aff_groupes_select"; echo fin_cadre_relief(); } //#plug(11-07) : Affichage des groupes non attribues debut_cadre_relief(_DIR_IMG_PACK."groupe-mot-24.gif"); if($nb_groupes_at >0){ debut_band_titre($couleur_foncee, "verdana3", "bold"); echo _T('rmc:groupes_mots_non_attribues'); echo fin_bloc(); }else{ echo _T('rmc:groupes_mots_tous_attribues'); } echo $aff_groupes_noselected; echo fin_cadre_relief(); echo "<input type=\"submit\" name=\"refresh\" value=\"Valider\">"; echo "</form>"; echo fin_cadre_trait_couleur(true); } echo fin_cadre_relief(); echo fin_gauche().fin_page();//fin page }//finexec
function sql_calendrier_taches_rv() { global $connect_id_auteur; $r = array(); if (!$connect_id_auteur) { return $r; } $result = spip_query("\nSELECT messages.* \nFROM spip_messages AS messages, spip_auteurs_messages AS lien \nWHERE ((lien.id_auteur='{$connect_id_auteur}' \n\tAND lien.id_message=messages.id_message) \n\tOR messages.type='affich') \nAND messages.rv='oui'\nAND ( (messages.date_heure > DATE_SUB(NOW(), INTERVAL 1 DAY) \n\tAND messages.date_heure < DATE_ADD(NOW(), INTERVAL 1 MONTH))\n\tOR (messages.date_heure < NOW() AND messages.date_fin > NOW() ))\nAND messages.statut='publie' \nGROUP BY messages.id_message \nORDER BY messages.date_heure"); if (spip_num_rows($result) > 0) { $r = array(); while ($x = spip_fetch_array($result)) { $r[] = $x; } } return $r; }
function auteurs_recemment_connectes() { global $connect_id_auteur; $res = ''; $result_auteurs = spip_query("SELECT id_auteur FROM spip_auteurs WHERE id_auteur!=$connect_id_auteur AND en_ligne>DATE_SUB(NOW(),INTERVAL 15 MINUTE) AND statut IN ('0minirezo','1comite')"); if (spip_num_rows($result_auteurs)) { $formater_auteur = charger_fonction('formater_auteur', 'inc'); $res = "<b>"._T('info_en_ligne'). " </b>"; while ($row = spip_fetch_array($result_auteurs)) { list($s, $mail, $nom, $w, $p) = $formater_auteur($row['id_auteur']); $res .= "$mail $nom, "; } $res = substr($res,0,-2); } return $res ? "<div class='messages' style='color:#666;'>$res</div>" : ''; }
function wha_url_transaction($id_transaction, $transaction_hash, $config, $args = array()) { $res = sql_select("*", "spip_transactions", "id_transaction=" . intval($id_transaction) . " AND transaction_hash=" . sql_quote($transaction_hash)); if (!($row = spip_fetch_array($res))) { return ""; } if ($row['reglee'] == 'oui') { return ""; } $achat_desc = wha_achat_desc($id_transaction, "Votre commande No {$id_transaction}", $row['montant'], $args); return parametre_url(wha_action_url("AuthorizeReq", $achat_desc, $config), 'lg', 'fr', '&'); }
function cs_urls_propres($type, $id) { global $type_urls; if(!$id) return ''; $res = ""; // SPIP >= 2.0 if(defined('_SPIP19300')) { $url = generer_url_entite_absolue($id, $type, '', '', true); $lien_public = "\n[<span>[". _T('couteau:urls_propres_lien'). "|{$url}->{$url}]</span>]\n\n"; $s = sql_select("url", "spip_urls", "id_objet=$id AND type='$type'", '', 'date DESC'); while ($t = sql_fetch($s)) $res .= ($res?'<br />':'')."• $t[url]\n"; // SPIP < 2.0 } else { // impossible de calculer l'url publique d'ici. $table = $type.($type=='syndic'?'':'s'); $r = spip_query("SELECT url_propre FROM spip_$table WHERE id_$type=$id"); if ($r && $r = spip_fetch_array($r) ) { if(!strlen($r=$r['url_propre'])) $r=_T('couteauprive:variable_vide'); $res .= "• $r\n"; } $lien_public = './?exec=action_rapide&arg=type_urls|URL_objet_191&format=iframe&type_objet='.$type.'&id_objet='.$id.'&script=foo'; $lien_public = '<iframe src="'.$lien_public.'" width="100%" style="border:none; height:4em;"></iframe>'; } $format = in_array($type_urls, array('page', 'standard', 'html')) ?_T('couteau:urls_propres_erreur') :_T('couteau:urls_propres_objet'); $mem = $GLOBALS['class_spip_plus']; $GLOBALS['class_spip_plus']=' class="spip"'; $res = propre( _T('couteau:urls_propres_format', array( 'format'=>$type_urls, 'url'=>generer_url_ecrire('admin_couteau_suisse', 'cmd=descrip&outil=type_urls#cs_infos') )). "\n\n" . $format . "\n\n" . '|{{'. _T('couteau:2pts', array( 'objet'=>strtoupper(filtrer_entites(_T('couteau:objet_'.$type))).' '.$id ))."}}|\n" . "|$res|") // bug SPIP ? . propre($lien_public); $GLOBALS['class_spip_plus'] = $mem; return cs_cadre_depliable(_T('couteau:urls_propres_titre'), 'bp_urls_propres', $res); }
function taille_du_cache() { $cpt = spip_fetch_array(spip_query("SELECT SUM(taille) AS n FROM spip_caches WHERE type='t'")); return $cpt['n']; }