upgraded phpFlickr library
This commit is contained in:
parent
fcd3b71f46
commit
13bc07ab4f
|
@ -1 +1,2 @@
|
|||
1.08: Upgraded phpFlickr library
|
||||
1.07: Added an option to shuffle the phpFlickr return set, patch by artodeto
|
||||
|
|
339
serendipity_plugin_flickr/phpFlickr/LICENSE
Normal file
339
serendipity_plugin_flickr/phpFlickr/LICENSE
Normal file
|
@ -0,0 +1,339 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc., <http://fsf.org/>
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
{description}
|
||||
Copyright (C) {year} {fullname}
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
{signature of Ty Coon}, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
227
serendipity_plugin_flickr/phpFlickr/README.md
Normal file
227
serendipity_plugin_flickr/phpFlickr/README.md
Normal file
|
@ -0,0 +1,227 @@
|
|||
[phpFlickr](https://github.com/dan-coulter/phpflickr)
|
||||
=====================================================
|
||||
by [Dan Coulter](http://twitter.com/danco)
|
||||
|
||||
A PHP wrapper for the Flickr API.
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
1. Copy the files from the installation package into a folder on your
|
||||
server. They need to be readable by your web server. You can put
|
||||
them into an include folder defined in your php.ini file, if you
|
||||
like, though it's not required.
|
||||
|
||||
2. All you have to do now is include the file in your PHP scripts and
|
||||
create an instance. For example:
|
||||
$f = new phpFlickr();
|
||||
|
||||
The constructor has three arguments:
|
||||
1. $api_key - This is the API key given to you by flickr.com. This
|
||||
argument is required and you can get an API Key at:
|
||||
https://www.flickr.com/services/api/keys/
|
||||
|
||||
2. $secret - The "secret" is optional because is not required to
|
||||
make unauthenticated calls, but is absolutely required for the
|
||||
new authentication API (see Authentication section below). You
|
||||
will get one assigned alongside your api key.
|
||||
|
||||
3. $die_on_error - This takes a boolean value and determines
|
||||
whether the class will die (aka cease operation) if the API
|
||||
returns an error statement. It defaults to false. Every method
|
||||
will return false if the API returns an error. You can access
|
||||
error messages using the getErrorCode() and getErrorMsg()
|
||||
methods.
|
||||
|
||||
3. All of the API methods have been implemented in my class. You can
|
||||
see a full list and documentation here:
|
||||
http://www.flickr.com/services/api/
|
||||
To call a method, remove the "flickr." part of the name and replace
|
||||
any periods with underscores. For example, instead of
|
||||
flickr.photos.search, you would call $f->photos_search() or instead
|
||||
of flickr.photos.licenses.getInfo, you would call
|
||||
$f->photos_licenses_getInfo() (yes, it is case sensitive).
|
||||
|
||||
All functions have their arguments implemented in the list order on
|
||||
their documentation page (a link to which is included with each
|
||||
method in the phpFlickr clasS). The only exceptions to this are
|
||||
photos_search(), photos_getWithoutGeodata() and
|
||||
photos_getWithoutGeodata() which have so many optional arguments
|
||||
that it's easier for everyone if you just have to pass an
|
||||
associative array of arguments. See the comment in the
|
||||
photos_search() definition in phpFlickr.php for more information.
|
||||
|
||||
|
||||
Authentication
|
||||
==============
|
||||
As of this release of the phpFlickr class there is only one authentication method
|
||||
available to the API. This method is somewhat complex, but is far more secure and
|
||||
allows your users to feel a little safer authenticating to your application. You'll
|
||||
no longer have to ask for their username and password.
|
||||
|
||||
[Flickr Authentication API](http://www.flickr.com/services/api/auth.spec.html)
|
||||
|
||||
I know how complicated this API looks at first glance, so I've tried to
|
||||
make this as transparent to the coding process. I'll go through the steps
|
||||
you'll need to use this. Both the auth.php and getToken.php file will
|
||||
need your API Key and Secret entered before you can use them.
|
||||
|
||||
To have end users authenticate their accounts:
|
||||
1. setup a callback script. I've included a callback script that
|
||||
is pretty flexible. You'll find it in the package entitled "auth.php".
|
||||
|
||||
You'll need to go to flickr and point your api key to this file as the
|
||||
callback script. Once you've done this, on any page that you want to
|
||||
require the end user end user to authenticate their flickr account to
|
||||
your app, just call the phpFlickr::auth() function with whatever
|
||||
permission you need to use.
|
||||
|
||||
For example:
|
||||
$f->auth("write");
|
||||
|
||||
The three permissions are "read", "write" and "delete". The function
|
||||
defaults to "read", if you leave it blank.
|
||||
|
||||
Calling this function will send the user's browser to Flickr's page to
|
||||
authenticate to your app. Once they have logged in, it will bounce
|
||||
them back to your callback script which will redirect back to the
|
||||
original page that you called the auth() function from after setting
|
||||
a session variable to save their authentication token. If that session
|
||||
variable exists, calling the auth() function will return the permissions
|
||||
that the user granted your app on the Flickr page instead of redirecting
|
||||
to an external page.
|
||||
|
||||
2. To authenticate the app to your account to show your private pictures (for example)
|
||||
|
||||
This method will allow you to have the app authenticate to one specific
|
||||
account, no matter who views your website. This is useful to display
|
||||
private photos or photosets (among other things).
|
||||
|
||||
*Note*: The method below is a little hard to understand, so I've setup a tool
|
||||
to help you through this: http://www.phpflickr.com/tools/auth/.
|
||||
|
||||
First, you'll have to setup a callback script with Flickr. Once you've
|
||||
done that, edit line 12 of the included getToken.php file to reflect
|
||||
which permissions you'll need for the app. Then browse to the page.
|
||||
Once you've authorized the app with Flickr, it'll send you back to that
|
||||
page which will give you a token which will look something like this:
|
||||
1234-567890abcdef1234
|
||||
Go to the file where you are creating an instance of phpFlickr (I suggest
|
||||
an include file) and after you've created it set the token to use:
|
||||
$f->setToken("<token string>");
|
||||
This token never expires, so you don't have to worry about having to
|
||||
login periodically.
|
||||
|
||||
|
||||
Caching
|
||||
=======
|
||||
|
||||
Caching can be very important to a project. Just a few calls to the Flickr API
|
||||
can take long enough to bore your average web user (depending on the calls you
|
||||
are making). I've built in caching that will access either a database or files
|
||||
in your filesystem. To enable caching, use the phpFlickr::enableCache() function.
|
||||
This function requires at least two arguments. The first will be the type of
|
||||
cache you're using (either "db" or "fs")
|
||||
|
||||
1. If you're using database caching, you'll need to supply a PEAR::DB style connection
|
||||
string. For example:
|
||||
|
||||
$flickr->enableCache("db", "mysql://user:password@server/database");
|
||||
|
||||
The third (optional) argument is expiration of the cache in seconds (defaults
|
||||
to 600). The fourth (optional) argument is the table where you want to store
|
||||
the cache. This defaults to flickr_cache and will attempt to create the table
|
||||
if it does not already exist.
|
||||
|
||||
2. If you're using filesystem caching, you'll need to supply a folder where the
|
||||
web server has write access. For example:
|
||||
|
||||
$flickr->enableCache("fs", "/var/www/phpFlickrCache");
|
||||
|
||||
The third (optional) argument is, the same as in the Database caching, an
|
||||
expiration in seconds for the cache.
|
||||
|
||||
Note: filesystem caching will probably be slower than database caching. I
|
||||
haven't done any tests of this, but if you get large amounts of calls, the
|
||||
process of cleaning out old calls may get hard on your server.
|
||||
|
||||
You may not want to allow the world to view the files that are created during
|
||||
caching. If you want to hide this information, either make sure that your
|
||||
permissions are set correctly, or disable the webserver from displaying
|
||||
*.cache files. In Apache, you can specify this in the configuration files
|
||||
or in a .htaccess file with the following directives:
|
||||
|
||||
<FilesMatch "\.cache$">
|
||||
Deny from all
|
||||
</FilesMatch>
|
||||
|
||||
Alternatively, you can specify a directory that is outside of the web server's
|
||||
document root.
|
||||
|
||||
Uploading
|
||||
=========
|
||||
|
||||
Uploading is pretty simple. Aside from being authenticated (see Authentication
|
||||
section) the very minimum that you'll have to pass is a path to an image file on
|
||||
your php server. You can do either synchronous or asynchronous uploading as follows:
|
||||
|
||||
synchronous: sync_upload("photo.jpg");
|
||||
asynchronous: async_upload("photo.jpg");
|
||||
|
||||
The basic difference is that synchronous uploading waits around until Flickr
|
||||
processes the photo and returns a PhotoID. Asynchronous just uploads the
|
||||
picture and gets a "ticketid" that you can use to check on the status of your
|
||||
upload. Asynchronous is much faster, though the photoid won't be instantly
|
||||
available for you. You can read more about asynchronous uploading here:
|
||||
|
||||
http://www.flickr.com/services/api/upload.async.html
|
||||
|
||||
Both of the functions take the same arguments which are:
|
||||
|
||||
> Photo: The path of the file to upload.
|
||||
> Title: The title of the photo.
|
||||
> Description: A description of the photo. May contain some limited HTML.
|
||||
> Tags: A space-separated list of tags to apply to the photo.
|
||||
> is_public: Set to 0 for no, 1 for yes.
|
||||
> is_friend: Set to 0 for no, 1 for yes.
|
||||
> is_family: Set to 0 for no, 1 for yes.
|
||||
|
||||
Replacing Photos
|
||||
================
|
||||
|
||||
Flickr has released API support for uploading a replacement photo. To use this
|
||||
new method, just use the "replace" function in phpFlickr. You'll be required
|
||||
to pass the file name and Flickr's photo ID. You need to authenticate your script
|
||||
with "write" permissions before you can replace a photo. The arguments are:
|
||||
|
||||
> Photo: The path of the file to upload.
|
||||
> Photo ID: The numeric Flickr ID of the photo you want to replace.
|
||||
> Async (optional): Set to 0 for a synchronous call, 1 for asynchronous.
|
||||
|
||||
If you use the asynchronous call, it will return a ticketid instead
|
||||
of photoid.
|
||||
|
||||
Other Notes:
|
||||
1. Many of the methods have optional arguments. For these, I have implemented
|
||||
them in the same order that the Flickr API documentation lists them. PHP
|
||||
allows for optional arguments in function calls, but if you want to use the
|
||||
third optional argument, you have to fill in the others to the left first.
|
||||
You can use the "NULL" value (without quotes) in the place of an actual
|
||||
argument. For example:
|
||||
|
||||
$f->groups_pools_getPhotos($group_id, NULL, NULL, 10);
|
||||
|
||||
This will get the first ten photos from a specific group's pool. If you look
|
||||
at the documentation, you will see that there is another argument, "page". I've
|
||||
left it off because it appears after "per_page".
|
||||
|
||||
2. Some people will need to ues phpFlickr from behind a proxy server. I've
|
||||
implemented a method that will allow you to use an HTTP proxy for all of your
|
||||
traffic. Let's say that you have a proxy server on your local server running
|
||||
at port 8181. This is the code you would use:
|
||||
|
||||
$f = new phpFlickr("[api key]");
|
||||
$f->setProxy("localhost", "8181");
|
||||
|
||||
After that, all of your calls will be automatically made through your proxy server.
|
||||
|
|
@ -1,215 +0,0 @@
|
|||
phpFlickr Class 2.3.0.1
|
||||
Written by Dan Coulter (dancoulter@users.sourceforge.net)
|
||||
Project Homepage: http://www.phpflickr.com/
|
||||
Google Code Project Page: http://code.google.com/p/phpflickr/
|
||||
Released under GNU Lesser General Public License (http://www.gnu.org/copyleft/lgpl.html)
|
||||
For more information about the class and upcoming tools and applications using it,
|
||||
visit http://www.phpflickr.com/ or http://code.google.com/p/phpflickr/
|
||||
|
||||
If you are interested in hiring me for a project (involving phpFlickr
|
||||
or not), feel free to email me.
|
||||
|
||||
Installation instructions:
|
||||
1. Copy the files from the installation package into a folder on your
|
||||
server. They need to be readible by your web server. You can put
|
||||
them into an include folder defined in your php.ini file, if you
|
||||
like, though it's not required.
|
||||
|
||||
2. All you have to do now is include the file in your PHP scripts and
|
||||
create an instance. For example:
|
||||
$f = new phpFlickr();
|
||||
|
||||
The constructor has three arguments:
|
||||
A. $api_key - This is the API key given to you by flickr.com. This
|
||||
argument is required and you can get an API Key at:
|
||||
http://www.flickr.com/services/api/key.gne
|
||||
|
||||
B. $secret - The "secret" is optional because is not required to
|
||||
make unauthenticated calls, but is absolutely required for the
|
||||
new authentication API (see Authentication section below). You
|
||||
will get one assigned alongside your api key.
|
||||
|
||||
C. $die_on_error - This takes a boolean value and determines
|
||||
whether the class will die (aka cease operation) if the API
|
||||
returns an error statement. It defaults to false. Every method
|
||||
will return false if the API returns an error. You can access
|
||||
error messages using the getErrorCode() and getErrorMsg()
|
||||
methods.
|
||||
|
||||
3. All of the API methods have been implemented in my class. You can
|
||||
see a full list and documentation here:
|
||||
http://www.flickr.com/services/api/
|
||||
To call a method, remove the "flickr." part of the name and replace
|
||||
any periods with underscores. For example, instead of
|
||||
flickr.photos.search, you would call $f->photos_search() or instead
|
||||
of flickr.photos.licenses.getInfo, you would call
|
||||
$f->photos_licenses_getInfo() (yes, it is case sensitive).
|
||||
|
||||
All functions have their arguments implemented in the list order on
|
||||
their documentation page (a link to which is included with each
|
||||
method in the phpFlickr clasS). The only exceptions to this are
|
||||
photos_search(), photos_getWithoutGeodata() and
|
||||
photos_getWithoutGeodata() which have so many optional arguments
|
||||
that it's easier for everyone if you just have to pass an
|
||||
associative array of arguments. See the comment in the
|
||||
photos_search() definition in phpFlickr.php for more information.
|
||||
|
||||
|
||||
|
||||
Authentication:
|
||||
As of this release of the phpFlickr class there is only one authentication method
|
||||
available to the API. This method is somewhat complex, but is far more secure and
|
||||
allows your users to feel a little safer authenticating to your application. You'll
|
||||
no longer have to ask for their username and password.
|
||||
|
||||
Authentication API - http://www.flickr.com/services/api/auth.spec.html
|
||||
|
||||
I know how complicated this API looks at first glance, so I've tried to
|
||||
make this as transparent to the coding process. I'll go through the steps
|
||||
you'll need to use this. Both the auth.php and getToken.php file will
|
||||
need your API Key and Secret entered before you can use them.
|
||||
|
||||
To have end users authenticate their accounts:
|
||||
First, setup a callback script. I've included a callback script that
|
||||
is pretty flexible. You'll find it in the package entitled "auth.php".
|
||||
You'll need to go to flickr and point your api key to this file as the
|
||||
callback script. Once you've done this, on any page that you want to
|
||||
require the end user end user to authenticate their flickr account to
|
||||
your app, just call the phpFlickr::auth() function with whatever
|
||||
permission you need to use.
|
||||
For example:
|
||||
$f->auth("write");
|
||||
The three permissions are "read", "write" and "delete". The function
|
||||
defaults to "read", if you leave it blank.
|
||||
|
||||
Calling this function will send the user's browser to Flickr's page to
|
||||
authenticate to your app. Once they have logged in, it will bounce
|
||||
them back to your callback script which will redirect back to the
|
||||
original page that you called the auth() function from after setting
|
||||
a session variable to save their authentication token. If that session
|
||||
variable exists, calling the auth() function will return the permissions
|
||||
that the user granted your app on the Flickr page instead of redirecting
|
||||
to an external page.
|
||||
|
||||
To authenticate the app to your account to show your private pictures (for example)
|
||||
This method will allow you to have the app authenticate to one specific
|
||||
account, no matter who views your website. This is useful to display
|
||||
private photos or photosets (among other things).
|
||||
|
||||
*Note*: The method below is a little hard to understand, so I've setup a tool
|
||||
to help you through this: http://www.phpflickr.com/tools/auth/.
|
||||
|
||||
First, you'll have to setup a callback script with Flickr. Once you've
|
||||
done that, edit line 12 of the included getToken.php file to reflect
|
||||
which permissions you'll need for the app. Then browse to the page.
|
||||
Once you've authorized the app with Flickr, it'll send you back to that
|
||||
page which will give you a token which will look something like this:
|
||||
1234-567890abcdef1234
|
||||
Go to the file where you are creating an instance of phpFlickr (I suggest
|
||||
an include file) and after you've created it set the token to use:
|
||||
$f->setToken("<token string>");
|
||||
This token never expires, so you don't have to worry about having to
|
||||
login periodically.
|
||||
|
||||
|
||||
Using Caching:
|
||||
Caching can be very important to a project. Just a few calls to the Flickr API
|
||||
can take long enough to bore your average web user (depending on the calls you
|
||||
are making). I've built in caching that will access either a database or files
|
||||
in your filesystem. To enable caching, use the phpFlickr::enableCache() function.
|
||||
This function requires at least two arguments. The first will be the type of
|
||||
cache you're using (either "db" or "fs")
|
||||
|
||||
1. If you're using database caching, you'll need to supply a PEAR::DB connection
|
||||
string. For example:
|
||||
$flickr->enableCache("db", "mysql://user:password@server/database");
|
||||
The third (optional) argument is expiration of the cache in seconds (defaults
|
||||
to 600). The fourth (optional) argument is the table where you want to store
|
||||
the cache. This defaults to flickr_cache and will attempt to create the table
|
||||
if it does not already exist.
|
||||
|
||||
2. If you're using filesystem caching, you'll need to supply a folder where the
|
||||
web server has write access. For example:
|
||||
$flickr->enableCache("fs", "/var/www/phpFlickrCache");
|
||||
The third (optional) argument is, the same as in the Database caching, an
|
||||
expiration in seconds for the cache.
|
||||
Note: filesystem caching will probably be slower than database caching. I
|
||||
haven't done any tests of this, but if you get large amounts of calls, the
|
||||
process of cleaning out old calls may get hard on your server.
|
||||
|
||||
You may not want to allow the world to view the files that are created during
|
||||
caching. If you want to hide this information, either make sure that your
|
||||
permissions are set correctly, or disable the webserver from displaying
|
||||
*.cache files. In Apache, you can specify this in the configuration files
|
||||
or in a .htaccess file with the following directives:
|
||||
|
||||
<FilesMatch "\.cache$">
|
||||
Deny from all
|
||||
</FilesMatch>
|
||||
|
||||
Alternatively, you can specify a directory that is outside of the web server's
|
||||
document root.
|
||||
|
||||
Uploading
|
||||
Uploading is pretty simple. Aside from being authenticated (see Authentication
|
||||
section) the very minimum that you'll have to pass is a path to an image file on
|
||||
your php server. You can do either synchronous or asynchronous uploading as follows:
|
||||
synchronous: sync_upload("photo.jpg");
|
||||
asynchronous: async_upload("photo.jpg");
|
||||
|
||||
The basic difference is that synchronous uploading waits around until Flickr
|
||||
processes the photo and returns a PhotoID. Asynchronous just uploads the
|
||||
picture and gets a "ticketid" that you can use to check on the status of your
|
||||
upload. Asynchronous is much faster, though the photoid won't be instantly
|
||||
available for you. You can read more about asynchronous uploading here:
|
||||
http://www.flickr.com/services/api/upload.async.html
|
||||
|
||||
Both of the functions take the same arguments which are:
|
||||
Photo: The path of the file to upload.
|
||||
Title: The title of the photo.
|
||||
Description: A description of the photo. May contain some limited HTML.
|
||||
Tags: A space-separated list of tags to apply to the photo.
|
||||
is_public: Set to 0 for no, 1 for yes.
|
||||
is_friend: Set to 0 for no, 1 for yes.
|
||||
is_family: Set to 0 for no, 1 for yes.
|
||||
|
||||
Replacing Photos
|
||||
Flickr has released API support for uploading a replacement photo. To use this
|
||||
new method, just use the "replace" function in phpFlickr. You'll be required
|
||||
to pass the file name and Flickr's photo ID. You need to authenticate your script
|
||||
with "write" permissions before you can replace a photo. The arguments are:
|
||||
Photo: The path of the file to upload.
|
||||
Photo ID: The numeric Flickr ID of the photo you want to replace.
|
||||
Async (optional): Set to 0 for a synchronous call, 1 for asynchronous.
|
||||
If you use the asynchronous call, it will return a ticketid instead
|
||||
of photoid.
|
||||
|
||||
Other Notes:
|
||||
1. Many of the methods have optional arguments. For these, I have implemented
|
||||
them in the same order that the Flickr API documentation lists them. PHP
|
||||
allows for optional arguments in function calls, but if you want to use the
|
||||
third optional argument, you have to fill in the others to the left first.
|
||||
You can use the "NULL" value (without quotes) in the place of an actual
|
||||
argument. For example:
|
||||
$f->groups_pools_getPhotos($group_id, NULL, NULL, 10);
|
||||
This will get the first ten photos from a specific group's pool. If you look
|
||||
at the documentation, you will see that there is another argument, "page". I've
|
||||
left it off because it appears after "per_page".
|
||||
2. Some people will need to ues phpFlickr from behind a proxy server. I've
|
||||
implemented a method that will allow you to use an HTTP proxy for all of your
|
||||
traffic. Let's say that you have a proxy server on your local server running
|
||||
at port 8181. This is the code you would use:
|
||||
$f = new phpFlickr("[api key]");
|
||||
$f->setProxy("localhost", "8181");
|
||||
After that, all of your calls will be automatically made through your proxy server.
|
||||
|
||||
|
||||
That's it! Enjoy the class. Check out the project page (listed above) for updates
|
||||
and news. I plan to implement file uploads and functions to aggregate data from
|
||||
several different methods for easier use in a web application. Thanks for your
|
||||
interest in this project!
|
||||
|
||||
Please email me if you have any questions or problems. You'll find my email
|
||||
at the top of this file.
|
||||
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
<?
|
||||
/* Last updated with phpFlickr 1.3.1
|
||||
<?php
|
||||
/* Last updated with phpFlickr 2.3.2
|
||||
*
|
||||
* Edit these variables to reflect the values you need. $default_redirect
|
||||
* and $permissions are only important if you are linking here instead of
|
||||
|
@ -14,10 +14,11 @@
|
|||
|
||||
ob_start();
|
||||
require_once($path_to_phpFlickr_class . "phpFlickr.php");
|
||||
unset($_SESSION['phpFlickr_auth_token']);
|
||||
@unset($_SESSION['phpFlickr_auth_token']);
|
||||
|
||||
if (!empty($_GET['extra'])) {
|
||||
$redirect = $_GET['extra'];
|
||||
if ( isset($_SESSION['phpFlickr_auth_redirect']) && !empty($_SESSION['phpFlickr_auth_redirect']) ) {
|
||||
$redirect = $_SESSION['phpFlickr_auth_redirect'];
|
||||
unset($_SESSION['phpFlickr_auth_redirect']);
|
||||
}
|
||||
|
||||
$f = new phpFlickr($api_key, $api_secret);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?
|
||||
<?php
|
||||
/* Last updated with phpFlickr 1.3.2
|
||||
*
|
||||
* This example file shows you how to call the 100 most recent public
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -28,7 +28,7 @@ class serendipity_plugin_flickr extends serendipity_plugin {
|
|||
'smarty' => '2.6.9',
|
||||
'php' => '4.3.0'
|
||||
));
|
||||
$propbag->add('version', '1.07');
|
||||
$propbag->add('version', '1.08');
|
||||
$propbag->add('configuration', array(
|
||||
'title',
|
||||
'email',
|
||||
|
|
Loading…
Reference in a new issue