You "think" wrongly. A static variable has local scope to the function declaring the static variable.
On Mon, Jan 21, 2013 at 11:03 AM, Lluís Forns <enb...@gmail.com> wrote: > I think static are also available to other functions, use them to store > cached information across my code and they work. > > > 2013/1/21 Darren Oh <darre...@sidepotsinternational.com> >> >> Static variables are only saved for a single function. Global variables >> are available to all functions during a single page request. Session >> variables are available to all page requests during a session. >> >> On Jan 21, 2013, at 10:08 AM, Lluís Forns wrote: >> >> Darren, thanks for the link. What is the difference between using global >> or static to save the data? >> >> >> >> 2013/1/21 Lluís Forns <enb...@gmail.com> >>> >>> My code was from a module where impersonation recursively could happen, >>> this is why I use a stack to save user state. I am also saving it to session >>> and not using a static variable because I may uses batch functions. >>> >>> But I see some problems right now: >>> - To be safe impersonation should be saved into static variables (and >>> "using session_save_session(FALSE);" ), so if anything goes wrong, $user is >>> not afected. >>> - If I want to be able to execute every Rules action in a batch, I need >>> to change user "per action" >>> >>> Any idea of how to "inject" code before and after a rule action? >>> >>> >>> 2013/1/21 Walt Daniels <wdli...@gmail.com> >>>> >>>> We do the latter simple trick in our store code so we can show people >>>> the member prices. We have a dummy id that is a member so we switch to it, >>>> pick up the price and use it so we can show both member and non-member >>>> prices on the screen. >>>> >>>> >>>> On Mon, Jan 21, 2013 at 9:18 AM, Christian López Espínola >>>> <penyask...@computer.org> wrote: >>>>> >>>>> Haven't tested your code, but maybe you want to take a look at >>>>> masquerade_switch_user and masquerade_switch_back: >>>>> http://drupalcode.org/project/masquerade.git/blob/HEAD:/masquerade.module. >>>>> >>>>> And if the impersonation is only for the given request, maybe just >>>>> >>>>> global $user; >>>>> $previous = $user; >>>>> $user = user_load($uid); >>>>> // Do your stuff. >>>>> $user = $previous; >>>>> >>>>> would work. >>>>> >>>>> >>>>> >>>>> On Mon, Jan 21, 2013 at 10:37 AM, Lluís Forns <enb...@gmail.com> wrote: >>>>>> >>>>>> Some of my scheduled task needs to run as the user who triggered them >>>>>> (not anonymous neither admin); so I thought of writing two actions: >>>>>> - One to impersonate a user, which will receive uid as an argument. >>>>>> - Another to undo the impersonate. >>>>>> All the called actions should be between them. >>>>>> >>>>>> Anybody see any fault in this idea or the actions code? >>>>>> >>>>>> Thanks. >>>>>> >>>>>> function wu_action_impersonate($uid) { >>>>>> global $user; >>>>>> if (!array_key_exists('wu_action_impersonate', $_SESSION)) { >>>>>> $_SESSION['wu_action_impersonate'] = array(); >>>>>> } >>>>>> array_push($_SESSION['wu_action_impersonate'], $user); >>>>>> session_save_session(FALSE); >>>>>> $user = user_load($uid); >>>>>> user_load($uid); >>>>>> } >>>>>> >>>>>> function wu_action_unimpersonate() { >>>>>> global $user; >>>>>> if (array_key_exists('wu_action_impersonate', $_SESSION)) { >>>>>> if (!empty($_SESSION['wu_action_impersonate'])) { >>>>>> $user = array_pop($_SESSION['wu_action_impersonate']); >>>>>> } >>>>>> if (empty($_SESSION['wu_action_impersonate'])) { >>>>>> unset($_SESSION['wu_action_impersonate']); >>>>>> } >>>>>> } >>>>>> session_save_session(TRUE); >>>>>> } >>>>>> >>>>>> -- >>>>>> *Ser freak no és imprescindible per ser informàtic, però ajuda. >>>>>> *La vida no ha de ser feliç, ha de ser plena. >>>>>> *Abans d'imprimir aquest missatge, pensa en el medi ambient. >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Cheers, >>>>> >>>>> Christian López Espínola <penyaskito AT computer DOT org> >>>>> http://twitter.com/penyaskito | http://penyaskito.com >>>> >>>> >>> >>> >>> >>> -- >>> *Ser freak no és imprescindible per ser informàtic, però ajuda. >>> *La vida no ha de ser feliç, ha de ser plena. >>> *Abans d'imprimir aquest missatge, pensa en el medi ambient. >> >> >> >> >> -- >> *Ser freak no és imprescindible per ser informàtic, però ajuda. >> *La vida no ha de ser feliç, ha de ser plena. >> *Abans d'imprimir aquest missatge, pensa en el medi ambient. >> >> > > > > -- > *Ser freak no és imprescindible per ser informàtic, però ajuda. > *La vida no ha de ser feliç, ha de ser plena. > *Abans d'imprimir aquest missatge, pensa en el medi ambient. -- Earnie -- https://sites.google.com/site/earnieboyd