Announcement

Collapse
No announcement yet.

Formula PregReplace

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Formula PregReplace

    Hi,
    just for respond to GitHub, here a sample code for Formula :

    custom/Espo/Custom/Resources/metadata/app/formula.json

    PHP Code:
    {
        
    "functionList": [ 
            
    "__APPEND__",
            {
                
    "name""string\\pregReplace",
                
    "insertText""string\\pregReplace(PATTERN, REPLACEMENT, STRING)"
            
    }
        ],
        
    "functionClassNameMap": {
            
    "string\\pregReplace""\\Espo\\Custom\\Core\\Formula\\Functions\\StringGroup\\PregReplace"
        
    }

    custom/Espo/Custom/Core/Formula/Functions/StringGroup/PreReplace.php

    PHP Code:
    <?php

    /************************************************************************

     * This file is part of EspoCRM.

     *

     * EspoCRM - Open Source CRM application.

     * Copyright (C) 2014-2018 Yuri Kuznetsov, Taras Machyshyn, Oleksiy Avramenko

     * Website: http://www.espocrm.com

     *

     * EspoCRM is free software: you can redistribute it and/or modify

     * it under the terms of the GNU General Public License as published by

     * the Free Software Foundation, either version 3 of the License, or

     * (at your option) any later version.

     *

     * EspoCRM is distributed in the hope that it will be useful,

     * but WITHOUT ANY WARRANTY; without even the implied warranty of

     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

     * GNU General Public License for more details.

     *

     * You should have received a copy of the GNU General Public License

     * along with EspoCRM. If not, see http://www.gnu.org/licenses/.

     *

     * The interactive user interfaces in modified source and object code versions

     * of this program must display Appropriate Legal Notices, as required under

     * Section 5 of the GNU General Public License version 3.

     *

     * In accordance with Section 7(b) of the GNU General Public License version 3,

     * these Appropriate Legal Notices must retain the display of the "EspoCRM" word.

     ************************************************************************/




    namespace Espo\Custom\Core\Formula\Functions\StringGroup;




    use 
    \Espo\Core\Exceptions\Error;




    class 
    PregReplace extends \Espo\Core\Formula\Functions\Base

    {

        public function 
    process(\StdClass $item)

        {

            if (!
    property_exists($item'value')) {

                throw new 
    Error();

            }



            if (!
    is_array($item->value)) {

                throw new 
    Error();

            }



            if (
    count($item->value) < 2) {

                throw new 
    Error();

            }



            
    $pattern $this->evaluate($item->value[0]);

            
    $replacement $this->evaluate($item->value[1]);

            
    $string $this->evaluate($item->value[2]);

            
    // "/[^0-9]/"

            
    return preg_replace$pattern $replacement$string);

        }

    }
    Clear Cache/Rebuild


Working...
X