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; } } }
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; }
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; }
/** * 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; } }
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; }
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; } }
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'])); } } } }
/** * 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}'"); } }
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)); } }
/** * 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); }
/** * 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; }
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; }
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&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; }
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'); }
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 } }
/** * 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; }
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()); } }
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(); }
function sql_wrap() { global $g; //if ($g["sql"]["connected"] == "true") return; //$g["sql"]["connected"] = "true"; sql_connect(); sql_select(); return 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; }
/** * 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; }