1
0
Alex Trofimov 11 жил өмнө
parent
commit
d0979d6e72

+ 25 - 21
modules/base/general/classes/BxBaseModGeneralModule.php

@@ -26,29 +26,10 @@ class BxBaseModGeneralModule extends BxDolModule
 
     // ====== ACTIONS METHODS
 
-    public function actionRss ($sMode = '')
+    public function actionRss ()
     {
         $aArgs = func_get_args();
-        $sMode = array_shift($aArgs);
-
-        if (CHECK_ACTION_RESULT_ALLOWED !== ($sMsg = $this->checkAllowedBrowse())) {
-            $this->_oTemplate->displayAccessDenied ($sMsg);
-            exit;
-        }
-
-        $aParams = $this->_buildRssParams($sMode, $aArgs);
-
-        bx_import ('SearchResult', $this->_aModule);
-        $sClass = $this->_aModule['class_prefix'] . 'SearchResult';
-        $o = new $sClass($sMode, $aParams);
-
-        if ($o->isError) {
-            $this->_oTemplate->displayPageNotFound ();
-            exit;
-        }
-
-        $o->outputRSS();
-        exit;
+        $this->_rss($aArgs);
     }
 
     // ====== SERVICE METHODS
@@ -328,6 +309,29 @@ class BxBaseModGeneralModule extends BxDolModule
 
         return $this->_oTemplate->$sFunc($aContentInfo);
     }
+
+    protected function _rss ($aArgs, $sClass = 'SearchResult')
+    {
+        $sMode = array_shift($aArgs);
+
+        if (CHECK_ACTION_RESULT_ALLOWED !== ($sMsg = $this->checkAllowedBrowse())) {
+            $this->_oTemplate->displayAccessDenied ($sMsg);
+            exit;
+        }
+
+        $aParams = $this->_buildRssParams($sMode, $aArgs);
+
+        bx_import ($sClass, $this->_aModule);
+        $sClass = $this->_aModule['class_prefix'] . $sClass;
+        $o = new $sClass($sMode, $aParams);
+
+        if ($o->isError)
+            $this->_oTemplate->displayPageNotFound ();
+        else
+            $o->outputRSS();
+
+        exit;
+    }
 }
 
 /** @} */

+ 1 - 0
modules/boonex/albums/classes/BxAlbumsConfig.php

@@ -50,6 +50,7 @@ class BxAlbumsConfig extends BxBaseModTextConfig
             'URL_HOME' => 'page.php?i=albums-home',
             'URL_POPULAR' => 'page.php?i=albums-popular',
             'URL_POPULAR_MEDIA' => 'page.php?i=albums-popular-media',
+            'URL_RECENT_MEDIA' => 'page.php?i=albums-recent-media', // TODO: add page
         	'URL_MANAGE_COMMON' => 'page.php?i=albums-manage',
         	'URL_MANAGE_MODERATION' => 'page.php?i=albums-moderation',
         	'URL_MANAGE_ADMINISTRATION' => 'page.php?i=albums-administration',

+ 21 - 0
modules/boonex/albums/classes/BxAlbumsModule.php

@@ -138,6 +138,27 @@ class BxAlbumsModule extends BxBaseModTextModule
         header('Content-type: text/html; charset=utf-8');
         echo $s;
     }
+
+    public function actionRssMedia ()
+    {
+        $aArgs = func_get_args();
+        $this->_rss($aArgs, 'SearchResultMedia');
+    }
+
+    protected function _buildRssParams($sMode, $aArgs)
+    {        
+        if ($aParams = parent::_buildRssParams($sMode, $aArgs))
+            return $aParams;
+
+        $sMode = bx_process_input($sMode);
+        switch ($sMode) {
+            case 'album':
+                $aParams = array('album_id' => isset($aArgs[0]) ? (int)$aArgs[0] : '');
+                break;
+        }
+
+        return $aParams;
+    }
 }
 
 /** @} */

+ 25 - 20
modules/boonex/albums/classes/BxAlbumsSearchResultMedia.php

@@ -10,6 +10,7 @@
  */
 
 bx_import('BxBaseModTextSearchResult');
+bx_import('BxDolPermalinks');
 
 class BxAlbumsSearchResultMedia extends BxBaseModTextSearchResult
 {
@@ -67,7 +68,7 @@ class BxAlbumsSearchResultMedia extends BxBaseModTextSearchResult
                     'Link' => 'link',
                     'Title' => 'title',
                     'DateTimeUTS' => 'added',
-                    'Desc' => 'text',
+                    'Desc' => 'title',
                 ),
             ),
             'ident' => 'id',
@@ -82,41 +83,39 @@ class BxAlbumsSearchResultMedia extends BxBaseModTextSearchResult
 
         switch ($sMode) {
             case 'album':
-                $this->aCurrent['restriction']['album']['value'] = $aParams['album_id'];
-                //$this->sBrowseUrl = 'page.php?i=' . $CNF['URI_AUTHOR_ENTRIES'] . '&profile_id={profile_id}';
-                //$this->aCurrent['title'] = _t('_bx_albums_page_title_browse_media_in_album');
-                //$this->aCurrent['rss']['link'] = 'modules/?r=albums/rss/' . $sMode . '/' . $oProfileAuthor->id();
+                $this->aCurrent['restriction']['album']['value'] = (int)$aParams['album_id'];
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink('page.php?i=' . $CNF['URI_VIEW_ENTRY'] . '&id=' . (int)$aParams['album_id']);
+                $this->aCurrent['title'] = _t('_bx_albums_page_title_browse_media_in_album');
+                $this->aCurrent['rss']['link'] = 'modules/?r=albums/rss_media/' . $sMode . '/' . (int)$aParams['album_id'];
                 $this->aCurrent['sorting'] = 'order';
                 $this->sOrderDirection = 'ASC';
                 break;
 
+            case 'recent':
+                $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_RECENT_MEDIA']);
+                $this->aCurrent['title'] = _t('_bx_albums_page_title_browse_recent_media');
+                $this->aCurrent['rss']['link'] = 'modules/?r=albums/rss_media/' . $sMode; 
+                $this->aCurrent['sorting'] = 'last';
+                break;
+
             case 'popular':
-                bx_import('BxDolPermalinks');
                 $this->sBrowseUrl = BxDolPermalinks::getInstance()->permalink($CNF['URL_POPULAR_MEDIA']);
                 $this->aCurrent['title'] = _t('_bx_albums_page_title_browse_popular_media');
-                $this->aCurrent['rss']['link'] = 'modules/?r=albums/rss/' . $sMode; // TODO: refer to another search class in 'rss' method for this rss feed
+                $this->aCurrent['rss']['link'] = BxDolPermalinks::getInstance()->permalink('modules/?r=albums/rss_media/' . $sMode);
                 $this->aCurrent['sorting'] = 'popular';
                 break;
-/* TODO: add to search
+
             case '': // search results
                 $this->sBrowseUrl = BX_DOL_SEARCH_KEYWORD_PAGE;
-                $this->aCurrent['title'] = _t('_bx_albums');
                 $this->aCurrent['paginate']['perPage'] = 3;
                 unset($this->aCurrent['rss']);
                 break;
-*/
+
             default:
                 $sMode = '';
                 $this->isError = true;
         }
-/*
-        // add replaceable markers and replace them
-        if ($oProfileAuthor) {
-            $this->addMarkers($oProfileAuthor->getInfo()); // profile info is replaceable
-            $this->addMarkers(array('profile_id' => $oProfileAuthor->id())); // profile id is replaceable
-            $this->addMarkers(array('display_name' => $oProfileAuthor->getDisplayName())); // profile display name is replaceable
-        }
-*/
+
         $this->sBrowseUrl = $this->_replaceMarkers($this->sBrowseUrl);
         $this->aCurrent['title'] = $this->_replaceMarkers($this->aCurrent['title']);
 
@@ -143,7 +142,7 @@ class BxAlbumsSearchResultMedia extends BxBaseModTextSearchResult
                 $aSql['order'] = " ORDER BY `f`.`added` {$this->sOrderDirection}, `{$this->aCurrent['table']}`.`id` {$this->sOrderDirection} ";
                 break;
             case 'popular':
-                $aSql['order'] = " ORDER BY `bx_albums_albums`.`views` {$this->sOrderDirection}, `{$this->aCurrent['table']}`.`id` {$this->sOrderDirection}";
+                $aSql['order'] = " ORDER BY `{$this->aCurrent['table']}`.`views` {$this->sOrderDirection}, `{$this->aCurrent['table']}`.`id` {$this->sOrderDirection}";
                 break;
         }
         return $aSql;
@@ -167,7 +166,7 @@ class BxAlbumsSearchResultMedia extends BxBaseModTextSearchResult
                 $this->aCurrent['restriction_sql'] = " AND (`f`.`added` {$sOper} {$aMediaInfo['added']} OR (`f`.`added` = {$aMediaInfo['added']} AND `{$this->aCurrent['table']}`.`id` {$sOper} {$aMediaInfo['id']})) ";
                 break;
             case 'popular':
-                $this->aCurrent['restriction_sql'] = " AND (`bx_albums_albums`.`views` {$sOper} {$aMediaInfo['views']} OR (`bx_albums_albums`.`views` = {$aMediaInfo['views']} AND `{$this->aCurrent['table']}`.`id` {$sOper} {$aMediaInfo['id']})) ";
+                $this->aCurrent['restriction_sql'] = " AND (`{$this->aCurrent['table']}`.`views` {$sOper} {$aMediaInfo['views']} OR (`{$this->aCurrent['table']}`.`views` = {$aMediaInfo['views']} AND `{$this->aCurrent['table']}`.`id` {$sOper} {$aMediaInfo['id']})) ";
                 break;
         }
 
@@ -177,6 +176,12 @@ class BxAlbumsSearchResultMedia extends BxBaseModTextSearchResult
 
         return false;
     }
+
+    function getRssUnitLink (&$a)
+    {
+        bx_import('BxDolPermalinks');
+        return BX_DOL_URL_ROOT . BxDolPermalinks::getInstance()->permalink('page.php?i=' . $this->oModule->_oConfig->CNF['URI_VIEW_MEDIA'] . '&id=' . $a['id']);
+    }
 }
 
 /** @} */

+ 2 - 0
modules/boonex/albums/install/langs/en.xml

@@ -61,6 +61,8 @@
     <string name="_bx_albums_page_title_browse_recent"><![CDATA[Recent Albums]]></string>
     <string name="_bx_albums_page_title_browse_popular"><![CDATA[Popular Albums]]></string>
     <string name="_bx_albums_page_title_browse_popular_media"><![CDATA[Popular Images]]></string>
+    <string name="_bx_albums_page_title_browse_recent_media"><![CDATA[Recent Images]]></string>
+    <string name="_bx_albums_page_title_browse_media_in_album"><![CDATA[Images]]></string>
     <string name="_bx_albums_page_title_sys_home"><![CDATA[Albums Home]]></string>
     <string name="_bx_albums_page_title_home"><![CDATA[Albums]]></string>
     <string name="_bx_albums_page_block_title_recent_entries"><![CDATA[Recent Albums]]></string>