Announcement

Collapse
No announcement yet.

Fatal error: Cannot redeclare class mod....

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Fatal error: Cannot redeclare class mod....

    Hallo zusammen,

    ich erhalte in meinem Browser folgender Fehler:


    Fatal error: Cannot redeclare class modMissionmanagementHelper in E:\xampp\htdocs\..........on line 26

    Dort steht in Zeile 25 bis 28:
    Code:
    class modMissionmanagementHelper
    {
    
    	function getList(&$params)
    Hier der ganze Code:
    Code:
    class modMissionmanagementHelper
    {
    
    	function getList(&$params)
    	{
    		global $mainframe;
    
    		$db			=& JFactory::getDBO();
    		$user		=& JFactory::getUser();
    
    		if ($params->get( 'type', '0' ) == 0) {
    			$order = ' ORDER BY a.alarmdate, a.alarmtime';
    		} else {
    			$order = ' ORDER BY a.alarmdate DESC, a.alarmtime DESC';
    		}
    
    		$catid 	= trim( $params->get('catid') );
    
    		if ($catid)
    		{
    			$ids = explode( ',', $catid );
    			JArrayHelper::toInteger( $ids );
    			$categories = ' AND (l.categoryid=' . implode( ' OR l.categoryid=', $ids ) . ')';
    		}
    
    		//get $params->get( 'count', '2' ) nr of datasets
    		$query = 'SELECT a.*, l.name'
    				.' FROM #__missionmanagement_mission AS a'
    				.' LEFT JOIN #__missionmanagement_category AS l ON l.category = a.categoryid'
    				. $where
    				.($catid ? $categories : '')
    				. $order
    				.' LIMIT '.(int)$params->get( 'count', '10' )
    				;
    
    		$db->setQuery($query);
    		$rows = $db->loadObjectList();
    
    		$i		= 0;
    		$lists	= array();
    		foreach ( $rows as $row )
    		{
    			//cut titel
    			$length = strlen(htmlspecialchars( $row->missionname ));
    
    			if ($length > $params->get('cuttitle', '18')) {
    				$row->missionname = substr($row->missionname, 0, $params->get('cuttitle', '18'));
    				$row->missionname = htmlspecialchars( $row->missionname.'...', ENT_COMPAT, 'UTF-8');
    			}
    
    //			$lists[$i]->link		= JRoute::_('index.php?option=com_missionmanagement&mid='$row->slug);
    			$lists[$i]->dateinfo 	= modMissionmanagementHelper::_builddateinfo($row, $params);
    			$lists[$i]->text		= $params->get('showtitloc', 0 ) ? $row->missionname : htmlspecialchars( $row->venue, ENT_COMPAT, 'UTF-8' );
    			$lists[$i]->city		= htmlspecialchars( $row->city, ENT_COMPAT, 'UTF-8' );
    			$lists[$i]->venueurl 	= !empty( $row->url ) ? modMissionmanagementHelper::_format_url($row->url) : null;
    			$i++;
    		}
    
    		return $lists;
    	}
    Danke im voraus für Eure Hilfe!!

    Gruss Herbi

  • #2
    Hallo,

    bitte gib uns noch etwas mehr Input:
    - was ist das für ein Projekt
    - welche Dateien gehören noch dazu
    - welche Datei wird eigentlich mit dem Browser aufgerufen
    ?

    Wenn ich jetzt nur meine Glaskugel befrage würde ich sagen,
    die php - Datei, in der diese Klasse definiert ist, wird an mehreren Stellen eingebunden -> mal nach

    Code:
    include ( [name der Datei mit der Klassendefinition] )
    Zeilen im Rest des Projektes Ausschau halten.

    Viel Erfolg
    Tino
    Ich habs gleich!
    ... sagte der Programmierer.

    Comment


    • #3
      Hallo,

      ich entschuldige mich, dass ich keine Informationen bekannt gegeben habe!

      Dies ist ein Modul für Joomla1.5.

      Habe drei Dateien; helper.php, mod_test.php und default.php! Da ich dies umbaue, will ich nicht das Forum von Joomla benützen, sondern ein richtiges php Forum benutzen!

      helper.php:
      Code:
      <?php
      
      // no direct access
      defined('_JEXEC') or die('Restricted access');
      
      class modMissiontHelper
      {
      
      	function getList(&$params)
      	{
      		global $mainframe;
      
      		$db			=& JFactory::getDBO();
      		$user		=& JFactory::getUser();
      
      		if ($params->get( 'type', '0' ) == 0) {
      			$order = ' ORDER BY a.alarmdate, a.alarmtime';
      		} else {
      			$order = ' ORDER BY a.alarmdate DESC, a.alarmtime DESC';
      		}
      
      		$catid 	= trim( $params->get('catid') );
      
      		if ($catid)
      		{
      			$ids = explode( ',', $catid );
      			JArrayHelper::toInteger( $ids );
      			$categories = ' AND (l.categoryid=' . implode( ' OR l.categoryid=', $ids ) . ')';
      		}
      
      		//get $params->get( 'count', '2' ) nr of datasets
      		$query = 'SELECT a.*, l.name'
      				.' FROM #__test_mission AS a'
      				.' LEFT JOIN #__test_category AS l ON l.category = a.categoryid'
      				. $where
      				.($catid ? $categories : '')
      				. $order
      				.' LIMIT '.(int)$params->get( 'count', '10' )
      				;
      
      		$db->setQuery($query);
      		$rows = $db->loadObjectList();
      
      		$i		= 0;
      		$lists	= array();
      		foreach ( $rows as $row )
      		{
      			//cut titel
      			$length = strlen(htmlspecialchars( $row->missionname ));
      
      			if ($length > $params->get('cuttitle', '18')) {
      				$row->missionname = substr($row->missionname, 0, $params->get('cuttitle', '18'));
      				$row->missionname = htmlspecialchars( $row->missionname.'...', ENT_COMPAT, 'UTF-8');
      			}
      
      //			$lists[$i]->link		= JRoute::_('index.php?option=com_missionmanagement&mid='$row->slug);
      			$lists[$i]->dateinfo 	= modMissiontHelper::_builddateinfo($row, $params);
      			$lists[$i]->text		= $params->get('showtitloc', 0 ) ? $row->missionname : htmlspecialchars( $row->venue, ENT_COMPAT, 'UTF-8' );
      			$lists[$i]->city		= htmlspecialchars( $row->city, ENT_COMPAT, 'UTF-8' );
      			$lists[$i]->venueurl 	= !empty( $row->url ) ? modMissiontHelper::_format_url($row->url) : null;
      			$i++;
      		}
      
      		return $lists;
      	}
      
      	/**
      	 * Method to a formated and structured string of date infos
      	 *
      	 * @access public
      	 * @return string
      	 */
      	function _builddateinfo($row, &$params)
      	{
      		$date 		= modMissiontHelper::_format_date($row->alarmdate, $row->alarmtime, $params->get('formatdate', '%d.%m.%Y'));
      		$enddate 	= $row->enddates ? modMissiontHelper::_format_date($row->recurrencedate, $row->recurrencetime, $params->get('formatdate', '%d.%m.%Y')) : null;
      		$time		= $row->alarmtime ? modMissiontHelper::_format_date($row->alarmdate, $row->alarmtime, $params->get('formattime', '%H:%M')) : null;
      		$dateinfo	= $date;
      
      		if ( isset($enddate) ) {
      			$dateinfo .= ' - '.$enddate;
      		}
      
      		if ( isset($time) ) {
      			$dateinfo .= ' | '.$time;
      		}
      
      		return $dateinfo;
      	}
      
      	/**
      	 * Method to get a valid url
      	 *
      	 * @access public
      	 * @return string
      	 */
      	function _format_url($url)
      	{
      		if(!empty($url) && strtolower(substr($url, 0, 7)) != "http://") {
              	$url = 'http://'.$url;
              }
      		return $url;
      	}
      
      	/**
      	 * Method to format date information
      	 *
      	 * @access public
      	 * @return string
      	 */
      	function _format_date($date, $time, $format)
      	{
      		//format date
      		$date = strftime($format, strtotime( $date.' '.$time ));
      
      		return $date;
      	}
      }
      ?>
      mod_test.php:
      Code:
      <?php
      
      // no direct access
      defined('_JEXEC') or die('Restricted access');
      
      // get helper
      require_once(dirname(__FILE__).DS.'helper.php');
      
      
      $list = modMissiontHelper::getList($params);
      
      
      require(JModuleHelper::getLayoutPath('mod_test'));
      default.php:
      Code:
      <?php
      
      defined('_JEXEC') or die('Restricted access');
      
      // check if any results returned
      $items = count($list);
      if (!$items) {
         echo '<p class="modTest' . $params->get('moduleclass_sfx') . '">' . JText::_('NOEVENTS') . '</p>';
         return;
      }
      
      ?>
      <ul class="<?php echo $params->get('moduleclass_sfx'); ?>">
      <?php foreach ($list as $item) :  ?>
         <li>
            <span class="date">
            <?php if ($params->get('linkdet') == 1) : ?>
            <a href="<?php echo $item->link; ?>">
               <?php echo $item->dateinfo; ?>
            </a>
            <?php else :
               echo $item->dateinfo;
            endif;
            ?>
            </span><br />
            <span style="text-indent:10px; text-align:left"  class="location">
            <?php if ($params->get('showtitloc') == 0 && $params->get('linkloc') == 1) : ?>
               <a href="<?php echo $item->venueurl; ?>">
                  <?php echo $item->text; ?>
               </a>
            <?php elseif ($params->get('showtitloc') == 1 && $params->get('linkdet') == 2) : ?>
               <a href="<?php echo $item->link; ?>">
                  <?php echo $item->text; ?>
               </a>
            <?php else :
               echo $item->text;
            endif;
            ?>
            </span>
         </li>
         <br />
      <?php endforeach; ?>
      </ul>
      Danke und Gruss
      herbi

      Comment


      • #4
        Hallo herbi,

        ich nehme mal an der Fehler liegt in der Zeile:
        PHP Code:
        require(JModuleHelper::getLayoutPath('mod_test')); 
        in mod_test.php.

        JModuleHelper::getLayoutPath('mod_test') liefert den Pfad zur helper.php des Moduls mod_test. Die helper.php hast du jedoch schon einige Zeilen vorher mit
        PHP Code:
        require_once(dirname(__FILE__).DS.'helper.php'); 
        eingebunden.
        Nach meiner Auffassung müßte deine mod_test.php so aussehen:
        PHP Code:
        <?php

        // no direct access
        defined('_JEXEC') or die('Restricted access');

        // get helper
        require_once(JModuleHelper::getLayoutPath('mod_test'));

        $list modMissiontHelper::getList($params);
        Die Verwendung expliziter Pfade (wie __FILE__) sollte man unter Joomla 1.5 besser vermeiden und stattdessen die Joomla-Klassen verwenden.

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment

        Working...
        X