/** * Execute the action. * @param array command line parameters specific for this command */ public function run($args) { set_time_limit('900'); if (!isset($args[0])) { $this->usageError('A username must be specified.'); } try { Yii::app()->user->userModel = User::getByUsername($args[0]); } catch (NotFoundException $e) { $this->usageError('The specified username does not exist.'); } $group = Group::getByName(Group::SUPER_ADMINISTRATORS_GROUP_NAME); if (!$group->users->contains(Yii::app()->user->userModel)) { $this->usageError('The specified user is not a super administrator.'); } $startTime = microtime(true); $template = "{message}\n"; $messageStreamer = new MessageStreamer($template); $messageStreamer->setExtraRenderBytes(0); $messageStreamer->add(Zurmo::t('Commands', 'Starting schema update process.')); $messageLogger = new MessageLogger($messageStreamer); InstallUtil::runAutoBuildFromUpdateSchemaCommand($messageLogger); $messageStreamer->add(Zurmo::t('Commands', 'Autobuild complete, rebuilding read permissions.')); if (SHOW_QUERY_DATA) { $messageStreamer->add(PageView::getTotalAndDuplicateQueryCountContent()); } ReadPermissionsOptimizationUtil::rebuild(); $messageStreamer->add(Zurmo::t('Commands', 'Rebuild read permissions complete.')); $endTime = microtime(true); $messageStreamer->add(Zurmo::t('Commands', 'Schema update complete.')); $messageStreamer->add(Zurmo::t('Commands', 'Total run time: {formattedTime} seconds.', array('{formattedTime}' => number_format($endTime - $startTime, 3)))); if (SHOW_QUERY_DATA) { $messageStreamer->add(PageView::getTotalAndDuplicateQueryCountContent()); } }
/** * Method to run installation from command line. Use @InstallCommand. * @param array $args */ public static function runFromInstallCommand($args, $validateForm = false) { assert('is_array($args)'); $form = new InstallSettingsForm(); $template = "{message}\n"; $messageStreamer = new MessageStreamer($template); $messageStreamer->setExtraRenderBytes(0); $messageStreamer->add(Zurmo::t('InstallModule', 'Connecting to Database.')); $form->databaseHostname = $args[0]; $form->databaseName = $args[1]; $form->databaseUsername = $args[2]; $form->databasePassword = $args[3]; $form->databasePort = $args[4]; $form->superUserPassword = $args[5]; $form->removeExistingData = 1; if (!empty($args[6])) { $form->hostInfo = $args[6]; Yii::app()->getRequest()->setHostInfo($form->hostInfo); } if (!empty($args[7])) { $form->scriptUrl = $args[7]; } $formHasErrors = false; if ($validateForm) { $form->validate(); if ($form->hasErrors()) { $errors = $form->getErrors(); foreach ($errors as $fieldErrors) { foreach ($fieldErrors as $fieldError) { $messageStreamer->add($fieldError); } } $formHasErrors = true; } } if (!$formHasErrors) { InstallUtil::runInstallation($form, $messageStreamer); if (isset($args[8])) { $messageStreamer->add(Zurmo::t('InstallModule', 'Starting to load demo data.')); $messageLogger = new MessageLogger($messageStreamer); $startTime = microtime(true); if (isset($args[9])) { DemoDataUtil::load($messageLogger, intval($args[9])); } else { DemoDataUtil::load($messageLogger, 6); } $endTime = microtime(true); $messageStreamer->add(Zurmo::t('InstallModule', 'Total demodata build time: {formattedTime} seconds.', array('{formattedTime}' => number_format($endTime - $startTime, 3)))); if (SHOW_QUERY_DATA) { $messageStreamer->add(PageView::getTotalAndDuplicateQueryCountContent()); $messageStreamer->add(PageView::makeNonHtmlDuplicateCountAndQueryContent()); } $messageStreamer->add(Zurmo::t('InstallModule', 'Finished loading demo data.')); } if (empty($args[6]) || empty($args[7])) { // Send notification to super admin that need to setup hostInfo and scriptUrl params in perInstance.php $message = new NotificationMessage(); $message->textContent = Zurmo::t('InstallModule', 'The system has detected that the hostInfo and/or scriptUrl are ' . 'not set up. Please open the perInstance.php config file and ' . 'set up these parameters.'); $rules = new HostInfoAndScriptUrlNotSetupNotificationRules(); NotificationsUtil::submit($message, $rules); } $messageStreamer->add(Zurmo::t('InstallModule', 'Locking Installation.')); InstallUtil::writeInstallComplete(INSTANCE_ROOT); $messageStreamer->add(Zurmo::t('InstallModule', 'Installation Complete.')); } }