<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">What happens if you extend the Vtiger_Record_model and then override it? For the record I myself wondering if it’s worth implementing the OOP, sure a “lavoraccio” which loosely translates to harsh work/bad work from Italian considering the amount of things to rewrite :dead:<div class=""><br class=""><div class="">
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div>Best Regards,<br class=""><b class="">Sukhdev Mohan</b> | <b class="">Software Developer</b></div></div></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<div><br class=""><blockquote type="cite" class=""><div class="">Il giorno 10 dic 2020, alle ore 13:28, Alan Lord <<a href="mailto:alanslists@gmail.com" class="">alanslists@gmail.com</a>> ha scritto:</div><br class="Apple-interchange-newline"><div class=""><div class="">In a custom module I would like to extend the Record Model's getInstanceById() method.<br class=""><br class="">I have a routine I would like run which is a bit like a constructor, but because of the way the getInstanceById works, I can't use a constructor because the object is instantiated without a recordId - which I need. This happens after the object has been instantiated...<br class=""><br class=""><blockquote type="cite" class=""><span class="Apple-tab-span" style="white-space:pre">    </span>public static function getInstanceById($recordId, $module=null) {<br class=""></blockquote>...<br class=""><blockquote type="cite" class=""><span class="Apple-tab-span" style="white-space:pre">        </span>$instance = new $modelClassName();<br class=""><span class="Apple-tab-span" style="white-space:pre">     </span>return $instance->setData($focus->column_fields)->set('id',$recordId)->setModuleFromInstance($module)->setEntity($focus);<br class=""></blockquote><br class="">So in my custom Record Model have tried doing something like...<br class=""><br class=""><blockquote type="cite" class=""><span class="Apple-tab-span" style="white-space:pre">   </span>public static function getInstanceById($recordId, $module=null) {<br class=""><span class="Apple-tab-span" style="white-space:pre">      </span>    $instance = parent::getInstanceById($recordId, $module=null);<br class=""><span class="Apple-tab-span" style="white-space:pre">       </span>    $instance->validateConfig();<br class=""><span class="Apple-tab-span" style="white-space:pre">     </span>    return $instance;<br class=""><span class="Apple-tab-span" style="white-space:pre">   </span>}<br class=""></blockquote><br class="">But of course, because the "normal" way to call this method, wherever you are in Vtiger, is to call "Vtiger_Record_Model::getInstanceById(...)" then my extended method is never actually called.<br class=""><br class="">So to make use of my extended method, I have to use "MyCustom_Record_Model::getInstanceById(...)" explicitly to achieve the required result.<br class=""><br class="">Is this design choice deliberate? Is there another way?<br class=""><br class="">Cheers<br class=""><br class="">Al<br class=""><br class="">_______________________________________________<br class=""><a href="http://www.vtiger.com/" class="">http://www.vtiger.com/</a><br class=""></div></div></blockquote></div><br class=""></div></body></html>