Neue Dokumente unter Downloads

Hast du Vorschläge, was wir an Admidio noch verbessern könnten ? Hier kannst du uns deine Vorstellung an neuen Funktionen mitteilen.
Chip68
Beiträge: 41
Registriert: 5. Jan 2009, 16:38
Wohnort: Schweiz

Strafaufgabe!

Beitrag von Chip68 »

Jochen, Jochen, Jochen, Jochen.. :oops:

So, Strafaufgabe erfüllt

Gruss
Klaus-Peter
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Sehr brav,

könntest Du bitte mal deinen Quellcode posten.
Chip68
Beiträge: 41
Registriert: 5. Jan 2009, 16:38
Wohnort: Schweiz

Beitrag von Chip68 »

Bitte nicht ausschimpfen, ist mein erster PHP Code......
<?php
/******************************************************************************
* sidebar_downloads
*
* Version 0.9.0
*
* Plugin das die aktuellsten X Downloads auflistet
*
*
* Kompatible ab Admidio-Versions 2.0.0
*
* Copyright : (c) 2004 - 2008 The Admidio Team
* Homepage : http://www.admidio.org
* Module-Owner : Marc Stehli
* License : GNU Public License 2 http://www.gnu.org/licenses/gpl-2.0.html
*
*****************************************************************************/

// Pfad des Plugins ermitteln
$plugin_folder_pos = strpos(__FILE__, "adm_plugins") + 11;
$plugin_file_pos = strpos(__FILE__, "sidebar_downloads.php");
$plugin_folder = substr(__FILE__, $plugin_folder_pos+1, $plugin_file_pos-$plugin_folder_pos-2);

if(!defined('PLUGIN_PATH'))
{
define('PLUGIN_PATH', substr(__FILE__, 0, $plugin_folder_pos));
}
require_once(PLUGIN_PATH. "/../adm_program/system/common.php");
require_once(PLUGIN_PATH. "/$plugin_folder/config.php");
require_once(PLUGIN_PATH. "/../adm_program/system/folder_class.php");

// pruefen, ob alle Einstellungen in config.php gesetzt wurden
// falls nicht, hier noch mal die Default-Werte setzen
if(isset($plg_downloads_count) == false || is_numeric($plg_downloads_count) == false)
{
$plg_downloads_count = 10;
}
if(isset($plg_max_char_per_word_downl) == false || is_numeric($plg_max_char_per_word_downl) == false)
{
$plg_max_char_per_word_downl = 0;
}

if(isset($plg_link_class_downl))
{
$plg_link_class_downl = strip_tags($plg_link_class_downl);
}
else
{
$plg_link_class_downl = "";
}

if(isset($plg_link_target_downl))
{
$plg_link_target_downl = strip_tags($plg_link_target_downl);
}
else
{
$plg_link_target_downl = "_self";
}


// DB auf Admidio setzen, da evtl. noch andere DBs beim User laufen
$g_db->setCurrentDB();

// alle Organisationen finden, in denen die Orga entweder Mutter oder Tochter ist
$plg_organizations = "";
$plg_arr_orgas = $g_current_organization->getReferenceOrganizations(true, true);

foreach($plg_arr_orgas as $key => $value)
{
$plg_organizations = $plg_organizations. "'$value', ";
}
$plg_organizations = $plg_organizations. "'". $g_current_organization->getValue("org_shortname"). "'";


// pruefen ob das Modul ueberhaupt aktiviert ist
if ($g_preferences['enable_download_module'] !=1)
{ // das Module ist deaktiviert
}

else
{
// erst pruefen, ob der User auch die entsprechenden Rechte hat
if (!$g_current_user->editDownloadRight())
{ // Keine Rechte
}

else
{
// nun alle relevanten Downloads finden


$sql = "SELECT fil_timestamp, fil_name, fol_name, fol_path, fil_id fil_fol_id FROM ". TBL_FILES. ", ". TBL_FOLDERS. "
WHERE fil_fol_id = fol_id
ORDER BY fil_timestamp DESC";


$plg_result_fil = $g_db->query($sql);



if($g_db->num_rows($plg_result_fil) > 0)
{
$anzahl = 0;
while($plg_row = $g_db->fetch_object($plg_result_fil))
{
$folder = new Folder($g_db);

$folder->getFolderForDownload(fil_fol_id);

if ($folder->getValue('fol_id'))
{
echo '<a class="'. $plg_link_class_downl. '" title= "'. $plg_row->fol_path. '/'. $plg_row->fol_name. '/" href="'. $g_root_path. '/adm_program/modules/downloads/get_file.php?file_id='. $plg_row->fil_id. '&headline='. $plg_headline_downl. '" target="'. $plg_link_target_downl. '">';
echo "$plg_row->fil_name</a><br />";
echo "(&nbsp;". $plg_row->fil_timestamp. "&nbsp;)<hr />";
$anzahl++;
}
if ($anzahl == $plg_downloads_count)
{
break;
}
}
}
else
{
echo "Es wurden noch keine Downloads hochgeladen.";
}
}
}
echo '</div>';



?>
Chip68
Beiträge: 41
Registriert: 5. Jan 2009, 16:38
Wohnort: Schweiz

Beitrag von Chip68 »

Hier fehlte noch was, macht die Sache aber nicht besser.... :-(
/ nun alle relevanten Downloads finden


$sql = "SELECT fil_timestamp, fil_name, fol_name, fol_path, fil_id, fil_fol_id FROM ". TBL_FILES. ", ". TBL_FOLDERS. "
WHERE fil_fol_id = fol_id
ORDER BY fil_timestamp DESC";
Chip68
Beiträge: 41
Registriert: 5. Jan 2009, 16:38
Wohnort: Schweiz

Beitrag von Chip68 »

Hallo Jochen

Was meinst du, wann kannst du die die Sache ansehen? :oops:

Vielen Dank
Marc
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hi,

vielleicht am WE. Stehen kurz vor der Betaphase zur 2.1, da ist meine tägliche Admidiozeit immer ganz gut ausgelastet. Hab Dein Anliegen aber nicht vergessen. ;-)

Gruß Jochen
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Bitteschön:

Code: Alles auswählen

<?php
/******************************************************************************
* sidebar_downloads
*
* Version 0.9.0
*
* Plugin das die aktuellsten X Downloads auflistet
*
*
* Kompatible ab Admidio-Versions 2.0.0
*
* Copyright : (c) 2004 - 2008 The Admidio Team
* Homepage : http://www.admidio.org
* Module-Owner : Marc Stehli
* License : GNU Public License 2 http://www.gnu.org/licenses/gpl-2.0.html
*
*****************************************************************************/

// Pfad des Plugins ermitteln
$plugin_folder_pos = strpos(__FILE__, "adm_plugins") + 11;
$plugin_file_pos = strpos(__FILE__, "sidebar_downloads.php");
$plugin_folder = substr(__FILE__, $plugin_folder_pos+1, $plugin_file_pos-$plugin_folder_pos-2);

if(!defined('PLUGIN_PATH'))
{
    define('PLUGIN_PATH', substr(__FILE__, 0, $plugin_folder_pos));
}
require_once(PLUGIN_PATH. "/../adm_program/system/common.php");
require_once(PLUGIN_PATH. "/../adm_program/system/file_class.php");

// pruefen, ob alle Einstellungen in config.php gesetzt wurden
// falls nicht, hier noch mal die Default-Werte setzen
if(isset($plg_downloads_count) == false || is_numeric($plg_downloads_count) == false)
{
    $plg_downloads_count = 10;
}
if(isset($plg_max_char_per_word_downl) == false || is_numeric($plg_max_char_per_word_downl) == false)
{
$plg_max_char_per_word_downl = 0;
}

if(isset($plg_link_class_downl))
{
    $plg_link_class_downl = strip_tags($plg_link_class_downl);
}
else
{
    $plg_link_class_downl = "";
}


// DB auf Admidio setzen, da evtl. noch andere DBs beim User laufen
$g_db->setCurrentDB();

// alle Organisationen finden, in denen die Orga entweder Mutter oder Tochter ist
$plg_organizations = "";
$plg_arr_orgas = $g_current_organization->getReferenceOrganizations(true, true);

foreach($plg_arr_orgas as $key => $value)
{
    $plg_organizations = $plg_organizations. "'$value', ";
}
$plg_organizations = $plg_organizations. "'". $g_current_organization->getValue("org_shortname"). "'";


// pruefen ob das Modul ueberhaupt aktiviert ist
if ($g_preferences['enable_download_module'] !=1)
{ // das Module ist deaktiviert
}

else
{
// erst pruefen, ob der User auch die entsprechenden Rechte hat
// nun alle relevanten Downloads finden


        $sql = "SELECT fil_timestamp, fil_name, fol_name, fol_path, fil_id, fil_fol_id FROM ". TBL_FILES. ", ". TBL_FOLDERS. "
        WHERE fil_fol_id = fol_id
        ORDER BY fil_timestamp DESC
        LIMIT 0, 10";

        $plg_result_fil = $g_db->query($sql);

        if($g_db->num_rows($plg_result_fil) > 0)
        {
            while($plg_row = $g_db->fetch_object($plg_result_fil))
            {        
                $file = new File($g_db);
                $file->getFileForDownload($plg_row->fil_id);
                if($file->getValue('fil_id'))
                {
                   echo '<a class="'. $plg_link_class_downl. '" title= "'. $plg_row->fol_path. '/'. $plg_row->fol_name. '/" 
                   href="'. $g_root_path. '/adm_program/modules/downloads/get_file.php?file_id='. $plg_row->fil_id. '" target="_self">'.$plg_row->fil_name.'</a>
                   <br />(&nbsp;'. $plg_row->fil_timestamp. '&nbsp;)<hr />';
                }
            }
        }
        else
        {
            echo "Es wurden noch keine Downloads hochgeladen.";
        }

}
?> 
Chip68
Beiträge: 41
Registriert: 5. Jan 2009, 16:38
Wohnort: Schweiz

Beitrag von Chip68 »

Hallo Jochen

Vielen Dank!!

Leider hat es aber das primäre Problem nicht gelöst... :cry:

Ein Mitglied, dass einer Rolle zugeordnet ist, die keine Rechte für Uploads hat, kann ja trotzdem das Recht haben, Dateien zu downloaden.
Ein solches Mitglied sieht nun aber absolut keine Einträge, sollte es aber.
Weiss du, was ich meine?

Vielen Dank
Marc
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo,

habs bei mir jetzt nur mit ausgeloggt getestet. Da bekam ich nur die Dateien angezeigt die ich auch sehen durfte. Bist du sicher das unter den letzten 10 welche dabei sind die der jenige sehen darf?

Gruß Jochen
Chip68
Beiträge: 41
Registriert: 5. Jan 2009, 16:38
Wohnort: Schweiz

Beitrag von Chip68 »

Es sollen nicht die letzten 10 angezeigt werden, sondern die letzten 10, bei denen das Mitglied die Rechte hat...

Es müssen also eigentlich alle Einträge gelesen werden und nach max $plg_downloads_count muss die Ausgabe unterbrochen werden!

Gruss
Marc
Chip68
Beiträge: 41
Registriert: 5. Jan 2009, 16:38
Wohnort: Schweiz

Beitrag von Chip68 »

Hab nun den Zähler wieder eingebaut und alle Sätze gelesen, nun geht es!!

Vielen vielen Dank :!:


Möchtet ihr daraus ein offizeielles Plugin machen?
Würde mich sehr freuen!!!

Nochmals Danke
Marc
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Hallo Marc,

Wollte es dir nicht zu einfach machen und hatte es deswegen auf das nötigste reduziert :-)

Finde die Grundidee gut. Würde vorschlagen wir kümmern uns darum, sobald wir die neue Version in trockenen Tüchern haben. Dann müsste halt noch eine config-Datei her in der man z.B. einstellen kann wie viele Datein angezeigt werden sollen.

Gruß Jochen
Chip68
Beiträge: 41
Registriert: 5. Jan 2009, 16:38
Wohnort: Schweiz

Beitrag von Chip68 »

Hallo Jochen

Cool! 8)

Die angesprochene config-Datei gibt es schon.

Wenn jemand etwas braucht, einfach melden! :)

Danke
Marc
Benutzeravatar
fasse
Administrator
Beiträge: 6183
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Hallo Marc,

du kannst dein Plugin ja schon mal so vorbereiten, wie die anderen Plugins und uns mal zuschicken.
Dann kann ich es mal einbauen und ein bischen damit spielen.

Gruß
Fasse
FeuSchleu
Beiträge: 27
Registriert: 28. Feb 2009, 12:52
Kontaktdaten:

Beitrag von FeuSchleu »

Hallo,

besteht die Möglichkeit auch den Uploader der Datei mit auszugeben?

hochgeladen am ... von ...

Dies wäre sehr hilfreich, damit die Mitglieder sehen wer den Download "verbrochen" hat.

Gruß
René
Antworten