Beispiel #1
0
 function convertImage(&$image)
 {
     $thumbUrlMap = $image->getThumbUrlMap();
     $image = array('id' => (string) $image->getIdNum(), 'ownerId' => null, 'createdDate' => null, 'modifiedDate' => null, 'title' => $image->getTitle(), 'keywordsArray' => $image->getTags(), 'hasKeywords' => count($image->getTags()) > 0, 'keywords' => implode(',', $image->getTags()), 'description' => $image->getDescription(), 'caption' => $image->getTitle(), 'captionLong' => $image->getDescription(), 'parentAlbumId' => $this->albumId, 'mediaHandler' => 'extapp', 'thumbnailId' => null, 'previewId' => null, 'originalId' => null, 'thumbnailRef' => (string) $image->getSmallThumb(), 'thumbnailMimeType' => 'image/jpeg', 'thumbnailWidth' => 72, 'thumbnailHeight' => 0, 'thumbnailBytes' => 0, 'previewRef' => (string) $image->getMediumThumb(), 'previewMimeType' => 'image/jpeg', 'previewWidth' => 400, 'previewHeight' => 0, 'previewBytes' => 0, 'originalRef' => (string) $image->getContent(), 'originalMimeType' => 'image/jpeg', 'originalWidth' => 0, 'originalHeight' => 0, 'originalBytes' => 0, 'originalIsImage' => true, 'ownerName' => null);
     mediashareAddKeywords($image);
     return $image;
 }
Beispiel #2
0
/**
 * Lists
 */
function mediashare_userapi_getList($args)
{
    $dom = ZLanguage::getModuleDomain('mediashare');
    $keyword = isset($args['keyword']) ? $args['keyword'] : null;
    $uname = isset($args['uname']) ? $args['uname'] : null;
    $albumId = isset($args['albumId']) ? $args['albumId'] : null;
    $order = isset($args['order']) ? $args['order'] : null;
    $orderDir = isset($args['orderDir']) ? $args['orderDir'] : 'asc';
    $recordPos = isset($args['recordPos']) ? (int) $args['recordPos'] : 0;
    $pageSize = isset($args['pageSize']) ? (int) $args['pageSize'] : 5;
    pnModDBInfoLoad('User');
    // Ensure DB table info is available
    $pntable = pnDBGetTables();
    $mediaTable = $pntable['mediashare_media'];
    $mediaColumn = $pntable['mediashare_media_column'];
    $keywordsTable = $pntable['mediashare_keywords'];
    $keywordsColumn = $pntable['mediashare_keywords_column'];
    $albumsTable = $pntable['mediashare_albums'];
    $albumsColumn = $pntable['mediashare_albums_column'];
    $storageTable = $pntable['mediashare_mediastore'];
    $storageColumn = $pntable['mediashare_mediastore_column'];
    $usersTable = $pntable['users'];
    $usersColumn = $pntable['users_column'];
    // Find accessible albums
    $accessibleAlbumSql = pnModAPIFunc('mediashare', 'user', 'getAccessibleAlbumsSql', array('access' => mediashareAccessRequirementViewSomething, 'field' => "media.{$mediaColumn['parentAlbumId']}"));
    if (!$accessibleAlbumSql) {
        return false;
    }
    // Build simple restriction
    $restriction = array();
    $join = array();
    if (!empty($uname)) {
        $restriction[] = "users.{$usersColumn['uname']} = '" . DataUtil::formatForStore($uname) . "'";
        $join[] = "INNER JOIN {$usersTable} users\r\n                           ON users.{$usersColumn['uid']} = media.{$mediaColumn['ownerId']}";
    }
    if (!empty($albumId)) {
        $restriction[] = "album.{$albumsColumn['id']} = '" . (int) $albumId . "'";
    }
    $orderKey = 'title';
    if (in_array($order, array('uname', 'created', 'modified'))) {
        $orderKey = $order;
    }
    $orderDir = strtolower($orderDir) == 'desc' ? 'DESC' : 'ASC';
    $restrictionSql = count($restriction) > 0 ? ' AND ' . implode(' AND ', $restriction) : '';
    $joinSql = count($join) > 0 ? implode(' ', $join) : '';
    if (!empty($keyword)) {
        $sql = "\r\n                   SELECT album.{$albumsColumn['id']},\r\n                          album.{$albumsColumn['title']},\r\n                          album.{$albumsColumn['keywords']},\r\n                          media.{$mediaColumn['id']},\r\n                          media.{$mediaColumn['ownerId']},\r\n                          media.{$mediaColumn['createdDate']} AS created,\r\n                          media.{$mediaColumn['modifiedDate']} AS modified,\r\n                          media.{$mediaColumn['title']} AS title,\r\n                          media.{$mediaColumn['keywords']},\r\n                          media.{$mediaColumn['description']},\r\n                          media.{$mediaColumn['mediaHandler']},\r\n                          media.{$mediaColumn['position']} AS position,\r\n                          thumbnail.{$storageColumn['fileRef']},\r\n                          preview.{$storageColumn['fileRef']},\r\n                          preview.{$storageColumn['mimeType']},\r\n                          preview.{$storageColumn['width']},\r\n                          preview.{$storageColumn['height']},\r\n                          preview.{$storageColumn['bytes']},\r\n                          original.{$storageColumn['fileRef']},\r\n                          original.{$storageColumn['mimeType']},\r\n                          original.{$storageColumn['width']},\r\n                          original.{$storageColumn['height']},\r\n                          original.{$storageColumn['bytes']}\r\n                     FROM {$keywordsTable} keyword\r\n               INNER JOIN {$mediaTable} media\r\n                       ON media.{$mediaColumn['id']} = keyword.{$keywordsColumn['itemId']}\r\n                      AND keyword.{$keywordsColumn['type']} = 'media'\r\n               INNER JOIN {$albumsTable} album\r\n                       ON album.{$albumsColumn['id']} = media.{$mediaColumn['parentAlbumId']}\r\n                LEFT JOIN {$storageTable} thumbnail\r\n                       ON thumbnail.{$storageColumn['id']} = {$mediaColumn['thumbnailId']}\r\n                LEFT JOIN {$storageTable} preview\r\n                       ON preview.{$storageColumn['id']} = {$mediaColumn['previewId']}\r\n                LEFT JOIN {$storageTable} original\r\n                       ON original.{$storageColumn['id']} = {$mediaColumn['originalId']}\r\n                          {$joinSql}\r\n                    WHERE ({$accessibleAlbumSql})\r\n                      AND keyword.{$keywordsColumn['keyword']} = '" . DataUtil::formatForStore($keyword) . "'\r\n                          {$restrictionSql}\r\n\r\n              UNION\r\n\r\n              (\r\n                   SELECT album.{$albumsColumn['id']},\r\n                          album.{$albumsColumn['title']},\r\n                          album.{$albumsColumn['keywords']},\r\n                          media.{$mediaColumn['id']},\r\n                          media.{$mediaColumn['ownerId']},\r\n                          media.{$mediaColumn['createdDate']},\r\n                          media.{$mediaColumn['modifiedDate']},\r\n                          media.{$mediaColumn['title']},\r\n                          media.{$mediaColumn['keywords']},\r\n                          media.{$mediaColumn['description']},\r\n                          media.{$mediaColumn['mediaHandler']},\r\n                          media.{$mediaColumn['position']},\r\n                          thumbnail.{$storageColumn['fileRef']},\r\n                          preview.{$storageColumn['fileRef']},\r\n                          preview.{$storageColumn['mimeType']},\r\n                          preview.{$storageColumn['width']},\r\n                          preview.{$storageColumn['height']},\r\n                          preview.{$storageColumn['bytes']},\r\n                          original.{$storageColumn['fileRef']},\r\n                          original.{$storageColumn['mimeType']},\r\n                          original.{$storageColumn['width']},\r\n                          original.{$storageColumn['height']},\r\n                          original.{$storageColumn['bytes']}\r\n                     FROM {$keywordsTable} keyword\r\n               INNER JOIN {$albumsTable} album\r\n                       ON album.{$albumsColumn['id']} = keyword.{$keywordsColumn['itemId']}\r\n                      AND keyword.{$keywordsColumn['type']} = 'album'\r\n               INNER JOIN {$mediaTable} media\r\n                       ON media.{$mediaColumn['id']} = album.{$albumsColumn['mainMediaId']}\r\n                LEFT JOIN {$storageTable} thumbnail\r\n                       ON thumbnail.{$storageColumn['id']} = {$mediaColumn['thumbnailId']}\r\n                LEFT JOIN {$storageTable} preview\r\n                       ON preview.{$storageColumn['id']} = {$mediaColumn['previewId']}\r\n                LEFT JOIN {$storageTable} original\r\n                       ON original.{$storageColumn['id']} = {$mediaColumn['originalId']}\r\n                          {$joinSql}\r\n                    WHERE ({$accessibleAlbumSql})\r\n                      AND keyword.{$keywordsColumn['keyword']} = '" . DataUtil::formatForStore($keyword) . "'\r\n                          {$restrictionSql}\r\n               )\r\n               ORDER BY {$orderKey} {$orderDir}";
    } else {
        $sql = "   SELECT album.{$albumsColumn['id']},\r\n                          album.{$albumsColumn['title']},\r\n                          album.{$albumsColumn['keywords']},\r\n                          media.{$mediaColumn['id']},\r\n                          media.{$mediaColumn['ownerId']},\r\n                          media.{$mediaColumn['createdDate']} AS created,\r\n                          media.{$mediaColumn['modifiedDate']} AS modified,\r\n                          media.{$mediaColumn['title']} AS title,\r\n                          media.{$mediaColumn['keywords']},\r\n                          media.{$mediaColumn['description']},\r\n                          media.{$mediaColumn['mediaHandler']},\r\n                          media.{$mediaColumn['position']} AS position,\r\n                          thumbnail.{$storageColumn['fileRef']},\r\n                          preview.{$storageColumn['fileRef']},\r\n                          preview.{$storageColumn['mimeType']},\r\n                          preview.{$storageColumn['width']},\r\n                          preview.{$storageColumn['height']},\r\n                          preview.{$storageColumn['bytes']},\r\n                          original.{$storageColumn['fileRef']},\r\n                          original.{$storageColumn['mimeType']},\r\n                          original.{$storageColumn['width']},\r\n                          original.{$storageColumn['height']},\r\n                          original.{$storageColumn['bytes']}\r\n                     FROM {$mediaTable} media\r\n               INNER JOIN {$albumsTable} album\r\n                       ON album.{$albumsColumn['id']} = media.{$mediaColumn['parentAlbumId']}\r\n                LEFT JOIN {$storageTable} thumbnail\r\n                       ON thumbnail.{$storageColumn['id']} = {$mediaColumn['thumbnailId']}\r\n                LEFT JOIN {$storageTable} preview\r\n                       ON preview.{$storageColumn['id']} = {$mediaColumn['previewId']}\r\n                LEFT JOIN {$storageTable} original\r\n                       ON original.{$storageColumn['id']} = {$mediaColumn['originalId']}\r\n                          {$joinSql}\r\n                    WHERE ({$accessibleAlbumSql})\r\n                          {$restrictionSql}\r\n                 ORDER BY {$orderKey} {$orderDir}";
    }
    $result = DBUtil::executeSQL($sql, $recordPos, $pageSize);
    if ($result === false) {
        return LogUtil::registerError(__f('Error in %1$s: %2$s.', array('userapi.getList', 'Could not retrieve the media list.'), $dom));
    }
    $colArray = array('albumId', 'albumTitle', 'albumKeywords', 'id', 'ownerId', 'createdDate', 'modifiedDate', 'title', 'keywords', 'description', 'mediaHandler', 'position', 'thumbnailRef', 'previewRef', 'previewMimeType', 'previewWidth', 'previewHeight', 'previewBytes', 'originalRef', 'originalMimeType', 'originalWidth', 'originalHeight', 'originalBytes');
    $media = DBUtil::marshallObjects($result, $colArray);
    $result = array();
    foreach (array_keys($media) as $k) {
        // build the album
        $album = array('id' => $media[$k]['albumId'], 'title' => $media[$k]['albumTitle'], 'keywords' => $media[$k]['albumKeywords']);
        mediashareAddKeywords($album);
        // remove the album data
        unset($media[$k]['albumId']);
        unset($media[$k]['albumTitle']);
        unset($media[$k]['albumKeywords']);
        // media data post process
        unset($media[$k]['position']);
        $media[$k]['caption'] = empty($media[$k]['title']) ? $media[$k]['description'] : $media[$k]['title'];
        $media[$k]['captionLong'] = empty($media[$k]['description']) ? $media[$k]['title'] : $media[$k]['description'];
        $media[$k]['originalIsImage'] = substr($media[$k]['originalMimeType'], 0, 6) == 'image/';
        mediashareAddKeywords($media[$k]);
        $result[] = array('album' => $album, 'media' => $media[$k]);
    }
    return $result;
}