View file upload/src/addons/xenMade/ACPE/XF/Admin/Controller/Index.php

File size: 2.96Kb
<?php

namespace xenMade\ACPE\XF\Admin\Controller;

use XF\Mvc\ParameterBag;
use XF\Mvc\Reply\AbstractReply;

class Index extends XFCP_Index
{
    public function actionIndex()
    {
        \XF::app()->offsetSet('acpe_bypass', true);

        $reply = parent::actionIndex();

        if ($reply instanceof \XF\Mvc\Reply\View && !\XF::options()->acpe_DisableAddOnListIndex)
        {
            $upgradeable = [];
            $installed = [];
            $installable = [];
            $legacy = [];
            $skippable = [];
            $disabled = [];

            foreach ($this->app->addOnManager()->getAllAddOns() AS $id => $addOn)
            {
                if (isset($skippable[$id]))
                {
                    continue;
                }

                if ($addOn->canUpgrade())
                {
                    $skip = $addOn->legacy_addon_id;
                    if ($skip)
                    {
                        $skippable[$skip] = $skip;
                        unset($legacy[$skip]);
                    }
                    $upgradeable[$id] = $addOn;
                }
                else if ($addOn->isLegacy())
                {
                    $legacy[$id] = $addOn;
                }
                else if (!$addOn->isActive() && $addOn->isInstalled())
                {
                    $disabled[$id] = $addOn;
                }
                else if ($addOn->isInstalled())
                {
                    $installed[$id] = $addOn;
                }
                else if ($addOn->canInstall())
                {
                    $installable[$id] = $addOn;
                }
            }

            $reply->setParam('upgradeable', $upgradeable);
            $reply->setParam('installable', $installable);
            $reply->setParam('installed', $installed);
            $reply->setParam('legacy', $legacy);
            $reply->setParam('disabled_addons', $disabled);


            $tab = $this->filter('tab', 'str');

            if(!$tab)
            {
                switch ($reply)
                {
                    case (!empty($reply->getParam('upgradeable')) ? $tab = 'upgradeable' : '');
                        break;

                    case (!$tab && !empty($reply->getParam('installable')) ? $tab = 'installable' : '');
                        break;

                    case (!$tab && !empty($reply->getParam('installed')) ? $tab = 'installed' : '');
                        break;

                    case (!$tab && !empty($reply->getParam('legacy')) ? $tab = 'legacy' : '');
                        break;

                    case (!$tab && !empty($reply->getParam('disabled')) ? $tab = 'disabled' : '');
                        break;
                }
            }

            $reply->setParam('tab', $tab);
        }

        return $reply;
    }

}
if (false)
{
    class XFCP_Index extends \XF\Admin\Controller\Index {}
}