<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">Hi Adam,<br>
<br>
I think the function is correct. Let me try to explain what I
understand:<br>
<br>
In line 1309:<br>
<br>
$query="select smownerid from vtiger_crmentity where crmid = ?";<br>
<br>
We get the ownerid of the record passed in as a parameter, but we
don't know if this ID belongs to a user or to a group.<br>
<br>
The next step is to make sure we got an ownerid:<br>
<br>
if($adb->num_rows($result) > 0)<br>
<br>
Ok, once inside this "if", we need to know if the ID we have is a
user or a group, so we launch the SQL:<br>
<br>
<br>
$sql_result = $adb->pquery("select count(*) as count from
vtiger_users where id = ?",array($ownerId));<br>
<br>
if the ownerid is of a user, this will return 1, if it belongs to
a group it will return 0, thus the next "if" which fills the array
(with only one ID always).<br>
<br>
So, I'm not sure what the stock functions is sending in, probably
still the prior to 5.4.0 product handler instead of the new 5.4.0
assigned user, but I think the getRecordOwnerId() function is
correct.<br>
<br>
Joe<br>
TSolucio<br>
<br>
<br>
<br>
On 23/01/13 21:24, Adam Heinz wrote:<br>
</div>
<blockquote
cite="mid:CAKBdvM-xS5nQK5=STj1x-R4QfrJyvHsBvoG3urOCbvotb_3d_g@mail.gmail.com"
type="cite">
<div dir="ltr">I'm mucking around with an aftersave handler for
the Quotes module today and I started seeing some warnings
getting logged. It looks like the product stock email is
causing them, but when I trace into the code [1] my jaw hit the
floor. Am I reading this right? This function seems to think
that you can get back more than one user for a given id, which
is impossible, since id is the primary key for vtiger_users. So
then it passes the array('Users' => ID) to getOwnerName
to getOwnerNameList and eventually blows up because it tries to
use an array for an array key. To keep the blast radius small,
I patched around the error [2], but I think the moral of the
story is that getRecordOwnerId() should be rewritten or removed
and all uses of it changed.
<div>
<br>
</div>
<div>[1] <a moz-do-not-send="true"
href="http://trac.vtiger.com/cgi-bin/trac.cgi/browser/vtigercrm/branches/5.4.0/include/utils/utils.php#L1303">http://trac.vtiger.com/cgi-bin/trac.cgi/browser/vtigercrm/branches/5.4.0/include/utils/utils.php#L1303</a></div>
<div>[2]</div>
<div>
<div>Index: include/utils/InventoryUtils.php</div>
<div>===================================================================</div>
<div>--- include/utils/InventoryUtils.php<span class=""
style="white-space:pre"> </span>(revision 3777)</div>
<div>+++ include/utils/InventoryUtils.php<span class=""
style="white-space:pre"> </span>(working copy)</div>
<div>@@ -110,7 +110,7 @@</div>
<div> <span class="" style="white-space:pre"> </span>if($upd_qty
< $reorderlevel)</div>
<div> <span class="" style="white-space:pre"> </span>{</div>
<div> <span class="" style="white-space:pre"> </span>//send
mail to the handler</div>
<div>-<span class="" style="white-space:pre"> </span>$handler
= getRecordOwnerId($product_id);</div>
<div>+<span class="" style="white-space:pre"> </span>$handler
= $adb->database->GetOne("SELECT smownerid FROM
vtiger_crmentity WHERE crmid = ?", array($product_id));</div>
<div> <span class="" style="white-space:pre"> </span>$handler_name
= getOwnerName($handler);</div>
<div> <span class="" style="white-space:pre"> </span>if(vtws_isRecordOwnerUser($handler))
{</div>
<div> <span class="" style="white-space:pre"> </span>$to_address
= getUserEmail($handler);</div>
</div>
<div><br>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
<a class="moz-txt-link-freetext" href="http://www.vtiger.com/">http://www.vtiger.com/</a></pre>
</blockquote>
<br>
</body>
</html>