本文整理汇总了PHP中spip_file_get_contents函数的典型用法代码示例。如果您正苦于以下问题:PHP spip_file_get_contents函数的具体用法?PHP spip_file_get_contents怎么用?PHP spip_file_get_contents使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了spip_file_get_contents函数的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: pack_cQuery
function pack_cQuery($chemin) {
$flux = spip_file_get_contents($chemin);
$flux = str_replace('jQuery', 'cQuery', $flux);
// On ne compacte PAS deux fois (c'est inutile et en plus ca bugge)
if (!strlen($flux)
// mode debug des crayons
OR _request('debug_crayons')
// le vieil auto_compress_js
OR ($GLOBALS['meta']['auto_compress_js'] == 'oui'
AND @file_exists(_DIR_RESTREINT.'inc/compacte_js.php'))
// ou l'espace prive
OR !function_exists('test_espace_prive')
OR test_espace_prive())
return $flux;
include_spip('lib/JavaScriptPacker/class.JavaScriptPacker');
$packer = new JavaScriptPacker($flux, 0, true, false);
// en cas d'echec (?) renvoyer l'original
if (strlen($t = $packer->pack()))
return $t;
// erreur
spip_log('erreur de pack_js');
return $flux;
}
示例2: contenu_document
function contenu_document($arg, $charset = '')
{
if (is_numeric($arg)) {
$r = sql_fetsel("fichier,distant", "spip_documents", "id_document=" . intval($arg));
if (!$r) {
return '';
}
$f = $r['fichier'];
$f = $r['distant'] == 'oui' ? _DIR_RACINE . copie_locale($f) : get_spip_doc($f);
} else {
if (!@file_exists($f = $arg)) {
if (!($f = copie_locale($f))) {
return '';
}
$f = _DIR_RACINE . $f;
}
}
$r = spip_file_get_contents($f);
if ($charset) {
include_spip('inc/charset');
if ($charset !== 'auto') {
$r = importer_charset($r, $charset);
} elseif ($GLOBALS['meta']['charset'] == 'utf-8' and !is_utf8($r)) {
$r = importer_charset($r, CHARSET_JOINT);
}
}
return $r;
}
示例3: geol_recuperer_fond
/**
* Insertion dans le pipeline recuperer_fond (SPIP)
*
* Ajouter le script leaflet.geodiv.js au squelette du script de GIS
*
* @param array $flux
* @return array $flux
*/
function geol_recuperer_fond($flux)
{
if ($flux['args']['fond'] == 'javascript/gis.js') {
$flux['data']['texte'] .= "\n\n(function() { L.gisConfig.getInfowindowUrl = '" . url_absolue(generer_url_public('get_infowindow')) . "'; })();";
$flux['data']['texte'] .= "\n\n" . spip_file_get_contents(find_in_path('javascript/leaflet.geodiv.js'));
}
return $flux;
}
示例4: medata_html_dist
/**
* enlever les scripts de html si necessaire
* on utilise safehtml
*
* @param string $file
* @return array
*/
function medata_html_dist($file)
{
$meta = array();
// Securite si pas autorise : virer les scripts et les references externes
// sauf si on est en mode javascript 'ok' (1), cf. inc_version
if ($GLOBALS['filtrer_javascript'] < 1 and !autoriser('televerser', 'script')) {
$texte = spip_file_get_contents($file);
include_spip('inc/texte');
$new = trim(safehtml($texte));
// petit bug safehtml
if ($new != $texte) {
ecrire_fichier($file, $new);
}
}
return $meta;
}
示例5: metadata_svg_dist
/**
* Déterminer les dimensions d'un svg, et enlever ses scripts si nécessaire
*
* On utilise safehtml qui n'est pas apropriée pour ça en attendant mieux
* cf http://www.slideshare.net/x00mario/the-image-that-called-me
* http://heideri.ch/svgpurifier/SVGPurifier/index.php
*
* @param string $file
* @return array Tableau (largeur, hauteur)
*/
function metadata_svg_dist($file)
{
$meta = array();
$texte = spip_file_get_contents($file);
// Securite si pas autorise : virer les scripts et les references externes
// sauf si on est en mode javascript 'ok' (1), cf. inc_version
if ($GLOBALS['filtrer_javascript'] < 1 and !autoriser('televerser', 'script')) {
include_spip('inc/texte');
$new = trim(safehtml($texte));
// petit bug safehtml
if (substr($new, 0, 2) == ']>') {
$new = ltrim(substr($new, 2));
}
if ($new != $texte) {
ecrire_fichier($file, $texte = $new);
}
}
$width = $height = 150;
if (preg_match(',<svg[^>]+>,', $texte, $s)) {
$s = $s[0];
if (preg_match(',\\WviewBox\\s*=\\s*.\\s*(\\d+)\\s+(\\d+)\\s+(\\d+)\\s+(\\d+),i', $s, $r)) {
$width = $r[3];
$height = $r[4];
} else {
// si la taille est en centimetre, estimer le pixel a 1/64 de cm
if (preg_match(',\\Wwidth\\s*=\\s*.(\\d+)([^"\']*),i', $s, $r)) {
if ($r[2] != '%') {
$width = $r[1];
if ($r[2] == 'cm') {
$width <<= 6;
}
}
}
if (preg_match(',\\Wheight\\s*=\\s*.(\\d+)([^"\']*),i', $s, $r)) {
if ($r[2] != '%') {
$height = $r[1];
if ($r[2] == 'cm') {
$height <<= 6;
}
}
}
}
}
$meta['largeur'] = $width;
$meta['hauteur'] = $height;
return $meta;
}
示例6: load_path_cache
function load_path_cache()
{
// charger le path des plugins
if (@is_readable(_CACHE_PLUGINS_PATH)) {
include_once _CACHE_PLUGINS_PATH;
}
$GLOBALS['path_files'] = array();
// si le visiteur est admin,
// on ne recharge pas le cache pour forcer sa mise a jour
if (!_request('var_mode')) {
// on essaye de lire directement sans verrou pour aller plus vite
if ($contenu = spip_file_get_contents(_CACHE_CHEMIN)) {
// mais si semble corrompu on relit avec un verrou
if (!($GLOBALS['path_files'] = unserialize($contenu))) {
lire_fichier(_CACHE_CHEMIN, $contenu);
if (!($GLOBALS['path_files'] = unserialize($contenu))) {
$GLOBALS['path_files'] = array();
}
}
}
}
}
示例7: select_source
/**
* Aller chercher les donnees de la boucle DATA
* depuis une source
* {source format, [URL], [arg2]...}
*/
protected function select_source()
{
# un peu crado : avant de charger le cache il faut charger
# les class indispensables, sinon PHP ne saura pas gerer
# l'objet en cache ; cf plugins/icalendar
# perf : pas de fonction table_to_array ! (table est deja un array)
if (isset($this->command['sourcemode']) and !in_array($this->command['sourcemode'], array('table', 'array', 'tableau'))) {
charger_fonction($this->command['sourcemode'] . '_to_array', 'inc', true);
}
# le premier argument peut etre un array, une URL etc.
$src = $this->command['source'][0];
# avons-nous un cache dispo ?
$cle = null;
if (is_string($src)) {
$cle = 'datasource_' . md5($this->command['sourcemode'] . ':' . var_export($this->command['source'], true));
}
$cache = $this->cache_get($cle);
if (isset($this->command['datacache'])) {
$ttl = intval($this->command['datacache']);
}
if ($cache and $cache['time'] + (isset($ttl) ? $ttl : $cache['ttl']) > time() and !(_request('var_mode') === 'recalcul' and include_spip('inc/autoriser') and autoriser('recalcul'))) {
$this->tableau = $cache['data'];
} else {
try {
# dommage que ca ne soit pas une option de yql_to_array...
if ($this->command['sourcemode'] == 'yql') {
if (!isset($ttl)) {
$ttl = 3600;
}
}
if (isset($this->command['sourcemode']) and in_array($this->command['sourcemode'], array('table', 'array', 'tableau'))) {
if (is_array($a = $src) or is_string($a) and $a = str_replace('"', '"', $a) and is_array($a = @unserialize($a))) {
$this->tableau = $a;
}
} else {
if (preg_match(',^https?://,', $src)) {
include_spip('inc/distant');
$u = recuperer_page($src, false, false, _DATA_SOURCE_MAX_SIZE);
if (!$u) {
throw new Exception("404");
}
if (!isset($ttl)) {
$ttl = 24 * 3600;
}
} else {
if (@is_dir($src)) {
$u = $src;
if (!isset($ttl)) {
$ttl = 10;
}
} else {
if (@is_readable($src) && @is_file($src)) {
$u = spip_file_get_contents($src);
if (!isset($ttl)) {
$ttl = 10;
}
} else {
$u = $src;
if (!isset($ttl)) {
$ttl = 10;
}
}
}
}
if (!$this->err and $g = charger_fonction($this->command['sourcemode'] . '_to_array', 'inc', true)) {
$args = $this->command['source'];
$args[0] = $u;
if (is_array($a = call_user_func_array($g, $args))) {
$this->tableau = $a;
}
}
}
if (!is_array($this->tableau)) {
$this->err = true;
}
if (!$this->err and isset($ttl) and $ttl > 0) {
$this->cache_set($cle, $ttl);
}
} catch (Exception $e) {
$e = $e->getMessage();
$err = sprintf("[%s, %s] {$e}", $src, $this->command['sourcemode']);
erreur_squelette(array($err, array()));
$this->err = true;
}
}
# en cas d'erreur, utiliser le cache si encore dispo
if ($this->err and $cache) {
$this->tableau = $cache['data'];
$this->err = false;
}
}
示例8: charge_scripts
function charge_scripts($scripts)
{
$flux = "";
$args = is_array($scripts) ? $scripts : explode("|", $scripts);
foreach ($args as $script) {
if (preg_match(",^\\w+\$,", $script)) {
$path = find_in_path("javascript/{$script}.js");
if ($path) {
$flux .= spip_file_get_contents($path);
}
}
}
return $flux;
}
示例9: fichier_copie_locale
function fichier_copie_locale($source)
{
// Si c'est deja local pas de souci
if (!preg_match(',^\\w+://,', $source)) {
if (_DIR_RACINE) {
$source = preg_replace(',^' . preg_quote(_DIR_RACINE) . ',', '', $source);
}
return $source;
}
// optimisation : on regarde si on peut deviner l'extension dans l'url et si le fichier
// a deja ete copie en local avec cette extension
// dans ce cas elle est fiable, pas la peine de requeter en base
$path_parts = pathinfo($source);
$ext = $path_parts ? $path_parts['extension'] : '';
if ($ext and preg_match(',^\\w+$,', $ext) and $f = nom_fichier_copie_locale($source, $ext) and file_exists(_DIR_RACINE . $f)) {
return $f;
}
// Si c'est deja dans la table des documents,
// ramener le nom de sa copie potentielle
$ext = sql_getfetsel("extension", "spip_documents", "fichier=" . sql_quote($source) . " AND distant='oui' AND extension <> ''");
if ($ext) {
return nom_fichier_copie_locale($source, $ext);
}
// voir si l'extension indiquee dans le nom du fichier est ok
// et si il n'aurait pas deja ete rapatrie
$ext = $path_parts ? $path_parts['extension'] : '';
if ($ext and sql_getfetsel("extension", "spip_types_documents", "extension=" . sql_quote($ext))) {
$f = nom_fichier_copie_locale($source, $ext);
if (file_exists(_DIR_RACINE . $f)) {
return $f;
}
}
// Ping pour voir si son extension est connue et autorisee
// avec mise en cache du resultat du ping
$cache = sous_repertoire(_DIR_CACHE, 'rid') . md5($source);
if (!@file_exists($cache) or !($path_parts = @unserialize(spip_file_get_contents($cache))) or _request('var_mode') == 'recalcul') {
$path_parts = recuperer_infos_distantes($source, 0, false);
ecrire_fichier($cache, serialize($path_parts));
}
$ext = $path_parts ? $path_parts['extension'] : '';
if ($ext and sql_getfetsel("extension", "spip_types_documents", "extension=" . sql_quote($ext))) {
return nom_fichier_copie_locale($source, $ext);
}
spip_log("pas de copie locale pour {$source}");
}
示例10: plugins_get_infos_un
function plugins_get_infos_un($plug, $reload, $dir, &$cache)
{
if (!is_readable($file = "{$dir}{$plug}/" . ($desc = "paquet") . ".xml")) {
if (!is_readable($file = "{$dir}{$plug}/" . ($desc = "plugin") . ".xml")) {
return false;
}
}
if (($time = intval(@filemtime($file))) < 0) {
return false;
}
$md5 = md5_file($file);
$pcache = isset($cache[$dir][$plug]) ? $cache[$dir][$plug] : array('filemtime' => 0, 'md5_file' => '');
// si le cache est valide
if (intval($reload) <= 0 and $time > 0 and $time <= $pcache['filemtime'] and $md5 == $pcache['md5_file']) {
return false;
}
// si on arrive pas a lire le fichier, se contenter du cache
if (!($texte = spip_file_get_contents($file))) {
return false;
}
$f = charger_fonction('infos_' . $desc, 'plugins');
$ret = $f($texte, $plug, $dir);
$ret['filemtime'] = $time;
$ret['md5_file'] = $md5;
$diff = $ret != $pcache;
if ($diff) {
$cache[$dir][$plug] = $ret;
# echo count($cache[$dir]), $dir,$plug, " $reloadc<br>";
}
return $diff;
}
示例11: charge_scripts
function charge_scripts($files, $script = true)
{
$flux = "";
foreach (is_array($files) ? $files : explode("|", $files) as $file) {
if (!is_string($file)) {
continue;
}
if ($script) {
$file = preg_match(",^\\w+\$,", $file) ? "javascript/{$file}.js" : '';
}
if ($file) {
$path = find_in_path($file);
}
if ($path) {
$flux .= spip_file_get_contents($path);
}
}
return $flux;
}
示例12: lire_fichier
/**
* Lit un fichier et place son contenu dans le paramètre transmis.
*
* Décompresse automatiquement les fichiers `.gz`
*
* @uses spip_fopen_lock()
* @uses spip_file_get_contents()
* @uses spip_fclose_unlock()
*
* @param string $fichier
* Chemin du fichier
* @param string $contenu
* Le contenu du fichier sera placé dans cette variable
* @param array $options
* Options tel que :
*
* - 'phpcheck' => 'oui' : vérifie qu'on a bien du php
* @return bool
* true si l'opération a réussie, false sinon.
**/
function lire_fichier($fichier, &$contenu, $options = array())
{
$contenu = '';
// inutile car si le fichier n'existe pas, le lock va renvoyer false juste apres
// economisons donc les acces disque, sauf chez free qui rale pour un rien
if (_TEST_FILE_EXISTS and !@file_exists($fichier)) {
return false;
}
#spip_timer('lire_fichier');
// pas de @ sur spip_fopen_lock qui est silencieux de toute facon
if ($fl = spip_fopen_lock($fichier, 'r', LOCK_SH)) {
// lire le fichier avant tout
$contenu = spip_file_get_contents($fichier);
// le fichier a-t-il ete supprime par le locker ?
// on ne verifie que si la tentative de lecture a echoue
// pour discriminer un contenu vide d'un fichier absent
// et eviter un acces disque
if (!$contenu and !@file_exists($fichier)) {
spip_fclose_unlock($fl);
return false;
}
// liberer le verrou
spip_fclose_unlock($fl);
// Verifications
$ok = true;
if (isset($options['phpcheck']) and $options['phpcheck'] == 'oui') {
$ok &= preg_match(",[?]>\n?\$,", $contenu);
}
#spip_log("$fread $fichier ".spip_timer('lire_fichier'));
if (!$ok) {
spip_log("echec lecture {$fichier}");
}
return $ok;
}
return false;
}
示例13: plugins_get_infos_un
function plugins_get_infos_un($plug, $reload, $dir, &$cache)
{
if (!is_readable($file = "{$dir}{$plug}/" . ($desc = "paquet") . ".xml")) {
if (!is_readable($file = "{$dir}{$plug}/" . ($desc = "plugin") . ".xml")) {
return false;
}
}
if (($time = intval(@filemtime($file))) < 0) {
return false;
}
$md5 = md5_file($file);
$pcache = isset($cache[$dir][$plug]) ? $cache[$dir][$plug] : array('filemtime' => 0, 'md5_file' => '');
// si le cache est valide
if (intval($reload) <= 0 and $time > 0 and $time <= $pcache['filemtime'] and $md5 == $pcache['md5_file']) {
return false;
}
// si on arrive pas a lire le fichier, se contenter du cache
if (!($texte = spip_file_get_contents($file))) {
return false;
}
$f = charger_fonction('infos_' . $desc, 'plugins');
$ret = $f($texte, $plug, $dir);
$ret['filemtime'] = $time;
$ret['md5_file'] = $md5;
// Si on lit le paquet.xml de SPIP, on rajoute un procure php afin que les plugins puissent
// utiliser un necessite php. SPIP procure donc la version php courante du serveur.
if (isset($ret['prefix']) and $ret['prefix'] == 'spip') {
$ret['procure']['php'] = array('nom' => 'php', 'version' => phpversion());
}
$diff = $ret != $pcache;
if ($diff) {
$cache[$dir][$plug] = $ret;
# echo count($cache[$dir]), $dir,$plug, " $reloadc<br>";
}
return $diff;
}
示例14: load_path_cache
function load_path_cache(){
// charger le path des plugins
if (@is_readable(_CACHE_PLUGINS_PATH)){
include_once(_CACHE_PLUGINS_PATH);
}
$GLOBALS['path_files'] = array();
// si le visiteur est admin,
// on ne recharge pas le cache pour forcer sa mise a jour
// le cache de chemin n'est utilise que dans le public
if (_DIR_RESTREINT
// la session n'est pas encore chargee a ce moment, on ne peut donc pas s'y fier
//AND (!isset($GLOBALS['visiteur_session']['statut']) OR $GLOBALS['visiteur_session']['statut']!='0minirezo')
// utiliser le cookie est un pis aller qui marche 'en general'
// on blinde par un second test au moment de la lecture de la session
AND !isset($_COOKIE[$GLOBALS['cookie_prefix'].'_admin'])
// et en ignorant ce cache en cas de recalcul explicite
AND _request('var_mode')!=='recalcul'
){
// on essaye de lire directement sans verrou pour aller plus vite
if ($contenu = spip_file_get_contents(_CACHE_CHEMIN)){
// mais si semble corrompu on relit avec un verrou
if (!$GLOBALS['path_files']=unserialize($contenu)){
lire_fichier(_CACHE_CHEMIN,$contenu);
if (!$GLOBALS['path_files']=unserialize($contenu))
$GLOBALS['path_files'] = array();
}
}
}
// pas de sauvegarde du chemin si on est pas dans le public
if (!_DIR_RESTREINT)
define('_SAUVER_CHEMIN',false);
}