There is a function in opencart which I need to replace as following:

protected function validateDelete() {
        if (!$this->user->hasPermission('modify', 'catalog/download')) {
            $this->error['warning'] = $this->language->get('error_permission');

Should be:

protected function validateDelete() {
        if (!$this->user->hasPermission('delete', 'catalog/download')) {
            $this->error['warning'] = $this->language->get('error_permission_delete');

I have tried:

<search position="replace"><![CDATA[
            protected function validateDelete() {
                if (!$this->user->hasPermission('modify',]]></search>
            <add><![CDATA[
            protected function validateDelete() {
                if (!$this->user->hasPermission('delete',
            ]]></add>

but its not working. The third line appears in multiple locations, so cant just replace in single line.

Please help

有帮助吗?

解决方案

Multiple line search cannot be done in vqmod. So you need to use the vqmod index attribute. If the “Search” string is 'hello' and there are 5 'hello's in the file, but you only want to replace the 1st and 3rd, use Index: 1,3.

So change your vqmod code as below:

<operation>
    <search position="replace" index="3"><![CDATA[if (!$this->user->hasPermission('modify', 'catalog/download')) {]]></search>
    <add><![CDATA[
        if (!$this->user->hasPermission('delete', 'catalog/download')) {
    ]]></add>
</operation>
<operation>
    <search position="replace" index="3"><![CDATA[$this->error['warning'] = $this->language->get('error_permission');]]></search>
    <add><![CDATA[
        $this->error['warning'] = $this->language->get('error_permission_delete');
    ]]></add>
</operation>

Don't forget to update the index value.

Reference links: https://sankartypo3.wordpress.com/2013/11/25/opencart-vqmod-tutorial/ , http://code.google.com/p/vqmod/wiki/Scripting

Have a nice day !!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top