micker / mod_flexiadmin

Module FLEXI admin
11 stars 4 forks source link

PHP Warnings with php7.4 #33

Closed iamrobert closed 4 years ago

iamrobert commented 4 years ago

Problem 1: Image of Issue 1

Warning: Invalid argument supplied for foreach() in D:\2021-laragon\www\bm\administrator\modules\mod_flexiadmin\helper.php on line 152

Seems to be fixed by wrapping in an if:

if (is_array($list_customblocks) || is_object($list_customblocks))
{
        foreach( $list_customblocks as $list_customblocks_idx => $customblock ){
                $_catid = $customblock->catidlist;
                $catlist = !empty($globalcats[$_catid]->descendants) ? $globalcats[$_catid]->descendants : $_catid;
                $catids_join = ' JOIN #__flexicontent_cats_item_relations AS rel ON rel.itemid = a.id ';
                $catids_where = ' rel.catid IN ('.$catlist.') ';
            $queryCustomlist = 'SELECT DISTINCT  a.id,b.name, a.title, a.catid, a.created, a.created_by, a.modified, a.modified_by FROM #__content AS a LEFT JOIN #__users AS b ON a.created_by = b.id '.$catids_join.'WHERE '.  $catids_where.' AND state = 1 ORDER BY modified DESC LIMIT '. (int) $params->get('count');
            $db->setQuery( $queryCustomlist );
            $itemsCustomlist = $db->loadObjectList();
            //print_r ($itemsCustomlist) ;
            foreach ($itemsCustomlist as &$itemCustomlist) {
                $itemCustomlist->link = JRoute::_('index.php?option=com_flexicontent&task=items.edit&cid[]='.$itemCustomlist->id);
            }
            $customblock->listitems = $itemsCustomlist;
        }
    }

Problem 2:

Image of Issue 2

Warning: Invalid argument supplied for foreach() in D:\2021-laragon\www\bm\administrator\modules\mod_flexiadmin\tmpl\default.php on line 715

Seems to be fixed with wrapping in an if clause:

 if (is_array($listCustomlist) || is_object($listCustomlist))
{   
foreach( $listCustomlist as $listCustomlist_idx => $customblock ) :
<?php
// loop your result
 if (is_array($listCustomlist) || is_object($listCustomlist))
{   
foreach( $listCustomlist as $listCustomlist_idx => $customblock ) :?>

<div class="block customblock well well-small" style="width:<?php echo $customblock->width; ?>%">
   <h3 class="module-title nav-header">
   <i class="icon-large icon-user"></i>
   <?php echo JText::_($customblock->nameblockcustom); ?> : </h3>
   <?php        $show_all_link = 'index.php?option=com_flexicontent&amp;view=items&amp;&filter_cats='.$customblock->catidlist; ?>
   <div style='text-align:right;'>
   <a href='<?php echo $show_all_link ?>' class='adminlink'>
   <?php
   echo JText::_( 'FLEXI_ADMIN_ALL' );
   echo "</a></div>";   ?>
   <div class="row-striped" style="height:<?php echo $forceheightblock; ?>">
      <table class="table table-hover">
         <thead>
            <tr>
            <th><?php echo JText::_( 'FLEXI_ADMIN_TITLE' ); ?></th>
            <?php if ($customblock->displautblock) : ?><th><?php echo JText::_( 'FLEXI_ADMIN_AUTHOR' ); ?></th><?php endif; ?>
            <?php
            if(!empty($customblock->extrafieldlist) || !empty($customblock->listitems->id) ) {
               $item = $itemmodel->getItem($customblock->listitems->id, $check_view_access=false);
               $items = array(&$item);
                 // Get fields values from the DB,
               FlexicontentFields::getFields($items);
                $arrayExtrafield = explode(',', $customblock->extrafieldlist);
               if(isset($arrayExtrafield[0])) {
               foreach ($arrayExtrafield as $extrafield){
                  FlexicontentFields::getFieldDisplay($item, $extrafield);
                  $label= $item->fields[$extrafield]->label;
                  echo '<th>';
                  echo JText::_($label);
                  echo '</th>';
               }
             }
           }
            ?>
            <?php if ($customblock->displdateblock) : ?><th><?php echo JText::_( 'FLEXI_ADMIN_DATE' ); ?></th><?php endif; ?>
            </tr>
         </thead>

         <tbody>
         <?php foreach ($customblock->listitems as $itemcustomblock) : ?>
            <tr>
            <td>
               <a href="<?php echo $itemcustomblock->link; ?>"><?php echo $itemcustomblock->title; ?>
               <i class="icon-large icon-edit"></i></a>
            </td>
            <?php if ($customblock->displautblock) : ?><td>
               <span class="small">
                  <i class="icon-user"></i>

                  <small class="hasTooltip" title="" data-original-title="<?php echo JHtml::tooltipText('FLEXI_ADMIN_MODIFIED_BY')." ". $itemcustomblock->name; ?>"><?php echo $itemcustomblock->name;?> </small>
               </span>
            </td>
            <?php endif; ?>
            <?php
            if(!empty($customblock->extrafieldlist)) {
               $item = $itemmodel->getItem($itemcustomblock->id, $check_view_access=false);
               $items = array(&$item);
               $arrayExtrafield = explode(',', $customblock->extrafieldlist);
               if(isset($arrayExtrafield[0])) {
               foreach ($arrayExtrafield as $extrafield){
                 FlexicontentFields::getFieldDisplay($item, $extrafield);
                  $value= $item->fields[$extrafield]->display;
                  echo '<td>';
                  echo $value;
                  echo '</td>';
               }
             }
           }
            ?>
            <?php if ($customblock->displdateblock) : ?>
            <td>
            <span class="small">
               <i class="icon-calendar"></i> <?php echo JHtml::date($itemcustomblock->modified, 'd M Y'); ?>
            </span>
            </td>
            <?php endif; ?>
         </tr>
      <?php endforeach; ?>
                  </tbody>
      </table>
</div>
</div>

<?php endforeach; ?>
<?php } ?>
micker commented 4 years ago

Hello cool can you make a pr ? I will study it

iamrobert commented 4 years ago

Actually never mind my code doesn't work.

I think because of the update - when you haven't selected custom block it display.