Skip to content
Snippets Groups Projects
VERSIONS_DEV.md 3.41 KiB
Newer Older
Alex Arnaud's avatar
Alex Arnaud committed
# Class_Entity

## Description

In PHP we have StdClass on which we can set and get any direct property

```php
$o = new StdClass();
$o->title = 'my title';
echo $o->title; // -> my title
```

_Class_Entity_ provides same functionality with getter and setter methods


```php
$o = new Class_Entity();
$o->setTitle('my title');
echo $o->getTitle(); // -> my title
```

## Implementation

Any call to set*() will be catched to populate an internal key => value array, it will return $this to chain calls.
Any call to get*() will look for an existing key in internal array and will return its value or null if not found.

Keys of internal array are not transformed in any way
* setMyValue will produce a 'MyValue' key
* set_my_value will produce a '_my_value' key
* setmyvalue will produce a 'myvalue' key

You can define default values by setting

```php
protected $_attribs = ['MyValue' => ''];
```

Then a getMyValue() call will return an empty string instead of null if not set.

## Use cases

### In tests

When you have an API relying on getter and setter methods you can provide a _Class_Entity_ as a mock and easily verify that an attribute has been set or prepare it with attributes needed by tested code.

### In general

When you are modeling an object and don't want to write all those standard getters and setters just extend Class_Entity.



# ticket #22209

## Search result

Reification of the array returned by _Class_MoteurRecherche_ that contained queries for facets & record fetch. Now we have _Class_MoteurRecherche_Result_ that depends on search engine & search criterias. Noticeable methods:

* _recordsCollect($closure)_: for parsing all records. $closure must accept a record (_Class_Notice_).
* _acceptCriteresVisitor($visitor)_: for parsing search criterias


## Atom search feed generation

Add _ZendAfi_Feed_SearchResult_ as a _Class_MoteurRecherche_Result_ visitor that renders a search result as Atom feed.



Laurent's avatar
Laurent committed
# ticket #24821 

## Notifications

In controllers, notifcations can be rendered as popup instead of static bars:

```php
$this->getHelper('notify')->bePopup()
```

_ZendAfi\_Controller\_Action\_Helper\_FlashMessenger_ notifications now stored as array and can accept parameters:
```php
	public function addNotification($message, $options = []) {
		$params = ['message' => $message] + $options;
		$this->addMessage([ZendAfi_Controller_Action_Helper_FlashMessenger::NOTIFICATION => $params]);
	}
```


and _FlashMessengerNotification_ represent a notification. For example to get all popups notifications:

```php
(new ZendAfi_Controller_Action_Helper_FlashMessenger())
  ->getNotifications()
  ->select(function($n) {return $n->isPopup();});
  ```


Users ILS subscription ('abonnement') related functions moved to new _Class\_User\_ILSSubscription_.


See _Class\_Users>>registerNotificationsOn_ for notifications usage.


## ILS Web services

Add _Class\_WebService\_SIGB\_Reservation>>isWaitingToBePulled_ that returns _true_ when holded document is available in library. Works for: Nanook, Koha, Microbib, Aloes, Carthame, Orphée, Pergame.



# Reload module content with AJAX

On module ajax link, add tag attributes: 'data-reload-module = true'.

For example:

```php
$this->view->tagAnchor($reload_link,
                       '',	
                       ['data-ajax-reload' => 'true',	
                       'class' => 'reload-module',
                       'title' => $this->view->_('Recharger')]);
```

See public/opac/js/reload_module.js