public function refresh_entities() { if ($this->token->validate("refresh_entities")) { if ($this->isPost()) { $em = ORM::entityManager(); $config = $em->getConfiguration(); if (is_object($cache = $config->getMetadataCacheImpl())) { $cache->flushAll(); } try { $packages = Package::getInstalledList(); foreach ($packages as $package) { $package->installEntitiesDatabase(); } $dbm = Core::make('database/structure', array($em)); $dbm->destroyProxyClasses('ApplicationSrc'); if ($dbm->hasEntities()) { $dbm->generateProxyClasses(); $dbm->installDatabase(); } $this->redirect('/dashboard/system/environment/entities', 'entities_refreshed'); } catch (\Doctrine\Common\Persistence\Mapping\MappingException $e) { $drv = $em->getConfiguration()->getMetadataDriverImpl(); $this->error->add(t("The application specific entities directory is missing. Please create it first at: %s.", array_shift($drv->getPaths()))); } catch (\Exception $e) { $this->error->add($e->getMessage()); } } } }
/** * return \GetText\Translations $translations; */ public function extractTranslatableSiteStrings() { $translations = new Translations(); $translations->insert('SiteName', Config::get('concrete.site')); $phpParser = new \C5TL\Parser\Php(); $blockTemplatesParser = new \C5TL\Parser\BlockTemplates(); $themesPresetsParser = new \C5TL\Parser\ThemePresets(); $processApplication = array(DIRNAME_BLOCKS => array($phpParser, $blockTemplatesParser), DIRNAME_ELEMENTS => array($phpParser), DIRNAME_CONTROLLERS => array($phpParser), DIRNAME_MAIL_TEMPLATES => array($phpParser), DIRNAME_PAGE_TYPES => array($phpParser), DIRNAME_PAGES => array($phpParser), DIRNAME_THEMES => array($phpParser, $themesPresetsParser, $blockTemplatesParser), DIRNAME_VIEWS => array($phpParser)); foreach ($processApplication as $dirname => $parsers) { if (is_dir(DIR_APPLICATION . '/' . $dirname)) { foreach ($parsers as $parser) { /* @var $parser \C5TL\Parser */ $fullDirname = DIR_APPLICATION . '/' . $dirname; if (is_dir($fullDirname)) { $parser->parseDirectory($fullDirname, DIRNAME_APPLICATION . '/' . $dirname, $translations); } } } } if (is_dir(DIR_PACKAGES)) { $packages = Package::getInstalledList(); foreach ($packages as $package) { $fullDirname = DIR_PACKAGES . '/' . $package->getPackageHandle(); $phpParser->parseDirectory($fullDirname, DIRNAME_PACKAGES . '/' . $dirname, $translations); } } // Now, we grab dynamic content that's part of our site that we translate dynamically $dynamicTranslations = $this->getDynamicTranslations(); $translations->mergeWith($dynamicTranslations); return $translations; }
/** * return \GetText\Translations $translations;. */ public function extractTranslatableSiteStrings() { $app = Application::getFacadeApplication(); $translations = new Translations(); $translations->insert('SiteName', $app->make('site')->getSite()->getSiteName()); $fh = $app->make('helper/file'); C5TLOptions::setTemporaryDirectory($fh->getTemporaryDirectory()); $phpParser = new C5TLParserPhp(); $blockTemplatesParser = new C5TLParserBlockTemplates(); $themesPresetsParser = new C5TLParserThemePresets(); $configFilesParser = new C5TLParserConfigFiles(); $configFilesParser->parseDirectory(DIR_BASE, ''); $processApplication = [DIRNAME_BLOCKS => [$phpParser, $blockTemplatesParser], DIRNAME_ELEMENTS => [$phpParser], DIRNAME_CONTROLLERS => [$phpParser], DIRNAME_MAIL_TEMPLATES => [$phpParser], DIRNAME_PAGE_TYPES => [$phpParser], DIRNAME_PAGES => [$phpParser], DIRNAME_THEMES => [$phpParser, $themesPresetsParser, $blockTemplatesParser], DIRNAME_VIEWS => [$phpParser]]; foreach ($processApplication as $dirname => $parsers) { if (is_dir(DIR_APPLICATION . '/' . $dirname)) { foreach ($parsers as $parser) { /* @var $parser \C5TL\Parser */ $fullDirname = DIR_APPLICATION . '/' . $dirname; if (is_dir($fullDirname)) { $parser->parseDirectory($fullDirname, DIRNAME_APPLICATION . '/' . $dirname, $translations); } } } } if (is_dir(DIR_PACKAGES)) { $packages = Package::getInstalledList(); foreach ($packages as $package) { $fullDirname = DIR_PACKAGES . '/' . $package->getPackageHandle(); $phpParser->parseDirectory($fullDirname, DIRNAME_PACKAGES . '/' . $dirname, $translations); } } // Now, we grab dynamic content that's part of our site that we translate dynamically $dynamicTranslations = $this->getDynamicTranslations(); $translations->mergeWith($dynamicTranslations); return $translations; }
public static function getRemotelyUpgradeablePackages() { $packages = Package::getInstalledList(); $upgradeables = array(); $db = Loader::db(); foreach ($packages as $p) { if (version_compare($p->getPackageVersion(), $p->getPackageVersionUpdateAvailable(), '<')) { $upgradeables[] = $p; } } return $upgradeables; }
/** * Given the current update object, sends information to concrete5.org to determine updatability * @return \Concrete\Core\Updater\ApplicationUpdateDiagnostic */ public function getDiagnosticObject() { $request = new Request(); $request->setUri(Config::get('concrete.updates.services.inspect_update')); $request->setMethod('POST'); $request->getPost()->set('current_version', Config::get('concrete.version_installed')); $request->getPost()->set('requested_version', $this->getVersion()); $request->getPost()->set('site_url', (string) \Core::getApplicationURL()); $mi = Marketplace::getInstance(); if ($mi->isConnected() && !$mi->hasConnectionError()) { $config = \Core::make('config/database'); $request->getPost()->set('marketplace_token', $config->get('concrete.marketplace.token')); $list = Package::getInstalledList(); $packages = array(); foreach ($list as $pkg) { $packages[] = array('version' => $pkg->getPackageVersion(), 'handle' => $pkg->getPackageHandle()); } $request->getPost()->set('packages', $packages); } $overrides = id(Environment::get())->getOverrideList(); $request->getPost()->set('overrides', $overrides); $client = new Client(); $client->setMethod('POST'); $response = $client->send($request); $body = $response->getBody(); $diagnostic = DiagnosticFactory::getFromJSON($body); return $diagnostic; }
public function execute() { $this->loadQueryStringPagingVariable(); $params = $this->params; $params['version'] = APP_VERSION; $params['itemsPerPage'] = $this->itemsPerPage; $mi = Marketplace::getInstance(); $params['csToken'] = $mi->getSiteToken(); if ($this->includeInstalledItems) { $params['includeInstalledItems'] = 1; } else { $params['includeInstalledItems'] = 0; $list = Package::getInstalledList(); foreach ($list as $pkg) { $params['installedPackages'][] = $pkg->getPackageHandle(); } } if (isset($_REQUEST[$this->queryStringPagingVariable])) { $params[$this->queryStringPagingVariable] = $_REQUEST[$this->queryStringPagingVariable]; } $uh = Core::make('helper/url'); $url = Config::get('concrete.urls.concrete5') . Config::get('concrete.urls.paths.marketplace.remote_item_list'); $url = $uh->buildQuery($url . $this->type . '/-/get_remote_list', $params); if (Config::get('concrete.marketplace.log_requests')) { Log::info($url); } $r = Core::make('helper/file')->getContents($url); $r2 = @Core::make('helper/json')->decode($r); $total = 0; $items = array(); if (is_object($r2)) { $items = $r2->items; $total = $r2->total; } $this->total = $total; $this->setItems($items); }