or use a drupal_set_message inside user access, possibly a dsm(debug_backtrace()) if you&#39;re patient..<br><br><div class="gmail_quote">On Fri, Oct 31, 2008 at 12:27 AM, David Metzler <span dir="ltr">&lt;<a href="mailto:metzlerd@metzlerd.com">metzlerd@metzlerd.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div style="">
It sounds like you&#39;re suggesting that $perm, a static variable within user_access() is being modified without user_access being called, but within a single page load. &nbsp; That doesn&#39;t seem possible in PHP, unless there is a PHP bug. &nbsp;Static variables are supposed to be local in scope to the functions that create them. To prove beyond a shadow of doubt, put a $debug statement in at the very beginning of the function user_access and another at the very end of the function. &nbsp;(just before the return). &nbsp;If what you&#39;re saying is true, there will be evidence in the &quot;begin&quot; value being different than the &quot;end&quot; value prior to it.&nbsp;<div>
<br><div>What I suspect is that another module is calling user_access, (perhaps with a different user, or modified roles in between) in between. &nbsp;If you serialize the $user and $perm variables within user_access, you ought to be able to tell. &nbsp; Myself I&#39;d be greping for calls in the modules you suspect.&nbsp;</div>
<div><br></div><div>Dave<br><div><div>On Oct 30, 2008, at 10:32 AM, Ron Parker wrote:</div><br><blockquote type="cite"><span style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"><div style="font-family: Arial; font-size: 10pt; color: rgb(0, 0, 0);">
<div style="margin: 0px;">The static<span>&nbsp;</span><span style="font-weight: bold;">$perm</span><span>&nbsp;</span>variable in<span>&nbsp;</span><span style="font-weight: bold;">user_access()</span><span>&nbsp;</span>contains the permissions that users have.&nbsp; When<span>&nbsp;</span><code><span style="font-family: arial,helvetica,sans-serif;"><span style="font-weight: bold;">user_access(&#39;ClearCache&#39;, NULL, TRUE)</span><span>&nbsp;</span>is executed, the static<span>&nbsp;</span><span style="font-weight: bold;">$perm</span><span>&nbsp;</span>value is emptied and re-filled with permissions from the current roles in the<span>&nbsp;</span><span style="font-weight: bold;">$user</span><span>&nbsp;</span>object.&nbsp; Theorectically, when<span>&nbsp;</span><span style="font-weight: bold;">user_access()</span><span>&nbsp;</span>is next called, assuming the $<span style="font-weight: bold;">user</span><span>&nbsp;</span>object contains the same roles, the<span style="font-weight: bold;">$perm</span><span>&nbsp;</span>variable should contain the same permissions which were cached in the first call.&nbsp; This is what happened in Drupal 5.x and the earlier versions of 6.x.&nbsp; This is NOT happening (at least consistently) in the most recent versions of the<span>&nbsp;</span><span style="font-weight: bold;">user.module</span>.</span><br>
</code></div><div style="margin: 0px;"><code><br></code></div><div style="margin: 0px;">I&#39;ve written a bunch of debug code in the<span>&nbsp;</span><span style="font-weight: bold;">user, node<span>&nbsp;</span></span>and<span>&nbsp;</span><span style="font-weight: bold;">ogur<span>&nbsp;</span></span>modules and now have more details. I am printing the output of<span>&nbsp;</span><span style="font-weight: bold;">user_access</span>() every time it is called.</div>
<div style="margin: 0px;"><br></div><div style="margin: 0px;">When I issue:<br></div><div><code>user_access(&#39;ClearCache&#39;, NULL, TRUE)</code></div><br>Static<span>&nbsp;</span><span style="font-weight: bold;">$perm</span><span>&nbsp;</span>variable is cleared and re-filled with permissions from current<span>&nbsp;</span><span style="font-weight: bold;">$user</span><span>&nbsp;</span>object. This is correct.<div style="margin: 0px;">
<br></div><div style="margin: 0px;">When<span>&nbsp;</span><span style="font-weight: bold;">module_invoke</span>() is immediately executed next:<br></div><div><code>module_invoke(&#39;node_content&#39;, &#39;access&#39;, &#39;create&#39;, &#39;story&#39;, $user)</code></div>
<br>It will now make another call to<span>&nbsp;</span><span style="font-weight: bold;">user_access()</span>:<br><div><code>user_access(&#39;create story content&#39;, $user)</code></div><br>The<span>&nbsp;</span><span style="font-weight: bold;">$user</span><span>&nbsp;</span>object still contains the same roles. The<span>&nbsp;</span><span style="font-weight: bold;">$perm</span><span>&nbsp;</span>variable now contains values. This is correct.&nbsp; But the values in<span style="font-weight: bold;"><span>&nbsp;</span>$perm</span><span>&nbsp;</span>are NOT the same as those inserted during the<span style="font-weight: bold;">ClearCache</span><span>&nbsp;</span>call above! They have changed, and NOT from the<span>&nbsp;</span><span style="font-weight: bold;">user_access()</span><span>&nbsp;</span>function (which I am monitoring)! So the question is: Why has this<span>&nbsp;</span><span style="font-weight: bold;">$perm</span><span>&nbsp;</span>value changed?<div style="margin: 0px;">
<br></div><div style="margin: 0px;">So far, I&#39;ve found this behaviour occurs with OGUR when one of the following modules is installed:</div><ul><li>taxonomy_access</li><li>tac_lite</li><li>menu_breadcrumb</li><li>admin_menu</li>
</ul><div style="margin: 0px;">I so far am unable to discover what it is about these modules which is causing this problem.&nbsp; This did not occur in 5.x and earlier 6.x versions of Drupal.<span>&nbsp;</span><br></div><div style="margin: 0px;">
<br></div><div style="margin: 0px;">Please, please, please help!</div><div style="margin: 0px;"><br></div><div style="margin: 0px;">-ron<br></div><div style="margin: 0px;"><br></div></div></span><br></blockquote></div><br>
</div></div></div></blockquote></div><br>