Ergebnis 1 bis 9 von 9

Thema: Brauche hilfe beim pluginmp3 unter Contao 3.1 lauffähig machen

  1. #1
    Contao-Nutzer
    Registriert seit
    04.02.2011.
    Beiträge
    36

    Standard Brauche hilfe beim pluginmp3 unter Contao 3.1 lauffähig machen

    Hi zusammen,

    da die Erweiterung pluginmp3 genau das macht was ich suche, möchte ich diese auch unter Contao 3.1 weiter verwenden.

    Nachdem es vom Entwickler wohl nichts neues mehr gibt wollte ich selbst ein wenig Hand anlegen :P

    Ein kleines bisschen kenne ich mich jetzt schon aus mit der Erweiterungs-Entwicklung aber so ganz vertraut mit php und dem Contao Framework bin ich leider dann doch nicht.
    (Normalerweiße Programmiere ich nur in Java...)

    Das BackendModul läuft soweit schon wieder denke ich...
    Aber am Frontent bekomme ich folgenden Fehler:

    Code:
    Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\contao3\system\modules\pluginmp3\PluginMp3.php on line 88
    Der Code dazu (aufs wesentliche reduziert!):
    Code:
    public function __construct($args) {
    
        $this->Import('Database');
        $this->Import('Environment');
        $this->Import('Input');
    
        // Hier steht die mp3 Datei als Datenbank BLOB
        $this->multiSRC = $args[0];
        ...	
      }
    
      public function parseplayer() {
    
          $playerid = 1;
          $fileid = 0;
    
          /*
           * Read the configuration of the current layout
           */
          
          $objconfig = $this->Database->prepare("SELECT * from tl_pluginmp3 WHERE id=?")
                                      ->execute($this->player_layout);
    	
          // Dieser unserialize geht glaub ich schief da $filesrc danach leer ist
          // wenn ich das hier einfüge:  if (!$filesrc = unserialize($this->multiSRC)) { echo 'cannot unserialize'; }
          // wird auch die ausgabe 'cannot unserialize' ausgegeben!
          $filesrc = unserialize($this->multiSRC);
    	  
          /*
           * Send the file to the browser for the download
           */
    
          if (strlen($this->Input->get('file', true))) {
            $this->sendFileToBrowser($objconfig->encode ? $this->decode_link($this->Input->get('file', true)) : $this->Input->get('file', true));
            return;
          }
          
          /*
           * Save the layout settings
           */
    
          $script = $this->savelayoutconfig($objconfig);
    
          /*
           * Create the playlist or for each file an own player, this depends on the settings.
           */
          //hier kommt dann die Fehlermeldung da $filesrc leer ist
          foreach ($filesrc as $file) {
          ...
    Der Konstruktor wird so aufgerufen:
    Code:
    $details = array ($this->pluginmp3_multiSRC);
    $player = new PluginMp3($details);
    In der Datenbank von Contao 2.11 steht das hier:
    Tabelle: tl_content
    Spalte: pluginmp3_multiSRC
    Inhalt: [BLOB - 71 B]

    Und in der Datenbank von Contao 3.1 steht:
    Tabelle: tl_content
    Spalte: pluginmp3_multiSRC
    Inhalt: [BLOB - 3 B]

    Läuft bei dem Datenbank Insert schon was schief?
    Oder wo könnte der Fehler sonst noch liegen?

    Könnt ihr mir weiter helfen?

  2. #2
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    da fehlt die Anpassung für das Datenbank unterstützte Filesystem das ab contao 3.x eingefügt wurde.
    Version abfragen und singleSRC checken und auf den Path umbiegen.

    Nachtrag: vor v3 wurde hier der Pfad benutzt und ab v3 steht hier nur noch die id bzw ab 3.2 vermutlich nur noch die uuid
    Geändert von magicsepp (19.11.2013 um 15:15 Uhr)

  3. #3
    Contao-Nutzer
    Registriert seit
    04.02.2011.
    Beiträge
    36

    Standard

    okay wenn ich dich richtig verstandn habe muss ich das machen:
    https://community.contao.org/de/show...zte-Filesystem

    Wenn ich aber in die Datenbank schaue ist singleSRC leer! (auch in Contao 2.11!)
    Ich gehe davon aus das pluginmp3 wirklich die mp3 Datei als Binäres Objekt in der DB speichert oder?

    oder hab ich deine antwort ganz falsch verstanden?

  4. #4
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    fast, den im multiSrc sind mehrer IDs im Stil der singleSRC gespeichert - (siehe core/classes/Theme.php function addDataRow)

  5. #5
    Contao-Nutzer
    Registriert seit
    04.02.2011.
    Beiträge
    36

    Standard

    ah okay jetzt verstehe ich das glaub ich.

    und wie mach ich das dann?

    Nach dem Beispiel von dem andern Thread würde das ja dann so aussehen:
    Code:
    if (!is_numeric($this->multiSRC)) {
         return '<p class="error">'.$GLOBALS['TL_LANG']['ERR']['version2format'].'</p>';
    }
    
    $objFile = \FilesModel::findByPk($this->multiSRC);  
    	
    $filesrc = unserialize($this->multiSRC);
    
    foreach ($filesrc as $file) {
    ...
    Das klappt aber nicht!

  6. #6
    Contao-Nutzer
    Registriert seit
    04.02.2011.
    Beiträge
    36

    Standard

    so ich bin jetzt ein bisschen weiter aber dafür verwirrt....

    was ich bisher habe:
    Code:
    $this->multiSRC = deserialize($this->multiSRC);
    if (!is_array($this->multiSRC) || empty($this->multiSRC)) {
        // in diesen if springt er rein => es ist anscheinend kein array...
    		// return '';
    }
    if (!is_numeric($this->multiSRC[0])) {
        //Hier springt er nicht rein also passt das Format
        //return '<p class="error">'.$GLOBALS['TL_LANG']['ERR']['version2format'].'</p>';
    }
    
    $this->objFiles = \FilesModel::findByPk($this->multiSRC); // da es nur eine ID ist und kein Array muss ich den Pfad so aufschlüsseln
    //	$this->objFiles = \FilesModel::findMultipleByIds($this->multiSRC);
    
    $filesrc = $this->objFiles;
    // in $filesrc->path steht jetzt der Pfad zur datei
    
    foreach ($filesrc as $file) { 
    //hier bekomme ich immernoch diese warning:
    //Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\ullawolf_contao3\system\modules\pluginmp3\PluginMp3.php on line 167
    
    ...
    ich habe also schon die datei aber dann bei dem foreach fackelt er wieder ab...
    mir ist noch aufgefallen das wenn ich im backend modul mehrere dateien auswähle, trotzdem nur eine gespeichert wird...
    wird da vielleich schon falsch in die datenbank gespeichert?

    Hier mal das DCA für das multiSRC feld:
    Code:
    $GLOBALS['TL_DCA']['tl_content']['fields']['pluginmp3_multiSRC'] = array
    (
    	'label'                   => &$GLOBALS['TL_LANG']['tl_content']['pluginmp3_multiSRC'],
    	'exclude'                 => true,
    	'inputType'               => 'fileTree',
    	'eval'                    => array('extensions'=>'mp3', 'fieldType'=>'checkbox', 'files'=>true, 'filesOnly'=>true, 'mandatory'=>true)
    );

  7. #7
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    zum 2ten Teil hab ich auf die schnelle schonmal ein fehledes 'eval' entdeckt:
    PHP-Code:
    'multiple'=>true 

  8. #8
    Contao-Nutzer
    Registriert seit
    04.02.2011.
    Beiträge
    36

    Standard

    jaa es funktioniert =)

    dein tipp mit dem fehlenden eval war der schlüssel zum erfolg
    dan nur noch ein bisschen in den sourcen suchen und abkucken und es geht:

    Code:
    $this->multiSRC = deserialize($this->multiSRC);
    	  // Return if there are no files
          if (!is_array($this->multiSRC) || empty($this->multiSRC)) {
    		return '';
    	  }
    	  
    	  // Check for version 3 format
    	  if (!is_numeric($this->multiSRC[0])) {
    		return '<p class="error">'.$GLOBALS['TL_LANG']['ERR']['version2format'].'</p>';
    	  }
    	
    	  // Get the file entries from the database
    	  $filesrc = \FilesModel::findMultipleByIds($this->multiSRC);
    
    foreach ($this->eliminateNestedPaths($filesrc->fetchEach('path')) as $file) {
    VIELEN DANK!

    Wenn ich noch ein bisschen Zeit finde werde ich den rest auch noch überarbeiten und das zip in den pluginmp3 thread hochladen!

  9. #9
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Hallo c0CoKabAnA,

    wo finde ich dein ZIP? Ich wäre sehr interessiert an deiner Lösung.

    Gruß, folkfreund

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •