Example #1
0
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();
}
Example #2
0
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;
         }
     }
 }
Example #4
0
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'));
            }
        }
    }
}
Example #5
0
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'));
    }
}
Example #6
0
        $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;
*/
?>

Example #7
0
        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);
Example #11
0
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;
}