Elgg\SystemMessagesService::saveRegisters PHP Method

saveRegisters() public method

The method of displaying these messages differs depending upon plugins and viewtypes. The core default viewtype retrieves messages in {@link views/default/page/shells/default.php} and displays messages as javascript popups. Messages are stored as strings in the Elgg session as ['msg'][$register] array.
public saveRegisters ( RegisterSet $set ) : void
$set Elgg\SystemMessages\RegisterSet The set of registers
return void
    public function saveRegisters(RegisterSet $set)
    {
        $filter = function ($el) {
            return is_string($el) && $el !== "";
        };
        $data = [];
        foreach ($set as $prop => $values) {
            if (!is_array($values)) {
                continue;
            }
            $arr = array_filter($values, $filter);
            if ($arr) {
                $data[$prop] = array_values($arr);
            }
        }
        $this->session->set(self::SESSION_KEY, $data);
    }

Usage Example

Ejemplo n.º 1
0
 function testCanModifyRegisterSet()
 {
     $this->svc->addSuccessMessage(['s2', 's3']);
     $this->svc->addErrorMessage(['e1', 'e2', 'e3']);
     $set = $this->svc->loadRegisters();
     $this->assertEquals(['s2', 's3'], $set->success);
     $this->assertEquals(['e1', 'e2', 'e3'], $set->error);
     // will be filtered
     $set->success = ['', 's2'];
     $set->error = ['e1', false];
     $set->notice = ['n1', 'n2'];
     $set->invalid = true;
     $this->svc->saveRegisters($set);
     $this->assertEquals(['success' => ['s2']], $this->svc->dumpRegister('success'));
     $this->assertEquals(['error' => ['e1']], $this->svc->dumpRegister('error'));
     $this->assertEquals(['notice' => ['n1', 'n2']], $this->svc->dumpRegister());
 }