/** * Action de déplacement de saisies dans le constructeur de formulaires * * @return void **/ function action_deplacer_saisie_dist() { include_spip('inc/session'); $session = _request('session'); $identifiant = _request('saisie'); $ou = _request('ou'); // On récupère le formulaire à son état actuel $formulaire_actuel = session_get($session); if (!$formulaire_actuel) { return ''; } include_spip('inc/saisies'); $saisies_actuelles = saisies_lister_par_identifiant($formulaire_actuel); if (!isset($saisies_actuelles[$identifiant])) { return ''; } // tester @id et [@id] (fieldset) if ($ou and !isset($saisies_actuelles[$ou]) and !isset($saisies_actuelles[substr($ou, 1, -1)])) { return ''; } // on deplace ou c'est demande... $formulaire_actuel = saisies_deplacer($formulaire_actuel, $identifiant, $ou); // On sauve tout ca $formulaire_actuel = session_set($session, $formulaire_actuel); }
/** * Form token validation * @param array $validations The array of validation rules * @return void */ function form_validate($validations = null) { if (!isset($_POST['lc_formToken_' . _cfg('formTokenName')])) { Validation::addError('', _t('Invalid form token.')); return false; } $token = _decrypt(session_get(_cfg('formTokenName'))); $postedToken = _decrypt(_post($_POST['lc_formToken_' . _cfg('formTokenName')])); $result = false; # check token first if ($token == $postedToken) { # check referer if it is requesting in the same site if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] && _cfg('siteDomain')) { $siteDomain = _cfg('siteDomain'); $siteDomain = preg_replace('/^www\\./', '', $siteDomain); $parsedURL = parse_url($_SERVER['HTTP_REFERER']); $parsedURL['host'] = preg_replace('/^www\\./', '', $parsedURL['host']); if (strcasecmp($siteDomain, $parsedURL['host']) == 0) { $result = true; } } } if ($result == false) { Validation::addError('', _t('Error occured during form submission. Please refresh the page to try again.')); return false; } if ($validations && Validation::check($validations) === false) { return false; } return true; }
function XedReplaceForm() { parent::MailForm(); $this->parseSettings('inc/app/xed/forms/replace/settings.php'); $this->widgets['find']->setValue(session_get('xed_source_find')); $this->widgets['replace']->setValue(session_get('xed_source_replace')); }
function formulaires_editer_champs_extras_traiter_dist($objet, $redirect = '') { $retour = array('redirect' => $redirect); $table = table_objet_sql($objet); include_spip('inc/iextras'); $saisies = iextras_champs_extras_definis($table); $nouvelles_saisies = session_get('constructeur_formulaire_champs_extras_' . $table); $diff = saisies_comparer_par_identifiant($saisies, $nouvelles_saisies); $extras = array(); include_spip('inc/cextras'); // supprimer les champs supprimes champs_extras_supprimer($table, $diff['supprimees']); // ajouter les nouveaux champs; champs_extras_creer($table, $diff['ajoutees']); // modifier les champs modifies; if ($diff['modifiees']) { $anciennes = saisies_lister_par_identifiant($saisies); $anciennes = array_intersect_key($anciennes, $diff['modifiees']); champs_extras_modifier($table, $diff['modifiees'], $anciennes); } # champs_extras_modifier($table, # modifiees nouvelles, # modifiees anciennes); ecrire_meta("champs_extras_" . $table, serialize($nouvelles_saisies)); $retour['message_ok'] = 'Super !'; return $retour; }
public function testSessions() { $expected = "Session var " . rand(); session_set('my_sess_var', $expected); $session_var = session_get('my_sess_var'); $this->assertEquals($session_var, $expected); }
/** * Un parametre permet de forcer le statut (exemple: plugin antispam) * * http://code.spip.net/@inc_forum_insert_dist * * @param $objet * @param $id_objet * @param $id_forum * en reponse a * @param null $force_statut * @return bool */ function inc_forum_insert_dist($objet, $id_objet, $id_forum, $force_statut = null) { if (!in_array($force_statut, array('privrac', 'privadm'))) { if (!strlen($objet) or !intval($id_objet)) { spip_log("Erreur insertion forum sur objet='{$objet}', id_objet={$id_objet}", 'forum.' . _LOG_ERREUR); return 0; } } spip_log("insertion de forum {$force_statut} sur {$objet} {$id_objet} (+{$id_forum})", 'forum'); include_spip('inc/filtres'); include_spip('inc/modifier'); include_spip('inc/session'); $champs = objet_info('forum', 'champs_editables'); $c = collecter_requests($champs, array()); $c['statut'] = 'off'; $c['objet'] = $objet; $c['id_objet'] = $id_objet; $c['auteur'] = sinon(session_get('nom'), session_get('session_nom')); $c['email_auteur'] = sinon(session_get('email'), session_get('session_email')); $c = pipeline('pre_edition', array('args' => array('table' => 'spip_forum', 'id_objet' => $id_forum, 'action' => 'instituer'), 'data' => forum_insert_statut($c, $force_statut))); $id_reponse = forum_insert_base($c, $id_forum, $objet, $id_objet, $c['statut'], _request('ajouter_mot')); if (!$id_reponse) { spip_log("Echec insertion forum sur {$objet} {$id_objet} (+{$id_forum})", 'forum.' . _LOG_ERREUR); } else { spip_log("forum insere' {$id_reponse} sur {$objet} {$id_objet} (+{$id_forum})", 'forum'); } return $id_reponse; }
/** * Shows a notice (e.g., "Item deleted.") if one is set. */ function cms_alert() { if (!cms_is_alert()) { return ''; } $notice = session_get('sitellite_alert'); session_set('sitellite_alert', null); return template_simple('alert.spt', array('msg' => $notice)); }
static function restoreFromSession() { if (($message = session_get('flashMessage')) && ($type = session_get('flashMessageType'))) { $GLOBALS['flashMessage'] = $message; // Already has a trailing <br/> $GLOBALS['flashMessageType'] = $type; session_unsetVariable('flashMessage'); session_unsetVariable('flashMessageType'); } }
private static function isLogin() { if (!($userid = session_get('USERID'))) { if (Request::isAjax()) { exit(json_encode(array('code' => -1, 'msg' => 'please login'))); } else { exit(app::run(array('home', 'page', 'login'))); } } return $userid; }
/** The permission engine. This function decides wether a specific function is allowed or not depending the rights of the current user. @param $dir Directory in which the action should happen. If this parameter is NULL the engine relys on the global permissions of the user. @param $file File on which the action should happen, if this parameter is NULL the permission engine relys on the permission of the directory. @param $action One ore more action of the action set (see permissions_get) which sould be exectuted. More actions are seperated by a &. Example: "read&write&password" grants only if user has all three permissions @return true if the action is granted, false otherwise @remarks Until now the permission engine does not support directory or file based actions, so only the global actions are treated. The paramers $dir and $file are ignored. This is for later use. However, if possible, provide the $dir and $file parameters so the code does not have to be chaned if the permission engine will support this features in the future. */ function permissions_grant($dir, $file, $action) { // determine if a user has logged in $user = session_get("s_user"); // if no user is logged in, use the global permissions if (!isset($user)) { return permissions_global($dir, $file, $action); } // check if the user currently logged in has the given rights return permissions_grant_user($user, $dir, $file, $action); }
/** * Cette notification s'exécute quand on valide un message 'prop'osé. * * On va notifier ceux qui ne l'ont * pas été à la notification forumposte (sachant que les deux peuvent se * suivre si le forum est validé directement ('pos' ou 'abo') * * @pipeline_appel notifications_destinataires * @see inc/forum_insert.php * * @param string $quoi * @param int $id_forum * @param array $options */ function notifications_forumvalide_dist($quoi, $id_forum, $options) { $t = sql_fetsel("*", "spip_forum", "id_forum=" . intval($id_forum)); if (!$t or @$t['statut'] == 'perso') { return; } // plugin notification si present $prevenir_auteurs = isset($GLOBALS['notifications']['prevenir_auteurs']) and $GLOBALS['notifications']['prevenir_auteurs']; // sinon voie normale if ($t['objet'] == 'article' and !$prevenir_auteurs) { $s = sql_getfetsel('accepter_forum', 'spip_articles', "id_article=" . $t['id_objet']); if (!$s) { $s = substr($GLOBALS['meta']["forums_publics"], 0, 3); } $prevenir_auteurs = (strpos(@$GLOBALS['meta']['prevenir_auteurs'], ",{$s},") !== false or @$GLOBALS['meta']['prevenir_auteurs'] === 'oui'); // compat } include_spip('inc/texte'); include_spip('inc/filtres'); include_spip('inc/autoriser'); include_spip('inc/session'); // Qui va-t-on prevenir ? $tous = array(); // Ne pas ecrire au posteur du message, ni au moderateur qui valide le forum, $pasmoi = array_filter(array($t['email_auteur'], session_get('email'))); // 1. Les auteurs de l'objet lie au forum // seulement ceux qui n'ont // pas le droit de le moderer (les autres l'ont recu plus tot) if ($prevenir_auteurs) { $result = sql_select("auteurs.*", "spip_auteurs AS auteurs, spip_auteurs_liens AS lien", "lien.objet=" . sql_quote($t['objet']) . " AND lien.id_objet=" . intval($t['id_objet']) . " AND auteurs.id_auteur=lien.id_auteur"); while ($qui = sql_fetch($result)) { if ($qui['email']) { if (!autoriser('modererforum', $t['objet'], $t['id_objet'], $qui['id_auteur'])) { $tous[] = $qui['email']; } else { $pasmoi[] = $qui['email']; } } } } $options['forum'] = $t; $destinataires = pipeline('notifications_destinataires', array('args' => array('quoi' => $quoi, 'id' => $id_forum, 'options' => $options), 'data' => $tous)); // Nettoyer le tableau // en enlevant les exclus notifications_nettoyer_emails($destinataires, $pasmoi); // // Envoyer les emails // $email_notification_forum = charger_fonction('email_notification_forum', 'inc'); foreach ($destinataires as $email) { $texte = $email_notification_forum($t, $email); notifications_envoyer_mails($email, $texte); } }
/** * Action effectuant 1 action dans la liste des actions à réaliser * sur les plugins. * * Cette action sera relancée tant qu'il reste des actions à faire */ function action_actionner_dist() { // droits include_spip('inc/autoriser'); if (!autoriser('configurer', '_plugins')) { include_spip('inc/minipres'); echo minipres(); exit; } include_spip('inc/svp_actionner'); include_spip('inc/headers'); $actionneur = new Actionneur(); $actionneur->get_actions(); if ($actionneur->one_action()) { // si SVP a été enlevé des actifs, on redirige sur la fin... // sinon cette page d'action/actionner devient introuvable. // dans ce cas précis, les autres actions prévues venant après la desactivation de SVP // ne pourront être traitees... SVP n'étant plus là ! if ($actionneur->tester_si_svp_desactive()) { $url = _request('redirect'); } else { $url = generer_action_auteur('actionner', '', _request('redirect')); } // en mode pas à pas, on affiche un bilan entre chaque action // et on demande a l'utilistateur de cliquer pour realiser // l'action suivante. include_spip('inc/config'); if (lire_config('svp/mode_pas_a_pas') == 'oui') { include_spip('inc/minipres'); $pres = $actionneur->presenter_actions(); $btn = "<a href='{$url}'>[ Action Suivante ]</a>"; $styles = "\n\t\t\t\t<style type='text/css'>\n\t\t\t\t#minipres #actionner .fail {color:#c30000;}\n\t\t\t\t#minipres #actionner ul {margin-left: 0.5em;}\n\t\t\t\t#minipres #actionner li {list-style-type:square; margin-left: 0.5em;}\n\t\t\t\t</style>"; echo minipres(_T('svp:installation_en_cours'), $pres . '<br /><br />' . $btn . $styles); die; } redirige_par_entete(str_replace('&', '&', $url)); } foreach ($actionneur->done as $done) { if ($done['todo'] == 'on') { if ($voir = session_get('svp_admin_plugin_voir') and $voir == 'inactif') { session_set('svp_admin_plugin_voir', 'actif'); } break; } } include_spip('inc/svp_depoter_local'); svp_actualiser_paquets_locaux(); if (!_request('redirect')) { $GLOBALS['redirect'] = generer_url_ecrire('admin_plugin'); } else { $GLOBALS['redirect'] = str_replace('&', '&', _request('redirect')); } }
/** * ### Verifies the given CSRF-Token against the session token * * @return bool */ public static function verifyCSRF() { if (getenv('CSRF_EVERYWHERE')) { $given = Input::get('csrf-token'); $set = session_get('csrf_token'); if ($given === $set) { return true; } } else { return true; } return false; }
/** * Surcharge plugin panier/action/remplir_panier.php * ajout du numéro de départ d'abonnement */ function action_remplir_panier($arg = null) { if (is_null($arg)) { $securiser_action = charger_fonction('securiser_action', 'inc'); $arg = $securiser_action(); } // le numero en cours $num_encours = sql_fetsel("reference", "spip_produits", "statut = 'publie' AND id_rubrique = '2' AND reference LIKE '%v%'", "", "reference DESC"); $num_encours = str_replace("v", "", $num_encours); // On récupère les infos de l'argument @(list($objet, $id_objet, $quantite, $numero) = explode('-', $arg)); if ($objet == 'produit') { $numero = '-1'; } if ($objet == 'abonnement') { if (intval($numero) <= 0) { $numero = intval($num_encours); if (_DEBUG_VACARME) { spip_log("action remplir panier {$objet} {$id_objet} {$numero} : numero inférieur ou égal à zéro", 'vacarme_debug'); } } } $id_objet = intval($id_objet); $quantite = intval($quantite) ? intval($quantite) : 1; // Il faut cherche le panier du visiteur en cours include_spip('inc/session'); $id_panier = session_get('id_panier'); // S'il n'y a pas de panier, on le crée if (!$id_panier) { include_spip('inc/paniers'); $id_panier = paniers_creer_panier(); } // On ne fait que s'il y a bien un panier existant et un objet valable if ($id_panier > 0 and $objet and $id_objet and $numero) { // Il faut maintenant chercher si cet objet précis est *déjà* dans le panier $quantite_deja = intval(sql_getfetsel('quantite', 'spip_paniers_liens', array('id_panier = ' . $id_panier, 'objet = ' . sql_quote($objet), 'id_objet = ' . $id_objet, 'numero =' . $numero))); //spip_log('quantite deja ='.$quantite_deja,'ajoutpanier'); // Si on a déjà une quantité, on fait une mise à jour if ($quantite_deja > 0) { sql_updateq('spip_paniers_liens', array('quantite' => $quantite_deja + $quantite), 'id_panier = ' . $id_panier . ' and objet = ' . sql_quote($objet) . ' and id_objet = ' . $id_objet . ' and numero = ' . $numero); } else { sql_insertq('spip_paniers_liens', array('id_panier' => $id_panier, 'objet' => $objet, 'id_objet' => $id_objet, 'quantite' => $quantite, 'numero' => $numero)); } // le numéro de départ d'un abonnement /*if ($objet == 'abonnement') { sql_updateq('spip_paniers_liens',array('numero' => $numero),'id_panier = '.$id_panier.' and id_objet ='.$id_objet); }*/ // Mais dans tous les cas on met la date du panier à jour sql_updateq('spip_paniers', array('date' => 'NOW()'), 'id_panier = ' . $id_panier); } }
function session_restore_messages() { if (!session_exists()) { return false; } $messages = session_get('wfpl_messages'); if ($messages !== false) { $messages = string_to_array($messages); if (!(isset($GLOBALS['wfpl_messages']) && is_array($GLOBALS['wfpl_messages']))) { $GLOBALS['wfpl_messages'] = array(); } # messages from the previous run happened first $GLOBALS['wfpl_messages'] = array_merge($messages, $GLOBALS['wfpl_messages']); } session_clear('wfpl_messages'); }
private function initUserData() { # set marker to init the plugin session vars in case there weren't any available if (!@session_get_string('plugin_mite_status_session_vars')) { session_set('plugin_mite_status_session_vars', 'init'); } # initialize the plugin session vars if marked as such if (session_get_string('plugin_mite_status_session_vars') == 'init' || session_get_string('plugin_mite_status_session_vars') == 'reinit') { $this->initSessionVars(); session_set('plugin_mite_status_session_vars', 'isCurrent'); } # init instance properties $this->a_projects = $this->decodeAndOrderByValue(session_get('plugin_mite_user_projects'), 'name'); $this->a_services = $this->decodeAndOrderByValue(session_get('plugin_mite_user_services'), 'name'); $this->a_bindings = session_get('plugin_mite_user_bindungs'); }
function remove($name, $primary_id, $foreign_id, $table, $field1, $field2) { if (!$primary_id || $primary_id == 'false') { $list = session_get($name . '_joiner'); if (!is_array($list)) { $list = array(); } foreach ($list as $k => $v) { if ($v == $foreign_id) { unset($list[$k]); } } session_set($name . '_joiner', $list); return true; } return db_execute(sprintf('delete from %s where %s = ? and %s = ?', $table, $field1, $field2), $primary_id, $foreign_id); }
public function login_success() { $args = get_login_args(); if ($this->session->userdata('pinet_args')) { // If the session has the args, use it $args = $this->session->userdata('pinet_args'); $args = json_decode($args); session_del('pinet_args'); } $token = session_get('pinet_token'); $args->token = $token; $query = array(); foreach ($args as $k => $v) { if (!in_array($k, array('callback', 'oauth_details'))) { $query[] = $k . '=' . $v; } } redirect($args->callback . '?' . implode('&', $query)); }
public function testForSessionDelete() { // 1. session_delete('name'); $this->assertNull(session_get('name')); // 2. session_delete('foo'); $this->assertNull(session_get('foo')); // 3. session_delete('animals'); $this->assertNull(session_get('animals')); // 4. session_delete('user.fullName'); session_delete('user.address.street.room'); session_delete('user.address.zip'); $this->assertEqual(session_get('user'), array('firstName' => 'Sithu', 'lastName' => 'Kyaw', 'age' => 31, 'phone' => '123456', 'address' => array('street' => array('no' => 1, 'street' => 'Main Street'), 'city' => 'Yangon', 'country' => 'Myanmar'))); // 5. session_delete('user'); $this->assertNull(session_get('user')); }
/** * Validate the security token for the given form name based on tokens * stored in the user's session. While checking stored tokens, any that * are more than 3 days old will be purged. * @param string Form name * @return boolean Form is valid */ function form_security_validate($p_form_name) { $t_tokens = session_get('form_security_tokens', array()); # Short-circuit if we don't have any tokens for the given form name if (!isset($t_tokens[$p_form_name]) || !is_array($t_tokens[$p_form_name]) || count($t_tokens[$p_form_name]) < 1) { trigger_error(ERROR_FORM_TOKEN_INVALID, ERROR); return false; } # Get the form input $t_form_token = $p_form_name . '_token'; $t_input = gpc_get_string($t_form_token, ''); # No form input if ('' == $t_input) { trigger_error(ERROR_FORM_TOKEN_INVALID, ERROR); return false; } # Generate a date string of three days ago $t_date = date('Ymd', time() - 3 * 24 * 60 * 60); # Check all stored security tokens, purging old ones as necessary $t_tokens_kept = array(); $t_valid = false; foreach ($t_tokens[$p_form_name] as $t_token) { $t_token_date = substr($t_token, 0, 8); # Newer than three days, check for match, keep otherwise if ($t_date < $t_token_date) { if ($t_token == $t_input) { $t_valid = true; } else { $t_tokens_kept[] = $t_token; } } } # Store only the unpurged tokens in the session $t_tokens[$p_form_name] = $t_tokens_kept; session_set('form_security_tokens', $t_tokens); if (!$t_valid) { trigger_error(ERROR_FORM_TOKEN_INVALID, ERROR); } return $t_valid; }
<?php require_once "../../phplib/util.php"; util_assertNotMirror(); util_assertNotLoggedIn(); $error = util_getRequestParameter('error'); $errorDescription = util_getRequestParameter('error_description'); $code = util_getRequestParameter('code'); $state = util_getRequestParameter('state'); $provider = session_get('openid_connect_provider'); try { $oidc = new OpenIDConnect($provider); if ($error) { throw new OpenIDException($errorDescription); } if (!$code || !$state || $state != session_get('openid_connect_state')) { throw new OpenIDException('Răspuns incorect de la server'); } if (!$provider) { throw new OpenIDException('Sesiune coruptă'); } $token = $oidc->requestToken($code); $data = $oidc->getUserInfo($token); if (!isset($data['sub'])) { throw new OpenIDException('Date incorecte de la furnizor'); } } catch (OpenIDException $e) { FlashMessage::add('Eroare la autentificare: ' . $e->getMessage()); util_redirect('login.php'); } // With OpenID connect, the user is uniquely identified by (provider, sub).
?> > <a href="<?php print admin_url(); ?> view:settings"> <span class="mw-icon-gear " style="font-size: 24px;"></span> <strong> <?php _e("Settings"); ?> </strong> </a> </li> <li id="main-menu-toggle"> <a href="javascript:;"><span class="mw-icon-menu"></span></a> </li> </ul> </li> </ul> <?php $past_page = site_url() . '?editmode=y'; $last_page_front = session_get('last_content_id'); if ($last_page_front == false) { if (isset($_COOKIE['last_page'])) { $last_page_front = $_COOKIE['last_page']; } } if ($last_page_front != false) { $cont_by_url = mw()->content_manager->get_by_id($last_page_front, true); if (isset($cont_by_url) and $cont_by_url == false) { $past_page = mw()->content_manager->get("order_by=updated_at desc&limit=1"); $past_page = mw()->content_manager->link($past_page[0]['id']); } else { $past_page = mw()->content_manager->link($last_page_front); } } else { $past_page = mw()->content_manager->get("order_by=updated_at desc&limit=1");
/** * Initialize the appropriate session handler. * @param string Session ID */ function session_init( $p_session_id=null ) { global $g_session, $g_session_handler; switch( utf8_strtolower( $g_session_handler ) ) { case 'php': $g_session = new MantisPHPSession( $p_session_id ); break; case 'adodb': # Not yet implemented case 'memcached': # Not yet implemented default: trigger_error( ERROR_SESSION_HANDLER_INVALID, ERROR ); break; } if ( ON == config_get_global( 'session_validation' ) && session_get( 'secure_session', false ) ) { session_validate( $g_session ); } }
/** * Autorisation de prévisualiser un contenu * * @param string $faire Action demandée * @param string $type Type d'objet sur lequel appliquer l'action * @param int $id Identifiant de l'objet * @param array $qui Description de l'auteur demandant l'autorisation * @param array $opt Options de cette autorisation * @return bool true s'il a le droit, false sinon **/ function autoriser_previsualiser_dist($faire, $type, $id, $qui, $opt) { // Le visiteur a-t-il un statut prevu par la config ? if (strpos($GLOBALS['meta']['preview'], "," . $qui['statut'] . ",") !== false) { return test_previsualiser_objet_champ($type, $id, $qui, $opt); } // Sinon, on regarde s'il a un jeton (var_token) et on lui pose // le cas echeant une session contenant l'autorisation // de l'utilisateur ayant produit le jeton if ($token = _request('var_previewtoken')) { include_spip('inc/session'); session_set('previewtoken', $token); } // A-t-on un token valable ? if (is_array($GLOBALS['visiteur_session']) and $token = session_get('previewtoken') and preg_match('/^(\\d+)\\*(.*)$/', $token, $r) and $action = 'previsualiser' and include_spip('inc/securiser_action') and ($r[2] == _action_auteur($action, $r[1], null, 'alea_ephemere') or $r[2] == _action_auteur($action, $r[1], null, 'alea_ephemere_ancien'))) { return true; } return false; }
window.close (); // --></script>'; exit; } */ // settings stuff global $cgi; $root = 'inc/app'; loader_import('saf.File.Directory'); if (empty($cgi->format)) { $cgi->format = 'html'; } // get the path root from the boxchooser-path session variable, // and if not then default to /inc/data. $data = array('location' => '/inc/app', 'boxes' => array(), 'name' => $parameters['name']); $path = session_get('boxchooser_path'); if (!$path) { $path = $root; $data['base_nice_url'] = "Standard Boxes"; } else { $data['base_nice_url'] = $path; } $applications = parse_ini_file('inc/conf/auth/applications/index.php'); // get all the data $dir = new Dir($path); foreach ($dir->readAll() as $file) { if ($file != 'CVS' && strpos($file, '.') !== 0) { if (file_exists($path . '/' . $file . '/conf/config.ini.php')) { $config_file = parse_ini_file($path . '/' . $file . '/conf/config.ini.php'); if (!$config_file['boxchooser']) { continue;
<?php // settings stuff global $cgi; if (empty($cgi->format)) { $cgi->format = 'html'; } // get the path root from the imagechooser-path session variable, // and if not then default to /pix. $path = session_get('imagechooser_path'); if (!$path) { $path = '/pix'; } $data = array('location' => false, 'up' => false, 'err' => false, 'subfolders' => array(), 'images' => array()); if (empty($cgi->location) || strpos($cgi->location, $path . '/') !== 0 || strstr($cgi->location, '..') || !@is_dir(site_docroot() . $cgi->location)) { $data['location'] = $path; } else { $data['location'] = $cgi->location; $up = preg_replace('|/[^/]+$|', '', $data['location']); if (!empty($up)) { $data['up'] = $up; } } // get all the data page_title(intl_get('Adding image in') . ': ' . $data['location']); if (empty($cgi->filename)) { $filename = $cgi->file->name; } else { $filename = $cgi->filename; } if ($cgi->file) {
/** * Ajouter les saisies SQL et de recherche * sur les options de config d'une saisie (de champs extras) * * @param array * @return array **/ function iextras_formulaire_verifier($flux) { if ($flux['args']['form'] == 'construire_formulaire' AND strpos($flux['args']['args'][0], 'champs_extras_')===0 AND $nom_ou_id = _request('configurer_saisie') ) { // On ajoute le préfixe devant l'identifiant $identifiant = 'constructeur_formulaire_'.$flux['args']['args'][0]; // On récupère le formulaire à son état actuel $formulaire_actuel = session_get($identifiant); if ($nom_ou_id[0] == '@') { $saisies_actuelles = saisies_lister_par_identifiant($formulaire_actuel); $name = $saisies_actuelles[$nom_ou_id]['options']['nom']; } else { $saisies_actuelles = saisies_lister_par_nom($formulaire_actuel); $name = $nom_ou_id; } // saisie inexistante => on sort if (!isset($saisies_actuelles[$nom_ou_id])) { return $flux; } $nom = 'configurer_' . $name; $table = substr($flux['args']['args'][0], strlen('champs_extras_')); // on ajoute le fieldset de restrictions de champs // (des autorisations pre-reglées en quelque sorte) $saisies_restrictions = array(); // les restrictions de X ne peuvent apparaître que // si l'objet possede un Y. // secteurs -> id_secteur // branches -> id_rubrique // groupes -> id_groupe $desc = lister_tables_objets_sql($table); $types = array( 'secteurs' => 'id_secteur', 'branches' => 'id_rubrique', 'groupes' => 'id_groupe', ); foreach ($types as $type => $champ) { if (isset($desc['field'][$champ])) { $saisies_restrictions[] = array( 'saisie' => 'input', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][restrictions][$type]", 'label' => _T('iextras:label_restrictions_' . $type), 'explication' => _T('iextras:precisions_pour_restrictions_' . $type), 'defaut' => '', ) ); } } // ajout des restrictions voir | modifier par auteur $actions = array('voir', 'modifier'); foreach ($actions as $action) { $saisies_restrictions[] = array( 'saisie' => 'fieldset', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][restrictions][$action]", 'label' => _T('iextras:legend_restrictions_' . $action), ), 'saisies' => array( array( 'saisie' => 'radio', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][restrictions][$action][auteur]", 'label' => _T('iextras:label_restrictions_auteur'), 'defaut' => '', 'datas' => array( '' => _T('iextras:radio_restrictions_auteur_aucune'), 'admin' => _T('iextras:radio_restrictions_auteur_admin'), 'admin_complet' => _T('iextras:radio_restrictions_auteur_admin_complet'), 'webmestre' => _T('iextras:radio_restrictions_auteur_webmestre'), ) ) ) ) ); } $flux['data'][$nom] = saisies_inserer($flux['data'][$nom], array( 'saisie' => 'fieldset', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][restrictions]", 'label' => _T('iextras:legend_restriction'), ), 'saisies' => $saisies_restrictions )); // on récupère les informations de la saisie // pour savoir si c'est un champs éditable (il a une ligne SQL) // et dans ce cas, on ajoute les options techniques $type_saisie = $saisies_actuelles[$nom_ou_id]['saisie']; $saisies_sql = saisies_lister_disponibles_sql(); if (isset($saisies_sql[$type_saisie])) { // liste 'type_de_saisie' => 'Titre de la saisie' $liste_saisies = array(); foreach ($saisies_sql as $s=>$d) { $liste_saisies[$s] = $d['titre']; } $sql = $saisies_sql[$type_saisie]['defaut']['options']['sql']; $flux['data'][$nom] = saisies_inserer($flux['data'][$nom], array( 'saisie' => 'fieldset', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][options_techniques]", 'label' => _T('iextras:legend_options_techniques'), ), 'saisies' => array( array( 'saisie' => 'input', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][sql]", 'label' => _T('iextras:label_sql'), 'obligatoire' => 'oui', 'size' => 50, 'defaut' => $sql ) ), array( 'saisie' => 'oui_non', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][rechercher]", 'label' => _T('iextras:label_rechercher'), 'explication' => _T('iextras:precisions_pour_rechercher'), 'defaut' => '' ) ), array( 'saisie' => 'input', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][rechercher_ponderation]", 'label' => _T('iextras:label_rechercher_ponderation'), 'explication' => _T('iextras:precisions_pour_rechercher_ponderation'), 'defaut' => 2, 'afficher_si' => "@saisie_modifiee_${name}[options][rechercher]@ != ''", ) ), array( 'saisie' => 'radio', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][traitements]", 'label' => _T('iextras:label_traitements'), 'explication' => _T('iextras:precisions_pour_traitements'), 'defaut' => '', 'datas' => array( '' => _T('iextras:radio_traitements_aucun'), '_TRAITEMENT_TYPO' => _T('iextras:radio_traitements_typo'), '_TRAITEMENT_RACCOURCIS' => _T('iextras:radio_traitements_raccourcis'), ) ) ), array( 'saisie' => 'oui_non', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][versionner]", 'label' => _T('iextras:label_versionner'), 'explication' => _T('iextras:precisions_pour_versionner'), 'defaut' => '' ) ), array( 'saisie' => 'selection', 'options' => array( 'nom' => "saisie_modifiee_${name}[options][nouveau_type_saisie]", 'label' => _T('iextras:label_saisie'), 'explication' => _T('iextras:precisions_pour_nouvelle_saisie'), 'attention' => _T('iextras:precisions_pour_nouvelle_saisie_attention'), 'defaut' => $type_saisie, 'datas' => $liste_saisies ) ), ))); } } return $flux; }
/** * @internal * * Loads the text .po file and returns array of translations * @param string $filename Text .po file to load * @return mixed Array of translations on success or FALSE on failure */ function __i18n_load() { global $lc_lang; global $lc_translation; global $lc_translationEnabled; if ($lc_translationEnabled == false) { return false; } $filename = I18N . $lc_lang . '.po'; if (!file_exists($filename)) { return false; } # Open the po file if (!($file = fopen($filename, 'r'))) { session_delete("i18n.{$lc_lang}"); return false; } # if the respective po file is already parsed if ($translations = session_get("i18n.{$lc_lang}")) { return $lc_translation[$lc_lang] = $translations; } # parse the file session_delete("i18n.{$lc_lang}"); /** * Thanks to CakePHP for the po file parsing logic in the do...while loop * @package Cake.I18n * @version 1.2.0.4116 * @license http://www.opensource.org/licenses/mit-license.php MIT License */ $type = 0; $translations = array(); $translationKey = ''; $plural = 0; $header = ''; do { $line = trim(fgets($file)); if ($line === '' || $line[0] === '#') { continue; } if (preg_match("/msgid[[:space:]]+\"(.+)\"\$/i", $line, $regs)) { $type = 1; $translationKey = strtolower(stripcslashes($regs[1])); } elseif (preg_match("/msgid[[:space:]]+\"\"\$/i", $line, $regs)) { $type = 2; $translationKey = ''; } elseif (preg_match("/^\"(.*)\"\$/i", $line, $regs) && ($type == 1 || $type == 2 || $type == 3)) { $type = 3; $translationKey .= strtolower(stripcslashes($regs[1])); } elseif (preg_match("/msgstr[[:space:]]+\"(.+)\"\$/i", $line, $regs) && ($type == 1 || $type == 3) && $translationKey) { $translations[$translationKey] = stripcslashes($regs[1]); $type = 4; } elseif (preg_match("/msgstr[[:space:]]+\"\"\$/i", $line, $regs) && ($type == 1 || $type == 3) && $translationKey) { $type = 4; $translations[$translationKey] = ''; } elseif (preg_match("/^\"(.*)\"\$/i", $line, $regs) && $type == 4 && $translationKey) { $translations[$translationKey] .= stripcslashes($regs[1]); } elseif (preg_match("/msgid_plural[[:space:]]+\".*\"\$/i", $line, $regs)) { $type = 6; } elseif (preg_match("/^\"(.*)\"\$/i", $line, $regs) && $type == 6 && $translationKey) { $type = 6; } elseif (preg_match("/msgstr\\[(\\d+)\\][[:space:]]+\"(.+)\"\$/i", $line, $regs) && ($type == 6 || $type == 7) && $translationKey) { $plural = $regs[1]; $translations[$translationKey][$plural] = stripcslashes($regs[2]); $type = 7; } elseif (preg_match("/msgstr\\[(\\d+)\\][[:space:]]+\"\"\$/i", $line, $regs) && ($type == 6 || $type == 7) && $translationKey) { $plural = $regs[1]; $translations[$translationKey][$plural] = ''; $type = 7; } elseif (preg_match("/^\"(.*)\"\$/i", $line, $regs) && $type == 7 && $translationKey) { $translations[$translationKey][$plural] .= stripcslashes($regs[1]); } elseif (preg_match("/msgstr[[:space:]]+\"(.+)\"\$/i", $line, $regs) && $type == 2 && !$translationKey) { $header .= stripcslashes($regs[1]); $type = 5; } elseif (preg_match("/msgstr[[:space:]]+\"\"\$/i", $line, $regs) && !$translationKey) { $header = ''; $type = 5; } elseif (preg_match("/^\"(.*)\"\$/i", $line, $regs) && $type == 5) { $header .= stripcslashes($regs[1]); } else { unset($translations[$translationKey]); $type = 0; $translationKey = ''; $plural = 0; } } while (!feof($file)); fclose($file); $merge[''] = $header; $lc_translation[$lc_lang] = array_merge($merge, $translations); # Store the array of translations in Session session_set("i18n.{$lc_lang}", $lc_translation[$lc_lang]); return $lc_translation; }
/** * Fonction de modification du mot de passe * * On se bind au LDAP cette fois sous l'identite de l'utilisateur, car le * compte generique defini dans config/ldap.php n'a generalement pas (et * ne devrait pas avoir) les droits suffisants pour faire la modification. * @param $login * @param $new_pass * @param $id_auteur * @param string $serveur * @return bool * informe du succes ou de l'echec du changement du mot de passe */ function auth_ldap_modifier_pass($login, $new_pass, $id_auteur, $serveur = '') { if (is_null($new_pass) or auth_ldap_verifier_pass($login, $new_pass, $id_auteur, $serveur) != '') { return false; } if (!($ldap = auth_ldap_connect($serveur))) { return ''; } $link = $ldap['link']; include_spip("inc/session"); $dn = session_get('ldap_dn'); if ('' == $dn) { return false; } if (!ldap_bind($link, $dn, session_get('ldap_password'))) { return false; } $encoded_pass = "******" . base64_encode(pack("H*", md5($new_pass))); $success = ldap_mod_replace($link, $dn, array('userPassword' => $encoded_pass)); return $success; }
/** * Requests an access token. **/ function requestToken($code) { $this->fetchWellKnownConfig(); $clientId = session_get('openid_connect_client'); $secret = session_get('openid_connect_secret'); if (!$clientId || !$secret) { throw new OpenIDException('Autentificare eșuată.'); } if (!isset($this->wellKnownConfig['token_endpoint'])) { throw new OpenIDException('Nu pot cere un token.'); } $url = $this->wellKnownConfig['token_endpoint']; $params = array('client_id' => $clientId, 'client_secret' => $secret, 'code' => $code, 'grant_type' => 'authorization_code', 'redirect_uri' => $this->getReturnTo()); $query = http_build_query($params, null, '&'); $jsonResult = util_makePostRequest($url, $query); $result = json_decode($jsonResult, true); if (!$result || isset($result['error'])) { throw new OpenIDException('Eroare la cererea unui token'); } if (!isset($result['id_token'])) { throw new OpenIDException('Furnizorul dumneavoastră a refuzat autorizarea'); } $this->claims = $this->decodeJWT($result['id_token']); // verify the claims if ($this->claims['iss'] != $this->wellKnownConfig['issuer'] || $clientId != $this->claims['aud'] && !in_array($clientId, $this->claims['aud']) || $this->claims['nonce'] != session_get('openid_connect_nonce')) { throw new OpenIDException('Nu pot verifica tokenul. Posibilă încercare de interceptare a sesiunii!'); } return $result['access_token']; }