123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259 |
- <?php
- /**
- * Elgg tidypics library of common functions
- *
- * @package TidypicsCommon
- */
- /**
- * Get images for display on front page
- *
- * @param int number of images
- * @param array (optional) array of owner guids
- * @param string (optional) context of view to display
- * @return string of html for display
- */
- function tp_get_latest_photos($num_images, array $owner_guids = NULL, $context = 'front') {
- $prev_context = elgg_get_context();
- elgg_set_context($context);
- $image_html = elgg_list_entities(array(
- 'type' => 'object',
- 'subtype' => 'image',
- 'owner_guids' => $owner_guids,
- 'limit' => $num_images,
- 'full_view' => false,
- 'list_type_toggle' => false,
- 'list_type' => 'gallery',
- 'pagination' => false,
- 'gallery_class' => 'tidypics-gallery-widget',
- ));
- elgg_set_context($prev_context);
- return $image_html;
- }
- /**
- * Get albums for display on front page
- *
- * @param int number of albums
- * @param array (optional) array of container_guids
- * @param string (optional) context of view to display
- * @return string of html for display
- */
- function tp_get_latest_albums($num_albums, array $container_guids = NULL, $context = 'front') {
- $prev_context = elgg_get_context();
- elgg_set_context($context);
- $image_html = elgg_list_entities(array(
- 'type' => 'object',
- 'subtype' => 'album',
- 'container_guids' => $container_guids,
- 'limit' => $num_albums,
- 'full_view' => false,
- 'pagination' => false,
- ));
- elgg_set_context($prev_context);
- return $image_html;
- }
- /**
- * Get image directory path
- *
- * Each album gets a subdirectory based on its container id
- *
- * @return string path to image directory
- */
- function tp_get_img_dir($album_guid) {
- $file = new ElggFile();
- $file->setFilename("image/$album_guid");
- return $file->getFilenameOnFilestore($file);
- }
- /**
- * Prepare vars for a form, pulling from an entity or sticky forms.
- *
- * @param type $entity
- * @return type
- */
- function tidypics_prepare_form_vars($entity = null) {
- // input names => defaults
- $values = array(
- 'title' => '',
- 'description' => '',
- 'access_id' => ACCESS_DEFAULT,
- 'tags' => '',
- 'container_guid' => elgg_get_page_owner_guid(),
- 'guid' => null,
- 'entity' => $entity,
- );
- if ($entity) {
- foreach (array_keys($values) as $field) {
- if (isset($entity->$field)) {
- $values[$field] = $entity->$field;
- }
- }
- }
- if (elgg_is_sticky_form('tidypics')) {
- $sticky_values = elgg_get_sticky_values('tidypics');
- foreach ($sticky_values as $key => $value) {
- $values[$key] = $value;
- }
- }
- elgg_clear_sticky_form('tidypics');
- return $values;
- }
- /**
- * Returns available image libraries.
- *
- * @return string
- */
- function tidypics_get_image_libraries() {
- $options = array();
- if (extension_loaded('gd')) {
- $options['GD'] = 'GD';
- }
- if (extension_loaded('imagick')) {
- $options['ImageMagickPHP'] = 'imagick PHP extension';
- }
- $disablefunc = explode(',', ini_get('disable_functions'));
- if (is_callable('exec') && !in_array('exec', $disablefunc)) {
- $options['ImageMagick'] = 'ImageMagick executable';
- }
- return $options;
- }
- /**
- * Are there upgrade scripts to be run?
- *
- * @return bool
- */
- function tidypics_is_upgrade_available() {
- // sets $version based on code
- require_once elgg_get_plugins_path() . "tidypics/version.php";
- $local_version = elgg_get_plugin_setting('version', 'tidypics');
- if ($local_version === false) {
- // no version set so either new install or really old one
- if (!get_subtype_class('object', 'image') || !get_subtype_class('object', 'album')) {
- $local_version = 0;
- } else {
- // set initial version for new install
- elgg_set_plugin_setting('version', $version, 'tidypics');
- $local_version = $version;
- }
- } elseif ($local_version === '1.62') {
- // special work around to handle old upgrade system
- $local_version = 2010010101;
- elgg_set_plugin_setting('version', $local_version, 'tidypics');
- }
- if ($local_version == $version) {
- return false;
- } else {
- return true;
- }
- }
- /**
- * This lists the photos in an album as sorted by metadata
- *
- * @todo this only supports a single album. The only case for use a
- * procedural function like this instead of TidypicsAlbum::viewImgaes() is to
- * fetch images across albums as a helper to elgg_get_entities().
- * This should function be deprecated or fixed to work across albums.
- *
- * @param array $options
- * @return string
- */
- function tidypics_list_photos(array $options = array()) {
- global $autofeed;
- $autofeed = true;
- $defaults = array(
- 'offset' => (int) max(get_input('offset', 0), 0),
- 'limit' => (int) max(get_input('limit', 10), 0),
- 'full_view' => true,
- 'list_type_toggle' => false,
- 'pagination' => true,
- );
- $options = array_merge($defaults, $options);
- $options['count'] = true;
- $count = elgg_get_entities($options);
- $album = get_entity($options['container_guid']);
- if ($album) {
- $guids = $album->getImageList();
- // need to pass all the guids and handle the limit / offset in sql
- // to avoid problems with the navigation
- //$guids = array_slice($guids, $options['offset'], $options['limit']);
- $options['guids'] = $guids;
- unset($options['container_guid']);
- }
- $options['count'] = false;
- $entities = elgg_get_entities($options);
- $keys = array();
- foreach ($entities as $entity) {
- $keys[] = $entity->guid;
- }
- $entities = array_combine($keys, $entities);
- $sorted_entities = array();
- foreach ($guids as $guid) {
- if (isset($entities[$guid])) {
- $sorted_entities[] = $entities[$guid];
- }
- }
- // for this function count means the total number of entities
- // and is required for pagination
- $options['count'] = $count;
- return elgg_view_entity_list($sorted_entities, $options);
- }
- /**
- * Returns just a guid from a database $row. Used in elgg_get_entities()'s callback.
- *
- * @param stdClass $row
- * @return type
- */
- function tp_guid_callback($row) {
- return ($row->guid) ? $row->guid : false;
- }
- /**
- * the functions below replace broken core functions or add functions
- * that could/should exist in the core
- */
- /**
- * Is the request from a known browser
- *
- * @return true/false
- */
- function tp_is_person() {
- $known = array('msie', 'mozilla', 'firefox', 'safari', 'webkit', 'opera', 'netscape', 'konqueror', 'gecko');
- $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
- foreach ($known as $browser) {
- if (strpos($agent, $browser) !== false) {
- return true;
- }
- }
- return false;
- }
|