<feed xmlns='http://www.w3.org/2005/Atom'>
<title>FreshRSS (Customized)/app/Services/ExportService.php, branch 1.20.0</title>
<subtitle>Customized version of FreshRSS, a self-hosted RSS feed aggregator</subtitle>
<id>https://git.rdnlsmith.com/fresh-rss-custom/atom?h=1.20.0</id>
<link rel='self' href='https://git.rdnlsmith.com/fresh-rss-custom/atom?h=1.20.0'/>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/'/>
<updated>2022-08-08T10:04:02+00:00</updated>
<entry>
<title>Refactor entry-to-GReader API format (#4490)</title>
<updated>2022-08-08T10:04:02+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2022-08-08T10:04:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=82ac1d1e676f93b1567eba608c00c6edaf401a9e'/>
<id>urn:sha1:82ac1d1e676f93b1567eba608c00c6edaf401a9e</id>
<content type='text'>
* Refactor entry to GReader API format
Some code was copied in two locations and not completely uniform.
Cleaning of related variables and functions (e.g. better types for entries and categories as objects vs. as IDs).
Usecase: I need to call the same GReader-compatible serialization from an extension

* Fixed some edge cases

* Keep summary instead of content
`summary` and `content` seems to be used interchangeably in the Google Reader API. We have been using `summary` for our client API and  `content` in our export/import, so stick to that.</content>
</entry>
<entry>
<title>@tempnam in ExportService.php #4304 (#4489)</title>
<updated>2022-08-05T13:11:58+00:00</updated>
<author>
<name>harshad389</name>
<email>harshad.389@gmail.com</email>
</author>
<published>2022-08-05T13:11:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=9ef849eb27075b30bc144a9f8a3baa040196c563'/>
<id>urn:sha1:9ef849eb27075b30bc144a9f8a3baa040196c563</id>
<content type='text'>
* @tempnam in ExportService.php #4304

* Update CREDITS.md

Change Name in alphabetic order

Co-authored-by: Harshad &lt;harshad@topsoinfosolutions.com&gt;</content>
</entry>
<entry>
<title>Dynamic OPML (#4407)</title>
<updated>2022-07-04T07:53:26+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2022-07-04T07:53:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=509c8cae6381ec46af7c8303eb92fda6ce496a4a'/>
<id>urn:sha1:509c8cae6381ec46af7c8303eb92fda6ce496a4a</id>
<content type='text'>
* Dynamic OPML draft
#fix https://github.com/FreshRSS/FreshRSS/issues/4191

* Export dynamic OPML
http://opml.org/spec2.opml#1629043127000

* Restart with simpler approach

* Minor revert

* Export dynamic OPML also for single feeds

* Special category type for importing dynamic OPML

* Parameter for excludeMutedFeeds

* Details

* More draft

* i18n

* Fix update

* Draft manual import working

* Working manual refresh

* Draft automatic update

* Working Web refresh + fixes

* Import/export dynamic OPML settings

* Annoying numerous lines in SQL logs

* Fix minor JavaScript error

* Fix auto adding new columns

* Add require

* Add missing 🗲

* Missing space

* Disable adding new feeds to dynamic categories

* Link from import

* i18n typo

* Improve theme icon function

* Fix pink-dark</content>
</entry>
<entry>
<title>Refactor OPML export categories (#4356)</title>
<updated>2022-05-12T20:31:31+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2022-05-12T20:31:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=da0a333b941efecd0dcfe04346ce0241b42345cf'/>
<id>urn:sha1:da0a333b941efecd0dcfe04346ce0241b42345cf</id>
<content type='text'>
* Refactor OPML export categories
Simplify code to comply with types hints.
And renamed a property to plural.

* Link to OPML namespace</content>
</entry>
<entry>
<title>OPML export/import of some proprietary FreshRSS attributes (#4342)</title>
<updated>2022-05-12T20:15:10+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2022-05-12T20:15:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=4a87206f2898665e99953590536cedc6c5505f05'/>
<id>urn:sha1:4a87206f2898665e99953590536cedc6c5505f05</id>
<content type='text'>
* OPML export/import of some proprietary FreshRSS attributes
#fix https://github.com/FreshRSS/FreshRSS/issues/4077
And one of the TODOs of https://github.com/FreshRSS/FreshRSS/pull/4220
XPath options, CSS Selector, and action filters

* Bump library patch version

* OPML namespace + documentation

* Add example</content>
</entry>
<entry>
<title>Use typographic quotes (#4133)</title>
<updated>2022-01-08T20:58:55+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2022-01-08T20:58:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=1acd3ab09be1b65bfd6122ee351490c3b5527bb8'/>
<id>urn:sha1:1acd3ab09be1b65bfd6122ee351490c3b5527bb8</id>
<content type='text'>
* Use typographic quotes

* A few fixes

* Fix

* Fix not saved

* Implement feedback

* Detail

* Revert spoken English fixes
Left for a future dedicated discussion

* More reverts

* Final reverts

* Final minor</content>
</entry>
<entry>
<title>Add PHPStan (#4021)</title>
<updated>2021-12-31T16:00:51+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2021-12-31T16:00:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=77e9877316fcfacb26799afdf32d94c8411da80e'/>
<id>urn:sha1:77e9877316fcfacb26799afdf32d94c8411da80e</id>
<content type='text'>
* Add PHPStan
#fix https://github.com/FreshRSS/FreshRSS/issues/4016
https://phpstan.org/

```sh
composer run-script phpstan
```

* More fixes

* Fix global variables

* Add .phtml

* Fix merge
https://github.com/FreshRSS/FreshRSS/pull/4090

* Fix more warnings

* Fix view errors and enable in CI

* ReturnTypeWillChange

* Dynamic view type

* Fix Minz static/self bug</content>
</entry>
<entry>
<title>API implement OPML import/export (#3424)</title>
<updated>2021-02-06T11:43:30+00:00</updated>
<author>
<name>Alexandre Alapetite</name>
<email>alexandre@alapetite.fr</email>
</author>
<published>2021-02-06T11:43:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=4a87f34bcff6afe28e33692e40dcbfb1f663f75a'/>
<id>urn:sha1:4a87f34bcff6afe28e33692e40dcbfb1f663f75a</id>
<content type='text'>
#fix https://github.com/FreshRSS/FreshRSS/issues/3421</content>
</entry>
<entry>
<title>tec: Refactor the export feature (#3045)</title>
<updated>2020-06-13T17:36:24+00:00</updated>
<author>
<name>Marien Fressinaud</name>
<email>dev@marienfressinaud.fr</email>
</author>
<published>2020-06-13T17:36:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.rdnlsmith.com/fresh-rss-custom/commit/?id=15505a03779326f9497644e9827477cdcc26c2d2'/>
<id>urn:sha1:15505a03779326f9497644e9827477cdcc26c2d2</id>
<content type='text'>
Even if the issue #3035 seemed pretty simple at a first glance, it was
more complicated than I expected. Because we send CSP headers AFTER
running the controller actions, it means we can't "echo" any content
from the controller. It's in fact a good practice, but it was easier at
the time we developed the feature.

To fix that, the only thing I had to do was to move the `print()` and
`readfile()` function into the view. The problem was that we needed to
output the content from the CLI too. Then, things became more
complicated. I decided to extract the export-related methods in a
`FreshRSS_Export_Service` class, in order to use it from both the
controller and the CLI. It was an opportunity to refactor the whole
feature in order to make it a bit more linear and easy to read.

Reference: https://github.com/FreshRSS/FreshRSS/issues/3035</content>
</entry>
</feed>
