aliroFolderContent.php

Go to the documentation of this file.
00001 <?php
00002 
00003 /**************************************************************
00004 * This file is part of Remository
00005 * Copyright (c) 2006 Martin Brampton
00006 * Issued as open source under GNU/GPL
00007 * For support and other information, visit http://remository.com
00008 * To contact Martin Brampton, write to martin@remository.com
00009 *
00010 * Remository started life as the psx-dude script by psx-dude@psx-dude.net
00011 * It was enhanced by Matt Smith up to version 2.10
00012 * Since then development has been primarily by Martin Brampton,
00013 * with contributions from other people gratefully accepted
00014 */
00015 
00016 abstract class aliroFolderContent extends aliroDatabaseRow {
00017     protected $folderfield = 'folderid';
00018 
00019     function getBasicFolder () {
00020         $folderfield = $this->folderfield;
00021         return aliroFolderHandler::getInstance()->getBasicFolder($this->$folderfield);
00022     }
00023     
00024     function getFolder () {
00025         $folderfield = $this->folderfield;
00026         return aliroFolderHandler::getInstance()->getFolder($this->$folderfield);
00027     }
00028 
00029     function getCategoryName () {
00030         $parent = $this->getBasicFolder();
00031         return is_object($parent) ? $parent->getCategoryName(true) : '';
00032     }
00033 
00034     function getFamilyNames () {
00035         $parent = $this->getBasicFolder();
00036         return $parent->getFamilyNames(true);
00037     }
00038 
00039     ???
00040     function &getEditSelectList ($type, $parm, &$user) {
00041         $repository =& remositoryRepository::getInstance();
00042         $clist = $repository->getSelectList(false, $this->containerid, $type, $parm, $user);
00043     return $clist;
00044     }
00045 
00046     ???
00047     function isFieldHTML ($field) {
00048         return in_array($field, array('description', 'smalldesc', 'license'));
00049     }
00050 
00051     ???
00052     function togglePublished (&$idlist, $value) {
00053         $cids = implode( ',', $idlist );
00054         $sql = "UPDATE #__downloads_files SET published=$value". "\nWHERE id IN ($cids)";
00055         remositoryRepository::doSQL($sql);
00056     }
00057 
00058     ???
00059     function resetDownloadCounts () {
00060         remositoryRepository::doSQL('UPDATE #__downloads_files SET downloads=0');
00061     }
00062 
00063     function getFilesSQL ($published, $count=false, $containerid=0, $descendants=false, $orderby=2, $search='', $limitstart=0, $limit=0, $submitter=0) {
00064         $sorter = array ('', ' ORDER BY id', ' ORDER BY filetitle', ' ORDER BY downloads DESC', ' ORDER BY submitdate DESC', ' ORDER BY u.username');
00065         if (!isset($sorter[$orderby]) OR $orderby == 0) $orderby = 2;
00066         if ($count) $results = 'count(f.id)';
00067         else $results = 'f.*, AVG(l.value) AS vote_value, COUNT(l.value) AS vote_count';
00068         if ($submitter) $results .= ', u.username';
00069         if ($descendants AND $containerid) {
00070             $sql = "SELECT $results FROM #__downloads_structure AS s INNER JOIN #__downloads_files AS f ON f.containerid=s.item";
00071             $where[] = "s.container = $containerid";
00072         }
00073         else {
00074             $sql = "SELECT $results FROM #__downloads_files AS f ";
00075             if ($containerid) $where[] = "f.containerid = $this->id";
00076             else $where[] = "f.metatype = 0";
00077         }
00078         if ($submitter) $where[] = "f.submittedby = $submitter";
00079         if (!$count) $sql .= ' LEFT JOIN #__downloads_log AS l ON l.type=3 AND l.fileid=f.id';
00080         if ($submitter OR (5 == $orderby)) $sql .= ' LEFT JOIN #__users AS u ON u.id=f.submittedby';
00081         if ($published) $where[] = 'f.published=1';
00082         $interface =& remositoryInterface::getInstance();
00083         if ($search) {
00084             $search = $interface->getEscaped($search);
00085             $where[] = "LOWER(f.filetitle) LIKE '%$search%'";
00086         }
00087         if (isset($where)) $sql .= ' WHERE '.implode(' AND ',$where);
00088         $repository =& remositoryRepository::getInstance();
00089         $user = $interface->getUser();
00090         $sql .= remositoryAbstract::visibilitySQL ($user, $repository->See_Files_no_download);
00091         if (!$count) {
00092             $sql .= ' GROUP BY f.id';
00093             $sql .= $sorter[$orderby];
00094         }
00095         if ($limit) $sql .= " LIMIT $limitstart,$limit";
00096         return $sql;
00097     }
00098 
00099     function popularLoggedFiles ($category, $max, $days, $user) {
00100         $interface =& remositoryInterface::getInstance();
00101         $database =& $interface->getDB();
00102         $sql = 'SELECT f.id, f.filetitle, f.autoshort, f.description, f.smalldesc, f.filedate, f.icon, f.containerid, c.name, COUNT( l.fileid ) AS downloads FROM #__downloads_log AS l, #__downloads_files AS f, #__downloads_containers AS c';
00103         if ($category) $sql .= ', #__downloads_structure AS s';
00104         $sql .= ' WHERE c.id = f.containerid AND f.published=1 AND l.type=1 AND l.fileid=f.id';
00105         $repository =& remositoryRepository::getInstance();
00106         $sql .= remositoryAbstract::visibilitySQL ($user, $repository->See_Files_no_download);
00107         if ($category) $sql .= " AND f.containerid=s.item AND s.container=$category";
00108         $sql .= " AND DATE_SUB(CURDATE(),INTERVAL $days DAY ) <= l.date";
00109         $sql .= " GROUP BY l.fileid ORDER BY downloads DESC LIMIT $max";
00110         $database->setQuery($sql);
00111         $files = $database->loadObjectList();
00112         if ($files) return $files;
00113         else return array();
00114     }
00115 
00116     function popularDownloadedFiles ($category, $max, $user) {
00117         $interface =& remositoryInterface::getInstance();
00118         $database =& $interface->getDB();
00119         $sql = 'SELECT f.id, f.downloads, f.filetitle, f.autoshort, f.description, f.smalldesc, f.filedate, f.icon, f.containerid, c.name from #__downloads_files AS f, #__downloads_containers AS c';
00120         if ($category) $sql .= ', #__downloads_structure AS s';
00121         $sql .= ' WHERE f.containerid = c.id AND f.published=1';
00122         $repository =& remositoryRepository::getInstance();
00123         $sql .= remositoryAbstract::visibilitySQL ($user, $repository->See_Files_no_download);
00124         if ($category) $sql .= " AND f.containerid=s.item AND s.container=$category";
00125         $sql .= " ORDER BY downloads DESC LIMIT $max";
00126         $database->setQuery($sql);
00127         $files = $database->loadObjectList();
00128         if ($files) return $files;
00129         else return array();
00130     }
00131 
00132     function newestFiles ($category, $max, $user) {
00133         $interface =& remositoryInterface::getInstance();
00134         $database =& $interface->getDB();
00135         $sql = 'SELECT f.id, f.filetitle, f.autoshort, f.description, f.smalldesc, f.filedate, f.icon, f.containerid, c.name from #__downloads_files AS f, #__downloads_containers AS c';
00136         if ($category) $sql .= ', #__downloads_structure AS s';
00137         $sql .= ' WHERE f.containerid = c.id AND f.published=1';
00138         $repository =& remositoryRepository::getInstance();
00139         $sql .= remositoryAbstract::visibilitySQL ($user, $repository->See_Files_no_download);
00140         if ($category) $sql .= " AND f.containerid=s.item AND s.container=$category";
00141         $sql .= " ORDER BY f.filedate DESC LIMIT $max";
00142         $database->setQuery($sql);
00143         $files = $database->loadObjectList();
00144         if ($files) return $files;
00145         else return array();
00146     }
00147 
00148     function getCountInContainer ($id, $published, $search='') {
00149         $interface =& remositoryInterface::getInstance();
00150         $database =& $interface->getDB();
00151         $sql = "SELECT COUNT(id) FROM #__downloads_files WHERE containerid = $id";
00152         if ($published) $sql .= ' AND published=1';
00153         if ($search) $sql .= " AND LOWER(filetitle) LIKE '%$search%'";
00154         $database->setQuery($sql);
00155         return $database->loadResult();
00156     }
00157 
00158     function searchFilesSQL($search_text, $seek_fields, &$user, $countOnly, $limitstart=0, $limit=0) {
00159         $results = $countOnly ? 'COUNT(id)' : 'id,containerid,filetitle,description,icon,filesize,downloads';
00160         $sql="SELECT $results FROM #__downloads_files AS f WHERE metatype = 0";
00161         foreach ($seek_fields as $field) $orcondition[] = "$field LIKE '%$search_text%'";
00162         if (isset($orcondition)) $sql .= ' AND ('.implode(' OR ', $orcondition).') ';
00163         else {
00164             echo '<br/>&nbsp;<br/>'._DOWN_SEARCH_ERR;
00165             exit;
00166         }
00167         $repository =& remositoryRepository::getInstance();
00168         $sql .= remositoryAbstract::visibilitySQL ($user, $repository->See_Files_no_download);
00169         $sql .= ' ORDER BY filetitle';
00170         if ($limit AND !$countOnly) $sql .= " LIMIT $limitstart,$limit";
00171         return $sql;
00172     }
00173 
00174 }
00175 
00176 ?>

Generated on Thu Apr 17 13:03:26 2008 for ALIRO by  doxygen 1.5.5