Ejemplo n.º 1
0
 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);
     }
 }
Ejemplo n.º 2
0
 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;
 }
Ejemplo n.º 3
0
            }
        }
    }
}
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);
             }
         }
     }
 }
Ejemplo n.º 5
0
<?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();
            }
        }
    }
}
Ejemplo n.º 6
0
 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);
     }
 }
Ejemplo n.º 7
0
 /** 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);
     }
 }
Ejemplo n.º 8
0
	protected function importPackages(SimpleXMLElement $sx) {
		if (isset($sx->packages)) {
			foreach($sx->packages->package as $p) {
				$pkg = Loader::package($p['handle']);
				$pkg->install();
			}
		}
	}
Ejemplo n.º 9
0
	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);
		}
	}
Ejemplo n.º 10
0
	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);
		}
	}