protected function _checkForModifications($initialize = false) { return true; // Just disable it for now $currentSignature = $this->_session->currentInstallerSignature; $installedPackages = $this->_packageManager->listInstalledPackages(); $currentInstallerPackage = $installedPackages->offsetGet('core-install'); if (!$currentInstallerPackage || strlen($currentSignature) == 40) { $signature = sha1(file_get_contents(__FILE__)); } else { $signature = $currentInstallerPackage->getVersion(); } // Initialize if (true === $initialize) { $this->_session->currentInstallerSignature = $signature; return true; } else { if ($signature != $this->_session->currentInstallerSignature) { $extractedPackages = $this->_packageManager->listExtractedPackages(); $this->view->extractedPackageKeys = $extractedPackages->getArrayKeys(); $this->view->extractedPackageKeys = array_diff($this->view->extractedPackageKeys, array($extractedPackages->getKeyByGuid('core-install'), $extractedPackages->getKeyByGuid('library-engine'))); $this->_session->unsetAll(); $this->_helper->viewRenderer->renderScript('_installerUpdated.tpl'); return false; } } // Was not updated return true; }
public function sanityAction() { // Get db if (Zend_Registry::isRegistered('Zend_Db') && ($db = Zend_Registry::get('Zend_Db')) instanceof Zend_Db_Adapter_Abstract) { Engine_Sanity::setDefaultDbAdapter($db); } // Get packages $packages = $this->_packageManager->listInstalledPackages(); // Get dependencies $this->view->dependencies = $dependencies = $this->_packageManager->depend(); // Get tests $this->view->tests = $tests = new Engine_Sanity(); $packageIndex = array(); foreach ($packages as $package) { $packageTests = $package->getTests(); // No tests if (empty($packageTests)) { continue; } $packageIndex[$package->getKey()] = $package; // Make battery $battery = new Engine_Sanity(array('name' => $package->getKey())); foreach ($packageTests as $test) { $battery->addTest($test->toArray()); } $tests->addTest($battery); } $this->view->packageIndex = $packageIndex; $tests->run(); }
public function dbCreateAction() { // Leave if not ready if (empty($this->_session->mysql)) { return $this->_helper->redirector->gotoRoute(array('action' => 'db-info')); } $this->view->code = 0; // Connect again try { $config = $this->dbFormToConfig($this->_session->mysql); // Connect! $adapter = Zend_Db::factory($config['adapter'], $config['params']); $adapter->getServerVersion(); } catch (Exception $e) { $this->view->code = 1; $this->view->error = 'Adapter Error: ' . $e->getMessage(); return; } // attempt to disable strict mode try { $adapter->query("SET SQL_MODE = ''"); } catch (Exception $e) { } // Check if database config already exists $configFile = APPLICATION_PATH . '/application/settings/database.php'; if (file_exists($configFile) && !($this->_getParam('force', 0) >= 1)) { $this->view->code = 2; $this->view->error = 'We found an existing database configuration file. Do you want to overwrite it?'; return; } // Put database.php into place if (!file_exists($configFile) || $this->_getParam('force', 0) >= 1) { $contents = ''; $contents .= '<?php defined(\'_ENGINE\') or die(\'Access Denied\'); '; $contents .= 'return ' . var_export($config, true); $contents .= '; ?>'; if (!@file_put_contents($configFile, $contents) && !($this->_getParam('force', 0) >= 2)) { $this->view->code = 3; $this->view->error = 'Your existing database configuration file is not writeable. Please login to your server via FTP and set full permissions (CHMOD 0777) on /application/settings/database.php, then refresh this page.'; return; } } // Create database shtuff $files = array(APPLICATION_PATH . '/application/modules/Core/settings/my.sql', APPLICATION_PATH . '/application/modules/Activity/settings/my.sql', APPLICATION_PATH . '/application/modules/Authorization/settings/my.sql', APPLICATION_PATH . '/application/modules/User/settings/my.sql', APPLICATION_PATH . '/application/modules/Messages/settings/my.sql', APPLICATION_PATH . '/application/modules/Network/settings/my.sql', APPLICATION_PATH . '/application/modules/Invite/settings/my.sql', APPLICATION_PATH . '/application/modules/Fields/settings/my.sql', APPLICATION_PATH . '/application/modules/Storage/settings/my.sql', APPLICATION_PATH . '/application/modules/Announcement/settings/my.sql', APPLICATION_PATH . '/application/modules/Payment/settings/my.sql'); try { foreach ($files as $file) { $sql = file_get_contents($file); if (!$sql) { throw new Engine_Exception('Unable to read sql file'); } $queries = Engine_Package_Utilities::sqlSplit($sql); foreach ($queries as $query) { $adapter->query($query); } } } catch (Exception $e) { $this->view->error = $e->getMessage(); return; } // Update some other stuff $settingsTable = new Zend_Db_Table(array('db' => $adapter, 'name' => 'engine4_core_settings')); // Generate new secret key $row = $settingsTable->find('core.secret')->current(); if (null === $row) { $row = $settingsTable->createRow(); $row->name = 'core.secret'; } if ($row->value == 'staticSalt' || $row->value == 'NULL' || !$row->value) { $row->value = sha1(time() . php_uname() . dirname(__FILE__) . rand(1000000, 9000000)); $row->save(); } // Save key $row = $settingsTable->find('core.license.key')->current(); if (null === $row) { $row = $settingsTable->createRow(); $row->name = 'core.license.key'; } $row->value = $this->_session->license['key']; $row->save(); // Save stats $row = $settingsTable->find('core.license.statistics')->current(); if (null === $row) { $row = $settingsTable->createRow(); $row->name = 'core.license.statistics'; } $row->value = $this->_session->license['statistics']; $row->save(); // Save email if (!empty($this->_session->license->email)) { $row = $settingsTable->find('core.license.email')->current(); if (null === $row) { $row = $settingsTable->createRow(); $row->name = 'core.license.email'; } if (isset($this->_session->license['email'])) { $row->value = $this->_session->license['email']; } $row->save(); } // Save creation date $row = $settingsTable->find('core.site.creation')->current(); if (null === $row) { $row = $settingsTable->createRow(); $row->name = 'core.site.creation'; } $row->value = date('Y-m-d H:i:s'); $row->save(); // Execute the install hooks $packageManager = new Engine_Package_Manager(array("basePath" => APPLICATION_PATH, "db" => $adapter)); foreach ($packageManager->listInstalledPackages() as $package) { try { $operation = new Engine_Package_Manager_Operation_Install($packageManager, $package); $packageManager->execute($operation, "preinstall"); $packageManager->execute($operation, "install"); $packageManager->execute($operation, "postinstall"); } catch (Exception $e) { $this->view->error = $e->getMessage(); return; } } // Check if branding should be placed $session = $this->_session; $db = $adapter; if (!empty($session->license['key'])) { $license = $session->license['key']; } else { $license = null; // $license = $db->select() // ->from('engine4_core_settings', 'value') // ->where('`name` = ?', 'core.license.key') // ->query() // ->fetchColumn(); } //if( $license ) { // $handle = @fopen("http://www.socialengine.com/remote/branding?license={$license}", "r"); // $doBranding = @stream_get_contents($handle); // @fclose($handle); //} else { $doBranding = false; //} if ($doBranding == 1) { $select = new Zend_Db_Select($db); // profile page $select->from('engine4_core_pages')->where('name = ?', 'footer')->limit(1); $page_id = $select->query()->fetchObject()->page_id; // widget.branding // Check if it's already been placed $select = new Zend_Db_Select($db); $select->from('engine4_core_content')->where('page_id = ?', $page_id)->where('type = ?', 'widget')->where('name = ?', 'branding'); $info = $select->query()->fetch(); if (empty($info)) { // container_id (will always be there) $select = new Zend_Db_Select($db); $select->from('engine4_core_content')->where('page_id = ?', $page_id)->where('type = ?', 'container')->limit(1); $container_id = $select->query()->fetchObject()->content_id; // tab on profile $db->insert('engine4_core_content', array('page_id' => $page_id, 'type' => 'widget', 'name' => 'branding', 'parent_content_id' => $container_id, 'order' => 3, 'params' => '')); } } // Ok we're done $this->view->status = 1; }