/** * Action d'édition d'un article dans la base de données dont * l'identifiant est donné en paramètre de cette fonction ou * en argument de l'action sécurisée * * Si aucun identifiant n'est donné, on crée alors un nouvel article, * à condition que la rubrique parente (id_rubrique) puisse être obtenue * (avec _request()) * * @link http://doc.spip.org/@action_editer_article_dist * * @param null|int $arg * Identifiant de l'article. En absence utilise l'argument * de l'action sécurisée. * @return array * Liste (identifiant de l'article, Texte d'erreur éventuel) */ function action_editer_article_dist($arg = null) { include_spip('inc/autoriser'); $err = ""; 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'); if (!$id_parent) { $err = _L("creation interdite d'un article sans rubrique"); } elseif (!autoriser('creerarticledans', 'rubrique', $id_parent)) { $err = _T("info_creerdansrubrique_non_autorise"); } else { $id_article = article_inserer($id_parent); } } // Enregistre l'envoi dans la BD if ($id_article > 0) { $err = article_modifier($id_article); } if ($err) { spip_log("echec editeur article: {$err}", _LOG_ERREUR); } return array($id_article, $err); }
function page_static_buttons() { ?> <div class="static buttons"> <input type="button" class="btnBack" value="<?php _L('Go Back'); ?> " style="float:right;" disabled="disabled" /> <input type="button" class="btnNext" value="<?php _L('Next'); ?> »" /> <input type="submit" class="btnFinish" value="<?php _L('Send'); ?> »" /> <a href="<?php link_to('forms'); ?> "><?php _L('Cancel'); ?> </a> </div> <?php }
function balise_FOREACH($p) { $_tableau = interprete_argument_balise(1,$p); $_tableau = str_replace("'", "", strtoupper($_tableau)); $_tableau = sinon($_tableau, 'ENV'); $f = 'balise_'.$_tableau; $balise = function_exists($f) ? $f : (function_exists($g = $f.'_dist') ? $g : ''); if($balise) { $_modele = interprete_argument_balise(2,$p); $_modele = str_replace("'", "", strtolower($_modele)); $__modele = 'foreach_'.strtolower($_tableau); $_modele = (!$_modele AND find_in_path('modeles/'.$__modele.'.html')) ? $__modele : ($_modele ? $_modele : 'foreach'); $p->param = @array_shift(@array_shift($p->param)); $p = $balise($p); $filtre = chercher_filtre('foreach'); $p->code = $filtre . "(unserialize(" . $p->code . "), '" . $_modele . "')"; } //On a pas trouve la balise correspondant au tableau a traiter else { erreur_squelette( _L(/*zbug*/'erreur #FOREACH: la balise #'.$_tableau.' n\'existe pas'), $p->id_boucle ); $p->code = "''"; } return $p; }
function configuration_ie6config() { $iecompat = $GLOBALS['meta']["iecompat"]; if (!$iecompat) $iecompat = "non"; $res = _T("msiecompat:choix_explication"); $res .= afficher_choix('iecompat', $iecompat, array('non' => _T("msiecompat:choix_non"), 'ifixpng' => _L('iFixPng'), 'IE7' => _L("IE7.js"), 'IE7squish' => _L("IE7.js + ie7-squish.js"), 'IE8' => _L('IE8.js'), 'IE8squish' => _L('IE8.js + ie7-squish.js') /*, 'IE9' => _L('IE9.js'), 'IE9squish' => _L('IE9.js + ie7-squish.js') */ ), " <br /> "); $res = debut_cadre_trait_couleur(find_in_path("imgs/ie6-logo24.png"), true, "", _T("msiecompat:choix_titre")) . ajax_action_post('configurer', 'ie6config', 'configuration','',$res) . fin_cadre_trait_couleur(true); return ajax_action_greffe('configurer-ie6config', '', $res); }
/** * Un exec d'acces interdit * * @param string $message */ function exec_403_dist($message = '') { $exec = _request('exec'); $titre = "exec_{$exec}"; $navigation = ""; $extra = ""; if (!$message) { $message = _L("Vous n'avez pas le droit d'accéder à la page <b>@exec@</b>.", array('exec' => _request('exec'))); } $contenu = "<h1 class='grostitre'>" . _T('info_acces_interdit') . "</h1>" . $message; if (_request('var_zajax')) { include_spip('inc/actions'); ajax_retour($contenu); } else { include_spip('inc/presentation'); // alleger les inclusions avec un inc/presentation_mini $commencer_page = charger_fonction('commencer_page', 'inc'); echo $commencer_page($titre); echo debut_gauche("403_{$exec}", true); echo recuperer_fond('prive/squelettes/navigation/dist', array()); echo pipeline('affiche_gauche', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => '')); echo creer_colonne_droite("403", true); echo pipeline('affiche_droite', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => '')); echo debut_droite("403", true); echo pipeline('affiche_milieu', array('args' => array('exec' => '403', 'exec_erreur' => $exec), 'data' => $contenu)); echo fin_gauche(), fin_page(); } }
function autorite_erreurs_version($void) { $autorite_erreurs_version = array(); if ($GLOBALS['spip_version_code'] < '1.9251') { $autorite_erreurs_version[] = _L('auteur modere forum'); $autorite_erreurs_version[] = _L('auteur modere petition'); $autorite_erreurs_version[] = _L('auteur modifie email'); $autorite_erreurs_version[] = _L('redacteur voit stats'); $autorite_erreurs_version[] = _L('redacteur modifie mots'); } if ($GLOBALS['spip_version_code'] < '1.9252') { // autoriser(configurer) $autorite_erreurs_version[] = _L('configurer'); // autoriser(detruire) $autorite_erreurs_version[] = _L('effacer la base'); } if ($GLOBALS['spip_version_code'] < '1.9253') { $autorite_erreurs_version[] = _L('interdire la creation de rubriques'); } if ($GLOBALS['spip_version_code'] < '1.9254') { // autoriser(sauvegarder) $autorite_erreurs_version[] = _L('faire des sauvegardes'); } if ($GLOBALS['spip_version_code'] < '1.9258') { // define(_STATUT_AUTEUR_CREATION) $autorite_erreurs_version[] = _L('associer des rubriques aux auteurs'); $autorite_erreurs_version[] = _L('ignorer la notion d\'administrateur restreint'); } return join('</li><li>', $autorite_erreurs_version); }
function exec_acces_restreint(){ if (!autoriser('administrer','zone',0)) { include_spip('inc/minipres'); echo minipres(); exit; } $commencer_page = charger_fonction('commencer_page','inc'); echo $commencer_page(_T('accesrestreint:page_zones_acces')); echo gros_titre(_T('accesrestreint:titre_zones_acces'),'',false); echo debut_gauche("acces_restreint",true); echo debut_boite_info(true); echo propre(_T('accesrestreint:info_page')); echo fin_boite_info(true); if (autoriser('webmestre')) { $res = icone_horizontale(_L('Configuration des accès .htaccess'), generer_url_ecrire("acces_restreint_config"), "../"._DIR_PLUGIN_ACCESRESTREINT."/img_pack/zones-acces-24.gif", "cadenas-24.gif",false); echo bloc_des_raccourcis($res); } echo debut_droite("acces_restreint",true); echo recuperer_fond('prive/acces_restreint',$_GET); if (autoriser('modifier','zone')) echo "<div>".icone_inline(_T('accesrestreint:creer_zone'), generer_url_ecrire("zones_edit","new=oui"), _DIR_PLUGIN_ACCESRESTREINT."/img_pack/zones-acces-24.gif", "creer.gif",'right')."</div>"; echo fin_gauche(),fin_page(); }
function formulaires_encaisser_reglement_verifier_dist($id_transaction, $config) { $erreurs = array(); $autorisation_id = _request('autorisation_id'); $max_len = 55 - strlen(autorisation_suffixe()) - 1; if (!$autorisation_id) { $erreurs['autorisation_id'] = _T('info_obligatoire'); } elseif (strlen($autorisation_id) and $max_len > 0 and strlen($autorisation_id) > $max_len) { $erreurs['autorisation_id'] = _L($max_len . ' car. maximum') . ' (' . strlen($autorisation_id) . ')'; } return $erreurs; }
function formulaires_rembourser_transaction_traiter_dist($id_transaction) { $raison = _request('raison'); $raison = "<hr />\n" . date('Y-m-d H:i:s') . ' REMBOURSEMENT ' . remboursement_prefixe() . " : " . $raison; $res = array(); $rembourser_transaction = charger_fonction('rembourser_transaction', 'bank'); if ($rembourser_transaction($id_transaction, array('message' => $raison))) { $res['message_ok'] = _L('Transaction remboursée'); } else { $res['message_erreur'] = _L('Erreur Technique, remboursement impossible'); } return $res; }
/** * editer une assurance (action apres creation/modif de assur) * * @return array */ function action_editer_adhassur_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); // si id_assur n'est pas un nombre, c'est une creation // mais on verifie qu'on a toutes les donnees qu'il faut. if (!($id_assur = intval($arg))) { if (!($id_assur = adhclub_action_insert_adhassur())) { return array(false, _L('echec')); } } $err = action_adhassur_set($id_assur); return array($id_assur, $err); }
/** * The function returns current controller link. * If passed link starts from / returns related to root controller. * * @access protected * @param string $link The part of link. * @param bool $restoreGet If TRUE returns link with GET parameters. * @return string The link. */ protected function getLink($link = '', $restoreGet = false) { $Controller = $this->getController(); if (substr($link, 0, 1) == '/') { $Controller = Route::getController('/'); } if ($link) { $link = '/' . ltrim($link, '/'); } if ($restoreGet && count($_GET)) { $link .= strpos($link, '?') === false ? '?' : '&'; $link .= http_build_query($_GET); } return rtrim(_L($Controller), '/') . $link; }
function action_editer_candidature_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); // si id_candidature n'est pas un nombre, c'est une creation // mais on verifie qu'on a toutes les donnees qu'il faut. if (!($id_candidature = intval($arg))) { $id_auteur = _request('id_auteur'); if (!($id_candidature = stage_action_insert_candidature($id_auteur))) { return array(false, _L('echec')); } } $err = action_candidature_set($id_candidature); return array($id_candidature, $err); }
/** * Plugin Agenda pour Spip 2.0 * Licence GPL * * */ function action_editer_evenement_dist(){ $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_evenement = intval($arg)) { $id_parent = _request('id_parent'); if (!$id_evenement = agenda_action_insert_evenement($id_parent)) return array(false,_L('echec')); } $err = action_evenement_set($id_evenement); return array($id_evenement,$err); }
function exec_convert_sql_utf8_dist() { include_spip('inc/minipres'); include_spip('inc/charsets'); $charset_spip = $GLOBALS['meta']['charset']; // Definir le titre de la page (et le nom du fichier admin) //$action = _T('utf8_convertir_votre_site'); $action = _L("Conversion de la base en $charset_spip"); #volontairement non traduit (obsolete) // si meta deja la, c'est une reprise apres timeout. if ($GLOBALS['meta']['convert_sql_utf8']) { $base = charger_fonction('convert_sql_utf8', 'base'); $base($action, true); } else { $charset_supporte = false; $utf8_supporte = false; // verifier que mysql gere le charset courant pour effectuer les conversions include_spip('base/abstract_sql'); if ($c = sql_get_charset($charset_spip)){ $sql_charset = $c['charset']; $sql_collation = $c['collation']; $charset_supporte = true; } if (!$charset_supporte) { $utf8_supporte = sql_get_charset('utf8'); $res = _L("Le charset SPIP actuel $charset_spip n'est pas supporte par votre serveur MySQL<br/>"); if ($utf8_supporte) $res .= _L("Votre serveur supporte utf-8, vous devriez convertir votre site en utf-8 avant de recommencer cette operation"); echo minipres($action, $res); } else { $commentaire = ""; //$commentaire = _T('utf8_convert_avertissement', // array('orig' => $charset_orig,'charset' => 'utf-8')); $commentaire .= "<small>" . http_img_pack('warning.gif', _T('info_avertissement'), "style='width: 48px; height: 48px; float: right;margin: 10px;'"); $commentaire .= _T('utf8_convert_backup', array('charset' => 'utf-8')) ."</small>"; $commentaire .= '<br />'._T('utf8_convert_timeout'); $commentaire .= "<hr />\n"; $admin = charger_fonction('admin', 'inc'); echo $admin('convert_sql_utf8', $action, $commentaire); } } }
/** * editer une cotisation (action apres creation/modif de cotisation) * * @return array */ function action_editer_adhcoti_dist() { /*$debug1= "DEBUG plugin JR : action/editer_adhcoti.php - action_editer_adhcoti_dist - Pt02 - <br />"; echo "<br />", $debug1; echo "FIN ", $debug1; */ $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); // si id_coti n'est pas un nombre, c'est une creation // mais on verifie qu'on a toutes les donnees qu'il faut. if (!($id_coti = intval($arg))) { if (!($id_coti = adhclub_action_insert_adhcoti())) { return array(false, _L('echec')); } } $err = action_adhcoti_set($id_coti); return array($id_coti, $err); }
function formulaires_configurer_relayeur_verifier_dist() { $erreurs = array(); $http_proxy = relayeur_saisie_ou_config(_request('http_proxy'), lire_config('http_proxy', '')); $http_noproxy = _request('http_noproxy'); if ($http_proxy and !tester_url_absolue($http_proxy)) { $erreurs['http_proxy'] = _L('format_proxy_incorrect'); } if (!isset($erreurs['http_proxy']) and _request('tester_proxy')) { if (!$http_proxy) { $erreurs['http_proxy'] = _T('info_obligatoire'); } else { include_spip('inc/distant'); $test_proxy = _request('test_proxy'); $t = parse_url($test_proxy); if (!@$t['host']) { $erreurs['test_proxy'] = _T('info_adresse_non_indiquee'); } else { include_spip('inc/texte'); // pour aide, couper, lang $info = ""; if (!need_proxy($t['host'], $http_proxy, $http_noproxy)) { $info = "<strong>" . _T('page_pas_proxy') . "</strong><br />"; } // il faut fausser le proxy actuel pour faire le test ! $cur_http_proxy = $GLOBALS['meta']['http_proxy']; $cur_http_noproxy = $GLOBALS['meta']['http_noproxy']; $GLOBALS['meta']['http_proxy'] = $http_proxy; $GLOBALS['meta']['http_noproxy'] = $http_noproxy; $page = recuperer_page($test_proxy, true); $GLOBALS['meta']['http_proxy'] = $cur_http_proxy; $GLOBALS['meta']['http_noproxy'] = $cur_http_noproxy; if ($page) { $erreurs['message_ok'] = _T('info_proxy_ok') . "<br />{$info}\n<tt>" . couper(entites_html($page), 300) . "</tt>"; $erreurs['message_erreur'] = ''; } else { $erreurs['message_erreur'] = $info . _T('info_impossible_lire_page', array('test_proxy' => "<tt>{$test_proxy}</tt>")) . " <b><tt>" . no_password_proxy_url($http_proxy) . "</tt></b>." . aider('confhttpproxy'); } } } } return $erreurs; }
/** * editer une zone (action apres creation/modif de zone) * * @return array */ function action_editer_zone_dist(){ $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_zone = intval($arg)) { if (!$id_zone = accesrestreint_action_insert_zone()) return array(false,_L('echec')); // ajouter les droits a l'admin si demande, lors de la creation if (_request('droits_admin')){ accesrestreint_revision_zone_objets_lies($id_zone,$GLOBALS['visiteur_session']['id_auteur'],'auteur'); } } $err = action_zone_set($id_zone); return array($id_zone,$err); }
function exec_convert_utf8_dist() { include_spip('inc/minipres'); include_spip('inc/charsets'); // Definir le titre de la page (et le nom du fichier admin) $action = _T('utf8_convertir_votre_site'); // si meta deja la, c'est une reprise apres timeout. if ($GLOBALS['meta']['convert_utf8'] AND $GLOBALS['meta']['admin']) { $admin = charger_fonction('admin', 'inc'); echo $admin('convert_utf8', $action, '', true); } else { $charset_orig = $GLOBALS['meta']['charset']; // tester si le charset d'origine est connu de spip if (!load_charset($charset_orig)) convert_utf8_non($action, _T('utf8_convert_erreur_orig', array('charset' => "<b>".$charset_orig."</b>"))); // ne pas convertir si deja utf8 // ou si l'interface du serveur ne comprend rien else if (($charset_orig == 'utf-8')) convert_utf8_non($action, _T('utf8_convert_erreur_deja', array('charset' => $charset_orig))); else if(!sql_get_charset('utf-8')) convert_utf8_non($action, _L('Votre version du serveur SQL ne gere pas les charset')); else { $commentaire = _T('utf8_convert_avertissement', array('orig' => $charset_orig,'charset' => 'utf-8')); $commentaire .= "<small>" . http_img_pack('warning.gif', _T('info_avertissement'), "style='width: 48px; height: 48px; float: right;margin: 10px;'"); $commentaire .= _T('utf8_convert_backup', array('charset' => 'utf-8')) ."</small>"; $commentaire .= '<br />'._T('utf8_convert_timeout'); $commentaire .= "<hr />\n"; $admin = charger_fonction('admin', 'inc'); echo $admin('convert_utf8', $action, $commentaire); } } }
function snippets_affiche_droite($flux){ include_spip('inc/snippets'); $args = $flux['args']; $out = ""; $retour = _DIR_RESTREINT_ABS . self(); if ($args['exec']=='articles_tous') { $out.=boite_snippets(_L('Article'),'article-24.gif','articles','articles',"id_rubrique=0",$retour); $out.=boite_snippets(_L('Rubrique'),'rubrique-24.gif','rubriques','rubriques',"",$retour); } if ($args['exec']=='articles') { $out.=boite_snippets(_L('Article'),'article-24.gif','articles',$args['id_article'],"",$retour); } if ($args['exec']=='naviguer') { $out.=boite_snippets(_L('Article'),'article-24.gif','articles','articles',"id_rubrique=".$args['id_rubrique'],$retour); $out.=boite_snippets(_L('Rubrique'),'rubrique-24.gif','rubriques',$args['id_rubrique'],"id_rubrique=".$args['id_rubrique'],$retour); } $flux['data'].=$out; return $flux; }
/** * Créer un objet de type L2_Spip_Plugin_Abstract. * * @param string $nom * @param string $prefix * @param string $repertoire * @return L2_Spip_Plugin_Abstract * @access public * @static **/ function creer($nom, $prefix = null, $repertoire = 'inc') { if (!$prefix) { include_spip('inc/minipres'); echo minipres(_T('forum_titre_erreur'), _L('<code>L2_Spip_Plugin_Factory::creer(\'' . $nom . '\')</code> : Préfix non renseigné')); exit; } $nomFormate = str_replace(' ', '', ucwords(str_replace('_', ' ', $nom))); $prefixFormate = str_replace(' ', '', ucwords(str_replace('_', ' ', $prefix))); $className = $prefixFormate . '_' . $nomFormate; include_spip((string) $repertoire . '/' . $prefixFormate . '/' . $nomFormate . '.class'); $obj = new StdClass(); $obj->nom = $nom; $obj->prefix = $prefix; $obj->nomComplet = $prefix . '_' . $nom; $obj->nomCompletMinuscules = strtolower($obj->nomComplet); $obj->exec = _request('exec'); $obj->action = _request('action'); return new $className($obj); }
/** * The shopping cart index handler. * * @access public * @return string The HTML code. */ public function index() { switch (Request::get('action')) { case 'put': return $this->put(); case 'update': return $this->update(); case 'shipping': return $this->shipping(); case 'order': return $this->order(); case 'custom': return $this->custom(); } $Cart = Cart::getCart(); if (!$Cart->hasItems()) { return $this->halt(':' . _L('Controller_Frontend')); } $this->getView()->set('Cart', $Cart); return $this->getView()->render(); }
function install_etape_4_dist() { // creer le repertoire cache, qui sert partout ! if(!@file_exists(_DIR_CACHE)) { $rep = preg_replace(','._DIR_TMP.',', '', _DIR_CACHE); $rep = sous_repertoire(_DIR_TMP, $rep, true,true); } echo install_debut_html('AUTO', ' onload="document.getElementById(\'suivant\').focus();return false;"'); echo info_progression_etape(4,'etape_','install/'); echo "<p>" ._L('Les extensions ci-dessous sont chargées et activées dans le répertoire @extensions@.', array('extensions' => joli_repertoire(_DIR_EXTENSIONS))) ."</p>"; // installer les extensions include_spip('inc/plugin'); $afficher = charger_fonction("afficher_liste",'plugins'); echo $afficher(self(), liste_plugin_files(_DIR_EXTENSIONS),array(), _DIR_EXTENSIONS,'afficher_nom_plugin'); installe_plugins(); echo info_etape(_T('info_derniere_etape'), _T('info_utilisation_spip') ); // mettre a jour si necessaire l'adresse du site // securite si on arrive plus a se loger include_spip('inc/config'); $_POST['adresse_site'] = ''; appliquer_modifs_config(); // aller a la derniere etape qui clos l'install et redirige $suite = "\n<input type='hidden' name='etape' value='fin' />" . bouton_suivant(_T('login_espace_prive')); echo generer_form_ecrire('install', $suite); echo install_fin_html(); }
function formulaires_configurer_langue_traiter_dist() { $res = array('editable' => true); if ($lang = _request('changer_langue_site')) { include_spip('inc/lang'); // verif que la langue demandee est licite if (changer_langue($lang)) { ecrire_meta('langue_site', $lang); // le test a defait ca: utiliser_langue_visiteur(); $res['message_ok'] = _T('config_info_enregistree'); include_spip('inc/rubriques'); calculer_langues_rubriques(); } // le test a defait ca: utiliser_langue_visiteur(); } if (!$res['message_ok']) { $res['message_erreur'] = _L('erreur'); } return $res; }
/** * editer un niveau (action apres creation/modif de niveau) * * @return array */ function action_editer_adhniv_dist() { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); // si id_niveau egal 'x', il n'y a pas eut de choix //if ('x' == $arg) //return array(false,_L(':adhsaison:selectionner_un_niveau:')); // si id_niveau n'est pas un nombre, c'est une creation // mais on verifie qu'on a toutes les donnees qu'il faut. if (!($id_niveau = intval($arg))) { //$id_niveau = adhclub_action_insert_adhniv(); if (!($id_niveau = adhclub_action_insert_adhniv())) { return array(false, _L('echec')); } // ajouter les droits a l'admin si demande, lors de la creation if (_request('droits_admin')) { adhclub_revision_adhniv_objets_lies($id_niveau, $GLOBALS['visiteur_session']['id_auteur'], 'auteur'); } } $err = action_adhniv_set($id_niveau); return array($id_niveau, $err); }
/** * Appelle toutes les fonctions de modification d'un objet * $err est un message d'erreur eventuelle * * @param string 'spip_reservation_credit_mouvement' * @param int $id * @param array|null $set * @return mixed|string */ function reservation_credit_modifier($id, $set = null) { spip_log($ste, 'teste'); $table_sql = 'spip_reservation_credits'; $trouver_table = charger_fonction('trouver_table', 'base'); $desc = $trouver_table($table_sql); if (!$desc or !isset($desc['field'])) { spip_log("Objet 'spip_reservation_credit_mouvement' inconnu dans objet_modifier", _LOG_ERREUR); return _L("Erreur objet 'spip_reservation_credit_mouvement' inconnu"); } include_spip('inc/modifier'); $champ_date = 'date_creation'; $white = array_keys($desc['field']); // on ne traite pas la cle primaire par defaut, notamment car // sur une creation, id_x vaut 'oui', et serait enregistre en id_x=0 dans la base $white = array_diff($white, array($desc['key']['PRIMARY KEY'])); if (isset($desc['champs_editables']) and is_array($desc['champs_editables'])) { $white = $desc['champs_editables']; } $c = collecter_requests($white, array($champ_date, 'statut', 'id_parent', 'id_secteur'), $set); $c['id_reservation_credit'] = $id_reservation_credit; // Si l'objet est publie, invalider les caches et demander sa reindexation if (objet_test_si_publie('reservation_credit', $id)) { $invalideur = "id='reservation_credit_mouvement/{$id}'"; $indexation = true; } else { $invalideur = ""; $indexation = false; } if ($err = objet_modifier_champs('reservation_credit', $id, array('nonvide' => '', 'invalideur' => $invalideur, 'indexation' => $indexation, 'date_modif' => isset($desc['field']['date_modif']) ? 'date_modif' : ''), $c)) { return $err; } // Modification de statut, changement de rubrique ? // FIXME: Ici lorsqu'un $set est passé, la fonction collecter_requests() retourne tout // le tableau $set hors black liste, mais du coup on a possiblement des champs en trop. $c = collecter_requests(array($champ_date, 'statut', 'id_parent'), array(), $set); $err = objet_instituer('reservation_credit', $id, $c); return $err; }
/** * Affichage des liste d'objets * * Surcharge pour aiguiller vers la mise en squelettes des listes * * @deprecated Créer ou utiliser un squelette dans `prive/objets/liste/` * pour la table en question et l'appeler avec une inclusion. * * @param string $vue * Nom de l'objet * @param array $contexte * Contexte du squelette * @param bool $force * Si `true` le titre est affiché même s'il n'y a aucun élément dans la liste. * @return string * Code HTML de la liste */ function inc_lister_objets_dist($vue, $contexte = array(), $force = false) { $res = ""; // debug if (!is_array($contexte)) { return _L('$contexte doit etre un tableau dans inc/lister_objets'); } $fond = "prive/objets/liste/{$vue}"; if (!find_in_path($fond . "." . _EXTENSION_SQUELETTES)) { // traiter les cas particuliers include_spip('base/connect_sql'); $vue = table_objet($vue); $fond = "prive/objets/liste/{$vue}"; if (!find_in_path($fond . "." . _EXTENSION_SQUELETTES)) { return _L("vue {$vue} introuvable pour lister les objets"); } } $contexte['sinon'] = $force ? $contexte['titre'] : ''; $res = recuperer_fond($fond, $contexte, array('ajax' => true)); if (_request('var_liste')) { echo var_export($contexte, true); } return $res; }
/** * Verifier la presence d'alertes pour les auteur * * http://doc.spip.org/@alertes_auteur * * @param int $id_auteur * @return string */ function alertes_auteur($id_auteur) { $alertes = array(); // si on n'est plus compatible avec php4 : le dire a tous ceux qui passent // dans l'espace prive if (version_compare(phpversion(), _PHP_MIN) == -1) { $alertes[] = _L('SPIP nécessite PHP @min@, votre version est @version@.', array('min' => _PHP_MIN, 'version' => phpversion())); } if (isset($GLOBALS['meta']['message_crash_tables']) and autoriser('detruire', null, null, $id_auteur)) { include_spip('genie/maintenance'); if ($msg = message_crash_tables()) { $alertes[] = $msg; } } if (isset($GLOBALS['meta']['message_crash_plugins']) and $GLOBALS['meta']['message_crash_plugins'] and autoriser('configurer', '_plugins', null, $id_auteur) and is_array($msg = unserialize($GLOBALS['meta']['message_crash_plugins']))) { $msg = implode(', ', array_map('joli_repertoire', array_keys($msg))); $alertes[] = _T('plugins_erreur', array('plugins' => $msg)); } $a = isset($GLOBALS['meta']['message_alertes_auteurs']) ? $GLOBALS['meta']['message_alertes_auteurs'] : ''; if ($a and is_array($a = unserialize($a)) and count($a)) { $update = false; if (isset($a[$GLOBALS['visiteur_session']['statut']])) { $alertes = array_merge($alertes, $a[$GLOBALS['visiteur_session']['statut']]); unset($a[$GLOBALS['visiteur_session']['statut']]); $update = true; } if (isset($a[''])) { $alertes = array_merge($alertes, $a['']); unset($a['']); $update = true; } if ($update) { ecrire_meta("message_alertes_auteurs", serialize($a)); } } if (isset($GLOBALS['meta']['plugin_erreur_activation']) and autoriser('configurer', '_plugins', null, $id_auteur)) { include_spip('inc/plugin'); $alertes[] = plugin_donne_erreurs(); } $alertes = pipeline('alertes_auteur', array('args' => array('id_auteur' => $id_auteur, 'exec' => _request('exec')), 'data' => $alertes)); if ($alertes = array_filter($alertes)) { return "<div class='wrap-messages-alertes'><div class='messages-alertes'>" . join(' | ', $alertes) . "</div></div>"; } }
/** * Fonction d'initialisation, appellée dans inc_version ou mes_options * * Elle définit les répertoires et fichiers non partageables * et indique dans $test_dirs ceux devant être accessibles en écriture * mais ne touche pas à cette variable si elle est déjà définie * afin que mes_options.php puisse en spécifier d'autres. * * Elle définit ensuite les noms des fichiers et les droits. * Puis simule un register_global=on sécurisé. * * @param string $pi Répertoire permanent inaccessible * @param string $pa Répertoire permanent accessible * @param string $ti Répertoire temporaire inaccessible * @param string $ta Répertoire temporaire accessible */ function spip_initialisation_core($pi = NULL, $pa = NULL, $ti = NULL, $ta = NULL) { static $too_late = 0; if ($too_late++) { return; } // Declaration des repertoires // le nom du repertoire plugins/ activables/desactivables if (!defined('_DIR_PLUGINS')) { define('_DIR_PLUGINS', _DIR_RACINE . "plugins/"); } // le nom du repertoire des extensions/ permanentes du core, toujours actives if (!defined('_DIR_PLUGINS_DIST')) { define('_DIR_PLUGINS_DIST', _DIR_RACINE . "plugins-dist/"); } // le nom du repertoire des librairies if (!defined('_DIR_LIB')) { define('_DIR_LIB', _DIR_RACINE . "lib/"); } if (!defined('_DIR_IMG')) { define('_DIR_IMG', $pa); } if (!defined('_DIR_LOGOS')) { define('_DIR_LOGOS', $pa); } if (!defined('_DIR_IMG_ICONES')) { define('_DIR_IMG_ICONES', _DIR_LOGOS . "icones/"); } if (!defined('_DIR_DUMP')) { define('_DIR_DUMP', $ti . "dump/"); } if (!defined('_DIR_SESSIONS')) { define('_DIR_SESSIONS', $ti . "sessions/"); } if (!defined('_DIR_TRANSFERT')) { define('_DIR_TRANSFERT', $ti . "upload/"); } if (!defined('_DIR_CACHE')) { define('_DIR_CACHE', $ti . "cache/"); } if (!defined('_DIR_CACHE_XML')) { define('_DIR_CACHE_XML', _DIR_CACHE . "xml/"); } if (!defined('_DIR_SKELS')) { define('_DIR_SKELS', _DIR_CACHE . "skel/"); } if (!defined('_DIR_AIDE')) { define('_DIR_AIDE', _DIR_CACHE . "aide/"); } if (!defined('_DIR_TMP')) { define('_DIR_TMP', $ti); } if (!defined('_DIR_VAR')) { define('_DIR_VAR', $ta); } if (!defined('_DIR_ETC')) { define('_DIR_ETC', $pi); } if (!defined('_DIR_CONNECT')) { define('_DIR_CONNECT', $pi); } if (!defined('_DIR_CHMOD')) { define('_DIR_CHMOD', $pi); } if (!isset($GLOBALS['test_dirs'])) { // Pas $pi car il est bon de le mettre hors ecriture apres intstall // il sera rajoute automatiquement si besoin a l'etape 2 de l'install $GLOBALS['test_dirs'] = array($pa, $ti, $ta); } // Declaration des fichiers if (!defined('_CACHE_PLUGINS_PATH')) { define('_CACHE_PLUGINS_PATH', _DIR_CACHE . "charger_plugins_chemins.php"); } if (!defined('_CACHE_PLUGINS_OPT')) { define('_CACHE_PLUGINS_OPT', _DIR_CACHE . "charger_plugins_options.php"); } if (!defined('_CACHE_PLUGINS_FCT')) { define('_CACHE_PLUGINS_FCT', _DIR_CACHE . "charger_plugins_fonctions.php"); } if (!defined('_CACHE_PIPELINES')) { define('_CACHE_PIPELINES', _DIR_CACHE . "charger_pipelines.php"); } if (!defined('_CACHE_CHEMIN')) { define('_CACHE_CHEMIN', _DIR_CACHE . "chemin.txt"); } # attention .php obligatoire pour ecrire_fichier_securise if (!defined('_FILE_META')) { define('_FILE_META', $ti . 'meta_cache.php'); } if (!defined('_DIR_LOG')) { define('_DIR_LOG', _DIR_TMP . 'log/'); } if (!defined('_FILE_LOG')) { define('_FILE_LOG', 'spip'); } if (!defined('_FILE_LOG_SUFFIX')) { define('_FILE_LOG_SUFFIX', '.log'); } // Le fichier de connexion a la base de donnees // tient compte des anciennes versions (inc_connect...) if (!defined('_FILE_CONNECT_INS')) { define('_FILE_CONNECT_INS', 'connect'); } if (!defined('_FILE_CONNECT')) { define('_FILE_CONNECT', @is_readable($f = _DIR_CONNECT . _FILE_CONNECT_INS . '.php') ? $f : (@is_readable($f = _DIR_RESTREINT . 'inc_connect.php') ? $f : false)); } // Le fichier de reglages des droits if (!defined('_FILE_CHMOD_INS')) { define('_FILE_CHMOD_INS', 'chmod'); } if (!defined('_FILE_CHMOD')) { define('_FILE_CHMOD', @is_readable($f = _DIR_CHMOD . _FILE_CHMOD_INS . '.php') ? $f : false); } if (!defined('_FILE_LDAP')) { define('_FILE_LDAP', 'ldap.php'); } if (!defined('_FILE_TMP_SUFFIX')) { define('_FILE_TMP_SUFFIX', '.tmp.php'); } if (!defined('_FILE_CONNECT_TMP')) { define('_FILE_CONNECT_TMP', _DIR_CONNECT . _FILE_CONNECT_INS . _FILE_TMP_SUFFIX); } if (!defined('_FILE_CHMOD_TMP')) { define('_FILE_CHMOD_TMP', _DIR_CHMOD . _FILE_CHMOD_INS . _FILE_TMP_SUFFIX); } // Definition des droits d'acces en ecriture if (!defined('_SPIP_CHMOD') and _FILE_CHMOD) { include_once _FILE_CHMOD; } // Se mefier des fichiers mal remplis! if (!defined('_SPIP_CHMOD')) { define('_SPIP_CHMOD', 0777); } if (!defined('_DEFAULT_CHARSET')) { /** Le charset par défaut lors de l'installation */ define('_DEFAULT_CHARSET', 'utf-8'); } if (!defined('_ROOT_PLUGINS')) { define('_ROOT_PLUGINS', _ROOT_RACINE . "plugins/"); } if (!defined('_ROOT_PLUGINS_DIST')) { define('_ROOT_PLUGINS_DIST', _ROOT_RACINE . "plugins-dist/"); } if (!defined('_ROOT_PLUGINS_SUPPL') && defined('_DIR_PLUGINS_SUPPL') && _DIR_PLUGINS_SUPPL) { define('_ROOT_PLUGINS_SUPPL', _ROOT_RACINE . str_replace(_DIR_RACINE, '', _DIR_PLUGINS_SUPPL)); } // La taille des Log if (!defined('_MAX_LOG')) { define('_MAX_LOG', 100); } // Sommes-nous dans l'empire du Mal ? // (ou sous le signe du Pingouin, ascendant GNU ?) if (isset($_SERVER['SERVER_SOFTWARE']) and strpos($_SERVER['SERVER_SOFTWARE'], '(Win') !== false) { if (!defined('_OS_SERVEUR')) { define('_OS_SERVEUR', 'windows'); } if (!defined('_SPIP_LOCK_MODE')) { define('_SPIP_LOCK_MODE', 1); } // utiliser le flock php } else { if (!defined('_OS_SERVEUR')) { define('_OS_SERVEUR', ''); } if (!defined('_SPIP_LOCK_MODE')) { define('_SPIP_LOCK_MODE', 1); } // utiliser le flock php #if (!defined('_SPIP_LOCK_MODE')) define('_SPIP_LOCK_MODE',2); // utiliser le nfslock de spip mais link() est tres souvent interdite } // Langue par defaut if (!defined('_LANGUE_PAR_DEFAUT')) { define('_LANGUE_PAR_DEFAUT', 'fr'); } // // Module de lecture/ecriture/suppression de fichiers utilisant flock() // (non surchargeable en l'etat ; attention si on utilise include_spip() // pour le rendre surchargeable, on va provoquer un reecriture // systematique du noyau ou une baisse de perfs => a etudier) include_once _ROOT_RESTREINT . 'inc/flock.php'; // charger tout de suite le path et son cache load_path_cache(); // *********** traiter les variables ************ // // Securite // // Ne pas se faire manger par un bug php qui accepte ?GLOBALS[truc]=toto if (isset($_REQUEST['GLOBALS'])) { die; } // nettoyer les magic quotes \' et les caracteres nuls %00 spip_desinfecte($_GET); spip_desinfecte($_POST); spip_desinfecte($_COOKIE); spip_desinfecte($_REQUEST); // Par ailleurs on ne veut pas de magic_quotes au cours de l'execution @set_magic_quotes_runtime(0); // Si les variables sont passees en global par le serveur, // il faut faire quelques verifications de base $avertir_register_globals = false; if (test_valeur_serveur(@ini_get('register_globals'))) { // ne pas desinfecter les globales en profondeur car elle contient aussi les // precedentes, qui seraient desinfectees 2 fois. spip_desinfecte($GLOBALS, false); if (include_spip('inc/php3')) { spip_register_globals(true); } $avertir_register_globals = true; } // appliquer le cookie_prefix if ($GLOBALS['cookie_prefix'] != 'spip') { include_spip('inc/cookie'); recuperer_cookies_spip($GLOBALS['cookie_prefix']); } // // Capacites php (en fonction de la version) // $GLOBALS['flag_ob'] = function_exists("ob_start") && function_exists("ini_get") && !strstr(@ini_get('disable_functions'), 'ob_'); $GLOBALS['flag_sapi_name'] = function_exists("php_sapi_name"); $GLOBALS['flag_get_cfg_var'] = @get_cfg_var('error_reporting') != ""; $GLOBALS['flag_upload'] = !$GLOBALS['flag_get_cfg_var'] || get_cfg_var('upload_max_filesize') > 0; // Compatibilite avec serveurs ne fournissant pas $REQUEST_URI if (isset($_SERVER['REQUEST_URI'])) { $GLOBALS['REQUEST_URI'] = $_SERVER['REQUEST_URI']; } else { $GLOBALS['REQUEST_URI'] = $_SERVER['PHP_SELF']; if (!empty($_SERVER['QUERY_STRING']) and !strpos($_SERVER['REQUEST_URI'], '?')) { $GLOBALS['REQUEST_URI'] .= '?' . $_SERVER['QUERY_STRING']; } } // Duree de validite de l'alea pour les cookies et ce qui s'ensuit. if (!defined('_RENOUVELLE_ALEA')) { define('_RENOUVELLE_ALEA', 12 * 3600); } // charger les meta si possible et renouveller l'alea au besoin // charge aussi effacer_meta et ecrire_meta $inc_meta = charger_fonction('meta', 'inc'); $inc_meta(); // on a pas pu le faire plus tot if ($avertir_register_globals) { avertir_auteurs("register_globals", _L("Problème de sécurité : register_globals=on; dans php.ini à corriger.")); } // nombre de repertoires depuis la racine // on compare a l'adresse de spip.php : $_SERVER["SCRIPT_NAME"] // ou a defaut celle donnee en meta ; (mais si celle-ci est fausse // le calcul est faux) if (!_DIR_RESTREINT) { $GLOBALS['profondeur_url'] = 1; } else { $uri = isset($_SERVER['REQUEST_URI']) ? explode('?', $_SERVER['REQUEST_URI']) : ''; $uri_ref = $_SERVER["SCRIPT_NAME"]; if (!$uri_ref or $ti !== _NOM_TEMPORAIRES_INACCESSIBLES) { if (isset($GLOBALS['meta']['adresse_site'])) { $uri_ref = parse_url($GLOBALS['meta']['adresse_site']); $uri_ref = $uri_ref['path'] . '/'; } else { $uri_ref = ""; } } if (!$uri or !$uri_ref) { $GLOBALS['profondeur_url'] = 0; } else { $GLOBALS['profondeur_url'] = max(0, substr_count($uri[0], '/') - substr_count($uri_ref, '/')); } } // s'il y a un cookie ou PHP_AUTH, initialiser visiteur_session if (_FILE_CONNECT) { if (verifier_visiteur() == '0minirezo' and !isset($_COOKIE['spip_admin'])) { clear_path_cache(); } } }
function traiter_appels_inclusions_ajax(){ // traiter les appels de bloc ajax (ex: pagination) if ($v = _request('var_ajax') AND $v !== 'form' AND $args = _request('var_ajax_env')) { include_spip('inc/filtres'); include_spip('inc/actions'); if ($args = decoder_contexte_ajax($args) AND $fond = $args['fond']) { include_spip('public/assembler'); $contexte = calculer_contexte(); $contexte = array_merge($args, $contexte); $page = recuperer_fond($fond,$contexte,array('trim'=>false)); $texte = $page; if ($ancre = _request('var_ajax_ancre')){ // pas n'importe quoi quand meme dans la variable ! $ancre = str_replace(array('<','"',"'"),array('<','"',''),$ancre); $texte = "<a href='#$ancre' name='ajax_ancre' style='display:none;'>anchor</a>".$texte; } } else { include_spip('inc/headers'); http_status(403); $texte = _L('signature ajax bloc incorrecte'); } ajax_retour($texte); return true; // on a fini le hit } return false; }
public function validate($value, $property, model_editor $editor) { parent::validate($value, $property, $editor); if ($value !== null) { $ts = $this->parseStorageToDatetime($value); if ($this->notBefore instanceof \DateTime && $ts < $this->notBefore) { throw new \InvalidArgumentException(_L('Selected date is out of range.')); } if ($this->notAfter instanceof \DateTime && $ts > $this->notAfter) { throw new \InvalidArgumentException(_L('Selected date is out of range.')); } } return true; }