public function install_package($package) { $tp = new TaskPermission(); if ($tp->canInstallPackages()) { $p = Loader::package($package); if (is_object($p)) { if (!$p->showInstallOptionsScreen() || Loader::helper('validation/token')->validate('install_options_selected')) { $tests = Package::testForInstall($package); if (is_array($tests)) { $tests = Package::mapError($tests); $this->set('error', $tests); } else { $currentLocale = Localization::activeLocale(); if ($currentLocale != 'en_US') { // Prevent the database records being stored in wrong language Localization::changeLocale('en_US'); } try { $u = new User(); $pkg = $p->install($this->post()); if ($u->isSuperUser() && $p->allowsFullContentSwap() && $this->post('pkgDoFullContentSwap')) { $p->swapContent($this->post()); } if ($currentLocale != 'en_US') { Localization::changeLocale($currentLocale); } $pkg = Package::getByHandle($p->getPackageHandle()); $this->redirect('/dashboard/extend/install', 'package_installed', $pkg->getPackageID()); } catch (Exception $e) { if ($currentLocale != 'en_US') { Localization::changeLocale($currentLocale); } if ($p->showInstallOptionsScreen()) { $this->set('showInstallOptionsScreen', true); $this->set('pkg', $p); } $this->set('error', $e); } } } else { $this->set('showInstallOptionsScreen', true); $this->set('pkg', $p); } } else { $msg = t('Install failed - invalid package. Check log for details'); $this->error->add($msg); $this->set('error', $this->error); } } else { $this->error->add(t('You do not have permission to install add-ons.')); $this->set('error', $this->error); } }
public static function getAvailablePackages($filterInstalled = true) { $dh = Loader::helper('file'); $packages = $dh->getDirectoryContents(DIR_PACKAGES); if ($filterInstalled) { $handles = self::getInstalledHandles(); // strip out packages we've already installed $packagesTemp = array(); foreach ($packages as $p) { if (!in_array($p, $handles)) { $packagesTemp[] = $p; } } $packages = $packagesTemp; } if (count($packages) > 0) { $packagesTemp = array(); // get package objects from the file system foreach ($packages as $p) { $pkg = Loader::package($p); if (!empty($pkg)) { $packagesTemp[] = $pkg; } } $packages = $packagesTemp; } return $packages; }
} } } } if (!is_object($mri)) { $error->add(t('Invalid package or no package specified.')); } if (!$error->has() && $install) { $tests = Package::testForInstall($mri->getHandle()); if (is_array($tests)) { $results = Package::mapError($tests); foreach ($results as $te) { $error->add($te); } } else { $p = Loader::package($mri->getHandle()); try { $p->install(); } catch (Exception $e) { $error->add($e->getMessage()); } } } if (!$error->has()) { ?> <p> <?php if ($install) { $_pkg = Package::getByHandle($p->getPackageHandle()); if ($_pkg->hasInstallPostScreen()) { Loader::element('dashboard/install_post', false, $_pkg->getPackageHandle());
public function download() { $file = Marketplace::downloadRemoteFile($this->getRemoteFileURL()); if (empty($file) || $file == Package::E_PACKAGE_DOWNLOAD) { return array(Package::E_PACKAGE_DOWNLOAD); } else { if ($file == Package::E_PACKAGE_SAVE) { return array($file); } else { if ($file == Package::E_PACKAGE_INVALID_APP_VERSION) { return array($file); } } } try { Loader::model('package_archive'); $am = new PackageArchive($this->getHandle()); $am->install($file, true); } catch (Exception $e) { return array($e->getMessage()); } if ($install) { $tests = Package::testForInstall($this->getHandle()); if (is_array($tests)) { return $tests; } else { $p = Loader::package($this->getHandle()); try { $p->install(); } catch (Exception $e) { return array(Package::E_PACKAGE_INSTALL); } } } }
<?php defined('C5_EXECUTE') or die("Access Denied."); $pla = PackageList::get(); $pl = $pla->getPackages(); foreach ($pl as $p) { if ($p->isPackageInstalled()) { $pkg = Loader::package($p->getPackageHandle()); if (is_object($pkg)) { if (method_exists($pkg, 'on_start')) { $pkg->on_start(); } } } }
public function configure() { try { $val = Loader::helper('validation/form'); $val->setData($this->post()); $val->addRequired("SITE", t("Please specify your site's name")); $val->addRequiredEmail("uEmail", t('Please specify a valid email address')); $val->addRequired("DB_DATABASE", t('You must specify a valid database name')); $val->addRequired("DB_SERVER", t('You must specify a valid database server')); $e = Loader::helper('/validation/error'); if (is_object($this->fileWriteErrors)) { $e = $this->fileWriteErrors; } if (!function_exists('mysql_connect')) { $e->add($this->getDBErrorMsg()); } else { // attempt to connect to the database $db = Loader::db($_POST['DB_SERVER'], $_POST['DB_USERNAME'], $_POST['DB_PASSWORD'], $_POST['DB_DATABASE'], true); if ($_POST['DB_SERVER'] && $_POST['DB_DATABASE']) { if (!$db) { $e->add(t('Unable to connect to database.')); } else { $num = $db->GetCol("show tables"); if (count($num) > 0) { $e->add(t('There are already %s tables in this database. Concrete must be installed in an empty database.', count($num))); } } } } if ($val->test() && !$e->has()) { if (!is_dir($this->installData['DIR_FILES_UPLOADED_THUMBNAILS'])) { mkdir($this->installData['DIR_FILES_UPLOADED_THUMBNAILS']); } if (!is_dir($this->installData['DIR_FILES_INCOMING'])) { mkdir($this->installData['DIR_FILES_INCOMING']); } if (!is_dir($this->installData['DIR_FILES_TRASH'])) { mkdir($this->installData['DIR_FILES_TRASH']); } if (!is_dir($this->installData['DIR_FILES_CACHE'])) { mkdir($this->installData['DIR_FILES_CACHE']); } if (!is_dir($this->installData['DIR_FILES_CACHE_DB'])) { mkdir($this->installData['DIR_FILES_CACHE_DB']); } if (!is_dir($this->installData['DIR_FILES_AVATARS'])) { mkdir($this->installData['DIR_FILES_AVATARS']); } if (isset($_POST['uPasswordForce'])) { $this->installData['uPassword'] = $_POST['uPasswordForce']; } if (isset($_POST['packages'])) { $this->installData['packages'] = $_POST['packages']; } $this->installDB(); $vh = Loader::helper('validation/identifier'); // copy the files $fh = Loader::helper('file'); if ($_POST['INSTALL_SAMPLE_CONTENT']) { $fh->copyAll($this->installData['DIR_BASE_CORE'] . '/config/install/files', DIR_FILES_UPLOADED); } // insert admin user into the user table $salt = defined('MANUAL_PASSWORD_SALT') ? MANUAL_PASSWORD_SALT : $vh->getString(64); if (!isset($this->installData['uPassword'])) { $uPassword = rand(100000, 999999); } else { $uPassword = $this->installData['uPassword']; } $uEmail = $_POST['uEmail']; $uPasswordEncrypted = User::encryptPassword($uPassword, $salt); UserInfo::addSuperUser($uPasswordEncrypted, $uEmail); if (defined('PERMISSIONS_MODEL') && PERMISSIONS_MODEL != 'simple') { $setPermissionsModel = PERMISSIONS_MODEL; } if (file_exists($this->installData['DIR_CONFIG_SITE'])) { $this->fp = @fopen($this->installData['DIR_CONFIG_SITE'] . '/site.php', 'w+'); if ($this->fp) { Cache::flush(); if (is_array($this->installData['packages'])) { foreach ($this->installData['packages'] as $pkgHandle) { $p = Loader::package($pkgHandle); $p->install(); } } // write the config file $configuration = "<?php\n"; $configuration .= "define('DB_SERVER', '" . addslashes($_POST['DB_SERVER']) . "');\n"; $configuration .= "define('DB_USERNAME', '" . addslashes($_POST['DB_USERNAME']) . "');\n"; $configuration .= "define('DB_PASSWORD', '" . addslashes($_POST['DB_PASSWORD']) . "');\n"; $configuration .= "define('DB_DATABASE', '" . addslashes($_POST['DB_DATABASE']) . "');\n"; $configuration .= "define('BASE_URL', '" . $this->installData['BASE_URL'] . "');\n"; $configuration .= "define('DIR_REL', '" . $this->installData['DIR_REL'] . "');\n"; if (isset($setPermissionsModel)) { $configuration .= "define('PERMISSIONS_MODEL', '" . addslashes($setPermissionsModel) . "');\n"; } $configuration .= "define('PASSWORD_SALT', '{$salt}');\n"; if (is_array($_POST['SITE_CONFIG'])) { foreach ($_POST['SITE_CONFIG'] as $key => $value) { $configuration .= "define('" . $key . "', '" . $value . "');\n"; } } $res = fwrite($this->fp, $configuration); fclose($this->fp); chmod($this->installData['DIR_CONFIG_SITE'] . '/site.php', 0777); // save some options into the database Config::save('SITE', $_POST['SITE']); // add the current app version as our site's app version Config::save('SITE_APP_VERSION', $this->installData['APP_VERSION']); Config::save('SITE_DEBUG_LEVEL', $this->installData['DEBUG_DISPLAY_ERRORS']); Config::save('ENABLE_LOG_EMAILS', 1); Config::save('ENABLE_LOG_ERRORS', 1); Config::save('FULL_PAGE_CACHE_GLOBAL', 0); // login define('PASSWORD_SALT', $salt); $u = new User($this->installData['USER_SUPER'], $uPassword); $this->set('message', t('Congratulations. concrete5 has been installed. You have been logged in as <b>%s</b> with the password <b>%s</b>.<br/><br/>If you wish to change this password, you may do so from the users area of the dashboard.', $this->installData['USER_SUPER'], $uPassword)); } else { throw new Exception(t('Unable to open config/site.php for writing.')); } } else { throw new Exception(t('Unable to locate config directory.')); } } else { if ($e->has()) { $this->set('error', $e); } else { $this->set('error', $val->getError()); } } } catch (Exception $e) { // remove site.php so that we can try again ? if (is_resource($this->fp)) { fclose($this->fp); } if (file_exists($this->installData['DIR_CONFIG_SITE'] . '/site.php')) { unlink($this->installData['DIR_CONFIG_SITE'] . '/site.php'); } $this->set('error', $e); } }
/** Changes the currently active locale * @param string $locale The locale to activate (for example: 'en_US') * @param bool $coreOnly = false Set to true to load only the core translation files, set to false (default) to load also packages and site locale translations */ public function setLocale($locale, $coreOnly = false) { $localeNeededLoading = false; if ($locale == 'en_US' && !ENABLE_TRANSLATE_LOCALE_EN_US) { if (isset($this->translate)) { unset($this->translate); } return; } if (is_dir(DIR_LANGUAGES . '/' . $locale)) { $languageDir = DIR_LANGUAGES . '/' . $locale; } elseif (is_dir(DIR_LANGUAGES_CORE . '/' . $locale)) { $languageDir = DIR_LANGUAGES_CORE . '/' . $locale; } else { return; } $options = array('adapter' => 'gettext', 'content' => $languageDir, 'locale' => $locale, 'disableNotices' => true, 'ignore' => array('.', 'messages.po')); if (defined('TRANSLATE_OPTIONS')) { $_options = unserialize(TRANSLATE_OPTIONS); if (is_array($_options)) { $options = array_merge($options, $_options); } } if (!isset($this->translate)) { $this->translate = new Zend_Translate($options); $localeNeededLoading = true; } else { if (!in_array($locale, $this->translate->getList())) { $this->translate->addTranslation($options); $localeNeededLoading = true; } $this->translate->setLocale($locale); } if (!$coreOnly) { $this->addSiteInterfaceLanguage($locale); global $config_check_failed; if (!(isset($config_check_failed) && $config_check_failed)) { foreach (PackageList::get(1)->getPackages() as $p) { $pkg = Loader::package($p->getPackageHandle()); if (is_object($pkg)) { $pkg->setupPackageLocalization($locale, null, $this->translate); } } } } if ($localeNeededLoading) { Events::fire('on_locale_load', $locale); } }
protected function importPackages(SimpleXMLElement $sx) { if (isset($sx->packages)) { foreach($sx->packages->package as $p) { $pkg = Loader::package($p['handle']); $pkg->install(); } } }
public function install_package($package) { $tp = new TaskPermission(); if ($tp->canInstallPackages()) { $tests = Package::testForInstall($package); if (is_array($tests)) { $tests = Package::mapError($tests); $this->set('error', $tests); } else { $p = Loader::package($package); try { $p->install(); $this->set('message', t('The package has been installed.')); } catch(Exception $e) { $this->set('error', $e); } } } else { $this->error->add(t('You do not have permission to install add-ons.')); $this->set('error', $this->error); } }
public function install_package($package) { $tp = new TaskPermission(); if ($tp->canInstallPackages()) { $p = Loader::package($package); if (is_object($p)) { if ( (!$p->showInstallOptionsScreen()) || Loader::helper('validation/token')->validate('install_options_selected') ) { $tests = Package::testForInstall($package); if (is_array($tests)) { $tests = Package::mapError($tests); $this->set('error', $tests); } else { try { $u = new User(); $p->install($this->post()); if ($u->isSuperUser() && $p->allowsFullContentSwap() && $this->post('pkgDoFullContentSwap')) { $p->swapContent($this->post()); } $this->set('message', t('The package has been installed.')); } catch(Exception $e) { if ($p->showInstallOptionsScreen()) { $this->set('showInstallOptionsScreen', true); $this->set('pkg', $p); } $this->set('error', $e); } } } else { $this->set('showInstallOptionsScreen', true); $this->set('pkg', $p); } } } else { $this->error->add(t('You do not have permission to install add-ons.')); $this->set('error', $this->error); } }