This is a workaround to make updating easier for folks who do not re-install. A proper solution would get rid of most of the Config class and use something based on Zend_Config_Ini instead. It would also have some sensible defaults in the code and nor error when new values get added.
This is part 2 of fixing ecasound recordings from line-in. Part 1 restored the User-Interface, part 2 takes care of getting to the point where ecasound gets started, records something and uploads it through rest when done. Part 3 will take care of making sure that the recorded file is mapped to the show and not just stored as a new track.
I refactored api_clients to not use urllib2 for posting multipart data since I was loosing my sanity over it and requests seems to have a modern approach to doing this compared to what api_clients was previously doing.
The user object was triggering the creation of a user context that tried to grab something from the session. The later code never tried to use this due to the checkPerm flag.
I'm assuming the user model used to have a sane constructor w/o side effects in the times where this code had it's heyday.
Basically I switched to the dev_tools dir and ran "bash update_po_files.sh". A quick check with the german translation shows me that they have about the same amount of missing strings.
Makes the first tab remoeable and the tracks page be full width after removing the last tab. You can press the "Dashboard" link to open it back up again.
This makes LibreTime check its version against github releases and lets the user know when to update. It uses the red exclamation point when there is a patch release or if LibreTime is more than one major release ahead. The orange icon is used when LibreTime is on a git install, a single major update is available, or a pre-release version is installed. The green update icon gets used to signify that a new minor release is available. Finally the green checkmark will be used when you are on a stable release.
This makes subform validation work for everything again. I also had to slightly unhack the corresponding js. It's still not very nice in that it still reloads even though ajax would have been enough but I could figure out why the mast source field was not getting the proper values (You can reproduce this by commenting the window.location.reload() in the js).
The previous constraint of NOT NULL made it impossible to create a placeholder entry for later downloading. This uses a 0 default instead of the constraint and downloading as well as the green checkbox work again.
This changes the Vagrant setup to support multiple installations as multiple
boxes. In addition to Ubuntu Vagrant can now be used to install on Debian
as well as on CentOS.
I took the chance to clean up the .deb install a bit and backported analyzer
and celery to SysV proper so it runs there. Some of the distro specfics were
moved to the install script from the python setup scripts to acheive this.
For the CentOS support I added a rather involved OS prepare script. In the
long term this will be added to the preparing-the-server docs we already have.
I had to switch the default port to http-alt (8080). On CentOS 9080 is registered
for ocsp and getting it to work for apache without hacking SELinux is hard. I
think 8080 is the RFC way to go anyhow. If anyone want to override this it
should be rather easy using the --web-port arg and by hacking Vagrantfile.
The PyOpenSSL code has been refactored for all the distros that the Vagrantfile
now supports.
As far as my checks go, I tried this code with all the distros, uploaded a track
and downloaded a unicode and a ssl podcast and was able to listen to them
in each case.
In the experimental CentOS case, the UI is not up to spec since services
need to get scheduled through systemctl and the status overview (ie. on the /?config page)
do not work properly. They need to be as follows:
```
sudo systemctl start airtime-playout
sudo systemctl start airtime-liquidsoap
sudo systemctl start airtime_analyzer.service
sudo systemctl start airtime-celery.service
```
This fixes CORS to work properly with most 2.5 api endpoints while keeping the JSONP format available.
* [x] return JSONP or JSON with proper CORS headers from API
* [x] Field in Genereal Preferences Form to configure CORS enabled URLs
See #17 for what triggered this refactor. I beleive this should make integrating the APIs on the client side trivial without mandating the use of JSONP.
I'm replacing them all with empty images under the assumption that we will want to re-add a new logo. This is just to ensure that we can release LibreTime without infringing upon the sourcefabric trademark for now.
This is to get the help section to look better and point to somewhere users can find us. It also takes care of /dashboard/about and maybe more.
Some of the links I'm adding are 404 as we have yet to write them, I'd rather link something we have under our control rather than legacy transifex or others.
Cache handling has been disabled on saas-dev and 2.5.x at least for a while. This gets completely rid of it.
You should do caching on the byte-code level in PHP using the tool best fitting your needs and depending on the exact PHP version you are running this on.
Proper cache hygiene ist a routine part of maintenance and may need seperate addressing depending on the needs of your station.
I did a quick check and added a show, ecasound is also still being installed, I see no further reason why this should not work but we will need to get some real tests done to be sure.
Fixes#42
This will get rid of the sad tape error on the facebook widgets page `/embeddablewidgets/facebook`. We will probably end up having to document how to set up facebook properly, but I'd like to take care of that while I'm testing against real facebook.
This should give us more information in the case of an error and is the framework idiomatic way to handle a RESTful file upload.
I'm hoping this helps debug https://github.com/LibreTime/libretime/issues/3
Problem: Reflection is a debugging tool and not really meant for use on production. There are easier ways to check if a class implements an interface with `is_a()`.
Solution: Get rid of reflection use and switch to `is_a()` in TaskManager, refactor the Enum thing that does not make sense since it is not being used.
The `is_a()` solution is really straightforward and has been supported in php for ages.
The Enum thing was a copy paste hack from stackoverflow and ignored the simple solution mentioned there while not using the features of the advanced one.
This is the results of sed -i -e 's|/etc/airtime-saas/|/etc/airtime/|' `grep -irl 'airtime-saas' airtime_mvc/ python_apps/` :P
It might need more testing, the airtime-saas part never really made sense, zf1 has environments for that, ie you would create a saas env based on production for instance.
I beleive legacy upstream was using this to share configuration between customers (ie. analyser runs only once and writes to a shared S3 bucket). I assume they mount the airtime-saas folder onto individual customers instances with a global config. Like I said, I don't feel that this makes sense since all it does is make hacking at the configs in airtime-saas a bit easier. A serious SaaS operation should be using something like puppet or ansible to achieve this.
Solution: Make billing configurable through LIBRETIME_ENABLE_BILLING and deactivate it
This should catch all the changes needed to deactive billing in LibreTime.
* [x] only call billing when it is enabled
* [x] let super admins edit their info
* [x] dont link to billing if it is disabled
Problem: Live Chat points back to legacy upstream and I do not believe we can let them do support for us ;)
Solution: Deactivate live chat through constants.php so it never gets checked.
This is like 34db703381 but removes one more sql call and makes it easy to reactivate should anyone want to use the feature in future.
Solution: Make the login fallback optional and deactivate it in the default config.
I'm leaving the code in here mostly because I want to revisit it and make it modular so I can later on plug my own FreeIPA things :)
I had only really looked for requires previously, this one caught me off guard as using an include is quite anachronistic.
I did some digging and figured out, that this is the only occurence of such phing use I can find.
Also fixes them elsewhere, apart from having switched to a vendorized version, I also used one that is already namespaced.
The easy way out here is to use it in the namespaced fashion, it is only used in a few places and I know the library well enough to be certain that nothing much changed apart from the namespacing.
This is one of the "small" things I need to take care of on my local env. Once the value is changeable through more than just the config file, I'll won't be touching these in my docker envs as much.