예제 #1
0
 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());
             }
         }
     }
 }
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
 /**
  * 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;
 }
예제 #4
0
 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;
 }
예제 #6
0
 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);
 }