| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Can be very efficient with the right input, but probably has
degenerative cases where it increases the size. Worst-case size
increase is one character per ID in the result set, so it shouldn't be
an issue.
String lengths for a large search result that was unstorable before:
serialize: 1991874
json_encode: 756249
cooked: 244
And some with more discontinuity:
serialize: 1772238
json_encode: 674751
cooked: 37950
serialize: 164942
json_encode: 65771
cooked: 25369
|
|
|
|
|
| |
The API will never request it again, so caching the query just wastes
space.
|
| |
|
|
|
|
|
| |
PHPMailer will validate the format of the address, and that's all we
really want.
|
|
|
|
| |
Development has moved to GitHub: https://github.com/PHPMailer/PHPMailer
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
http://php.net/manual/en/function.session-set-save-handler.php:
When using objects as session save handlers, it is important
to register the shutdown function with PHP to avoid unexpected
side-effects from the way PHP internally destroys objects on
shutdown and may prevent the write and close from being called.
Typically you should register 'session_write_close' using the
register_shutdown_function() function.
We're not using objects as session save handlers, but some people
(notably, Synology users) seem to be encountering a similar issue
related to the timing of object destruction. Closing the session
earlier in the shutdown process is a perfectly sane thing to do, so
let's do it.
|
|
|
|
|
| |
If we're using a socket, grant privileges to user@localhost, not
user@socketname.
|
|
|
|
| |
'32' != '32M'
|
|
|
|
|
|
| |
The join was incorrect, sometimes resulting in loss of ratings.
Fixes GH #22
|
|
|
|
| |
Fixes GH#23
|
|
|
|
|
| |
It wasn't large enough to enter IPv6 addresses.
Fixes GH #24
|
|
|
|
| |
Fixes GH #21
|
|
|
|
|
|
|
| |
Evidently Catalog::get_catalog_ids() wasn't quite as unused as I thought
it was.
Fixes GH #18
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
InnoDB's performance is unacceptable out of the box, and there's no
clean way to batch these insertions into transactions, and stuff.
Benchmarks for 1000 inserts:
InnoDB: 54.826
MyISAM: 0.091
InnoDB transaction: 0.159
Fixes GH #14
|
|
|
|
|
|
|
|
|
| |
Include the correct type parameter in the URL and rename the random
type parameter to random_type.
Remove unused parameters from the function call.
Should fix issue #11
|
|
|
|
| |
Correct vim modeline. Remove useless switch.
|
| |
|
| |
|
|
|
|
|
| |
Should think about making the upgrade section of the README more useful,
but this information isn't particularly helpful nowadays.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Fixes another persistent XSS vulnerability.
|
|
|
|
|
| |
Based on merge request #22 from Jean-Lou Hau, but does the escaping for
everything and in a different place.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Handling of unknown tags was wrong (we should just pass them through and
hope for the best, not do some weird-ass id3v2 thing). Add matroska to
the list of known tags. Switch the video types to a generic cleanup
function and move the several-times-duplicated general information
gathering into the general information gathering function where it
belongs. Treat the general information as another tag type instead of
special-casing it as a complete override through array_merge. Drop the
useless iconv stuff (getID3 already translates tags to our requested
charset). Rename some functions to more closely match their purpose.
Fix some private functions that were marked public. Fix encoding
detection, which has been completely broken for a while.
|
|
|
|
|
| |
The mysql extension is deprecated in PHP 5.5 and will be removed in the
future.
|
|
|
|
|
| |
Now you shouldn't need to manually run the command to see what went
wrong.
|
|
|
|
|
| |
Starting with a fresh 3.3.3.5 import these updates failed. Kick them to
the curb.
|
|
|
|
| |
Based on merge request #11
|
|
|
|
| |
It's what it should have been from the start.
|
| |
|
|
|
|
|
| |
Merge request #20. Basic, not very pretty, but works and, unlike the
Flash player, is maintainable.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Code duplication is bad even when it's CSS, mmkay?
If a theme has templates/rtl.css, it will be loaded in addition to
default.css. This is more sane than the old behaviour, which loaded
default-rtl.css instead of default.css.
I'm not feeling ambitious enough to actually check whether the current
-rtl.css files work and change them to overrides instead of modified
copypasta, so I just dropped them for now.
|
| |
|
|
|
|
|
|
|
|
| |
Remove some of the roundabout complexity that had built up. Push people
toward using a single, flexible tool for most of their transcoding
needs. Increase backend and configuration flexibility to support
user-requested format changes (e.g. for an HTML5 player); this
functionality is not yet exposed.
|
|
|
|
|
|
| |
Now that playback doesn't pretend it's supported, we don't need the
fragile hacks to support guessing the content size or 'seeking' within
a transcoded stream.
|
|
|
|
|
| |
Simplify the rating search and drop the ugly subquery; make it a
straight query against the current user's ratings.
|
|
|
|
| |
git://github.com/sstephenson/prototype.git
|
| |
|
|
|
|
|
| |
Previously, users who didn't have access to modify the password were
shown the actual current setting instead of asterisks.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Should fix the VLC plugin, as well as allow direct use of an Ampache
site on Android devices.
First, split the Stream class into an instantiable class that does the
playlist wrangling and a static class that handles the streaming stuff.
How does this work? Well, stream.php does its fancy stuff like
gathering the media IDs and clearing the playlist, but instead
of generating the playlist file there we use the Stream_Playlist
class to store the list of URLs in the database, then redirect to
play/index.php to create the actual download (there are some magic
playlist types like localplay that don't need to redirect.)
The playlist will be cached as long as that stream session is active, so
it can be downloaded multiple times and by clients that don't share the
browser's cookie cache.
Clean up the playlist generation by reducing copypasta.
|