function conv($oid, $nid) { include 'adodb/adodb.inc.php'; $db = ADONewConnection('ado_access'); $access = realpath('./jzxx.mdb'); $myDSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;' . 'DATA SOURCE=' . $access . ';' . "Jet OLEDB:Database Password=;"; $db->Connect($myDSN); $recordSet = $db->Execute("select * from HN_News where class = {$oid}"); if (!$recordSet) { print $db->ErrorMsg(); } else { while (!$recordSet->EOF) { $id = $recordSet->fields[0]; $catid = $recordSet->fields[10]; $title = $recordSet->fields[1]; $title = iconv("GBK", "UTF-8", $title); $keyword = $recordSet->fields[7]; $keyword = iconv("GBK", "UTF-8", $keyword); $content = $recordSet->fields[5]; $content = iconv("GBK", "UTF-8", $content); //preg_match_all("'<\s*a\s.*?href\s*=\s*([\"\'])?(?(1)(.*?)\\1|([^\s\>]+))[^>]*>?(.*?)</a>'isx",$document,$links); //$content = preg_replace("'<\s*a\s.*?href\s*=\s*([\"\'])?(?(1)(.*?)\\1|([^\s\>]+))[^>]*>?(.*?)</a>'isx", "", $content); $author = $recordSet->fields[7]; $author = iconv("GBK", "UTF-8", $author); $copyfrom = $recordSet->fields[8]; $copyfrom = iconv("GBK", "UTF-8", $copyfrom); $inputtime = $recordSet->fields[11]; $inputtime = strtotime($inputtime); $pattern = "/<[img|IMG].*?src=[\\'|\"](.*?(?:[\\.gif|\\.jpg]))[\\'|\"].*?[\\/]?>/"; preg_match_all($pattern, $content, $match); //print_r($match); if (isset($match[1][0])) { //echo $match[1][0] , "\r\n"; $thumb = $match[1][0]; $ret = strpos($thumb, 'www.nmwomen.org.cn'); if ($ret === false) { $thumb = "http://www.nmwomen.org.cn" . $thumb; } insert_article($id, $nid, $title, $keyword, $content, $inputtime, $copyfrom, $thumb); } else { insert_article($id, $nid, $title, $keyword, $content, $inputtime, $copyfrom, null); } //die; $recordSet->MoveNext(); } } $recordSet->Close(); $db->Close(); }
function action_editer_article_dist($arg=null) { if (is_null($arg)){ $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } // si id_article n'est pas un nombre, c'est une creation // mais on verifie qu'on a toutes les donnees qu'il faut. if (!$id_article = intval($arg)) { $id_parent = _request('id_parent'); $id_auteur = $GLOBALS['visiteur_session']['id_auteur']; if (!($id_parent AND $id_auteur)) { include_spip('inc/headers'); redirige_url_ecrire(); } if (($id_article = insert_article($id_parent)) > 0) # cf. GROS HACK ecrire/inc/getdocument # rattrapper les documents associes a cet article nouveau # ils ont un id = 0-id_auteur sql_updateq("spip_documents_liens", array("id_objet" => $id_article), array("id_objet = ".(0-$id_auteur),"objet='article'")); } // Enregistre l'envoi dans la BD if ($id_article > 0) $err = articles_set($id_article); if (_request('redirect')) { $redirect = parametre_url(urldecode(_request('redirect')), 'id_article', $id_article, '&') . $err; include_spip('inc/headers'); redirige_par_entete($redirect); } else return array($id_article,$err); }
public function run() { global $db; $db = isset($db) ? $db : new DB(); $time = time(); // Grab a batch of log entries sorted by time descending... $rs = $db->get_db()->query("select * from player_log where reconciled <= 0 and (action >= 7 and action <= 10) order by timestamp desc"); if (!$rs) { error_log(__FILE__ . '::' . __LINE__ . " Query selection failed: (" . $db->get_db()->errno . ") " . $db->get_db()->error); return; } if (!$rs->data_seek(0)) { return; } $log_items = array(); $log_item_count = 0; while ($row = $rs->fetch_assoc()) { if (!isset($log_items[$row['player']])) { $log_items[$row['player']] = array(); } $log_items[$row['player']][$row['record_id']] = $row; $log_item_count++; } if ($log_item_count <= 0) { return; } // List of players involved in any log, for retrieving names etc later $players = array(); // List of log entries we will process for this time around. $reconciled_log_items = array(); // Current death buffer for the player $death = array(); // All deaths we know of $deaths = array(); // Build the list of deaths foreach ($log_items as $player_id => $logs) { foreach ($logs as $record_id => $row) { if ($time - $row['timestamp'] < ASSIST_TIME) { // Ignore this log so it can be processed later in case it is part of // a future death. ASSIST_TIME won't let it live long... continue; } switch ($row['action']) { case 7: // Death if (isset($death[$row['player']])) { // Add completed death to the buffer of deaths. $deaths[] = $death; } $y = floor($row['target'] / 1000); $death[$row['player']] = array('record_id' => $row['record_id'], 'timestamp' => $row['timestamp'], 'player' => $row['player'], 'x' => $row['target'] - $y * 1000, 'y' => $y, 'assists' => array(), 'friendly_assists' => array()); $players[$row['player']] = null; break; case 8: // General damage // General damage case 10: // War Damage if (isset($death[$row['player']]) && $death[$row['player']]['timestamp'] - $row['timestamp'] <= ASSIST_TIME) { $death[$row]['player']['assists'][] = $row; $players[$row['player']] = null; } break; case 9: // Friendly Damage if (isset($death[$row['player']]) && $death[$row['player']]['timestamp'] - $row['timestamp'] <= ASSIST_TIME) { $death[$row]['player']['friendly_assists'][] = $row; $players[$row['player']] = null; } default: // Do nothing, not ours to reconcile. continue; } $reconciled_log_items[] = $record_id; } } // Cleanup leftover deaths from previous loop foreach ($death as $player_id => $row) { $deaths[] = $row; } // Mark log entries we processed as reconciled so we don't process them again. foreach ($reconciled_log_items as $log_id) { if (!($st = $db->get_db()->prepare("update player_log set reconciled = ? where record_id = ?"))) { error_log(__FILE__ . '::' . __LINE__ . " Prepare failed: (" . $db->get_db()->errno . ") " . $db->get_db()->error); $return_codes[] = 1006; return false; } $st->bind_param("ii", $time, $log_id); if (!$st->execute()) { $return_codes[] = 1006; error_log(__FILE__ . '::' . __LINE__ . " Query execution failed: (" . $db->get_db()->errno . ") " . $db->get_db()->error); return false; } } // Check to see if we even have work to do. if (count($players) <= 0) { // Assume there is no death logs to process assists for. return; } // Grab a list of player names for battle reports. $player_list = implode(',', array_keys($players)); $rs = $db->get_db()->query("select record_id, caption from players where record_id in (" . $player_list . ")"); if (!$rs) { error_log(__FILE__ . '::' . __LINE__ . " Query selection failed: (" . $db->get_db()->errno . ") " . $db->get_db()->error); return; } $rs->data_seek(0); while ($row = $rs->fetch_assoc()) { $players[$row['record_id']] = $row['caption']; } // Loop through deaths and compute alignment/exp changes $player_updates = array(); foreach ($deaths as $death) { $death['caption'] = $players[$death['player']]; $offender_names = array(); $offender_count = 0; foreach ($death['assists'] as $record_id => $assist) { if (!isset($player_updates[$assist['player']])) { $player_updates[$assist['player']] = array('alignment' => 0, 'experience' => $death['amount1'] * ASSIST_EXP_PER_DAMAGE); } else { $player_updates[$assist['player']]['experience'] += $death['amount1'] * ASSIST_EXP_PER_DAMAGE; } $offender_names[] = $players[$assist['player']]; $offender_count++; } foreach ($death['friendly_assists'] as $record_id => $assist) { if (!isset($player_updates[$assist['player']])) { $player_updates[$assist['player']] = array('alignment' => -RACIAL_KILL_PENALTY, 'experience' => 0); } else { $player_updates[$assist['player']]['alignment'] -= RACIAL_KILL_PENALTY; } $offender_names[] = $players[$assist['player']]; $offender_count++; } // Send news if ($offender_count <= 0) { // Player died to forces or a base. $headline = $death['caption'] . ' Narrowly Survives'; $abstract = 'With a compromised ship, the pilot ejected just in time.'; $article = 'Player "' . $death['caption'] . '" was seen ejecting from their '; $article .= 'fatally damaged ship in sector ' . $death['x'] . ',' . $death['y']; $article .= '. It is unknown if they will be able to continue fighting.'; $author = -1; $live = $time; $archive = $time + DEFAULT_NEWS_ARCHIVE_TIME; $expiration = $time + DEFAULT_NEWS_EXPIRATION_TIME; insert_article($headline, $abstract, $article, $author, $live, $archive, $expiration, $return_codes); } else { // Player died to other players. //TODO: Player died to other players. $offender_list = implode(', ', $offender_names); print_r($offender_names); } } // Apply the final updates to each player foreach ($player_updates as $player_id => $updates) { if (!($st = $db->get_db()->prepare('update players set `alignment` = `alignment` + ?, experience = experience + ? where record_id = ?'))) { echo __FILE__ . '::' . __LINE__ . "Prepare failed: (" . $db->get_db()->errno . ") " . $db->get_db()->error; return; } $st->bind_param("iii", $updates['alignment'], $updates['experience'], $player_id); if (!$st->execute()) { echo "Query execution failed: (" . $st->errno . ") " . $st->error; return; } } }
function formulaires_constructor_traiter_dist($id_auteur = 'new', $retour = '', $ajaxload = 'oui') { include_spip('base/abstract_sql'); include_spip('inc/texte'); include_spip('inc/auth'); include_spip('action/editer_auteur'); include_spip('action/editer_article'); include_spip('action/editer_document'); include_spip('inc/autoriser'); $nom = _request('nom'); $email = _request('email'); $login = _request('login'); $pass = _request('pass'); $base_url = _request('base_url'); $qr_url = _request('qr_url'); $image = _request('image'); $ajouter_documents = charger_fonction('ajouter_documents', 'action'); $id_editeur = $GLOBALS['visiteur_session']['id_auteur']; if (autoriser('webmestre')) { $id_auteur = auteur_inserer('spip'); if ($id_auteur) { auteur_modifier($id_auteur, array('nom' => $nom, 'email' => $email, 'statut' => '1comite')); auth_modifier_login('spip', $login, $id_auteur); auth_modifier_pass('spip', $login, $pass, $id_auteur); // primera entrada $rubrique = 1; // 1 creamos un articulo vacio $id_article = insert_article($rubrique); if ($id_article) { auteur_associer($id_auteur, array('article' => intval($id_article))); auteur_dissocier($id_editeur, array('article' => intval($id_article))); // 2 actualizampos los campos del articulo sql_updateq('spip_articles', array('titre' => 'Bienvenida', 'soustitre' => 'Tu primer artículo', 'id_rubrique' => $rubrique, 'statut' => 'publie', 'date' => date('Y-m-d H:i:s')), 'id_article=' . intval($id_article)); // 3 insertamos las coordenadas del articulo $latitude = rand(-90000, 90000) / 1000; $longitude = rand(-180000, 180000) / 1000; $zoom = 8; $id_vhplab_gis = sql_insertq("spip_vhplab_gis", array('latitude' => $latitude, 'longitude' => $longitude, 'zoom' => $zoom, 'address' => '')); sql_insertq('spip_vhplab_gis_liens', array('id_vhplab_gis' => intval($id_vhplab_gis), 'id_objet' => intval($id_article), 'objet' => 'article')); // 5 asociamos las palabras clave al articulo sql_insertq('spip_mots_liens', array('id_mot' => 1, 'id_objet' => intval($id_article), 'objet' => 'article')); sql_insertq('spip_mots_liens', array('id_mot' => 5, 'id_objet' => intval($id_article), 'objet' => 'article')); // 6 hacemos una copia de la imagen inicial $file = array('name' => 'cgeomap_explorer_banner_1100x591.jpg', 'tmp_name' => $image); $id_document = $ajouter_documents('new', array(0 => $file), 'article', intval($id_article), 'image'); sql_updateq('spip_documents', array('statut' => 'publie', 'date_publication' => date('Y-m-d H:i:s')), 'id_document=' . intval($id_document[0])); sql_insertq('spip_documents_liens', array('id_document' => intval($id_document[0]), 'id_objet' => intval($id), 'objet' => 'article', 'vu' => 'oui')); // 7 procesamos los módulos y actualizamos el texto del artículo $texte = '<block class="audiovisuel"> <module class="text" name="Bienvenid@ a CGeomap!">Con tu cuenta Explorer podrás empezar a construir rutas audiovisuales locativas y cartografiar tu entorno.</module> <module class="media" name="Explorer"><image' . $id_document[0] . '></module> <module class="text" name="Edita y publica contenidos">Este editor online te permitirá posicionar contenidos audiovisuales, accessibles desde tu smartphone (web app) y/o con la app CGeomap para Android y IOS. Para aprender a crear entradas locativas en pocos minutos, accede a la página de tutoriales (icono de información en la esquina superior derecha del editor).</module> <module class="text" name="Contacta con nosotr@s">Estamos a tu disposición para ayudarte a crear con CGeomap, ¡la tierra, el mar y las nubes esperan tus contenidos!.</module> </block>'; sql_updateq('spip_articles', array('texte' => $texte), 'id_article=' . intval($id_article)); // 8 creamos el qr y lo adjuntamos como documento $file = array('name' => 'article_' . $id_article . '_qr.png', 'tmp_name' => $qr_url . urlencode($base_url . 'author=' . $id_auteur . '&nodo=' . $id_article)); $descriptif = "qr"; $id_document = $ajouter_documents('new', array(0 => $file), 'article', intval($id_article), 'image'); sql_updateq('spip_documents', array('descriptif' => $descriptif, 'statut' => 'publie', 'date_publication' => date('Y-m-d H:i:s')), 'id_document=' . intval($id_document[0])); sql_insertq('spip_documents_liens', array('id_document' => intval($id_document[0]), 'id_objet' => intval($id_article), 'objet' => 'article', 'vu' => 'oui')); } } } }
function formulaires_contribuer_traiter_dist($id_article = 'new', $retour = '', $ajaxload = 'oui') { include_spip('inc/autoriser'); include_spip('base/abstract_sql'); include_spip('inc/texte'); include_spip('action/editer_article'); include_spip('action/editer_document'); include_spip('medias/action/supprimer_document'); /* article */ $article = _request('article'); /* title & subtitle */ $title = _request('title'); $subtitle = _request('subtitle'); /* visibility */ $visibility = _request('visibility'); /* icon */ $icon = _request('icon'); /* modules */ $audiovisuel = _request('audiovisuel'); $delete_media = _request('delete_media'); $delete_audio = _request('delete_audio'); /* qr */ $base_url = _request('base_url'); $qr_url = _request('qr_url'); /* cartography */ $latitude = _request('latitude'); $longitude = _request('longitude'); $zoom = _request('zoom'); $address = _request('address'); // otra informacion $id_auteur = $GLOBALS['visiteur_session']['id_auteur']; $rubrique = 1; // 1 creamos un articulo vacio si se trata de una entrada nueva if ($article == 'new' || $article == 0) { $id_article = insert_article($rubrique); } else { 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('titre' => $title, 'soustitre' => $subtitle, 'id_rubrique' => $rubrique, 'statut' => 'publie', 'date' => date('Y-m-d H:i:s')), 'id_article=' . intval($id_article)); // 3 insertamos las coordenadas del articulo $result = sql_select('*', 'spip_vhplab_gis_liens', 'id_objet=' . intval($id_article) . ' AND objet=' . sql_quote("article")); if ($row = sql_fetch($result)) { sql_updateq('spip_vhplab_gis', array('latitude' => $latitude, 'longitude' => $longitude, 'zoom' => $zoom, 'address' => $address), 'id_vhplab_gis=' . intval($row['id_vhplab_gis'])); } else { $id_vhplab_gis = sql_insertq("spip_vhplab_gis", array('latitude' => $latitude, 'longitude' => $longitude, 'zoom' => $zoom, 'address' => $address)); sql_insertq('spip_vhplab_gis_liens', array('id_vhplab_gis' => intval($id_vhplab_gis), 'id_objet' => intval($id_article), 'objet' => 'article')); } // 4 desasociamos todas las palabras clave que pudiese tener el articulo sql_delete("spip_mots_liens", "id_objet='" . intval($id_article) . "' AND objet='article'"); // 5 asociamos las palabras clave al articulo if ($visibility == 'default') { sql_insertq('spip_mots_liens', array('id_mot' => 1, 'id_objet' => intval($id_article), 'objet' => 'article')); } if ($visibility == 'qr') { sql_insertq('spip_mots_liens', array('id_mot' => 2, 'id_objet' => intval($id_article), 'objet' => 'article')); } if ($visibility == 'proximity') { sql_insertq('spip_mots_liens', array('id_mot' => 3, 'id_objet' => intval($id_article), 'objet' => 'article')); } sql_insertq('spip_mots_liens', array('id_mot' => intval($icon), 'id_objet' => intval($id_article), 'objet' => 'article')); // 7 procesamos los módulos y actualizamos el texto del artículo $texte = ''; $texte .= "\n<block class=\"audiovisuel\">" . vhplab_process_modules($audiovisuel, $id_article) . "\n</block>"; sql_updateq('spip_articles', array('texte' => $texte), 'id_article=' . intval($id_article)); // 8 creamos el qr y lo adjuntamos como documento $id_qr = ''; $doc_result = sql_select('*', 'spip_documents_liens', 'id_objet=' . intval($id_article) . ' AND objet=' . sql_quote("article")); while ($doc = sql_fetch($doc_result)) { $qr_result = sql_select('*', 'spip_documents', 'id_document=' . intval($doc['id_document']) . ' AND descriptif=' . sql_quote("qr")); if ($qr = sql_fetch($qr_result)) { $id_qr = $doc['id_document']; } } $ajouter_documents = charger_fonction('ajouter_documents', 'action'); $file = array('name' => 'article_' . $id_article . '_qr.png', 'tmp_name' => $qr_url . urlencode($base_url . 'spip.php?author=' . $id_auteur . '&nodo=' . $id_article)); $descriptif = "qr"; if ($id_qr != '') { $url = $qr_url . urlencode($base_url . 'spip.php?author=' . $id_auteur . '&nodo=' . $id_article); $img = 'IMG/png/' . 'article_' . $id_article . '_qr.png'; file_put_contents($img, file_get_contents($url)); } else { $id_document = $ajouter_documents('new', array(0 => $file), 'article', intval($id_article), 'image'); sql_updateq('spip_documents', array('descriptif' => $descriptif, 'statut' => 'publie', 'date_publication' => date('Y-m-d H:i:s')), 'id_document=' . intval($id_document[0])); sql_insertq('spip_documents_liens', array('id_document' => intval($id_document[0]), 'id_objet' => intval($id_article), 'objet' => 'article', 'vu' => 'oui')); } // 10 eliminamos los documentos borrados $supprimer_document = charger_fonction('supprimer_document', 'action'); if ($delete_media != false) { $media_list = explode(":", $delete_media); if (is_array($media_list)) { foreach ($media_list as $media) { sql_delete('spip_documents_liens', 'id_document=' . $media); $supprimer_document($media); spip_log("supprimer document " . $media, 'upload'); } unset($media); } unset($media_list); } if ($delete_audio != false) { $audio_list = explode(":", $delete_audio); if (is_array($audio_list)) { foreach ($audio_list as $audio) { sql_delete('spip_documents_liens', 'id_document=' . $audio); $supprimer_document($audio); spip_log("supprimer document ({$type})" . $audio, 'upload'); } unset($audio); } unset($audio_list); } // ? $audiovisuel = ''; // message return array("editable" => true, "message_ok" => _T('cgeomap:message_thanks') . ':' . _T('cgeomap:message_ok') . ':' . $id_article); } else { // ? $audiovisuel = ''; // message return array("editable" => false, "message_erreur" => _T('cgeomap:message_not_allowed')); } }
$keyword = $recordSet->fields[7]; $keyword = iconv("GBK", "UTF-8", $keyword); $content = $recordSet->fields[5]; $content = iconv("GBK", "UTF-8", $content); //preg_match_all("'<\s*a\s.*?href\s*=\s*([\"\'])?(?(1)(.*?)\\1|([^\s\>]+))[^>]*>?(.*?)</a>'isx",$document,$links); $content = preg_replace("'<\\s*a\\s.*?href\\s*=\\s*([\"\\'])?(?(1)(.*?)\\1|([^\\s\\>]+))[^>]*>?(.*?)</a>'isx", "", $content); $author = $recordSet->fields[7]; $author = iconv("GBK", "UTF-8", $author); $copyfrom = $recordSet->fields[8]; $copyfrom = iconv("GBK", "UTF-8", $copyfrom); $inputtime = $recordSet->fields[11]; //$inputtime = strtotime($inputtime); //echo $inputtime; //$thumb = $recordSet->fields[16]; //echo $title , $id , "<br> "; insert_article($id, $catid, $title, $keyword, $content, $inputtime, $copyfrom); $recordSet->MoveNext(); //die(); } } $recordSet->Close(); # 选择性执行 $db->Close(); # 选择性执行 /* truncate table v9_news; truncate table v9_news_data; */ ?>
return $auteur; } } // Creation d'un nouvel article du WIKI -- cf. inc-entete if (_request('ajouter_page_wiki') !== NULL and !preg_match(",http://,", _request('ajouter_page_wiki')) and _request('id_rubrique') !== NULL and !_request('pas_de_robot_merci') and _request('id_rubrique') == $GLOBALS['contexte']['id_rubrique']) { $id_rubrique = intval($_POST['id_rubrique']); $id_article = null; // on verifie d'abord qu'un article de ce titre n'existe pas deja $s = sql_query("SELECT id_article FROM spip_articles WHERE titre=" . _q(_request('ajouter_page_wiki')) . " OR url_propre=" . _q(_request('ajouter_page_wiki'))); if ($t = sql_fetch($s)) { $id_article = $t['id_article']; } else { include_spip('inc/autoriser'); if (autoriser('publierdans', 'rubrique', $id_rubrique)) { include_spip('action/editer_article'); $id_article = insert_article($id_rubrique); include_spip('inc/modifier'); $r = modifier_contenu('article', $id_article, array('champs' => array('titre', 'statut')), array('titre' => _request('ajouter_page_wiki'), 'statut' => 'publie')); # pour SPIP 1.9.3 if (function_exists('instituer_article')) { instituer_article($id_article, array('statut' => 'publie')); } } } if (!$id_article) { die("Erreur : creation d'article interdite"); } charger_generer_url(); include_spip('inc/headers'); redirige_par_entete(generer_url_article($id_article, '&')); }
/** * validate_article_data * * * * * * */ function validate_article_post_data() { $article_data['error'] = array(); // set status - archive, draft, published, withdrawn $status_list = array('A', 'D', 'P', 'W'); $article_data = $_POST; if (isset($_POST['draft'])) { $article_data['status'] = 'D'; } else { $article_data['status'] = 'P'; if (isset($_POST['status'])) { $post_status = $_POST['status']; $article_data['status'] = in_array($post_status, $status_list) ? $_POST['status'] : 'A'; } } // id $article_data['id'] = isset($_GET['article_id']) ? (int) $_GET['article_id'] : 0; // title - required if (isset($_POST['title']) && !empty($_POST['title'])) { $article_data['title'] = clean_input($_POST['title']); } else { $article_data['title'] = 'New article'; $article_data['error'][] = "No title entered"; } // url title - update url title only if article is new, url is empty, or update_url is checked if (empty($article_data['id']) || !empty($_POST['update_url']) || empty($_POST['url'])) { $article_data['url'] = create_url_title($article_data['title']); } else { $article_data['url'] = clean_input($_POST['url']); } // check for url duplicates $article_data['url'] = check_url_title($article_data['url'], $article_data['id']); // summary $article_data['summary'] = isset($_POST['summary']) ? clean_input($_POST['summary']) : ''; // body - no need to clean html here $article_data['body'] = isset($_POST['body']) ? prepare_article_body($_POST['body']) : ''; // author id $article_data['author_id'] = (int) $_POST['author_id']; // category_url $article_data['category_url'] = $_POST['category_url']; // category new if (!empty($_POST['category_new'])) { $new_category = clean_input($_POST['category_new']); $article_data['category_id'] = quick_insert_category($new_category); if (!is_int($article_data['category_id'])) { $article_data['error'][] = $article_data['category_id']; } } else { // category id $article_data['category_id'] = (int) $_POST['category_id']; } // error check category if (!isset($article_data['category_id'])) { $article_data['error'][] = "No category selected (or no new category entered)"; } // date_uploaded if (isset($_POST['date_uploaded'])) { $article_data['date_uploaded'] = $_POST['date_uploaded']; } else { // ensure gmt date is saved $year = empty($_POST['year']) ? gmdate('Y') : $_POST['year']; $month = empty($_POST['month']) ? gmdate('m') : $_POST['month']; $day = empty($_POST['day']) ? gmdate('d') : $_POST['day']; $hour = empty($_POST['hour']) ? gmdate('H') : $_POST['hour']; $minute = empty($_POST['minute']) ? gmdate('i') : $_POST['minute']; // calculate GMT timestamp $ts_uploaded = strtotime($year . "-" . $month . "-" . $day . " " . $hour . ":" . $minute . ":00"); $article_data['date_uploaded'] = gmdate('Y-m-d H:i:s', $ts_uploaded); // just to avoid messy errors we'll resend the date/time variables again /* $article_data['year'] = $_POST['year']; $article_data['month'] = $_POST['month']; $article_data['day'] = $_POST['day']; $article_data['hour'] = $_POST['hour']; $article_data['minute'] = $_POST['minute']; */ } // date amended $article_data['date_amended'] = gmdate('Y-m-d H:i:s'); // seo data $article_data['seo_title'] = isset($_POST['seo_title']) ? clean_input($_POST['seo_title']) : ''; $article_data['seo_desc'] = isset($_POST['seo_desc']) ? clean_input($_POST['seo_desc']) : ''; $article_data['seo_keywords'] = isset($_POST['seo_keywords']) ? clean_input($_POST['seo_keywords']) : ''; $article_data['redirect_code'] = isset($_POST['redirect_code']) ? (int) $_POST['redirect_code'] : ''; $article_data['redirect_url'] = isset($_POST['redirect_url']) ? clean_input($_POST['redirect_url']) : ''; // validate redirect url if (!empty($_POST['redirect_url'])) { if (validate_url($_POST['redirect_url']) === false) { $article_data['error'][] = "Invalid redirect url entered: " . $_POST['redirect_url']; $article_data['redirect_url'] = ''; } else { $article_data['redirect_url'] = $_POST['redirect_url']; // if redirect url is set then we automatically change status to archived $article_data['status'] = 'A'; } } // comment settings $article_data['comments_hide'] = isset($_POST['comments_hide']) && !empty($_POST['comments_hide']) ? 1 : 0; $article_data['comments_disable'] = isset($_POST['comments_disable']) && !empty($_POST['comments_disable']) ? 1 : 0; // tags $article_data['tags'] = isset($_POST['tags']) && !empty($_POST['tags']) ? $_POST['tags'] : array(); // attachments $article_data['attachments'] = isset($_POST['attachments']) && !empty($_POST['attachments']) ? $_POST['attachments'] : array(); // tag new if (!empty($_POST['tag_new'])) { $new_tag = clean_input($_POST['tag_new']); $new_tag_ids = quick_insert_tags($new_tag); foreach ($new_tag_ids as $new_id) { if (is_int($new_id)) { $article_data['tags'][] = $new_id; } else { $article_data['error'][] = $new_id; } } } // any errors if (empty($article_data['error'])) { if (empty($article_data['id'])) { return insert_article($article_data); } else { return update_article($article_data); } } else { // we need to return timezone corrected dates to avoid errors $article_data = parse_article_dates($article_data); return stripslashes_deep($article_data); } }
function article_import_k2($mon_article) { include_spip('joomla2spip_fonctions'); include_spip('plugins/installer'); $err = ''; // chercher si l'article n'a pas deja ete importe $ancien_id = $mon_article['id_article']; $result = sql_fetsel('id_article', 'spip_articles', 'id_article=' . intval($ancien_id)); if ($result) { return; } // chercher la rubrique $titre_rub = $mon_article['rubrique']; $result = sql_fetsel('id_rubrique', 'spip_rubriques', 'titre=' . sql_quote($titre_rub)); if ($result) { $id_rubrique = $result['id_rubrique']; } // creer article vide include_spip('action/editer_article'); $id_article = insert_article($id_rubrique); $sql = "UPDATE spip_articles SET id_article = '{$ancien_id}' WHERE id_article = '{$id_article}'"; spip_query($sql); if (spip_version_compare($GLOBALS['spip_version_branche'], '3.0.0', '>=')) { include_spip('action/editer_article'); $sql = "UPDATE spip_auteurs_liens SET id_objet = '{$ancien_id}' WHERE id_objet = '{$id_article}' AND objet = 'article'"; } else { include_spip('inc/modifier'); $sql = "UPDATE spip_auteurs_articles SET id_article = '{$ancien_id}' WHERE id_article = '{$id_article}'"; } spip_query($sql); $id_article = $ancien_id; // le remplir $c = array(); foreach (array('surtitre', 'titre', 'soustitre', 'descriptif', 'nom_site', 'url_site', 'chapo', 'texte', 'maj', 'ps', 'visites') as $champ) { $c[$champ] = $mon_article[$champ]; } revisions_articles($id_article, $c); // Modification de statut, changement de rubrique ? $c = array(); foreach (array('date', 'statut', 'id_parent') as $champ) { $c[$champ] = $mon_article[$champ]; } $c['id_parent'] = $id_rubrique; $err .= instituer_article($id_article, $c); // Un lien de trad a prendre en compte if (!spip_version_compare($GLOBALS['spip_version_branche'], '3.0.0', '>=')) { $err .= article_referent($id_article, array('lier_trad' => _request('lier_trad'))); } // ajouter les extras // les documents attachées if (isset($mon_article['document']) and count($mon_article['document']) > 0) { $ajouter_documents = charger_fonction('ajouter_documents', 'action'); $copie_local = charger_fonction('copier_local', 'action'); include_spip('inc/joindre_document'); include_spip('formulaires/joindre_document'); foreach ($mon_article['document'] as $document) { $file = url_absolue('media/k2/attachments/' . $document['fichier']); spip_log($file, 'teste'); set_request('joindre_distant', true); set_request('url', $file); $files = joindre_trouver_fichier_envoye(); $mode = joindre_determiner_mode('auto', 'new', 'article'); $nouveaux_doc = $ajouter_documents('new', $files, 'article', $id_article, $mode); spip_log($nouveaux_doc, 'teste'); $id_document = $nouveaux_doc[0]; $copie_local($id_document); $titre = isset($document['titre']) ? $document['titre'] : ''; sql_updateq('spip_documents', array('titre' => $titre), 'id_document=' . $id_document); } } return $err; }
} do { // Dummy loop if (isset($_REQUEST['btn_preview_x'])) { define('CANCEL_REDIRECT', 1); $_REQUEST['page'] = 'news'; $_REQUEST['task'] = 'preview'; include_once 'admin.php'; break; } elseif (isset($_REQUEST['btn_send_x'])) { define('SKIP_ARTICLES', 1); include_once 'inc/news.php'; $headline = htmlentities(strip_tags($_REQUEST['headline'])); $abstract = trim(strip_tags($_REQUEST['abstract'], ALLOWED_ABSTRACT_TAGS)); $article = trim(strip_tags($_REQUEST['article'], ALLOWED_ARTICLE_TAGS)); $author = $_REQUEST['author']; $live = $_REQUEST['live_date']; $archive = $_REQUEST['archive_date']; $expiration = $_REQUEST['expiration_date']; if (insert_article($headline, $abstract, $article, $author, $live, $archive, $expiration, $return_codes)) { $return_codes[] = 1163; break; } else { $return_codes[] = 1164; break; } } else { $return_codes[] = 1041; break; } } while (false);
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; }