/** * 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'])); } } } }
function outlogin($skin_dir = "basic") { global $config, $member, $g4, $urlencode, $is_admin; $nick = cut_str($member['mb_nick'], $config['cf_cut_name']); $point = number_format($member['mb_point']); $outlogin_skin_path = "{$g4['path']}/skin/outlogin/{$skin_dir}"; // 읽지 않은 쪽지가 있다면 if ($member['mb_id']) { $sql = " select count(*) as cnt from {$g4['memo_table']} where me_recv_mb_id = '{$member['mb_id']}' and me_read_datetime = '0000-00-00 00:00:00' "; $row = sql_fetch($sql); $memo_not_read = $row['cnt']; $is_auth = false; $sql = " select count(*) as cnt from {$g4['auth_table']} where mb_id = '{$member['mb_id']}' "; $row = sql_fetch($sql); if ($row['cnt']) { $is_auth = true; } } ob_start(); if ($member['mb_id']) { include_once "{$outlogin_skin_path}/outlogin.skin.2.php"; } else { // 로그인 전이라면 include_once "{$outlogin_skin_path}/outlogin.skin.1.php"; } $content = ob_get_contents(); ob_end_clean(); return $content; }
/** * 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 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'"); }
function eb_visit($skin_dir = 'basic') { global $config, $g5, $tpl, $is_admin, $connect, $tpl_name; // visit 배열변수에 // $visit[1] = 오늘 // $visit[2] = 어제 // $visit[3] = 최대 // $visit[4] = 전체 // 숫자가 들어감 preg_match("/오늘:(.*),어제:(.*),최대:(.*),전체:(.*)/", $config['cf_visit'], $visit); settype($visit[1], "integer"); settype($visit[2], "integer"); settype($visit[3], "integer"); settype($visit[4], "integer"); // 속도 개선을 위해 DB 커넥션 없이 하는 방법을 강구해야 함. $write = sql_fetch("select sum(bo_count_write) as total from {$g5['board_table']}", false); $comment = sql_fetch("select sum(bo_count_comment) as total from {$g5['board_table']}", false); $members = sql_fetch("select count(*) as total from {$g5['member_table']}", false); $newby = sql_fetch("select count(*) as total from {$g5['member_table']} where mb_datetime between date_format(" . date("YmdHis") . ",'%Y-%m-%d 00:00:00') and date_format(" . date("YmdHis") . ",'%Y-%m-%d 23:59:59')", false); $counter['visit_today'] = number_format($visit[1]); $counter['visit_yesterday'] = number_format($visit[2]); $counter['visit_max'] = number_format($visit[3]); $counter['visit_total'] = number_format($visit[4]); $counter['total_write'] = number_format($write['total']); $counter['total_comment'] = number_format($comment['total']); $counter['newby'] = number_format($newby['total']); $counter['members'] = number_format($members['total']); $counter['write'] = number_format($write['total']); $counter['comment'] = number_format($comment['total']); $tpl->define(array('pc' => 'skin_pc/visit/' . $skin_dir . '/visit.skin.html', 'mo' => 'skin_mo/visit/' . $skin_dir . '/visit.skin.html', 'bs' => 'skin_bs/visit/' . $skin_dir . '/visit.skin.html')); $tpl->assign(array("visit" => $visit, "is_admin" => $is_admin, "connect" => $connect, "counter" => $counter)); $tpl->print_($tpl_name); }
/** * 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); }
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 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 latest($skin_dir = "", $bo_table, $rows = 10, $subject_len = 40, $options = "") { global $g4; if ($skin_dir) { $GLOBALS['latest_skin_path'] = $latest_skin_path = "{$g4['path']}/skin/latest/{$skin_dir}"; } else { $GLOBALS['latest_skin_path'] = $latest_skin_path = "{$g4['path']}/skin/latest/basic"; } $list = array(); $sql = " select * from {$g4['board_table']} where bo_table = '{$bo_table}'"; $board = sql_fetch($sql); $tmp_write_table = $g4['write_prefix'] . $bo_table; // 게시판 테이블 전체이름 $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by wr_num limit 0, {$rows} "; //explain($sql); $result = sql_query($sql); for ($i = 0; $row = sql_fetch_array($result); $i++) { $list[$i] = get_list($row, $board, $latest_skin_path, $subject_len); } ob_start(); include "{$latest_skin_path}/latest.skin.php"; $content = ob_get_contents(); ob_end_clean(); return $content; }
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; }
/** * 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_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 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 } }
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 maj_v016_dist($version_installee, $version_cible) { if (upgrade_vers(1.6, $version_installee, $version_cible)) { #8/08/07 plus d'indexation dans le core # include_spip('inc/indexation'); # purger_index(); # creer_liste_indexation(); maj_version(1.6); } if (upgrade_vers(1.601, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_forum ADD INDEX id_syndic (id_syndic)"); maj_version(1.601); } if (upgrade_vers(1.603, $version_installee, $version_cible)) { // supprimer les fichiers deplaces spip_unlink('inc_meta_cache.php'); spip_unlink('inc_meta_cache.php3'); spip_unlink('data/engines-list.ini'); maj_version(1.603); } if (upgrade_vers(1.604, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs ADD lang VARCHAR(10) DEFAULT '' NOT NULL"); $u = spip_query("SELECT * FROM spip_auteurs WHERE prefs LIKE '%spip_lang%'"); while ($row = sql_fetch($u)) { $prefs = unserialize($row['prefs']); $l = $prefs['spip_lang']; unset($prefs['spip_lang']); spip_query("UPDATE spip_auteurs SET lang=" . _q($l) . ", prefs='" . addslashes(serialize($prefs)) . "' WHERE id_auteur=" . $row['id_auteur']); } $u = spip_query("SELECT lang FROM spip_auteurs"); maj_version(1.604, $u); } }
function connect($skin_dir = 'basic') { global $config, $g5; // 회원, 방문객 카운트 $sql = " select sum(IF(mb_id<>'',1,0)) as mb_cnt, count(*) as total_cnt from {$g5['login_table']} where mb_id <> '{$config['cf_admin']}' "; $row = sql_fetch($sql); if (preg_match('#^theme/(.+)$#', $skin_dir, $match)) { if (G5_IS_MOBILE) { $connect_skin_path = G5_THEME_MOBILE_PATH . '/' . G5_SKIN_DIR . '/connect/' . $match[1]; if (!is_dir($connect_skin_path)) { $connect_skin_path = G5_THEME_PATH . '/' . G5_SKIN_DIR . '/connect/' . $match[1]; } $connect_skin_url = str_replace(G5_PATH, G5_URL, $connect_skin_path); } else { $connect_skin_path = G5_THEME_PATH . '/' . G5_SKIN_DIR . '/connect/' . $match[1]; $connect_skin_url = str_replace(G5_PATH, G5_URL, $connect_skin_path); } $skin_dir = $match[1]; } else { if (G5_IS_MOBILE) { $connect_skin_path = G5_MOBILE_PATH . '/' . G5_SKIN_DIR . '/connect/' . $skin_dir; $connect_skin_url = G5_MOBILE_URL . '/' . G5_SKIN_DIR . '/connect/' . $skin_dir; } else { $connect_skin_path = G5_SKIN_PATH . '/connect/' . $skin_dir; $connect_skin_url = G5_SKIN_URL . '/connect/' . $skin_dir; } } ob_start(); include_once $connect_skin_path . '/connect.skin.php'; $content = ob_get_contents(); ob_end_clean(); return $content; }
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 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 poll($skin_dir = 'basic', $po_id = false) { global $config, $member, $g5, $is_admin; // 투표번호가 넘어오지 않았다면 가장 큰(최근에 등록한) 투표번호를 얻는다 if (!$po_id) { $row = sql_fetch(" select MAX(po_id) as max_po_id from {$g5['poll_table']} "); $po_id = $row['max_po_id']; } if (!$po_id) { return; } $po = sql_fetch(" select * from {$g5['poll_table']} where po_id = '{$po_id}' "); ob_start(); if (G5_IS_MOBILE) { $poll_skin_path = G5_MOBILE_PATH . '/' . G5_SKIN_DIR . '/poll/' . $skin_dir; $poll_skin_url = G5_MOBILE_URL . '/' . G5_SKIN_DIR . '/poll/' . $skin_dir; } else { $poll_skin_path = G5_SKIN_PATH . '/poll/' . $skin_dir; $poll_skin_url = G5_SKIN_URL . '/poll/' . $skin_dir; } include_once $poll_skin_path . '/poll.skin.php'; $content = ob_get_contents(); ob_end_clean(); return $content; }
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 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 get_list_thumbnail($bo_table, $wr_id, $thumb_width, $thumb_height, $is_create = false, $is_crop = true, $crop_mode = 'center', $is_sharpen = false, $um_value = '80/0.5/3') { global $g5, $config; $filename = $alt = ""; $edt = false; $sql = " select bf_file, bf_content from {$g5['board_file_table']}\r\n where bo_table = '{$bo_table}' and wr_id = '{$wr_id}' and bf_type between '1' and '3' order by bf_no limit 0, 1 "; $row = sql_fetch($sql); if ($row['bf_file']) { $filename = $row['bf_file']; $filepath = G5_DATA_PATH . '/file/' . $bo_table; $alt = get_text($row['bf_content']); } else { $write_table = $g5['write_prefix'] . $bo_table; $sql = " select wr_content from {$write_table} where wr_id = '{$wr_id}' "; $write = sql_fetch($sql); $matches = get_editor_image($write['wr_content'], false); $edt = true; for ($i = 0; $i < count($matches[1]); $i++) { // 이미지 path 구함 $p = parse_url($matches[1][$i]); if (strpos($p['path'], '/' . G5_DATA_DIR . '/') != 0) { $data_path = preg_replace('/^\\/.*\\/' . G5_DATA_DIR . '/', '/' . G5_DATA_DIR, $p['path']); } else { $data_path = $p['path']; } $srcfile = G5_PATH . $data_path; if (preg_match("/\\.({$config['cf_image_extension']})\$/i", $srcfile) && is_file($srcfile)) { $size = @getimagesize($srcfile); if (empty($size)) { continue; } $filename = basename($srcfile); $filepath = dirname($srcfile); preg_match("/alt=[\"\\']?([^\"\\']*)[\"\\']?/", $matches[0][$i], $malt); $alt = get_text($malt[1]); break; } } } if (!$filename) { return false; } $tname = thumbnail($filename, $filepath, $filepath, $thumb_width, $thumb_height, $is_create, $is_crop, $crop_mode, $is_sharpen, $um_value); if ($tname) { if ($edt) { // 오리지날 이미지 $ori = G5_URL . $data_path; // 썸네일 이미지 $src = G5_URL . str_replace($filename, $tname, $data_path); } else { $ori = G5_DATA_URL . '/file/' . $bo_table . '/' . $filename; $src = G5_DATA_URL . '/file/' . $bo_table . '/' . $tname; } } else { return false; } $thumb = array("src" => $src, "ori" => $ori, "alt" => $alt); return $thumb; }
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 getBoardTable($bo_table) { global $g5_board; $sql = " select * from {$g5_board} where bo_table = '{$bo_table}' "; $board = sql_fetch($sql); $bo_subject = get_text($board['bo_subject']); return [$board, $bo_subject]; }
/** * * 연혁 출력 * * @param string $his_id * @param string $skin_dir * @return string $content */ function history($his_id, $skin_dir = '', $group = null) { global $g5; $sql = "select * from `{$g5['history_master_table']}` where his_id = '{$his_id}'"; $history = sql_fetch($sql); if (!$skin_dir) { $skin_dir = $history['his_skin']; } $history_skin_path = get_skin_path('history', $skin_dir); $history_skin_url = get_skin_url('history', $skin_dir); $sortable = "order by his_item_year " . $history['his_sort'] . ', his_item_month ' . $history['his_sort'] . ', his_item_day ' . $history['his_sort']; $histories = array(); $group_histories = array(); for ($i = $history['his_start_year'], $y = $history['his_end_year']; $i <= $history['his_end_year'], $y >= $history['his_start_year']; $i++, $y--) { $history_item = array(); $conditions = array("his_item_disable = ''", "his_id = '{$his_id}'"); if (!is_null($group)) { $conditions['group'] = "his_group_id = '{$group}'"; } if ($history['his_sort'] == 'asc') { $item_year = $i; } else { $item_year = $y; } $conditions[] = "his_item_year = '{$item_year}'"; $condition = count($conditions) > 0 ? 'where ' . implode(' and ', $conditions) : ''; $sql = "select * from `{$g5['history_item_table']}` {$condition} {$sortable}"; $result = sql_query($sql); while ($item = sql_fetch_array($result)) { switch ($history['his_output_type']) { case 'a': $item['date'] = $item['his_item_year'] . '.' . $item['his_item_month'] . '.' . $item['his_item_day']; break; case 'y': $item['date'] = ''; break; case 'm': $item['date'] = $item['his_item_month']; break; case 'd': $item['date'] = $item['his_item_month'] . '.' . $item['his_item_day']; break; case 'i': $item['date'] = $item['his_item_date']; break; } $history_item[] = $item; $all_history_item[] = $item; } $histories[$item_year] = $history_item; } $histories = array_filter($histories); ob_start(); include $history_skin_path . '/history.skin.php'; $content = ob_get_contents(); ob_end_clean(); return $content; }
function maj_v012_dist($version_installee, $version_cible) { // Correction de l'oubli des modifs creations depuis 1.04 if (upgrade_vers(1.204, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_articles ADD accepter_forum VARCHAR(3) NOT NULL"); spip_query("ALTER TABLE spip_forum ADD id_message bigint(21) NOT NULL"); spip_query("ALTER TABLE spip_forum ADD INDEX id_message (id_message)"); spip_query("ALTER TABLE spip_auteurs ADD en_ligne datetime DEFAULT '0000-00-00 00:00:00' NOT NULL"); spip_query("ALTER TABLE spip_auteurs ADD imessage VARCHAR(3) not null"); spip_query("ALTER TABLE spip_auteurs ADD messagerie VARCHAR(3) not null"); maj_version(1.204); } if (upgrade_vers(1.207, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_rubriques DROP INDEX id_rubrique"); spip_query("ALTER TABLE spip_rubriques ADD INDEX id_parent (id_parent)"); spip_query("ALTER TABLE spip_rubriques ADD statut VARCHAR(10) NOT NULL"); // Declencher le calcul des rubriques publiques include_spip('inc/rubriques'); calculer_rubriques(); maj_version(1.207); } if (upgrade_vers(1.208, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_auteurs_messages CHANGE forum vu CHAR(3) NOT NULL"); spip_query("UPDATE spip_auteurs_messages SET vu='oui'"); spip_query("UPDATE spip_auteurs_messages SET vu='non' WHERE statut='a'"); spip_query("ALTER TABLE spip_messages ADD id_auteur bigint(21) NOT NULL"); spip_query("ALTER TABLE spip_messages ADD INDEX id_auteur (id_auteur)"); $result = spip_query("SELECT id_auteur, id_message FROM spip_auteurs_messages WHERE statut='de'"); while ($row = sql_fetch($result)) { $id_auteur = $row['id_auteur']; $id_message = $row['id_message']; spip_query("UPDATE spip_messages SET id_auteur={$id_auteur} WHERE id_message={$id_message}"); } spip_query("ALTER TABLE spip_auteurs_messages DROP statut"); maj_version(1.208); } if (upgrade_vers(1.209, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_syndic ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_syndic_articles ADD maj TIMESTAMP"); spip_query("ALTER TABLE spip_messages ADD maj TIMESTAMP"); maj_version(1.209); } if (upgrade_vers(1.21, $version_installee, $version_cible)) { spip_query("ALTER TABLE spip_messages DROP page"); stripslashes_base('spip_articles', array('surtitre', 'titre', 'soustitre', 'descriptif', 'chapo', 'texte', 'ps')); stripslashes_base('spip_auteurs', array('nom', 'bio', 'nom_site')); stripslashes_base('spip_breves', array('titre', 'texte', 'lien_titre')); stripslashes_base('spip_forum', array('titre', 'texte', 'auteur', 'nom_site')); stripslashes_base('spip_messages', array('titre', 'texte')); stripslashes_base('spip_mots', array('type', 'titre', 'descriptif', 'texte')); stripslashes_base('spip_petitions', array('texte')); stripslashes_base('spip_rubriques', array('titre', 'descriptif', 'texte')); stripslashes_base('spip_signatures', array('nom_email', 'nom_site', 'message')); stripslashes_base('spip_syndic', array('nom_site', 'descriptif')); stripslashes_base('spip_syndic_articles', array('titre', 'lesauteurs')); maj_version(1.21); } }
function affiche_auteur_diff($auteur) { // Si c'est un nombre, c'est un auteur de la table spip_auteurs if ($auteur == intval($auteur) and $s = sql_query("SELECT * FROM spip_auteurs WHERE id_auteur=" . _q($auteur)) and $t = sql_fetch($s)) { return typo($t['nom']); } else { return $auteur; } }
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(); }