示例#1
0
 static function getManifestData($name)
 {
     if (\BearFramework\Addons::exists($name)) {
         $addonData = \BearFramework\Addons::get($name);
         $addonOptions = $addonData['options'];
         if (isset($addonOptions['bearCMS']) && is_array($addonOptions['bearCMS']) && isset($addonOptions['bearCMS']['manifest']) && is_string($addonOptions['bearCMS']['manifest'])) {
             $filename = $addonData['dir'] . '/' . $addonOptions['bearCMS']['manifest'];
             if (is_file($filename)) {
                 $data = json_decode(file_get_contents($filename), true);
                 if (isset($data['media']) && is_array($data['media'])) {
                     foreach ($data['media'] as $i => $media) {
                         if (isset($media['filename']) && is_string($media['filename'])) {
                             $data['media'][$i]['filename'] = $addonData['dir'] . '/' . $media['filename'];
                         }
                     }
                 }
                 return $data;
             }
         }
     }
     return null;
 }
示例#2
0
$context->assets->addDir('assets');
$app->container->set('bearCMS', \BearCMS::class);
Options::set($app->addons->get('bearcms/bearframework-addon')['options']);
$app->hooks->add('initialized', function () use($app) {
    // Load the CMS managed addons
    if (Options::hasFeature('ADDONS')) {
        $addons = InternalData\Addons::getList();
        foreach ($addons as $addonData) {
            $addonID = $addonData['id'];
            $addonDir = Options::$addonsDir . DIRECTORY_SEPARATOR . $addonID . DIRECTORY_SEPARATOR;
            if (is_file($addonDir . 'autoload.php')) {
                include $addonDir . 'autoload.php';
            } else {
                throw new Exception('Cannot find autoload.php file for ' . $addonID);
            }
            if (\BearFramework\Addons::exists($addonID)) {
                $_addonData = \BearFramework\Addons::get($addonID);
                $_addonOptions = $_addonData['options'];
                if (isset($_addonOptions['bearCMS']) && is_array($_addonOptions['bearCMS']) && isset($_addonOptions['bearCMS']['assetsDirs']) && is_array($_addonOptions['bearCMS']['assetsDirs'])) {
                    foreach ($_addonOptions['bearCMS']['assetsDirs'] as $dir) {
                        if (is_string($dir)) {
                            $app->assets->addDir($addonDir . $dir);
                        }
                    }
                }
                if ($addonData['enabled']) {
                    $app->addons->add($addonID, ['addedByBearCMS' => true]);
                }
            } else {
                throw new Exception('Addon ' . $addonID . ' not available');
            }
 /**
  * 
  * @param string $directory
  * @param string $id
  * @throws \Exception
  * @throws \InvalidArgumentException
  */
 public function update($directory, $id)
 {
     if (!is_string($directory)) {
         throw new \InvalidArgumentException('');
     }
     if (!is_string($id)) {
         throw new \InvalidArgumentException('');
     }
     if (\BearFramework\Addons::exists($id)) {
         $options = \BearFramework\Addons::getOptions($id);
         if (isset($options['releasesUrl'])) {
             $this->install($directory, $options['releasesUrl']);
         }
     } else {
         throw new \Exception('Addon does not exists');
     }
 }
 static function addAddon($data)
 {
     $app = App::$instance;
     if (isset($data['type']) && isset($data['value'])) {
         $filenameOrUrl = null;
         if ($data['type'] === 'url') {
             $filenameOrUrl = $data['value'];
         } elseif ($data['type'] === 'file') {
             $filename = $app->data->getFilename('.temp/bearcms/files/' . $data['value']);
             if (is_file($filename)) {
                 $filenameOrUrl = $filename;
             }
         }
         try {
             $id = $app->maintenance->addons->getID($filenameOrUrl);
         } catch (\Exception $e) {
             return ['error' => 'invalidValue'];
         }
         if (\BearFramework\Addons::exists($id)) {
             $result = $app->data->get(['key' => 'bearcms/addons/addon/' . md5($id) . '.json', 'result' => ['key']]);
             if (!isset($result['key'])) {
                 // Not managed by Bear CMS
                 return ['error' => 'notManagedByBearCMS'];
             }
         }
         try {
             $context = $app->getContext(__FILE__);
             $id = $app->maintenance->addons->install($context->options['addonsDir'], $filenameOrUrl);
             return $id;
         } catch (\Exception $e) {
             return ['error' => 'invalidValue'];
         }
     }
     return null;
 }